From eaf412c1bb17a445a75f3b2e754586104fbecb1c Mon Sep 17 00:00:00 2001 From: Shauren Date: Tue, 31 Dec 2024 20:14:01 +0100 Subject: Core/Spells: Split TRIGGERED_IGNORE_POWER_AND_REAGENT_COST into separate POWER and REAGENT flags (cherry picked from commit 151a50d2aa6e10efe7fc14e0bd22aaef9effa859) # Conflicts: # src/server/game/Spells/Spell.cpp # src/server/scripts/Spells/spell_druid.cpp # src/server/scripts/Spells/spell_priest.cpp # src/server/scripts/Spells/spell_warlock.cpp --- src/server/game/Spells/Spell.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) (limited to 'src/server/game/Spells/Spell.cpp') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 8387e24a9d9..6126d7fc635 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3865,12 +3865,12 @@ void Spell::_cast(bool skipCheck) if (Player* playerCaster = m_caster->ToPlayer()) playerCaster->UpdateCraftSkill(m_spellInfo); - if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)) - { - // Powers have to be taken before SendSpellGo + // Powers have to be taken before SendSpellGo + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_COST)) TakePower(); + + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_REAGENT_COST)) TakeReagents(); // we must remove reagents before HandleEffects to allow place crafted item in same slot - } else if (Item* targetItem = m_targets.GetItemTarget()) { /// Not own traded item (in trader trade slot) req. reagents including triggered spell case @@ -4825,7 +4825,7 @@ void Spell::SendSpellGo() if ((m_caster->GetTypeId() == TYPEID_PLAYER) && (m_caster->ToPlayer()->GetClass() == CLASS_DEATH_KNIGHT) && (HasPowerTypeCost(POWER_RUNE_BLOOD) || HasPowerTypeCost(POWER_RUNE_FROST) || HasPowerTypeCost(POWER_RUNE_UNHOLY)) - && !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)) + && !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_COST)) { castFlags |= CAST_FLAG_NO_GCD; // not needed, but Blizzard sends it castFlags |= CAST_FLAG_RUNE_LIST; // rune cooldowns list @@ -6092,7 +6092,7 @@ SpellCastResult Spell::CheckCast(bool strict, int32* param1 /*= nullptr*/, int32 if (castResult != SPELL_CAST_OK) return castResult; - if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)) + if (!(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_COST)) { castResult = CheckPower(); if (castResult != SPELL_CAST_OK) @@ -7409,7 +7409,7 @@ SpellCastResult Spell::CheckItems(int32* param1 /*= nullptr*/, int32* param2 /*= // do not take reagents for these item casts if (!(m_CastItem && m_CastItem->GetTemplate()->HasFlag(ITEM_FLAG_NO_REAGENT_COST))) { - bool checkReagents = !(_triggeredCastFlags & TRIGGERED_IGNORE_POWER_AND_REAGENT_COST) && !player->CanNoReagentCast(m_spellInfo); + bool checkReagents = !(_triggeredCastFlags & TRIGGERED_IGNORE_REAGENT_COST) && !player->CanNoReagentCast(m_spellInfo); // Not own traded item (in trader trade slot) requires reagents even if triggered spell if (!checkReagents) if (Item* targetItem = m_targets.GetItemTarget()) -- cgit v1.2.3