diff options
author | Shauren <shauren.trinity@gmail.com> | 2024-09-01 11:34:11 +0200 |
---|---|---|
committer | Ovahlord <dreadkiller@gmx.de> | 2024-09-03 19:54:50 +0200 |
commit | 27c9af1a5e3a1decf8a4be4eae74d719f37c6458 (patch) | |
tree | 9c1a8da4ec9089a3f24ea662d11b7b1eabcfedbb | |
parent | 1c2829e615a5d33f1e32e76b00940291a0fb32a2 (diff) |
Core/Players: Fixed nested spell overrides (priest Mind Spike)
(cherry picked from commit cdca59ca4daf1edc250a96bd793cd8d4368e7f2e)
-rw-r--r-- | src/server/game/Entities/Player/Player.cpp | 2 | ||||
-rw-r--r-- | src/server/game/Entities/Unit/Unit.cpp | 11 |
2 files changed, 10 insertions, 3 deletions
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp index 37ce7228a1b..63f22ce215d 100644 --- a/src/server/game/Entities/Player/Player.cpp +++ b/src/server/game/Entities/Player/Player.cpp @@ -27553,7 +27553,7 @@ SpellInfo const* Player::GetCastSpellInfo(SpellInfo const* spellInfo, TriggerCas if (overrides != m_overrideSpells.end()) for (uint32 spellId : overrides->second) if (SpellInfo const* newInfo = sSpellMgr->GetSpellInfo(spellId, GetMap()->GetDifficultyID())) - return Unit::GetCastSpellInfo(newInfo, triggerFlag); + return GetCastSpellInfo(newInfo, triggerFlag); return Unit::GetCastSpellInfo(spellInfo, triggerFlag); } diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp index a8d166e38b3..7707ca65f65 100644 --- a/src/server/game/Entities/Unit/Unit.cpp +++ b/src/server/game/Entities/Unit/Unit.cpp @@ -14094,9 +14094,13 @@ SpellInfo const* Unit::GetCastSpellInfo(SpellInfo const* spellInfo, TriggerCastF { if (auraEffect->GetSpellInfo()->HasAttribute(SPELL_ATTR8_IGNORE_SPELLCAST_OVERRIDE_COST)) triggerFlag |= TRIGGERED_IGNORE_POWER_AND_REAGENT_COST; + else + triggerFlag &= ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST; if (auraEffect->GetSpellInfo()->HasAttribute(SPELL_ATTR11_IGNORE_SPELLCAST_OVERRIDE_SHAPESHIFT_REQUIREMENTS)) triggerFlag |= TRIGGERED_IGNORE_SHAPESHIFT; + else + triggerFlag &= ~TRIGGERED_IGNORE_SHAPESHIFT; return newInfo; } @@ -14107,12 +14111,15 @@ SpellInfo const* Unit::GetCastSpellInfo(SpellInfo const* spellInfo, TriggerCastF }; if (SpellInfo const* newInfo = findMatchingAuraEffectIn(SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS)) - return newInfo; + { + triggerFlag &= ~TRIGGERED_IGNORE_CAST_TIME; + return GetCastSpellInfo(newInfo, triggerFlag); + } if (SpellInfo const* newInfo = findMatchingAuraEffectIn(SPELL_AURA_OVERRIDE_ACTIONBAR_SPELLS_TRIGGERED)) { triggerFlag |= TRIGGERED_IGNORE_CAST_TIME; - return newInfo; + return GetCastSpellInfo(newInfo, triggerFlag); } return spellInfo; |