From 562e2a616c8036c0b9d453a88f37c0f0789bcb68 Mon Sep 17 00:00:00 2001 From: Shauren Date: Mon, 20 Jan 2025 00:32:04 +0100 Subject: Core/Spells: Exclude TriggerCastFlags that can be set for non-triggered spells from being checked by Spell::IsTriggered (cherry picked from commit 56fb627c7dd151190412468370db083ef3b044ad) --- src/server/game/Spells/Spell.cpp | 2 +- src/server/game/Spells/Spell.h | 2 +- src/server/game/Spells/SpellDefines.h | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index f8cc12a278e..1383391ff8d 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -8111,7 +8111,7 @@ bool Spell::CheckEffectTarget(Item const* /*target*/, SpellEffectInfo const& /*s bool Spell::IsTriggered() const { - return (!m_fromClient && (_triggeredCastFlags & TRIGGERED_FULL_MASK) != 0) + return (!m_fromClient && (_triggeredCastFlags & TRIGGERED_IS_TRIGGERED_MASK) != 0) || !m_originalCastId.IsEmpty(); } diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index 0a59b5f8526..4debc6c7656 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -95,7 +95,7 @@ enum SpellCastFlags : uint32 CAST_FLAG_UNKNOWN_8 = 0x00000080, CAST_FLAG_UNKNOWN_9 = 0x00000100, CAST_FLAG_UNKNOWN_10 = 0x00000200, - CAST_FLAG_UNKNOWN_11 = 0x00000400, + CAST_FLAG_UNKNOWN_11 = 0x00000400, // sorts missed targets before hit targets for chain visual CAST_FLAG_POWER_LEFT_SELF = 0x00000800, CAST_FLAG_UNKNOWN_13 = 0x00001000, CAST_FLAG_UNKNOWN_14 = 0x00002000, diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index 228bfc23ef8..1aa105b07a6 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -269,6 +269,10 @@ enum TriggerCastFlags : uint32 TRIGGERED_DONT_RESET_PERIODIC_TIMER = 0x00020000, //!< Will allow periodic aura timers to keep ticking (instead of resetting) TRIGGERED_DONT_REPORT_CAST_ERROR = 0x00040000, //!< Will return SPELL_FAILED_DONT_REPORT in CheckCast functions TRIGGERED_FULL_MASK = 0x0007FFFF, //!< Used when doing CastSpell with triggered == true + TRIGGERED_IS_TRIGGERED_MASK = TRIGGERED_FULL_MASK + & ~(TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS + | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_IGNORE_SHAPESHIFT + | TRIGGERED_DONT_REPORT_CAST_ERROR), //!< Will be recognized by Spell::IsTriggered as triggered // debug flags (used with .cast triggered commands) TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT = 0x00080000, //!< Will ignore equipped item requirements -- cgit v1.2.3