diff options
author | Aqua Deus <95978183+aquadeus@users.noreply.github.com> | 2025-05-25 21:03:36 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2025-05-25 21:03:36 +0200 |
commit | a8800c4e67418c84e050be363a02c9c6987d682f (patch) | |
tree | 7c655d1d4399cf194ec4b56306dc070e2de4a5cd | |
parent | b08ed2d7c58f860a6716853ec13a1c2f3640081d (diff) |
Scripts/Spells: Implement rogue talent Shuriken Tornado (#30972)
-rw-r--r-- | sql/updates/world/master/2025_05_25_04_world.sql | 4 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_rogue.cpp | 49 |
2 files changed, 53 insertions, 0 deletions
diff --git a/sql/updates/world/master/2025_05_25_04_world.sql b/sql/updates/world/master/2025_05_25_04_world.sql new file mode 100644 index 00000000000..b4d0a23ff65 --- /dev/null +++ b/sql/updates/world/master/2025_05_25_04_world.sql @@ -0,0 +1,4 @@ +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_rog_shuriken_storm', 'spell_rog_shuriken_tornado'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(197835, 'spell_rog_shuriken_storm'), +(277925, 'spell_rog_shuriken_tornado'); diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 30ae85fba72..958ea3d79b7 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -88,6 +88,8 @@ enum RogueSpells SPELL_ROGUE_SHIV_NATURE_DAMAGE = 319504, SPELL_ROGUE_SHOT_IN_THE_DARK_TALENT = 257505, SPELL_ROGUE_SHOT_IN_THE_DARK_BUFF = 257506, + SPELL_ROGUE_SHURIKEN_STORM_DAMAGE = 197835, + SPELL_ROGUE_SHURIKEN_STORM_ENERGIZE = 212743, SPELL_ROGUE_SLICE_AND_DICE = 315496, SPELL_ROGUE_SPRINT = 2983, SPELL_ROGUE_SOOTHING_DARKNESS_TALENT = 393970, @@ -1134,6 +1136,51 @@ class spell_rog_shot_in_the_dark_buff : public AuraScript } }; +// 197835 - Shuriken Storm +class spell_rog_shuriken_storm : public SpellScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo ({ SPELL_ROGUE_SHURIKEN_STORM_ENERGIZE }); + } + + void HandleEnergize(SpellEffIndex effIndex) const + { + GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_SHURIKEN_STORM_ENERGIZE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringSpell = GetSpell(), + .SpellValueOverrides = { { SPELLVALUE_BASE_POINT0, static_cast<int32>(GetUnitTargetCountForEffect(effIndex)) } } + }); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_rog_shuriken_storm::HandleEnergize, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE); + } +}; + +// 277925 - Shuriken Tornado +class spell_rog_shuriken_tornado : public AuraScript +{ + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ROGUE_SHURIKEN_STORM_DAMAGE }); + } + + void HandlePeriodicEffect(AuraEffect const* aurEff) const + { + GetTarget()->CastSpell(nullptr, SPELL_ROGUE_SHURIKEN_STORM_DAMAGE, CastSpellExtraArgsInit{ + .TriggerFlags = TRIGGERED_IGNORE_GCD | TRIGGERED_IGNORE_POWER_COST | TRIGGERED_IGNORE_CAST_IN_PROGRESS | TRIGGERED_DONT_REPORT_CAST_ERROR, + .TriggeringAura = aurEff + }); + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_rog_shuriken_tornado::HandlePeriodicEffect, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } +}; + // 193315 - Sinister Strike class spell_rog_sinister_strike : public SpellScript { @@ -1463,6 +1510,8 @@ void AddSC_rogue_spell_scripts() RegisterSpellScript(spell_rog_shadow_focus); RegisterSpellScript(spell_rog_shot_in_the_dark); RegisterSpellScript(spell_rog_shot_in_the_dark_buff); + RegisterSpellScript(spell_rog_shuriken_storm); + RegisterSpellScript(spell_rog_shuriken_tornado); RegisterSpellScript(spell_rog_sinister_strike); RegisterSpellScript(spell_rog_soothing_darkness); RegisterSpellScript(spell_rog_stealth); |