From da0f2e3ae20a1a5c7c44b9d917cc499d0fe0fd16 Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Fri, 18 Mar 2022 22:15:56 +0100 Subject: [PATCH] fix(Core/Spells): Nature's Swiftness should not be consumed by instant spells. (#10909) --- src/server/game/Entities/Unit/Unit.cpp | 15 ++++++++++++++- src/server/game/Spells/Spell.h | 2 ++ 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index 9066b53d5..950810f9d 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -15817,7 +15817,7 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u continue; } - switch(triggeredByAura->GetAuraType()) + switch (triggeredByAura->GetAuraType()) { case SPELL_AURA_PROC_TRIGGER_SPELL: { @@ -15957,6 +15957,19 @@ void Unit::ProcDamageAndSpellFor(bool isVictim, Unit* target, uint32 procFlag, u break; takeCharges = true; break; + case SPELL_AURA_ADD_FLAT_MODIFIER: + case SPELL_AURA_ADD_PCT_MODIFIER: + { + if (SpellModifier* mod = triggeredByAura->GetSpellModifier()) + { + if (mod->op == SPELLMOD_CASTING_TIME && procSpell && (procSpell->GetTriggeredCastFlags() & TRIGGERED_CAST_DIRECTLY) != 0) + { + break; + } + } + takeCharges = true; + break; + } default: takeCharges = true; break; diff --git a/src/server/game/Spells/Spell.h b/src/server/game/Spells/Spell.h index a76168571..febc675ed 100644 --- a/src/server/game/Spells/Spell.h +++ b/src/server/game/Spells/Spell.h @@ -589,6 +589,8 @@ public: [[nodiscard]] uint32 GetTriggeredByAuraTickNumber() const { return m_triggeredByAuraSpell.tickNumber; } + [[nodiscard]] TriggerCastFlags GetTriggeredCastFlags() const { return _triggeredCastFlags; } + protected: bool HasGlobalCooldown() const; void TriggerGlobalCooldown();