@@ -130,6 +130,8 @@ enum ShamanSpells
130130 SPELL_SHAMAN_UNDULATION_PROC = 216251 ,
131131 SPELL_SHAMAN_UNLIMITED_POWER_BUFF = 272737 ,
132132 SPELL_SHAMAN_VOLCANIC_SURGE = 408572 ,
133+ SPELL_SHAMAN_VOLTAIC_BLAZE_DAMAGE = 470057 ,
134+ SPELL_SHAMAN_VOLTAIC_BLAZE_OVERRIDE = 470058 ,
133135 SPELL_SHAMAN_WINDFURY_ATTACK = 25504 ,
134136 SPELL_SHAMAN_WINDFURY_ENCHANTMENT = 334302 ,
135137 SPELL_SHAMAN_WIND_RUSH = 192082
@@ -2098,6 +2100,75 @@ class spell_sha_undulation_passive : public AuraScript
20982100 uint8 _castCounter = 1 ; // first proc happens after two casts, then one every 3 casts
20992101};
21002102
2103+ // 470057 - Voltaic Blaze
2104+ class spell_sha_voltaic_blaze : public SpellScript
2105+ {
2106+ bool Validate (SpellInfo const * /* spellInfo*/ ) override
2107+ {
2108+ return spell_sha_maelstrom_weapon_base::Validate ();
2109+ }
2110+
2111+ void ApplyFlameShock (SpellEffIndex /* effIndex*/ ) const
2112+ {
2113+ Unit* caster = GetCaster ();
2114+ caster->m_Events .AddEventAtOffset ([caster, targets = CastSpellTargetArg (GetHitUnit ())]() mutable
2115+ {
2116+ if (!targets.Targets )
2117+ return ;
2118+
2119+ targets.Targets ->Update (caster);
2120+
2121+ caster->CastSpell (targets, SPELL_SHAMAN_FLAME_SHOCK, true );
2122+ }, 500ms);
2123+ }
2124+
2125+ void EnergizeMaelstrom (SpellEffIndex /* effIndex*/ ) const
2126+ {
2127+ spell_sha_maelstrom_weapon_base::GenerateMaelstromWeapon (GetCaster (), GetEffectValue ());
2128+ }
2129+
2130+ void Register () override
2131+ {
2132+ OnEffectHitTarget += SpellEffectFn (spell_sha_voltaic_blaze::ApplyFlameShock, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
2133+ OnEffectHitTarget += SpellEffectFn (spell_sha_voltaic_blaze::EnergizeMaelstrom, EFFECT_1, SPELL_EFFECT_DUMMY);
2134+ }
2135+ };
2136+
2137+ // 470058 - Voltaic Blaze
2138+ class spell_sha_voltaic_blaze_aura : public AuraScript
2139+ {
2140+ static bool CheckProc (ProcEventInfo const & eventInfo)
2141+ {
2142+ // 470057 - Voltaic Blaze does not have any unique SpellFamilyFlags, check by id
2143+ return eventInfo.GetSpellInfo ()->Id == SPELL_SHAMAN_VOLTAIC_BLAZE_DAMAGE;
2144+ }
2145+
2146+ void Register () override
2147+ {
2148+ DoCheckProc += AuraCheckProcFn (spell_sha_voltaic_blaze_aura::CheckProc);
2149+ }
2150+ };
2151+
2152+ // 470053 - Voltaic Blaze
2153+ class spell_sha_voltaic_blaze_talent : public AuraScript
2154+ {
2155+ static bool CheckProc (AuraEffect const * aurEff, ProcEventInfo const & /* eventInfo*/ )
2156+ {
2157+ return roll_chance_i (aurEff->GetAmount ());
2158+ }
2159+
2160+ static void HandleProc (AuraEffect const * /* aurEff*/ , ProcEventInfo const & eventInfo)
2161+ {
2162+ eventInfo.GetActor ()->CastSpell (eventInfo.GetActor (), SPELL_SHAMAN_VOLTAIC_BLAZE_OVERRIDE);
2163+ }
2164+
2165+ void Register () override
2166+ {
2167+ DoCheckEffectProc += AuraCheckEffectProcFn (spell_sha_voltaic_blaze_talent::CheckProc, EFFECT_0, SPELL_AURA_DUMMY);
2168+ OnEffectProc += AuraEffectProcFn (spell_sha_voltaic_blaze_talent::HandleProc, EFFECT_0, SPELL_AURA_DUMMY);
2169+ }
2170+ };
2171+
21012172// 33757 - Windfury Weapon
21022173class spell_sha_windfury_weapon : public SpellScript
21032174{
@@ -2303,6 +2374,9 @@ void AddSC_shaman_spell_scripts()
23032374 RegisterSpellScript (spell_sha_thorims_invocation_trigger);
23042375 RegisterSpellScript (spell_sha_unlimited_power);
23052376 RegisterSpellScript (spell_sha_undulation_passive);
2377+ RegisterSpellScript (spell_sha_voltaic_blaze);
2378+ RegisterSpellScript (spell_sha_voltaic_blaze_aura);
2379+ RegisterSpellScript (spell_sha_voltaic_blaze_talent);
23062380 RegisterSpellScript (spell_sha_windfury_weapon);
23072381 RegisterSpellScript (spell_sha_windfury_weapon_proc);
23082382 RegisterSpellScript (spell_sha_windspeakers_lava_resurgence);
0 commit comments