diff options
author | treeston <treeston.mmoc@gmail.com> | 2016-05-11 18:29:02 +0200 |
---|---|---|
committer | joschiwald <joschiwald.trinity@gmail.com> | 2017-02-11 21:37:42 +0100 |
commit | a0d886020d66c626182724d4340566c0639cb33c (patch) | |
tree | 8afcb29beff2382f24fbcd52ade85b43df9e0a34 | |
parent | 3b67401f6a9be45b3b09bd95ebaaad8204a56b72 (diff) |
Core/Spells: Check TRIGGERED_DONT_REPORT_CAST_ERROR flag in SendCastResult rather than CheckCast.
Fixes and closes #16836.
(cherry picked from commit 4b15369378c24784de46fbf4f9591efd1015be36)
# Conflicts:
# src/server/game/Spells/Spell.cpp
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 6649dd3f2b6..45d681ac71a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3886,6 +3886,9 @@ void Spell::SendCastResult(SpellCastResult result) if (m_caster->ToPlayer()->GetSession()->PlayerLoading()) // don't send cast results at loading time return; + if (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) + result = SPELL_FAILED_DONT_REPORT; + WorldPackets::Spells::CastFailed castFailed; castFailed.SpellXSpellVisualID = m_SpellVisual; FillSpellCastFailedArgs(castFailed, m_castId, m_spellInfo, result, m_customError, m_misc.Raw.Data, m_caster->ToPlayer()); @@ -3901,6 +3904,9 @@ void Spell::SendPetCastResult(SpellCastResult result) if (!owner || owner->GetTypeId() != TYPEID_PLAYER) return; + if (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) + result = SPELL_FAILED_DONT_REPORT; + WorldPackets::Spells::PetCastFailed petCastFailed; FillSpellCastFailedArgs(petCastFailed, m_castId, m_spellInfo, result, SPELL_CUSTOM_ERROR_NONE, m_misc.Raw.Data, owner->ToPlayer()); owner->ToPlayer()->SendDirectMessage(petCastFailed.Write()); @@ -4903,9 +4909,6 @@ SpellCastResult Spell::CheckCast(bool strict) return SpellCastResult(condInfo.mLastFailedCondition->ErrorType); } - if (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) - return SPELL_FAILED_DONT_REPORT; - if (!condInfo.mLastFailedCondition || !condInfo.mLastFailedCondition->ConditionTarget) return SPELL_FAILED_CASTER_AURASTATE; return SPELL_FAILED_BAD_TARGETS; @@ -5642,7 +5645,7 @@ SpellCastResult Spell::CheckCast(bool strict) Battlefield* Bf = sBattlefieldMgr->GetBattlefieldToZoneId(m_originalCaster->GetZoneId()); if (AreaTableEntry const* area = sAreaTableStore.LookupEntry(m_originalCaster->GetAreaId())) if (area->Flags[0] & AREA_FLAG_NO_FLY_ZONE || (Bf && !Bf->CanFlyIn())) - return (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_NOT_HERE; + return SPELL_FAILED_NOT_HERE; } break; } @@ -6038,23 +6041,23 @@ SpellCastResult Spell::CheckRange(bool strict) if (target && target != m_caster) { if (m_caster->GetExactDistSq(target) > maxRange) - return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_OUT_OF_RANGE; if (minRange > 0.0f && m_caster->GetExactDistSq(target) < minRange) - return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_OUT_OF_RANGE; if (m_caster->GetTypeId() == TYPEID_PLAYER && (((m_spellInfo->FacingCasterFlags & SPELL_FACING_FLAG_INFRONT) && !m_caster->HasInArc(static_cast<float>(M_PI), target)) && !m_caster->IsWithinBoundaryRadius(target))) - return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_UNIT_NOT_INFRONT : SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_UNIT_NOT_INFRONT; } if (m_targets.HasDst() && !m_targets.HasTraj()) { if (m_caster->GetExactDistSq(m_targets.GetDstPos()) > maxRange) - return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_OUT_OF_RANGE; if (minRange > 0.0f && m_caster->GetExactDistSq(m_targets.GetDstPos()) < minRange) - return !(_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_OUT_OF_RANGE : SPELL_FAILED_DONT_REPORT; + return SPELL_FAILED_OUT_OF_RANGE; } return SPELL_CAST_OK; @@ -6543,11 +6546,11 @@ SpellCastResult Spell::CheckItems() // skip spell if no weapon in slot or broken if (!item || item->IsBroken()) - return (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS; // skip spell if weapon not fit to triggered spell if (!item->IsFitToSpellRequirements(m_spellInfo)) - return (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS; } // offhand hand weapon required @@ -6557,11 +6560,11 @@ SpellCastResult Spell::CheckItems() // skip spell if no weapon in slot or broken if (!item || item->IsBroken()) - return (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS; // skip spell if weapon not fit to triggered spell if (!item->IsFitToSpellRequirements(m_spellInfo)) - return (_triggeredCastFlags & TRIGGERED_DONT_REPORT_CAST_ERROR) ? SPELL_FAILED_DONT_REPORT : SPELL_FAILED_EQUIPPED_ITEM_CLASS; + return SPELL_FAILED_EQUIPPED_ITEM_CLASS; } } |