diff options
| author | QAston <qaston@gmail.com> | 2011-07-02 16:12:19 +0200 |
|---|---|---|
| committer | QAston <qaston@gmail.com> | 2011-07-02 16:12:19 +0200 |
| commit | 86dde83ddade00c66a5af552d65d4787c22b6361 (patch) | |
| tree | dcd82d7c95facf45f52201edf7072a8f64f5c053 /src/server/game/Spells/Spell.cpp | |
| parent | ce75ced7415cff24372e7c8b5bdb0dc0f1ef976f (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-x | src/server/game/Spells/Spell.cpp | 54 |
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); |
