mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-23 02:25:38 +01:00
*Update IsAOE function.
--HG-- branch : trunk
This commit is contained in:
@@ -821,7 +821,7 @@ enum Targets
|
||||
TARGET_GAMEOBJECT = 23,
|
||||
//TARGET_OBJECT_OPEN
|
||||
TARGET_IN_FRONT_OF_CASTER = 24,
|
||||
//TARGET_UNIT_CONE_ENEMY
|
||||
TARGET_UNIT_CONE_ENEMY = 24,
|
||||
TARGET_DUELVSPLAYER = 25,
|
||||
TARGET_UNIT_TARGET_ANY = 25,
|
||||
TARGET_GAMEOBJECT_ITEM = 26,
|
||||
@@ -874,7 +874,7 @@ enum Targets
|
||||
TARGET_UNIT_CONE_ALLY = 59,
|
||||
TARGET_UNIT_AREA_SCRIPT = 60,
|
||||
TARGET_AREAEFFECT_PARTY_AND_CLASS = 61,
|
||||
//TARGET_UNIT_CLASS_TARGET
|
||||
TARGET_UNIT_CLASS_TARGET = 61,
|
||||
TARGET_TEST = 62, // for a test spell
|
||||
TARGET_DUELVSPLAYER_COORDINATES = 63,
|
||||
TARGET_DEST_TARGET_ENEMY_UNKNOWN = 63,
|
||||
|
||||
@@ -568,7 +568,7 @@ void Spell::SpellDamageSchoolDmg(uint32 effect_idx)
|
||||
|
||||
//TODO: should this be put on taken but not done?
|
||||
if(found)
|
||||
m_damage += m_spellInfo->EffectBasePoints[1];
|
||||
damage += m_spellInfo->EffectBasePoints[1];
|
||||
}
|
||||
//Explosive Trap Effect
|
||||
else if(m_spellInfo->SpellFamilyFlags & 0x00000004)
|
||||
|
||||
@@ -118,7 +118,8 @@ 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_ENEMY_CHANNEL:
|
||||
//case TARGET_UNIT_AREA_ALLY_CHANNEL:
|
||||
SpellTargetType[i] = TARGET_TYPE_AREA_DEST;
|
||||
break;
|
||||
case TARGET_DEST_TARGET_ENEMY:
|
||||
@@ -156,6 +157,35 @@ SpellMgr::SpellMgr()
|
||||
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()
|
||||
|
||||
@@ -359,38 +359,14 @@ bool IsAuraAddedBySpell(uint32 auraType, uint32 spellId);
|
||||
|
||||
bool IsSpellAllowedInLocation(SpellEntry const *spellInfo,uint32 map_id,uint32 zone_id,uint32 area_id);
|
||||
|
||||
inline bool IsAreaEffectTarget( Targets target )
|
||||
{
|
||||
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;
|
||||
}
|
||||
|
||||
static bool IsAreaEffectTarget[TOTAL_SPELL_TARGETS];
|
||||
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;
|
||||
if(IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetA[1])) || IsAreaEffectTarget(Targets(spellInfo->EffectImplicitTargetB[1])))
|
||||
if(IsAreaEffectTarget[spellInfo->EffectImplicitTargetA[1]] || IsAreaEffectTarget[spellInfo->EffectImplicitTargetB[1]])
|
||||
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 false;
|
||||
}
|
||||
|
||||
@@ -12243,7 +12243,7 @@ uint32 Unit::GetCastingTimeForBonus( SpellEntry const *spellProto, DamageEffectT
|
||||
break;
|
||||
}
|
||||
|
||||
if(IsAreaEffectTarget(Targets(spellProto->EffectImplicitTargetA[i])) || IsAreaEffectTarget(Targets(spellProto->EffectImplicitTargetB[i])))
|
||||
if(IsAreaEffectTarget[spellProto->EffectImplicitTargetA[i]] || IsAreaEffectTarget[spellProto->EffectImplicitTargetB[i]])
|
||||
AreaEffect = true;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user