aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authormegamage <none@none>2008-12-26 15:55:12 -0600
committermegamage <none@none>2008-12-26 15:55:12 -0600
commit032de9a49108b2df6ee01c92c7de2557e4eb6136 (patch)
tree847f27fdbec0f74a7bc00a74d6c83c92279f0423 /src
parentc58a199db80fd3d24075582d239f782416c78de1 (diff)
*Update IsAOE function.
--HG-- branch : trunk
Diffstat (limited to 'src')
-rw-r--r--src/game/SharedDefines.h4
-rw-r--r--src/game/SpellEffects.cpp2
-rw-r--r--src/game/SpellMgr.cpp32
-rw-r--r--src/game/SpellMgr.h32
-rw-r--r--src/game/Unit.cpp2
5 files changed, 39 insertions, 33 deletions
diff --git a/src/game/SharedDefines.h b/src/game/SharedDefines.h
index 51fba0b48ed..07840998cf2 100644
--- a/src/game/SharedDefines.h
+++ b/src/game/SharedDefines.h
@@ -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,
diff --git a/src/game/SpellEffects.cpp b/src/game/SpellEffects.cpp
index e8fdbf5adce..85984eeaa3d 100644
--- a/src/game/SpellEffects.cpp
+++ b/src/game/SpellEffects.cpp
@@ -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)
diff --git a/src/game/SpellMgr.cpp b/src/game/SpellMgr.cpp
index 2e285ea7176..6f6cb7e8d65 100644
--- a/src/game/SpellMgr.cpp
+++ b/src/game/SpellMgr.cpp
@@ -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()
diff --git a/src/game/SpellMgr.h b/src/game/SpellMgr.h
index d8b4b866655..716760a70c6 100644
--- a/src/game/SpellMgr.h
+++ b/src/game/SpellMgr.h
@@ -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;
}
diff --git a/src/game/Unit.cpp b/src/game/Unit.cpp
index a079964ce3e..010c5a4d8c4 100644
--- a/src/game/Unit.cpp
+++ b/src/game/Unit.cpp
@@ -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;
}