diff options
author | megamage <none@none> | 2008-12-24 10:57:04 -0600 |
---|---|---|
committer | megamage <none@none> | 2008-12-24 10:57:04 -0600 |
commit | 253f4bf374ccaa83d20a7ff58e31b37300f4a26e (patch) | |
tree | 32ad2585c67269500c961af90f5d561570331b50 | |
parent | c81299e6536e249ca05eebf100f3f350522da7da (diff) |
*Fix the bug that many talents lose one point.
--HG--
branch : trunk
-rw-r--r-- | src/game/SharedDefines.h | 3 | ||||
-rw-r--r-- | src/game/Spell.cpp | 15 | ||||
-rw-r--r-- | src/game/SpellAuras.cpp | 2 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 1 | ||||
-rw-r--r-- | src/game/Unit.cpp | 19 |
5 files changed, 28 insertions, 12 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index bf23a724520..51fba0b48ed 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -868,8 +868,7 @@ enum Targets TARGET_DEST_TARGET_ENEMY = 53, TARGET_UNIT_CONE_ENEMY_UNKNOWN = 54, TARGET_DEST_CASTER_FRONT_LEAP = 55, // for a leap spell - TARGET_RANDOM_RAID_MEMBER = 56, - //TARGET_UNIT_AREA_RAID + TARGET_UNIT_RAID = 56, TARGET_SINGLE_FRIEND_2 = 57, TARGET_UNIT_TARGET_RAID = 57, TARGET_UNIT_CONE_ALLY = 59, diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index ffac28c7c58..b3930a85520 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1473,6 +1473,12 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap) case TARGET_UNIT_PARTY_CASTER: m_caster->GetPartyMember(TagUnitMap, radius); break; + case TARGET_UNIT_RAID: + if(Unit *target = m_targets.getUnitTarget()) + TagUnitMap.push_back(target); + else + m_caster->GetRaidMember(TagUnitMap, radius); + break; } }break; @@ -1759,13 +1765,6 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap) TagUnitMap.push_back(m_caster); break; } - - case TARGET_RANDOM_RAID_MEMBER: - { - if (m_caster->GetTypeId() == TYPEID_PLAYER) - if(Player* target = ((Player*)m_caster)->GetNextRandomRaidMember(radius)) - TagUnitMap.push_back(target); - }break; case TARGET_CHAIN_HEAL: { Unit* pUnitTarget = m_targets.getUnitTarget(); @@ -3914,7 +3913,7 @@ uint8 Spell::CanCast(bool strict) SkillValue = 0; // add the damage modifier from the spell casted (cheat lock / skeleton key etc.) (use m_currentBasePoints, CalculateDamage returns wrong value) - SkillValue += m_currentBasePoints[i]+1; + SkillValue += m_currentBasePoints[i]/*+1*/; // get the required lock value int32 ReqValue=0; diff --git a/src/game/SpellAuras.cpp b/src/game/SpellAuras.cpp index 36feb9b9375..1597b4a2b25 100644 --- a/src/game/SpellAuras.cpp +++ b/src/game/SpellAuras.cpp @@ -342,7 +342,7 @@ m_periodicTimer(0), m_PeriodicEventId(0), m_AuraDRGroup(DIMINISHING_NONE) if(!caster) { m_caster_guid = target->GetGUID(); - damage = m_currentBasePoints+1; // stored value-1 + //damage = m_currentBasePoints+1; // stored value-1 m_maxduration = target->CalculateSpellDuration(m_spellProto, m_effIndex, target); } else diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 432682d618e..705a69ea2a4 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -81,6 +81,7 @@ SpellMgr::SpellMgr() case TARGET_UNIT_MASTER: case TARGET_UNIT_PET: case TARGET_UNIT_PARTY_CASTER: + case TARGET_UNIT_RAID: SpellTargetType[i] = TARGET_TYPE_UNIT_CASTER; break; case TARGET_UNIT_MINIPET: diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp index e00b2446010..123dbbcf2eb 100644 --- a/src/game/Unit.cpp +++ b/src/game/Unit.cpp @@ -12943,8 +12943,25 @@ bool Unit::IsInRaidWith(Unit const *unit) const return false; } -void Unit::GetRaidMember(std::list<Unit*> &TagUnitMap, float radius) +void Unit::GetRaidMember(std::list<Unit*> &nearMembers, float radius) { + Player *owner = GetCharmerOrOwnerPlayerOrPlayerItself(); + if(!owner) + return; + + Group *pGroup = owner->GetGroup(); + if(!pGroup) + return; + + for(GroupReference *itr = pGroup->GetFirstMember(); itr != NULL; itr = itr->next()) + { + Player* Target = itr->getSource(); + + // IsHostileTo check duel and controlled by enemy + if( Target && Target != this && Target->isAlive() + && IsWithinDistInMap(Target, radius) && !IsHostileTo(Target) ) + nearMembers.push_back(Target); + } } void Unit::GetPartyMember(std::list<Unit*> &TagUnitMap, float radius) |