aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-09-01 11:34:11 +0200
committerOvahlord <dreadkiller@gmx.de>2024-09-03 19:54:50 +0200
commit27c9af1a5e3a1decf8a4be4eae74d719f37c6458 (patch)
tree9c1a8da4ec9089a3f24ea662d11b7b1eabcfedbb
parent1c2829e615a5d33f1e32e76b00940291a0fb32a2 (diff)
Core/Players: Fixed nested spell overrides (priest Mind Spike)
(cherry picked from commit cdca59ca4daf1edc250a96bd793cd8d4368e7f2e)
-rw-r--r--src/server/game/Entities/Player/Player.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp11
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;