aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authormegamage <none@none>2008-12-23 20:19:40 -0600
committermegamage <none@none>2008-12-23 20:19:40 -0600
commitc81299e6536e249ca05eebf100f3f350522da7da (patch)
tree4329c771076612bc55e52febfb5f323a2f21007e
parentafc598bde2dff64a17a4b82f6e3b87d83a9a28da (diff)
*Fix the bug that proc AOE buff does not work.
--HG-- branch : trunk
-rw-r--r--src/game/Spell.cpp18
-rw-r--r--src/game/SpellMgr.cpp16
2 files changed, 21 insertions, 13 deletions
diff --git a/src/game/Spell.cpp b/src/game/Spell.cpp
index 743d5bc039d..ffac28c7c58 100644
--- a/src/game/Spell.cpp
+++ b/src/game/Spell.cpp
@@ -1467,8 +1467,11 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
TagUnitMap.push_back(owner);
break;
case TARGET_UNIT_PET:
- if(Pet* tmpUnit = m_caster->GetPet())
- TagUnitMap.push_back(tmpUnit);
+ if(Pet* pet = m_caster->GetPet())
+ TagUnitMap.push_back(pet);
+ break;
+ case TARGET_UNIT_PARTY_CASTER:
+ m_caster->GetPartyMember(TagUnitMap, radius);
break;
}
}break;
@@ -1560,6 +1563,11 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
case TARGET_UNIT_AREA_ALLY:
SearchAreaTarget(TagUnitMap, radius, PUSH_DEST_CENTER, SPELL_TARGETS_FRIENDLY);
break;
+ case TARGET_UNIT_AREA_PARTY_GROUND:
+ m_targets.m_targetMask |= TARGET_FLAG_DEST_LOCATION;
+ case TARGET_UNIT_AREA_PARTY:
+ m_caster->GetPartyMember(TagUnitMap, radius);
+ break;
case TARGET_UNIT_AREA_ENTRY_GROUND:
m_targets.m_targetMask |= TARGET_FLAG_DEST_LOCATION;
case TARGET_UNIT_AREA_ENTRY:
@@ -1752,12 +1760,6 @@ void Spell::SetTargetMap(uint32 i,uint32 cur,std::list<Unit*> &TagUnitMap)
break;
}
- case TARGET_UNIT_AREA_PARTY_GROUND:
- m_targets.m_targetMask |= TARGET_FLAG_DEST_LOCATION;
- case TARGET_UNIT_PARTY_CASTER:
- case TARGET_UNIT_AREA_PARTY:
- m_caster->GetPartyMember(TagUnitMap, radius);
- break;
case TARGET_RANDOM_RAID_MEMBER:
{
if (m_caster->GetTypeId() == TYPEID_PLAYER)
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 88fe7cdb4d8..432682d618e 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -80,6 +80,7 @@ SpellMgr::SpellMgr()
case TARGET_UNIT_CASTER_FISHING:
case TARGET_UNIT_MASTER:
case TARGET_UNIT_PET:
+ case TARGET_UNIT_PARTY_CASTER:
SpellTargetType[i] = TARGET_TYPE_UNIT_CASTER;
break;
case TARGET_UNIT_MINIPET:
@@ -102,6 +103,8 @@ SpellMgr::SpellMgr()
case TARGET_UNIT_AREA_ALLY:
case TARGET_UNIT_AREA_ENTRY_GROUND:
case TARGET_UNIT_AREA_ENTRY:
+ case TARGET_UNIT_AREA_PARTY_GROUND:
+ case TARGET_UNIT_AREA_PARTY:
case TARGET_UNIT_AREA_ENEMY_CHANNEL:
SpellTargetType[i] = TARGET_TYPE_AREA_DEST;
break;
@@ -2001,11 +2004,14 @@ void SpellMgr::LoadSpellCustomAttr()
bool auraSpell = true;
for(uint32 j = 0; j < 3; ++j)
{
- if(spellInfo->Effect[j] && spellInfo->Effect[j] != SPELL_EFFECT_APPLY_AURA)
- {
- auraSpell = false;
- break;
- }
+ if(spellInfo->Effect[j])
+ if(spellInfo->Effect[j] != SPELL_EFFECT_APPLY_AURA
+ || SpellTargetType[spellInfo->EffectImplicitTargetA[j]] != TARGET_TYPE_UNIT_TARGET)
+ //ignore target party for now
+ {
+ auraSpell = false;
+ break;
+ }
}
if(auraSpell)
mSpellCustomAttr[i] |= SPELL_ATTR_CU_AURA_SPELL;