aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-06-25 11:59:33 +0200
committerOvahlord <dreadkiller@gmx.de>2024-06-28 18:39:36 +0200
commited7a335ec0d6f5c020d85337c95c443d01dc6c6c (patch)
tree2555aa4abe7fd2556d3d3acd9e81f0f85a2205a5
parentdb35ae6f435e859002f0763fdaf6e03d48701712 (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)
-rw-r--r--src/server/game/Spells/Spell.cpp7
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