diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-06-25 11:59:33 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-06-28 18:39:36 +0200 |
commit | ed7a335ec0d6f5c020d85337c95c443d01dc6c6c (patch) | |
tree | 2555aa4abe7fd2556d3d3acd9e81f0f85a2205a5 /src | |
parent | db35ae6f435e859002f0763fdaf6e03d48701712 (diff) |
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)
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/Spells/Spell.cpp | 7 |
1 files changed, 4 insertions, 3 deletions
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 |