diff options
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rwxr-xr-x | src/server/game/Spells/Spell.cpp | 712 |
1 files changed, 376 insertions, 336 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index c4872841dc7..bf444f27e86 100755 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -53,18 +53,8 @@ #include "SpellScript.h" #include "InstanceScript.h" -#define SPELL_CHANNEL_UPDATE_INTERVAL (1 * IN_MILLISECONDS) - extern pEffect SpellEffects[TOTAL_SPELL_EFFECTS]; -bool IsQuestTameSpell(uint32 spellId) -{ - SpellEntry const *spellproto = sSpellStore.LookupEntry(spellId); - if (!spellproto) return false; - - return spellproto->Effect[0] == SPELL_EFFECT_THREAT && spellproto->Effect[1] == SPELL_EFFECT_APPLY_AURA && spellproto->EffectApplyAuraName[1] == SPELL_AURA_DUMMY; -} - SpellCastTargets::SpellCastTargets() : m_elevation(0), m_speed(0) { m_unitTarget = NULL; @@ -91,7 +81,153 @@ SpellCastTargets::~SpellCastTargets() { } -void SpellCastTargets::setUnitTarget(Unit* target) +SpellCastTargets& SpellCastTargets::operator=(const SpellCastTargets &target) +{ + m_unitTarget = target.m_unitTarget; + m_itemTarget = target.m_itemTarget; + m_GOTarget = target.m_GOTarget; + + m_unitTargetGUID = target.m_unitTargetGUID; + m_GOTargetGUID = target.m_GOTargetGUID; + m_CorpseTargetGUID = target.m_CorpseTargetGUID; + m_itemTargetGUID = target.m_itemTargetGUID; + + m_itemTargetEntry = target.m_itemTargetEntry; + + m_srcTransGUID = target.m_srcTransGUID; + m_srcTransOffset = target.m_srcTransOffset; + m_srcPos = target.m_srcPos; + + m_dstTransGUID = target.m_dstTransGUID; + m_dstTransOffset = target.m_dstTransOffset; + m_dstPos = target.m_dstPos; + + m_elevation = target.m_elevation; + m_speed = target.m_speed; + + m_strTarget = target.m_strTarget; + + m_targetMask = target.m_targetMask; + + return *this; +} + +void SpellCastTargets::Read(ByteBuffer& data, Unit* caster) +{ + data >> m_targetMask; + + if (m_targetMask == TARGET_FLAG_SELF) + return; + + if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_UNK17)) + data.readPackGUID(m_unitTargetGUID); + + if (m_targetMask & (TARGET_FLAG_OBJECT)) + 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)) + data.readPackGUID(m_CorpseTargetGUID); + + if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION) + { + data.readPackGUID(m_srcTransGUID); + if (m_srcTransGUID) + data >> m_srcTransOffset.PositionXYZStream(); + else + data >> m_srcPos.PositionXYZStream(); + } + else + { + m_srcTransGUID = caster->GetTransGUID(); + if (m_srcTransGUID) + m_srcTransOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO()); + else + m_srcPos.Relocate(caster); + } + + if (m_targetMask & TARGET_FLAG_DEST_LOCATION) + { + data.readPackGUID(m_dstTransGUID); + if (m_dstTransGUID) + data >> m_dstTransOffset.PositionXYZStream(); + else + data >> m_dstPos.PositionXYZStream(); + } + else + { + m_dstTransGUID = caster->GetTransGUID(); + if (m_dstTransGUID) + m_dstTransOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO()); + else + m_dstPos.Relocate(caster); + } + + if (m_targetMask & TARGET_FLAG_STRING) + data >> m_strTarget; + + Update(caster); +} + +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) + { + if (m_unitTarget) + data.append(m_unitTarget->GetPackGUID()); + else + data << uint8(0); + } + else if (m_targetMask & TARGET_FLAG_OBJECT) + { + if (m_GOTarget) + data.append(m_GOTarget->GetPackGUID()); + else + data << uint8(0); + } + else if (m_targetMask & (TARGET_FLAG_CORPSE | TARGET_FLAG_PVP_CORPSE)) + data.appendPackGUID(m_CorpseTargetGUID); + else + data << uint8(0); + } + + if (m_targetMask & (TARGET_FLAG_ITEM | TARGET_FLAG_TRADE_ITEM)) + { + if (m_itemTarget) + data.append(m_itemTarget->GetPackGUID()); + else + data << uint8(0); + } + + if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION) + { + data.appendPackGUID(m_srcTransGUID); // relative position guid here - transport for example + if (m_srcTransGUID) + data << m_srcTransOffset.PositionXYZStream(); + else + data << m_srcPos.PositionXYZStream(); + } + + if (m_targetMask & TARGET_FLAG_DEST_LOCATION) + { + data.appendPackGUID(m_dstTransGUID); // relative position guid here - transport for example + if (m_dstTransGUID) + data << m_dstTransOffset.PositionXYZStream(); + else + data << m_dstPos.PositionXYZStream(); + } + + if (m_targetMask & TARGET_FLAG_STRING) + data << m_strTarget; +} + +void SpellCastTargets::SetUnitTarget(Unit* target) { if (!target) return; @@ -101,21 +237,26 @@ void SpellCastTargets::setUnitTarget(Unit* target) m_targetMask |= TARGET_FLAG_UNIT; } -void SpellCastTargets::setSrc(float x, float y, float z) +Position const* SpellCastTargets::GetSrc() const +{ + return &m_srcPos; +} + +void SpellCastTargets::SetSrc(float x, float y, float z) { m_srcPos.Relocate(x, y, z); m_srcTransGUID = 0; m_targetMask |= TARGET_FLAG_SOURCE_LOCATION; } -void SpellCastTargets::setSrc(Position &pos) +void SpellCastTargets::SetSrc(Position const& pos) { m_srcPos.Relocate(pos); m_srcTransGUID = 0; m_targetMask |= TARGET_FLAG_SOURCE_LOCATION; } -void SpellCastTargets::setSrc(WorldObject &wObj) +void SpellCastTargets::SetSrc(WorldObject const& wObj) { uint64 guid = wObj.GetTransGUID(); m_srcTransGUID = guid; @@ -124,7 +265,7 @@ void SpellCastTargets::setSrc(WorldObject &wObj) m_targetMask |= TARGET_FLAG_SOURCE_LOCATION; } -void SpellCastTargets::modSrc(Position &pos) +void SpellCastTargets::ModSrc(Position const& pos) { ASSERT(m_targetMask & TARGET_FLAG_SOURCE_LOCATION); @@ -137,7 +278,12 @@ void SpellCastTargets::modSrc(Position &pos) m_srcPos.Relocate(pos); } -void SpellCastTargets::setDst(float x, float y, float z, float orientation, uint32 mapId) +WorldLocation const* SpellCastTargets::GetDst() const +{ + return &m_dstPos; +} + +void SpellCastTargets::SetDst(float x, float y, float z, float orientation, uint32 mapId) { m_dstPos.Relocate(x, y, z, orientation); m_dstTransGUID = 0; @@ -146,14 +292,14 @@ void SpellCastTargets::setDst(float x, float y, float z, float orientation, uint m_dstPos.m_mapId = mapId; } -void SpellCastTargets::setDst(Position &pos) +void SpellCastTargets::SetDst(Position const& pos) { m_dstPos.Relocate(pos); m_dstTransGUID = 0; m_targetMask |= TARGET_FLAG_DEST_LOCATION; } -void SpellCastTargets::setDst(WorldObject &wObj) +void SpellCastTargets::SetDst(WorldObject const& wObj) { uint64 guid = wObj.GetTransGUID(); m_dstTransGUID = guid; @@ -162,7 +308,7 @@ void SpellCastTargets::setDst(WorldObject &wObj) m_targetMask |= TARGET_FLAG_DEST_LOCATION; } -void SpellCastTargets::setDst(SpellCastTargets &spellTargets) +void SpellCastTargets::SetDst(SpellCastTargets const& spellTargets) { m_dstTransGUID = spellTargets.m_dstTransGUID; m_dstTransOffset.Relocate(spellTargets.m_dstTransOffset); @@ -170,7 +316,7 @@ void SpellCastTargets::setDst(SpellCastTargets &spellTargets) m_targetMask |= TARGET_FLAG_DEST_LOCATION; } -void SpellCastTargets::modDst(Position &pos) +void SpellCastTargets::ModDst(Position const& pos) { ASSERT(m_targetMask & TARGET_FLAG_DEST_LOCATION); @@ -183,14 +329,14 @@ void SpellCastTargets::modDst(Position &pos) m_dstPos.Relocate(pos); } -void SpellCastTargets::setGOTarget(GameObject *target) +void SpellCastTargets::SetGOTarget(GameObject* target) { m_GOTarget = target; m_GOTargetGUID = target->GetGUID(); m_targetMask |= TARGET_FLAG_OBJECT; } -void SpellCastTargets::setItemTarget(Item* item) +void SpellCastTargets::SetItemTarget(Item* item) { if (!item) return; @@ -201,7 +347,7 @@ void SpellCastTargets::setItemTarget(Item* item) m_targetMask |= TARGET_FLAG_ITEM; } -void SpellCastTargets::setTradeItemTarget(Player* caster) +void SpellCastTargets::SetTradeItemTarget(Player* caster) { m_itemTargetGUID = uint64(TRADE_SLOT_NONTRADED); m_itemTargetEntry = 0; @@ -210,7 +356,16 @@ void SpellCastTargets::setTradeItemTarget(Player* caster) Update(caster); } -void SpellCastTargets::setCorpseTarget(Corpse* corpse) +void SpellCastTargets::UpdateTradeSlotItem() +{ + if (m_itemTarget && (m_targetMask & TARGET_FLAG_TRADE_ITEM)) + { + m_itemTargetGUID = m_itemTarget->GetGUID(); + m_itemTargetEntry = m_itemTarget->GetEntry(); + } +} + +void SpellCastTargets::SetCorpseTarget(Corpse* corpse) { m_CorpseTargetGUID = corpse->GetGUID(); } @@ -255,7 +410,7 @@ void SpellCastTargets::Update(Unit* caster) } } -void SpellCastTargets::OutDebug() +void SpellCastTargets::OutDebug() const { if (!m_targetMask) sLog->outString("TARGET_FLAG_SELF"); @@ -284,121 +439,6 @@ void SpellCastTargets::OutDebug() sLog->outString("elevation: %f", m_elevation); } -void SpellCastTargets::read (ByteBuffer & data, Unit* caster) -{ - data >> m_targetMask; - - if (m_targetMask == TARGET_FLAG_SELF) - return; - - if (m_targetMask & (TARGET_FLAG_UNIT | TARGET_FLAG_UNK17)) - data.readPackGUID(m_unitTargetGUID); - - if (m_targetMask & (TARGET_FLAG_OBJECT)) - 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)) - data.readPackGUID(m_CorpseTargetGUID); - - if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION) - { - data.readPackGUID(m_srcTransGUID); - if (m_srcTransGUID) - data >> m_srcTransOffset.PositionXYZStream(); - else - data >> m_srcPos.PositionXYZStream(); - } - else - { - m_srcTransGUID = caster->GetTransGUID(); - if (m_srcTransGUID) - m_srcTransOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO()); - else - m_srcPos.Relocate(caster); - } - - if (m_targetMask & TARGET_FLAG_DEST_LOCATION) - { - data.readPackGUID(m_dstTransGUID); - if (m_dstTransGUID) - data >> m_dstTransOffset.PositionXYZStream(); - else - data >> m_dstPos.PositionXYZStream(); - } - else - { - m_dstTransGUID = caster->GetTransGUID(); - if (m_dstTransGUID) - m_dstTransOffset.Relocate(caster->GetTransOffsetX(), caster->GetTransOffsetY(), caster->GetTransOffsetZ(), caster->GetTransOffsetO()); - else - m_dstPos.Relocate(caster); - } - - if (m_targetMask & TARGET_FLAG_STRING) - data >> m_strTarget; - - Update(caster); -} - -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) - { - if (m_unitTarget) - data.append(m_unitTarget->GetPackGUID()); - else - data << uint8(0); - } - else if (m_targetMask & TARGET_FLAG_OBJECT) - { - if (m_GOTarget) - data.append(m_GOTarget->GetPackGUID()); - else - data << uint8(0); - } - else if (m_targetMask & (TARGET_FLAG_CORPSE | TARGET_FLAG_PVP_CORPSE)) - data.appendPackGUID(m_CorpseTargetGUID); - else - data << uint8(0); - } - - if (m_targetMask & (TARGET_FLAG_ITEM | TARGET_FLAG_TRADE_ITEM)) - { - if (m_itemTarget) - data.append(m_itemTarget->GetPackGUID()); - else - data << uint8(0); - } - - if (m_targetMask & TARGET_FLAG_SOURCE_LOCATION) - { - data.appendPackGUID(m_srcTransGUID); // relative position guid here - transport for example - if (m_srcTransGUID) - data << m_srcTransOffset.PositionXYZStream(); - else - data << m_srcPos.PositionXYZStream(); - } - - if (m_targetMask & TARGET_FLAG_DEST_LOCATION) - { - data.appendPackGUID(m_dstTransGUID); // relative position guid here - transport for example - if (m_dstTransGUID) - data << m_dstTransOffset.PositionXYZStream(); - else - data << m_dstPos.PositionXYZStream(); - } - - if (m_targetMask & TARGET_FLAG_STRING) - data << m_strTarget; -} - Spell::Spell(Unit* Caster, SpellEntry const *info, bool triggered, uint64 originalCasterGUID, bool skipCheck): m_spellInfo(sSpellMgr->GetSpellForDifficultyFromSpell(info, Caster)), m_caster(Caster), m_spellValue(new SpellValue(m_spellInfo)) @@ -593,8 +633,8 @@ void Spell::SelectSpellTargets() if (effectTargetType == SPELL_REQUIRE_CASTER) AddUnitTarget(m_caster, i); else if (effectTargetType == SPELL_REQUIRE_ITEM) - if (m_targets.getItemTarget()) - AddItemTarget(m_targets.getItemTarget(), i); + if (m_targets.GetItemTarget()) + AddItemTarget(m_targets.GetItemTarget(), i); continue; } @@ -632,7 +672,7 @@ void Spell::SelectSpellTargets() AddUnitTarget((Unit*)result, i); break; case TYPEID_CORPSE: - m_targets.setCorpseTarget((Corpse*)result); + m_targets.SetCorpseTarget((Corpse*)result); if (Player* owner = ObjectAccessor::FindPlayer(((Corpse*)result)->GetOwnerGUID())) AddUnitTarget(owner, i); break; @@ -651,8 +691,8 @@ void Spell::SelectSpellTargets() break; } default: - if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); + if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); else AddUnitTarget(m_caster, i); break; @@ -670,8 +710,8 @@ void Spell::SelectSpellTargets() case SPELL_EFFECT_REPUTATION: case SPELL_EFFECT_LEARN_SPELL: case SPELL_EFFECT_SEND_TAXI: - if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); + if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); // Triggered spells have additional spell targets - cast them even if no explicit unit target is given (required for spell 50516 for example) else if (m_spellInfo->Effect[i] == SPELL_EFFECT_TRIGGER_SPELL) AddUnitTarget(m_caster, i); @@ -685,11 +725,11 @@ void Spell::SelectSpellTargets() } break; case SPELL_EFFECT_RESURRECT_NEW: - if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); - if (m_targets.getCorpseTargetGUID()) + if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); + if (m_targets.GetCorpseTargetGUID()) { - Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.getCorpseTargetGUID()); + Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.GetCorpseTargetGUID()); if (corpse) { Player* owner = ObjectAccessor::FindPlayer(corpse->GetOwnerGUID()); @@ -719,8 +759,8 @@ void Spell::SelectSpellTargets() AddUnitTarget(m_caster, i); break; default: // apply to target in other case - if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); + if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); break; } break; @@ -730,11 +770,11 @@ void Spell::SelectSpellTargets() SelectEffectTargets(i, TARGET_UNIT_PARTY_TARGET); break; case SPELL_EFFECT_SKIN_PLAYER_CORPSE: - if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); - else if (m_targets.getCorpseTargetGUID()) + if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); + else if (m_targets.GetCorpseTargetGUID()) { - Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.getCorpseTargetGUID()); + Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.GetCorpseTargetGUID()); if (corpse) { Player* owner = ObjectAccessor::FindPlayer(corpse->GetOwnerGUID()); @@ -795,7 +835,7 @@ void Spell::SelectSpellTargets() } else if (m_spellInfo->speed > 0.0f) { - float dist = m_caster->GetDistance(m_targets.m_dstPos); + float dist = m_caster->GetDistance(*m_targets.GetDst()); m_delayMoment = (uint64) floor(dist / m_spellInfo->speed * 1000.0f); } } @@ -1154,7 +1194,7 @@ void Spell::DoAllEffectOnTarget(TargetInfo *target) } // Do not take combo points on dodge and miss - if (m_needComboPoints && m_targets.getUnitTargetGUID() == target->targetGUID) + if (m_needComboPoints && m_targets.GetUnitTargetGUID() == target->targetGUID) if (missInfo != SPELL_MISS_NONE) { m_needComboPoints = false; @@ -1681,7 +1721,7 @@ struct ChainHealingOrder : public std::binary_function<const Unit*, const Unit*, void Spell::SearchChainTarget(std::list<Unit*> &TagUnitMap, float max_range, uint32 num, SpellTargets TargetType) { - Unit *cur = m_targets.getUnitTarget(); + Unit *cur = m_targets.GetUnitTarget(); if (!cur) return; @@ -1751,20 +1791,20 @@ void Spell::SearchAreaTarget(std::list<Unit*> &TagUnitMap, float radius, SpellNo if (TargetType == SPELL_TARGETS_GO) return; - Position *pos; + Position const* pos; switch(type) { case PUSH_DST_CENTER: CheckDst(); - pos = &m_targets.m_dstPos; + pos = m_targets.GetDst(); break; case PUSH_SRC_CENTER: CheckSrc(); - pos = &m_targets.m_srcPos; + pos = m_targets.GetSrc(); break; case PUSH_CHAIN: { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target) { sLog->outError("SPELL: cannot find unit target for spell ID %u\n", m_spellInfo->Id); @@ -1793,16 +1833,16 @@ void Spell::SearchGOAreaTarget(std::list<GameObject*> &TagGOMap, float radius, S if (TargetType != SPELL_TARGETS_GO) return; - Position *pos; + Position const* pos; switch (type) { case PUSH_DST_CENTER: CheckDst(); - pos = &m_targets.m_dstPos; + pos = m_targets.GetDst(); break; case PUSH_SRC_CENTER: CheckSrc(); - pos = &m_targets.m_srcPos; + pos = m_targets.GetSrc(); break; default: pos = m_caster; @@ -1873,8 +1913,8 @@ WorldObject* Spell::SearchNearbyTarget(float range, SpellTargets TargetType, Spe } break; case SPELL_TARGET_TYPE_CREATURE: - if (m_targets.getUnitTarget() && m_targets.getUnitTarget()->GetEntry() == (*i_spellST)->mConditionValue2) - return m_targets.getUnitTarget(); + if (m_targets.GetUnitTarget() && m_targets.GetUnitTarget()->GetEntry() == (*i_spellST)->mConditionValue2) + return m_targets.GetUnitTarget(); case SPELL_TARGET_TYPE_DEAD: default: if (Creature *cre = m_caster->FindNearestCreature((*i_spellST)->mConditionValue2, range, (*i_spellST)->mConditionValue1 != SPELL_TARGET_TYPE_DEAD)) @@ -1935,7 +1975,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) float dis = (float)rand_norm() * (max_dis - min_dis) + min_dis; float x, y, z; m_caster->GetClosePoint(x, y, z, DEFAULT_WORLD_OBJECT_SIZE, dis); - m_targets.setDst(x, y, z, m_caster->GetOrientation()); + m_targets.SetDst(x, y, z, m_caster->GetOrientation()); break; } case TARGET_UNIT_MASTER: @@ -1977,7 +2017,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) case TARGET_TYPE_UNIT_TARGET: { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target) { sLog->outError("SPELL: no unit target for spell ID %u", m_spellInfo->Id); @@ -1989,14 +2029,14 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) case TARGET_UNIT_TARGET_ENEMY: if (Unit *magnet = m_caster->SelectMagnetTarget(target, m_spellInfo)) if (magnet != target) - m_targets.setUnitTarget(magnet); + m_targets.SetUnitTarget(magnet); pushType = PUSH_CHAIN; break; case TARGET_UNIT_TARGET_ANY: if (!IsPositiveSpell(m_spellInfo->Id)) if (Unit *magnet = m_caster->SelectMagnetTarget(target, m_spellInfo)) if (magnet != target) - m_targets.setUnitTarget(magnet); + m_targets.SetUnitTarget(magnet); pushType = PUSH_CHAIN; break; case TARGET_UNIT_CHAINHEAL: @@ -2054,8 +2094,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) { pushType = PUSH_CHAIN; - if (m_targets.getUnitTarget() != target) - m_targets.setUnitTarget((Unit*)target); + if (m_targets.GetUnitTarget() != target) + m_targets.SetUnitTarget((Unit*)target); } break; @@ -2082,12 +2122,12 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) { if (cur == TARGET_SRC_CASTER) { - m_targets.setSrc(*m_caster); + m_targets.SetSrc(*m_caster); break; } else if (cur == TARGET_DST_CASTER) { - m_targets.setDst(*m_caster); + m_targets.SetDst(*m_caster); break; } @@ -2124,14 +2164,14 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) m_caster->GetFirstCollisionPosition(pos, dist, angle); else m_caster->GetNearPosition(pos, dist, angle); - m_targets.setDst(*m_caster); - m_targets.modDst(pos); + m_targets.SetDst(*m_caster); + m_targets.ModDst(pos); break; } case TARGET_TYPE_DEST_TARGET: //2+8+2 { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target) { sLog->outError("SPELL: no unit target for spell ID %u", m_spellInfo->Id); @@ -2140,7 +2180,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) if (cur == TARGET_DST_TARGET_ENEMY || cur == TARGET_DEST_TARGET_ANY) { - m_targets.setDst(*target); + m_targets.SetDst(*target); break; } @@ -2168,8 +2208,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) Position pos; target->GetNearPosition(pos, dist, angle); - m_targets.setDst(*target); - m_targets.modDst(pos); + m_targets.SetDst(*target); + m_targets.ModDst(pos); break; } @@ -2209,9 +2249,9 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) dist *= (float)rand_norm(); // must has dst, no need to set flag - Position pos = m_targets.m_dstPos; + Position pos = *m_targets.GetDst(); m_caster->MovePosition(pos, dist, angle); - m_targets.modDst(pos); + m_targets.ModDst(pos); break; } @@ -2224,9 +2264,9 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) { //TODO: fix this check if (m_spellInfo->Effect[0] == SPELL_EFFECT_TELEPORT_UNITS || m_spellInfo->Effect[1] == SPELL_EFFECT_TELEPORT_UNITS || m_spellInfo->Effect[2] == SPELL_EFFECT_TELEPORT_UNITS) - m_targets.setDst(st->target_X, st->target_Y, st->target_Z, st->target_Orientation, (int32)st->target_mapId); + m_targets.SetDst(st->target_X, st->target_Y, st->target_Z, st->target_Orientation, (int32)st->target_mapId); else if (st->target_mapId == m_caster->GetMapId()) - m_targets.setDst(st->target_X, st->target_Y, st->target_Z, st->target_Orientation); + m_targets.SetDst(st->target_X, st->target_Y, st->target_Z, st->target_Orientation); } else { @@ -2234,12 +2274,12 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) Unit* target = NULL; if (uint64 guid = m_caster->GetUInt64Value(UNIT_FIELD_TARGET)) target = ObjectAccessor::GetUnit(*m_caster, guid); - m_targets.setDst(target ? *target : *m_caster); + m_targets.SetDst(target ? *target : *m_caster); } break; case TARGET_DST_HOME: if (m_caster->GetTypeId() == TYPEID_PLAYER) - m_targets.setDst(m_caster->ToPlayer()->m_homebindX, m_caster->ToPlayer()->m_homebindY, m_caster->ToPlayer()->m_homebindZ, m_caster->ToPlayer()->GetOrientation(), m_caster->ToPlayer()->m_homebindMapId); + m_targets.SetDst(m_caster->ToPlayer()->m_homebindX, m_caster->ToPlayer()->m_homebindY, m_caster->ToPlayer()->m_homebindZ, m_caster->ToPlayer()->GetOrientation(), m_caster->ToPlayer()->m_homebindMapId); break; case TARGET_DST_NEARBY_ENTRY: { @@ -2247,7 +2287,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) if (modOwner) modOwner->ApplySpellMod(m_spellInfo->Id, SPELLMOD_RANGE, range, this); if (WorldObject *target = SearchNearbyTarget(range, SPELL_TARGETS_ENTRY, SpellEffIndex(i))) - m_targets.setDst(*target); + m_targets.SetDst(*target); break; } } @@ -2266,21 +2306,21 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) { case TARGET_UNIT_CHANNEL_TARGET: // unit target may be no longer avalible - teleported out of map for example - if (Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTargetGUID())) + if (Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.GetUnitTargetGUID())) AddUnitTarget(target, i); else sLog->outError("SPELL: cannot find channel spell target for spell ID %u", m_spellInfo->Id); break; case TARGET_DEST_CHANNEL_TARGET: if (m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.HasDst()) - m_targets.setDst(m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets); - else if (Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.getUnitTargetGUID())) - m_targets.setDst(*target); + m_targets.SetDst(m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets); + else if (Unit* target = Unit::GetUnit(*m_caster, m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->m_targets.GetUnitTargetGUID())) + m_targets.SetDst(*target); else sLog->outError("SPELL: cannot find channel spell destination for spell ID %u", m_spellInfo->Id); break; case TARGET_DEST_CHANNEL_CASTER: - m_targets.setDst(*m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->GetCaster()); + m_targets.SetDst(*m_originalCaster->GetCurrentSpell(CURRENT_CHANNELED_SPELL)->GetCaster()); break; } break; @@ -2291,17 +2331,17 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) switch (cur) { case TARGET_GAMEOBJECT: - if (m_targets.getGOTarget()) - AddGOTarget(m_targets.getGOTarget(), i); + if (m_targets.GetGOTarget()) + AddGOTarget(m_targets.GetGOTarget(), i); break; case TARGET_GAMEOBJECT_ITEM: - if (m_targets.getGOTargetGUID()) - AddGOTarget(m_targets.getGOTarget(), i); - else if (m_targets.getItemTarget()) - AddItemTarget(m_targets.getItemTarget(), i); + if (m_targets.GetGOTargetGUID()) + AddGOTarget(m_targets.GetGOTarget(), i); + else if (m_targets.GetItemTarget()) + AddItemTarget(m_targets.GetItemTarget(), i); break; case TARGET_UNIT_DRIVER: - if (Unit* driver = m_targets.getUnitTarget()) + if (Unit* driver = m_targets.GetUnitTarget()) if (driver->IsOnVehicle(m_caster)) AddUnitTarget(driver, i); break; @@ -2316,7 +2356,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) if (pushType == PUSH_CHAIN) // Chain { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target) { sLog->outError("SPELL: no chain unit target for spell ID %u", m_spellInfo->Id); @@ -2449,7 +2489,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) switch(result->GetTypeId()) { case TYPEID_UNIT: - m_targets.setDst(*result); + m_targets.SetDst(*result); break; default: break; @@ -2464,13 +2504,13 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) case 51327: case 51328: // Search for ghoul if our ghoul or dead body not valid unit target - if (!(m_targets.getUnitTarget() && ((m_targets.getUnitTarget()->GetEntry() == 26125 && m_targets.getUnitTarget()->GetOwnerGUID() == m_caster->GetGUID()) - || (m_targets.getUnitTarget()->getDeathState() == CORPSE - && m_targets.getUnitTarget()->GetDisplayId() == m_targets.getUnitTarget()->GetNativeDisplayId() - && m_targets.getUnitTarget()->GetTypeId() == TYPEID_UNIT - && !m_targets.getUnitTarget()->ToCreature()->isDeadByDefault() - && !(m_targets.getUnitTarget()->GetCreatureTypeMask() & CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL) - && m_targets.getUnitTarget()->GetDisplayId() == m_targets.getUnitTarget()->GetNativeDisplayId())))) + if (!(m_targets.GetUnitTarget() && ((m_targets.GetUnitTarget()->GetEntry() == 26125 && m_targets.GetUnitTarget()->GetOwnerGUID() == m_caster->GetGUID()) + || (m_targets.GetUnitTarget()->getDeathState() == CORPSE + && m_targets.GetUnitTarget()->GetDisplayId() == m_targets.GetUnitTarget()->GetNativeDisplayId() + && m_targets.GetUnitTarget()->GetTypeId() == TYPEID_UNIT + && !m_targets.GetUnitTarget()->ToCreature()->isDeadByDefault() + && !(m_targets.GetUnitTarget()->GetCreatureTypeMask() & CREATURE_TYPEMASK_MECHANICAL_OR_ELEMENTAL) + && m_targets.GetUnitTarget()->GetDisplayId() == m_targets.GetUnitTarget()->GetNativeDisplayId())))) { CleanupTargetList(); @@ -2482,7 +2522,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) { case TYPEID_UNIT: case TYPEID_PLAYER: - m_targets.setUnitTarget((Unit*)result); + m_targets.SetUnitTarget((Unit*)result); break; default: break; @@ -2548,7 +2588,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) m_caster->GetPartyMemberInDist(unitList, radius); //fix me break; case TARGET_UNIT_PARTY_TARGET: - m_targets.getUnitTarget()->GetPartyMemberInDist(unitList, radius); + m_targets.GetUnitTarget()->GetPartyMemberInDist(unitList, radius); break; case TARGET_UNIT_PARTY_CASTER: m_caster->GetPartyMemberInDist(unitList, radius); @@ -2558,8 +2598,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) break; case TARGET_UNIT_CLASS_TARGET: { - Player* targetPlayer = m_targets.getUnitTarget() && m_targets.getUnitTarget()->GetTypeId() == TYPEID_PLAYER - ? (Player*)m_targets.getUnitTarget() : NULL; + Player* targetPlayer = m_targets.GetUnitTarget() && m_targets.GetUnitTarget()->GetTypeId() == TYPEID_PLAYER + ? (Player*)m_targets.GetUnitTarget() : NULL; Group* pGroup = targetPlayer ? targetPlayer->GetGroup() : NULL; if (pGroup) @@ -2573,8 +2613,8 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) AddUnitTarget(Target, i); } } - else if (m_targets.getUnitTarget()) - AddUnitTarget(m_targets.getUnitTarget(), i); + else if (m_targets.GetUnitTarget()) + AddUnitTarget(m_targets.GetUnitTarget(), i); break; } } @@ -2711,7 +2751,7 @@ void Spell::SelectEffectTargets(uint32 i, uint32 cur) maxTargets += (*j)->GetAmount(); if (m_spellInfo->Id == 5246) //Intimidating Shout - unitList.remove(m_targets.getUnitTarget()); + unitList.remove(m_targets.GetUnitTarget()); Trinity::RandomResizeList(unitList, maxTargets); } @@ -2747,7 +2787,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered m_targets = *targets; - if (!m_targets.getUnitTargetGUID() && m_spellInfo->Targets & TARGET_FLAG_UNIT) + if (!m_targets.GetUnitTargetGUID() && m_spellInfo->Targets & TARGET_FLAG_UNIT) { Unit* target = NULL; if (m_caster->GetTypeId() == TYPEID_UNIT) @@ -2756,7 +2796,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered target = ObjectAccessor::GetUnit(*m_caster, m_caster->ToPlayer()->GetSelection()); if (target && IsValidSingleTargetSpell(target)) - m_targets.setUnitTarget(target); + m_targets.SetUnitTarget(target); else { SendCastResult(SPELL_FAILED_BAD_TARGETS); @@ -2778,11 +2818,11 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered } } if (!m_targets.HasSrc() && m_spellInfo->Targets & TARGET_FLAG_SOURCE_LOCATION) - m_targets.setSrc(*m_caster); + m_targets.SetSrc(*m_caster); if (!m_targets.HasDst() && m_spellInfo->Targets & TARGET_FLAG_DEST_LOCATION) { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target) { if (m_caster->GetTypeId() == TYPEID_UNIT) @@ -2792,7 +2832,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered } if (target) - m_targets.setDst(*target); + m_targets.SetDst(*target); else { SendCastResult(SPELL_FAILED_BAD_TARGETS); @@ -2894,7 +2934,7 @@ void Spell::prepare(SpellCastTargets const* targets, AuraEffect const* triggered // set timer base at cast time ReSetTimer(); - sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Spell::prepare: spell id %u source %u caster %d triggered %u mask %u", m_spellInfo->Id, m_caster->GetEntry(), m_originalCaster ? m_originalCaster->GetEntry() : -1, m_IsTriggeredSpell ? 1 : 0, m_targets.getTargetMask()); + sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Spell::prepare: spell id %u source %u caster %d triggered %u mask %u", m_spellInfo->Id, m_caster->GetEntry(), m_originalCaster ? m_originalCaster->GetEntry() : -1, m_IsTriggeredSpell ? 1 : 0, m_targets.GetTargetMask()); //Containers for channeled spells have to be set //TODO:Apply this to all casted spells if needed @@ -2989,7 +3029,7 @@ void Spell::cast(bool skipCheck) // update pointers base at GUIDs to prevent access to non-existed already object UpdatePointers(); - if (Unit* target = m_targets.getUnitTarget()) + if (Unit* target = m_targets.GetUnitTarget()) { // three check: prepare, cast (m_casttime > 0), hit (delayed) if (m_casttime && target->isAlive() && !target->IsFriendlyTo(m_caster) && !m_caster->canSeeOrDetect(target)) @@ -3003,7 +3043,7 @@ void Spell::cast(bool skipCheck) else { // cancel at lost main target unit - if (m_targets.getUnitTargetGUID() && m_targets.getUnitTargetGUID() != m_caster->GetGUID()) + if (m_targets.GetUnitTargetGUID() && m_targets.GetUnitTargetGUID() != m_caster->GetGUID()) { cancel(); return; @@ -3017,8 +3057,8 @@ void Spell::cast(bool skipCheck) SetExecutedCurrently(true); - if (m_caster->GetTypeId() != TYPEID_PLAYER && m_targets.getUnitTarget() && m_targets.getUnitTarget() != m_caster) - m_caster->SetInFront(m_targets.getUnitTarget()); + if (m_caster->GetTypeId() != TYPEID_PLAYER && m_targets.GetUnitTarget() && m_targets.GetUnitTarget() != m_caster) + m_caster->SetInFront(m_targets.GetUnitTarget()); // Should this be done for original caster? if (m_caster->GetTypeId() == TYPEID_PLAYER) @@ -3051,7 +3091,7 @@ void Spell::cast(bool skipCheck) // additional check after cast bar completes (must not be in CheckCast) // if trade not complete then remember it in trade data - if (m_targets.getTargetMask() & TARGET_FLAG_TRADE_ITEM) + if (m_targets.GetTargetMask() & TARGET_FLAG_TRADE_ITEM) { if (m_caster->GetTypeId() == TYPEID_PLAYER) { @@ -3122,7 +3162,7 @@ void Spell::cast(bool skipCheck) // traded items have trade slot instead of guid in m_itemTargetGUID // set to real guid to be sent later to the client - m_targets.updateTradeSlotItem(); + m_targets.UpdateTradeSlotItem(); if (m_caster->GetTypeId() == TYPEID_PLAYER) { @@ -3141,7 +3181,7 @@ void Spell::cast(bool skipCheck) TakePower(); TakeReagents(); // we must remove reagents before HandleEffects to allow place crafted item in same slot } - else if (Item* targetItem = m_targets.getItemTarget()) + else if (Item* targetItem = m_targets.GetItemTarget()) { /// Not own traded item (in trader trade slot) req. reagents including triggered spell case if (targetItem->GetOwnerGUID() != m_caster->GetGUID()) @@ -3221,7 +3261,7 @@ void Spell::cast(bool skipCheck) if (*i < 0) m_caster->RemoveAurasDueToSpell(-(*i)); else - m_caster->CastSpell(m_targets.getUnitTarget() ? m_targets.getUnitTarget() : m_caster, *i, true); + m_caster->CastSpell(m_targets.GetUnitTarget() ? m_targets.GetUnitTarget() : m_caster, *i, true); } } @@ -3386,7 +3426,7 @@ void Spell::_handle_immediate_phase() if (EffectTargetType[m_spellInfo->Effect[j]] == SPELL_REQUIRE_DEST) { if (!m_targets.HasDst()) // FIXME: this will ignore dest set in effect - m_targets.setDst(*m_caster); + m_targets.SetDst(*m_caster); HandleEffects(m_originalCaster, NULL, NULL, j); m_effectMask |= (1<<j); } @@ -3471,7 +3511,7 @@ void Spell::update(uint32 difftime) // update pointers based at it's GUIDs UpdatePointers(); - if (m_targets.getUnitTargetGUID() && !m_targets.getUnitTarget()) + if (m_targets.GetUnitTargetGUID() && !m_targets.GetUnitTarget()) { sLog->outDebug(LOG_FILTER_SPELLS_AURAS, "Spell %u is cancelled due to removal of target.", m_spellInfo->Id); cancel(); @@ -3765,7 +3805,7 @@ void Spell::SendSpellStart() data << uint32(castFlags); // cast flags data << uint32(m_timer); // delay? - m_targets.write(data); + m_targets.Write(data); if (castFlags & CAST_FLAG_POWER_LEFT_SELF) data << uint32(m_caster->GetPower((Powers)m_spellInfo->powerType)); @@ -3835,15 +3875,15 @@ void Spell::SendSpellGo() /* // statement below seems to be wrong - i've seen spells with both unit and dest target // Can't have TARGET_FLAG_UNIT when *_LOCATION is present - it breaks missile visuals - if (m_targets.getTargetMask() & (TARGET_FLAG_SOURCE_LOCATION | TARGET_FLAG_DEST_LOCATION)) - m_targets.setTargetMask(m_targets.getTargetMask() & ~TARGET_FLAG_UNIT); + if (m_targets.GetTargetMask() & (TARGET_FLAG_SOURCE_LOCATION | TARGET_FLAG_DEST_LOCATION)) + m_targets.setTargetMask(m_targets.GetTargetMask() & ~TARGET_FLAG_UNIT); else if (m_targets.getIntTargetFlags() & FLAG_INT_UNIT) - m_targets.setTargetMask(m_targets.getTargetMask() | TARGET_FLAG_UNIT); + m_targets.setTargetMask(m_targets.GetTargetMask() | TARGET_FLAG_UNIT); */ WriteSpellGoTargets(&data); - m_targets.write(data); + m_targets.Write(data); if (castFlags & CAST_FLAG_POWER_LEFT_SELF) data << uint32(m_caster->GetPower((Powers)m_spellInfo->powerType)); @@ -3882,7 +3922,7 @@ void Spell::SendSpellGo() data << uint32(0); } - if (m_targets.getTargetMask() & TARGET_FLAG_DEST_LOCATION) + if (m_targets.GetTargetMask() & TARGET_FLAG_DEST_LOCATION) { data << uint8(0); } @@ -4271,9 +4311,9 @@ void Spell::TakeCastItem() uint32 count = 1; m_caster->ToPlayer()->DestroyItemCount(m_CastItem, count, true); - // prevent crash at access to deleted m_targets.getItemTarget - if (m_CastItem == m_targets.getItemTarget()) - m_targets.setItemTarget(NULL); + // prevent crash at access to deleted m_targets.GetItemTarget + if (m_CastItem == m_targets.GetItemTarget()) + m_targets.SetItemTarget(NULL); m_CastItem = NULL; } @@ -4288,7 +4328,7 @@ void Spell::TakePower() if (m_caster->GetTypeId() == TYPEID_PLAYER) { if (m_spellInfo->powerType == POWER_RAGE || m_spellInfo->powerType == POWER_ENERGY || m_spellInfo->powerType == POWER_RUNE) - if (uint64 targetGUID = m_targets.getUnitTargetGUID()) + if (uint64 targetGUID = m_targets.GetUnitTargetGUID()) for (std::list<TargetInfo>::iterator ihit= m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) if (ihit->targetGUID == targetGUID) { @@ -4488,7 +4528,7 @@ void Spell::TakeReagents() { if (m_IsTriggeredSpell) // reagents used in triggered spell removed by original spell or don't must be removed. { - Item* targetItem = m_targets.getItemTarget(); + Item* targetItem = m_targets.GetItemTarget(); /// Not own traded item (in trader trade slot) req. reagents including triggered spell case if (!(targetItem && targetItem->GetOwnerGUID() != m_caster->GetGUID())) return; @@ -4534,9 +4574,9 @@ void Spell::TakeReagents() } } - // if getItemTarget is also spell reagent - if (m_targets.getItemTargetEntry() == itemid) - m_targets.setItemTarget(NULL); + // if GetItemTarget is also spell reagent + if (m_targets.GetItemTargetEntry() == itemid) + m_targets.SetItemTarget(NULL); p_caster->DestroyItemCount(itemid, itemcount, true); } @@ -4544,10 +4584,10 @@ void Spell::TakeReagents() void Spell::HandleThreatSpells(uint32 spellId) { - if (!m_targets.getUnitTarget() || !spellId) + if (!m_targets.GetUnitTarget() || !spellId) return; - if (!m_targets.getUnitTarget()->CanHaveThreatList()) + if (!m_targets.GetUnitTarget()->CanHaveThreatList()) return; uint16 threat = sSpellMgr->GetSpellThreat(spellId); @@ -4555,7 +4595,7 @@ void Spell::HandleThreatSpells(uint32 spellId) if (!threat) return; - m_targets.getUnitTarget()->AddThreat(m_caster, float(threat)); + m_targets.GetUnitTarget()->AddThreat(m_caster, float(threat)); sLog->outStaticDebug("Spell %u, rank %u, added an additional %i threat", spellId, sSpellMgr->GetSpellRank(spellId), threat); } @@ -4702,10 +4742,10 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_MOVING; } - Unit* target = m_targets.getUnitTarget(); + 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_CASTER)) // TARGET_FLAG_SELF == 0, remember! target = m_caster; if (target) @@ -4779,12 +4819,12 @@ SpellCastResult Spell::CheckCast(bool strict) // Additional check for some spells // 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 && + if (m_targets.GetTargetMask() == TARGET_FLAG_SELF && m_spellInfo->EffectImplicitTargetA[1] == TARGET_UNIT_TARGET_ENEMY) { target = m_caster->GetUnit(*m_caster, m_caster->ToPlayer()->GetSelection()); if (target) - m_targets.setUnitTarget(target); + m_targets.SetUnitTarget(target); else return SPELL_FAILED_BAD_TARGETS; } @@ -4961,7 +5001,7 @@ SpellCastResult Spell::CheckCast(bool strict) { // spell different for friends and enemies // hurt version required facing - if (m_targets.getUnitTarget() && !m_caster->IsFriendlyTo(m_targets.getUnitTarget()) && !m_caster->HasInArc(static_cast<float>(M_PI), m_targets.getUnitTarget())) + if (m_targets.GetUnitTarget() && !m_caster->IsFriendlyTo(m_targets.GetUnitTarget()) && !m_caster->HasInArc(static_cast<float>(M_PI), m_targets.GetUnitTarget())) return SPELL_FAILED_UNIT_NOT_INFRONT; } else if (m_spellInfo->SpellIconID == 33 && m_spellInfo->SpellFamilyName == SPELLFAMILY_SHAMAN && m_spellInfo->SpellFamilyFlags[0] & SPELLFAMILYFLAG_SHAMAN_FIRE_NOVA) @@ -4971,13 +5011,13 @@ SpellCastResult Spell::CheckCast(bool strict) } else if (m_spellInfo->SpellFamilyName == SPELLFAMILY_DEATHKNIGHT && m_spellInfo->SpellFamilyFlags[0] == 0x2000) // Death Coil (DeathKnight) { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target || (target->IsFriendlyTo(m_caster) && target->GetCreatureType() != CREATURE_TYPE_UNDEAD)) return SPELL_FAILED_BAD_TARGETS; } else if (m_spellInfo->Id == 19938) // Awaken Peon { - Unit *unit = m_targets.getUnitTarget(); + Unit *unit = m_targets.GetUnitTarget(); if (!unit || !unit->HasAura(17743)) return SPELL_FAILED_BAD_TARGETS; } @@ -4991,7 +5031,7 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_DONT_REPORT; - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target || !target->IsFriendlyTo(m_caster) || target->getAttackers().empty()) return SPELL_FAILED_BAD_TARGETS; @@ -5053,7 +5093,7 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - Item* foodItem = m_targets.getItemTarget(); + Item* foodItem = m_targets.GetItemTarget(); if (!foodItem) return SPELL_FAILED_BAD_TARGETS; @@ -5078,7 +5118,7 @@ SpellCastResult Spell::CheckCast(bool strict) { // Can be area effect, Check only for players and not check if target - caster (spell can have multiply drain/burn effects) if (m_caster->GetTypeId() == TYPEID_PLAYER) - if (Unit* target = m_targets.getUnitTarget()) + if (Unit* target = m_targets.GetUnitTarget()) if (target != m_caster && target->getPowerType() != Powers(m_spellInfo->EffectMiscValue[i])) return SPELL_FAILED_BAD_TARGETS; break; @@ -5097,20 +5137,20 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_SKINNING: { - if (m_caster->GetTypeId() != TYPEID_PLAYER || !m_targets.getUnitTarget() || m_targets.getUnitTarget()->GetTypeId() != TYPEID_UNIT) + if (m_caster->GetTypeId() != TYPEID_PLAYER || !m_targets.GetUnitTarget() || m_targets.GetUnitTarget()->GetTypeId() != TYPEID_UNIT) return SPELL_FAILED_BAD_TARGETS; - if (!(m_targets.getUnitTarget()->GetUInt32Value(UNIT_FIELD_FLAGS) & UNIT_FLAG_SKINNABLE)) + if (!(m_targets.GetUnitTarget()->GetUInt32Value(UNIT_FIELD_FLAGS) & UNIT_FLAG_SKINNABLE)) return SPELL_FAILED_TARGET_UNSKINNABLE; - Creature* creature = m_targets.getUnitTarget()->ToCreature(); + Creature* creature = m_targets.GetUnitTarget()->ToCreature(); if (creature->GetCreatureType() != CREATURE_TYPE_CRITTER && !creature->loot.isLooted()) return SPELL_FAILED_TARGET_NOT_LOOTED; uint32 skill = creature->GetCreatureInfo()->GetRequiredLootSkill(); int32 skillValue = m_caster->ToPlayer()->GetSkillValue(skill); - int32 TargetLevel = m_targets.getUnitTarget()->getLevel(); + int32 TargetLevel = m_targets.GetUnitTarget()->getLevel(); int32 ReqValue = (skillValue < 100 ? (TargetLevel-10) * 10 : TargetLevel * 5); if (ReqValue > skillValue) return SPELL_FAILED_LOW_CASTLEVEL; @@ -5131,39 +5171,39 @@ SpellCastResult Spell::CheckCast(bool strict) 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->EffectImplicitTargetA[i] == TARGET_GAMEOBJECT && !m_targets.getGOTarget())) + || (m_spellInfo->EffectImplicitTargetA[i] == TARGET_GAMEOBJECT && !m_targets.GetGOTarget())) return SPELL_FAILED_BAD_TARGETS; Item *pTempItem = NULL; - if (m_targets.getTargetMask() & TARGET_FLAG_TRADE_ITEM) + if (m_targets.GetTargetMask() & TARGET_FLAG_TRADE_ITEM) { if (TradeData* pTrade = m_caster->ToPlayer()->GetTradeData()) - pTempItem = pTrade->GetTraderData()->GetItem(TradeSlots(m_targets.getItemTargetGUID())); + pTempItem = pTrade->GetTraderData()->GetItem(TradeSlots(m_targets.GetItemTargetGUID())); } - else if (m_targets.getTargetMask() & TARGET_FLAG_ITEM) - pTempItem = m_caster->ToPlayer()->GetItemByGuid(m_targets.getItemTargetGUID()); + else if (m_targets.GetTargetMask() & TARGET_FLAG_ITEM) + 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->EffectImplicitTargetA[i] == TARGET_GAMEOBJECT_ITEM && - !m_targets.getGOTarget() && + !m_targets.GetGOTarget() && (!pTempItem || !pTempItem->GetTemplate()->LockID || !pTempItem->IsLocked())) return SPELL_FAILED_BAD_TARGETS; - if (m_spellInfo->Id != 1842 || (m_targets.getGOTarget() && - m_targets.getGOTarget()->GetGOInfo()->type != GAMEOBJECT_TYPE_TRAP)) + if (m_spellInfo->Id != 1842 || (m_targets.GetGOTarget() && + m_targets.GetGOTarget()->GetGOInfo()->type != GAMEOBJECT_TYPE_TRAP)) if (m_caster->ToPlayer()->InBattleground() && // In Battleground players can use only flags and banners !m_caster->ToPlayer()->CanUseBattlegroundObject()) return SPELL_FAILED_TRY_AGAIN; // get the lock entry uint32 lockId = 0; - if (GameObject* go = m_targets.getGOTarget()) + if (GameObject* go = m_targets.GetGOTarget()) { lockId = go->GetGOInfo()->GetLockId(); if (!lockId) return SPELL_FAILED_BAD_TARGETS; } - else if (Item* itm = m_targets.getItemTarget()) + else if (Item* itm = m_targets.GetItemTarget()) lockId = itm->GetTemplate()->LockID; SkillType skillId = SKILL_NONE; @@ -5218,11 +5258,11 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_CREATE_TAMED_PET: { - if (m_targets.getUnitTarget()) + if (m_targets.GetUnitTarget()) { - if (m_targets.getUnitTarget()->GetTypeId() != TYPEID_PLAYER) + if (m_targets.GetUnitTarget()->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - if (m_targets.getUnitTarget()->GetPetGUID()) + if (m_targets.GetUnitTarget()->GetPetGUID()) return SPELL_FAILED_ALREADY_HAVE_SUMMON; } break; @@ -5288,7 +5328,7 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_EFFECT_STEAL_BENEFICIAL_BUFF: { - if (m_targets.getUnitTarget() == m_caster) + if (m_targets.GetUnitTarget() == m_caster) return SPELL_FAILED_BAD_TARGETS; break; } @@ -5298,7 +5338,7 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetTypeId() == TYPEID_PLAYER && m_spellInfo->Id == 781 && !m_caster->isInCombat()) return SPELL_FAILED_CANT_DO_THAT_RIGHT_NOW; - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (m_caster == target && m_caster->HasUnitState(UNIT_STAT_ROOT)) { if (m_caster->GetTypeId() == TYPEID_PLAYER) @@ -5332,7 +5372,7 @@ SpellCastResult Spell::CheckCast(bool strict) // Tag Murloc case 30877: { - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); if (!target || target->GetEntry() != 17326) return SPELL_FAILED_BAD_TARGETS; break; @@ -5346,10 +5386,10 @@ SpellCastResult Spell::CheckCast(bool strict) if (m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - if (!m_targets.getUnitTarget() || m_targets.getUnitTarget()->GetTypeId() == TYPEID_PLAYER) + if (!m_targets.GetUnitTarget() || m_targets.GetUnitTarget()->GetTypeId() == TYPEID_PLAYER) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; - Creature* target = m_targets.getUnitTarget()->ToCreature(); + Creature* target = m_targets.GetUnitTarget()->ToCreature(); if (target->getLevel() > m_caster->getLevel()) return SPELL_FAILED_HIGHLEVEL; @@ -5410,7 +5450,7 @@ SpellCastResult Spell::CheckCast(bool strict) return SPELL_FAILED_ALREADY_HAVE_CHARM; } - if (Unit* target = m_targets.getUnitTarget()) + if (Unit* target = m_targets.GetUnitTarget()) { if (target->GetTypeId() == TYPEID_UNIT && target->ToCreature()->IsVehicle()) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; @@ -5448,11 +5488,11 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_AURA_RANGED_ATTACK_POWER_ATTACKER_BONUS: { - if (!m_targets.getUnitTarget()) + if (!m_targets.GetUnitTarget()) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; // can be casted at non-friendly unit or own pet/charm - if (m_caster->IsFriendlyTo(m_targets.getUnitTarget())) + if (m_caster->IsFriendlyTo(m_targets.GetUnitTarget())) return SPELL_FAILED_TARGET_FRIENDLY; break; @@ -5472,13 +5512,13 @@ SpellCastResult Spell::CheckCast(bool strict) } case SPELL_AURA_PERIODIC_MANA_LEECH: { - if (!m_targets.getUnitTarget()) + if (!m_targets.GetUnitTarget()) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; if (m_caster->GetTypeId() != TYPEID_PLAYER || m_CastItem) break; - if (m_targets.getUnitTarget()->getPowerType() != POWER_MANA) + if (m_targets.GetUnitTarget()->getPowerType() != POWER_MANA) return SPELL_FAILED_BAD_TARGETS; break; @@ -5489,7 +5529,7 @@ SpellCastResult Spell::CheckCast(bool strict) } // check trade slot case (last, for allow catch any another cast problems) - if (m_targets.getTargetMask() & TARGET_FLAG_TRADE_ITEM) + if (m_targets.GetTargetMask() & TARGET_FLAG_TRADE_ITEM) { if (m_CastItem) return SPELL_FAILED_ITEM_ENCHANT_TRADE_WINDOW; @@ -5502,7 +5542,7 @@ SpellCastResult Spell::CheckCast(bool strict) if (!my_trade) return SPELL_FAILED_NOT_TRADING; - TradeSlots slot = TradeSlots(m_targets.getItemTargetGUID()); + TradeSlots slot = TradeSlots(m_targets.GetItemTargetGUID()); if (slot != TRADE_SLOT_NONTRADED) return SPELL_FAILED_BAD_TARGETS; @@ -5536,8 +5576,8 @@ SpellCastResult Spell::CheckPetCast(Unit* target) if (!owner->isAlive()) return SPELL_FAILED_CASTER_DEAD; - if (!target && m_targets.getUnitTarget()) - target = m_targets.getUnitTarget(); + if (!target && m_targets.GetUnitTarget()) + target = m_targets.GetUnitTarget(); for (uint32 i = 0; i < MAX_SPELL_EFFECTS; ++i) { @@ -5546,12 +5586,12 @@ SpellCastResult Spell::CheckPetCast(Unit* target) { if (!target) return SPELL_FAILED_BAD_IMPLICIT_TARGETS; - m_targets.setUnitTarget(target); + m_targets.SetUnitTarget(target); break; } } - Unit* _target = m_targets.getUnitTarget(); + Unit* _target = m_targets.GetUnitTarget(); if (_target) //for target dead/target not valid { @@ -5726,7 +5766,7 @@ SpellCastResult Spell::CheckRange(bool strict) SpellRangeEntry const* srange = sSpellRangeStore.LookupEntry(m_spellInfo->rangeIndex); - Unit* target = m_targets.getUnitTarget(); + Unit* target = m_targets.GetUnitTarget(); float max_range = (float)m_caster->GetSpellMaxRangeForTarget(target, srange); float min_range = (float)m_caster->GetSpellMinRangeForTarget(target, srange); uint32 range_type = GetSpellRangeType(srange); @@ -5760,9 +5800,9 @@ SpellCastResult Spell::CheckRange(bool strict) if (m_targets.HasDst() && !m_targets.HasTraj()) { - if (!m_caster->IsWithinDist3d(&m_targets.m_dstPos, max_range)) + if (!m_caster->IsWithinDist3d(m_targets.GetDst(), max_range)) return SPELL_FAILED_OUT_OF_RANGE; - if (min_range && m_caster->IsWithinDist3d(&m_targets.m_dstPos, min_range)) + if (min_range && m_caster->IsWithinDist3d(m_targets.GetDst(), min_range)) return SPELL_FAILED_TOO_CLOSE; } @@ -5833,19 +5873,19 @@ SpellCastResult Spell::CheckItems() return SPELL_FAILED_NO_CHARGES_REMAIN; // consumable cast item checks - if (proto->Class == ITEM_CLASS_CONSUMABLE && m_targets.getUnitTarget()) + if (proto->Class == ITEM_CLASS_CONSUMABLE && m_targets.GetUnitTarget()) { // such items should only fail if there is no suitable effect at all - see Rejuvenation Potions for example SpellCastResult failReason = SPELL_CAST_OK; 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 + // 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->EffectImplicitTargetA[i] == TARGET_UNIT_PET) continue; if (m_spellInfo->Effect[i] == SPELL_EFFECT_HEAL) { - if (m_targets.getUnitTarget()->IsFullHealth()) + if (m_targets.GetUnitTarget()->IsFullHealth()) { failReason = SPELL_FAILED_ALREADY_AT_FULL_HEALTH; continue; @@ -5867,7 +5907,7 @@ SpellCastResult Spell::CheckItems() } Powers power = Powers(m_spellInfo->EffectMiscValue[i]); - if (m_targets.getUnitTarget()->GetPower(power) == m_targets.getUnitTarget()->GetMaxPower(power)) + if (m_targets.GetUnitTarget()->GetPower(power) == m_targets.GetUnitTarget()->GetMaxPower(power)) { failReason = SPELL_FAILED_ALREADY_AT_FULL_POWER; continue; @@ -5885,15 +5925,15 @@ SpellCastResult Spell::CheckItems() } // check target item - if (m_targets.getItemTargetGUID()) + if (m_targets.GetItemTargetGUID()) { if (m_caster->GetTypeId() != TYPEID_PLAYER) return SPELL_FAILED_BAD_TARGETS; - if (!m_targets.getItemTarget()) + if (!m_targets.GetItemTarget()) return SPELL_FAILED_ITEM_GONE; - if (!m_targets.getItemTarget()->IsFitToSpellRequirements(m_spellInfo)) + if (!m_targets.GetItemTarget()->IsFitToSpellRequirements(m_spellInfo)) return SPELL_FAILED_EQUIPPED_ITEM_CLASS; } // if not item target then required item must be equipped @@ -5930,7 +5970,7 @@ SpellCastResult Spell::CheckItems() bool checkReagents = !m_IsTriggeredSpell && !p_caster->CanNoReagentCast(m_spellInfo); // Not own traded item (in trader trade slot) requires reagents even if triggered spell if (!checkReagents) - if (Item* targetItem = m_targets.getItemTarget()) + if (Item* targetItem = m_targets.GetItemTarget()) if (targetItem->GetOwnerGUID() != m_caster->GetGUID()) checkReagents = true; @@ -6039,11 +6079,11 @@ SpellCastResult Spell::CheckItems() break; } case SPELL_EFFECT_ENCHANT_ITEM: - if (m_spellInfo->EffectItemType[i] && m_targets.getItemTarget() - && (m_targets.getItemTarget()->IsWeaponVellum() || m_targets.getItemTarget()->IsArmorVellum())) + if (m_spellInfo->EffectItemType[i] && m_targets.GetItemTarget() + && (m_targets.GetItemTarget()->IsWeaponVellum() || m_targets.GetItemTarget()->IsArmorVellum())) { // cannot enchant vellum for other player - if (m_targets.getItemTarget()->GetOwner() != m_caster) + if (m_targets.GetItemTarget()->GetOwner() != m_caster) return SPELL_FAILED_NOT_TRADEABLE; // do not allow to enchant vellum from scroll made by vellum-prevent exploit if (m_CastItem && m_CastItem->GetTemplate()->Flags & ITEM_PROTO_FLAG_TRIGGERED_CAST) @@ -6058,7 +6098,7 @@ SpellCastResult Spell::CheckItems() } case SPELL_EFFECT_ENCHANT_ITEM_PRISMATIC: { - Item* targetItem = m_targets.getItemTarget(); + Item* targetItem = m_targets.GetItemTarget(); if (!targetItem) return SPELL_FAILED_ITEM_NOT_FOUND; @@ -6097,7 +6137,7 @@ SpellCastResult Spell::CheckItems() } case SPELL_EFFECT_ENCHANT_ITEM_TEMPORARY: { - Item *item = m_targets.getItemTarget(); + Item *item = m_targets.GetItemTarget(); if (!item) return SPELL_FAILED_ITEM_NOT_FOUND; // Not allow enchant in trade slot for some enchant type @@ -6117,14 +6157,14 @@ SpellCastResult Spell::CheckItems() break; case SPELL_EFFECT_DISENCHANT: { - if (!m_targets.getItemTarget()) + if (!m_targets.GetItemTarget()) return SPELL_FAILED_CANT_BE_DISENCHANTED; // prevent disenchanting in trade slot - if (m_targets.getItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) + if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) return SPELL_FAILED_CANT_BE_DISENCHANTED; - ItemTemplate const* itemProto = m_targets.getItemTarget()->GetTemplate(); + ItemTemplate const* itemProto = m_targets.GetItemTarget()->GetTemplate(); if (!itemProto) return SPELL_FAILED_CANT_BE_DISENCHANTED; @@ -6145,46 +6185,46 @@ SpellCastResult Spell::CheckItems() } case SPELL_EFFECT_PROSPECTING: { - if (!m_targets.getItemTarget()) + if (!m_targets.GetItemTarget()) return SPELL_FAILED_CANT_BE_PROSPECTED; //ensure item is a prospectable ore - if (!(m_targets.getItemTarget()->GetTemplate()->Flags & ITEM_PROTO_FLAG_PROSPECTABLE)) + if (!(m_targets.GetItemTarget()->GetTemplate()->Flags & ITEM_PROTO_FLAG_PROSPECTABLE)) return SPELL_FAILED_CANT_BE_PROSPECTED; //prevent prospecting in trade slot - if (m_targets.getItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) + if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) return SPELL_FAILED_CANT_BE_PROSPECTED; //Check for enough skill in jewelcrafting - uint32 item_prospectingskilllevel = m_targets.getItemTarget()->GetTemplate()->RequiredSkillRank; + uint32 item_prospectingskilllevel = m_targets.GetItemTarget()->GetTemplate()->RequiredSkillRank; if (item_prospectingskilllevel >p_caster->GetSkillValue(SKILL_JEWELCRAFTING)) return SPELL_FAILED_LOW_CASTLEVEL; //make sure the player has the required ores in inventory - if (m_targets.getItemTarget()->GetCount() < 5) + if (m_targets.GetItemTarget()->GetCount() < 5) return SPELL_FAILED_NEED_MORE_ITEMS; - if (!LootTemplates_Prospecting.HaveLootFor(m_targets.getItemTargetEntry())) + if (!LootTemplates_Prospecting.HaveLootFor(m_targets.GetItemTargetEntry())) return SPELL_FAILED_CANT_BE_PROSPECTED; break; } case SPELL_EFFECT_MILLING: { - if (!m_targets.getItemTarget()) + if (!m_targets.GetItemTarget()) return SPELL_FAILED_CANT_BE_MILLED; //ensure item is a millable herb - if (!(m_targets.getItemTarget()->GetTemplate()->Flags & ITEM_PROTO_FLAG_MILLABLE)) + if (!(m_targets.GetItemTarget()->GetTemplate()->Flags & ITEM_PROTO_FLAG_MILLABLE)) return SPELL_FAILED_CANT_BE_MILLED; //prevent milling in trade slot - if (m_targets.getItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) + if (m_targets.GetItemTarget()->GetOwnerGUID() != m_caster->GetGUID()) return SPELL_FAILED_CANT_BE_MILLED; //Check for enough skill in inscription - uint32 item_millingskilllevel = m_targets.getItemTarget()->GetTemplate()->RequiredSkillRank; + uint32 item_millingskilllevel = m_targets.GetItemTarget()->GetTemplate()->RequiredSkillRank; if (item_millingskilllevel >p_caster->GetSkillValue(SKILL_INSCRIPTION)) return SPELL_FAILED_LOW_CASTLEVEL; //make sure the player has the required herbs in inventory - if (m_targets.getItemTarget()->GetCount() < 5) + if (m_targets.GetItemTarget()->GetCount() < 5) return SPELL_FAILED_NEED_MORE_ITEMS; - if (!LootTemplates_Milling.HaveLootFor(m_targets.getItemTargetEntry())) + if (!LootTemplates_Milling.HaveLootFor(m_targets.GetItemTargetEntry())) return SPELL_FAILED_CANT_BE_MILLED; break; @@ -6534,10 +6574,10 @@ bool Spell::CheckTarget(Unit* target, uint32 eff) // player far away, maybe his corpse near? if (target != m_caster && !target->IsWithinLOSInMap(m_caster)) { - if (!m_targets.getCorpseTargetGUID()) + if (!m_targets.GetCorpseTargetGUID()) return false; - Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.getCorpseTargetGUID()); + Corpse *corpse = ObjectAccessor::GetCorpse(*m_caster, m_targets.GetCorpseTargetGUID()); if (!corpse) return false; @@ -6991,7 +7031,7 @@ void Spell::SelectTrajTargets() if (!dist2d) return; - float dz = m_targets.m_dstPos.m_positionZ - m_targets.m_srcPos.m_positionZ; + float dz = m_targets.GetDst()->m_positionZ - m_targets.GetSrc()->m_positionZ; UnitList unitList; SearchAreaTarget(unitList, dist2d, PUSH_IN_THIN_LINE, SPELL_TARGETS_ANY); @@ -7000,7 +7040,7 @@ void Spell::SelectTrajTargets() unitList.sort(Trinity::ObjectDistanceOrderPred(m_caster)); - float b = tangent(m_targets.m_elevation); + float b = tangent(m_targets.GetElevation()); float a = (dz - dist2d * b) / (dist2d * dist2d); if (a > -0.0001f) a = 0; DEBUG_TRAJ(sLog->outError("Spell::SelectTrajTargets: a %f b %f", a, b);) @@ -7015,8 +7055,8 @@ void Spell::SelectTrajTargets() const float size = std::max((*itr)->GetObjectSize() * 0.7f, 1.0f); // 1/sqrt(3) // TODO: all calculation should be based on src instead of m_caster - const float objDist2d = m_targets.m_srcPos.GetExactDist2d(*itr) * cos(m_targets.m_srcPos.GetRelativeAngle(*itr)); - const float dz = (*itr)->GetPositionZ() - m_targets.m_srcPos.m_positionZ; + const float objDist2d = m_targets.GetSrc()->GetExactDist2d(*itr) * cos(m_targets.GetSrc()->GetRelativeAngle(*itr)); + const float dz = (*itr)->GetPositionZ() - m_targets.GetSrc()->m_positionZ; DEBUG_TRAJ(sLog->outError("Spell::SelectTrajTargets: check %u, dist between %f %f, height between %f %f.", (*itr)->GetEntry(), objDist2d - size, objDist2d + size, dz - size, dz + size);) @@ -7076,11 +7116,11 @@ void Spell::SelectTrajTargets() } } - if (m_targets.m_srcPos.GetExactDist2d(&m_targets.m_dstPos) > bestDist) + if (m_targets.GetSrc()->GetExactDist2d(m_targets.GetDst()) > bestDist) { - float x = m_targets.m_srcPos.m_positionX + cos(m_caster->GetOrientation()) * bestDist; - float y = m_targets.m_srcPos.m_positionY + sin(m_caster->GetOrientation()) * bestDist; - float z = m_targets.m_srcPos.m_positionZ + bestDist * (a * bestDist + b); + float x = m_targets.GetSrc()->m_positionX + cos(m_caster->GetOrientation()) * bestDist; + float y = m_targets.GetSrc()->m_positionY + sin(m_caster->GetOrientation()) * bestDist; + float z = m_targets.GetSrc()->m_positionZ + bestDist * (a * bestDist + b); if (itr != unitList.end()) { @@ -7102,7 +7142,7 @@ void Spell::SelectTrajTargets() Position trajDst; trajDst.Relocate(x, y, z, m_caster->GetOrientation()); - m_targets.modDst(trajDst); + m_targets.ModDst(trajDst); } } |