aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authoroffl <11556157+offl@users.noreply.github.com>2026-01-09 15:15:12 +0200
committerGitHub <noreply@github.com>2026-01-09 14:15:12 +0100
commit502afe50e88a7bea74e0c7c6eb7bf9488c5a3911 (patch)
treea8d4f529ac7a92be8c9b63388f4d0e8ffe87b944
parent38b1977e9078614127e3dd3b295681d16ea4c383 (diff)
Scripts/Spells: Get rid of remaining database spell scripts (#31471)3.3.5
-rw-r--r--sql/updates/world/3.3.5/2026_01_09_00_world.sql144
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp113
-rw-r--r--src/server/scripts/Northrend/zone_howling_fjord.cpp62
-rw-r--r--src/server/scripts/Northrend/zone_sholazar_basin.cpp31
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp17
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp55
-rw-r--r--src/server/scripts/Pet/pet_generic.cpp40
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp23
-rw-r--r--src/server/scripts/Spells/spell_item.cpp73
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp46
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp25
11 files changed, 605 insertions, 24 deletions
diff --git a/sql/updates/world/3.3.5/2026_01_09_00_world.sql b/sql/updates/world/3.3.5/2026_01_09_00_world.sql
new file mode 100644
index 00000000000..fc6e155c278
--- /dev/null
+++ b/sql/updates/world/3.3.5/2026_01_09_00_world.sql
@@ -0,0 +1,144 @@
+--
+UPDATE `creature_template` SET `unit_flags` = 768 WHERE `entry` = 38374;
+UPDATE `creature_template_addon` SET `SheathState` = 1 WHERE `entry` = 38374;
+
+DELETE FROM `spell_scripts` WHERE `id` IN (71848,71874);
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
+'spell_pet_gen_toxic_wasteling_find_target',
+'spell_pet_gen_toxic_wasteling_devour');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(71848, 'spell_pet_gen_toxic_wasteling_find_target'),
+(71874, 'spell_pet_gen_toxic_wasteling_devour');
+
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 38374;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 38374 AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 3837400 AND `source_type` = 9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(38374,0,0,0,31,0,100,0,71847,0,0,0,0,80,3837400,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Toxic Wasteling - On Target Spellhit 'Toxic Wasteling Attack' - Run Script"),
+-- After jumping default follow movement is launched, making it work not like on retail
+(3837400,9,0,0,0,0,100,0,0,0,0,0,0,29,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,"Toxic Wasteling - On Script - Stop Follow"),
+(3837400,9,1,0,0,0,100,0,1500,1500,0,0,0,11,71874,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Toxic Wasteling - On Script - Cast 'Toxic Wasteling Devour'"),
+(3837400,9,3,0,0,0,100,0,1500,1500,0,0,0,11,71854,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Toxic Wasteling - On Script - Cast 'Toxic Wasteling Grow'"),
+(3837400,9,4,0,0,0,100,0,2500,2500,0,0,0,29,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Toxic Wasteling - On Script - Follow Owner");
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 50499;
+
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
+'spell_item_disco_ball_listening_to_music_periodic',
+'spell_item_disco_ball_listening_to_music_check',
+'spell_item_disco_ball_listening_to_music_parent');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(50493, 'spell_item_disco_ball_listening_to_music_periodic'),
+(50492, 'spell_item_disco_ball_listening_to_music_check'),
+(50499, 'spell_item_disco_ball_listening_to_music_parent');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 50492;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,50492,0,0,31,0,3,27989,0,0,0,0,"","Group 0: Spell 'Listening to Music CHECK' (Effect 0) targets creature 'D.I.S.C.O.'");
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (50493,50317,-50493,-50314);
+
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 27989;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 27989 AND `source_type` = 0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(27989,0,0,0,11,0,100,0,0,0,0,0,0,11,50314,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D.I.S.C.O. - On Spawn - Cast 'Disco Ball'"),
+(27989,0,1,0,11,0,100,0,0,0,0,0,0,11,50487,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D.I.S.C.O. - On Spawn - Cast 'Create Disco Ball Visual Object'"),
+(27989,0,2,0,11,0,100,0,0,0,0,0,0,11,50493,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D.I.S.C.O. - On Spawn - Cast 'Listening to Music'"),
+(27989,0,3,0,11,0,100,0,0,0,0,0,0,11,28782,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"D.I.S.C.O. - On Spawn - Cast 'Stun Self + Immune'");
+
+UPDATE `creature_template_addon` SET `auras` = '' WHERE `entry` = 27989;
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 49899;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_wintergrasp_activate_robotic_arms';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(49899, 'spell_wintergrasp_activate_robotic_arms');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` IN (49625,49634);
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
+'spell_fjord_braves_flare',
+'spell_fjord_sergeants_flare');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(49625, 'spell_fjord_braves_flare'),
+(49634, 'spell_fjord_sergeants_flare');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 44563;
+
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 24823;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 24823 AND `source_type` = 0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(24823,0,0,0,8,0,100,512,44563,0,0,0,0,11,44569,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Iron Rune Construct - On Spellhit 'Bluff Quest Credit' - Cast 'Bluff Quest Credit'");
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 51659;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 28379 AND `source_type` = 0 AND `id` = 2;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(28379,0,2,0,8,0,100,0,51659,0,0,0,0,11,51656,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Shattertusk Mammoth - On Spellhit 'Apply Harness' - Cast 'Mount Mammoth Cue'");
+
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_sholazar_mount_mammoth_cue';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(51656, 'spell_sholazar_mount_mammoth_cue');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 21977;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_warr_warriors_wrath';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(21977, 'spell_warr_warriors_wrath');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 49203;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_dk_hungering_cold_init';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(49203, 'spell_dk_hungering_cold_init');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 31231;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_rog_cheat_death_cooldown';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(31231, 'spell_rog_cheat_death_cooldown');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 51662;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_rog_hunger_for_blood';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(51662, 'spell_rog_hunger_for_blood');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 40109;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bem_kfc_the_bolt';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(40109, 'spell_bem_kfc_the_bolt');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` = 38173;
+DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bem_summon_spirit';
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(38173, 'spell_bem_summon_spirit');
+
+--
+DELETE FROM `spell_scripts` WHERE `id` IN (45685,45691);
+
+UPDATE `spell_script_names` SET `ScriptName` = 'spell_borean_tundra_shortening_blaster' WHERE `ScriptName` = 'spell_q11653_shortening_blaster';
+
+DELETE FROM `spell_script_names` WHERE `ScriptName` IN (
+'spell_borean_tundra_magnataur_on_death_1',
+'spell_borean_tundra_magnataur_on_death_2');
+INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
+(45691, 'spell_borean_tundra_magnataur_on_death_1'),
+(45685, 'spell_borean_tundra_magnataur_on_death_2');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 22 AND `SourceEntry` IN (25432,25434) AND `SourceId` = 0;
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (25432,25434) AND `source_type` = 0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(25432,0,0,0,2,0,100,1,0,30,0,0,0,11,50420,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mate of Magmothregar - Between 0-30% Health - Cast 'Enrage' (No Repeat)"),
+(25432,0,1,0,83,0,100,0,50420,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mate of Magmothregar - On Spell Cast 'Enrage' - Say Line 0"),
+(25432,0,2,0,6,0,100,0,0,0,0,0,0,11,45691,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Mate of Magmothregar - On Death - Cast 'Hah... : Magnataur On Death 1'"),
+
+(25434,0,0,0,0,0,100,0,0,5000,10000,15000,0,11,50413,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Magmoth Crusher - In Combat - Cast 'Magnataur Charge'"),
+(25434,0,1,0,0,0,100,0,5000,10000,10000,15000,0,11,50410,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Magmoth Crusher - In Combat - Cast 'Tusk Strike'"),
+(25434,0,2,0,6,0,100,0,0,0,0,0,0,11,45691,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Magmoth Crusher - On Death - Cast 'Hah... : Magnataur On Death 1'");
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 2f3f572dca6..07ad4665f8a 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -1348,43 +1348,108 @@ private:
ObjectGuid _playerGUID;
};
-enum ShorteningBlaster
+/*######
+## Quest 11653: Hah... You're Not So Big Now!
+######*/
+
+enum HahYoureNotSoBigNow
{
- SPELL_SHORTENING_BLASTER_BIGGER1 = 45674,
- SPELL_SHORTENING_BLASTER_SHRUNK1 = 45675,
- SPELL_SHORTENING_BLASTER_YELLOW1 = 45678,
- SPELL_SHORTENING_BLASTER_GHOST1 = 45682,
- SPELL_SHORTENING_BLASTER_POLYMORPH1 = 45684,
-
- SPELL_SHORTENING_BLASTER_BIGGER2 = 45673,
- SPELL_SHORTENING_BLASTER_SHRUNK2 = 45672,
- SPELL_SHORTENING_BLASTER_YELLOW2 = 45677,
- SPELL_SHORTENING_BLASTER_GHOST2 = 45682,
- SPELL_SHORTENING_BLASTER_POLYMORPH2 = 45683
+ SPELL_BIGGER_1 = 45674,
+ SPELL_SHRUNK_1 = 45675,
+ SPELL_YELLOW_1 = 45678,
+ SPELL_GHOST_1 = 45682,
+ SPELL_POLYMORPH_1 = 45684,
+
+ SPELL_BIGGER_2 = 45673,
+ SPELL_SHRUNK_2 = 45672,
+ SPELL_YELLOW_2 = 45677,
+ SPELL_GHOST_2 = 45681,
+ SPELL_POLYMORPH_2 = 45683,
+
+ SPELL_MAGNATAUR_KILL_CREDIT = 45686,
+ SPELL_MAGNATAUR_ON_DEATH_2 = 45685
};
+static constexpr std::array<uint32, 5> BlasterCasterSpells = { SPELL_BIGGER_1, SPELL_SHRUNK_1, SPELL_YELLOW_1, SPELL_GHOST_1, SPELL_POLYMORPH_1 };
+static constexpr std::array<uint32, 5> BlasterTargetSpells = { SPELL_BIGGER_2, SPELL_SHRUNK_2, SPELL_YELLOW_2, SPELL_GHOST_2, SPELL_POLYMORPH_2 };
+
// 45668 - Crafty's Ultra-Advanced Proto-Typical Shortening Blaster
-class spell_q11653_shortening_blaster : public SpellScript
+class spell_borean_tundra_shortening_blaster : public SpellScript
{
- PrepareSpellScript(spell_q11653_shortening_blaster);
+ PrepareSpellScript(spell_borean_tundra_shortening_blaster);
- void HandleScript(SpellEffIndex /* effIndex */)
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(BlasterCasterSpells) && ValidateSpellInfo(BlasterTargetSpells);
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
- uint32 spellId = RAND(SPELL_SHORTENING_BLASTER_BIGGER1, SPELL_SHORTENING_BLASTER_SHRUNK1, SPELL_SHORTENING_BLASTER_YELLOW1,
- SPELL_SHORTENING_BLASTER_GHOST1, SPELL_SHORTENING_BLASTER_POLYMORPH1);
- uint32 spellId2 = RAND(SPELL_SHORTENING_BLASTER_BIGGER2, SPELL_SHORTENING_BLASTER_SHRUNK2, SPELL_SHORTENING_BLASTER_YELLOW2,
- SPELL_SHORTENING_BLASTER_GHOST2, SPELL_SHORTENING_BLASTER_POLYMORPH2);
+ caster->CastSpell(caster, Trinity::Containers::SelectRandomContainerElement(BlasterCasterSpells));
+ target->CastSpell(target, Trinity::Containers::SelectRandomContainerElement(BlasterTargetSpells));
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_borean_tundra_shortening_blaster::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 45691 - Hah... : Magnataur On Death 1
+class spell_borean_tundra_magnataur_on_death_1 : public SpellScript
+{
+ PrepareSpellScript(spell_borean_tundra_magnataur_on_death_1);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(BlasterTargetSpells) && ValidateSpellInfo({ SPELL_MAGNATAUR_KILL_CREDIT, SPELL_MAGNATAUR_ON_DEATH_2 });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ Creature* caster = GetCaster()->ToCreature();
+ if (!caster)
+ return;
+
+ Player* player = caster->GetLootRecipient();
+ if (!player)
+ return;
+
+ if (std::ranges::none_of(BlasterTargetSpells, [caster](uint32 spell) { return caster->HasAura(spell); }))
+ return;
+
+ player->CastSpell(player, SPELL_MAGNATAUR_KILL_CREDIT);
+ caster->CastSpell(caster, SPELL_MAGNATAUR_ON_DEATH_2);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_borean_tundra_magnataur_on_death_1::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
- caster->CastSpell(caster, spellId, true);
- target->CastSpell(target, spellId2, true);
+// 45685 - Hah... : Magnataur On Death 2
+class spell_borean_tundra_magnataur_on_death_2 : public SpellScript
+{
+ PrepareSpellScript(spell_borean_tundra_magnataur_on_death_2);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo(BlasterTargetSpells);
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ for (uint32 spell : BlasterTargetSpells)
+ GetCaster()->RemoveAurasDueToSpell(spell);
}
void Register() override
{
- OnEffectHitTarget += SpellEffectFn(spell_q11653_shortening_blaster::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ OnEffectHit += SpellEffectFn(spell_borean_tundra_magnataur_on_death_2::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
}
};
@@ -2056,7 +2121,9 @@ void AddSC_borean_tundra()
RegisterSpellScript(spell_windsoul_totem_aura);
RegisterSpellScript(spell_q11719_bloodspore_ruination_45997);
RegisterCreatureAI(npc_bloodmage_laurith);
- RegisterSpellScript(spell_q11653_shortening_blaster);
+ RegisterSpellScript(spell_borean_tundra_shortening_blaster);
+ RegisterSpellScript(spell_borean_tundra_magnataur_on_death_1);
+ RegisterSpellScript(spell_borean_tundra_magnataur_on_death_2);
RegisterSpellScript(spell_borean_tundra_nerubar_web_random_unit_not_on_quest);
RegisterSpellScript(spell_borean_tundra_nerubar_web_random_unit_not_on_quest_dummy);
RegisterSpellScript(spell_borean_tundra_nerubar_web_random_unit_on_quest_dummy);
diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp
index d7518888cf5..5e62aa4e26a 100644
--- a/src/server/scripts/Northrend/zone_howling_fjord.cpp
+++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp
@@ -837,6 +837,66 @@ class spell_fjord_worg_disguise_dummy : public AuraScript
}
};
+/*######
+## Quest 11259: Towers of Certain Doom
+######*/
+
+enum TowersOfCertainDoomHorde
+{
+ SPELL_BRAVES_FLARE_EFFECT = 43106
+};
+
+// 49625 - Brave's Flare
+class spell_fjord_braves_flare : public SpellScript
+{
+ PrepareSpellScript(spell_fjord_braves_flare);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_BRAVES_FLARE_EFFECT });
+ }
+
+ void HandleAfterCast()
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_BRAVES_FLARE_EFFECT, true);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_fjord_braves_flare::HandleAfterCast);
+ }
+};
+
+/*######
+## Quest 11245: Towers of Certain Doom
+######*/
+
+enum TowersOfCertainDoomAlliance
+{
+ SPELL_SERGEANTS_FLARE_EFFECT = 43068
+};
+
+// 49634 - Sergeant's Flare
+class spell_fjord_sergeants_flare : public SpellScript
+{
+ PrepareSpellScript(spell_fjord_sergeants_flare);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_SERGEANTS_FLARE_EFFECT });
+ }
+
+ void HandleAfterCast()
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_SERGEANTS_FLARE_EFFECT, true);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_fjord_sergeants_flare::HandleAfterCast);
+ }
+};
+
void AddSC_howling_fjord()
{
RegisterCreatureAI(npc_daegarn);
@@ -860,4 +920,6 @@ void AddSC_howling_fjord()
RegisterSpellScript(spell_fjord_taxi_to_explorers_league_outpost);
RegisterSpellScript(spell_fjord_worg_disguise);
RegisterSpellScript(spell_fjord_worg_disguise_dummy);
+ RegisterSpellScript(spell_fjord_braves_flare);
+ RegisterSpellScript(spell_fjord_sergeants_flare);
}
diff --git a/src/server/scripts/Northrend/zone_sholazar_basin.cpp b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
index c0221b26ec2..44ca75915f6 100644
--- a/src/server/scripts/Northrend/zone_sholazar_basin.cpp
+++ b/src/server/scripts/Northrend/zone_sholazar_basin.cpp
@@ -733,6 +733,36 @@ class spell_sholazar_lifeblood_dummy : public SpellScript
}
};
+/*######
+## Quest 12607: A Mammoth Undertaking
+######*/
+
+enum AMammothUndertaking
+{
+ SPELL_RIDE_SHATTERTUSK_MAMMOTH = 51658
+};
+
+// 51656 - Mount Mammoth Cue
+class spell_sholazar_mount_mammoth_cue : public SpellScript
+{
+ PrepareSpellScript(spell_sholazar_mount_mammoth_cue);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_RIDE_SHATTERTUSK_MAMMOTH });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetCaster(), SPELL_RIDE_SHATTERTUSK_MAMMOTH, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_sholazar_mount_mammoth_cue::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_sholazar_basin()
{
RegisterCreatureAI(npc_jungle_punch_target);
@@ -748,4 +778,5 @@ void AddSC_sholazar_basin()
RegisterSpellScript(spell_sholazar_flight_to_sholazar);
RegisterSpellScript(spell_sholazar_despawn_fruit_tosser);
RegisterSpellScript(spell_sholazar_lifeblood_dummy);
+ RegisterSpellScript(spell_sholazar_mount_mammoth_cue);
}
diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp
index b333db9e0e0..728f352581b 100644
--- a/src/server/scripts/Northrend/zone_wintergrasp.cpp
+++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp
@@ -405,6 +405,22 @@ class spell_wintergrasp_grab_passenger : public SpellScript
}
};
+// 49899 - Activate Robotic Arms
+class spell_wintergrasp_activate_robotic_arms : public SpellScript
+{
+ PrepareSpellScript(spell_wintergrasp_activate_robotic_arms);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->HandleEmoteCommand(EMOTE_ONESHOT_CUSTOM_SPELL_05);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_wintergrasp_activate_robotic_arms::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
class achievement_wg_didnt_stand_a_chance : public AchievementCriteriaScript
{
public:
@@ -556,6 +572,7 @@ void AddSC_wintergrasp()
RegisterGameObjectAI(go_wg_vehicle_teleporter);
RegisterSpellScript(spell_wintergrasp_force_building);
RegisterSpellScript(spell_wintergrasp_grab_passenger);
+ RegisterSpellScript(spell_wintergrasp_activate_robotic_arms);
new achievement_wg_didnt_stand_a_chance();
RegisterSpellScript(spell_wintergrasp_defender_teleport);
RegisterSpellScript(spell_wintergrasp_defender_teleport_trigger);
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 97b57e3e125..b9d97664cf4 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -1201,6 +1201,7 @@ class spell_bem_q10720_poison_keg : public SpellScript
enum BombingRun
{
+ SPELL_FEL_FLAK_FIRE = 40075,
SPELL_FLAK_CANNON_TRIGGER = 40110,
SPELL_CHOOSE_LOC = 40056,
SPELL_AGGRO_CHECK = 40112,
@@ -1208,6 +1209,27 @@ enum BombingRun
NPC_FEL_CANNON2 = 23082
};
+// 40109 - Knockdown Fel Cannon: The Bolt
+class spell_bem_kfc_the_bolt : public SpellScript
+{
+ PrepareSpellScript(spell_bem_kfc_the_bolt);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_FEL_FLAK_FIRE });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_FEL_FLAK_FIRE, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_bem_kfc_the_bolt::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
// 40113 - Knockdown Fel Cannon: The Aggro Check Aura
class spell_bem_aggro_check_aura : public AuraScript
{
@@ -1389,6 +1411,37 @@ class spell_bem_vision_guide : public AuraScript
}
};
+/*######
+## Quest 10714: On Spirit's Wings
+######*/
+
+enum OnSpiritsWings
+{
+ SPELL_REXXARS_BIRD_EFFECT = 39074
+};
+
+// 38173 - Summon Spirit
+class spell_bem_summon_spirit : public SpellScript
+{
+ PrepareSpellScript(spell_bem_summon_spirit);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_REXXARS_BIRD_EFFECT });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ // This spell script requires sniff verification
+ GetCaster()->CastSpell(GetCaster(), SPELL_REXXARS_BIRD_EFFECT, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_bem_summon_spirit::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
void AddSC_blades_edge_mountains()
{
new npc_nether_drake();
@@ -1405,6 +1458,7 @@ void AddSC_blades_edge_mountains()
RegisterSpellScript(spell_bem_coax_marmot);
RegisterSpellScript(spell_bem_charm_rexxars_rodent);
RegisterSpellScript(spell_bem_q10720_poison_keg);
+ RegisterSpellScript(spell_bem_kfc_the_bolt);
RegisterSpellScript(spell_bem_aggro_check_aura);
RegisterSpellScript(spell_bem_aggro_check);
RegisterSpellScript(spell_bem_aggro_burst);
@@ -1412,4 +1466,5 @@ void AddSC_blades_edge_mountains()
RegisterSpellScript(spell_bem_check_fly_mount);
RegisterSpellScript(spell_bem_apexis_swiftness);
RegisterSpellScript(spell_bem_vision_guide);
+ RegisterSpellScript(spell_bem_summon_spirit);
}
diff --git a/src/server/scripts/Pet/pet_generic.cpp b/src/server/scripts/Pet/pet_generic.cpp
index e0d66e3629f..13624ee954f 100644
--- a/src/server/scripts/Pet/pet_generic.cpp
+++ b/src/server/scripts/Pet/pet_generic.cpp
@@ -290,6 +290,44 @@ class spell_pet_gen_lich_pet_focus : public SpellScript
}
};
+// 71848 - Toxic Wasteling Find Target
+class spell_pet_gen_toxic_wasteling_find_target : public SpellScript
+{
+ PrepareSpellScript(spell_pet_gen_toxic_wasteling_find_target);
+
+ bool Validate(SpellInfo const* spellInfo) override
+ {
+ return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetHitUnit(), uint32(GetEffectValue()), true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pet_gen_toxic_wasteling_find_target::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
+// 71874 - Toxic Wasteling Devour
+class spell_pet_gen_toxic_wasteling_devour : public SpellScript
+{
+ PrepareSpellScript(spell_pet_gen_toxic_wasteling_devour);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Creature* target = GetHitCreature())
+ target->DespawnOrUnsummon();
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_pet_gen_toxic_wasteling_devour::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
enum ElwynnLambMisc
{
// Spells
@@ -421,6 +459,8 @@ void AddSC_generic_pet_scripts()
RegisterSpellScript(spell_pet_gen_lich_pet_periodic_emote);
RegisterSpellScript(spell_pet_gen_lich_pet_emote);
RegisterSpellScript(spell_pet_gen_lich_pet_focus);
+ RegisterSpellScript(spell_pet_gen_toxic_wasteling_find_target);
+ RegisterSpellScript(spell_pet_gen_toxic_wasteling_devour);
RegisterCreatureAI(npc_elwynn_forest_wolf);
RegisterSpellScript(spell_gen_elwynn_forest_wolf);
RegisterSpellScript(spell_gen_elwynn_lamb);
diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp
index bf023b9b6a6..b4de1633866 100644
--- a/src/server/scripts/Spells/spell_dk.cpp
+++ b/src/server/scripts/Spells/spell_dk.cpp
@@ -66,6 +66,7 @@ enum DeathKnightSpells
SPELL_DK_GHOUL_EXPLODE = 47496,
SPELL_DK_GLYPH_OF_DISEASE = 63334,
SPELL_DK_GLYPH_OF_ICEBOUND_FORTITUDE = 58625,
+ SPELL_DK_HUNGERING_COLD_PROC = 51209,
SPELL_DK_IMPROVED_BLOOD_PRESENCE_R1 = 50365,
SPELL_DK_IMPROVED_FROST_PRESENCE_R1 = 50384,
SPELL_DK_IMPROVED_UNHOLY_PRESENCE_R1 = 50391,
@@ -1089,6 +1090,27 @@ class spell_dk_hungering_cold : public AuraScript
}
};
+// 49203 - Hungering Cold
+class spell_dk_hungering_cold_init : public SpellScript
+{
+ PrepareSpellScript(spell_dk_hungering_cold_init);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_DK_HUNGERING_COLD_PROC });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_DK_HUNGERING_COLD_PROC, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_dk_hungering_cold_init::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
// 48792 - Icebound Fortitude
class spell_dk_icebound_fortitude : public AuraScript
{
@@ -2774,6 +2796,7 @@ void AddSC_deathknight_spell_scripts()
RegisterSpellScript(spell_dk_hysteria);
RegisterSpellScript(spell_dk_frost_fever);
RegisterSpellScript(spell_dk_hungering_cold);
+ RegisterSpellScript(spell_dk_hungering_cold_init);
RegisterSpellScript(spell_dk_icebound_fortitude);
RegisterSpellScript(spell_dk_improved_blood_presence);
RegisterSpellScript(spell_dk_improved_blood_presence_triggered);
diff --git a/src/server/scripts/Spells/spell_item.cpp b/src/server/scripts/Spells/spell_item.cpp
index 27eee95782b..9028d8673c3 100644
--- a/src/server/scripts/Spells/spell_item.cpp
+++ b/src/server/scripts/Spells/spell_item.cpp
@@ -4367,6 +4367,76 @@ class spell_item_darkmoon_card_illusion : public AuraScript
}
};
+enum DiscoBall
+{
+ SPELL_LISTENING_TO_MUSIC_CHECK = 50492,
+ SPELL_LISTENING_TO_MUSIC = 50493
+};
+
+// 50493 - Listening to Music
+class spell_item_disco_ball_listening_to_music_periodic : public AuraScript
+{
+ PrepareAuraScript(spell_item_disco_ball_listening_to_music_periodic);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LISTENING_TO_MUSIC_CHECK });
+ }
+
+ void OnPeriodic(AuraEffect const* /*aurEff*/)
+ {
+ GetTarget()->CastSpell(GetTarget(), SPELL_LISTENING_TO_MUSIC_CHECK, true);
+ }
+
+ void Register() override
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_item_disco_ball_listening_to_music_periodic::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY);
+ }
+};
+
+// 50492 - Listening to Music CHECK
+class spell_item_disco_ball_listening_to_music_check : public SpellScript
+{
+ PrepareSpellScript(spell_item_disco_ball_listening_to_music_check);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LISTENING_TO_MUSIC });
+ }
+
+ void HandleAfterCast()
+ {
+ if (!GetUnitTargetCountForEffect(EFFECT_0))
+ GetCaster()->RemoveAurasDueToSpell(SPELL_LISTENING_TO_MUSIC);
+ }
+
+ void Register() override
+ {
+ AfterCast += SpellCastFn(spell_item_disco_ball_listening_to_music_check::HandleAfterCast);
+ }
+};
+
+// 50499 - Listening to Music (Parent)
+class spell_item_disco_ball_listening_to_music_parent : public SpellScript
+{
+ PrepareSpellScript(spell_item_disco_ball_listening_to_music_parent);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_LISTENING_TO_MUSIC });
+ }
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ GetHitUnit()->CastSpell(GetHitUnit(), SPELL_LISTENING_TO_MUSIC, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_item_disco_ball_listening_to_music_parent::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+};
+
void AddSC_item_spell_scripts()
{
// 23074 Arcanite Dragonling
@@ -4506,4 +4576,7 @@ void AddSC_item_spell_scripts()
RegisterSpellScript(spell_item_drums_of_the_wild);
RegisterSpellScript(spell_item_thrallmar_and_honor_hold_favor);
RegisterSpellScript(spell_item_darkmoon_card_illusion);
+ RegisterSpellScript(spell_item_disco_ball_listening_to_music_periodic);
+ RegisterSpellScript(spell_item_disco_ball_listening_to_music_check);
+ RegisterSpellScript(spell_item_disco_ball_listening_to_music_parent);
}
diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp
index b0b6f4681f5..c93d4913265 100644
--- a/src/server/scripts/Spells/spell_rogue.cpp
+++ b/src/server/scripts/Spells/spell_rogue.cpp
@@ -37,6 +37,7 @@ enum RogueSpells
{
SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK = 22482,
SPELL_ROGUE_CHEAT_DEATH_COOLDOWN = 31231,
+ SPELL_ROGUE_CHEATING_DEATH = 45182,
SPELL_ROGUE_GLYPH_OF_PREPARATION = 56819,
SPELL_ROGUE_KILLING_SPREE = 51690,
SPELL_ROGUE_KILLING_SPREE_TELEPORT = 57840,
@@ -50,6 +51,7 @@ enum RogueSpells
SPELL_ROGUE_HONOR_AMONG_THIEVES = 51698,
SPELL_ROGUE_HONOR_AMONG_THIEVES_PROC = 52916,
SPELL_ROGUE_HONOR_AMONG_THIEVES_2 = 51699,
+ SPELL_ROGUE_HUNGER_FOR_BLOOD = 63848,
SPELL_ROGUE_T10_2P_BONUS = 70804,
SPELL_ROGUE_GLYPH_OF_BACKSTAB_TRIGGER = 63975,
SPELL_ROGUE_QUICK_RECOVERY_ENERGY = 31663,
@@ -145,6 +147,27 @@ class spell_rog_cheat_death : public AuraScript
}
};
+// 31231 - Cheat Death
+class spell_rog_cheat_death_cooldown : public SpellScript
+{
+ PrepareSpellScript(spell_rog_cheat_death_cooldown);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ROGUE_CHEATING_DEATH });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_CHEATING_DEATH, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_rog_cheat_death_cooldown::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
// -51664 - Cut to the Chase
class spell_rog_cut_to_the_chase : public AuraScript
{
@@ -923,6 +946,27 @@ class spell_rog_honor_among_thieves_proc_aura : public AuraScript
}
};
+// 51662 - Hunger For Blood
+class spell_rog_hunger_for_blood : public SpellScript
+{
+ PrepareSpellScript(spell_rog_hunger_for_blood);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_ROGUE_HUNGER_FOR_BLOOD });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_ROGUE_HUNGER_FOR_BLOOD, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_rog_hunger_for_blood::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
// -51627 - Turn the Tables
class spell_rog_turn_the_tables : public AuraScript
{
@@ -986,6 +1030,7 @@ void AddSC_rogue_spell_scripts()
{
RegisterSpellScript(spell_rog_blade_flurry);
RegisterSpellScript(spell_rog_cheat_death);
+ RegisterSpellScript(spell_rog_cheat_death_cooldown);
RegisterSpellScript(spell_rog_cut_to_the_chase);
RegisterSpellScript(spell_rog_deadly_brew);
RegisterSpellScript(spell_rog_deadly_poison);
@@ -1005,6 +1050,7 @@ void AddSC_rogue_spell_scripts()
RegisterSpellScript(spell_rog_tricks_of_the_trade_proc);
RegisterSpellScript(spell_rog_honor_among_thieves);
RegisterSpellAndAuraScriptPair(spell_rog_honor_among_thieves_proc, spell_rog_honor_among_thieves_proc_aura);
+ RegisterSpellScript(spell_rog_hunger_for_blood);
RegisterSpellScript(spell_rog_turn_the_tables);
RegisterSpellScript(spell_rog_vanish);
}
diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp
index d9b4014a7ae..b3ec1a16af6 100644
--- a/src/server/scripts/Spells/spell_warrior.cpp
+++ b/src/server/scripts/Spells/spell_warrior.cpp
@@ -71,7 +71,8 @@ enum WarriorSpells
SPELL_WARRIOR_GLYPH_OF_BLOCKING = 58374,
SPELL_WARRIOR_STOICISM = 70845,
SPELL_WARRIOR_T10_MELEE_4P_BONUS = 70847,
- SPELL_WARRIOR_INTERVENE_THREAT = 59667
+ SPELL_WARRIOR_INTERVENE_THREAT = 59667,
+ SPELL_WARRIOR_WARRIORS_WRATH = 21887
};
enum WarriorSpellIcons
@@ -913,6 +914,27 @@ class spell_warr_vigilance_trigger : public SpellScript
}
};
+// 21977 - Warrior's Wrath
+class spell_warr_warriors_wrath : public SpellScript
+{
+ PrepareSpellScript(spell_warr_warriors_wrath);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) override
+ {
+ return ValidateSpellInfo({ SPELL_WARRIOR_WARRIORS_WRATH });
+ }
+
+ void HandleDummy(SpellEffIndex /*effIndex*/)
+ {
+ GetCaster()->CastSpell(GetCaster(), SPELL_WARRIOR_WARRIORS_WRATH, true);
+ }
+
+ void Register() override
+ {
+ OnEffectHit += SpellEffectFn(spell_warr_warriors_wrath::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY);
+ }
+};
+
void AddSC_warrior_spell_scripts()
{
RegisterSpellScript(spell_warr_bloodthirst);
@@ -943,4 +965,5 @@ void AddSC_warrior_spell_scripts()
RegisterSpellScript(spell_warr_vigilance);
RegisterSpellScript(spell_warr_vigilance_redirect_threat);
RegisterSpellScript(spell_warr_vigilance_trigger);
+ RegisterSpellScript(spell_warr_warriors_wrath);
}