diff options
author | megamage <none@none> | 2009-04-30 22:04:15 -0500 |
---|---|---|
committer | megamage <none@none> | 2009-04-30 22:04:15 -0500 |
commit | d44d827200e596564f26c2a5c5b418a9fd3cffb2 (patch) | |
tree | d984e44fd2544e9af116f70ac562a918c2baa5b7 /src | |
parent | f72cd39122d6345bb1262883b5b5bd648459fc7c (diff) |
*Explicitly implement spell target 28 and 29.
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/game/GridNotifiersImpl.h | 2 | ||||
-rw-r--r-- | src/game/PetHandler.cpp | 2 | ||||
-rw-r--r-- | src/game/SharedDefines.h | 5 | ||||
-rw-r--r-- | src/game/Spell.cpp | 19 | ||||
-rw-r--r-- | src/game/SpellMgr.cpp | 9 |
5 files changed, 17 insertions, 20 deletions
diff --git a/src/game/GridNotifiersImpl.h b/src/game/GridNotifiersImpl.h index a43a97cd898..78d3d9aba5a 100644 --- a/src/game/GridNotifiersImpl.h +++ b/src/game/GridNotifiersImpl.h @@ -180,7 +180,7 @@ inline void Trinity::DynamicObjectUpdater::VisitHelper(Unit* target) SpellEntry const *spellInfo = sSpellStore.LookupEntry(i_dynobject.GetSpellId()); uint32 eff_index = i_dynobject.GetEffIndex(); - if(spellInfo->EffectImplicitTargetB[eff_index] == TARGET_UNIT_AREA_ALLY_CHANNEL + if(spellInfo->EffectImplicitTargetB[eff_index] == TARGET_DEST_DYNOBJ_ALLY || spellInfo->EffectImplicitTargetB[eff_index] == TARGET_UNIT_AREA_ALLY_GROUND) { if(!i_check->IsFriendlyTo(target)) diff --git a/src/game/PetHandler.cpp b/src/game/PetHandler.cpp index 932eb593ff8..de9079750ff 100644 --- a/src/game/PetHandler.cpp +++ b/src/game/PetHandler.cpp @@ -194,7 +194,7 @@ void WorldSession::HandlePetAction( WorldPacket & recv_data ) for(uint32 i = 0; i < 3;i++) { - if(spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_INSTANT || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_CHANNELED) + if(spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA || spellInfo->EffectImplicitTargetA[i] == TARGET_ALL_ENEMY_IN_AREA_INSTANT || spellInfo->EffectImplicitTargetA[i] == TARGET_DEST_DYNOBJ_ENEMY) return; } diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h index 61cbcaa35ad..3266b5aa62d 100644 --- a/src/game/SharedDefines.h +++ b/src/game/SharedDefines.h @@ -827,9 +827,8 @@ enum Targets TARGET_GAMEOBJECT_ITEM = 26, //TARGET_OBJECT_ITEM_PICKLOCK TARGET_UNIT_MASTER = 27, - TARGET_ALL_ENEMY_IN_AREA_CHANNELED = 28, - TARGET_UNIT_AREA_ENEMY_CHANNEL = 28, - TARGET_UNIT_AREA_ALLY_CHANNEL = 29, // 28,29 only used for effect 27, if interrupt channel, pstAA cancel + TARGET_DEST_DYNOBJ_ENEMY = 28, + TARGET_DEST_DYNOBJ_ALLY = 29, // only for effect 27 TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER = 30, // in TargetB used only with TARGET_ALL_AROUND_CASTER and in self casting range in TargetA TARGET_UNIT_AREA_ALLY = 30, TARGET_ALL_FRIENDLY_UNITS_IN_AREA = 31, diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp index 27667f0ddc3..81f73e6ad65 100644 --- a/src/game/Spell.cpp +++ b/src/game/Spell.cpp @@ -1977,17 +1977,13 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap) break; } - if(cur == TARGET_DEST_DEST) - break; - - float x, y, z, angle, dist; - - dist = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); - if (cur == TARGET_DEST_DEST_RANDOM) - dist *= rand_norm(); - + float angle; switch(cur) { + case TARGET_DEST_DYNOBJ_ENEMY: + case TARGET_DEST_DYNOBJ_ALLY: + case TARGET_DEST_DEST: + return; case TARGET_DEST_DEST_FRONT: angle = 0.0f; break; case TARGET_DEST_DEST_BACK: angle = M_PI; break; case TARGET_DEST_DEST_RIGHT: angle = M_PI/2; break; @@ -1999,6 +1995,11 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap) default: angle = rand_norm()*2*M_PI; break; } + float dist, x, y, z; + dist = GetSpellRadius(sSpellRadiusStore.LookupEntry(m_spellInfo->EffectRadiusIndex[i])); + if (cur == TARGET_DEST_DEST_RANDOM) + dist *= rand_norm(); + x = m_targets.m_destX; y = m_targets.m_destY; z = m_targets.m_destZ; diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp index 95ddab074b1..e77bce1fc4d 100644 --- a/src/game/SpellMgr.cpp +++ b/src/game/SpellMgr.cpp @@ -124,8 +124,6 @@ SpellMgr::SpellMgr() case TARGET_UNIT_AREA_ENTRY: case TARGET_UNIT_AREA_PARTY_GROUND: case TARGET_UNIT_AREA_PARTY: - //case TARGET_UNIT_AREA_ENEMY_CHANNEL: - //case TARGET_UNIT_AREA_ALLY_CHANNEL: SpellTargetType[i] = TARGET_TYPE_AREA_DEST; break; case TARGET_DEST_TARGET_ENEMY: @@ -158,6 +156,8 @@ SpellMgr::SpellMgr() case TARGET_DEST_CASTER_RADIUS: SpellTargetType[i] = TARGET_TYPE_DEST_CASTER; break; + case TARGET_DEST_DYNOBJ_ENEMY: + case TARGET_DEST_DYNOBJ_ALLY: case TARGET_DEST_DEST: case TARGET_DEST_DEST_FRONT_LEFT: case TARGET_DEST_DEST_BACK_LEFT: @@ -187,9 +187,6 @@ SpellMgr::SpellMgr() case TARGET_UNIT_AREA_ENTRY: case TARGET_UNIT_AREA_PARTY_GROUND: case TARGET_UNIT_AREA_PARTY: - //Check persistant aura seperately - //case TARGET_UNIT_AREA_ENEMY_CHANNEL: - //case TARGET_UNIT_AREA_ALLY_CHANNEL: case TARGET_UNIT_PARTY_TARGET: case TARGET_UNIT_PARTY_CASTER: case TARGET_UNIT_CONE_ENEMY: @@ -493,7 +490,7 @@ bool IsPositiveTarget(uint32 targetA, uint32 targetB) case TARGET_ALL_ENEMY_IN_AREA: case TARGET_ALL_ENEMY_IN_AREA_INSTANT: case TARGET_IN_FRONT_OF_CASTER: - case TARGET_ALL_ENEMY_IN_AREA_CHANNELED: + case TARGET_DEST_DYNOBJ_ENEMY: case TARGET_CURRENT_ENEMY_COORDINATES: case TARGET_UNIT_CHANNEL: return false; |