aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/master/2025_04_18_01_world.sql3
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp38
2 files changed, 35 insertions, 6 deletions
diff --git a/sql/updates/world/master/2025_04_18_01_world.sql b/sql/updates/world/master/2025_04_18_01_world.sql
new file mode 100644
index 00000000000..63465c293f3
--- /dev/null
+++ b/sql/updates/world/master/2025_04_18_01_world.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_warr_storm_bolts';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(107570, 'spell_warr_storm_bolts');
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index 942cf9e169e..16df4f1dc3b 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -68,6 +68,7 @@ enum WarriorSpells
SPELL_WARRIOR_SHOCKWAVE_STUN = 132168,
SPELL_WARRIOR_STOICISM = 70845,
SPELL_WARRIOR_STORM_BOLT_STUN = 132169,
+ SPELL_WARRIOR_STORM_BOLTS = 436162,
SPELL_WARRIOR_STRATEGIST = 384041,
SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1 = 12723,
SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2 = 26654,
@@ -631,20 +632,44 @@ class spell_warr_storm_bolt : public SpellScript
{
bool Validate(SpellInfo const* /*spellInfo*/) override
{
- return ValidateSpellInfo
- ({
- SPELL_WARRIOR_STORM_BOLT_STUN
- });
+ return ValidateSpellInfo({ SPELL_WARRIOR_STORM_BOLT_STUN });
}
- void HandleOnHit(SpellEffIndex /*effIndex*/)
+ void HandleOnHit(SpellEffIndex /*effIndex*/) const
{
GetCaster()->CastSpell(GetHitUnit(), SPELL_WARRIOR_STORM_BOLT_STUN, true);
}
void Register() override
{
- OnEffectHitTarget += SpellEffectFn(spell_warr_storm_bolt::HandleOnHit, EFFECT_1, SPELL_EFFECT_DUMMY);
+ OnEffectHitTarget += SpellEffectFn(spell_warr_storm_bolt::HandleOnHit, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
+ }
+};
+
+// 107570 - Storm Bolt
+class spell_warr_storm_bolts: public SpellScript
+{
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_WARRIOR_STORM_BOLTS });
+ }
+
+ bool Load() override
+ {
+ return !GetCaster()->HasAura(SPELL_WARRIOR_STORM_BOLTS);
+ }
+
+ void FilterTargets(std::list<WorldObject*>& targets) const
+ {
+ targets.clear();
+
+ if (Unit* target = GetExplTargetUnit())
+ targets.push_back(target);
+ }
+
+ void Register() override
+ {
+ OnObjectAreaTargetSelect += SpellObjectAreaTargetSelectFn(spell_warr_storm_bolts::FilterTargets, EFFECT_0, TARGET_UNIT_DEST_AREA_ENEMY);
}
};
@@ -856,6 +881,7 @@ void AddSC_warrior_spell_scripts()
RegisterSpellScript(spell_warr_shield_charge);
RegisterSpellScript(spell_warr_shockwave);
RegisterSpellScript(spell_warr_storm_bolt);
+ RegisterSpellScript(spell_warr_storm_bolts);
RegisterSpellScript(spell_warr_strategist);
RegisterSpellScript(spell_warr_sudden_death);
RegisterSpellScript(spell_warr_sweeping_strikes);