From ea63cd882c9f1438ab75036420a2bd3c18a3ecb5 Mon Sep 17 00:00:00 2001 From: Shauren Date: Wed, 3 Mar 2021 10:42:58 +0100 Subject: Core/Spells: Moved power cost RequiredAuraSpellID condition checking to make sure all overloads of SpellInfo::CalcPowerCost take it into account --- src/server/game/Spells/SpellInfo.cpp | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'src/server/game/Spells/SpellInfo.cpp') diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp index ec9430e8bb7..2e6c6acb76f 100644 --- a/src/server/game/Spells/SpellInfo.cpp +++ b/src/server/game/Spells/SpellInfo.cpp @@ -3741,7 +3741,7 @@ Optional SpellInfo::CalcPowerCost(Powers powerType, bool optiona { auto itr = std::find_if(PowerCosts.cbegin(), PowerCosts.cend(), [powerType](SpellPowerEntry const* spellPowerEntry) { - return spellPowerEntry->PowerType == powerType; + return spellPowerEntry && spellPowerEntry->PowerType == powerType; }); if (itr == PowerCosts.cend()) return {}; @@ -3751,6 +3751,9 @@ Optional SpellInfo::CalcPowerCost(Powers powerType, bool optiona Optional SpellInfo::CalcPowerCost(SpellPowerEntry const* power, bool optionalCost, Unit const* caster, SpellSchoolMask schoolMask, Spell* spell /*= nullptr*/) const { + if (power->RequiredAuraSpellID && !caster->HasAura(power->RequiredAuraSpellID)) + return {}; + // Spell drain all exist power on cast (Only paladin lay of Hands) if (HasAttribute(SPELL_ATTR1_DRAIN_ALL_POWER)) { @@ -3956,9 +3959,6 @@ std::vector SpellInfo::CalcPowerCost(Unit const* caster, SpellSc if (!power) continue; - if (power->RequiredAuraSpellID && !caster->HasAura(power->RequiredAuraSpellID)) - continue; - if (Optional cost = CalcPowerCost(power, false, caster, schoolMask, spell)) getOrCreatePowerCost(cost->Power).Amount += cost->Amount; -- cgit v1.2.3