aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Spells/Spell.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2024-12-31 20:14:01 +0100
committerOvahlord <dreadkiller@gmx.de>2025-01-01 21:00:25 +0100
commiteaf412c1bb17a445a75f3b2e754586104fbecb1c (patch)
tree793a43969390538ae88bcf9375a9095055f4d2fb /src/server/game/Spells/Spell.cpp
parent435864761e1de4be4bc8a344dec8e787ddbe636b (diff)
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
Diffstat (limited to 'src/server/game/Spells/Spell.cpp')
-rw-r--r--src/server/game/Spells/Spell.cpp14
1 files changed, 7 insertions, 7 deletions
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())