aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp70
1 files changed, 35 insertions, 35 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index b4a98e06bd1..628ec1a0f16 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -614,8 +614,8 @@ void Spell::SelectSpellTargets()
if (effectTargetType == SPELL_REQUIRE_NONE)
continue;
- uint32 targetA = m_spellInfo->Effects[i].TargetA;
- uint32 targetB = m_spellInfo->Effects[i].TargetA;
+ uint32 targetA = m_spellInfo->Effects[i].TargetA.GetTarget();
+ uint32 targetB = m_spellInfo->Effects[i].TargetB.GetTarget();
if (targetA)
SelectEffectTargets(i, m_spellInfo->Effects[i].TargetA);
@@ -1974,7 +1974,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
{
case TARGET_TYPE_UNIT_CASTER:
{
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_UNIT_CASTER:
AddUnitTarget(m_caster, i);
@@ -2019,7 +2019,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
case TARGET_UNIT_PASSENGER_6:
case TARGET_UNIT_PASSENGER_7:
if (m_caster->GetTypeId() == TYPEID_UNIT && m_caster->ToCreature()->IsVehicle())
- if (Unit *unit = m_caster->GetVehicleKit()->GetPassenger(cur - TARGET_UNIT_PASSENGER_0))
+ if (Unit *unit = m_caster->GetVehicleKit()->GetPassenger(cur.GetTarget() - TARGET_UNIT_PASSENGER_0))
AddUnitTarget(unit, i);
break;
default:
@@ -2037,7 +2037,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
break;
}
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_UNIT_TARGET_ENEMY:
if (Unit *magnet = m_caster->SelectMagnetTarget(target, m_spellInfo))
@@ -2083,7 +2083,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
WorldObject *target = NULL;
float range;
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_UNIT_NEARBY_ENEMY:
range = m_spellInfo->GetMaxRange(false);
@@ -2141,12 +2141,12 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
case TARGET_TYPE_DEST_CASTER: //4+8+2
{
- if (cur == TARGET_SRC_CASTER)
+ if (cur.GetTarget() == TARGET_SRC_CASTER)
{
m_targets.SetSrc(*m_caster);
break;
}
- else if (cur == TARGET_DST_CASTER)
+ else if (cur.GetTarget() == TARGET_DST_CASTER)
{
m_targets.SetDst(*m_caster);
break;
@@ -2155,17 +2155,17 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
float angle, dist;
float objSize = m_caster->GetObjectSize();
- if (cur == TARGET_MINION)
+ if (cur.GetTarget() == TARGET_MINION)
dist = 0.0f;
else
dist = m_spellInfo->Effects[i].CalcRadius(m_caster);
if (modOwner) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RADIUS, dist, this);
if (dist < objSize)
dist = objSize;
- else if (cur == TARGET_DEST_CASTER_RANDOM)
+ else if (cur.GetTarget() == TARGET_DEST_CASTER_RANDOM)
dist = objSize + (dist - objSize) * (float)rand_norm();
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_DEST_CASTER_FRONT_LEFT: angle = static_cast<float>(-M_PI/4); break;
case TARGET_DEST_CASTER_BACK_LEFT: angle = static_cast<float>(-3*M_PI/4); break;
@@ -2181,7 +2181,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
}
Position pos;
- if (cur == TARGET_DEST_CASTER_FRONT_LEAP)
+ if (cur.GetTarget() == TARGET_DEST_CASTER_FRONT_LEAP)
m_caster->GetFirstCollisionPosition(pos, dist, angle);
else
m_caster->GetNearPosition(pos, dist, angle);
@@ -2199,7 +2199,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
break;
}
- if (cur == TARGET_DST_TARGET_ENEMY || cur == TARGET_DEST_TARGET_ANY)
+ if (cur.GetTarget() == TARGET_DST_TARGET_ENEMY || cur.GetTarget() == TARGET_DEST_TARGET_ANY)
{
m_targets.SetDst(*target);
break;
@@ -2211,10 +2211,10 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
dist = m_spellInfo->Effects[i].CalcRadius(m_caster);
if (dist < objSize)
dist = objSize;
- else if (cur == TARGET_DEST_TARGET_RANDOM)
+ else if (cur.GetTarget() == TARGET_DEST_TARGET_RANDOM)
dist = objSize + (dist - objSize) * (float)rand_norm();
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_DEST_TARGET_FRONT: angle = 0.0f; break;
case TARGET_DEST_TARGET_BACK: angle = static_cast<float>(M_PI); break;
@@ -2243,7 +2243,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
}
float angle;
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_DEST_DYNOBJ_ENEMY:
case TARGET_DEST_DYNOBJ_ALLY:
@@ -2265,7 +2265,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
}
float dist = m_spellInfo->Effects[i].CalcRadius(m_caster);
- if (cur == TARGET_DEST_DEST_RANDOM || cur == TARGET_DEST_DEST_RANDOM_DIR_DIST)
+ if (cur.GetTarget() == TARGET_DEST_DEST_RANDOM || cur.GetTarget() == TARGET_DEST_DEST_RANDOM_DIR_DIST)
dist *= (float)rand_norm();
// must has dst, no need to set flag
@@ -2277,7 +2277,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
case TARGET_TYPE_DEST_SPECIAL:
{
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_DST_DB:
if (SpellTargetPosition const* st = sSpellMgr->GetSpellTargetPosition(m_spellInfo->Id))
@@ -2324,7 +2324,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
break;
}
- switch (cur)
+ switch (cur.GetTarget())
{
case TARGET_UNIT_CHANNEL_TARGET:
// unit target may be no longer avalible - teleported out of map for example
@@ -2352,7 +2352,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
default:
{
- switch (cur)
+ switch (cur.GetTarget())
{
case TARGET_GAMEOBJECT:
if (m_targets.GetGOTarget())
@@ -2396,7 +2396,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
float range;
std::list<Unit*> unitList;
- switch (cur)
+ switch (cur.GetTarget())
{
case TARGET_UNIT_NEARBY_ENEMY:
case TARGET_UNIT_TARGET_ENEMY:
@@ -2433,7 +2433,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
float radius;
SpellTargets targetType;
- switch(cur)
+ switch(cur.GetTarget())
{
case TARGET_UNIT_AREA_ENEMY_SRC:
case TARGET_UNIT_AREA_ENEMY_DST:
@@ -2601,7 +2601,7 @@ void Spell::SelectEffectTargets(uint32 i, SpellImplicitTargetInfo const& cur)
SearchAreaTarget(unitList, radius, pushType, targetType);
break;
default:
- switch (cur)
+ switch (cur.GetTarget())
{
case TARGET_UNIT_AREA_PARTY_SRC:
case TARGET_UNIT_AREA_PARTY_DST:
@@ -4791,7 +4791,7 @@ SpellCastResult Spell::CheckCast(bool strict)
// If 0 spell effect empty - client not send target data (need use selection)
// TODO: check it on next client version
if (m_targets.GetTargetMask() == TARGET_FLAG_SELF &&
- m_spellInfo->Effects[1].TargetA == TARGET_UNIT_TARGET_ENEMY)
+ m_spellInfo->Effects[1].TargetA.GetTarget() == TARGET_UNIT_TARGET_ENEMY)
{
target = m_caster->GetUnit(*m_caster, m_caster->ToPlayer()->GetSelection());
if (target)
@@ -4809,7 +4809,7 @@ SpellCastResult Spell::CheckCast(bool strict)
// check pet presents
for (int j = 0; j < MAX_SPELL_EFFECTS; ++j)
{
- if (m_spellInfo->Effects[j].TargetA == TARGET_UNIT_PET)
+ if (m_spellInfo->Effects[j].TargetA.GetTarget() == TARGET_UNIT_PET)
{
target = m_caster->GetGuardianPet();
if (!target)
@@ -4980,7 +4980,7 @@ SpellCastResult Spell::CheckCast(bool strict)
if (m_caster->GetTypeId() != TYPEID_PLAYER)
return SPELL_FAILED_BAD_TARGETS;
- if (m_spellInfo->Effects[i].TargetA != TARGET_UNIT_PET)
+ if (m_spellInfo->Effects[i].TargetA.GetTarget() != TARGET_UNIT_PET)
break;
Pet* pet = m_caster->ToPlayer()->GetPet();
@@ -5102,13 +5102,13 @@ SpellCastResult Spell::CheckCast(bool strict)
}
case SPELL_EFFECT_OPEN_LOCK:
{
- if (m_spellInfo->Effects[i].TargetA != TARGET_GAMEOBJECT &&
- m_spellInfo->Effects[i].TargetA != TARGET_GAMEOBJECT_ITEM)
+ if (m_spellInfo->Effects[i].TargetA.GetTarget() != TARGET_GAMEOBJECT &&
+ m_spellInfo->Effects[i].TargetA.GetTarget() != TARGET_GAMEOBJECT_ITEM)
break;
if (m_caster->GetTypeId() != TYPEID_PLAYER // only players can open locks, gather etc.
// we need a go target in case of TARGET_GAMEOBJECT
- || (m_spellInfo->Effects[i].TargetA == TARGET_GAMEOBJECT && !m_targets.GetGOTarget()))
+ || (m_spellInfo->Effects[i].TargetA.GetTarget() == TARGET_GAMEOBJECT && !m_targets.GetGOTarget()))
return SPELL_FAILED_BAD_TARGETS;
Item *pTempItem = NULL;
@@ -5121,7 +5121,7 @@ SpellCastResult Spell::CheckCast(bool strict)
pTempItem = m_caster->ToPlayer()->GetItemByGuid(m_targets.GetItemTargetGUID());
// we need a go target, or an openable item target in case of TARGET_GAMEOBJECT_ITEM
- if (m_spellInfo->Effects[i].TargetA == TARGET_GAMEOBJECT_ITEM &&
+ if (m_spellInfo->Effects[i].TargetA.GetTarget() == TARGET_GAMEOBJECT_ITEM &&
!m_targets.GetGOTarget() &&
(!pTempItem || !pTempItem->GetTemplate()->LockID || !pTempItem->IsLocked()))
return SPELL_FAILED_BAD_TARGETS;
@@ -5829,7 +5829,7 @@ SpellCastResult Spell::CheckItems()
for (int i = 0; i < MAX_SPELL_EFFECTS; i++)
{
// skip check, pet not required like checks, and for TARGET_UNIT_PET m_targets.GetUnitTarget() is not the real target but the caster
- if (m_spellInfo->Effects[i].TargetA == TARGET_UNIT_PET)
+ if (m_spellInfo->Effects[i].TargetA.GetTarget() == TARGET_UNIT_PET)
continue;
if (m_spellInfo->Effects[i].Effect == SPELL_EFFECT_HEAL)
@@ -6447,7 +6447,7 @@ CurrentSpellTypes Spell::GetCurrentContainer()
bool Spell::CheckTarget(Unit* target, uint32 eff)
{
// Check targets for creature type mask and remove not appropriate (skip explicit self target case, maybe need other explicit targets)
- if (m_spellInfo->Effects[eff].TargetA != TARGET_UNIT_CASTER)
+ if (m_spellInfo->Effects[eff].TargetA.GetTarget() != TARGET_UNIT_CASTER)
{
if (!CheckTargetCreatureType(target))
return false;
@@ -6561,7 +6561,7 @@ bool Spell::IsNextMeleeSwingSpell() const
return m_spellInfo->Attributes & SPELL_ATTR0_ON_NEXT_SWING;
}
-bool Spell::IsAutoActionResetSpell() const
+bool Spell::IsAutoActionResetSpell() const
{
return !m_IsTriggeredSpell && (m_spellInfo->InterruptFlags & SPELL_INTERRUPT_FLAG_AUTOATTACK);
}
@@ -6740,7 +6740,7 @@ bool Spell::IsValidSingleTargetSpell(Unit const* target) const
}
for (uint8 i = 0; i < MAX_SPELL_EFFECTS; ++i)
{
- if (!IsValidSingleTargetEffect(target, m_spellInfo->Effects[i].TargetA))
+ if (!IsValidSingleTargetEffect(target, m_spellInfo->Effects[i].TargetA.GetTarget()))
return false;
// Need to check B?
//if (!IsValidSingleTargetEffect(m_spellInfo->Effects[i].TargetB, target)
@@ -6924,7 +6924,7 @@ SpellCastResult Spell::CanOpenLock(uint32 effIndex, uint32 lockId, SkillType& sk
// skill bonus provided by casting spell (mostly item spells)
// add the damage modifier from the spell casted (cheat lock / skeleton key etc.)
- if (m_spellInfo->Effects[effIndex].TargetA == TARGET_GAMEOBJECT_ITEM || m_spellInfo->Effects[effIndex].TargetB == TARGET_GAMEOBJECT_ITEM)
+ if (m_spellInfo->Effects[effIndex].TargetA.GetTarget() == TARGET_GAMEOBJECT_ITEM || m_spellInfo->Effects[effIndex].TargetB.GetTarget() == TARGET_GAMEOBJECT_ITEM)
skillValue += uint32(CalculateDamage(effIndex, NULL));
if (skillValue < reqSkillValue)