Skip to content

Commit 04ad3e7

Browse files
committed
Scripts/Spells: Implemented shaman talent Voltaic Blaze
1 parent 1793c51 commit 04ad3e7

File tree

2 files changed

+84
-0
lines changed

2 files changed

+84
-0
lines changed
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
DELETE FROM `spell_proc` WHERE `SpellId` IN (470053,470058);
2+
INSERT INTO `spell_proc` (`SpellId`,`SchoolMask`,`SpellFamilyName`,`SpellFamilyMask0`,`SpellFamilyMask1`,`SpellFamilyMask2`,`SpellFamilyMask3`,`ProcFlags`,`ProcFlags2`,`SpellTypeMask`,`SpellPhaseMask`,`HitMask`,`AttributesMask`,`DisableEffectsMask`,`ProcsPerMinute`,`Chance`,`Cooldown`,`Charges`) VALUES
3+
(470053,0x00,11,0x00000003,0x00000000,0x00000000,0x00000800,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0,0,0), -- Voltaic Blaze
4+
(470058,0x00,11,0x00000000,0x00000000,0x00000000,0x00000000,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0,0,0,0); -- Voltaic Blaze
5+
6+
DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_sha_voltaic_blaze','spell_sha_voltaic_blaze_aura','spell_sha_voltaic_blaze_talent');
7+
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
8+
(470057,'spell_sha_voltaic_blaze'),
9+
(470058,'spell_sha_voltaic_blaze_aura'),
10+
(470053,'spell_sha_voltaic_blaze_talent');

src/server/scripts/Spells/spell_shaman.cpp

Lines changed: 74 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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
21022173
class 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

Comments
 (0)