aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorQAston <qaston@gmail.com>2011-07-02 16:12:19 +0200
committerQAston <qaston@gmail.com>2011-07-02 16:12:19 +0200
commit86dde83ddade00c66a5af552d65d4787c22b6361 (patch)
treedcd82d7c95facf45f52201edf7072a8f64f5c053 /src/server/game/Spells/Spell.cpp
parentce75ced7415cff24372e7c8b5bdb0dc0f1ef976f (diff)
Core/Spells: Define many unknown SpellCastTargetFlags enum values, rename some target type enum values to follow standards, also correctly implement TARGET_UNIT_TARGET_PASSENGER.
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rwxr-xr-xsrc/server/game/Spells/Spell.cpp54
1 files changed, 26 insertions, 28 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp
index bf5fdb72314..2532ffcc01a 100755
--- a/src/server/game/Spells/Spell.cpp
+++ b/src/server/game/Spells/Spell.cpp
@@ -119,16 +119,16 @@ void SpellCastTargets::Read(ByteBuffer& data, Unit* caster)
if (m_targetMask == TARGET_FLAG_SELF)
return;
- if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_UNK17))
+ if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_UNIT_MINIPET))
data.readPackGUID(m_unitTargetGUID);
- if (m_targetMask & (TARGET_FLAG_OBJECT))
+ if (m_targetMask & (TARGET_FLAG_GAMEOBJECT))
data.readPackGUID(m_GOTargetGUID);
if (m_targetMask & (TARGET_FLAG_ITEM | TARGET_FLAG_TRADE_ITEM))
data.readPackGUID(m_itemTargetGUID);
- if (m_targetMask & (TARGET_FLAG_CORPSE | TARGET_FLAG_PVP_CORPSE))
+ if (m_targetMask & (TARGET_FLAG_CORPSE_ENEMY | TARGET_FLAG_CORPSE_ALLY))
data.readPackGUID(m_CorpseTargetGUID);
if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION)
@@ -175,7 +175,7 @@ void SpellCastTargets::Write(ByteBuffer& data)
{
data << uint32(m_targetMask);
- if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_PVP_CORPSE | TARGET_FLAG_OBJECT | TARGET_FLAG_CORPSE | TARGET_FLAG_UNK17))
+ if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_CORPSE_ALLY | TARGET_FLAG_GAMEOBJECT | TARGET_FLAG_CORPSE_ENEMY | TARGET_FLAG_UNIT_MINIPET))
{
if (m_targetMask & TARGET_FLAG_UNIT)
{
@@ -184,14 +184,14 @@ void SpellCastTargets::Write(ByteBuffer& data)
else
data << uint8(0);
}
- else if (m_targetMask & TARGET_FLAG_OBJECT)
+ else if (m_targetMask & TARGET_FLAG_GAMEOBJECT)
{
if (m_GOTarget)
data.append(m_GOTarget->GetPackGUID());
else
data << uint8(0);
}
- else if (m_targetMask & (TARGET_FLAG_CORPSE | TARGET_FLAG_PVP_CORPSE))
+ else if (m_targetMask & (TARGET_FLAG_CORPSE_ALLY | TARGET_FLAG_CORPSE_ENEMY))
data.appendPackGUID(m_CorpseTargetGUID);
else
data << uint8(0);
@@ -333,7 +333,7 @@ void SpellCastTargets::SetGOTarget(GameObject* target)
{
m_GOTarget = target;
m_GOTargetGUID = target->GetGUID();
- m_targetMask |= TARGET_FLAG_OBJECT;
+ m_targetMask |= TARGET_FLAG_GAMEOBJECT;
}
void SpellCastTargets::SetItemTarget(Item* item)
@@ -417,14 +417,14 @@ void SpellCastTargets::OutDebug() const
if (m_targetMask & TARGET_FLAG_UNIT)
sLog->outString("TARGET_FLAG_UNIT: " UI64FMTD, m_unitTargetGUID);
- if (m_targetMask & TARGET_FLAG_UNK17)
- sLog->outString("TARGET_FLAG_UNK17: " UI64FMTD, m_unitTargetGUID);
- if (m_targetMask & TARGET_FLAG_OBJECT)
- sLog->outString("TARGET_FLAG_OBJECT: " UI64FMTD, m_GOTargetGUID);
- if (m_targetMask & TARGET_FLAG_CORPSE)
- sLog->outString("TARGET_FLAG_CORPSE: " UI64FMTD, m_CorpseTargetGUID);
- if (m_targetMask & TARGET_FLAG_PVP_CORPSE)
- sLog->outString("TARGET_FLAG_PVP_CORPSE: " UI64FMTD, m_CorpseTargetGUID);
+ if (m_targetMask & TARGET_FLAG_UNIT_MINIPET)
+ sLog->outString("TARGET_FLAG_UNIT_MINIPET: " UI64FMTD, m_unitTargetGUID);
+ if (m_targetMask & TARGET_FLAG_GAMEOBJECT)
+ sLog->outString("TARGET_FLAG_GAMEOBJECT: " UI64FMTD, m_GOTargetGUID);
+ if (m_targetMask & TARGET_FLAG_CORPSE_ENEMY)
+ sLog->outString("TARGET_FLAG_CORPSE_ENEMY: " UI64FMTD, m_CorpseTargetGUID);
+ if (m_targetMask & TARGET_FLAG_CORPSE_ALLY)
+ sLog->outString("TARGET_FLAG_CORPSE_ALLY: " UI64FMTD, m_CorpseTargetGUID);
if (m_targetMask & TARGET_FLAG_ITEM)
sLog->outString("TARGET_FLAG_ITEM: " UI64FMTD, m_itemTargetGUID);
if (m_targetMask & TARGET_FLAG_TRADE_ITEM)
@@ -768,7 +768,7 @@ void Spell::SelectSpellTargets()
case SPELL_EFFECT_APPLY_AREA_AURA_PARTY:
// AreaAura
if (m_spellInfo->Attributes & (SPELL_ATTR0_CASTABLE_WHILE_SITTING | SPELL_ATTR0_CASTABLE_WHILE_MOUNTED | SPELL_ATTR0_UNK18 | SPELL_ATTR0_NOT_SHAPESHIFT) || m_spellInfo->Attributes == SPELL_ATTR0_NOT_SHAPESHIFT)
- SelectEffectTargets(i, TARGET_UNIT_PARTY_TARGET);
+ SelectEffectTargets(i, TARGET_UNIT_TARGET_ALLY_PARTY);
break;
case SPELL_EFFECT_SKIN_PLAYER_CORPSE:
if (m_targets.GetUnitTarget())
@@ -2059,8 +2059,12 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
if (IsValidSingleTargetSpell(target))
AddUnitTarget(target, i);
break;
- case TARGET_UNIT_PARTY_TARGET:
- case TARGET_UNIT_CLASS_TARGET:
+ case TARGET_UNIT_TARGET_PASSENGER:
+ if (target->IsOnVehicle(m_caster))
+ AddUnitTarget(target, i);
+ break;
+ case TARGET_UNIT_TARGET_ALLY_PARTY:
+ case TARGET_UNIT_TARGET_CLASS_RAID:
pushType = PUSH_CASTER_CENTER; // not real
break;
}
@@ -2348,11 +2352,6 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
else if (m_targets.GetItemTarget())
AddItemTarget(m_targets.GetItemTarget(), i);
break;
- case TARGET_UNIT_DRIVER:
- if (Unit* driver = m_targets.GetUnitTarget())
- if (driver->IsOnVehicle(m_caster))
- AddUnitTarget(driver, i);
- break;
default:
sLog->outError("SPELL (caster[type: %u; guidlow: %u], spell: %u): unhandled spell target (%u)",
m_caster->GetTypeId(), m_caster->GetGUIDLow(), m_spellInfo->Id, cur);
@@ -2594,7 +2593,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
case TARGET_UNIT_AREA_PARTY_DST:
m_caster->GetPartyMemberInDist(unitList, radius); //fix me
break;
- case TARGET_UNIT_PARTY_TARGET:
+ case TARGET_UNIT_TARGET_ALLY_PARTY:
m_targets.GetUnitTarget()->GetPartyMemberInDist(unitList, radius);
break;
case TARGET_UNIT_PARTY_CASTER:
@@ -2603,7 +2602,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur)
case TARGET_UNIT_RAID_CASTER:
m_caster->GetRaidMember(unitList, radius);
break;
- case TARGET_UNIT_CLASS_TARGET:
+ case TARGET_UNIT_TARGET_CLASS_RAID:
{
Player* targetPlayer = m_targets.GetUnitTarget() && m_targets.GetUnitTarget()->GetTypeId() == TYPEID_PLAYER
? (Player*)m_targets.GetUnitTarget() : NULL;
@@ -4711,9 +4710,8 @@ SpellCastResult Spell::CheckCast(bool strict)
}
Unit* target = m_targets.GetUnitTarget();
-
// In pure self-cast spells, the client won't send any unit target
- if (!target && (m_targets.GetTargetMask() == TARGET_FLAG_SELF || m_targets.GetTargetMask() & TARGET_FLAG_UNIT_CASTER)) // TARGET_FLAG_SELF == 0, remember!
+ if (!target && (m_targets.GetTargetMask() == TARGET_FLAG_SELF || m_targets.GetTargetMask() & TARGET_FLAG_UNIT_ALLY)) // TARGET_FLAG_SELF == 0, remember!
target = m_caster;
if (target)
@@ -6748,7 +6746,7 @@ bool Spell::IsValidSingleTargetEffect(Unit const* target, Targets type) const
case TARGET_UNIT_TARGET_ENEMY:
return !m_caster->IsFriendlyTo(target);
case TARGET_UNIT_TARGET_ALLY:
- case TARGET_UNIT_PARTY_TARGET:
+ case TARGET_UNIT_TARGET_ALLY_PARTY:
return m_caster->IsFriendlyTo(target);
case TARGET_UNIT_TARGET_PARTY:
return m_caster != target && m_caster->IsInPartyWith(target);