*Update IsAOE function.

--HG--
branch : trunk
This commit is contained in:
megamage
2008-12-26 15:55:12 -06:00
parent c58a199db8
commit 032de9a491
5 changed files with 39 additions and 33 deletions
+2 -2
View File
@@ -821,7 +821,7 @@ enum Targets
TARGET_GAMEOBJECT = 23, TARGET_GAMEOBJECT = 23,
//TARGET_OBJECT_OPEN //TARGET_OBJECT_OPEN
TARGET_IN_FRONT_OF_CASTER = 24, TARGET_IN_FRONT_OF_CASTER = 24,
//TARGET_UNIT_CONE_ENEMY TARGET_UNIT_CONE_ENEMY = 24,
TARGET_DUELVSPLAYER = 25, TARGET_DUELVSPLAYER = 25,
TARGET_UNIT_TARGET_ANY = 25, TARGET_UNIT_TARGET_ANY = 25,
TARGET_GAMEOBJECT_ITEM = 26, TARGET_GAMEOBJECT_ITEM = 26,
@@ -874,7 +874,7 @@ enum Targets
TARGET_UNIT_CONE_ALLY = 59, TARGET_UNIT_CONE_ALLY = 59,
TARGET_UNIT_AREA_SCRIPT = 60, TARGET_UNIT_AREA_SCRIPT = 60,
TARGET_AREAEFFECT_PARTY_AND_CLASS = 61, TARGET_AREAEFFECT_PARTY_AND_CLASS = 61,
//TARGET_UNIT_CLASS_TARGET TARGET_UNIT_CLASS_TARGET = 61,
TARGET_TEST = 62, // for a test spell TARGET_TEST = 62, // for a test spell
TARGET_DUELVSPLAYER_COORDINATES = 63, TARGET_DUELVSPLAYER_COORDINATES = 63,
TARGET_DEST_TARGET_ENEMY_UNKNOWN = 63, TARGET_DEST_TARGET_ENEMY_UNKNOWN = 63,
+1 -1
View File
@@ -568,7 +568,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
//TODO: should this be put on taken but not done? //TODO: should this be put on taken but not done?
if(found) if(found)
m_damage += m_spellInfo->EffectBasePoints[1]; damage += m_spellInfo->EffectBasePoints[1];
} }
//Explosive Trap Effect //Explosive Trap Effect
else if(m_spellInfo->SpellFamilyFlags & 0x00000004) else if(m_spellInfo->SpellFamilyFlags & 0x00000004)
+31 -1
View File
@@ -118,7 +118,8 @@ SpellMgr::SpellMgr()
case TARGET_UNIT_AREA_ENTRY: case TARGET_UNIT_AREA_ENTRY:
case TARGET_UNIT_AREA_PARTY_GROUND: case TARGET_UNIT_AREA_PARTY_GROUND:
case TARGET_UNIT_AREA_PARTY: case TARGET_UNIT_AREA_PARTY:
case TARGET_UNIT_AREA_ENEMY_CHANNEL: //case TARGET_UNIT_AREA_ENEMY_CHANNEL:
//case TARGET_UNIT_AREA_ALLY_CHANNEL:
SpellTargetType[i] = TARGET_TYPE_AREA_DEST; SpellTargetType[i] = TARGET_TYPE_AREA_DEST;
break; break;
case TARGET_DEST_TARGET_ENEMY: case TARGET_DEST_TARGET_ENEMY:
@@ -156,6 +157,35 @@ SpellMgr::SpellMgr()
SpellTargetType[i] = TARGET_TYPE_DEFAULT; SpellTargetType[i] = TARGET_TYPE_DEFAULT;
} }
} }
for(int i = 0; i < TOTAL_SPELL_TARGETS; ++i)
{
switch(i)
{
case TARGET_UNIT_AREA_ENEMY_GROUND:
case TARGET_UNIT_AREA_ENEMY:
case TARGET_UNIT_AREA_ALLY_GROUND:
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:
//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:
case TARGET_UNIT_CONE_ALLY:
case TARGET_UNIT_CONE_ENEMY_UNKNOWN:
case TARGET_UNIT_RAID:
IsAreaEffectTarget[i] = true;
break;
default:
IsAreaEffectTarget[i] = false;
break;
}
}
} }
SpellMgr::~SpellMgr() SpellMgr::~SpellMgr()
+4 -28
View File
@@ -359,38 +359,14 @@ bool IsAuraAddedBySpell(uint32 auraType, uint32 spellId);
bool IsSpellAllowedInLocation(SpellEntry const *spellInfo,uint32 map_id,uint32 zone_id,uint32 area_id); bool IsSpellAllowedInLocation(SpellEntry const *spellInfo,uint32 map_id,uint32 zone_id,uint32 area_id);
inline bool IsAreaEffectTarget( Targets target ) static bool IsAreaEffectTarget[TOTAL_SPELL_TARGETS];
{
switch (target )
{
case TARGET_AREAEFFECT_CUSTOM:
case TARGET_ALL_ENEMY_IN_AREA:
case TARGET_ALL_ENEMY_IN_AREA_INSTANT:
case TARGET_ALL_PARTY_AROUND_CASTER:
case TARGET_ALL_AROUND_CASTER:
case TARGET_ALL_ENEMY_IN_AREA_CHANNELED:
case TARGET_ALL_FRIENDLY_UNITS_AROUND_CASTER:
case TARGET_ALL_PARTY:
case TARGET_ALL_PARTY_AROUND_CASTER_2:
case TARGET_AREAEFFECT_PARTY:
case TARGET_AREAEFFECT_CUSTOM_2:
case TARGET_AREAEFFECT_PARTY_AND_CLASS:
case TARGET_IN_FRONT_OF_CASTER:
case TARGET_ALL_FRIENDLY_UNITS_IN_AREA:
return true;
default:
break;
}
return false;
}
inline bool IsAreaOfEffectSpell(SpellEntry const *spellInfo) inline bool IsAreaOfEffectSpell(SpellEntry const *spellInfo)
{ {
if(IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetA[0])) || IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetB[0]))) if(IsAreaEffectTarget[spellInfo->EffectImplicitTargetA[0]] || IsAreaEffectTarget[spellInfo->EffectImplicitTargetB[0]])
return true; return true;
if(IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetA[1])) || IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetB[1]))) if(IsAreaEffectTarget[spellInfo->EffectImplicitTargetA[1]] || IsAreaEffectTarget[spellInfo->EffectImplicitTargetB[1]])
return true; return true;
if(IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetA[2])) || IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetB[2]))) if(IsAreaEffectTarget[spellInfo->EffectImplicitTargetA[2]] || IsAreaEffectTarget[spellInfo->EffectImplicitTargetB[2]])
return true; return true;
return false; return false;
} }
+1 -1
View File
@@ -12243,7 +12243,7 @@ uint32 Unit::GetCastingTimeForBonus( SpellEntry const *spellProto, DamageEffectT
break; break;
} }
if(IsAreaEffectTarget(Targets(spellProto->EffectImplicitTargetA[i])) || IsAreaEffectTarget(Targets(spellProto->EffectImplicitTargetB[i]))) if(IsAreaEffectTarget[spellProto->EffectImplicitTargetA[i]] || IsAreaEffectTarget[spellProto->EffectImplicitTargetB[i]])
AreaEffect = true; AreaEffect = true;
} }