Scripts/Spells: Implement priest talent Power Surge (#31475)

This commit is contained in:
Cristian Vintila
2026-01-10 22:54:25 +02:00
committed by GitHub
parent a83df0536c
commit 1ff3bac726
2 changed files with 91 additions and 0 deletions

View File

@@ -0,0 +1,9 @@
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_pri_power_surge','spell_pri_power_surge_periodic_holy','spell_pri_power_surge_periodic_shadow');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(453109,'spell_pri_power_surge'),
(453112,'spell_pri_power_surge_periodic_holy'),
(453113,'spell_pri_power_surge_periodic_shadow');
DELETE FROM `spell_proc` WHERE `SpellId` IN (453109);
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
(453109,0x00,6,0x00000000,0x00000000,0x00000000,0x00000040,0x0,0x0,0x0,0x1,0x0,0x0,0x0,0,0,0,0); -- Power Surge

View File

@@ -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);