mirror of
https://github.com/araxiaonline/TrinityCore.git
synced 2026-06-19 14:39:43 -04:00
Core/Spells: Split TRIGGERED_IGNORE_POWER_AND_REAGENT_COST into separate POWER and REAGENT flags
(cherry picked from commit 151a50d2aa)
# 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
This commit is contained in:
@@ -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())
|
||||
|
||||
Reference in New Issue
Block a user