diff options
| author | Shauren <shauren.trinity@gmail.com> | 2023-02-28 00:19:31 +0100 |
|---|---|---|
| committer | Shauren <shauren.trinity@gmail.com> | 2023-02-28 00:19:31 +0100 |
| commit | a8bb1739e99c503fc72b3a4a9ecede214c88396f (patch) | |
| tree | 2cf0399b95aee62d9790416a13260eeefa1f644b /src/server/game/Spells/Spell.cpp | |
| parent | 982b60f39c526e217de3a3f24b740af41c4ede50 (diff) | |
Core/Spells: Refactor Spell::finish to accept SpellCastResult argument instead of just a bool indicating success
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
| -rw-r--r-- | src/server/game/Spells/Spell.cpp | 50 |
1 files changed, 25 insertions, 25 deletions
diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 506865a9088..d56bbffa9b5 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -777,7 +777,7 @@ void Spell::SelectSpellTargets() if (noTargetFound) { SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } } @@ -791,7 +791,7 @@ void Spell::SelectSpellTargets() if (!anyNonImmuneTargetFound) { SendCastResult(SPELL_FAILED_IMMUNE); - finish(false); + finish(SPELL_FAILED_IMMUNE); return; } } @@ -803,7 +803,7 @@ void Spell::SelectSpellTargets() if (!focusObject && m_UniqueTargetInfo.empty() && m_UniqueGOTargetInfo.empty() && m_UniqueItemInfo.empty() && !m_targets.HasDst()) { SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } @@ -1088,7 +1088,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, else { SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); } return; } @@ -1108,7 +1108,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, else { SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); } return; } @@ -1123,7 +1123,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { TC_LOG_DEBUG("spells", "Spell::SelectImplicitNearbyTargets: cannot find nearby target for spell ID {}, effect {}", m_spellInfo->Id, uint32(spellEffectInfo.EffectIndex)); SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } @@ -1132,7 +1132,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { TC_LOG_DEBUG("spells", "Spell::SelectImplicitNearbyTargets: OnObjectTargetSelect script hook for spell Id {} set NULL target, effect {}", m_spellInfo->Id, uint32(spellEffectInfo.EffectIndex)); SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } @@ -1145,7 +1145,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { TC_LOG_DEBUG("spells", "Spell::SelectImplicitNearbyTargets: OnObjectTargetSelect script hook for spell Id {} set object of wrong type, expected unit, got {}, effect {}", m_spellInfo->Id, target->GetGUID().GetTypeName(), effMask); SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } break; @@ -1156,7 +1156,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { TC_LOG_DEBUG("spells", "Spell::SelectImplicitNearbyTargets: OnObjectTargetSelect script hook for spell Id {} set object of wrong type, expected gameobject, got {}, effect {}", m_spellInfo->Id, target->GetGUID().GetTypeName(), effMask); SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } break; @@ -1167,7 +1167,7 @@ void Spell::SelectImplicitNearbyTargets(SpellEffectInfo const& spellEffectInfo, { TC_LOG_DEBUG("spells", "Spell::SelectImplicitNearbyTargets: OnObjectTargetSelect script hook for spell Id {} set object of wrong type, expected corpse, got {}, effect {}", m_spellInfo->Id, target->GetGUID().GetTypeName(), effMask); SendCastResult(SPELL_FAILED_BAD_IMPLICIT_TARGETS); - finish(false); + finish(SPELL_FAILED_BAD_IMPLICIT_TARGETS); return; } break; @@ -1420,7 +1420,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn { SendCastResult(SPELL_FAILED_NOT_HERE); SendChannelUpdate(0); - finish(false); + finish(SPELL_FAILED_NOT_HERE); return; } @@ -1428,7 +1428,7 @@ void Spell::SelectImplicitCasterDestTargets(SpellEffectInfo const& spellEffectIn { SendCastResult(SPELL_FAILED_TOO_SHALLOW); SendChannelUpdate(0); - finish(false); + finish(SPELL_FAILED_TOO_SHALLOW); return; } @@ -3302,7 +3302,7 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const else { SendCastResult(SPELL_FAILED_EQUIPPED_ITEM); - finish(false); + finish(SPELL_FAILED_EQUIPPED_ITEM); return SPELL_FAILED_EQUIPPED_ITEM; } } @@ -3325,7 +3325,7 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const if (DisableMgr::IsDisabledFor(DISABLE_TYPE_SPELL, m_spellInfo->Id, m_caster)) { SendCastResult(SPELL_FAILED_SPELL_UNAVAILABLE); - finish(false); + finish(SPELL_FAILED_SPELL_UNAVAILABLE); return SPELL_FAILED_SPELL_UNAVAILABLE; } @@ -3333,7 +3333,7 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const if (!(_triggeredCastFlags & TRIGGERED_IGNORE_CAST_IN_PROGRESS) && m_caster->ToUnit() && m_caster->ToUnit()->IsNonMeleeSpellCast(false, true, true, m_spellInfo->Id == 75) && !m_castId.IsEmpty()) { SendCastResult(SPELL_FAILED_SPELL_IN_PROGRESS); - finish(false); + finish(SPELL_FAILED_SPELL_IN_PROGRESS); return SPELL_FAILED_SPELL_IN_PROGRESS; } @@ -3374,7 +3374,7 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const if (GetCurrentContainer() == CURRENT_AUTOREPEAT_SPELL && m_caster->IsUnit()) m_caster->ToUnit()->SetCurrentCastSpell(this); - finish(false); + finish(result); return result; } @@ -3389,7 +3389,7 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const if (result != SPELL_CAST_OK) { SendCastResult(result); - finish(false); + finish(result); return result; } } @@ -3508,7 +3508,7 @@ void Spell::cancel() //set state back so finish will be processed m_spellState = oldState; - finish(false); + finish(SPELL_FAILED_INTERRUPTED); } void Spell::cast(bool skipCheck) @@ -3586,7 +3586,7 @@ void Spell::_cast(bool skipCheck) if (modOwner) modOwner->SetSpellModTakingSpell(this, false); - finish(false); + finish(res); SetExecutedCurrently(false); }; @@ -3663,7 +3663,7 @@ void Spell::_cast(bool skipCheck) if (m_caster->GetTypeId() == TYPEID_PLAYER) m_caster->ToPlayer()->SetSpellModTakingSpell(this, false); - finish(false); + finish(SPELL_FAILED_INTERRUPTED); SetExecutedCurrently(false); return; } @@ -3899,7 +3899,7 @@ void Spell::handle_immediate() TakeCastItem(); if (m_spellState != SPELL_STATE_CASTING) - finish(true); // successfully finish spell cast (not last in case autorepeat or channel spell) + finish(); // successfully finish spell cast (not last in case autorepeat or channel spell) } uint64 Spell::handle_delayed(uint64 t_offset) @@ -3907,7 +3907,7 @@ uint64 Spell::handle_delayed(uint64 t_offset) if (!UpdatePointers()) { // finish the spell if UpdatePointers() returned false, something wrong happened there - finish(false); + finish(SPELL_FAILED_NO_VALID_TARGETS); return 0; } @@ -4001,7 +4001,7 @@ uint64 Spell::handle_delayed(uint64 t_offset) // spell is finished, perform some last features of the spell here _handle_finish_phase(); - finish(true); // successfully finish spell cast + finish(); // successfully finish spell cast // return zero, spell is finished now return 0; @@ -4184,7 +4184,7 @@ void Spell::update(uint32 difftime) } } -void Spell::finish(bool ok) +void Spell::finish(SpellCastResult result) { if (m_spellState == SPELL_STATE_FINISHED) return; @@ -4223,7 +4223,7 @@ void Spell::finish(bool ok) if (!m_spellInfo->HasAttribute(SPELL_ATTR3_SUPPRESS_CASTER_PROCS)) Unit::ProcSkillsAndAuras(unitCaster, nullptr, PROC_FLAG_CAST_ENDED, PROC_FLAG_NONE, PROC_SPELL_TYPE_MASK_ALL, PROC_SPELL_PHASE_NONE, PROC_HIT_NONE, this, nullptr, nullptr); - if (!ok) + if (result != SPELL_CAST_OK) { // on failure (or manual cancel) send TraitConfigCommitFailed to revert talent UI saved config selection if (m_caster->IsPlayer() && m_spellInfo->HasEffect(SPELL_EFFECT_CHANGE_ACTIVE_COMBAT_TRAIT_CONFIG)) |
