diff options
author | Shauren <shauren.trinity@gmail.com> | 2012-07-01 21:05:53 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2012-07-01 21:05:53 +0200 |
commit | 2bee0e6e37e94faea1dba5ba0ec7348ce32842cb (patch) | |
tree | 1b64dc9d5d4e5554c7dbf08f624f652c2c02b30a /src | |
parent | 6eadc63ade75b0ad6e3b22d2a21d22e94938d1b1 (diff) |
Core/SpellScript: Corrected when OnObjectAreaTargetSelect hooks are called (must be before splitting unit/go targets)
Diffstat (limited to 'src')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 11 |
1 files changed, 6 insertions, 5 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 33ecd66e8f6..2c1cff0c74a 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -1205,6 +1205,9 @@ void Spell::SelectImplicitAreaTargets(SpellEffIndex effIndex, SpellImplicitTarge default: break; } + + CallScriptObjectAreaTargetSelectHandlers(targets, effIndex); + std::list<Unit*> unitTargets; std::list<GameObject*> gObjTargets; // for compability with older code - add only unit and go targets @@ -1217,8 +1220,6 @@ void Spell::SelectImplicitAreaTargets(SpellEffIndex effIndex, SpellImplicitTarge gObjTargets.push_back(gObjTarget); } - CallScriptObjectAreaTargetSelectHandlers(targets, effIndex); - if (!unitTargets.empty()) { // Special target selection for smart heals and energizes @@ -1562,15 +1563,15 @@ void Spell::SelectImplicitChainTargets(SpellEffIndex effIndex, SpellImplicitTarg SearchChainTargets(targets, maxTargets - 1, target, targetType.GetObjectType(), targetType.GetCheckType() , m_spellInfo->Effects[effIndex].ImplicitTargetConditions, targetType.GetTarget() == TARGET_UNIT_TARGET_CHAINHEAL_ALLY); + // Chain primary target is added earlier + CallScriptObjectAreaTargetSelectHandlers(targets, effIndex); + // for backward compability std::list<Unit*> unitTargets; for (std::list<WorldObject*>::iterator itr = targets.begin(); itr != targets.end(); ++itr) if (Unit* unitTarget = (*itr)->ToUnit()) unitTargets.push_back(unitTarget); - // Chain primary target is added earlier - CallScriptObjectAreaTargetSelectHandlers(targets, effIndex); - for (std::list<Unit*>::iterator itr = unitTargets.begin(); itr != unitTargets.end(); ++itr) AddUnitTarget(*itr, effMask, false); } |