From d44d827200e596564f26c2a5c5b418a9fd3cffb2 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 30 Apr 2009 22:04:15 -0500 Subject: *Explicitly implement spell target 28 and 29. --HG-- branch : trunk --- src/game/GridNotifiersImpl.h | 2 +- src/game/PetHandler.cpp | 2 +- src/game/SharedDefines.h | 5 ++--- src/game/Spell.cpp | 19 ++++++++++--------- src/game/SpellMgr.cpp | 9 +++------ 5 files changed, 17 insertions(+), 20 deletions(-) (limited to 'src/game') 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 &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 &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; -- cgit v1.2.3 From 570b148264b041a30e0b3ca453df0eacbe5bf4a4 Mon Sep 17 00:00:00 2001 From: megamage Date: Thu, 30 Apr 2009 22:58:08 -0500 Subject: *Change the radius of dynamic object to normal. I cannot see any bug by myself using normal radius. --HG-- branch : trunk --- src/game/DynamicObject.cpp | 2 +- src/game/SpellEffects.cpp | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) (limited to 'src/game') diff --git a/src/game/DynamicObject.cpp b/src/game/DynamicObject.cpp index 801626d5a9b..82076f734f2 100644 --- a/src/game/DynamicObject.cpp +++ b/src/game/DynamicObject.cpp @@ -81,7 +81,7 @@ bool DynamicObject::Create( uint32 guidlow, Unit *caster, uint32 spellId, uint32 SetUInt64Value( DYNAMICOBJECT_CASTER, caster->GetGUID() ); SetUInt32Value( DYNAMICOBJECT_BYTES, 0x00000001 ); SetUInt32Value( DYNAMICOBJECT_SPELLID, spellId ); - SetFloatValue( DYNAMICOBJECT_RADIUS, radius * 2); + SetFloatValue( DYNAMICOBJECT_RADIUS, radius); SetFloatValue( DYNAMICOBJECT_POS_X, x ); SetFloatValue( DYNAMICOBJECT_POS_Y, y ); SetFloatValue( DYNAMICOBJECT_POS_Z, z ); diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp index c38f46d867b..37f1dc0a083 100644 --- a/src/game/SpellEffects.cpp +++ b/src/game/SpellEffects.cpp @@ -2650,7 +2650,6 @@ void Spell::EffectPersistentAA(uint32 i) return; } dynObj->SetUInt32Value(OBJECT_FIELD_TYPE, 65); - dynObj->SetUInt32Value(GAMEOBJECT_DISPLAYID, 368003); dynObj->SetUInt32Value(DYNAMICOBJECT_BYTES, 0x01eeeeee); caster->AddDynObject(dynObj); dynObj->GetMap()->Add(dynObj); -- cgit v1.2.3