From bae38b01af51ad3e80141defc91385e2aea08fcc Mon Sep 17 00:00:00 2001 From: Hondacrx Date: Wed, 4 Jun 2025 09:39:32 -0400 Subject: [PATCH] Core/Spells: Exclude TriggerCastFlags that can be set for non-triggered spells from being checked by Spell::IsTriggered Port From (https://github.com/TrinityCore/TrinityCore/commit/56fb627c7dd151190412468370db083ef3b044ad) --- Source/Framework/Constants/Spells/SpellConst.cs | 3 ++- Source/Game/Spells/Spell.cs | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/Source/Framework/Constants/Spells/SpellConst.cs b/Source/Framework/Constants/Spells/SpellConst.cs index 72773b28c..c8ef6bed3 100644 --- a/Source/Framework/Constants/Spells/SpellConst.cs +++ b/Source/Framework/Constants/Spells/SpellConst.cs @@ -1597,6 +1597,7 @@ namespace Framework.Constants DontResetPeriodicTimer = 0x20000, //! Will allow periodic aura timers to keep ticking (instead of resetting) DontReportCastError = 0x40000, //! Will Return SpellFailedDontReport In Checkcast Functions FullMask = 0x0007FFFF, //! Used when doing CastSpell with triggered == true + IsTriggeredMask = FullMask & ~(IgnorePowerCost | IgnoreCastInProgress | IgnoreCastTime | IgnoreShapeshift | DontReportCastError), //!< Will be recognized by Spell::IsTriggered as triggered // debug flags (used with .cast triggered commands) IgnoreEquippedItemRequirement = 0x80000, //! Will ignore equipped item requirements @@ -1639,7 +1640,7 @@ namespace Framework.Constants Unk8 = 0x80, Unk9 = 0x100, Unk10 = 0x200, - Unk11 = 0x400, + Unk11 = 0x400, // sorts missed targets before hit targets for chain visual PowerLeftSelf = 0x800, Unk13 = 0x1000, Unk14 = 0x2000, diff --git a/Source/Game/Spells/Spell.cs b/Source/Game/Spells/Spell.cs index fc16e137a..bc3ecf187 100644 --- a/Source/Game/Spells/Spell.cs +++ b/Source/Game/Spells/Spell.cs @@ -8476,7 +8476,7 @@ namespace Game.Spells m_timer = m_casttime > 0 ? m_casttime : 0; } - public bool IsTriggered() { return (!m_fromClient && _triggeredCastFlags.HasAnyFlag(TriggerCastFlags.FullMask)) || !m_originalCastId.IsEmpty(); } + public bool IsTriggered() { return (!m_fromClient && _triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IsTriggeredMask)) || !m_originalCastId.IsEmpty(); } public bool IsTriggeredByAura(SpellInfo auraSpellInfo) { return (auraSpellInfo == m_triggeredByAuraSpell); } public bool IsIgnoringCooldowns() { return _triggeredCastFlags.HasAnyFlag(TriggerCastFlags.IgnoreSpellAndCategoryCD); } public bool IsFocusDisabled() { return _triggeredCastFlags.HasFlag(TriggerCastFlags.IgnoreSetFacing) || (m_spellInfo.IsChanneled() && !m_spellInfo.HasAttribute(SpellAttr1.TrackTargetInChannel)); }