mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-15 23:20:36 +01:00
Scripts/Spells: Implement priest talent Power Surge (#31475)
This commit is contained in:
@@ -177,6 +177,11 @@ enum PriestSpells
|
||||
SPELL_PRIEST_POWER_LEECH_SHADOWFIEND_INSANITY = 262485,
|
||||
SPELL_PRIEST_POWER_OF_THE_DARK_SIDE = 198069,
|
||||
SPELL_PRIEST_POWER_OF_THE_DARK_SIDE_TINT = 225795,
|
||||
SPELL_PRIEST_POWER_SURGE = 453109,
|
||||
SPELL_PRIEST_POWER_SURGE_HALO_VISUAL = 454342,
|
||||
SPELL_PRIEST_POWER_SURGE_HALO_VISUAL_RETURN = 467824, // TODO: cast when triggering first return halo from Divine Halo (from halo on expire script)
|
||||
SPELL_PRIEST_POWER_SURGE_PERIODIC_HOLY = 453112,
|
||||
SPELL_PRIEST_POWER_SURGE_PERIODIC_SHADOW = 453113,
|
||||
SPELL_PRIEST_POWER_WORD_LIFE = 373481,
|
||||
SPELL_PRIEST_POWER_WORD_RADIANCE = 194509,
|
||||
SPELL_PRIEST_POWER_WORD_SHIELD = 17,
|
||||
@@ -2898,6 +2903,80 @@ class spell_pri_power_of_the_dark_side_healing_bonus : public SpellScript
|
||||
}
|
||||
};
|
||||
|
||||
// 453109 - Power Surge
|
||||
// Triggered by 120517 - Halo (Holy) and 120644 - Halo (Shadow)
|
||||
class spell_pri_power_surge : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo
|
||||
({
|
||||
SPELL_PRIEST_HALO_HOLY,
|
||||
SPELL_PRIEST_HALO_SHADOW,
|
||||
SPELL_PRIEST_POWER_SURGE_PERIODIC_HOLY,
|
||||
SPELL_PRIEST_POWER_SURGE_PERIODIC_SHADOW,
|
||||
SPELL_PRIEST_POWER_SURGE_HALO_VISUAL
|
||||
});
|
||||
}
|
||||
|
||||
static void HandleProc(AuraScript const&, AuraEffect const* aurEff, ProcEventInfo const& eventInfo)
|
||||
{
|
||||
Unit* caster = eventInfo.GetActor();
|
||||
|
||||
uint32 spellId = 0;
|
||||
switch (eventInfo.GetSpellInfo()->Id)
|
||||
{
|
||||
case SPELL_PRIEST_HALO_HOLY:
|
||||
spellId = SPELL_PRIEST_POWER_SURGE_PERIODIC_HOLY;
|
||||
break;
|
||||
case SPELL_PRIEST_HALO_SHADOW:
|
||||
spellId = SPELL_PRIEST_POWER_SURGE_PERIODIC_SHADOW;
|
||||
break;
|
||||
default:
|
||||
return;
|
||||
}
|
||||
|
||||
CastSpellExtraArgs args = CastSpellExtraArgsInit{
|
||||
.TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR,
|
||||
.TriggeringSpell = eventInfo.GetProcSpell(),
|
||||
.TriggeringAura = aurEff
|
||||
};
|
||||
|
||||
caster->CastSpell(caster, SPELL_PRIEST_POWER_SURGE_HALO_VISUAL, args);
|
||||
caster->CastSpell(caster, spellId, args);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectProc += AuraEffectProcFn(spell_pri_power_surge::HandleProc, EFFECT_1, SPELL_AURA_DUMMY);
|
||||
}
|
||||
};
|
||||
|
||||
// 453112 - Power Surge (Holy - Periodic)
|
||||
// 453113 - Power Surge (Shadow - Periodic)
|
||||
class spell_pri_power_surge_periodic : public AuraScript
|
||||
{
|
||||
bool Validate(SpellInfo const* /*spellInfo*/) override
|
||||
{
|
||||
return ValidateSpellInfo({ _spellId });
|
||||
}
|
||||
|
||||
void HandleEffectPeriodic(AuraEffect const* /*aurEff*/) const
|
||||
{
|
||||
GetTarget()->CastSpell(GetTarget(), _spellId, TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_SPELL_AND_CATEGORY_CD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_IGNORE_CAST_TIME | TRIGGERED_DONT_REPORT_CAST_ERROR);
|
||||
}
|
||||
|
||||
void Register() override
|
||||
{
|
||||
OnEffectPeriodic += AuraEffectPeriodicFn(spell_pri_power_surge_periodic::HandleEffectPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
|
||||
}
|
||||
|
||||
uint32 _spellId;
|
||||
|
||||
public:
|
||||
explicit spell_pri_power_surge_periodic(uint32 haloSpellId) : _spellId(haloSpellId) {}
|
||||
};
|
||||
|
||||
// 194509 - Power Word: Radiance
|
||||
class spell_pri_power_word_radiance : public SpellScript
|
||||
{
|
||||
@@ -4787,6 +4866,9 @@ void AddSC_priest_spell_scripts()
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side);
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side_damage_bonus);
|
||||
RegisterSpellScript(spell_pri_power_of_the_dark_side_healing_bonus);
|
||||
RegisterSpellScript(spell_pri_power_surge);
|
||||
RegisterSpellScriptWithArgs(spell_pri_power_surge_periodic, "spell_pri_power_surge_periodic_holy", SPELL_PRIEST_HALO_HOLY);
|
||||
RegisterSpellScriptWithArgs(spell_pri_power_surge_periodic, "spell_pri_power_surge_periodic_shadow", SPELL_PRIEST_HALO_SHADOW);
|
||||
RegisterSpellScript(spell_pri_power_word_radiance);
|
||||
RegisterSpellScript(spell_pri_power_word_shield);
|
||||
RegisterSpellScript(spell_pri_power_word_solace);
|
||||
|
||||
Reference in New Issue
Block a user