diff options
19 files changed, 1305 insertions, 4 deletions
diff --git a/sql/updates/world/3.3.5/2025_09_09_02_world.sql b/sql/updates/world/3.3.5/2025_09_09_02_world.sql new file mode 100644 index 00000000000..2603878fe60 --- /dev/null +++ b/sql/updates/world/3.3.5/2025_09_09_02_world.sql @@ -0,0 +1,291 @@ +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 43648; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_akilzon_electrical_storm'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43648, 'spell_akilzon_electrical_storm'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 43658; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_akilzon_electrical_overload'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43658, 'spell_akilzon_electrical_overload'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 45458; +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_midsummer_stamp_out_bonfire_quest_complete', 'spell_midsummer_stamp_out_bonfire_event'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45458, 'spell_midsummer_stamp_out_bonfire_quest_complete'), +(45443, 'spell_midsummer_stamp_out_bonfire_event'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 46903; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,1,46903,0,0,31,0,5,187564,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,1,31,0,5,187914,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,2,31,0,5,187916,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,3,31,0,5,187917,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,4,31,0,5,187919,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,5,31,0,5,187920,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,6,31,0,5,187921,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,7,31,0,5,187922,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,8,31,0,5,187923,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,9,31,0,5,187924,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,10,31,0,5,187925,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,11,31,0,5,187926,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,12,31,0,5,187927,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,13,31,0,5,187928,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,14,31,0,5,187929,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,15,31,0,5,187930,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,16,31,0,5,187931,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,17,31,0,5,187932,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,18,31,0,5,187933,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,19,31,0,5,187934,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,20,31,0,5,187935,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,21,31,0,5,187936,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,22,31,0,5,187937,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,23,31,0,5,187938,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,24,31,0,5,187939,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,25,31,0,5,187940,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,26,31,0,5,187941,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,27,31,0,5,187942,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,28,31,0,5,187943,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,29,31,0,5,187944,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,30,31,0,5,187945,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,31,31,0,5,187946,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,32,31,0,5,194032,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,33,31,0,5,194035,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,34,31,0,5,194036,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,35,31,0,5,194038,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,36,31,0,5,194040,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,37,31,0,5,194044,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,38,31,0,5,194045,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,39,31,0,5,194049,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Alliance Bonfire'"), +(13,1,46903,0,40,31,0,5,187559,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,41,31,0,5,187947,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,42,31,0,5,187948,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,43,31,0,5,187949,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,44,31,0,5,187950,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,45,31,0,5,187951,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,46,31,0,5,187952,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,47,31,0,5,187953,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,48,31,0,5,187954,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,49,31,0,5,187955,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,50,31,0,5,187956,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,51,31,0,5,187957,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,52,31,0,5,187958,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,53,31,0,5,187959,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,54,31,0,5,187960,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,55,31,0,5,187961,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,56,31,0,5,187962,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,57,31,0,5,187963,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,58,31,0,5,187964,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,59,31,0,5,187965,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,60,31,0,5,187966,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,61,31,0,5,187967,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,62,31,0,5,187968,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,63,31,0,5,187969,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,64,31,0,5,187970,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,65,31,0,5,187971,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,66,31,0,5,187972,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,67,31,0,5,187973,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,68,31,0,5,187974,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,69,31,0,5,187975,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,70,31,0,5,194033,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,71,31,0,5,194034,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,72,31,0,5,194037,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,73,31,0,5,194039,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,74,31,0,5,194042,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,75,31,0,5,194043,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,76,31,0,5,194046,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"), +(13,1,46903,0,77,31,0,5,194048,0,0,0,'',"Spell 'Stamp Out Bonfire (Art Kit)' (Effect 0) targets object 'Horde Bonfire'"); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 45750; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_borean_tundra_land_mine_barrier'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45750, 'spell_borean_tundra_land_mine_barrier'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (51060,51068,51088,51094); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_zuldrak_have_ingredient'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(51060, 'spell_zuldrak_have_ingredient'), +(51068, 'spell_zuldrak_have_ingredient'), +(51088, 'spell_zuldrak_have_ingredient'), +(51094, 'spell_zuldrak_have_ingredient'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 52839; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_zuldrak_summon_escort_aura'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(52839, 'spell_zuldrak_summon_escort_aura'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 52989; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_zuldrak_akalis_stun'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(52989, 'spell_zuldrak_akalis_stun'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 53435; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_cos_teleport_to_cot_stratholme_phase_4'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(53435, 'spell_cos_teleport_to_cot_stratholme_phase_4'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -45992; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(45992, 'spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -51221; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_fjord_taxi_to_explorers_league_outpost'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(51221, 'spell_fjord_taxi_to_explorers_league_outpost'); + +-- Quest 12166 +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 46770; + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (26616,26643) 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 +(26616,0,0,0,8,0,100,1,46770,0,0,0,0,33,27111,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Blighted Elk - On Spellhit 'Liquid Fire of Elune' - Quest Credit 'The Liquid Fire of Elune'"), +(26616,0,1,0,8,0,100,1,46770,0,0,0,0,11,47972,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Blighted Elk - On Spellhit 'Liquid Fire of Elune' - Cast 'The Liquid Fire of Elune: Blue Fire'"), +(26616,0,2,0,8,0,100,1,46770,0,0,0,0,41,10000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Blighted Elk - On Spellhit 'Liquid Fire of Elune' - Despawn"), + +(26643,0,0,0,8,0,100,0,46770,0,0,0,0,33,27112,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Rabid Grizzly - On Spellhit 'Liquid Fire of Elune' - Quest Credit 'The Liquid Fire of Elune'"), +(26643,0,1,0,8,0,100,0,46770,0,0,0,0,11,47972,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Rabid Grizzly - On Spellhit 'Liquid Fire of Elune' - Cast 'The Liquid Fire of Elune: Blue Fire'"), +(26643,0,2,0,8,0,100,0,46770,0,0,0,0,41,10000,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Rabid Grizzly - On Spellhit 'Liquid Fire of Elune' - Despawn"); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 47190; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_dragonblight_toaluus_spiritual_incense'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(47190, 'spell_dragonblight_toaluus_spiritual_incense'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 61122; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_storm_peaks_contact_brann'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(61122, 'spell_storm_peaks_contact_brann'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 61121; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES +(13,1,61121,0,0,31,0,3,29579,0,0,0,0,"","Group 0: Spell 'Despawn Brann' targets creature 'Brann Bronzebeard'"), +(13,1,61121,0,0,33,0,1,3,0,0,0,0,"","Group 0: Spell 'Despawn Brann' targets creature 'Brann Bronzebeard' if owned by spell caster"); + +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_gen_despawn_target' AND `spell_id` = 61121; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(61121, 'spell_gen_despawn_target'); + +-- Already scripted in SpellScript +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 66744; + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (31606,31746,-31773,-31774,-31775,-31776); +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_zangarmarsh_stormcrow_amulet','spell_zangarmarsh_whisper_aura'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(31606, 'spell_zangarmarsh_stormcrow_amulet'), +(31773, 'spell_zangarmarsh_whisper_aura'), +(31774, 'spell_zangarmarsh_whisper_aura'), +(31775, 'spell_zangarmarsh_whisper_aura'), +(31776, 'spell_zangarmarsh_whisper_aura'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 19512; + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN (1229600,1229800) 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 +(1229600,9,0,0,0,0,100,0,0,0,0,0,0,36,12297,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Gazelle - On Script - Update Template To 'Cured Gazelle'"), +(1229600,9,1,0,0,0,100,0,0,0,0,0,0,28,19502,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Gazelle - On Script - Remove Aura 'Sickly Critter Aura'"), +(1229600,9,2,0,0,0,100,0,0,0,0,0,0,33,12297,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Sickly Gazelle - On Script - Quest Credit 'Curing the Sick'"), +(1229600,9,3,0,0,0,100,0,1500,1500,0,0,0,114,0,0,0,0,0,0,1,0,0,0,0,30,30,0,0,"Sickly Gazelle - On Script - Move Offset"), +(1229600,9,4,0,0,0,100,0,5000,5000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Gazelle - On Script - Despawn"), + +(1229800,9,0,0,0,0,100,0,0,0,0,0,0,36,12299,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Deer - On Script - Update Template To 'Cured Deer'"), +(1229800,9,1,0,0,0,100,0,0,0,0,0,0,28,19502,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Deer - On Script - Remove Aura 'Sickly Critter Aura'"), +(1229800,9,2,0,0,0,100,0,0,0,0,0,0,33,12299,0,0,0,0,0,7,0,0,0,0,0,0,0,0,"Sickly Deer - On Script - Quest Credit 'Curing the Sick'"), +(1229800,9,3,0,0,0,100,0,1500,1500,0,0,0,114,0,0,0,0,0,0,1,0,0,0,0,30,30,0,0,"Sickly Deer - On Script - Move Offset"), +(1229800,9,4,0,0,0,100,0,5000,5000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Sickly Deer - On Script - Despawn"); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (43369,-43369,-68347); +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_fjord_worg_disguise', 'spell_fjord_worg_disguise_dummy'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(43369, 'spell_fjord_worg_disguise'), +(68347, 'spell_fjord_worg_disguise_dummy'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 47435; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_dragonblight_scrape_corrosive_spit'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(47435, 'spell_dragonblight_scrape_corrosive_spit'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -46813; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(46813, 'spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -42385; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_dustwallow_marsh_alcaz_survey_aura'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(42385, 'spell_dustwallow_marsh_alcaz_survey_aura'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-40623,-40625,-40626); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bem_apexis_swiftness'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(40623, 'spell_bem_apexis_swiftness'), +(40625, 'spell_bem_apexis_swiftness'), +(40626, 'spell_bem_apexis_swiftness'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 24714; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hallow_end_trick_initial'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(24714, 'spell_hallow_end_trick_initial'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 36587; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bem_vision_guide'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(36587, 'spell_bem_vision_guide'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 42144; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_hallow_end_create_water_bucket'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(42144, 'spell_hallow_end_create_water_bucket'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -68839; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_bronjahm_corrupt_soul'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(68839, 'spell_bronjahm_corrupt_soul'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = -62320; +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_thorim_aura_of_celerity'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(62320, 'spell_thorim_aura_of_celerity'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-54361,-59743); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_zuramat_void_shift'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(54361, 'spell_zuramat_void_shift'), +(59743, 'spell_zuramat_void_shift'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-47744,61611); +DELETE FROM `spell_script_names` WHERE `ScriptName` = 'spell_grizzly_hills_rage_of_jinarrak'; +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(47744, 'spell_grizzly_hills_rage_of_jinarrak'); + +-- +DELETE FROM `spell_linked_spell` WHERE `spell_trigger` IN (-30448,30447,30448); +DELETE FROM `spell_script_names` WHERE `ScriptName` IN ('spell_azuremyst_isle_shadow_of_the_forest_creature','spell_azuremyst_isle_shadow_of_the_forest_player'); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(30447, 'spell_azuremyst_isle_shadow_of_the_forest_creature'), +(30448, 'spell_azuremyst_isle_shadow_of_the_forest_player'); diff --git a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp index ad5f9e9588c..f641abf1763 100644 --- a/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp +++ b/src/server/scripts/EasternKingdoms/ZulAman/boss_akilzon.cpp @@ -31,6 +31,7 @@ EndScriptData */ #include "MotionMaster.h" #include "ObjectAccessor.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "TemporarySummon.h" #include "Weather.h" #include "zulaman.h" @@ -46,7 +47,16 @@ enum Spells SPELL_ELECTRICAL_OVERLOAD = 43658, SPELL_EAGLE_SWOOP = 44732, SPELL_ZAP = 43137, - SPELL_SAND_STORM = 25160 + SPELL_SAND_STORM = 25160, + + SPELL_ELECTRICAL_STORM_AURA = 44007, + SPELL_TELEPORT_SELF = 44006, + + SPELL_ELECTRICAL_ARC_1 = 43653, + SPELL_ELECTRICAL_ARC_2 = 43654, + SPELL_ELECTRICAL_ARC_3 = 43655, + SPELL_ELECTRICAL_ARC_4 = 43656, + SPELL_ELECTRICAL_ARC_5 = 43659 }; enum Says @@ -466,8 +476,66 @@ class npc_akilzon_eagle : public CreatureScript } }; +// 43648 - Electrical Storm +class spell_akilzon_electrical_storm : public SpellScript +{ + PrepareSpellScript(spell_akilzon_electrical_storm); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ELECTRICAL_STORM_AURA, SPELL_TELEPORT_SELF }); + } + + void HandleAfterHit() + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_ELECTRICAL_STORM_AURA, true); + target->CastSpell(target, SPELL_TELEPORT_SELF, true); + } + + void Register() override + { + AfterHit += SpellHitFn(spell_akilzon_electrical_storm::HandleAfterHit); + } +}; + +// 43658 - Electrical Overload Graphic Pulse +class spell_akilzon_electrical_overload : public SpellScript +{ + PrepareSpellScript(spell_akilzon_electrical_overload); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_ELECTRICAL_ARC_1, + SPELL_ELECTRICAL_ARC_2, + SPELL_ELECTRICAL_ARC_3, + SPELL_ELECTRICAL_ARC_4, + SPELL_ELECTRICAL_ARC_5 + }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_1, true); + caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_2, true); + caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_3, true); + caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_4, true); + caster->CastSpell(caster, SPELL_ELECTRICAL_ARC_5, true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_akilzon_electrical_overload::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_boss_akilzon() { new boss_akilzon(); new npc_akilzon_eagle(); + RegisterSpellScript(spell_akilzon_electrical_storm); + RegisterSpellScript(spell_akilzon_electrical_overload); } diff --git a/src/server/scripts/Events/hallows_end.cpp b/src/server/scripts/Events/hallows_end.cpp index 3744aaca6ed..4143047c002 100644 --- a/src/server/scripts/Events/hallows_end.cpp +++ b/src/server/scripts/Events/hallows_end.cpp @@ -95,6 +95,32 @@ class spell_hallow_end_candy_pirate : public AuraScript } }; +enum TrickInitial +{ + SPELL_TRICK_INITIAL = 24750 +}; + +// 24714 - Trick +class spell_hallow_end_trick_initial : public SpellScript +{ + PrepareSpellScript(spell_hallow_end_trick_initial); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TRICK_INITIAL }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TRICK_INITIAL); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_hallow_end_trick_initial::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + enum TrickSpells { SPELL_PIRATE_COSTUME_MALE = 24708, @@ -302,12 +328,43 @@ class spell_hallow_end_wand : public SpellScript } }; +enum CreateWaterBucket +{ + SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH = 43244, + SPELL_JUST_LOOTED_WATER_BARREL = 44410 +}; + +// 42144 - Headless Horseman - Create Water Bucket +class spell_hallow_end_create_water_bucket : public SpellScript +{ + PrepareSpellScript(spell_hallow_end_create_water_bucket); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH, SPELL_JUST_LOOTED_WATER_BARREL }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* target = GetHitUnit(); + target->CastSpell(target, SPELL_CREATE_WATER_BUCKET_BARREL_SPLASH); + target->CastSpell(target, SPELL_JUST_LOOTED_WATER_BARREL); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_hallow_end_create_water_bucket::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_event_hallows_end() { RegisterSpellScript(spell_hallow_end_candy); RegisterSpellScript(spell_hallow_end_candy_pirate); + RegisterSpellScript(spell_hallow_end_trick_initial); RegisterSpellScript(spell_hallow_end_trick); RegisterSpellScript(spell_hallow_end_trick_or_treat); RegisterSpellScript(spell_hallow_end_tricky_treat); RegisterSpellScript(spell_hallow_end_wand); + RegisterSpellScript(spell_hallow_end_create_water_bucket); } diff --git a/src/server/scripts/Events/midsummer.cpp b/src/server/scripts/Events/midsummer.cpp index aff921d63ba..b36fd1a04b6 100644 --- a/src/server/scripts/Events/midsummer.cpp +++ b/src/server/scripts/Events/midsummer.cpp @@ -490,6 +490,57 @@ public: explicit spell_midsummer_cleansing_flames(CleansingFlames triggeredSpell) : _triggeredSpell(triggeredSpell) { } }; +enum StampOutBonfire +{ + SPELL_STAMP_OUT_BONFIRE_EVENT = 45443, + SPELL_STAMP_OUT_BONFIRE_ART_KIT = 46903, + SPELL_STAMP_OUT_BONFIRE_DUMMY = 45437 +}; + +// 45458 - Holiday - Midsummer, Stamp Out Bonfire, Quest Complete +class spell_midsummer_stamp_out_bonfire_quest_complete : public AuraScript +{ + PrepareAuraScript(spell_midsummer_stamp_out_bonfire_quest_complete); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_STAMP_OUT_BONFIRE_EVENT }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_STAMP_OUT_BONFIRE_EVENT, true); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_midsummer_stamp_out_bonfire_quest_complete::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 45443 - Stamp Out Bonfire, Event +class spell_midsummer_stamp_out_bonfire_event : public SpellScript +{ + PrepareSpellScript(spell_midsummer_stamp_out_bonfire_event); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_STAMP_OUT_BONFIRE_ART_KIT, SPELL_STAMP_OUT_BONFIRE_DUMMY }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_STAMP_OUT_BONFIRE_ART_KIT, true); + caster->CastSpell(caster, SPELL_STAMP_OUT_BONFIRE_DUMMY, true); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_midsummer_stamp_out_bonfire_event::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_event_midsummer() { RegisterSpellScript(spell_midsummer_braziers_hit); @@ -511,4 +562,6 @@ void AddSC_event_midsummer() RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_the_undercity", SPELL_CREATE_FLAME_OF_THE_UNDERCITY); RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_silvermoon", SPELL_CREATE_FLAME_OF_SILVERMOON); RegisterSpellScriptWithArgs(spell_midsummer_cleansing_flames, "spell_midsummer_cleansing_flames_the_exodar", SPELL_CREATE_FLAME_OF_THE_EXODAR); + RegisterSpellScript(spell_midsummer_stamp_out_bonfire_quest_complete); + RegisterSpellScript(spell_midsummer_stamp_out_bonfire_event); } diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp index 3573cf7b610..62cd8395880 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp @@ -30,6 +30,7 @@ #include "ScriptedEscortAI.h" #include "ScriptedGossip.h" #include "SpellInfo.h" +#include "SpellScript.h" #include "ScriptMgr.h" #include "SplineChainMovementGenerator.h" #include "TemporarySummon.h" @@ -1465,6 +1466,32 @@ public: } }; +enum TeleportToStratholme +{ + SPELL_TELEPORT_TO_COT_STRATHOLME = 53436 +}; + +// 53435 - Teleport to CoT Stratholme Phase 4 +class spell_cos_teleport_to_cot_stratholme_phase_4 : public SpellScript +{ + PrepareSpellScript(spell_cos_teleport_to_cot_stratholme_phase_4); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TELEPORT_TO_COT_STRATHOLME }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetHitUnit()->CastSpell(GetHitUnit(), SPELL_TELEPORT_TO_COT_STRATHOLME); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_cos_teleport_to_cot_stratholme_phase_4::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_culling_of_stratholme() { new npc_hearthsinger_forresten_cot(); @@ -1480,4 +1507,6 @@ void AddSC_culling_of_stratholme() new npc_sergeant_morigan(); new npc_roger_owens(); new npc_crate_helper(); + + RegisterSpellScript(spell_cos_teleport_to_cot_stratholme_phase_4); } diff --git a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp index 78448c14103..2480516cf95 100644 --- a/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp +++ b/src/server/scripts/Kalimdor/zone_azuremyst_isle.cpp @@ -665,6 +665,64 @@ class spell_azuremyst_isle_cast_fishing_net : public SpellScript } }; +/*###### +## Quest 9542: Totem of Vark +######*/ + +enum TotemOfVark +{ + SPELL_SHADOW_OF_THE_FOREST_SI_DND = 32213 +}; + +// 30447 - Shadow of the Forest +class spell_azuremyst_isle_shadow_of_the_forest_creature : public AuraScript +{ + PrepareAuraScript(spell_azuremyst_isle_shadow_of_the_forest_creature); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHADOW_OF_THE_FOREST_SI_DND }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_SHADOW_OF_THE_FOREST_SI_DND, true); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_azuremyst_isle_shadow_of_the_forest_creature::AfterApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 30448 - Shadow of the Forest +class spell_azuremyst_isle_shadow_of_the_forest_player : public AuraScript +{ + PrepareAuraScript(spell_azuremyst_isle_shadow_of_the_forest_player); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SHADOW_OF_THE_FOREST_SI_DND }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + if (Unit* caster = GetCaster()) + caster->CastSpell(GetTarget(), SPELL_SHADOW_OF_THE_FOREST_SI_DND, true); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_SHADOW_OF_THE_FOREST_SI_DND); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_azuremyst_isle_shadow_of_the_forest_player::AfterApply, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_azuremyst_isle_shadow_of_the_forest_player::AfterRemove, EFFECT_0, SPELL_AURA_TRANSFORM, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_azuremyst_isle() { new npc_draenei_survivor(); @@ -674,4 +732,6 @@ void AddSC_azuremyst_isle() new npc_geezle(); RegisterSpellScript(spell_inoculate_nestlewood); RegisterSpellScript(spell_azuremyst_isle_cast_fishing_net); + RegisterSpellScript(spell_azuremyst_isle_shadow_of_the_forest_creature); + RegisterSpellScript(spell_azuremyst_isle_shadow_of_the_forest_player); } diff --git a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp index 1f4d9053f8f..b9bc4293c1f 100644 --- a/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp +++ b/src/server/scripts/Kalimdor/zone_dustwallow_marsh.cpp @@ -141,10 +141,41 @@ class spell_dustwallow_marsh_salvage_wreckage : public SpellScript } }; +/*###### +## Quest 11142: Survey Alcaz Island +######*/ + +enum SurveyAlcazIsland +{ + SPELL_ALCAZ_SURVEY_CREDIT = 42316 +}; + +// 42385 - Alcaz Survey Aura +class spell_dustwallow_marsh_alcaz_survey_aura : public AuraScript +{ + PrepareAuraScript(spell_dustwallow_marsh_alcaz_survey_aura); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_ALCAZ_SURVEY_CREDIT }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_ALCAZ_SURVEY_CREDIT, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_dustwallow_marsh_alcaz_survey_aura::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_dustwallow_marsh() { RegisterSpellScript(spell_ooze_zap); RegisterSpellScript(spell_ooze_zap_channel_end); RegisterSpellScript(spell_energize_aoe); RegisterSpellScript(spell_dustwallow_marsh_salvage_wreckage); + RegisterSpellScript(spell_dustwallow_marsh_alcaz_survey_aura); } diff --git a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp index 04098b968b7..9c9237d5bc6 100644 --- a/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/ForgeOfSouls/boss_bronjahm.cpp @@ -45,7 +45,10 @@ enum Spells SPELL_SOULSTORM = 68872, SPELL_SOULSTORM_CHANNEL = 69008, // Pre-fight SPELL_SOULSTORM_VISUAL = 68870, // Pre-cast Soulstorm - SPELL_PURPLE_BANISH_VISUAL = 68862 // Used by Soul Fragment (Aura) + SPELL_PURPLE_BANISH_VISUAL = 68862, // Used by Soul Fragment (Aura) + + SPELL_KNOCKDOWN_STUN = 68848, + SPELL_DRAW_CORRUPTED_SOUL = 68846 }; enum Events @@ -328,6 +331,29 @@ class spell_bronjahm_soulstorm_targeting : public SpellScript } }; +// 68839 - Corrupt Soul +class spell_bronjahm_corrupt_soul : public AuraScript +{ + PrepareAuraScript(spell_bronjahm_corrupt_soul); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_KNOCKDOWN_STUN, SPELL_DRAW_CORRUPTED_SOUL }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_KNOCKDOWN_STUN, true); + target->CastSpell(target, SPELL_DRAW_CORRUPTED_SOUL, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_bronjahm_corrupt_soul::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + class achievement_bronjahm_soul_power : public AchievementCriteriaScript { public: @@ -348,5 +374,6 @@ void AddSC_boss_bronjahm() RegisterSpellScriptWithArgs(spell_bronjahm_soulstorm_visual, "spell_bronjahm_soulstorm_channel"); RegisterSpellScriptWithArgs(spell_bronjahm_soulstorm_visual, "spell_bronjahm_soulstorm_visual"); RegisterSpellScript(spell_bronjahm_soulstorm_targeting); + RegisterSpellScript(spell_bronjahm_corrupt_soul); new achievement_bronjahm_soul_power(); } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp index bb927142fdd..93acc9e9a91 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_thorim.cpp @@ -202,6 +202,7 @@ enum PreAddSpells SPELL_RUNIC_STRIKE = 62322, SPELL_AURA_OF_CELERITY = 62320, + SPELL_AURA_OF_CELERITY_VISUAL = 62398, SPELL_IMPALE = 62331, SPELL_WHIRLING_TRIP = 64151, @@ -2129,6 +2130,27 @@ class spell_thorim_activate_lightning_orb_periodic : public SpellScriptLoader } }; +// 62320 - Aura of Celerity +class spell_thorim_aura_of_celerity : public AuraScript +{ + PrepareAuraScript(spell_thorim_aura_of_celerity); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_AURA_OF_CELERITY_VISUAL }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_AURA_OF_CELERITY_VISUAL); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_thorim_aura_of_celerity::AfterRemove, EFFECT_0, SPELL_AURA_MELEE_SLOW, AURA_EFFECT_HANDLE_REAL); + } +}; + class achievement_dont_stand_in_the_lightning : public AchievementCriteriaScript { public: @@ -2203,6 +2225,7 @@ void AddSC_boss_thorim() new spell_thorim_arena_leap(); new spell_thorim_runic_smash(); new spell_thorim_activate_lightning_orb_periodic(); + RegisterSpellScript(spell_thorim_aura_of_celerity); new achievement_dont_stand_in_the_lightning(); new achievement_lose_your_illusion(); new achievement_i_ll_take_you_all_on(); diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index efc7f28a3d7..19620eeb30d 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -18,6 +18,7 @@ #include "ScriptMgr.h" #include "InstanceScript.h" #include "ScriptedCreature.h" +#include "SpellScript.h" #include "violet_hold.h" enum ZuramatTexts @@ -187,6 +188,27 @@ private: SummonList _summons; }; +// 54361, 59743 - Void Shift +class spell_zuramat_void_shift : public AuraScript +{ + PrepareAuraScript(spell_zuramat_void_shift); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_VOID_SHIFTED }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_VOID_SHIFTED, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_zuramat_void_shift::AfterRemove, EFFECT_0, SPELL_AURA_PERIODIC_DAMAGE, AURA_EFFECT_HANDLE_REAL); + } +}; + class achievement_void_dance : public AchievementCriteriaScript { public: @@ -209,5 +231,6 @@ void AddSC_boss_zuramat() { RegisterVioletHoldCreatureAI(boss_zuramat); RegisterVioletHoldCreatureAI(npc_void_sentry); + RegisterSpellScript(spell_zuramat_void_shift); new achievement_void_dance(); } diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp index caed83fb973..838baad156b 100644 --- a/src/server/scripts/Northrend/zone_borean_tundra.cpp +++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp @@ -1904,6 +1904,111 @@ class spell_borean_tundra_ultrasonic_screwdriver : public SpellScript } }; +/*###### +## Quest 11652: The Plains of Nasam +######*/ + +enum ThePlainsOfNasam +{ + SPELL_DROP_WARSONG_LAND_MINE_1 = 45751, + SPELL_DROP_WARSONG_LAND_MINE_2 = 45752, + SPELL_DROP_WARSONG_LAND_MINE_3 = 45753, + SPELL_DROP_WARSONG_LAND_MINE_4 = 45754, + SPELL_DROP_WARSONG_LAND_MINE_5 = 45755, + SPELL_DROP_WARSONG_LAND_MINE_6 = 45756, + SPELL_DROP_WARSONG_LAND_MINE_7 = 47839, + SPELL_DROP_WARSONG_LAND_MINE_8 = 45749 +}; + +static constexpr std::array<uint32, 8> DropLandMineSpells = +{ + SPELL_DROP_WARSONG_LAND_MINE_1, SPELL_DROP_WARSONG_LAND_MINE_2, SPELL_DROP_WARSONG_LAND_MINE_3, SPELL_DROP_WARSONG_LAND_MINE_4, + SPELL_DROP_WARSONG_LAND_MINE_5, SPELL_DROP_WARSONG_LAND_MINE_6, SPELL_DROP_WARSONG_LAND_MINE_7, SPELL_DROP_WARSONG_LAND_MINE_8 +}; + +// 45750 - Land Mine Barrier +class spell_borean_tundra_land_mine_barrier : public SpellScript +{ + PrepareSpellScript(spell_borean_tundra_land_mine_barrier); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo(DropLandMineSpells); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + for (uint32 spells : DropLandMineSpells) + caster->CastSpell(caster, spells); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_borean_tundra_land_mine_barrier::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + +/*###### +## Quest 11681: Rescuing Evanor +######*/ + +enum RescuingEvanor +{ + SPELL_AMBER_LEDGE_TO_BERYL_POINT = 45883 +}; + +// 45992 - Taxi - Amber Ledge to Beryl Point Platform +class spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform : public AuraScript +{ + PrepareAuraScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_AMBER_LEDGE_TO_BERYL_POINT }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_AMBER_LEDGE_TO_BERYL_POINT); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform::AfterRemove, EFFECT_0, SPELL_AURA_MECHANIC_IMMUNITY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Quest 11969: Springing the Trap +######*/ + +enum SpringingTheTrap +{ + SPELL_COLDARRA_TO_TRANSITUS = 46814 +}; + +// 46813 - Taxi - Coldarra Ledge to Transitus Shield +class spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield : public AuraScript +{ + PrepareAuraScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_COLDARRA_TO_TRANSITUS }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_COLDARRA_TO_TRANSITUS); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_borean_tundra() { RegisterCreatureAI(npc_beryl_sorcerer); @@ -1936,4 +2041,7 @@ void AddSC_borean_tundra() RegisterSpellScript(spell_borean_tundra_weakness_to_lightning_on_quest_complete); RegisterSpellScript(spell_borean_tundra_signal_alliance); RegisterSpellScript(spell_borean_tundra_ultrasonic_screwdriver); + RegisterSpellScript(spell_borean_tundra_land_mine_barrier); + RegisterSpellScript(spell_borean_tundra_taxi_amber_ledge_to_beryl_point_platform); + RegisterSpellScript(spell_borean_tundra_taxi_coldarra_ledge_to_transitus_shield); } diff --git a/src/server/scripts/Northrend/zone_dragonblight.cpp b/src/server/scripts/Northrend/zone_dragonblight.cpp index e63d63c14e4..fec320bea96 100644 --- a/src/server/scripts/Northrend/zone_dragonblight.cpp +++ b/src/server/scripts/Northrend/zone_dragonblight.cpp @@ -913,6 +913,36 @@ class spell_dragonblight_fill_blood_unholy_frost_gem : public SpellScript } }; +/*###### +## Quest 12076: Messy Business +######*/ + +enum MessyBusiness +{ + SPELL_CORROSIVE_SPIT = 47447 +}; + +// 47435 - Scrape Corrosive Spit +class spell_dragonblight_scrape_corrosive_spit : public SpellScript +{ + PrepareSpellScript(spell_dragonblight_scrape_corrosive_spit); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_CORROSIVE_SPIT }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAurasDueToSpell(SPELL_CORROSIVE_SPIT); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_dragonblight_scrape_corrosive_spit::HandleScript, EFFECT_1, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + // 47447 - Corrosive Spit class spell_dragonblight_corrosive_spit : public AuraScript { @@ -1035,6 +1065,36 @@ class spell_dragonblight_end_of_the_line_quest_completion_script : public SpellS } }; +/*###### +## Quest 12028: Spiritual Insight +######*/ + +enum SpiritualInsight +{ + SPELL_SPIRITUAL_INSIGHT = 47189 +}; + +// 47190 - Toalu'u's Spiritual Incense +class spell_dragonblight_toaluus_spiritual_incense : public AuraScript +{ + PrepareAuraScript(spell_dragonblight_toaluus_spiritual_incense); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SPIRITUAL_INSIGHT }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_SPIRITUAL_INSIGHT); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_dragonblight_toaluus_spiritual_incense::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_dragonblight() { RegisterCreatureAI(npc_commander_eligor_dawnbringer); @@ -1052,8 +1112,10 @@ void AddSC_dragonblight() RegisterSpellScript(spell_dragonblight_bombard_the_ballistae_fx_master); RegisterSpellScript(spell_dragonblight_surge_needle_teleporter); RegisterSpellScript(spell_dragonblight_fill_blood_unholy_frost_gem); + RegisterSpellScript(spell_dragonblight_scrape_corrosive_spit); RegisterSpellScript(spell_dragonblight_corrosive_spit); RegisterSpellScript(spell_dragonblight_focus_on_the_beach_quest_completion_script); RegisterSpellScript(spell_dragonblight_atop_the_woodlands_quest_completion_script); RegisterSpellScript(spell_dragonblight_end_of_the_line_quest_completion_script); + RegisterSpellScript(spell_dragonblight_toaluus_spiritual_incense); } diff --git a/src/server/scripts/Northrend/zone_grizzly_hills.cpp b/src/server/scripts/Northrend/zone_grizzly_hills.cpp index 1ec851a1f8c..32017d9f486 100644 --- a/src/server/scripts/Northrend/zone_grizzly_hills.cpp +++ b/src/server/scripts/Northrend/zone_grizzly_hills.cpp @@ -1066,6 +1066,39 @@ class spell_grizzly_hills_hand_over_reins : public SpellScript } }; +/*###### +## Quest 12121: See You on the Other Side +######*/ + +enum SeeYouOnTheOtherSide +{ + SPELL_SUMMON_YOUR_CORPSE = 61612, + SPELL_ON_THE_OTHER_SIDE = 61611 +}; + +// 47744 - Rage of Jin'arrak +class spell_grizzly_hills_rage_of_jinarrak : public AuraScript +{ + PrepareAuraScript(spell_grizzly_hills_rage_of_jinarrak); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_SUMMON_YOUR_CORPSE, SPELL_ON_THE_OTHER_SIDE }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_SUMMON_YOUR_CORPSE, true); + target->CastSpell(target, SPELL_ON_THE_OTHER_SIDE, true); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_grizzly_hills_rage_of_jinarrak::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_grizzly_hills() { RegisterCreatureAI(npc_emily); @@ -1091,4 +1124,5 @@ void AddSC_grizzly_hills() RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook); RegisterSpellScript(spell_grizzly_hills_escape_from_silverbrook_summon_worgen); RegisterSpellScript(spell_grizzly_hills_hand_over_reins); + RegisterSpellScript(spell_grizzly_hills_rage_of_jinarrak); } diff --git a/src/server/scripts/Northrend/zone_howling_fjord.cpp b/src/server/scripts/Northrend/zone_howling_fjord.cpp index f9fec626827..d7518888cf5 100644 --- a/src/server/scripts/Northrend/zone_howling_fjord.cpp +++ b/src/server/scripts/Northrend/zone_howling_fjord.cpp @@ -749,6 +749,94 @@ class spell_fjord_failed_mix_concoction_2 : public SpellScript } }; +/*###### +## Quest 11448: The Explorers' League Outpost +######*/ + +enum TheExplorersLeagueOutpost +{ + SPELL_TAXI_TO_EXPLORERS_LEAGUE = 44280 +}; + +// 51221 - Taxi to Explorers' League Outpost +class spell_fjord_taxi_to_explorers_league_outpost : public AuraScript +{ + PrepareAuraScript(spell_fjord_taxi_to_explorers_league_outpost); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_TAXI_TO_EXPLORERS_LEAGUE }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_TAXI_TO_EXPLORERS_LEAGUE); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_taxi_to_explorers_league_outpost::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Quest 11323, 11325: In Worg's Clothing +######*/ + +enum InWorgsClothing +{ + SPELL_WORG_DISGUISE_DUMMY = 68347, + SPELL_WORG_DISGUISE = 43369 +}; + +// 43369 - Worg Disguise +class spell_fjord_worg_disguise : public AuraScript +{ + PrepareAuraScript(spell_fjord_worg_disguise); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WORG_DISGUISE_DUMMY }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_WORG_DISGUISE_DUMMY); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_WORG_DISGUISE_DUMMY); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_fjord_worg_disguise::AfterApply, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL); + AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise::AfterRemove, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 68347 - Worg Disguise +class spell_fjord_worg_disguise_dummy : public AuraScript +{ + PrepareAuraScript(spell_fjord_worg_disguise_dummy); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WORG_DISGUISE }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_WORG_DISGUISE); + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_fjord_worg_disguise_dummy::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_howling_fjord() { RegisterCreatureAI(npc_daegarn); @@ -769,4 +857,7 @@ void AddSC_howling_fjord() RegisterSpellScript(spell_fjord_mixing_vrykul_blood); RegisterSpellScript(spell_fjord_failed_mix_concoction_1); RegisterSpellScript(spell_fjord_failed_mix_concoction_2); + RegisterSpellScript(spell_fjord_taxi_to_explorers_league_outpost); + RegisterSpellScript(spell_fjord_worg_disguise); + RegisterSpellScript(spell_fjord_worg_disguise_dummy); } diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index a76580a65e6..9bcc0f7733c 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -1321,6 +1321,39 @@ class spell_storm_peaks_flaming_arrow_triggered_effect : public AuraScript } }; +/*###### +## Quest 12920: Catching up with Brann +######*/ + +enum CatchingUpWithBrann +{ + SPELL_DESPAWN_BRANN = 61121, + SPELL_CONTACT_BRANN = 55038 +}; + +// 61122 - Contact Brann +class spell_storm_peaks_contact_brann : public SpellScript +{ + PrepareSpellScript(spell_storm_peaks_contact_brann); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_DESPAWN_BRANN, SPELL_CONTACT_BRANN }); + } + + void HandleScript(SpellEffIndex /*effIndex*/) + { + Unit* caster = GetCaster(); + caster->CastSpell(caster, SPELL_DESPAWN_BRANN); + caster->CastSpell(caster, SPELL_CONTACT_BRANN); + } + + void Register() override + { + OnEffectHit += SpellEffectFn(spell_storm_peaks_contact_brann::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } +}; + void AddSC_storm_peaks() { RegisterCreatureAI(npc_brunnhildar_prisoner); @@ -1350,4 +1383,5 @@ void AddSC_storm_peaks() RegisterSpellScript(spell_storm_peaks_unstable_explosive_detonation); RegisterSpellScript(spell_storm_peaks_call_of_earth); RegisterSpellScript(spell_storm_peaks_flaming_arrow_triggered_effect); + RegisterSpellScript(spell_storm_peaks_contact_brann); } diff --git a/src/server/scripts/Northrend/zone_zuldrak.cpp b/src/server/scripts/Northrend/zone_zuldrak.cpp index a4b18fbd7a7..8d6c19b5b95 100644 --- a/src/server/scripts/Northrend/zone_zuldrak.cpp +++ b/src/server/scripts/Northrend/zone_zuldrak.cpp @@ -1075,6 +1075,27 @@ class spell_zuldrak_quenching_mist : public AuraScript } }; +// 52989 - Akali's Stun +class spell_zuldrak_akalis_stun : public AuraScript +{ + PrepareAuraScript(spell_zuldrak_akalis_stun); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_FLICKERING_FLAMES }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAurasDueToSpell(SPELL_FLICKERING_FLAMES); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_akalis_stun::AfterApply, EFFECT_0, SPELL_AURA_MOD_STUN, AURA_EFFECT_HANDLE_REAL); + } +}; + /*###### ## Quest 12661: Infiltrating Voltarus / 12669: So Far, So Bad / 12676: Sabotage / 12677: Hazardous Materials / 12713: Betrayal ######*/ @@ -1196,6 +1217,109 @@ class spell_zuldrak_gymers_throw : public SpellScript } }; +/*###### +## Quest 12557: Lab Work +######*/ + +enum LabWork +{ + SPELL_LAB_WORK_HAVE_WITHERED_BATWING = 51060, + SPELL_LAB_WORK_HAVE_MUDDY_MIRE_MAGGOT = 51068, + SPELL_LAB_WORK_HAVE_AMBERSEED = 51088, + SPELL_LAB_WORK_HAVE_CHILLED_SERPENT_MUCUS = 51094, + + SPELL_WITHERED_BATWING_KILL_CREDIT = 51226, + SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT = 51227, + SPELL_AMBERSEED_KILL_CREDIT = 51228, + SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT = 51229 +}; + +// 51060 - Have Withered Batwing +// 51068 - Have Muddy Mire Maggot +// 51088 - Have Amberseed +// 51094 - Have Chilled Serpent Mucus +class spell_zuldrak_have_ingredient : public AuraScript +{ + PrepareAuraScript(spell_zuldrak_have_ingredient); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_WITHERED_BATWING_KILL_CREDIT, + SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT, + SPELL_AMBERSEED_KILL_CREDIT, + SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT + }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + switch (GetId()) + { + case SPELL_LAB_WORK_HAVE_WITHERED_BATWING: + GetTarget()->CastSpell(GetTarget(), SPELL_WITHERED_BATWING_KILL_CREDIT); + break; + case SPELL_LAB_WORK_HAVE_MUDDY_MIRE_MAGGOT: + GetTarget()->CastSpell(GetTarget(), SPELL_MUDDY_MIRE_MAGGOT_KILL_CREDIT); + break; + case SPELL_LAB_WORK_HAVE_AMBERSEED: + GetTarget()->CastSpell(GetTarget(), SPELL_AMBERSEED_KILL_CREDIT); + break; + case SPELL_LAB_WORK_HAVE_CHILLED_SERPENT_MUCUS: + GetTarget()->CastSpell(GetTarget(), SPELL_CHILLED_SERPENT_MUCUS_KILL_CREDIT); + break; + default: + break; + } + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_have_ingredient::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Quest 12710: Disclosure +######*/ + +// 52839 - Summon Escort Aura +class spell_zuldrak_summon_escort_aura : public AuraScript +{ + PrepareAuraScript(spell_zuldrak_summon_escort_aura); + + enum Disclosure + { + SPELL_SCOURGE_DISGUISE = 51966, + SPELL_SUMMON_ESCORT = 52775, + SPELL_SCOURGE_DISGUISE_ESCORT = 52842 + }; + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_SCOURGE_DISGUISE, + SPELL_SUMMON_ESCORT, + SPELL_SCOURGE_DISGUISE_ESCORT + }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->RemoveAurasDueToSpell(SPELL_SCOURGE_DISGUISE); + target->CastSpell(target, SPELL_SUMMON_ESCORT); + target->CastSpell(target, SPELL_SCOURGE_DISGUISE_ESCORT); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_zuldrak_summon_escort_aura::AfterApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_zuldrak() { RegisterCreatureAI(npc_released_offspring_harkoa); @@ -1220,8 +1344,11 @@ void AddSC_zuldrak() RegisterSpellScript(spell_zuldrak_summon_nass); RegisterSpellScript(spell_zuldrak_remove_akalis_stun); RegisterSpellScript(spell_zuldrak_quenching_mist); + RegisterSpellScript(spell_zuldrak_akalis_stun); RegisterSpellScript(spell_zuldrak_summon_stefan); RegisterSpellScript(spell_zuldrak_zuldrak_rat); RegisterSpellScript(spell_zuldrak_gymers_grab); RegisterSpellScript(spell_zuldrak_gymers_throw); + RegisterSpellScript(spell_zuldrak_have_ingredient); + RegisterSpellScript(spell_zuldrak_summon_escort_aura); } diff --git a/src/server/scripts/Outland/outland_script_loader.cpp b/src/server/scripts/Outland/outland_script_loader.cpp index 605d0e383c5..95c9dc5a9af 100644 --- a/src/server/scripts/Outland/outland_script_loader.cpp +++ b/src/server/scripts/Outland/outland_script_loader.cpp @@ -136,7 +136,7 @@ void AddSC_netherstorm(); void AddSC_shadowmoon_valley(); // void AddSC_shattrath_city(); void AddSC_terokkar_forest(); -// void AddSC_zangarmarsh(); +void AddSC_zangarmarsh(); // The name of this function should match: // void Add${NameOfDirectory}Scripts() @@ -262,5 +262,5 @@ void AddOutlandScripts() AddSC_shadowmoon_valley(); // AddSC_shattrath_city(); AddSC_terokkar_forest(); - // AddSC_zangarmarsh(); + AddSC_zangarmarsh(); } diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp index e3edce057eb..97b57e3e125 100644 --- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp +++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp @@ -1308,6 +1308,87 @@ class spell_bem_check_fly_mount : public SpellScript } }; +enum ApexisSwiftness +{ + SPELL_APEXIS_VIBRATIONS = 40623, + SPELL_APEXIS_EMANATIONS = 40625, + SPELL_APEXIS_ENLIGHTENMENT = 40626, + SPELL_SWIFTNESS_APEXIS_VIBRATIONS = 40624, + SPELL_SWIFTNESS_APEXIS_EMANATIONS = 40627, + SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT = 40628 +}; + +// 40623 - Apexis Vibrations +// 40625 - Apexis Emanations +// 40626 - Apexis Enlightenment +class spell_bem_apexis_swiftness : public AuraScript +{ + PrepareAuraScript(spell_bem_apexis_swiftness); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo( + { + SPELL_SWIFTNESS_APEXIS_VIBRATIONS, + SPELL_SWIFTNESS_APEXIS_EMANATIONS, + SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT + }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + switch (GetId()) + { + case SPELL_APEXIS_VIBRATIONS: + GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_VIBRATIONS); + break; + case SPELL_APEXIS_EMANATIONS: + GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_EMANATIONS); + break; + case SPELL_APEXIS_ENLIGHTENMENT: + GetTarget()->RemoveAurasDueToSpell(SPELL_SWIFTNESS_APEXIS_ENLIGHTENMENT); + break; + default: + break; + } + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_bem_apexis_swiftness::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +/*###### +## Quest 10525: Vision Guide +######*/ + +enum VisionGuide +{ + SPELL_VISION_GUIDE = 36573 +}; + +// 36587 - Vision Guide +class spell_bem_vision_guide : public AuraScript +{ + PrepareAuraScript(spell_bem_vision_guide); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_VISION_GUIDE }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->CastSpell(GetTarget(), SPELL_VISION_GUIDE, true); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_bem_vision_guide::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + void AddSC_blades_edge_mountains() { new npc_nether_drake(); @@ -1329,4 +1410,6 @@ void AddSC_blades_edge_mountains() RegisterSpellScript(spell_bem_aggro_burst); RegisterSpellScript(spell_bem_choose_loc); RegisterSpellScript(spell_bem_check_fly_mount); + RegisterSpellScript(spell_bem_apexis_swiftness); + RegisterSpellScript(spell_bem_vision_guide); } diff --git a/src/server/scripts/Outland/zone_zangarmarsh.cpp b/src/server/scripts/Outland/zone_zangarmarsh.cpp new file mode 100644 index 00000000000..113002e999e --- /dev/null +++ b/src/server/scripts/Outland/zone_zangarmarsh.cpp @@ -0,0 +1,100 @@ +/* + * This file is part of the TrinityCore Project. See AUTHORS file for Copyright information + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "SpellScript.h" +#include "Unit.h" + +/*###### +## Quest 9718: As the Crow Flies +######*/ + +enum AsTheCrowFlies +{ + SPELL_STORMCROW_SHAPE = 31746, + SPELL_WHISPER_AURA_1 = 31773, + SPELL_WHISPER_AURA_2 = 31774, + SPELL_WHISPER_AURA_3 = 31775, + SPELL_WHISPER_AURA_4 = 31776, + SPELL_WHISPER_AURA_5 = 31777 +}; + +// 31606 - Stormcrow Amulet +class spell_zangarmarsh_stormcrow_amulet : public AuraScript +{ + PrepareAuraScript(spell_zangarmarsh_stormcrow_amulet); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_STORMCROW_SHAPE, SPELL_WHISPER_AURA_1 }); + } + + void AfterApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_STORMCROW_SHAPE, true); + target->CastSpell(target, SPELL_WHISPER_AURA_1, true); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_zangarmarsh_stormcrow_amulet::AfterApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +// 31773, 31774, 31775, 31776 - As the Crow Flies Whisper Aura +class spell_zangarmarsh_whisper_aura : public AuraScript +{ + PrepareAuraScript(spell_zangarmarsh_whisper_aura); + + bool Validate(SpellInfo const* /*spellInfo*/) override + { + return ValidateSpellInfo({ SPELL_WHISPER_AURA_5 }); + } + + void AfterRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + switch (GetId()) + { + case SPELL_WHISPER_AURA_1: + GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_2, true); + break; + case SPELL_WHISPER_AURA_2: + GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_3, true); + break; + case SPELL_WHISPER_AURA_3: + GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_4, true); + break; + case SPELL_WHISPER_AURA_4: + GetTarget()->CastSpell(GetTarget(), SPELL_WHISPER_AURA_5, true); + break; + default: + break; + } + } + + void Register() override + { + AfterEffectRemove += AuraEffectRemoveFn(spell_zangarmarsh_whisper_aura::AfterRemove, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } +}; + +void AddSC_zangarmarsh() +{ + RegisterSpellScript(spell_zangarmarsh_stormcrow_amulet); + RegisterSpellScript(spell_zangarmarsh_whisper_aura); +} |