From ed7a335ec0d6f5c020d85337c95c443d01dc6c6c Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 25 Jun 2024 11:59:33 +0200 Subject: Core/Spells: Exclude spells cast from client from being treated as triggered if they have any trigger flags set (possible with override spells auras) (cherry picked from commit 816369318f9613bc7e23e4bf57ddb4c5f9fa3809) --- src/server/game/Spells/Spell.cpp | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 52995bf650a..af9ed25a9d3 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4718,7 +4718,7 @@ void Spell::SendSpellStart() if (schoolImmunityMask || mechanicImmunityMask) castFlags |= CAST_FLAG_IMMUNITY; - if (((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) && !m_fromClient) + if ((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) castFlags |= CAST_FLAG_PENDING; if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR10_USES_RANGED_SLOT_COSMETIC_ONLY) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA)) @@ -4817,7 +4817,7 @@ void Spell::SendSpellGo() uint32 castFlags = CAST_FLAG_UNKNOWN_9; // triggered spells with spell visual != 0 - if (((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) && !m_fromClient) + if ((IsTriggered() && !m_spellInfo->IsAutoRepeatRangedSpell()) || m_triggeredByAuraSpell) castFlags |= CAST_FLAG_PENDING; if (m_spellInfo->HasAttribute(SPELL_ATTR0_USES_RANGED_SLOT) || m_spellInfo->HasAttribute(SPELL_ATTR10_USES_RANGED_SLOT_COSMETIC_ONLY) || m_spellInfo->HasAttribute(SPELL_ATTR0_CU_NEEDS_AMMO_DATA)) @@ -8073,7 +8073,8 @@ bool Spell::CheckEffectTarget(Item const* /*target*/, SpellEffectInfo const& /*s bool Spell::IsTriggered() const { - return (_triggeredCastFlags & TRIGGERED_FULL_MASK) != 0; + return (!m_fromClient && (_triggeredCastFlags & TRIGGERED_FULL_MASK) != 0) + || !m_originalCastId.IsEmpty(); } bool Spell::IsIgnoringCooldowns() const -- cgit v1.2.3