Core/Spells: Split TRIGGERED_IGNORE_POWER_AND_REAGENT_COST into separate POWER and REAGENT flags

This commit is contained in:
Shauren
2024-12-31 20:14:01 +01:00
parent d778d5ec7c
commit 151a50d2aa
12 changed files with 21 additions and 21 deletions

View File

@@ -3862,12 +3862,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
@@ -4908,7 +4908,7 @@ void Spell::SendSpellGo()
if ((m_caster->GetTypeId() == TYPEID_PLAYER)
&& (m_caster->ToPlayer()->GetClass() == CLASS_DEATH_KNIGHT)
&& HasPowerTypeCost(POWER_RUNES)
&& !(_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
@@ -6190,7 +6190,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)
@@ -7617,7 +7617,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())