aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2021-03-03 10:42:58 +0100
committerShauren <shauren.trinity@gmail.com>2021-03-04 22:46:44 +0100
commitea63cd882c9f1438ab75036420a2bd3c18a3ecb5 (patch)
treeca8fde23f8b943ad6237bba9c66475821400be59 /src
parent0960308cfcfab740456b070901bed92b4d6fb4a7 (diff)
Core/Spells: Moved power cost RequiredAuraSpellID condition checking to make sure all overloads of SpellInfo::CalcPowerCost take it into account
Diffstat (limited to 'src')
-rw-r--r--src/server/game/Spells/SpellInfo.cpp8
1 files changed, 4 insertions, 4 deletions
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<SpellPowerCost> 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<SpellPowerCost> SpellInfo::CalcPowerCost(Powers powerType, bool optiona
Optional<SpellPowerCost> 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<SpellPowerCost> SpellInfo::CalcPowerCost(Unit const* caster, SpellSc
if (!power)
continue;
- if (power->RequiredAuraSpellID && !caster->HasAura(power->RequiredAuraSpellID))
- continue;
-
if (Optional<SpellPowerCost> cost = CalcPowerCost(power, false, caster, schoolMask, spell))
getOrCreatePowerCost(cost->Power).Amount += cost->Amount;