aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-02-28 00:19:31 +0100
committerShauren <shauren.trinity@gmail.com>2023-02-28 00:19:31 +0100
commita8bb1739e99c503fc72b3a4a9ecede214c88396f (patch)
tree2cf0399b95aee62d9790416a13260eeefa1f644b /src/server/game/Spells/Spell.cpp
parent982b60f39c526e217de3a3f24b740af41c4ede50 (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.cpp50
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))