fix(Core/Spells): Restore sending SMSG_CAST_FAILED for spells in SPEL… (#19102)

* fix(Core/Spells): Restore sending SMSG_CAST_FAILED for spells in SPELL_STATE_PREPARING state (cast bar in progress) unintentionally removed

https: //github.com/TrinityCore/TrinityCore/commit/844efbfca84580f7b2bd700f40209515f2aaa959
Co-Authored-By: Shauren <shauren.trinity@gmail.com>

* ocd

* correct animation and castbar staying

---------

Co-authored-by: Shauren <shauren.trinity@gmail.com>
This commit is contained in:
avarishd
2024-07-17 15:14:06 +03:00
committed by GitHub
parent cf7c015ea4
commit ade4c2527f

View File

@@ -3712,7 +3712,6 @@ void Spell::cancel(bool bySelf)
return; return;
uint32 oldState = m_spellState; uint32 oldState = m_spellState;
bool autoRepeat = m_autoRepeat;
m_spellState = SPELL_STATE_FINISHED; m_spellState = SPELL_STATE_FINISHED;
m_autoRepeat = false; m_autoRepeat = false;
@@ -3720,6 +3719,8 @@ void Spell::cancel(bool bySelf)
{ {
case SPELL_STATE_PREPARING: case SPELL_STATE_PREPARING:
CancelGlobalCooldown(); CancelGlobalCooldown();
SendCastResult(SPELL_FAILED_INTERRUPTED);
if (m_caster->GetTypeId() == TYPEID_PLAYER) if (m_caster->GetTypeId() == TYPEID_PLAYER)
{ {
if (m_caster->ToPlayer()->NeedSendSpectatorData()) if (m_caster->ToPlayer()->NeedSendSpectatorData())
@@ -3727,10 +3728,7 @@ void Spell::cancel(bool bySelf)
} }
[[fallthrough]]; [[fallthrough]];
case SPELL_STATE_DELAYED: case SPELL_STATE_DELAYED:
SendInterrupted(0); SendInterrupted(SPELL_FAILED_INTERRUPTED);
// xinef: fixes bugged gcd reset in some cases
if (!autoRepeat)
SendCastResult(SPELL_FAILED_INTERRUPTED);
break; break;
case SPELL_STATE_CASTING: case SPELL_STATE_CASTING:
if (!bySelf) if (!bySelf)