Core/Spells: Added enum flag operators to TriggerCastFlags to prevent accidentally using CastSpellExtraArgs(bool) constructor when CastSpellExtraArgs(TriggerCastFlags) was intended

This commit is contained in:
Shauren
2023-06-09 00:33:35 +02:00
parent 9c393a40e2
commit c484530b0c
12 changed files with 19 additions and 17 deletions
+2 -2
View File
@@ -547,10 +547,10 @@ m_spellValue(new SpellValue(m_spellInfo, caster)), _spellEvent(nullptr)
_triggeredCastFlags = triggerFlags;
if (info->HasAttribute(SPELL_ATTR2_DO_NOT_REPORT_SPELL_FAILURE))
_triggeredCastFlags = TriggerCastFlags(uint32(_triggeredCastFlags) | TRIGGERED_DONT_REPORT_CAST_ERROR);
_triggeredCastFlags |= TRIGGERED_DONT_REPORT_CAST_ERROR;
if (info->HasAttribute(SPELL_ATTR4_ALLOW_CAST_WHILE_CASTING))
_triggeredCastFlags = TriggerCastFlags(uint32(_triggeredCastFlags) | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
_triggeredCastFlags |= TRIGGERED_IGNORE_CAST_IN_PROGRESS;
m_CastItem = nullptr;
m_castItemGUID.Clear();
+2
View File
@@ -267,6 +267,8 @@ enum TriggerCastFlags : uint32
TRIGGERED_FULL_DEBUG_MASK = 0xFFFFFFFF
};
DEFINE_ENUM_FLAG(TriggerCastFlags);
enum SpellCastTargetFlags : uint32
{
TARGET_FLAG_NONE = 0x00000000,
+1 -1
View File
@@ -5054,7 +5054,7 @@ void Spell::EffectCastButtons()
continue;
CastSpellExtraArgs args;
args.TriggerFlags = TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_CAST_DIRECTLY | TRIGGERED_DONT_REPORT_CAST_ERROR);
args.TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_CAST_DIRECTLY | TRIGGERED_DONT_REPORT_CAST_ERROR;
args.OriginalCastId = m_castId;
args.CastDifficulty = GetCastDifficulty();
m_caster->CastSpell(m_caster, spellInfo->Id, args);
+1 -1
View File
@@ -225,7 +225,7 @@ class spell_brewfest_relay_race_intro_force_player_to_throw : public SpellScript
PreventHitDefaultEffect(effIndex);
// All this spells trigger a spell that requires reagents; if the
// triggered spell is cast as "triggered", reagents are not consumed
GetHitUnit()->CastSpell(nullptr, GetEffectInfo().TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
GetHitUnit()->CastSpell(nullptr, GetEffectInfo().TriggerSpell, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST);
}
void Register() override
@@ -1463,7 +1463,7 @@ class spell_silithus_summon_cultist_periodic : public AuraScript
// All these spells trigger a spell that requires reagents; if the
// triggered spell is cast as "triggered", reagents are not consumed
GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)).SetTriggeringAura(aurEff));
GetTarget()->CastSpell(nullptr, aurEff->GetSpellEffectInfo().TriggerSpell, CastSpellExtraArgs(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST).SetTriggeringAura(aurEff));
}
void Register() override
@@ -96,7 +96,7 @@ class spell_ahnkahet_shadow_sickle : public AuraScript
if (owner->IsAIEnabled())
if (Unit* target = owner->GetAI()->SelectTarget(SelectTargetMethod::Random, 0, 40.f))
owner->CastSpell(target, spellId, CastSpellExtraArgs(aurEff).SetTriggerFlags(TriggerCastFlags::TRIGGERED_FULL_MASK));
owner->CastSpell(target, spellId, CastSpellExtraArgs(aurEff).SetTriggerFlags(TRIGGERED_FULL_MASK));
}
void Register() override
@@ -2875,7 +2875,7 @@ class spell_hor_quel_delars_will : public SpellScript
PreventHitDefaultEffect(effIndex);
// dummy spell consumes reagent, don't ignore it
GetHitUnit()->CastSpell(GetCaster(), GetEffectInfo().TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
GetHitUnit()->CastSpell(GetCaster(), GetEffectInfo().TriggerSpell, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST);
}
void Register() override
@@ -1851,7 +1851,7 @@ class spell_igb_periodic_trigger_with_power_cost : public AuraScript
void HandlePeriodicTick(AuraEffect const* aurEff)
{
PreventDefaultAction();
GetTarget()->CastSpell(GetTarget(), aurEff->GetSpellEffectInfo().TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
GetTarget()->CastSpell(GetTarget(), aurEff->GetSpellEffectInfo().TriggerSpell, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST);
}
void Register() override
@@ -1412,7 +1412,7 @@ class spell_kaelthas_remove_weapons : public SpellScript
{
if (Player* player = GetHitPlayer())
for (uint32 spells : RemoveWeaponsSpells)
player->CastSpell(player, spells, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST));
player->CastSpell(player, spells, TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST);
}
void Register() override
+1 -1
View File
@@ -717,7 +717,7 @@ class spell_dru_innervate : public SpellScript
if (caster != GetHitUnit())
if (AuraEffect const* innervateR2 = caster->GetAuraEffect(SPELL_DRUID_INNERVATE_RANK_2, EFFECT_0))
caster->CastSpell(caster, SPELL_DRUID_INNERVATE,
CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_CAST_IN_PROGRESS))
CastSpellExtraArgs(TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)
.SetTriggeringSpell(GetSpell())
.AddSpellMod(SPELLVALUE_BASE_POINT0, -innervateR2->GetAmount()));
+1 -1
View File
@@ -317,7 +317,7 @@ class spell_pal_awakening : public AuraScript
}
else
GetTarget()->CastSpell(GetTarget(), SPELL_PALADIN_AVENGING_WRATH,
CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD))
CastSpellExtraArgs(TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD)
.SetTriggeringSpell(eventInfo.GetProcSpell())
.AddSpellMod(SPELLVALUE_DURATION, extraDuration.count()));
}
+6 -6
View File
@@ -480,7 +480,7 @@ struct areatrigger_pri_divine_star : AreaTriggerAI
if (std::find(_affectedUnits.begin(), _affectedUnits.end(), unit->GetGUID()) != _affectedUnits.end())
return;
constexpr TriggerCastFlags TriggerFlags = TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
constexpr TriggerCastFlags TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS;
if (caster->IsValidAttackTarget(unit))
caster->CastSpell(unit, at->GetSpellId() == SPELL_PRIEST_DIVINE_STAR_SHADOW ? SPELL_PRIEST_DIVINE_STAR_SHADOW_DAMAGE : SPELL_PRIEST_DIVINE_STAR_HOLY_DAMAGE,
@@ -646,10 +646,10 @@ struct areatrigger_pri_halo : AreaTriggerAI
{
if (caster->IsValidAttackTarget(unit))
caster->CastSpell(unit, at->GetSpellId() == SPELL_PRIEST_HALO_SHADOW ? SPELL_PRIEST_HALO_SHADOW_DAMAGE : SPELL_PRIEST_HALO_HOLY_DAMAGE,
CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)));
TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
else if (caster->IsValidAssistTarget(unit))
caster->CastSpell(unit, at->GetSpellId() == SPELL_PRIEST_HALO_SHADOW ? SPELL_PRIEST_HALO_SHADOW_HEAL : SPELL_PRIEST_HALO_HOLY_HEAL,
CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)));
TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
}
}
};
@@ -1448,7 +1448,7 @@ class spell_pri_purge_the_wicked : public SpellScript
Unit* target = GetHitUnit();
if (target->HasAura(SPELL_PRIEST_PURGE_THE_WICKED_PERIODIC, caster->GetGUID()))
caster->CastSpell(target, SPELL_PRIEST_PURGE_THE_WICKED_DUMMY, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)));
caster->CastSpell(target, SPELL_PRIEST_PURGE_THE_WICKED_DUMMY, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
}
void Register() override
@@ -1520,7 +1520,7 @@ class spell_pri_purge_the_wicked_dummy : public SpellScript
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
caster->CastSpell(target, SPELL_PRIEST_PURGE_THE_WICKED_PERIODIC, CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS)));
caster->CastSpell(target, SPELL_PRIEST_PURGE_THE_WICKED_PERIODIC, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_CAST_IN_PROGRESS);
}
void Register() override
@@ -1551,7 +1551,7 @@ class spell_pri_rapture : public SpellScript
if (Unit* target = ObjectAccessor::GetUnit(*caster, _raptureTarget))
caster->CastSpell(target, SPELL_PRIEST_POWER_WORD_SHIELD,
CastSpellExtraArgs(TriggerCastFlags(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_POWER_AND_REAGENT_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS))
CastSpellExtraArgs(TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_POWER_AND_REAGENT_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS)
.SetTriggeringSpell(GetSpell()));
}