diff options
96 files changed, 2131 insertions, 810 deletions
diff --git a/sql/updates/world/2014_09_22_00_world.sql b/sql/updates/world/2014_09_22_00_world.sql new file mode 100644 index 00000000000..3a252cf74bc --- /dev/null +++ b/sql/updates/world/2014_09_22_00_world.sql @@ -0,0 +1,32 @@ +-- UPDATE `spell_dbc` SET `Effect1`=28,`EffectMiscValueB1`=64 WHERE `Id`IN(29396,29397); 335a only + +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(19656,17034) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`IN(1965600,1965601) AND `source_type`=9; +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` =17034; + +DELETE FROM `creature` WHERE `id`=17034; + +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(19656, 0, 0, 0, 11, 0, 100, 0, 0, 0, 0, 0, 87, 1965600, 1965601, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Invisible Location Trigger - On Just Summoned - Run Random Script'), +(1965600, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 29396, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Invisible Location Trigger - Script 1 - Cast Summon Kaliri Female'), +(1965601, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 29397, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Invisible Location Trigger - Script 2 - Cast Summon Kaliri Male'), +(17034, 0, 1, 0, 8, 0, 100, 0, 29435, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Female Kaliri Hatchling - On Spellhit Capture Female Kaliri Hatchling - Despawn'); + +UPDATE `gameobject_template` SET `AIName`='SmartGameObjectAI' WHERE `entry`=181582; +DELETE FROM `smart_scripts` WHERE `entryorguid`=181582 AND `source_type`=1; + +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(181582, 1, 0, 1, 70, 0, 100, 0, 2, 0, 0, 0, 12, 19656, 1, 30000, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Kaliri Nest - On State Changed - Summon Invisible Location Trigger'), +(181582, 1, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 70, 300, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Kaliri Nest - On State Changed - Despawn'); + +UPDATE `gameobject` SET `state`=1 WHERE `id`=181582; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=19656; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 19656, 0, 0, 23, 1, 3556, 0, 0, 0, 0, 0, '', ''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`IN(13,17) AND `SourceEntry`=29435; + +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 29435, 0, 0, 31, 0, 3, 17034, 0, 0, 0, 0, '', 'Capture Female Kaliri Hatchling requires target Female Kaliri Hatchling'), +(17, 0, 29435, 0, 0, 31, 1, 3, 17034, 0, 0, 0, 0, '', 'Capture Female Kaliri Hatchling requires target Female Kaliri Hatchling'); diff --git a/sql/updates/world/2014_09_23_00_world.sql b/sql/updates/world/2014_09_23_00_world.sql new file mode 100644 index 00000000000..bc552663771 --- /dev/null +++ b/sql/updates/world/2014_09_23_00_world.sql @@ -0,0 +1,15 @@ +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=45274; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 45274, 0, 0, 31, 1, 3, 25226, 0, 0, 0, 0, '', 'The King\'s Empty Conch requires target Scalder'), +(17, 0, 45274, 0, 0, 36, 1, 0, 0, 0, 1, 0, 0, '', 'The King\'s Empty Conch requires target is dead'); + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(25226,25197); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(25226,25197) 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(25226, 0, 0, 0, 9, 0, 100, 0, 0, 20, 10000, 15000, 11, 50257, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Scalder - On Range - Cast Scalding Blast'), +(25226, 0, 1, 0, 9, 0, 100, 0, 0, 3000, 2500, 4000, 11, 32011, 64, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Scalder - On Range - Cast Water Bolt'), +(25197, 0, 0, 0,20, 0, 100, 0, 11571, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'King Mrgl-Mrgl - On Quest Reward (Learning to Communicate) - Say'); + +DELETE FROM `creature_text` WHERE `entry`=25197; +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES +(25197, 0, 0, 'There, $n, now you will be able to speak with, and understand, the Winterfin murlocs.', 12, 0, 100, 1, 0, 0, 'King Mrgl-Mrgl',24428); diff --git a/sql/updates/world/2014_09_23_01_world.sql b/sql/updates/world/2014_09_23_01_world.sql new file mode 100644 index 00000000000..9ce9e338f44 --- /dev/null +++ b/sql/updates/world/2014_09_23_01_world.sql @@ -0,0 +1,2 @@ +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=29435; +UPDATE `smart_scripts` SET `action_type`=11, `action_param1`=39812, `action_param2`=2, `comment`='Wild Sparrowhawk - On Script - Cast Captured Sparrowhawk' WHERE `entryorguid`=2297900 AND `source_type`=9 AND `id`=2 AND `link`=0; diff --git a/sql/updates/world/2014_09_23_02_world.sql b/sql/updates/world/2014_09_23_02_world.sql new file mode 100644 index 00000000000..dedfbbe95b1 --- /dev/null +++ b/sql/updates/world/2014_09_23_02_world.sql @@ -0,0 +1,83 @@ +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(29851,29860,29858,29859); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(29851,29860,29858,29859) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid`=2985100 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(2985100, 9, 0, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 12, 29860, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 8552.679, 2653.384, 652.3538, 5.757316, 'General Lightsbane - Script - Summon Vile'), +(2985100, 9, 1, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 12, 29858, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 8597.88, 2668.878, 652.3538, 4.433503, 'General Lightsbane - Script - Summon Lady Nightswood'), +(2985100, 9, 2, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 12, 29859, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 8556.31, 2633.728, 652.4367, 0.3490658, 'General Lightsbane - Script - Summon The Leaper'), +(29851, 0, 0, 1, 7, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29860, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Evade - Set Data on Vile'), +(29851, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29858, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Evade - Set Data on Lady Nightswood'), +(29851, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29859, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Evade - Set Data on The Leaper'), +(29851, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Evade - Despawn'), +(29851, 0, 4, 5, 54, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Just Summoned - Say Line'), +(29851, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Just Summoned - Attack'), +(29851, 0, 6, 0, 4, 0, 100, 0, 0, 0, 0, 0, 80, 2985100, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Agro - Run Timed Action List (IC Only)'), +(29851, 0, 7, 0, 9, 0, 100, 0, 0, 5, 13000, 18000, 11, 60186, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Range - Cast Plague Strike'), +(29851, 0, 8, 0, 9, 0, 100, 0, 0, 5, 8000, 11000, 11, 15284, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Range - Cast Cleave'), +(29851, 0, 9, 0, 9, 0, 100, 0, 3000, 5000, 10000, 15000, 11, 60160, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Range - Cast Death and Decay'), +(29851, 0, 10, 11, 6, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29860, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Death - Set Data on Vile'), +(29851, 0, 11, 12, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29858, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Death - Set Data on Lady Nightswood'), +(29851, 0, 12, 0, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 29859, 0, 0, 0, 0, 0, 0, 'General Lightsbane - On Death - Set Data on The Leaper'), +(29860, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 1, 29860, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Just Summoned - Start WP'), +(29860, 0, 1, 2, 40, 0, 100, 0, 8, 29860, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Reached WP8 - Set Home Position'), +(29860, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Reached WP8 - Set Aggresive'), +(29860, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Reached WP8 - Say Line'), +(29860, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 29851, 0, 0, 0, 0, 0, 0, 'Vile - On Reached WP8 - Attack General Lightsbane'), +(29860, 0, 5, 0, 38, 0, 100, 0, 1, 1, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Data Set 1 1 - Despawn'), +(29860, 0, 6, 0, 4, 0, 100, 0, 0, 0, 0, 0, 11, 37548, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Agro - Cast Taunt'), +(29860, 0, 7, 0, 0, 0, 100, 0, 8000, 15000, 10000, 15000, 11, 37548, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Vile - IC - Cast Taunt'), +(29860, 0, 8, 0, 9, 0, 100, 0, 0, 5, 5000, 8000, 11, 6253, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Range - Cast Back Hand'), +(29860, 0, 9, 0, 0, 0, 100, 0, 10000, 15000, 15000, 23000, 11, 56646, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - IC - Cast Enrage'), +(29858, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 1, 29858, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Just Summoned - Start WP'), +(29858, 0, 1, 2, 40, 0, 100, 0, 7, 29858, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Reached WP7 - Set Home Position'), +(29858, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Reached WP7 - Set Aggresive'), +(29858, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Reached WP7 - Say Line'), +(29858, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 29851, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Reached WP7 - Attack General Lightsbane'), +(29858, 0, 5, 0, 38, 0, 100, 0, 1, 1, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Data Set 1 1 - Despawn'), +(29858, 0, 6, 0, 0, 0, 100, 0, 0, 8000, 13000, 18000, 11, 5884, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - IC - Cast Banshee Curse'), +(29858, 0, 7, 0, 9, 0, 100, 0, 0, 5, 4000, 7000, 11, 16838, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Range - Cast Banshee Banshee Shiek'), +(29859, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 1, 29859, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Just Summoned - Start WP'), +(29859, 0, 1, 2, 40, 0, 100, 0, 6, 29859, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Reached WP7 - Set Home Position'), +(29859, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Reached WP7 - Set Aggresive'), +(29859, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Reached WP7 - Say Line'), +(29859, 0, 4, 0, 61, 0, 100, 0, 0, 0, 0, 0, 49, 0, 0, 0, 0, 0, 0, 19, 29851, 0, 0, 0, 0, 0, 0, 'The Leaper - On Reached WP7 - Attack General Lightsbane'), +(29859, 0, 5, 0, 38, 0, 100, 0, 1, 1, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Data Set 1 1 - Despawn'), +(29859, 0, 6, 0, 9, 0, 100, 0, 0, 5, 4000, 7000, 11, 60195, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Range - Cast Sinister Strike'), +(29859, 0, 7, 0, 0, 0, 100, 0, 5000, 8000, 30000, 35000, 11, 60177, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Range - Cast Hunger For Blood'); + +DELETE FROM `waypoints` WHERE `entry` IN(29860,29858,29859); +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +(29860, 1,8550.583, 2654.241, 652.3538, 'Vile'), +(29860, 2,8551.562, 2654.033, 652.3538, 'Vile'), +(29860, 3,8554.787, 2652.161, 652.3538, 'Vile'), +(29860, 4,8560.368, 2648.921, 652.3538, 'Vile'), +(29860, 5,8576.063, 2639.811, 652.3538, 'Vile'), +(29860, 6,8577.143, 2639.184, 652.3538, 'Vile'), +(29860, 7,8578.033, 2638.667, 652.3539, 'Vile'), +(29860, 8,8578.033, 2638.667, 652.3539, 'Vile'), +(29858, 1,8598.499, 2671.039, 652.3538, 'Lady Nightswood'), +(29858, 2,8598.224, 2670.077, 652.3538, 'Lady Nightswood'), +(29858, 3,8597.247, 2666.667, 652.3538, 'Lady Nightswood'), +(29858, 4,8595.948, 2662.132, 652.3538, 'Lady Nightswood'), +(29858, 5,8593.374, 2653.144, 652.3538, 'Lady Nightswood'), +(29858, 6,8589.56, 2639.825, 652.3538, 'Lady Nightswood'), +(29858, 7,8589.56, 2639.825, 652.3538, 'Lady Nightswood'), +(29859, 1,8558.935, 2633.13, 652.1038, 'The Leaper'), +(29859, 2,8567.935, 2631.38, 652.1038, 'The Leaper'), +(29859, 3,8569.185, 2631.38, 652.1038, 'The Leaper'), +(29859, 4,8577.435, 2631.88, 652.1038, 'The Leaper'), +(29859, 5,8585.435, 2632.38, 652.1038, 'The Leaper'), +(29859, 6,8586.87, 2632.519, 652.3538, 'The Leaper'); + +DELETE FROM `creature_text` WHERE `entry` IN(29860,29859,29858,29851); +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES +(29860, 0, 0, 'SMASH!', 12, 0, 100, 0, 0, 0, 'Vile',30471), +(29859, 0, 0, 'MRMRFRMRFRMRRRR!', 12, 0, 100, 0, 0, 0, 'The Leaper',30472), +(29858, 0, 0, 'My dear general, your time has come!', 12, 0, 100, 0, 0, 0, 'Lady Nightswood',30470), +(29851, 0, 0, 'You''re the one that''s been disrupting things? This should be easy.', 12, 0, 100, 0, 0, 0, 'General Lightsbane',30465); + +-- General Lightsbane 13:52:37 +-- Vile 13:52:44 +-- Lady Nightswood 13:52:55 +-- The Leaper 13:53:06 diff --git a/sql/updates/world/2014_09_23_03_world.sql b/sql/updates/world/2014_09_23_03_world.sql new file mode 100644 index 00000000000..366b9cd1197 --- /dev/null +++ b/sql/updates/world/2014_09_23_03_world.sql @@ -0,0 +1,28 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +42924, +43310, +42992, +42993, +42994, +43052, +43450 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(42924, 'spell_brewfest_giddyup'), +(43310, 'spell_brewfest_ram'), +(42992, 'spell_brewfest_ram'), +(42993, 'spell_brewfest_ram'), +(42994, 'spell_brewfest_ram'), +(43052, 'spell_brewfest_ram_fatigue'), +(43450, 'spell_brewfest_apple_trap'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry`=42924; +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43450; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(17, 0, 42924, 0, 0, 1, 0, 43332, 0, 0, 1, 172, 0, '', 'Cast Gore Bladder only if Cosmetic - Underwater Blood (no sound) aura is active'), +(13, 1, 43450, 0, 0, 1, 0, 43052, 0, 0, 0, 0, 0, '', 'Brewfest - apple trap - friendly DND targets only if does have aura Ram Fatigue'); + +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=-43883 AND `spell_effect`=-43052; +DELETE FROM `spell_linked_spell` WHERE `spell_trigger`=43450 AND `spell_effect`=-43052; +INSERT INTO `spell_linked_spell` (`spell_trigger`, `spell_effect`, `type`, `comment`) VALUES +(-43883, -43052, 0, 'Rental racing ram removed removes Ram Fatigue'); diff --git a/sql/updates/world/2014_09_23_04_world.sql b/sql/updates/world/2014_09_23_04_world.sql new file mode 100644 index 00000000000..26f1bfafdb6 --- /dev/null +++ b/sql/updates/world/2014_09_23_04_world.sql @@ -0,0 +1,5 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43332 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43332, 'spell_brewfest_exhausted_ram'); diff --git a/sql/updates/world/2014_09_24_00_world.sql b/sql/updates/world/2014_09_24_00_world.sql new file mode 100644 index 00000000000..99c2cf0abbb --- /dev/null +++ b/sql/updates/world/2014_09_24_00_world.sql @@ -0,0 +1,111 @@ +SET @CGUID := 29977; + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN(29070); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 29070, 0, 0, 31, 0, 3, 29840, 0, 0, 0, 0, '', 'Sovereign Rod target The Leaper'), +(13, 1, 29070, 0, 1, 31, 0, 3, 29770, 0, 0, 0, 0, '', 'Sovereign Rod target The Lady Nightswood'), +(13, 1, 29070, 0, 2, 31, 0, 3, 29769, 0, 0, 0, 0, '', 'Sovereign Rod target Vile'), +(13, 1, 29070, 0, 0, 1, 0, 29266, 0, 0, 0, 0, 0, '', 'Sovereign Rod target must have aura permament feign death'), +(13, 1, 29070, 0, 1, 1, 0, 29266, 0, 0, 0, 0, 0, '', 'Sovereign Rod target must have aura permament feign death'), +(13, 1, 29070, 0, 2, 1, 0, 29266, 0, 0, 0, 0, 0, '', 'Sovereign Rod target must have aura permament feign death'); + +DELETE FROM `creature_text` WHERE `entry` IN(29840,29770,29769); +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES +(29840, 0, 0, 'Mrrfrmrfrmrrrrr!', 12, 0, 100, 0, 0, 0, 'The Leaper',30463), +(29840, 1, 0, 'Mrmrmmrmrmrmrm... mrmrmrmr?!', 12, 0, 100, 1, 0, 12937, 'The Leaper',30459), +(29770, 0, 0, 'Who intrudes upon my ritual?', 12, 0, 100, 0, 0, 0, 'Lady Nightswood',30462), +(29770, 1, 0, 'You dare?! Where is Baron Sliver? I would have words with him!', 12, 0, 100, 34, 0, 1173, 'Lady Nightswood',30458), +(29769, 0, 0, 'Crush... maim... DESTROY!', 12, 0, 100, 0, 0, 0, 'Vile',30461), +(29769, 1, 0, 'Vile free? Vile love $n!', 12, 0, 100, 34, 0, 1446, 'Vile',30460); + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(29840,29770,29769); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(29840,29770,29769) 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(29770, 0, 1, 17, 61, 0, 100, 1, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On 1% HP - Set Unit Flags'), +(29770, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spawn - Set Invincibilty HP'), +(29770, 0, 3, 4, 2, 0, 100, 1, 0, 1, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On 1% HP - Turn hp regen off'), +(29770, 0, 4, 5, 61, 0, 100, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On 1% HP - Set Passive'), +(29770, 0, 5, 6, 61, 0, 100, 1, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On 1% HP - Cast Permament Feign Death'), +(29770, 0, 6, 1, 61, 0, 100, 1, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On 1% HP - Despawn After 60 Seconds'), +(29770, 0, 7, 8, 8, 0, 100, 0, 29071, 0, 0, 0, 33, 29846, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit Sovereign Rod - Quest Credit Free Your Mind'), +(29770, 0, 8, 9, 61, 0, 100, 1, 0, 0, 0, 0, 2, 2050, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set Faction'), +(29770, 0, 9, 10, 61, 0, 100, 1, 0, 0, 0, 0, 18, 33040, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set Unit Flags'), +(29770, 0, 10, 11, 61, 0, 100, 1, 0, 0, 0, 0, 11, 35426, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Cast Arcane Explosion Visual'), +(29770, 0, 11, 12, 61, 0, 100, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Say Line 2'), +(29770, 0, 12, 13, 61, 0, 100, 1, 0, 0, 0, 0, 28, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Remove Permament Feigm Death'), +(29770, 0, 13, 14, 61, 0, 100, 1, 0, 0, 0, 0, 19, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set Unit Flags 2'), +(29770, 0, 14, 15, 61, 0, 100, 1, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set Orientation'), +(29770, 0, 15, 23, 61, 0, 100, 1, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set Dynamic Flags'), +(29770, 0, 16, 0, 4, 0, 100, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Agro - Say'), +(29770, 0, 17, 18, 61, 0, 100, 1, 0, 0, 0, 0, 19, 536870912, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - Link - Remove Unit Flags'), +(29770, 0, 18, 0, 61, 0, 100, 1, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - Link - Evade'), +(29770, 0, 19, 0, 25, 0, 100, 0, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Reset - Cast Permament Feign Death'), +(29770, 0, 20, 0, 0, 0, 100, 0, 0, 8000, 13000, 18000, 11, 5884, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - IC - Cast Banshee Curse'), +(29770, 0, 21, 0, 9, 0, 100, 0, 0, 5, 4000, 7000, 11, 16838, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Range - Cast Banshee Banshee Shiek'), +(29770, 0, 22, 0, 11, 0, 100, 0, 0, 0, 0, 0, 19, 33552, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Respawn - Set Unit Flags'), +(29770, 0, 23, 24, 61, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Set HP Regen on'), +(29770, 0, 24, 0, 61, 0, 100, 1, 0, 0, 0, 0, 41, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - On Spellhit - Despawn After 15 Seconds'), +(29770, 0, 25, 0, 1, 0, 100, 0, 0, 0, 3000, 3000, 11, 55070, 0, 0, 0, 0, 0, 19, 29771, 0, 0, 0, 0, 0, 0, 'Lady Nightswood - OOC - Cast Shadow Cultist: Blue Smoke Beam'), +(29840, 0, 1, 17, 61, 0, 100, 1, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On 1% HP - Set Unit Flags'), +(29840, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spawn - Set Invincibilty HP'), +(29840, 0, 3, 4, 2, 0, 100, 1, 0, 1, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On 1% HP - Turn hp regen off'), +(29840, 0, 4, 5, 61, 0, 100, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On 1% HP - Set Passive'), +(29840, 0, 5, 6, 61, 0, 100, 1, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On 1% HP - Cast Permament Feign Death'), +(29840, 0, 6, 1, 61, 0, 100, 1, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On 1% HP - Despawn After 60 seconds'), +(29840, 0, 7, 8, 8, 0, 100, 0, 29071, 0, 0, 0, 33, 29847, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit Sovereign Rod - Quest Credit Free Your Mind'), +(29840, 0, 8, 9, 61, 0, 100, 1, 0, 0, 0, 0, 2, 2050, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set Faction'), +(29840, 0, 9, 10, 61, 0, 100, 1, 0, 0, 0, 0, 18, 33040, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set Unit Flags'), +(29840, 0, 10, 11, 61, 0, 100, 1, 0, 0, 0, 0, 11, 35426, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Cast Arcane Explosion Visual'), +(29840, 0, 11, 12, 61, 0, 100, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Say Line 2'), +(29840, 0, 12, 13, 61, 0, 100, 1, 0, 0, 0, 0, 28, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Remove Permament Feigm Death'), +(29840, 0, 13, 14, 61, 0, 100, 1, 0, 0, 0, 0, 19, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set Unit Flags 2'), +(29840, 0, 14, 15, 61, 0, 100, 1, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set Orientation'), +(29840, 0, 15, 23, 61, 0, 100, 1, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set Dynamic Flags'), +(29840, 0, 16, 0, 4, 0, 100, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Agro - Say'), +(29840, 0, 17, 18, 61, 0, 100, 1, 0, 0, 0, 0, 19, 536870912, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - Link - Remove Unit Flags'), +(29840, 0, 18, 0, 61, 0, 100, 1, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - Link - Evade'), +(29840, 0, 19, 0, 25, 0, 100, 0, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Reset - Cast Permament Feign Death'), +(29840, 0, 20, 0, 9, 0, 100, 0, 0, 5, 4000, 7000, 11, 60195, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Range - Cast Sinister Strike'), +(29840, 0, 7, 21, 0, 0, 100, 0, 5000, 8000, 30000, 35000, 11, 60177, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Range - Cast Hunger For Blood'), +(29840, 0, 22, 0, 11, 0, 100, 0, 0, 0, 0, 0, 19, 33552, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Respawn - Set Unit Flags'), +(29840, 0, 23, 24, 61, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Set HP Regen on'), +(29840, 0, 24, 0, 61, 0, 100, 1, 0, 0, 0, 0, 41, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Leaper - On Spellhit - Despawn After 15 Seconds'), +(29769, 0, 1, 17, 61, 0, 100, 1, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On 1% HP - Set Unit Flags'), +(29769, 0, 2, 0, 11, 0, 100, 0, 0, 0, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spawn - Set Invincibilty HP'), +(29769, 0, 3, 4, 2, 0, 100, 1, 0, 1, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On 1% HP - Turn hp regen off'), +(29769, 0, 4, 5, 61, 0, 100, 1, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On 1% HP - Set Passive'), +(29769, 0, 5, 6, 61, 0, 100, 1, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On 1% HP - Cast Permament Feign Death'), +(29769, 0, 6, 1, 61, 0, 100, 1, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On 1% HP - Despawn After 60 seconds'), +(29769, 0, 7, 8, 8, 0, 100, 0, 29071, 0, 0, 0, 33, 29845, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit Sovereign Rod - Quest Credit Free Your Mind'), +(29769, 0, 8, 9, 61, 0, 100, 1, 0, 0, 0, 0, 2, 2050, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set Faction'), +(29769, 0, 9, 10, 61, 0, 100, 1, 0, 0, 0, 0, 18, 33040, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set Unit Flags'), +(29769, 0, 10, 11, 61, 0, 100, 1, 0, 0, 0, 0, 11, 35426, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Cast Arcane Explosion Visual'), +(29769, 0, 11, 12, 61, 0, 100, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Say Line 2'), +(29769, 0, 12, 13, 61, 0, 100, 1, 0, 0, 0, 0, 28, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Remove Permament Feigm Death'), +(29769, 0, 13, 14, 61, 0, 100, 1, 0, 0, 0, 0, 19, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set Unit Flags 2'), +(29769, 0, 14, 15, 61, 0, 100, 1, 0, 0, 0, 0, 66, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set Orientation'), +(29769, 0, 15, 23, 61, 0, 100, 1, 0, 0, 0, 0, 96, 32, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set Dynamic Flags'), +(29769, 0, 16, 0, 4, 0, 100, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Agro - Say'), +(29769, 0, 17, 18, 61, 0, 100, 1, 0, 0, 0, 0, 19, 536870912, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - Link - Remove Unit Flags'), +(29769, 0, 18, 0, 61, 0, 100, 1, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - Link - Evade'), +(29769, 0, 19, 0, 25, 0, 100, 0, 0, 0, 0, 0, 11, 29266, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Reset - Cast Permament Feign Death'), +(29769, 0, 20, 0, 9, 0, 100, 0, 0, 5, 5000, 8000, 11, 6253, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Range - Cast Back Hand'), +(29769, 0, 21, 0, 0, 0, 100, 0, 10000, 15000, 15000, 23000, 11, 56646, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - IC - Cast Enrage'), +(29769, 0, 22, 0, 11, 0, 100, 0, 0, 0, 0, 0, 19, 33552, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Respawn - Set Unit Flags'), +(29769, 0, 23, 24, 61, 0, 100, 1, 0, 0, 0, 0, 102, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Set HP Regen on'), +(29769, 0, 24, 0, 61, 0, 100, 1, 0, 0, 0, 0, 41, 15000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Vile - On Spellhit - Despawn After 15 Seconds'); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN(29769,29770,29840); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 8, 29769, 0, 0, 1, 1, 29266, 0, 0, 0, 0, 0, '', 'Only run SAI if has aura Permanent Feign Death'), +(22, 8, 29770, 0, 0, 1, 1, 29266, 0, 0, 0, 0, 0, '', 'Only run SAI if has aura Permanent Feign Death'), +(22, 8, 29840, 0, 0, 1, 1, 29266, 0, 0, 0, 0, 0, '', 'Only run SAI if has aura Permanent Feign Death'), +(22, 20, 29769, 0, 0, 38, 1, 2, 4, 0, 0, 0, 0, '', 'Only run SAI if HP at 1% or less'), +(22, 20, 29770, 0, 0, 38, 1, 2, 4, 0, 0, 0, 0, '', 'Only run SAI if HP at 1% or less'), +(22, 20, 29840, 0, 0, 38, 1, 2, 4, 0, 0, 0, 0, '', 'Only run SAI if HP at 1% or less'), +(22, 26, 29770, 0, 0, 1, 1, 29266, 0, 0, 1, 0, 0, '', 'Only run SAI if does not have aura Permanent Feign Death'); + +DELETE FROM `creature` WHERE `guid`=@CGUID+0 AND `id`=29771; +INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phasemask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES +(@CGUID+0, 29771, 571, 1, 2, 8406.269, 2829.692, 718.509, 3.996804, 120, 0, 0); -- 29771 (Area: 210) diff --git a/sql/updates/world/2014_09_24_01_world.sql b/sql/updates/world/2014_09_24_01_world.sql new file mode 100644 index 00000000000..e94e17d08df --- /dev/null +++ b/sql/updates/world/2014_09_24_01_world.sql @@ -0,0 +1,43 @@ +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (24497,24527,24510); +UPDATE `creature_template` SET `unit_flags`=512 WHERE `entry`=24527; +UPDATE `creature_template` SET `unit_flags`=768 WHERE `entry`=24510; + + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24497; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24497, 0, 0, 0, 19, 0, 100, 0, 11409, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 1, 0, 20, 0, 100, 0, 11409, 0, 0, 0, 11, 44358, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 2, 0, 19, 0, 100, 0, 11412, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''There and Back Again'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 3, 0, 20, 0, 100, 0, 11412, 0, 0, 0, 11, 44358, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''There and Back Again'' Taken - Cast ''Rental Racing Ram'''); + + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24527; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24527, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43660, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Bok Dropcertain - Within 0-50 Range - Cast ''Brewfest - Throw Keg - DND'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24527; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 24527, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', ''), +(22, 1, 24527, 0, 0, 2, 0, 33797, 1, 0, 1, 0, 0, '', ''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=43662; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 43662, 0, 0, 31, 0, 3, 24510, 0, 0, 0, 0, '', ''); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24510; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24510, 0, 0, 0, 10, 0, 100, 0, 1, 25, 1000, 1000, 11, 43714, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Driz Tumblequick <Ram Racing Apprentice> - Within 0-50 Range - Cast ''Brewfest - Throw Keg - DND'''), +(24510, 0, 1, 0, 8, 0, 100, 0, 43662, 0, 0, 0, 85, 44601, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Driz Tumblequick <Ram Racing Apprentice> - On SpellHit - Cast ''Brewfest - Relay Race - Intro - Assign Kill Credit'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24510; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 24510, 0, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', ''), +(22, 1, 24510, 0, 0, 2, 0, 33797, 1, 0, 0, 0, 0, '', ''); + +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43714, +43876 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43714, 'spell_brewfest_relay_race_intro_force_player_to_throw'), +(43876, 'spell_brewfest_dismount_ram'); diff --git a/sql/updates/world/2014_09_25_00_world.sql b/sql/updates/world/2014_09_25_00_world.sql new file mode 100644 index 00000000000..02dfd0f4fc6 --- /dev/null +++ b/sql/updates/world/2014_09_25_00_world.sql @@ -0,0 +1,9 @@ +-- Converted Sentry SAI +SET @ENTRY := 24981; +UPDATE `creature_template` SET `AIName`="SmartAI", `ScriptName` = '' WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY 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`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES +(@ENTRY,0,0,1,63,0,100,1,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Say Line 0 (No Repeat)"), +(@ENTRY,0,1,2,61,0,100,1,0,0,0,0,11,45009,0,0,0,0,0,7,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Cast Converted Sentry Credit (No Repeat)"), +(@ENTRY,0,2,3,61,0,100,1,0,0,0,0,89,5,0,0,0,0,0,1,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Set random movement (No Repeat)"), +(@ENTRY,0,3,0,61,0,100,1,0,0,0,0,41,7500,0,0,0,0,0,1,0,0,0,0,0,0,0,"Converted Sentry - Just Summoned - Cast Despawn In 7500 ms (No Repeat)"); diff --git a/sql/updates/world/2014_09_25_01_world.sql b/sql/updates/world/2014_09_25_01_world.sql new file mode 100644 index 00000000000..726dda26e10 --- /dev/null +++ b/sql/updates/world/2014_09_25_01_world.sql @@ -0,0 +1,23 @@ +DELETE FROM `creature_template_addon` WHERE `entry`=24497; +INSERT INTO `creature_template_addon` (`entry`, `mount`, `bytes1`, `bytes2`, `auras`) VALUES +(24497, 22631, 0x0, 0x1, '43880 44069 42146 43492'); -- Ram Master Ray - Ramstein's Swift Work Ram, See Supplier Mark, Brewfest Racing Ram Aura [DND], Brewfest - apple trap - Unfriendly DND + +DELETE FROM `gossip_menu_option` WHERE `menu_id`=8976; +INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES +(8976, 1, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0), +(8976, 2, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8976; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15, 8976, 1, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'), +(15, 8976, 1, 0, 0, 9, 0, 11412, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "There and Back Again" taken'), +(15, 8976, 1, 0, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "There and Back Again" rewarded'), +(15, 8976, 2, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'), +(15, 8976, 2, 0, 0, 9, 0, 11409, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Now This is Ram Racing... Almost." taken'), +(15, 8976, 2, 0, 0, 28, 0, 11409, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Now This is Ram Racing... Almost." rewarded'); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24497 AND `id` >= 4; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24497, 0, 4, 6, 62, 0, 100, 0, 8976, 1, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 5, 6, 62, 0, 100, 0, 8976, 2, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Link - Cast ''Rental Racing Ram'''); diff --git a/sql/updates/world/2014_09_25_02_world.sql b/sql/updates/world/2014_09_25_02_world.sql new file mode 100644 index 00000000000..057ca76b638 --- /dev/null +++ b/sql/updates/world/2014_09_25_02_world.sql @@ -0,0 +1 @@ +UPDATE `creature_template` SET `faction`=21 WHERE `entry`=36672; -- Coldflame diff --git a/sql/updates/world/2014_09_26_00_world.sql b/sql/updates/world/2014_09_26_00_world.sql new file mode 100644 index 00000000000..3951f760e47 --- /dev/null +++ b/sql/updates/world/2014_09_26_00_world.sql @@ -0,0 +1,326 @@ +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN(60532,60545,60456); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 3, 60532, 0, 0, 31, 0, 3, 32184, 0, 0, 0, 0, '', 'Heart Explosion Effects effects 1 & 2 Target the Lich King'), +(13, 3, 60532, 0, 1, 31, 0, 3, 32272, 0, 0, 0, 0, '', 'Heart Explosion Effects effects 1 & 2 Target High Invoker Basaleph'), +(13, 4, 60532, 0, 0, 31, 0, 3, 32272, 0, 0, 0, 0, '', 'Heart Explosion Effects effect 3 Targets High Invoker Basaleph'), +(13, 1, 60545, 0, 0, 31, 0, 3, 32175, 0, 0, 0, 0, '', 'Koltiras Revenge targets Chosen Zealot'), +(13, 1, 60456, 0, 0, 31, 0, 3, 32184, 0, 0, 0, 0, '', 'Tirion Smashes Heart targets The Lich King'); + +DELETE FROM `spell_target_position` WHERE `id`=60585; +INSERT INTO `spell_target_position` (`id`, `effIndex`, `target_map`, `target_position_x`, `target_position_y`, `target_position_z`, `target_orientation`, `VerifiedBuild`) VALUES +(60585, 0, 571, 6488.41, 411.684, 481.937, 4.74, 0); + +DELETE FROM `creature_text` WHERE `entry` IN(32239,32311,32312,32184,32241); +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`,`BroadcastTextID`) VALUES +(32239, 0, 0, 'It is time. May the Light give us strength.', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32578), +(32239, 1, 0, 'Keep your heads down and follow my lead.', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32616), +(32239, 2, 0, 'Here it comes. Stand ready.', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32619), +(32239, 3, 0, 'Something''s wrong... I sense a dark presence.', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32620), +(32239, 4, 0, 'The Lich King is here. May the Light guide our blades.', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32621), +(32239, 5, 0, 'You sound a little too confident. Especially considering the way our last encounter ended.', 12, 0, 100, 25, 0, 0, 'Highlord Tirion Fordring',32592), +(32239, 6, 0, 'That might be, but I don''t need to stand on holy ground to run that disembodied heart of yours with the Ashbringer.', 12, 0, 100, 1, 0, 0, 'Highlord Tirion Fordring',32589), +(32239, 7, 0, 'The heart... the last remaining vestige of your humanity. I had to stop it from being destroyed. I had to see for myself. And at last I''m sure...', 12, 0, 100, 1, 0, 0, 'Highlord Tirion Fordring',32590), +(32239, 8, 0, 'Only shadows from the past remain. There''s nothing left to redeem!', 12, 0, 100, 0, 0, 0, 'Highlord Tirion Fordring',32595), +(32311, 0, 0, 'Take courage, crusaders. You do not fight alone!', 14, 0, 100, 0, 0, 0, 'Koltira Deathweaver',32708), +(32311, 1, 0, 'The Lich King is badly hurt. We ought to stay behind and finish him.', 12, 0, 100, 0, 0, 0, 'Koltira Deathweaver',32725), +(32312, 0, 0, 'Quick, through the portal! He won''t stay down for long.', 12, 0, 100, 0, 0, 0, 'Highlord Darion Mograine',32707), +(32312, 1, 0, 'Patience... we will get our chance soon enough. Be content that for once, it is Tirion who is in our debt.', 12, 0, 100, 0, 0, 0, 'Highlord Darion Mograine',32726), +(32184, 0, 0, 'Uninvited guests! Did you think you''d go unnoticed inside my dominion?', 12, 0, 100, 1, 0, 0, 'The Lich King',32582), +(32184, 1, 0, 'I must confess... you were not altogether unexpected. I hope you find your final resting place... to your liking.', 12, 0, 100, 1, 0, 0, 'The Lich King',32585), +(32184, 2, 0, 'Last time we met, you had the advantage of fighting on holy ground. You''ll find that our situation has been... reversed.', 12, 0, 100, 11, 0, 0, 'The Lich King',32588), +(32184, 3, 0, 'I call your bluff. You''re a paladin after all. Your obsession with redemption goes beyond the inane.', 12, 0, 100, 1, 0, 0, 'The Lich King',32593), +(32184, 4, 0, 'You surely wouldn''t destroy humanity''s only chance to redeem its most wayward son. You''d sooner die!', 12, 0, 100, 1, 0, 0, 'The Lich King',32594), +(32184, 5, 0, 'Arrrrggggggggggh!!!!', 14, 0, 100, 34, 0, 0, 'The Lich King',32694), +(32184, 6, 0, 'You... will pay for that, old man. Slay them all!', 14, 0, 100, 0, 0, 0, 'The Lich King',32698), +(32241, 0, 0, 'Tirion''s down! Defend him with your lives!', 14, 0, 100, 0, 0, 0, 'Disguised Crusader',32687); + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN(32239,32241,32184,24042,32175,32312,32309,32310,32311); +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(32239,32241,-74513,-74514,-74515,32184,24042,32175,32312,32309,32310,32311) AND `source_type`=0; +DELETE FROM `smart_scripts` WHERE `entryorguid` IN(3223900,3218400,3217500,3217501,3217502,3217503,3217504,3217505,3231200) 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(3231200, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 61487, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Cast Tirions Gambit Event Credit'), +(3231200, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 0'), +(3231200, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 18, 768, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 0'), +(3231200, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 0'), +(3231200, 9, 4, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 0'), +(3231200, 9, 5, 0, 0, 0, 100, 0, 0, 0, 0, 0, 50, 193941, 120, 0, 0, 0, 0, 8, 0, 0, 0, 6133.566, 2757.817, 573.914, 0, 'Highlord Darion Mograine - On Data Set 2 2 - Cast Tirions Gambit Event Credit'), +(3231200, 9, 6, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, 32311, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 1 on Koltira Deathweaver'), +(3231200, 9, 7, 0, 0, 0, 100, 0, 9000, 9000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Say Line 1 on Darion Mograine'), +(3231200, 9, 8, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 6, 6, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Highlord Tirion Fordring'), +(3231200, 9, 9, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 19, 32310, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Highlord Tirion Fordring'), +(3231200, 9, 10, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 19, 32311, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Highlord Tirion Fordring'), +(3231200, 9, 11, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 9, 32309, 0, 200, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Highlord Tirion Fordring'), +(3231200, 9, 12, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 4, 4, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Disguised Crusader'), +(3231200, 9, 13, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 45, 6, 6, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Set Data on Disguised Crusader'), +(3231200, 9, 14, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 60000, 6, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Despawn'), +(3231200, 9, 15, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - Script - Despawn'), +(3217500, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 1, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3217501, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 2, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3217502, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 3, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3217503, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 4, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3217504, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 5, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3217505, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 29, 4, 6, 0, 0, 0, 0, 21, 200, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - Script 1 - Follow Player'), +(3223900, 9, 0, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - Script - Say Line 2'), +(3223900, 9, 1, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - Script - Say Line 3'), +(3223900, 9, 2, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - Script - Say Line 4'), +(3223900, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 12, 32184, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 6180.305, 2657.647, 573.8704, 1.999412, 'Highlord Tirion Fordring - Script - Summon The Lich King'), +(3218400, 9, 0, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Data 1 1 (Highlord Tirion Fordring)'), +(3218400, 9, 1, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Face Highlord Tirion Fordring'), +(3218400, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 0'), +(3218400, 9, 3, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 1'), +(3218400, 9, 4, 0, 0, 0, 100, 0, 8000, 8000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 5 (Highlord Tirion Fordring)'), +(3218400, 9, 5, 0, 0, 0, 100, 0, 5500, 5500, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 2'), +(3218400, 9, 6, 0, 0, 0, 100, 0, 5500, 5500, 0, 0, 1, 6, 0, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 6 (Highlord Tirion Fordring)'), +(3218400, 9, 7, 0, 0, 0, 100, 0, 5500, 5500, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 3'), +(3218400, 9, 8, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 4'), +(3218400, 9, 9, 0, 0, 0, 100, 0, 5500, 5500, 0, 0, 1, 7, 0, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 7 (Highlord Tirion Fordring)'), +(3218400, 9, 10, 0, 0, 0, 100, 0, 11000, 11000, 0, 0, 1, 8, 0, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 8 (Highlord Tirion Fordring)'), +(3218400, 9, 11, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Data 2 2 (Highlord Tirion Fordring)'), +(3218400, 9, 12, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 2, 2, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'The Lich King - Script - Set Data 2 2 (Disguised Crusader)'), +(3218400, 9, 13, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 19, 32239, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Data 3 3 (Highlord Tirion Fordring)'), +(3218400, 9, 14, 0, 0, 0, 100, 0, 0, 0, 0, 0, 5, 34, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Play emote OneShotWoundCritical'), +(3218400, 9, 15, 0, 0, 0, 100, 0, 0, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 5'), +(3218400, 9, 16, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 10, 124725, 24042, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Data 1 1 (Generic Trigger LAB)'), +(3218400, 9, 17, 0, 0, 0, 100, 0, 500, 500, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Bytes 1'), +(3218400, 9, 18, 0, 0, 0, 100, 0, 0, 0, 0, 0, 18, 512, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Immune to NPc'), +(3218400, 9, 19, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'The Lich King - Script - Set Data 3 3 (Disguised Crusader)'), +(3218400, 9, 20, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 32241, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 0 (Disguised Crusader)'), +(3218400, 9, 21, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 5, 5, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'The Lich King - Script - Set Data 5 5 (Disguised Crusader)'), +(3218400, 9, 22, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Say Line 5'), +(3218400, 9, 23, 0, 0, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 9, 32175, 0, 200, 0, 0, 0, 0, 'The Lich King - Script - Say Line 5'), +(3218400, 9, 24, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 12, 32312, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 6173.659, 2673.544, 574.2061, 1.987102, 'The Lich King - Script - Set Data Chosen Zealot'), +(3218400, 9, 25, 0, 0, 0, 100, 0, 180000, 180000, 0, 0, 45, 2, 2, 0, 0, 0, 0, 19, 32311, 0, 0, 0, 0, 0, 0, 'The Lich King - Script - Set Data 2 2 on Koltira Deathweaver'), +(32309, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 29, 5, 0, 0, 0, 0, 0, 19, 32312, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Just Summoned - Follow Highlord Darion Mograine'), +(32310, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 0, 32310, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Just Summoned - Start WP'), +(32311, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 0, 32311, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Just Summoned - Start WP'), +(32309, 0, 1, 2, 38, 0, 100, 0, 1, 1, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Set Home Position'), +(32310, 0, 1, 2, 40, 0, 100, 0, 8, 32310, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Data Set - Set Home Position'), +(32311, 0, 1, 2, 40, 0, 100, 0, 12, 32311, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Set Home Position'), +(32309, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Set Hostile'), +(32310, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Data Set - Set Hostile'), +(32311, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Set Hostile'), +(32311, 0, 3, 0, 38, 0, 100, 0, 2, 2, 0, 0, 11, 60545, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Cast Koltiras Revenge'), +(32309, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Set Invincibility HP'), +(32309, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Set Passive'), +(32310, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Data Set - Set Passive'), +(32311, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Set Passive'), +(32309, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Despawn After 30 seconds'), +(32310, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Data Set - Despawn After 30 seconds'), +(32311, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Despawn After 30 seconds'), +(32309, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Ebon Knight - On Data Set - Evade'), +(32310, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Thassarian - On Data Set - Evade'), +(32311, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Koltira Deathweaver - On Data Set - Evade'), +(24042, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 11, 60484, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB - OLD - On Data Set - Cast Heart Explosion'), +(24042, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 60532, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Generic Trigger LAB - OLD - On Data Set - Cast Heart Explosion Effects'), +(32175, 0, 0, 1, 38, 0, 100, 0, 2, 2, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Aggresive'), +(32175, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 90, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Bytes 1'), +(32175, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Emote State None'), +(32175, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Evade'), +(32175, 0, 4, 5, 38, 0, 100, 0, 1, 1, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 1 1 - Set Passive'), +(32175, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 17, 27, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Emote State - STATE_READYUNARMED'), +(32175, 0, 6, 7, 61, 0, 100, 0, 0, 0, 0, 0, 91, 8, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Bytes 1'), +(32175, 0, 7, 9, 61, 0, 100, 0, 0, 0, 0, 0, 87, 3217500, 3217501, 3217502, 3217503, 3217504, 3217505, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 1 1 - Run Random Script'), +(32175, 0, 8, 0, 38, 0, 100, 0, 3, 3, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 2 2 - Set Aggresive'), +(32175, 0, 9, 0, 61, 0, 100, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - On Data Set 1 1 - Set Phase 2'), +(32175, 0, 10, 0, 1, 2, 100, 0, 0, 0, 1000, 1000, 66, 0, 0, 0, 0, 0, 0, 21, 100, 0, 0, 0, 0, 0, 0, 'Chosen Zealot - OOC (Phase 2) - Set Orientation'), +(32239, 0, 0, 1, 62, 0, 100, 0, 10200, 0, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Close Gossip Menu'), +(32239, 0, 1, 2, 61, 0, 100, 0, 0, 0, 0, 0, 81, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Set Npc Flags'), +(32239, 0, 2, 3, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 9, 32241, 0, 200, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Set Data Disguised Crusader'), +(32239, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 17, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Set Emote State 0'), +(32239, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Say Line 0'), +(32239, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 53, 0, 32239, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Start WP'), +(32239, 0, 6, 0, 61, 0, 100, 0, 0, 0, 0, 0, 91, 35536, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Gossip Select - Start WP'), +(32239, 0, 7, 8, 40, 0, 100, 1, 5, 32239, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Reached WP5 - Say Line 1'), +(32239, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 12, 32272, 1, 300000, 0, 0, 0, 8, 0, 0, 0, 6131.263, 2763.725, 573.9973, 5.131268, 'Highlord Tirion Fordring - On Reached WP5 - Summon High Invoker Basaleph'), +(32239, 0, 9, 0, 40, 0, 100, 1, 13, 32239, 0, 0, 80, 3223900, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Reached WP13 - Run Script'), +(32239, 0, 10, 0, 38, 0, 100, 0, 1, 1, 0, 0, 53, 0, 3223900, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Data Set - Start WP (Path 2)'), +(32239, 0, 11, 13, 40, 0, 100, 1, 3, 3223900, 0, 0, 71, 0, 0, 13262, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Reached WP3 (Path2) - Equip Item'), +(32239, 0, 12, 0, 38, 0, 100, 0, 2, 2, 0, 0, 11, 60456, 0, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Data Set - Cast Tirion Smashes Heart'), +(32239, 0, 13, 0, 61, 0, 100, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Reached WP3 (Path 2) - Set Home Position'), +(32239, 0, 14, 15, 38, 0, 100, 0, 3, 3, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Data Set - Set Orientation'), +(32239, 0, 15, 0, 61, 0, 100, 0, 0, 0, 0, 0, 90, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Data Set - Set Bytes 1'), +(32239, 0, 16, 0, 38, 0, 100, 0, 6, 6, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Tirion Fordring - On Data Set - Despawn'), +(32184, 0, 0, 3, 54, 0, 100, 0, 0, 0, 0, 0, 53, 0, 32184, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Just Summoned - Start WP'), +(32184, 0, 1, 2, 40, 0, 100, 0, 6, 32184, 0, 0, 80, 3218400, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Reached WP8 - Run Script'), +(32184, 0, 2, 0, 61, 0, 100, 0, 0, 0, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Reached WP8 - Set Home Position'), +(32184, 0, 3, 0, 61, 0, 100, 0, 0, 0, 0, 0, 102, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Reached WP8 - Switch HP Regen off'), +(32184, 0, 4, 0, 38, 0, 100, 0, 1, 1, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'The Lich King - On Data Set - Despawn'), +(32312, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 53, 0, 32312, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Just Summoned - Start WP'), +(32312, 0, 1, 0, 40, 0, 100, 1, 8, 32312, 0, 0, 107, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP1 - Summon Group'), +(32312, 0, 2, 3, 40, 0, 100, 1, 14, 32312, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Home Position'), +(32312, 0, 3, 4, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 9, 32309, 0, 200, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Data 1 1 Ebon Knight'), +(32312, 0, 4, 5, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 32310, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Data 1 1 Thassarian'), +(32312, 0, 5, 6, 61, 0, 100, 0, 0, 0, 0, 0, 45, 1, 1, 0, 0, 0, 0, 19, 32311, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Data 1 1 Koltira'), +(32312, 0, 6, 7, 61, 0, 100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, 32311, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Data 1 1 Koltira'), +(32312, 0, 7, 8, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Hostile'), +(32312, 0, 8, 10, 61, 0, 100, 0, 0, 0, 0, 0, 45, 3, 3, 0, 0, 0, 0, 9, 32175, 0, 200, 0, 0, 0, 0, 'Highlord Darion Mograine - On Reached WP9 - Set Data 3 3 Chosen Zealot'), +(32312, 0, 9, 0, 7, 2, 100, 0, 0, 0, 0, 0, 80, 3231200, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Evade (Phase 2) - Run Script'), +(32312, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 22, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Highlord Darion Mograine - On Just Summoned - Set Phase 2'), +(-74513, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 53, 0, 3224100, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Start WP'), +(-74514, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 53, 0, 3224101, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Start WP'), +(-74515, 0, 0, 1, 38, 0, 100, 0, 1, 1, 0, 0, 53, 0, 3224102, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Start WP'), +(-74513, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 91, 65536, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Remove Bytes 1'), +(-74514, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 91, 65536, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Remove Bytes 1'), +(-74515, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 91, 65536, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Remove Bytes 1'), +(-74513, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 53, 0, 3224103, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Start WP Path 2'), +(-74514, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 53, 0, 3224104, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Start WP Path 2'), +(-74515, 0, 2, 0, 38, 0, 100, 0, 2, 2, 0, 0, 53, 0, 3224105, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Start WP Path 2'), +(-74513, 0, 3, 7, 40, 0, 100, 0, 3, 3224103, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Reached WP3 (Path 2) - Set Home Position'), +(-74514, 0, 3, 7, 40, 0, 100, 0, 3, 3224104, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Reached WP3 (Path 2) - Set Home Position'), +(-74515, 0, 3, 7, 40, 0, 100, 0, 2, 3224105, 0, 0, 101, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Reached WP1 (Path 2) - Set Home Position'), +(-74513, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Set Oriietation'), +(-74514, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Set Orientation'), +(-74515, 0, 4, 5, 38, 0, 100, 0, 3, 3, 0, 0, 66, 0, 0, 0, 0, 0, 0, 19, 32184, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Set Orientation'), +(-74513, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 375, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Set Emote State'), +(-74514, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 375, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Set Emote State'), +(-74515, 0, 5, 0, 61, 0, 100, 0, 0, 0, 0, 0, 17, 375, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Set Emote State'), +(-74513, 0, 6, 0, 38, 0, 100, 0, 6, 6, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader - On Data Set - Despawn'), +(-74514, 0, 6, 0, 38, 0, 100, 0, 6, 6, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader - On Data Set - Despawn'), +(-74515, 0, 6, 0, 38, 0, 100, 0, 6, 6, 0, 0, 41, 60000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader - On Data Set - Despawn'), +(-74513, 0, 7, 8, 61, 0, 100, 0, 5, 5, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Set Invincibility HP'), +(-74514, 0, 7, 8, 61, 0, 100, 0, 5, 5, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Set Invincibilty HP'), +(-74515, 0, 7, 8, 61, 0, 100, 0, 5, 5, 0, 0, 42, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Set Invincibility HP'), +(-74513, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Set Hostile'), +(-74514, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Set Hostile'), +(-74515, 0, 8, 0, 61, 0, 100, 0, 0, 0, 0, 0, 8, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Set Hostile'), +(-74513, 0, 9, 10, 38, 0, 100, 0, 4, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Set Passive'), +(-74514, 0, 9, 10, 38, 0, 100, 0, 4, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Set Passive'), +(-74515, 0, 9, 10, 38, 0, 100, 0, 4, 4, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Set Set Passive'), +(-74513, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 1 - On Data Set - Evade'), +(-74514, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 2 - On Data Set - Evade'), +(-74515, 0, 10, 0, 61, 0, 100, 0, 0, 0, 0, 0, 24, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Disguised Crusader 3 - On Data Set - Evade'); + + +DELETE FROM `waypoints` WHERE `entry` IN(32239,3224100,3224101,3224102,3223900,3224103,3224104,3224105,32312,32184,32311,32310); +INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES +-- Owner GUID: Full: 0xF1307DF1007193AC Type: Unit Entry: 32241 Low: 7443372 +(3224100, 1,6255.6, 2654.405, 570.5411, 'Disguised Crusader 1'), +(3224100, 2,6249.35, 2645.405, 570.5411, 'Disguised Crusader 1'), +(3224100, 3,6230.1, 2629.655, 570.5411, 'Disguised Crusader 1'), +(3224100, 4,6217.1, 2622.655, 570.5411, 'Disguised Crusader 1'), +(3224100, 5,6205.6, 2622.405, 570.5411, 'Disguised Crusader 1'), +(3224100, 6,6196.85, 2623.905, 570.5411, 'Disguised Crusader 1'), +(3224100, 7,6185.403, 2647.951, 572.0817, 'Disguised Crusader 1'), +(3224100, 8,6178.403, 2662.951, 574.8317, 'Disguised Crusader 1'), +(3224100, 9,6164.403, 2693.701, 574.0817, 'Disguised Crusader 1'), +(3224100, 10,6157.653, 2708.701, 574.0817, 'Disguised Crusader 1'), +(3224100, 11,6148.903, 2727.201, 574.0817, 'Disguised Crusader 1'), +(3224100, 12,6153.403, 2736.701, 574.0817, 'Disguised Crusader 1'), +(3224100, 13,6178.653, 2749.201, 574.0817, 'Disguised Crusader 1'), +(3224100, 14,6170.568, 2762.95, 573.914, 'Disguised Crusader 1'), +-- Owner GUID: Full: 0xF1307DF1007193AC Type: Unit Entry: 32241 Low: 7443372 +(3224103, 1,6162.497, 2759.066, 574.164, 'Disguised Crusader 1 Path 2'), +(3224103, 2,6151.747, 2762.066, 574.164, 'Disguised Crusader 1 Path 2'), +(3224103, 3,6140.247, 2763.566, 574.164, 'Disguised Crusader 1 Path 2'), +-- Owner GUID: Full: 0xF1307DF1007193B0 Type: Unit Entry: 32241 Low: 7443376 +(3224101, 1,6237.105, 2639.326, 570.5411, 'Disguised Crusader 2'), +(3224101, 2,6230.855, 2634.076, 570.5411, 'Disguised Crusader 2'), +(3224101, 3,6218.105, 2624.826, 570.5411, 'Disguised Crusader 2'), +(3224101, 4,6198.605, 2617.576, 570.5411, 'Disguised Crusader 2'), +(3224101, 5,6188.855, 2621.576, 570.5411, 'Disguised Crusader 2'), +(3224101, 6,6176.773, 2653.593, 573.8317, 'Disguised Crusader 2'), +(3224101, 7,6168.773, 2671.843, 574.3317, 'Disguised Crusader 2'), +(3224101, 8,6159.773, 2691.343, 574.0817, 'Disguised Crusader 2'), +(3224101, 9,6148.523, 2715.593, 574.0817, 'Disguised Crusader 2'), +(3224101, 10,6140.773, 2732.093, 574.0817, 'Disguised Crusader 2'), +(3224101, 11,6159.023, 2742.843, 574.0817, 'Disguised Crusader 2'), +(3224101, 12,6174.273, 2749.343, 574.0817, 'Disguised Crusader 2'), +(3224101, 13,6168.286, 2761.969, 573.914, 'Disguised Crusader 2'), +-- Owner GUID: Full: 0xF1307DF1007193B0 Type: Unit Entry: 32241 Low: 7443376 +(3224104, 1,6161.965, 2757.105, 574.164, 'Disguised Crusader 2 Path 2'), +(3224104, 2,6148.465, 2755.605, 574.164, 'Disguised Crusader 2 Path 2'), +(3224104, 3,6132.715, 2757.605, 574.164, 'Disguised Crusader 2 Path 2'), +-- Owner GUID: Full: 0xF1307DF1007193AE Type: Unit Entry: 32241 Low: 7443374 +(3224102, 1,6238.134, 2664.245, 570.5411, 'Disguised Crusader 3'), +(3224102, 2,6238.134, 2651.495, 570.5411, 'Disguised Crusader 3'), +(3224102, 3,6229.384, 2629.995, 570.5411, 'Disguised Crusader 3'), +(3224102, 4,6210.384, 2622.745, 570.5411, 'Disguised Crusader 3'), +(3224102, 5,6200.634, 2631.995, 570.5411, 'Disguised Crusader 3'), +(3224102, 6,6196.85, 2623.905, 570.5411, 'Disguised Crusader 3'), +(3224102, 7,6178.815, 2677.46, 574.3317, 'Disguised Crusader 3'), +(3224102, 8,6171.315, 2691.71, 574.0817, 'Disguised Crusader 3'), +(3224102, 9,6163.565, 2707.96, 574.0817, 'Disguised Crusader 3'), +(3224102, 10,6159.815, 2715.71, 574.0817, 'Disguised Crusader 3'), +(3224102, 11,6151.315, 2733.71, 574.0817, 'Disguised Crusader 3'), +(3224102, 12,6154.565, 2737.46, 574.0817, 'Disguised Crusader 3'), +(3224102, 13,6179.565, 2751.46, 574.0817, 'Disguised Crusader 3'), +(3224102, 14,6173.314, 2764.15, 573.914, 'Disguised Crusader 3'), +-- Owner GUID: Full: 0xF1307DF1007193AE Type: Unit Entry: 32241 Low: 7443374 +(3224105, 1,6158.404, 2754.641, 574.164, 'Disguised Crusader 3 Path 2'), +(3224105, 2,6134.994, 2759.132, 573.914, 'Disguised Crusader 3 Path 2'), +-- Owner GUID: Full: 0xF1307DEF007193AA Type: Unit Entry: 32239 Low: 7443370 +(32239, 1,6241.011, 2653.922, 570.5411, 'Highlord Tirion Fordring'), +(32239, 2,6239.011, 2644.922, 570.5411, 'Highlord Tirion Fordring'), +(32239, 3,6224.011, 2631.422, 570.5411, 'Highlord Tirion Fordring'), +(32239, 4,6207.011, 2627.922, 570.5411, 'Highlord Tirion Fordring'), +(32239, 5,6193.261, 2629.172, 570.5411, 'Highlord Tirion Fordring'), -- Line 2 +(32239, 6,6181.6, 2656.623, 573.5817, 'Highlord Tirion Fordring'), +(32239, 7,6174.35, 2672.123, 574.3317, 'Highlord Tirion Fordring'), +(32239, 8,6164.6, 2692.873, 574.0817, 'Highlord Tirion Fordring'), +(32239, 9,6154.6, 2714.373, 574.0817, 'Highlord Tirion Fordring'), +(32239, 10,6146.1, 2732.873, 574.0817, 'Highlord Tirion Fordring'), +(32239, 11,6160.6, 2743.623, 574.0817, 'Highlord Tirion Fordring'), +(32239, 12,6170.1, 2753.873, 574.0817, 'Highlord Tirion Fordring'), +(32239, 13,6165.772, 2760.747, 573.914, 'Highlord Tirion Fordring'), +-- GUID: Full: 0xF1307DB80076BD66 Type: Unit Entry: 32184 Low: 7781734 +(32184, 1,6174.985, 2669.289, 574.4298, 'The Lich King'), +(32184, 2,6164.939, 2691.6, 573.914, 'The Lich King'), +(32184, 3,6156.291, 2709.657, 573.914, 'The Lich King'), +(32184, 4,6147.657, 2729.304, 573.914, 'The Lich King'), +(32184, 5,6131.82, 2757.886, 573.914, 'The Lich King'), +(32184, 6,6131.82, 2757.886, 573.914, 'The Lich King'), +-- Owner GUID: Full: 0xF1307DEF007193AA Type: Unit Entry: 32239 Low: 7443370 +(3223900, 1,6169.14, 2758.224, 574.164, 'Highlord Tirion Fordring Path 2'), +(3223900, 2,6163.64, 2756.224, 574.164, 'Highlord Tirion Fordring Path 2'), +(3223900, 3,6156.64, 2756.724, 574.164, 'Highlord Tirion Fordring Path 2'), +(3223900, 4,6142.507, 2757.701, 573.914, 'Highlord Tirion Fordring Path 2'), +-- GUID: Full: 0xF1307E380076C8EE Type: Unit Entry: 32312 Low: 7784686 +(32312, 1,6176.699, 2666.668, 574.5868, 'Highlord Darion Mograine'), +(32312, 2,6171.327, 2678.818, 573.9142, 'Highlord Darion Mograine'), +(32312, 3,6165.052, 2693.011, 573.9141, 'Highlord Darion Mograine'), +(32312, 4,6164.547, 2694.153, 573.9141, 'Highlord Darion Mograine'), +(32312, 5,6164.547, 2694.153, 573.9141, 'Highlord Darion Mograine'), +(32312, 6,6164.982, 2693.149, 574.1641, 'Highlord Darion Mograine'), +(32312, 7,6164.482, 2694.399, 574.1641, 'Highlord Darion Mograine'), +(32312, 8,6159.982, 2704.899, 574.1641, 'Highlord Darion Mograine'), +(32312, 9,6159.232, 2706.649, 574.1641, 'Highlord Darion Mograine'), +(32312, 10,6157.982, 2709.149, 574.1641, 'Highlord Darion Mograine'), +(32312, 11,6154.946, 2715.455, 574.1641, 'Highlord Darion Mograine'), +(32312, 12,6154.196, 2717.205, 574.1641, 'Highlord Darion Mograine'), +(32312, 13,6143.353, 2738.469, 574.1641, 'Highlord Darion Mograine'), +(32312, 14,6138.019, 2754.837, 573.9141, 'Highlord Darion Mograine'), +-- GUID: Full: 0xF1307E370076C8EF Type: Unit Entry: 32311 Low: 7784687 +(32311, 1,6159.867, 2705.287, 574.1641, 'Koltira Deathweaver'), +(32311, 2,6159.367, 2707.287, 574.1641, 'Koltira Deathweaver'), +(32311, 3,6158.367, 2709.537, 574.1641, 'Koltira Deathweaver'), +(32311, 4,6155.617, 2717.037, 574.1641, 'Koltira Deathweaver'), +(32311, 5,6155.117, 2718.537, 574.1641, 'Koltira Deathweaver'), +(32311, 6,6154.849, 2717.368, 574.1641, 'Koltira Deathweaver'), +(32311, 7,6154.349, 2718.368, 574.1641, 'Koltira Deathweaver'), +(32311, 8,6150.599, 2726.618, 574.1641, 'Koltira Deathweaver'), +(32311, 9,6147.419, 2732.72, 573.9141, 'Koltira Deathweaver'), +(32311, 10,6141.567, 2743.204, 574.1641, 'Koltira Deathweaver'), +(32311, 11,6139.709, 2746.204, 573.9141, 'Koltira Deathweaver'), +(32311, 12,6137.443, 2751.248, 574.1641, 'Koltira Deathweaver'), + -- GUID: Full: 0xF1307E360076C8F0 Type: Unit Entry: 32310 Low: 7784688 +(32310, 1,6159.335, 2705.071, 574.1641, 'Thassarian'), +(32310, 2,6158.585, 2706.571, 574.1641, 'Thassarian'), +(32310, 3,6157.335, 2709.071, 574.1641, 'Thassarian'), +(32310, 4,6153.585, 2717.321, 574.1641, 'Thassarian'), +(32310, 5,6153.186, 2717.784, 574.1641, 'Thassarian'), +(32310, 6,6149.186, 2726.034, 574.1641, 'Thassarian'), +(32310, 7,6146.444, 2731.355, 573.9141, 'Thassarian'), +(32310, 8,6141.1, 2740.615, 573.9141, 'Thassarian'); + +DELETE FROM `creature_summon_groups` WHERE `summonerId`=32312; +INSERT INTO `creature_summon_groups` (`summonerId`, `summonerType`, `groupId`, `entry`, `position_x`, `position_y`, `position_z`, `orientation`, `summonType`, `summonTime`) VALUES +(32312, 0, 1, 32309, 6161.294, 2699.628, 573.9141, 1.920898, 3, 600000), +(32312, 0, 1, 32309, 6164.255, 2698.859, 573.9141, 2.01017, 3, 600000), +(32312, 0, 1, 32309, 6161.909, 2695.987, 573.914, 1.889949, 3, 600000), +(32312, 0, 1, 32309, 6163.728, 2696.768, 573.9141, 1.966068, 3, 600000), +(32312, 0, 1, 32309, 6160.207, 2698.687, 573.9141, 1.874134, 3, 600000), +(32312, 0, 1, 32309, 6164.456, 2699.853, 573.9141, 2.005516, 3, 600000), +(32312, 0, 1, 32309, 6160.355, 2698.815, 573.9141, 1.910763, 3, 600000), +(32312, 0, 1, 32310, 6162.42, 2698.646, 573.9141, 2.076199, 3, 600000), +(32312, 0, 1, 32311, 6162.563, 2699.107, 573.9141, 2.015445, 3, 600000); diff --git a/sql/updates/world/2014_09_26_01_world.sql b/sql/updates/world/2014_09_26_01_world.sql new file mode 100644 index 00000000000..073fee72a89 --- /dev/null +++ b/sql/updates/world/2014_09_26_01_world.sql @@ -0,0 +1,2 @@ +-- +DELETE FROM `creature` WHERE `id`=417; diff --git a/sql/updates/world/2014_09_26_02_world.sql b/sql/updates/world/2014_09_26_02_world.sql new file mode 100644 index 00000000000..358c9d20a76 --- /dev/null +++ b/sql/updates/world/2014_09_26_02_world.sql @@ -0,0 +1 @@ +UPDATE `quest_template` SET `LimitTime` = 60 * 4 WHERE `Id` IN (11407,11408,11293,11294); diff --git a/sql/updates/world/2014_09_26_03_world.sql b/sql/updates/world/2014_09_26_03_world.sql new file mode 100644 index 00000000000..984082c1fa3 --- /dev/null +++ b/sql/updates/world/2014_09_26_03_world.sql @@ -0,0 +1,33 @@ +DELETE FROM `gossip_menu_option` WHERE `menu_id`=8976 AND `id`=3; +INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `OptionBroadcastTextID`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`, `BoxBroadcastTextID`) VALUES +(8976, 3, 0, 'May I have another racing ram?', 74294, 1, 1, 0, 0, 0, 0, '', 0); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8976 AND `SourceEntry`=3; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(15, 8976, 3, 0, 0, 1, 0, 43883, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player does not have Aura "Rental Racing Ram"'), +(15, 8976, 3, 0, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Bark for Drohn''s Distillery!" taken'), +(15, 8976, 3, 0, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'Show Gossip option only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(15, 8976, 3, 0, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Bark for Drohn''s Distillery!" rewarded'), +(15, 8976, 3, 0, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'Show Gossip option only if player has not quest "Bark for T''chali''s Voodoo Brewery!" rewarded'); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24497 AND `id` >= 4; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24497, 0, 4, 7, 62, 0, 100, 0, 8976, 1, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 5, 7, 62, 0, 100, 0, 8976, 2, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Now This is Ram Racing... Almost.'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 6, 7, 62, 0, 100, 0, 8976, 3, 0, 0, 72, 0, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Quest ''Bark for T''chali''s Voodoo Brewery!'' / ''Bark for Drohn''s Distillery!'' Taken - Cast ''Rental Racing Ram'''), +(24497, 0, 7, 0, 61, 0, 100, 0, 0, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ram Master Ray <Ram Racing Master> - On Link - Cast ''Rental Racing Ram'''); + +UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (24498,24499); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24498; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24498, 0, 0, 0, 19, 0, 100, 0, 11407, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Cort Gorestein - On Quest ''Bark for Drohn''s Distillery!'' Taken - Cast ''Rental Racing Ram'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=24499; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(24499, 0, 0, 0, 19, 0, 100, 0, 11408, 0, 0, 0, 11, 42149, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Ja''ron - On Quest ''Bark for T''chali''s Voodoo Brewery!'' Taken - Cast ''Rental Racing Ram'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=24527 AND `ConditionTypeOrReference` IN (9,28); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 24527, 0, 0, 9, 0, 11412, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "There and Back Again" taken'), +(22, 1, 24527, 0, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "There and Back Again" taken'); diff --git a/sql/updates/world/2014_09_27_00_world.sql b/sql/updates/world/2014_09_27_00_world.sql new file mode 100644 index 00000000000..26eb32a1ac6 --- /dev/null +++ b/sql/updates/world/2014_09_27_00_world.sql @@ -0,0 +1,60 @@ +DELETE FROM `spell_script_names` WHERE `spell_id` IN ( +43259, +43260, +43261, +43262 +); +INSERT INTO `spell_script_names` (`spell_id` ,`ScriptName`) VALUES +(43259, 'spell_brewfest_barker_bunny'), +(43260, 'spell_brewfest_barker_bunny'), +(43261, 'spell_brewfest_barker_bunny'), +(43262, 'spell_brewfest_barker_bunny'); + +DELETE FROM `areatrigger_scripts` WHERE `entry` IN (4801,4802,4803,4804); +INSERT INTO `areatrigger_scripts` (`entry`, `ScriptName`) VALUES +(4801, 'SmartTrigger'), +(4802, 'SmartTrigger'), +(4803, 'SmartTrigger'), +(4804, 'SmartTrigger'); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4801; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4801, 2, 0, 0, 46, 0, 100, 0, 4801, 0, 0, 0, 85, 43259, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 1'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4802; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4802, 2, 0, 0, 46, 0, 100, 0, 4802, 0, 0, 0, 85, 43260, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 2'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4803; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4803, 2, 0, 0, 46, 0, 100, 0, 4803, 0, 0, 0, 85, 43261, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 3'''); + +DELETE FROM `smart_scripts` WHERE `source_type`=2 AND `entryorguid`=4804; +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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES +(4804, 2, 0, 0, 46, 0, 100, 0, 4804, 0, 0, 0, 85, 43262, 2, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Areatrigger - On Trigger - Cast ''Brewfest - Barker Bunny 4'''); + +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry` IN (4801,4802,4803,4804); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(22, 1, 4801, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4801, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4801, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4801, 2, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4801, 2, 1, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4802, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4802, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4802, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4802, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4802, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4803, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4803, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4803, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4803, 2, 0, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4803, 2, 1, 28, 0, 11412, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'), + +(22, 1, 4804, 2, 0, 1, 0, 43883, 0, 0, 0, 0, 0, '', 'SAI triggers only only if player does not have Aura "Rental Racing Ram"'), +(22, 1, 4804, 2, 0, 9, 0, 11407, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4804, 2, 1, 9, 0, 11408, 0, 0, 0, 0, 0, '', 'SAI triggers only if player not have "Bark for T''chali''s Voodoo Brewery!" taken'), +(22, 1, 4804, 2, 0, 28, 0, 11407, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for Drohn''s Distillery!" taken'), +(22, 1, 4804, 2, 1, 28, 0, 11408, 0, 0, 1, 0, 0, '', 'SAI triggers only if player does not have "Bark for T''chali''s Voodoo Brewery!" taken'); diff --git a/sql/updates/world/2014_09_27_01_world.sql b/sql/updates/world/2014_09_27_01_world.sql new file mode 100644 index 00000000000..4d67cac6727 --- /dev/null +++ b/sql/updates/world/2014_09_27_01_world.sql @@ -0,0 +1,3 @@ +DELETE FROM `gameobject` WHERE `guid`=31688; +INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES +(31688, 186717, 1, 1, 1, 1349.707, -4357.939, 26.95916, -0.593412, 0, 0, 0, 1, 120, 255, 1); -- Brewfest Banner (Area: 0) diff --git a/sql/updates/world/2014_09_27_02_world.sql b/sql/updates/world/2014_09_27_02_world.sql new file mode 100644 index 00000000000..aabe173316d --- /dev/null +++ b/sql/updates/world/2014_09_27_02_world.sql @@ -0,0 +1,4 @@ +--
+DELETE FROM `smart_scripts` WHERE `entryorguid` = 7583 AND `id` = 1 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`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(7583, 0, 1, 0, 8, 0, 100, 0, 17166, 0, 0, 0, 33, 7583, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Sprinkle - On Spellhit \'Release Umi\'s Yeti\' - Quest Credit \'Are We There, Yeti?\'');
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp index 555b48da03b..d2835797235 100644 --- a/src/server/game/Achievements/AchievementMgr.cpp +++ b/src/server/game/Achievements/AchievementMgr.cpp @@ -937,7 +937,7 @@ void AchievementMgr<Player>::SendCriteriaUpdate(AchievementCriteriaEntry const* if (!entry->timeLimit) data << uint32(0); else - data << uint32(timedCompleted ? 0 : 1); // this are some flags, 1 is for keeping the counter at 0 in client + data << uint32(timedCompleted ? 1 : 0); // this are some flags, 1 is for keeping the counter at 0 in client data.AppendPackedTime(progress->date); data << uint32(timeElapsed); // time elapsed in seconds data << uint32(0); // unk diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp index 28ff634a15c..53d97e8ee55 100644 --- a/src/server/game/Entities/Pet/Pet.cpp +++ b/src/server/game/Entities/Pet/Pet.cpp @@ -308,6 +308,7 @@ bool Pet::LoadPetFromDB(Player* owner, uint32 petEntry, uint32 petnumber, bool c data << uint32(summonSpellId); data << uint32(256); // CAST_FLAG_UNKNOWN3 data << uint32(0); + data << uint32(getMSTime()); owner->SendMessageToSet(&data, true); } diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 1f190355b15..24a0296491c 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -146,6 +146,8 @@ class InstanceScript : public ZoneScript Map* instance; // On creation, NOT load. + // PLEASE INITIALIZE FIELDS IN THE CONSTRUCTOR INSTEAD !!! + // KEEPING THIS METHOD ONLY FOR BACKWARD COMPATIBILITY !!! virtual void Initialize() { } // On load diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 448911aa82d..a65299140fa 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -34,12 +34,6 @@ #include "WorldPacket.h" #include "WorldSession.h" -namespace -{ - typedef std::set<ScriptObject*> ExampleScriptContainer; - ExampleScriptContainer ExampleScripts; -} - // This is the global static registry of scripts. template<class TScript> class ScriptRegistry @@ -108,12 +102,9 @@ class ScriptRegistry else { // The script uses a script name from database, but isn't assigned to anything. - if (script->GetName().find("example") == std::string::npos && script->GetName().find("Smart") == std::string::npos) + if (script->GetName().find("Smart") == std::string::npos) TC_LOG_ERROR("sql.sql", "Script named '%s' does not have a script name assigned in database.", script->GetName().c_str()); - - // These scripts don't get stored anywhere so throw them into this to avoid leaking memory - ExampleScripts.insert(script); } } else @@ -234,10 +225,6 @@ void ScriptMgr::Unload() #undef SCR_CLEAR - for (ExampleScriptContainer::iterator itr = ExampleScripts.begin(); itr != ExampleScripts.end(); ++itr) - delete *itr; - ExampleScripts.clear(); - delete[] SpellSummary; delete[] UnitAI::AISpellInfo; } diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 01eeac8066a..108f23bcc6a 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -4589,8 +4589,9 @@ void Spell::HandleThreatSpells() for (std::list<TargetInfo>::iterator ihit = m_UniqueTargetInfo.begin(); ihit != m_UniqueTargetInfo.end(); ++ihit) { + float threatToAdd = threat; if (ihit->missCondition != SPELL_MISS_NONE) - continue; + threatToAdd = 0.0f; Unit* target = ObjectAccessor::GetUnit(*m_caster, ihit->targetGUID); if (!target) @@ -4598,14 +4599,14 @@ void Spell::HandleThreatSpells() // positive spells distribute threat among all units that are in combat with target, like healing if (m_spellInfo->_IsPositiveSpell()) - target->getHostileRefManager().threatAssist(m_caster, threat, m_spellInfo); + target->getHostileRefManager().threatAssist(m_caster, threatToAdd, m_spellInfo); // for negative spells threat gets distributed among affected targets else { if (!target->CanHaveThreatList()) continue; - target->AddThreat(m_caster, threat, m_spellInfo->GetSchoolMask(), m_spellInfo); + target->AddThreat(m_caster, threatToAdd, m_spellInfo->GetSchoolMask(), m_spellInfo); } } TC_LOG_DEBUG("spells", "Spell %u, added an additional %f threat for %s %u target(s)", m_spellInfo->Id, threat, m_spellInfo->_IsPositiveSpell() ? "assisting" : "harming", uint32(m_UniqueTargetInfo.size())); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp index 22999c221dd..46cdd5edc7d 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp @@ -76,7 +76,16 @@ public: struct instance_blackrock_depths_InstanceMapScript : public InstanceScript { - instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_blackrock_depths_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&encounter, 0, sizeof(encounter)); + + BarAleCount = 0; + GhostKillCount = 0; + TombTimer = TIMER_TOMBOFTHESEVEN; + TombEventCounter = 0; + } uint32 encounter[MAX_ENCOUNTER]; std::string str_data; @@ -115,17 +124,6 @@ public: uint32 TombTimer; uint32 TombEventCounter; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&encounter, 0, sizeof(encounter)); - - BarAleCount = 0; - GhostKillCount = 0; - TombTimer = TIMER_TOMBOFTHESEVEN; - TombEventCounter = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp index ad395ebe497..6d29170c5ff 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp @@ -63,13 +63,6 @@ public: SetBossNumber(EncounterCount); } - void Initialize() override - { - // Razorgore - EggCount = 0; - EggEvent = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp index d7667b37e87..d4e32d8e908 100644 --- a/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp +++ b/src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp @@ -56,7 +56,12 @@ class instance_deadmines : public InstanceMapScript struct instance_deadmines_InstanceMapScript : public InstanceScript { - instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_deadmines_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + + State = CANNON_NOT_USED; + } ObjectGuid FactoryDoorGUID; ObjectGuid IronCladDoorGUID; @@ -71,13 +76,6 @@ class instance_deadmines : public InstanceMapScript uint32 PiratesDelay_Timer; ObjectGuid uiSmiteChestGUID; - void Initialize() override - { - SetHeaders(DataHeader); - - State = CANNON_NOT_USED; - } - virtual void Update(uint32 diff) override { if (!IronCladDoorGUID || !DefiasCannonGUID || !DoorLeverGUID) diff --git a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp index 9cd6afaca78..958126610f9 100644 --- a/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp +++ b/src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp @@ -37,6 +37,7 @@ public: instance_gnomeregan_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); } uint32 m_auiEncounter[MAX_ENCOUNTER]; @@ -46,11 +47,6 @@ public: ObjectGuid uiBastmasterEmiShortfuseGUID; - void Initialize() override - { - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - } - void Load(const char* in) override { if (!in) diff --git a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp index 0d639df731a..a294611babf 100644 --- a/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp +++ b/src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp @@ -56,7 +56,15 @@ public: struct instance_karazhan_InstanceMapScript : public InstanceScript { - instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_karazhan_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered. + m_uiOperaEvent = urand(1, 3); + m_uiOzDeathCount = 0; + } uint32 m_auiEncounter[MAX_ENCOUNTER]; std::string strSaveData; @@ -80,16 +88,6 @@ public: ObjectGuid ImageGUID; ObjectGuid DustCoveredChest; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - // 1 - OZ, 2 - HOOD, 3 - RAJ, this never gets altered. - m_uiOperaEvent = urand(1, 3); - m_uiOzDeathCount = 0; - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) diff --git a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp index 24f7d90817d..69c188a61dc 100644 --- a/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp +++ b/src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp @@ -162,6 +162,13 @@ class spell_shadow_portal : public SpellScriptLoader { PrepareSpellScript(spell_shadow_portal_SpellScript); + public: + spell_shadow_portal_SpellScript() + { + _instance = nullptr; + } + + private: bool Load() override { _instance = GetCaster()->GetInstanceScript(); @@ -222,7 +229,6 @@ class spell_shadow_portal : public SpellScriptLoader OnEffectHitTarget += SpellEffectFn(spell_shadow_portal_SpellScript::HandleCast, EFFECT_0, SPELL_EFFECT_DUMMY); } - private: InstanceScript* _instance; }; @@ -285,6 +291,13 @@ class spell_shadow_portal_rooms : public SpellScriptLoader { PrepareSpellScript(spell_shadow_portal_rooms_SpellScript); + public: + spell_shadow_portal_rooms_SpellScript() + { + _instance = nullptr; + } + + private: bool Load() override { _instance = GetCaster()->GetInstanceScript(); @@ -358,7 +371,6 @@ class spell_shadow_portal_rooms : public SpellScriptLoader OnEffectHit += SpellEffectFn(spell_shadow_portal_rooms_SpellScript::HandleSendEvent, EFFECT_1, SPELL_EFFECT_SEND_EVENT); } - private: InstanceScript* _instance; }; diff --git a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp index ae8cb74ea49..3379882ce28 100644 --- a/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp +++ b/src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp @@ -78,7 +78,14 @@ public: struct instance_shadowfang_keep_InstanceMapScript : public InstanceScript { - instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_shadowfang_keep_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + uiPhase = 0; + uiTimer = 0; + } uint32 m_auiEncounter[MAX_ENCOUNTER]; std::string str_data; @@ -94,15 +101,6 @@ public: uint8 uiPhase; uint16 uiTimer; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - uiPhase = 0; - uiTimer = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp index 927ca0b19ac..699b61ed216 100644 --- a/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp +++ b/src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp @@ -50,6 +50,11 @@ class instance_stratholme : public InstanceMapScript instance_stratholme_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); + for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) + EncounterState[i] = NOT_STARTED; + + for (uint8 i = 0; i < 5; ++i) + IsSilverHandDead[i] = false; } uint32 EncounterState[MAX_ENCOUNTER]; @@ -73,18 +78,6 @@ class instance_stratholme : public InstanceMapScript GuidSet abomnationGUID; EventMap events; - void Initialize() override - { - for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) - EncounterState[i] = NOT_STARTED; - - for (uint8 i = 0; i < 5; ++i) - IsSilverHandDead[i] = false; - - crystalsGUID.clear(); - abomnationGUID.clear(); - } - bool StartSlaugtherSquare() { //change to DONE when crystals implemented diff --git a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp index 194f5790f44..bc3980d6420 100644 --- a/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp +++ b/src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp @@ -61,6 +61,14 @@ public: instance_sunken_temple_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); + State = 0; + + s1 = false; + s2 = false; + s3 = false; + s4 = false; + s5 = false; + s6 = false; } ObjectGuid GOAtalaiStatue1; @@ -80,19 +88,6 @@ public: bool s5; bool s6; - void Initialize() override - { - - State = 0; - - s1 = false; - s2 = false; - s3 = false; - s4 = false; - s5 = false; - s6 = false; - } - void OnGameObjectCreate(GameObject* go) override { switch (go->GetEntry()) diff --git a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp index 956f7099596..c6c190dd962 100644 --- a/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp +++ b/src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp @@ -45,9 +45,7 @@ class instance_uldaman : public InstanceMapScript struct instance_uldaman_InstanceMapScript : public InstanceScript { - instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) { } - - void Initialize() override + instance_uldaman_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); diff --git a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp index 24d370155a6..88b8d1e6af5 100644 --- a/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp +++ b/src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp @@ -19,123 +19,56 @@ /* ScriptData SDName: Isle_of_Queldanas SD%Complete: 100 -SDComment: Quest support: 11524, 11525, 11532, 11533, 11542, 11543, 11541 +SDComment: Quest support: 11541 SDCategory: Isle Of Quel'Danas EndScriptData */ /* ContentData -npc_converted_sentry npc_greengill_slave EndContentData */ #include "ScriptMgr.h" #include "ScriptedCreature.h" #include "Player.h" -#include "Pet.h" #include "SpellInfo.h" /*###### -## npc_converted_sentry +## npc_greengill_slave ######*/ -enum ConvertedSentry -{ - SAY_CONVERTED = 0, - - SPELL_CONVERT_CREDIT = 45009 -}; -class npc_converted_sentry : public CreatureScript +enum GreengillSlave { -public: - npc_converted_sentry() : CreatureScript("npc_converted_sentry") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_converted_sentryAI(creature); - } - - struct npc_converted_sentryAI : public ScriptedAI - { - npc_converted_sentryAI(Creature* creature) : ScriptedAI(creature) - { - Initialize(); - } - - void Initialize() - { - Credit = false; - Timer = 2500; - } - - bool Credit; - uint32 Timer; - - void Reset() override - { - Initialize(); - } - - void MoveInLineOfSight(Unit* /*who*/) override { } - - void EnterCombat(Unit* /*who*/) override { } - - void UpdateAI(uint32 diff) override - { - if (!Credit) - { - if (Timer <= diff) - { - Talk(SAY_CONVERTED); - - DoCast(me, SPELL_CONVERT_CREDIT); - if (me->IsPet()) - me->ToPet()->SetDuration(7500); - Credit = true; - } else Timer -= diff; - } - } - }; + NPC_DARKSPINE_MYRIDON = 25060, + QUEST_GREENGILL_COAST = 11541, + SPELL_ENRAGE = 45111, + SPELL_ORB_MURLOC_CONTROL = 45109, + SPELL_GREENGILL_SLAVE_FREED = 45110 }; -/*###### -## npc_greengill_slave -######*/ - -#define ENRAGE 45111 -#define ORB 45109 -#define QUESTG 11541 -#define DM 25060 - class npc_greengill_slave : public CreatureScript { public: npc_greengill_slave() : CreatureScript("npc_greengill_slave") { } - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_greengill_slaveAI(creature); - } - struct npc_greengill_slaveAI : public ScriptedAI { npc_greengill_slaveAI(Creature* creature) : ScriptedAI(creature) { } - void EnterCombat(Unit* /*who*/) override { } - void SpellHit(Unit* caster, SpellInfo const* spellInfo) override { Player* player = caster->ToPlayer(); + if (!player) return; - if (spellInfo->Id == ORB && !me->HasAura(ENRAGE)) + if (spellInfo->Id == SPELL_ORB_MURLOC_CONTROL && !me->HasAura(SPELL_ENRAGE)) { - if (player->GetQuestStatus(QUESTG) == QUEST_STATUS_INCOMPLETE) - DoCast(player, 45110, true); + if (player->GetQuestStatus(QUEST_GREENGILL_COAST) == QUEST_STATUS_INCOMPLETE) + DoCast(player, SPELL_GREENGILL_SLAVE_FREED, true); - DoCast(me, ENRAGE); + DoCast(me, SPELL_ENRAGE); - if (Creature* Myrmidon = me->FindNearestCreature(DM, 70)) + if (Creature* Myrmidon = me->FindNearestCreature(NPC_DARKSPINE_MYRIDON, 70)) { me->AddThreat(Myrmidon, 100000.0f); AttackStart(Myrmidon); @@ -148,10 +81,14 @@ public: DoMeleeAttackIfReady(); } }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_greengill_slaveAI(creature); + } }; void AddSC_isle_of_queldanas() { - new npc_converted_sentry(); new npc_greengill_slave(); } diff --git a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp index b23d0cdaa3c..6c5f4ff3b53 100644 --- a/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp +++ b/src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp @@ -64,7 +64,14 @@ public: struct instance_blackfathom_deeps_InstanceMapScript : public InstanceScript { - instance_blackfathom_deeps_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_blackfathom_deeps_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&encounter, 0, sizeof(encounter)); + + countFires = 0; + deathTimes = 0; + } ObjectGuid twilightLordKelrisGUID; ObjectGuid shrine1GUID; @@ -79,15 +86,6 @@ public: uint8 countFires; uint8 deathTimes; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&encounter, 0, sizeof(encounter)); - - countFires = 0; - deathTimes = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp index 71835c3db94..176c24f6707 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp @@ -55,19 +55,17 @@ public: struct instance_mount_hyjal_InstanceMapScript : public InstanceScript { - instance_mount_hyjal_InstanceMapScript(Map* map) : InstanceScript(map) { } - - void Initialize() override + instance_mount_hyjal_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - RaidDamage = 0; - Trash = 0; - hordeRetreat = 0; - allianceRetreat = 0; + RaidDamage = 0; + Trash = 0; + hordeRetreat = 0; + allianceRetreat = 0; - ArchiYell = false; + ArchiYell = false; } bool IsEncounterInProgress() const override diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp index 0220ff98750..317ab7e5ad5 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp @@ -52,7 +52,14 @@ public: struct instance_old_hillsbrad_InstanceMapScript : public InstanceScript { - instance_old_hillsbrad_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_old_hillsbrad_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + mBarrelCount = 0; + mThrallEventCount = 0; + } uint32 m_auiEncounter[MAX_ENCOUNTER]; uint32 mBarrelCount; @@ -62,15 +69,6 @@ public: ObjectGuid TarethaGUID; ObjectGuid EpochGUID; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - mBarrelCount = 0; - mThrallEventCount = 0; - } - Player* GetPlayerInMap() { Map::PlayerList const& players = instance->GetPlayers(); diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp index ed49cc41c39..d46f0b5e9e1 100644 --- a/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp +++ b/src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp @@ -80,7 +80,11 @@ public: struct instance_the_black_morass_InstanceMapScript : public InstanceScript { - instance_the_black_morass_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_the_black_morass_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + Clear(); + } uint32 m_auiEncounter[EncounterCount]; @@ -92,12 +96,6 @@ public: ObjectGuid _medivhGUID; uint8 _currentRiftId; - void Initialize() override - { - SetHeaders(DataHeader); - Clear(); - } - void Clear() { memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp index 4bbbf26b84e..4af520907e7 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp @@ -43,24 +43,22 @@ public: struct instance_onyxias_lair_InstanceMapScript : public InstanceScript { - instance_onyxias_lair_InstanceMapScript(Map* map) : InstanceScript(map) { } - - //Eruption is a BFS graph problem - //One map to remember all floor, one map to keep floor that still need to erupt and one queue to know what needs to be removed - - void Initialize() override + instance_onyxias_lair_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); SetBossNumber(EncounterCount); - onyxiaLiftoffTimer = 0; - manyWhelpsCounter = 0; - eruptTimer = 0; + onyxiaLiftoffTimer = 0; + manyWhelpsCounter = 0; + eruptTimer = 0; achievManyWhelpsHandleIt = false; - achievSheDeepBreathMore = true; + achievSheDeepBreathMore = true; } + //Eruption is a BFS graph problem + //One map to remember all floor, one map to keep floor that still need to erupt and one queue to know what needs to be removed + void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp index 8a82f782918..9f2f5edf798 100644 --- a/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp +++ b/src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp @@ -55,16 +55,12 @@ public: { SetHeaders(DataHeader); SetBossNumber(EncounterCount); - } - - void Initialize() override - { - gongWave = 0; - fiendsKilled = 0; - reaversKilled = 0; - summonLowRange = 0; + gongWave = 0; + fiendsKilled = 0; + reaversKilled = 0; + summonLowRange = 0; summonHighRange = 0; - summonCreature = 0; + summonCreature = 0; } void OnGameObjectCreate(GameObject* gameObject) override diff --git a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp index 07cb6e65ee9..6c63dd97406 100644 --- a/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp +++ b/src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp @@ -42,17 +42,15 @@ public: struct instance_razorfen_kraul_InstanceMapScript : public InstanceScript { - instance_razorfen_kraul_InstanceMapScript(Map* map) : InstanceScript(map) { } - - ObjectGuid DoorWardGUID; - int WardKeeperDeath; - - void Initialize() override + instance_razorfen_kraul_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); WardKeeperDeath = 0; } + ObjectGuid DoorWardGUID; + int WardKeeperDeath; + Player* GetPlayerInMap() { Map::PlayerList const& players = instance->GetPlayers(); diff --git a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp index 456ff749e84..bf37c3d04ff 100644 --- a/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp +++ b/src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp @@ -39,7 +39,17 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript struct instance_temple_of_ahnqiraj_InstanceMapScript : public InstanceScript { - instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_temple_of_ahnqiraj_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + IsBossDied[0] = false; + IsBossDied[1] = false; + IsBossDied[2] = false; + + BugTrioDeathCount = 0; + + CthunPhase = 0; + } //If Vem is dead... bool IsBossDied[3]; @@ -56,18 +66,6 @@ class instance_temple_of_ahnqiraj : public InstanceMapScript uint32 CthunPhase; - void Initialize() override - { - SetHeaders(DataHeader); - IsBossDied[0] = false; - IsBossDied[1] = false; - IsBossDied[2] = false; - - BugTrioDeathCount = 0; - - CthunPhase = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp index 5d7202588a9..6ca4b7c9f5d 100644 --- a/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp +++ b/src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp @@ -41,14 +41,7 @@ public: struct instance_wailing_caverns_InstanceMapScript : public InstanceScript { - instance_wailing_caverns_InstanceMapScript(Map* map) : InstanceScript(map) { } - - uint32 m_auiEncounter[MAX_ENCOUNTER]; - - bool yelled; - ObjectGuid NaralexGUID; - - void Initialize() override + instance_wailing_caverns_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); @@ -56,6 +49,11 @@ public: yelled = false; } + uint32 m_auiEncounter[MAX_ENCOUNTER]; + + bool yelled; + ObjectGuid NaralexGUID; + void OnCreatureCreate(Creature* creature) override { if (creature->GetEntry() == DATA_NARALEX) diff --git a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp index 393028e0446..7b31850caac 100644 --- a/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp +++ b/src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp @@ -108,7 +108,15 @@ public: struct instance_zulfarrak_InstanceMapScript : public InstanceScript { - instance_zulfarrak_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_zulfarrak_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + PyramidPhase = 0; + major_wave_Timer = 0; + minor_wave_Timer = 0; + addGroupSize = 0; + waypoint = 0; + } uint32 GahzRillaEncounter; ObjectGuid ZumrahGUID; @@ -124,16 +132,6 @@ public: uint32 addGroupSize; uint32 waypoint; - void Initialize() override - { - SetHeaders(DataHeader); - PyramidPhase = 0; - major_wave_Timer = 0; - minor_wave_Timer = 0; - addGroupSize = 0; - waypoint = 0; - } - void OnCreatureCreate(Creature* creature) override { switch (creature->GetEntry()) diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp index 79449723a16..fdb5a3a5fe7 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp @@ -238,16 +238,17 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader { PrepareSpellScript(spell_ahn_kahet_swarm_SpellScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_ahn_kahet_swarm_SpellScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_SWARM_BUFF)) - return false; - return true; + _targetCount = 0; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _targetCount = 0; + if (!sSpellMgr->GetSpellInfo(SPELL_SWARM_BUFF)) + return false; return true; } @@ -278,7 +279,6 @@ class spell_ahn_kahet_swarm : public SpellScriptLoader OnEffectHit += SpellEffectFn(spell_ahn_kahet_swarm_SpellScript::HandleDummy, EFFECT_0, SPELL_EFFECT_DUMMY); } - private: uint32 _targetCount; }; diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp index 9f55ca8dc17..aa60e5c486d 100644 --- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp +++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp @@ -30,9 +30,7 @@ public: struct instance_obsidian_sanctum_InstanceMapScript : public InstanceScript { - instance_obsidian_sanctum_InstanceMapScript(Map* map) : InstanceScript(map) { } - - void Initialize() override + instance_obsidian_sanctum_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); } diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp index 94bf20bc41f..7d3092be115 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp @@ -41,7 +41,17 @@ public: struct instance_trial_of_the_champion_InstanceMapScript : public InstanceScript { - instance_trial_of_the_champion_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_trial_of_the_champion_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + uiMovementDone = 0; + uiGrandChampionsDeaths = 0; + uiArgentSoldierDeaths = 0; + + bDone = false; + + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + } uint32 m_auiEncounter[MAX_ENCOUNTER]; @@ -66,18 +76,6 @@ public: bool bDone; - void Initialize() override - { - SetHeaders(DataHeader); - uiMovementDone = 0; - uiGrandChampionsDeaths = 0; - uiArgentSoldierDeaths = 0; - - bDone = false; - - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index a645f3ca666..63b47da0807 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -703,6 +703,14 @@ class spell_powering_up : public SpellScriptLoader { PrepareSpellScript(spell_powering_up_SpellScript); + public: + spell_powering_up_SpellScript() + { + spellId = 0; + poweringUp = 0; + } + + private: uint32 spellId; uint32 poweringUp; @@ -760,6 +768,13 @@ class spell_valkyr_essences : public SpellScriptLoader { PrepareAuraScript(spell_valkyr_essences_AuraScript); + public: + spell_valkyr_essences_AuraScript() + { + spellId = 0; + } + + private: uint32 spellId; bool Load() override diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp index 30d831da30c..79fb154d6e3 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp @@ -29,9 +29,7 @@ class instance_trial_of_the_crusader : public InstanceMapScript struct instance_trial_of_the_crusader_InstanceMapScript : public InstanceScript { - instance_trial_of_the_crusader_InstanceMapScript(Map* map) : InstanceScript(map) { } - - void Initialize() override + instance_trial_of_the_crusader_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); SetBossNumber(MAX_ENCOUNTERS); diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp index 3ac5ec3070a..3ee7c9ce650 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp @@ -256,12 +256,13 @@ class spell_garfrost_permafrost : public SpellScriptLoader { PrepareSpellScript(spell_garfrost_permafrost_SpellScript); - bool Load() override + public: + spell_garfrost_permafrost_SpellScript() { prevented = false; - return true; } + private: void PreventHitByLoS() { if (Unit* target = GetHitUnit()) diff --git a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp index c2b1b91a200..c8894179ca3 100644 --- a/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp @@ -421,6 +421,14 @@ class spell_tyrannus_overlord_brand : public SpellScriptLoader { PrepareAuraScript(spell_tyrannus_overlord_brand_AuraScript); + public: + spell_tyrannus_overlord_brand_AuraScript() + { + oldAI = nullptr; + oldAIState = false; + } + + private: bool Load() override { return GetCaster() && GetCaster()->GetEntry() == NPC_TYRANNUS; diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp index 15cf0d31af9..f3fae3b14a0 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp @@ -201,7 +201,8 @@ enum Actions enum Misc { - DATA_MADE_A_MESS = 45374613 // 4537, 4613 are achievement IDs + DATA_MADE_A_MESS = 45374613, // 4537, 4613 are achievement IDs + FACTION_SCOURGE = 974, }; enum MovePoints @@ -460,6 +461,8 @@ class boss_deathbringer_saurfang : public CreatureScript switch (eventId) { case EVENT_INTRO_ALLIANCE_2: + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->setFaction(FACTION_SCOURGE); Talk(SAY_INTRO_ALLIANCE_2); break; case EVENT_INTRO_ALLIANCE_3: @@ -471,6 +474,8 @@ class boss_deathbringer_saurfang : public CreatureScript DoCast(me, SPELL_GRIP_OF_AGONY); break; case EVENT_INTRO_HORDE_2: + me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); + me->setFaction(FACTION_SCOURGE); Talk(SAY_INTRO_HORDE_2); break; case EVENT_INTRO_HORDE_4: @@ -544,7 +549,6 @@ class boss_deathbringer_saurfang : public CreatureScript case PHASE_INTRO_A: case PHASE_INTRO_H: { - me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE); // controls what events will execute events.SetPhase(uint32(action)); @@ -1215,13 +1219,13 @@ class spell_deathbringer_blood_nova_targeting : public SpellScriptLoader { PrepareSpellScript(spell_deathbringer_blood_nova_targeting_SpellScript); - bool Load() override + public: + spell_deathbringer_blood_nova_targeting_SpellScript() { - // initialize variable - target = NULL; - return true; + target = nullptr; } + private: void FilterTargetsInitial(std::list<WorldObject*>& targets) { if (targets.empty()) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp index 74a09887dd2..43490de493c 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp @@ -1922,6 +1922,13 @@ class spell_igb_on_gunship_deck : public SpellScriptLoader { PrepareAuraScript(spell_igb_on_gunship_deck_AuraScript); + public: + spell_igb_on_gunship_deck_AuraScript() + { + _teamInInstance = 0; + } + + private: bool Load() override { if (InstanceScript* instance = GetOwner()->GetInstanceScript()) @@ -2031,6 +2038,13 @@ class spell_igb_incinerating_blast : public SpellScriptLoader { PrepareSpellScript(spell_igb_incinerating_blast_SpellScript); + public: + spell_igb_incinerating_blast_SpellScript() + { + _energyLeft = 0; + } + + private: void StoreEnergy() { _energyLeft = GetCaster()->GetPower(POWER_ENERGY) - 10; @@ -2370,9 +2384,15 @@ class spell_igb_check_for_players : public SpellScriptLoader { PrepareSpellScript(spell_igb_check_for_players_SpellScript); - bool Load() override + public: + spell_igb_check_for_players_SpellScript() { _playerCount = 0; + } + + private: + bool Load() override + { return GetCaster()->GetTypeId() == TYPEID_UNIT; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp index 7ab8c956757..2e360e19b75 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp @@ -698,12 +698,13 @@ class spell_marrowgar_bone_slice : public SpellScriptLoader { PrepareSpellScript(spell_marrowgar_bone_slice_SpellScript); - bool Load() override + public: + spell_marrowgar_bone_slice_SpellScript() { _targetCount = 0; - return true; } + private: void ClearSpikeImmunities() { GetCaster()->GetAI()->DoAction(ACTION_CLEAR_SPIKE_IMMUNITIES); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp index 2e353e5f9dc..8f5ca0b4322 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp @@ -858,6 +858,13 @@ class spell_putricide_ooze_channel : public SpellScriptLoader { PrepareSpellScript(spell_putricide_ooze_channel_SpellScript); + public: + spell_putricide_ooze_channel_SpellScript() + { + _target = nullptr; + } + + private: bool Validate(SpellInfo const* spell) override { if (!spell->ExcludeTargetAuraSpell) @@ -871,7 +878,6 @@ class spell_putricide_ooze_channel : public SpellScriptLoader // this will let use safely use ToCreature() casts in entire script bool Load() override { - _target = NULL; return GetCaster()->GetTypeId() == TYPEID_UNIT; } diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp index 205b90fa159..5e55256ae59 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp @@ -507,12 +507,13 @@ class spell_rotface_mutated_infection : public SpellScriptLoader { PrepareSpellScript(spell_rotface_mutated_infection_SpellScript); - bool Load() override + public: + spell_rotface_mutated_infection_SpellScript() { - _target = NULL; - return true; + _target = nullptr; } + private: void FilterTargets(std::list<WorldObject*>& targets) { // remove targets with this aura already diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp index 551ec9ad0a2..9324379e9d6 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp @@ -1044,10 +1044,15 @@ class spell_sindragosa_s_fury : public SpellScriptLoader { PrepareSpellScript(spell_sindragosa_s_fury_SpellScript); - bool Load() override + public: + spell_sindragosa_s_fury_SpellScript() { _targetCount = 0; + } + private: + bool Load() override + { // This script should execute only in Icecrown Citadel if (InstanceMap* instance = GetCaster()->GetMap()->ToInstanceMap()) if (instance->GetInstanceScript()) diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp index e67edc473f4..03c26ba2e09 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp @@ -2080,12 +2080,13 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader { PrepareSpellScript(spell_the_lich_king_necrotic_plague_SpellScript); - bool Load() override + public: + spell_the_lich_king_necrotic_plague_SpellScript() { _hadAura = false; - return true; } + private: void SelectTarget(std::list<Unit*>& targets) { targets.sort(Trinity::ObjectDistanceOrderPred(GetCaster())); @@ -2120,12 +2121,13 @@ class spell_the_lich_king_necrotic_plague_jump : public SpellScriptLoader { PrepareAuraScript(spell_the_lich_king_necrotic_plague_AuraScript); - bool Load() override + public: + spell_the_lich_king_necrotic_plague_AuraScript() { _lastAmount = 0; - return true; } + private: void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (Unit* caster = GetCaster()) @@ -2497,16 +2499,17 @@ class spell_the_lich_king_valkyr_target_search : public SpellScriptLoader { PrepareSpellScript(spell_the_lich_king_valkyr_target_search_SpellScript); - bool Validate(SpellInfo const* /*spell*/) override + public: + spell_the_lich_king_valkyr_target_search_SpellScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_ICE_BURST)) - return false; - return true; + _target = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spell*/) override { - _target = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_ICE_BURST)) + return false; return true; } @@ -2622,6 +2625,13 @@ class spell_the_lich_king_vile_spirits : public SpellScriptLoader { PrepareAuraScript(spell_the_lich_king_vile_spirits_AuraScript); + public: + spell_the_lich_king_vile_spirits_AuraScript() + { + _is25Man = false; + } + + private: bool Load() override { _is25Man = GetUnitOwner()->GetMap()->Is25ManRaid(); @@ -2684,9 +2694,15 @@ class spell_the_lich_king_vile_spirit_move_target_search : public SpellScriptLoa { PrepareSpellScript(spell_the_lich_king_vile_spirit_move_target_search_SpellScript); + public: + spell_the_lich_king_vile_spirit_move_target_search_SpellScript() + { + _target = nullptr; + } + + private: bool Load() override { - _target = NULL; return GetCaster()->GetTypeId() == TYPEID_UNIT; } @@ -2873,6 +2889,13 @@ class spell_the_lich_king_restore_soul : public SpellScriptLoader { PrepareSpellScript(spell_the_lich_king_restore_soul_SpellScript); + public: + spell_the_lich_king_restore_soul_SpellScript() + { + _instance = nullptr; + } + + private: bool Load() override { _instance = GetCaster()->GetInstanceScript(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp index ec7a937e725..49e24f54b02 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp @@ -1158,6 +1158,13 @@ class spell_dreamwalker_decay_periodic_timer : public SpellScriptLoader { PrepareAuraScript(spell_dreamwalker_decay_periodic_timer_AuraScript); + public: + spell_dreamwalker_decay_periodic_timer_AuraScript() + { + _decayRate = 0; + } + + private: bool Load() override { _decayRate = GetId() != SPELL_TIMER_BLAZING_SKELETON ? 1000 : 5000; @@ -1385,6 +1392,13 @@ class spell_dreamwalker_nightmare_cloud : public SpellScriptLoader { PrepareAuraScript(spell_dreamwalker_nightmare_cloud_AuraScript); + public: + spell_dreamwalker_nightmare_cloud_AuraScript() + { + _instance = nullptr; + } + + private: bool Load() override { _instance = GetOwner()->GetInstanceScript(); diff --git a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp index c2007730cdc..22fa44541a1 100644 --- a/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp +++ b/src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp @@ -1880,12 +1880,13 @@ class spell_frost_giant_death_plague : public SpellScriptLoader { PrepareSpellScript(spell_frost_giant_death_plague_SpellScript); - bool Load() override + public: + spell_frost_giant_death_plague_SpellScript() { _failed = false; - return true; } + private: // First effect void CountTargets(std::list<WorldObject*>& targets) { diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 4c45be9d24d..b9fa6617855 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -2459,6 +2459,13 @@ class spell_alexstrasza_gift_beam_visual : public SpellScriptLoader { PrepareAuraScript(spell_alexstrasza_gift_beam_visual_AuraScript); + public: + spell_alexstrasza_gift_beam_visual_AuraScript() + { + _alexstraszaGift = nullptr; + } + + private: bool Load() override { return GetCaster()->GetTypeId() == TYPEID_UNIT; diff --git a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp index 91a40d43f12..b7f2e23616b 100644 --- a/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp +++ b/src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp @@ -40,7 +40,11 @@ public: struct instance_nexus_InstanceMapScript : public InstanceScript { - instance_nexus_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_nexus_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + } uint32 m_auiEncounter[NUMBER_OF_ENCOUNTERS]; @@ -53,12 +57,6 @@ public: std::string strInstData; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - } - void OnCreatureCreate(Creature* creature) override { Map::PlayerList const &players = instance->GetPlayers(); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index bd5b61e227f..261a6c96f77 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -1206,9 +1206,15 @@ class spell_algalon_big_bang : public SpellScriptLoader { PrepareSpellScript(spell_algalon_big_bang_SpellScript); - bool Load() override + public: + spell_algalon_big_bang_SpellScript() { _targetCount = 0; + } + + private: + bool Load() override + { return GetCaster()->GetTypeId() == TYPEID_UNIT && GetCaster()->IsAIEnabled; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp index ec42ba82f36..40c189a8da2 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp @@ -1688,12 +1688,13 @@ class spell_pursue : public SpellScriptLoader { PrepareSpellScript(spell_pursue_SpellScript); - bool Load() override + public: + spell_pursue_SpellScript() { - _target = NULL; - return true; + _target = nullptr; } + private: void FilterTargets(std::list<WorldObject*>& targets) { targets.remove_if(FlameLeviathanPursuedTargetSelector(GetCaster())); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp index 880eeba206b..6156d423b89 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp @@ -1748,16 +1748,17 @@ class spell_mimiron_fire_search : public SpellScriptLoader { PrepareSpellScript(spell_mimiron_fire_search_SpellScript); - bool Validate(SpellInfo const* /*spell*/) override + public: + spell_mimiron_fire_search_SpellScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_WATER_SPRAY)) - return false; - return true; + _noTarget = false; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spell*/) override { - _noTarget = false; + if (!sSpellMgr->GetSpellInfo(SPELL_WATER_SPRAY)) + return false; return true; } diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 016c0bff1e5..4f40abde5b6 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -60,7 +60,32 @@ class instance_ulduar : public InstanceMapScript struct instance_ulduar_InstanceMapScript : public InstanceScript { - instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) { } + instance_ulduar_InstanceMapScript(InstanceMap* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + SetBossNumber(MAX_ENCOUNTER); + + LoadDoorData(doorData); + LoadMinionData(minionData); + + _algalonTimer = 61; + _maxArmorItemLevel = 0; + _maxWeaponItemLevel = 0; + TeamInInstance = 0; + HodirRareCacheData = 0; + ColossusData = 0; + elderCount = 0; + illusion = 0; + keepersCount = 0; + conSpeedAtory = false; + Unbroken = true; + IsDriveMeCrazyEligible = true; + _algalonSummoned = false; + _summonAlgalon = false; + + memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper)); + memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper)); + } // Creatures ObjectGuid LeviathanGUID; @@ -119,31 +144,6 @@ class instance_ulduar : public InstanceMapScript bool Unbroken; bool IsDriveMeCrazyEligible; - void Initialize() override - { - SetHeaders(DataHeader); - SetBossNumber(MAX_ENCOUNTER); - LoadDoorData(doorData); - LoadMinionData(minionData); - _algalonTimer = 61; - _maxArmorItemLevel = 0; - _maxWeaponItemLevel = 0; - TeamInInstance = 0; - HodirRareCacheData = 0; - ColossusData = 0; - elderCount = 0; - illusion = 0; - keepersCount = 0; - conSpeedAtory = false; - Unbroken = true; - IsDriveMeCrazyEligible = true; - _algalonSummoned = false; - _summonAlgalon = false; - - memset(_summonObservationRingKeeper, 0, sizeof(_summonObservationRingKeeper)); - memset(_summonYSKeeper, 0, sizeof(_summonYSKeeper)); - } - void FillInitialWorldStates(WorldPacket& packet) override { packet << uint32(WORLD_STATE_ALGALON_TIMER_ENABLED) << uint32(_algalonTimer && _algalonTimer <= 60); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp index c4312e08704..5b0e1f31bd7 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp @@ -204,7 +204,7 @@ public: void DamageTaken(Unit* /*attacker*/, uint32& damage) override { - if (me->HealthBelowPctDamaged(100 - HealthAmountMultipler * HealthAmountModifier, damage)) + if (me->HealthBelowPctDamaged(100 - HealthAmountMultipler * HealthAmountModifier, damage) && !(damage >= me->GetHealth())) { uint8 Order = HealthAmountModifier - 1; ++HealthAmountModifier; diff --git a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp index b6c836eb0cd..151e199b749 100644 --- a/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp +++ b/src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp @@ -225,12 +225,13 @@ class spell_koralon_meteor_fists_damage : public SpellScriptLoader { PrepareSpellScript(spell_koralon_meteor_fists_damage_SpellScript); - bool Load() override + public: + spell_koralon_meteor_fists_damage_SpellScript() { _chainTargets = 0; - return true; } + private: void FilterTargets(std::list<WorldObject*>& targets) { _chainTargets = targets.size(); diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index cddf6ce3c25..1fdc98cd765 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -112,7 +112,34 @@ public: struct instance_violet_hold_InstanceMapScript : public InstanceScript { - instance_violet_hold_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_violet_hold_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + + uiRemoveNpc = 0; + + uiDoorIntegrity = 100; + + uiWaveCount = 0; + uiLocation = urand(0, 5); + uiFirstBoss = 0; + uiSecondBoss = 0; + uiCountErekemGuards = 0; + uiCountActivationCrystals = 0; + uiCyanigosaEventPhase = 1; + + uiActivationTimer = 5000; + uiDoorSpellTimer = 2000; + uiCyanigosaEventTimer = 3 * IN_MILLISECONDS; + + bActive = false; + bIsDoorSpellCast = false; + bCrystalActivated = false; + defenseless = true; + uiMainEventPhase = NOT_STARTED; + + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + } ObjectGuid uiMoragg; ObjectGuid uiErekem; @@ -168,35 +195,6 @@ public: std::string str_data; - void Initialize() override - { - SetHeaders(DataHeader); - - uiRemoveNpc = 0; - - uiDoorIntegrity = 100; - - uiWaveCount = 0; - uiLocation = urand(0, 5); - uiFirstBoss = 0; - uiSecondBoss = 0; - uiCountErekemGuards = 0; - uiCountActivationCrystals = 0; - uiCyanigosaEventPhase = 1; - - uiActivationTimer = 5000; - uiDoorSpellTimer = 2000; - uiCyanigosaEventTimer = 3*IN_MILLISECONDS; - - bActive = false; - bIsDoorSpellCast = false; - bCrystalActivated = false; - defenseless = true; - uiMainEventPhase = NOT_STARTED; - - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp index e4cff7323b1..ec65aa26f17 100644 --- a/src/server/scripts/Northrend/zone_storm_peaks.cpp +++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp @@ -812,12 +812,13 @@ class spell_close_rift : public SpellScriptLoader { PrepareAuraScript(spell_close_rift_AuraScript); - bool Load() override + public: + spell_close_rift_AuraScript() { _counter = 0; - return true; } + private: bool Validate(SpellInfo const* /*spell*/) override { return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT) != nullptr; diff --git a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp index 5f6fde8ad98..272e3042887 100644 --- a/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp +++ b/src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp @@ -1,6 +1,5 @@ /* * Copyright (C) 2008-2014 TrinityCore <http://www.trinitycore.org/> - * Copyright (C) 2006-2009 ScriptDev2 <https://scriptdev2.svn.sourceforge.net/> * * 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 @@ -23,13 +22,9 @@ SDComment: Need more tuning of spell timers, it should not be as linear fight as SDCategory: Auchindoun, Mana Tombs EndScriptData */ -/* ContentData -boss_nexusprince_shaffar -npc_ethereal_beacon -EndContentData */ - #include "ScriptMgr.h" #include "ScriptedCreature.h" +#include "mana_tombs.h" enum Yells { @@ -37,7 +32,7 @@ enum Yells SAY_AGGRO = 1, SAY_SLAY = 2, SAY_SUMMON = 3, - SAY_DEAD = 4, + SAY_DEAD = 4 }; enum Spells @@ -66,326 +61,271 @@ enum Misc NR_INITIAL_BEACONS = 3 }; -class boss_nexusprince_shaffar : public CreatureScript +enum Events { -public: - boss_nexusprince_shaffar() : CreatureScript("boss_nexusprince_shaffar") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return new boss_nexusprince_shaffarAI(creature); - } - - struct boss_nexusprince_shaffarAI : public ScriptedAI - { - boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me) - { - Initialize(); - HasTaunted = false; - } - - void Initialize() - { - Blink_Timer = 1500; - Beacon_Timer = 10000; - FireBall_Timer = 8000; - Frostbolt_Timer = 4000; - FrostNova_Timer = 15000; - - CanBlink = false; - } - - uint32 Blink_Timer; - uint32 Beacon_Timer; - uint32 FireBall_Timer; - uint32 Frostbolt_Timer; - uint32 FrostNova_Timer; - - SummonList summons; + EVENT_BLINK = 1, + EVENT_BEACON, + EVENT_FIREBALL, + EVENT_FROSTBOLT, + EVENT_FROST_NOVA +}; - bool HasTaunted; - bool CanBlink; +class boss_nexusprince_shaffar : public CreatureScript +{ + public: + boss_nexusprince_shaffar() : CreatureScript("boss_nexusprince_shaffar") { } - void Reset() override + struct boss_nexusprince_shaffarAI : public BossAI { - Initialize(); - - float dist = 8.0f; - float posX, posY, posZ, angle; - me->GetHomePosition(posX, posY, posZ, angle); + boss_nexusprince_shaffarAI(Creature* creature) : BossAI(creature, DATA_NEXUSPRINCE_SHAFFAR) + { + _hasTaunted = false; + } - me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); - me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); - me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); - } + void Reset() override + { + _Reset(); - void EnterEvadeMode() override - { - summons.DespawnAll(); - ScriptedAI::EnterEvadeMode(); - } + float dist = 8.0f; + float posX, posY, posZ, angle; + me->GetHomePosition(posX, posY, posZ, angle); - void MoveInLineOfSight(Unit* who) override + me->SummonCreature(NPC_BEACON, posX - dist, posY - dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); + me->SummonCreature(NPC_BEACON, posX - dist, posY + dist, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); + me->SummonCreature(NPC_BEACON, posX + dist, posY, posZ, angle, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 7200000); + } - { - if (!HasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f)) + void MoveInLineOfSight(Unit* who) override { - Talk(SAY_INTRO); - HasTaunted = true; + if (!_hasTaunted && who->GetTypeId() == TYPEID_PLAYER && me->IsWithinDistInMap(who, 100.0f)) + { + Talk(SAY_INTRO); + _hasTaunted = true; + } } - } - void EnterCombat(Unit* /*who*/) override - { - Talk(SAY_AGGRO); - - DoZoneInCombat(); - summons.DoZoneInCombat(); - } - - void JustSummoned(Creature* summoned) override - { - if (summoned->GetEntry() == NPC_BEACON) + void EnterCombat(Unit* /*who*/) override { - summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false); + Talk(SAY_AGGRO); + _EnterCombat(); - if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) - summoned->AI()->AttackStart(target); + events.ScheduleEvent(EVENT_BEACON, 10000); + events.ScheduleEvent(EVENT_FIREBALL, 8000); + events.ScheduleEvent(EVENT_FROSTBOLT, 4000); + events.ScheduleEvent(EVENT_FROST_NOVA, 15000); } - summons.Summon(summoned); - } - - void SummonedCreatureDespawn(Creature* summon) override - { - summons.Despawn(summon); - } - - void KilledUnit(Unit* /*victim*/) override - { - Talk(SAY_SLAY); - } - - void JustDied(Unit* /*killer*/) override - { - Talk(SAY_DEAD); - summons.DespawnAll(); - } - - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; - - if (FrostNova_Timer <= diff) + void JustSummoned(Creature* summoned) override { - if (me->IsNonMeleeSpellCast(false)) - me->InterruptNonMeleeSpells(true); + if (summoned->GetEntry() == NPC_BEACON) + { + summoned->CastSpell(summoned, SPELL_ETHEREAL_BEACON_VISUAL, false); - DoCast(me, SPELL_FROSTNOVA); - FrostNova_Timer = urand(17500, 25000); - CanBlink = true; - } else FrostNova_Timer -= diff; + if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) + summoned->AI()->AttackStart(target); + } - if (Frostbolt_Timer <= diff) - { - DoCastVictim(SPELL_FROSTBOLT); - Frostbolt_Timer = urand(4500, 6000); - } else Frostbolt_Timer -= diff; + summons.Summon(summoned); + } - if (FireBall_Timer <= diff) + void KilledUnit(Unit* victim) override { - DoCastVictim(SPELL_FIREBALL); - FireBall_Timer = urand(4500, 6000); - } else FireBall_Timer -= diff; + if (victim->GetTypeId() == TYPEID_PLAYER) + Talk(SAY_SLAY); + } - if (CanBlink) + void JustDied(Unit* /*killer*/) override { - if (Blink_Timer <= diff) - { - if (me->IsNonMeleeSpellCast(false)) - me->InterruptNonMeleeSpells(true); - - //expire movement, will prevent from running right back to victim after cast - //(but should MoveChase be used again at a certain time or should he not move?) - if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) - me->GetMotionMaster()->MovementExpired(); - - DoCast(me, SPELL_BLINK); - Blink_Timer = urand(1000, 2500); - CanBlink = false; - } else Blink_Timer -= diff; + Talk(SAY_DEAD); + _JustDied(); } - if (Beacon_Timer <= diff) + void ExecuteEvent(uint32 eventId) override { - if (me->IsNonMeleeSpellCast(false)) - me->InterruptNonMeleeSpells(true); + switch (eventId) + { + case EVENT_BLINK: + if (me->IsNonMeleeSpellCast(false)) + me->InterruptNonMeleeSpells(true); - if (!urand(0, 3)) - Talk(SAY_SUMMON); + // expire movement, will prevent from running right back to victim after cast + // (but should MoveChase be used again at a certain time or should he not move?) + if (me->GetMotionMaster()->GetCurrentMovementGeneratorType() == CHASE_MOTION_TYPE) + me->GetMotionMaster()->MovementExpired(); - DoCast(me, SPELL_ETHEREAL_BEACON, true); + DoCast(me, SPELL_BLINK); + break; + case EVENT_BEACON: + if (!urand(0, 3)) + Talk(SAY_SUMMON); - Beacon_Timer = 10000; - } else Beacon_Timer -= diff; + DoCast(me, SPELL_ETHEREAL_BEACON, true); + events.ScheduleEvent(EVENT_BEACON, 10000); + break; + case EVENT_FIREBALL: + DoCastVictim(SPELL_FROSTBOLT); + events.ScheduleEvent(EVENT_FIREBALL, urand(4500, 6000)); + break; + case EVENT_FROSTBOLT: + DoCastVictim(SPELL_FROSTBOLT); + events.ScheduleEvent(EVENT_FROSTBOLT, urand(4500, 6000)); + break; + case EVENT_FROST_NOVA: + DoCast(me, SPELL_FROSTNOVA); + events.ScheduleEvent(EVENT_FROST_NOVA, urand(17500, 25000)); + events.ScheduleEvent(EVENT_BLINK, 1500); + break; + default: + break; + } + } - DoMeleeAttackIfReady(); + private: + bool _hasTaunted; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return GetManaTombsAI<boss_nexusprince_shaffarAI>(creature); } - }; +}; +enum EtherealBeacon +{ + EVENT_APPRENTICE = 1, + EVENT_ARCANE_BOLT }; class npc_ethereal_beacon : public CreatureScript { -public: - npc_ethereal_beacon() : CreatureScript("npc_ethereal_beacon") { } - - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_ethereal_beaconAI(creature); - } + public: + npc_ethereal_beacon() : CreatureScript("npc_ethereal_beacon") { } - struct npc_ethereal_beaconAI : public ScriptedAI - { - npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature) + struct npc_ethereal_beaconAI : public ScriptedAI { - Initialize(); - } + npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature) { } - void Initialize() - { - Apprentice_Timer = DUNGEON_MODE(20000, 10000); - ArcaneBolt_Timer = 1000; - Check_Timer = 1000; - } - - uint32 Apprentice_Timer; - uint32 ArcaneBolt_Timer; - uint32 Check_Timer; + void Reset() override + { + _events.Reset(); + } - void KillSelf() - { - me->Kill(me); - } + void EnterCombat(Unit* who) override + { + if (Creature* shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100.0f)) + if (!shaffar->IsInCombat()) + shaffar->AI()->AttackStart(who); - void Reset() override - { - Initialize(); - } + _events.ScheduleEvent(EVENT_APPRENTICE, DUNGEON_MODE(20000, 10000)); + _events.ScheduleEvent(EVENT_ARCANE_BOLT, 1000); + } - void EnterCombat(Unit* who) override - { - // Send Shaffar to fight - Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100); - if (!Shaffar || Shaffar->isDead()) + void JustSummoned(Creature* summoned) override { - KillSelf(); - return; + summoned->AI()->AttackStart(me->GetVictim()); } - if (!Shaffar->IsInCombat()) - Shaffar->AI()->AttackStart(who); - } - void JustSummoned(Creature* summoned) override - { - summoned->AI()->AttackStart(me->GetVictim()); - } + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + _events.Update(diff); - if (Check_Timer <= diff) - { - Creature* Shaffar = me->FindNearestCreature(NPC_SHAFFAR, 100); - if (!Shaffar || Shaffar->isDead() || !Shaffar->IsInCombat()) - { - KillSelf(); + if (me->HasUnitState(UNIT_STATE_CASTING)) return; - } - Check_Timer = 1000; - } else Check_Timer -= diff; - if (ArcaneBolt_Timer <= diff) - { - DoCastVictim(SPELL_ARCANE_BOLT); - ArcaneBolt_Timer = urand(2000, 4500); - } else ArcaneBolt_Timer -= diff; + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_APPRENTICE: + DoCast(me, SPELL_ETHEREAL_APPRENTICE, true); + me->DespawnOrUnsummon(); + break; + case EVENT_ARCANE_BOLT: + DoCastVictim(SPELL_ARCANE_BOLT); + _events.ScheduleEvent(EVENT_ARCANE_BOLT, urand(2000, 4500)); + break; + default: + break; + } + } + } - if (Apprentice_Timer <= diff) - { - if (me->IsNonMeleeSpellCast(false)) - me->InterruptNonMeleeSpells(true); + private: + EventMap _events; + }; - DoCast(me, SPELL_ETHEREAL_APPRENTICE, true); - me->DespawnOrUnsummon(); - return; - } else Apprentice_Timer -= diff; + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_ethereal_beaconAI(creature); } - }; - }; -enum Ethereal +enum EtherealApprentice { SPELL_ETHEREAL_APPRENTICE_FIREBOLT = 32369, - SPELL_ETHEREAL_APPRENTICE_FROSTBOLT = 32370 + SPELL_ETHEREAL_APPRENTICE_FROSTBOLT = 32370, + EVENT_ETHEREAL_APPRENTICE_FIREBOLT = 1, + EVENT_ETHEREAL_APPRENTICE_FROSTBOLT }; class npc_ethereal_apprentice : public CreatureScript { -public: - npc_ethereal_apprentice() : CreatureScript("npc_ethereal_apprentice") { } + public: + npc_ethereal_apprentice() : CreatureScript("npc_ethereal_apprentice") { } - CreatureAI* GetAI(Creature* creature) const override - { - return new npc_ethereal_apprenticeAI(creature); - } - - struct npc_ethereal_apprenticeAI : public ScriptedAI - { - npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) + struct npc_ethereal_apprenticeAI : public ScriptedAI { - Initialize(); - } + npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) { } - void Initialize() - { - Cast_Timer = 3000; - isFireboltTurn = true; - } + void Reset() override + { + _events.Reset(); + } - uint32 Cast_Timer; + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3000); + } - bool isFireboltTurn; + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; - void Reset() override - { - Initialize(); - } + _events.Update(diff); - void UpdateAI(uint32 diff) override - { - if (!UpdateVictim()) - return; + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; - if (Cast_Timer <= diff) - { - if (isFireboltTurn) + while (uint32 eventId = _events.ExecuteEvent()) { - DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true); - isFireboltTurn = false; - }else{ - DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true); - isFireboltTurn = true; + switch (eventId) + { + case EVENT_ETHEREAL_APPRENTICE_FIREBOLT: + DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FIREBOLT, true); + _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FROSTBOLT, 3000); + break; + case EVENT_ETHEREAL_APPRENTICE_FROSTBOLT: + DoCastVictim(SPELL_ETHEREAL_APPRENTICE_FROSTBOLT, true); + _events.ScheduleEvent(EVENT_ETHEREAL_APPRENTICE_FIREBOLT, 3000); + break; + default: + break; + } } - Cast_Timer = 3000; - } else Cast_Timer -= diff; - } - }; + } + private: + EventMap _events; + }; + + CreatureAI* GetAI(Creature* creature) const override + { + return new npc_ethereal_apprenticeAI(creature); + } }; enum Yor @@ -407,7 +347,7 @@ public: void EnterCombat(Unit* /*who*/) override { - events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); + _events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); } void UpdateAI(uint32 diff) override @@ -415,26 +355,27 @@ public: if (!UpdateVictim()) return; - events.Update(diff); + _events.Update(diff); - while (uint32 eventId = events.ExecuteEvent()) + while (uint32 eventId = _events.ExecuteEvent()) { switch (eventId) { case EVENT_DOUBLE_BREATH: if (me->IsWithinDist(me->GetVictim(), ATTACK_DISTANCE)) DoCastVictim(SPELL_DOUBLE_BREATH); - events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); + _events.ScheduleEvent(EVENT_DOUBLE_BREATH, urand(6000,9000)); break; default: break; } } + DoMeleeAttackIfReady(); } private: - EventMap events; + EventMap _events; }; CreatureAI* GetAI(Creature* creature) const override diff --git a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp index 3fb090ab94c..ed353b359c9 100644 --- a/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp +++ b/src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp @@ -88,10 +88,6 @@ class instance_serpent_shrine : public InstanceMapScript instance_serpentshrine_cavern_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); - } - - void Initialize() override - { memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); StrangePool = 0; @@ -106,7 +102,6 @@ class instance_serpent_shrine : public InstanceMapScript FrenzySpawnTimer = 2000; DoSpawnFrenzy = false; TrashCount = 0; - } bool IsEncounterInProgress() const override diff --git a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp index 1d9eb81b1e7..e632b2aff3d 100644 --- a/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp @@ -66,6 +66,7 @@ class boss_kelidan_the_breaker : public CreatureScript boss_kelidan_the_breakerAI(Creature* creature) : BossAI(creature, DATA_KELIDAN_THE_BREAKER) { Initialize(); + Firenova_Timer = 0; } void Initialize() diff --git a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp index 7b8eeb8834d..d2ef0857b23 100644 --- a/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp @@ -37,10 +37,6 @@ class instance_ramparts : public InstanceMapScript instance_ramparts_InstanceMapScript(Map* map) : InstanceScript(map) { spawned = false; - } - - void Initialize() override - { SetHeaders(DataHeader); SetBossNumber(EncounterCount); } diff --git a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp index db0159d1a2d..a8d840b778a 100644 --- a/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp @@ -54,6 +54,11 @@ class instance_magtheridons_lair : public InstanceMapScript { instance_magtheridons_lair_InstanceMapScript(Map* map) : InstanceScript(map) { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + CageTimer = 0; + RespawnTimer = 0; } uint32 m_auiEncounter[MAX_ENCOUNTER]; @@ -66,15 +71,6 @@ class instance_magtheridons_lair : public InstanceMapScript uint32 CageTimer; uint32 RespawnTimer; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - CageTimer = 0; - RespawnTimer = 0; - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp index 838297aa21f..208b7c36a5f 100644 --- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp +++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp @@ -39,9 +39,7 @@ class instance_shattered_halls : public InstanceMapScript struct instance_shattered_halls_InstanceMapScript : public InstanceScript { - instance_shattered_halls_InstanceMapScript(Map* map) : InstanceScript(map) { } - - void Initialize() override + instance_shattered_halls_InstanceMapScript(Map* map) : InstanceScript(map) { SetHeaders(DataHeader); SetBossNumber(EncounterCount); diff --git a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp index 2234547c76a..ebe9ac9865a 100644 --- a/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp +++ b/src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp @@ -46,7 +46,14 @@ class instance_the_eye : public InstanceMapScript struct instance_the_eye_InstanceMapScript : public InstanceScript { - instance_the_eye_InstanceMapScript(Map* map) : InstanceScript(map) { } + instance_the_eye_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetHeaders(DataHeader); + memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); + + KaelthasEventPhase = 0; + AlarEventPhase = 0; + } ObjectGuid ThaladredTheDarkener; ObjectGuid LordSanguinar; @@ -60,15 +67,6 @@ class instance_the_eye : public InstanceMapScript uint32 m_auiEncounter[MAX_ENCOUNTER]; - void Initialize() override - { - SetHeaders(DataHeader); - memset(&m_auiEncounter, 0, sizeof(m_auiEncounter)); - - KaelthasEventPhase = 0; - AlarEventPhase = 0; - } - bool IsEncounterInProgress() const override { for (uint8 i = 0; i < MAX_ENCOUNTER; ++i) diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp index 10a03b76fc9..e6f32a07538 100644 --- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp +++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp @@ -218,7 +218,21 @@ public: struct npc_mature_netherwing_drakeAI : public ScriptedAI { - npc_mature_netherwing_drakeAI(Creature* creature) : ScriptedAI(creature) { } + npc_mature_netherwing_drakeAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + uiPlayerGUID.Clear(); + + bCanEat = false; + bIsEating = false; + + EatTimer = 5000; + CastTimer = 5000; + } ObjectGuid uiPlayerGUID; @@ -230,13 +244,7 @@ public: void Reset() override { - uiPlayerGUID.Clear(); - - bCanEat = false; - bIsEating = false; - - EatTimer = 5000; - CastTimer = 5000; + Initialize(); } void SpellHit(Unit* pCaster, SpellInfo const* spell) override @@ -486,7 +494,17 @@ public: struct npc_dragonmaw_peonAI : public ScriptedAI { - npc_dragonmaw_peonAI(Creature* creature) : ScriptedAI(creature) { } + npc_dragonmaw_peonAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + PlayerGUID.Clear(); + Tapped = false; + PoisonTimer = 0; + } ObjectGuid PlayerGUID; bool Tapped; @@ -494,9 +512,7 @@ public: void Reset() override { - PlayerGUID.Clear(); - Tapped = false; - PoisonTimer = 0; + Initialize(); } void SpellHit(Unit* caster, const SpellInfo* spell) override @@ -720,7 +736,21 @@ public: struct npc_overlord_morghorAI : public ScriptedAI { - npc_overlord_morghorAI(Creature* creature) : ScriptedAI(creature) { } + npc_overlord_morghorAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + PlayerGUID.Clear(); + IllidanGUID.Clear(); + + ConversationTimer = 0; + Step = 0; + + Event = false; + } ObjectGuid PlayerGUID; ObjectGuid IllidanGUID; @@ -732,13 +762,7 @@ public: void Reset() override { - PlayerGUID.Clear(); - IllidanGUID.Clear(); - - ConversationTimer = 0; - Step = 0; - - Event = false; + Initialize(); me->SetUInt32Value(UNIT_NPC_FLAGS, 2); } @@ -1264,7 +1288,22 @@ public: struct npc_torloth_the_magnificentAI : public ScriptedAI { - npc_torloth_the_magnificentAI(Creature* creature) : ScriptedAI(creature) { } + npc_torloth_the_magnificentAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + SpellTimer1 = 0; + SpellTimer2 = 0; + SpellTimer3 = 0; + } + + void Initialize() + { + AnimationTimer = 4000; + AnimationCount = 0; + LordIllidanGUID.Clear(); + AggroTargetGUID.Clear(); + Timers = false; + } uint32 AnimationTimer, SpellTimer1, SpellTimer2, SpellTimer3; @@ -1277,11 +1316,7 @@ public: void Reset() override { - AnimationTimer = 4000; - AnimationCount = 0; - LordIllidanGUID.Clear(); - AggroTargetGUID.Clear(); - Timers = false; + Initialize(); me->AddUnitState(UNIT_STATE_ROOT); me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); @@ -1569,7 +1604,19 @@ public: struct npc_illidari_spawnAI : public ScriptedAI { - npc_illidari_spawnAI(Creature* creature) : ScriptedAI(creature) { } + npc_illidari_spawnAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + SpellTimer1 = 0; + SpellTimer2 = 0; + SpellTimer3 = 0; + } + + void Initialize() + { + LordIllidanGUID.Clear(); + Timers = false; + } ObjectGuid LordIllidanGUID; uint32 SpellTimer1, SpellTimer2, SpellTimer3; @@ -1577,8 +1624,7 @@ public: void Reset() override { - LordIllidanGUID.Clear(); - Timers = false; + Initialize(); } void EnterCombat(Unit* /*who*/) override { } diff --git a/src/server/scripts/Outland/zone_shattrath_city.cpp b/src/server/scripts/Outland/zone_shattrath_city.cpp index c2e7df19ca1..a1ae917cbba 100644 --- a/src/server/scripts/Outland/zone_shattrath_city.cpp +++ b/src/server/scripts/Outland/zone_shattrath_city.cpp @@ -87,15 +87,19 @@ public: { npc_raliq_the_drunkAI(Creature* creature) : ScriptedAI(creature) { - m_uiNormFaction = creature->getFaction(); + Initialize(); + } + + void Initialize() + { + Uppercut_Timer = 5000; } - uint32 m_uiNormFaction; uint32 Uppercut_Timer; void Reset() override { - Uppercut_Timer = 5000; + Initialize(); me->RestoreFaction(); } @@ -161,13 +165,21 @@ public: struct npc_salsalabimAI : public ScriptedAI { - npc_salsalabimAI(Creature* creature) : ScriptedAI(creature) { } + npc_salsalabimAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + MagneticPull_Timer = 15000; + } uint32 MagneticPull_Timer; void Reset() override { - MagneticPull_Timer = 15000; + Initialize(); me->RestoreFaction(); } diff --git a/src/server/scripts/Outland/zone_terokkar_forest.cpp b/src/server/scripts/Outland/zone_terokkar_forest.cpp index 223a144e33b..a019555d3c9 100644 --- a/src/server/scripts/Outland/zone_terokkar_forest.cpp +++ b/src/server/scripts/Outland/zone_terokkar_forest.cpp @@ -68,7 +68,17 @@ public: struct npc_unkor_the_ruthlessAI : public ScriptedAI { - npc_unkor_the_ruthlessAI(Creature* creature) : ScriptedAI(creature) { } + npc_unkor_the_ruthlessAI(Creature* creature) : ScriptedAI(creature) + { + Initialize(); + } + + void Initialize() + { + CanDoQuest = false; + UnkorUnfriendly_Timer = 0; + Pulverize_Timer = 3000; + } bool CanDoQuest; uint32 UnkorUnfriendly_Timer; @@ -76,9 +86,7 @@ public: void Reset() override { - CanDoQuest = false; - UnkorUnfriendly_Timer = 0; - Pulverize_Timer = 3000; + Initialize(); me->SetStandState(UNIT_STAND_STATE_STAND); me->setFaction(FACTION_HOSTILE); } @@ -397,9 +405,17 @@ public: { npc_floonAI(Creature* creature) : ScriptedAI(creature) { + Initialize(); m_uiNormFaction = creature->getFaction(); } + void Initialize() + { + Silence_Timer = 2000; + Frostbolt_Timer = 4000; + FrostNova_Timer = 9000; + } + uint32 m_uiNormFaction; uint32 Silence_Timer; uint32 Frostbolt_Timer; @@ -407,9 +423,7 @@ public: void Reset() override { - Silence_Timer = 2000; - Frostbolt_Timer = 4000; - FrostNova_Timer = 9000; + Initialize(); if (me->getFaction() != m_uiNormFaction) me->setFaction(m_uiNormFaction); } diff --git a/src/server/scripts/Spells/spell_dk.cpp b/src/server/scripts/Spells/spell_dk.cpp index 1aa01d7ac7c..638538872e8 100644 --- a/src/server/scripts/Spells/spell_dk.cpp +++ b/src/server/scripts/Spells/spell_dk.cpp @@ -78,6 +78,13 @@ class spell_dk_anti_magic_shell_raid : public SpellScriptLoader { PrepareAuraScript(spell_dk_anti_magic_shell_raid_AuraScript); + public: + spell_dk_anti_magic_shell_raid_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -120,6 +127,14 @@ class spell_dk_anti_magic_shell_self : public SpellScriptLoader { PrepareAuraScript(spell_dk_anti_magic_shell_self_AuraScript); + public: + spell_dk_anti_magic_shell_self_AuraScript() + { + absorbPct = 0; + hpPct = 0; + } + + private: uint32 absorbPct, hpPct; bool Load() override { @@ -177,6 +192,13 @@ class spell_dk_anti_magic_zone : public SpellScriptLoader { PrepareAuraScript(spell_dk_anti_magic_zone_AuraScript); + public: + spell_dk_anti_magic_zone_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -228,6 +250,13 @@ class spell_dk_blood_boil : public SpellScriptLoader { PrepareSpellScript(spell_dk_blood_boil_SpellScript); + public: + spell_dk_blood_boil_SpellScript() + { + _executed = false; + } + + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_BOIL_TRIGGERED)) @@ -237,7 +266,6 @@ class spell_dk_blood_boil : public SpellScriptLoader bool Load() override { - _executed = false; return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCaster()->getClass() == CLASS_DEATH_KNIGHT; } @@ -274,16 +302,17 @@ class spell_dk_blood_gorged : public SpellScriptLoader { PrepareAuraScript(spell_dk_blood_gorged_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_dk_blood_gorged_AuraScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_GORGED_HEAL)) - return false; - return true; + _procTarget = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _procTarget = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_DK_BLOOD_GORGED_HEAL)) + return false; return true; } @@ -873,7 +902,12 @@ class spell_dk_improved_frost_presence : public SpellScriptLoader { Unit* target = GetTarget(); if ((target->HasAura(SPELL_DK_BLOOD_PRESENCE) || target->HasAura(SPELL_DK_UNHOLY_PRESENCE)) && !target->HasAura(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED)) - target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, aurEff->GetAmount(), target, true, NULL, aurEff); + { + CustomSpellValues val; + val.AddSpellMod(SPELLVALUE_BASE_POINT0, aurEff->GetAmount()); + val.AddSpellMod(SPELLVALUE_BASE_POINT1, aurEff->GetAmount()); + target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, val, target, TRIGGERED_FULL_MASK, nullptr, aurEff); + } } void HandleEffectRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) @@ -1111,7 +1145,12 @@ class spell_dk_presence : public SpellScriptLoader Unit* target = GetTarget(); if (AuraEffect const* impAurEff = target->GetAuraEffectOfRankedSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_R1, EFFECT_0)) if (!target->HasAura(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED)) - target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, SPELLVALUE_BASE_POINT0, impAurEff->GetAmount(), target, true, NULL, aurEff); + { + CustomSpellValues val; + val.AddSpellMod(SPELLVALUE_BASE_POINT0, impAurEff->GetAmount()); + val.AddSpellMod(SPELLVALUE_BASE_POINT1, impAurEff->GetAmount()); + target->CastCustomSpell(SPELL_DK_IMPROVED_FROST_PRESENCE_TRIGGERED, val, target, TRIGGERED_FULL_MASK, nullptr, aurEff); + } } void HandleImprovedUnholyPresence(AuraEffect const* aurEff, AuraEffectHandleModes /*mode*/) @@ -1182,6 +1221,14 @@ class spell_dk_raise_dead : public SpellScriptLoader { PrepareSpellScript(spell_dk_raise_dead_SpellScript); + public: + spell_dk_raise_dead_SpellScript() + { + _result = SPELL_CAST_OK; + _corpse = false; + } + + private: bool Validate(SpellInfo const* spellInfo) override { if (!sSpellMgr->GetSpellInfo(spellInfo->Effects[EFFECT_1].CalcValue()) @@ -1194,8 +1241,6 @@ class spell_dk_raise_dead : public SpellScriptLoader bool Load() override { - _result = SPELL_CAST_OK; - _corpse = false; return GetCaster()->GetTypeId() == TYPEID_PLAYER; } @@ -1377,14 +1422,16 @@ class spell_dk_scourge_strike : public SpellScriptLoader class spell_dk_scourge_strike_SpellScript : public SpellScript { PrepareSpellScript(spell_dk_scourge_strike_SpellScript); - float multiplier; - bool Load() override + public: + spell_dk_scourge_strike_SpellScript() { multiplier = 1.0f; - return true; } + private: + float multiplier; + bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_DK_SCOURGE_STRIKE_TRIGGERED)) diff --git a/src/server/scripts/Spells/spell_druid.cpp b/src/server/scripts/Spells/spell_druid.cpp index 9c04aaa7578..7049ad90a27 100644 --- a/src/server/scripts/Spells/spell_druid.cpp +++ b/src/server/scripts/Spells/spell_druid.cpp @@ -746,6 +746,13 @@ class spell_dru_savage_defense : public SpellScriptLoader { PrepareAuraScript(spell_dru_savage_defense_AuraScript); + public: + spell_dru_savage_defense_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp index db8a9a5ace2..225920aa2dc 100644 --- a/src/server/scripts/Spells/spell_generic.cpp +++ b/src/server/scripts/Spells/spell_generic.cpp @@ -47,6 +47,13 @@ class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader { PrepareAuraScript(spell_gen_absorb0_hitlimit1_AuraScript); + public: + spell_gen_absorb0_hitlimit1_AuraScript() + { + limit = 0; + } + + private: uint32 limit; bool Load() override @@ -849,6 +856,13 @@ class spell_gen_clone_weapon_aura : public SpellScriptLoader { PrepareAuraScript(spell_gen_clone_weapon_auraScript); + public: + spell_gen_clone_weapon_auraScript() + { + prevItem = 0; + } + + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_COPY_WEAPON_AURA) || @@ -861,12 +875,6 @@ class spell_gen_clone_weapon_aura : public SpellScriptLoader return true; } - bool Load() override - { - prevItem = 0; - return true; - } - void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { Unit* caster = GetCaster(); @@ -1409,9 +1417,15 @@ class spell_gen_dungeon_credit : public SpellScriptLoader { PrepareSpellScript(spell_gen_dungeon_credit_SpellScript); - bool Load() override + public: + spell_gen_dungeon_credit_SpellScript() { _handled = false; + } + + private: + bool Load() override + { return GetCaster()->GetTypeId() == TYPEID_UNIT; } @@ -2240,11 +2254,17 @@ class spell_gen_on_tournament_mount : public SpellScriptLoader { PrepareAuraScript(spell_gen_on_tournament_mount_AuraScript); + public: + spell_gen_on_tournament_mount_AuraScript() + { + _pennantSpellId = 0; + } + + private: uint32 _pennantSpellId; bool Load() override { - _pennantSpellId = 0; return GetCaster() && GetCaster()->GetTypeId() == TYPEID_PLAYER; } diff --git a/src/server/scripts/Spells/spell_holiday.cpp b/src/server/scripts/Spells/spell_holiday.cpp index 85bf85fa2d2..e43249ff8aa 100644 --- a/src/server/scripts/Spells/spell_holiday.cpp +++ b/src/server/scripts/Spells/spell_holiday.cpp @@ -301,12 +301,9 @@ class spell_pilgrims_bounty_buff_food : public SpellScriptLoader uint32 const _triggeredSpellId; public: - spell_pilgrims_bounty_buff_food_AuraScript(uint32 triggeredSpellId) : AuraScript(), _triggeredSpellId(triggeredSpellId) { } - - bool Load() override + spell_pilgrims_bounty_buff_food_AuraScript(uint32 triggeredSpellId) : AuraScript(), _triggeredSpellId(triggeredSpellId) { _handled = false; - return true; } void HandleTriggerSpell(AuraEffect const* /*aurEff*/) @@ -444,6 +441,365 @@ class spell_winter_veil_px_238_winter_wondervolt : public SpellScriptLoader } }; +enum RamBlaBla +{ + SPELL_GIDDYUP = 42924, + SPELL_RENTAL_RACING_RAM = 43883, + SPELL_RENTAL_RACING_RAM_AURA = 42146, + SPELL_RAM_LEVEL_NEUTRAL = 43310, + SPELL_RAM_TROT = 42992, + SPELL_RAM_CANTER = 42993, + SPELL_RAM_GALLOP = 42994, + SPELL_RAM_FATIGUE = 43052, + SPELL_EXHAUSTED_RAM = 43332, + + // Quest + SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN = 43345, + SPELL_BREWFEST_QUEST_SPEED_BUNNY_YELLOW = 43346, + SPELL_BREWFEST_QUEST_SPEED_BUNNY_RED = 43347 +}; + +// 42924 - Giddyup! +class spell_brewfest_giddyup : public SpellScriptLoader +{ + public: + spell_brewfest_giddyup() : SpellScriptLoader("spell_brewfest_giddyup") { } + + class spell_brewfest_giddyup_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_giddyup_AuraScript); + + void OnChange(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + if (!target->HasAura(SPELL_RENTAL_RACING_RAM)) + { + target->RemoveAura(GetId()); + return; + } + + if (target->HasAura(SPELL_EXHAUSTED_RAM)) + return; + + switch (GetStackAmount()) + { + case 1: // green + target->RemoveAura(SPELL_RAM_LEVEL_NEUTRAL); + target->RemoveAura(SPELL_RAM_CANTER); + target->CastSpell(target, SPELL_RAM_TROT, true); + break; + case 6: // yellow + target->RemoveAura(SPELL_RAM_TROT); + target->RemoveAura(SPELL_RAM_GALLOP); + target->CastSpell(target, SPELL_RAM_CANTER, true); + break; + case 11: // red + target->RemoveAura(SPELL_RAM_CANTER); + target->CastSpell(target, SPELL_RAM_GALLOP, true); + break; + default: + break; + } + + if (GetTargetApplication()->GetRemoveMode() == AURA_REMOVE_BY_DEFAULT) + { + target->RemoveAura(SPELL_RAM_TROT); + target->CastSpell(target, SPELL_RAM_LEVEL_NEUTRAL, true); + } + } + + void OnPeriodic(AuraEffect const* /*aurEff*/) + { + GetTarget()->RemoveAuraFromStack(GetId()); + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_brewfest_giddyup_AuraScript::OnChange, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK); + OnEffectRemove += AuraEffectRemoveFn(spell_brewfest_giddyup_AuraScript::OnChange, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY, AURA_EFFECT_HANDLE_CHANGE_AMOUNT_MASK); + OnEffectPeriodic += AuraEffectPeriodicFn(spell_brewfest_giddyup_AuraScript::OnPeriodic, EFFECT_0, SPELL_AURA_PERIODIC_DUMMY); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_giddyup_AuraScript(); + } +}; + +// 43310 - Ram Level - Neutral +// 42992 - Ram - Trot +// 42993 - Ram - Canter +// 42994 - Ram - Gallop +class spell_brewfest_ram : public SpellScriptLoader +{ + public: + spell_brewfest_ram() : SpellScriptLoader("spell_brewfest_ram") { } + + class spell_brewfest_ram_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_ram_AuraScript); + + void OnPeriodic(AuraEffect const* aurEff) + { + Unit* target = GetTarget(); + if (target->HasAura(SPELL_EXHAUSTED_RAM)) + return; + + switch (GetId()) + { + case SPELL_RAM_LEVEL_NEUTRAL: + if (Aura* aura = target->GetAura(SPELL_RAM_FATIGUE)) + aura->ModStackAmount(-4); + break; + case SPELL_RAM_TROT: // green + if (Aura* aura = target->GetAura(SPELL_RAM_FATIGUE)) + aura->ModStackAmount(-2); + if (aurEff->GetTickNumber() == 4) + target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_GREEN, true); + break; + case SPELL_RAM_CANTER: + target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, 1, target, TRIGGERED_FULL_MASK); + if (aurEff->GetTickNumber() == 8) + target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_YELLOW, true); + break; + case SPELL_RAM_GALLOP: + target->CastCustomSpell(SPELL_RAM_FATIGUE, SPELLVALUE_AURA_STACK, target->HasAura(SPELL_RAM_FATIGUE) ? 4 : 5 /*Hack*/, target, TRIGGERED_FULL_MASK); + if (aurEff->GetTickNumber() == 8) + target->CastSpell(target, SPELL_BREWFEST_QUEST_SPEED_BUNNY_RED, true); + break; + default: + break; + } + + } + + void Register() override + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_brewfest_ram_AuraScript::OnPeriodic, EFFECT_1, SPELL_AURA_PERIODIC_DUMMY); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_ram_AuraScript(); + } +}; + +// 43052 - Ram Fatigue +class spell_brewfest_ram_fatigue : public SpellScriptLoader +{ + public: + spell_brewfest_ram_fatigue() : SpellScriptLoader("spell_brewfest_ram_fatigue") { } + + class spell_brewfest_ram_fatigue_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_ram_fatigue_AuraScript); + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + + if (GetStackAmount() == 101) + { + target->RemoveAura(SPELL_RAM_LEVEL_NEUTRAL); + target->RemoveAura(SPELL_RAM_TROT); + target->RemoveAura(SPELL_RAM_CANTER); + target->RemoveAura(SPELL_RAM_GALLOP); + target->RemoveAura(SPELL_GIDDYUP); + + target->CastSpell(target, SPELL_EXHAUSTED_RAM, true); + } + } + + void Register() override + { + AfterEffectApply += AuraEffectApplyFn(spell_brewfest_ram_fatigue_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL_OR_REAPPLY_MASK); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_ram_fatigue_AuraScript(); + } +}; + +// 43450 - Brewfest - apple trap - friendly DND +class spell_brewfest_apple_trap : public SpellScriptLoader +{ + public: + spell_brewfest_apple_trap() : SpellScriptLoader("spell_brewfest_apple_trap") { } + + class spell_brewfest_apple_trap_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_apple_trap_AuraScript); + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + GetTarget()->RemoveAura(SPELL_RAM_FATIGUE); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_brewfest_apple_trap_AuraScript::OnApply, EFFECT_0, SPELL_AURA_FORCE_REACTION, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_apple_trap_AuraScript(); + } +}; + +// 43332 - Exhausted Ram +class spell_brewfest_exhausted_ram : public SpellScriptLoader +{ + public: + spell_brewfest_exhausted_ram() : SpellScriptLoader("spell_brewfest_exhausted_ram") { } + + class spell_brewfest_exhausted_ram_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_exhausted_ram_AuraScript); + + void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Unit* target = GetTarget(); + target->CastSpell(target, SPELL_RAM_LEVEL_NEUTRAL, true); + } + + void Register() override + { + OnEffectRemove += AuraEffectApplyFn(spell_brewfest_exhausted_ram_AuraScript::OnRemove, EFFECT_0, SPELL_AURA_MOD_DECREASE_SPEED, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_exhausted_ram_AuraScript(); + } +}; + +// 43714 - Brewfest - Relay Race - Intro - Force - Player to throw- DND +class spell_brewfest_relay_race_intro_force_player_to_throw : public SpellScriptLoader +{ + public: + spell_brewfest_relay_race_intro_force_player_to_throw() : SpellScriptLoader("spell_brewfest_relay_race_intro_force_player_to_throw") { } + + class spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript : public SpellScript + { + PrepareSpellScript(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript); + + void HandleForceCast(SpellEffIndex effIndex) + { + PreventHitDefaultEffect(effIndex); + // All this spells trigger a spell that requires reagents; if the + // triggered spell is cast as "triggered", reagents are not consumed + GetHitUnit()->CastSpell((Unit*)NULL, GetSpellInfo()->Effects[effIndex].TriggerSpell, TriggerCastFlags(TRIGGERED_FULL_MASK & ~TRIGGERED_IGNORE_POWER_AND_REAGENT_COST)); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript::HandleForceCast, EFFECT_0, SPELL_EFFECT_FORCE_CAST); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript(); + } +}; + +// 43876 - Dismount Ram +class spell_brewfest_dismount_ram : public SpellScriptLoader +{ + public: + spell_brewfest_dismount_ram() : SpellScriptLoader("spell_brewfest_dismount_ram") { } + + class spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript : public SpellScript + { + PrepareSpellScript(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript); + + void HandleScript(SpellEffIndex /*effIndex*/) + { + GetCaster()->RemoveAura(SPELL_RENTAL_RACING_RAM); + } + + void Register() override + { + OnEffectHitTarget += SpellEffectFn(spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const override + { + return new spell_brewfest_relay_race_intro_force_player_to_throw_SpellScript(); + } +}; + +enum RamBlub +{ + QUEST_BARK_FOR_DROHNS_DISTILLERY = 11407, + QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY = 11408, + + SAY_DROHN_DISTILLERY_1 = 23520, + SAY_DROHN_DISTILLERY_2 = 23521, + SAY_DROHN_DISTILLERY_3 = 23522, + SAY_DROHN_DISTILLERY_4 = 23523, + + SAY_TCHALIS_VOODOO_1 = 23524, + SAY_TCHALIS_VOODOO_2 = 23525, + SAY_TCHALIS_VOODOO_3 = 23526, + SAY_TCHALIS_VOODOO_4 = 23527 +}; + +// 43259 Brewfest - Barker Bunny 1 +// 43260 Brewfest - Barker Bunny 2 +// 43261 Brewfest - Barker Bunny 3 +// 43262 Brewfest - Barker Bunny 4 +class spell_brewfest_barker_bunny : public SpellScriptLoader +{ + public: + spell_brewfest_barker_bunny() : SpellScriptLoader("spell_brewfest_barker_bunny") { } + + class spell_brewfest_barker_bunny_AuraScript : public AuraScript + { + PrepareAuraScript(spell_brewfest_barker_bunny_AuraScript); + + bool Load() override + { + return GetUnitOwner()->GetTypeId() == TYPEID_PLAYER; + } + + void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) + { + Player* target = GetTarget()->ToPlayer(); + + uint32 BroadcastTextId = 0; + + if (target->GetQuestStatus(QUEST_BARK_FOR_DROHNS_DISTILLERY) == QUEST_STATUS_INCOMPLETE || + target->GetQuestStatus(QUEST_BARK_FOR_DROHNS_DISTILLERY) == QUEST_STATUS_COMPLETE) + BroadcastTextId = RAND(SAY_DROHN_DISTILLERY_1, SAY_DROHN_DISTILLERY_2, SAY_DROHN_DISTILLERY_3, SAY_DROHN_DISTILLERY_4); + + if (target->GetQuestStatus(QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY) == QUEST_STATUS_INCOMPLETE || + target->GetQuestStatus(QUEST_BARK_FOR_TCHALIS_VOODOO_BREWERY) == QUEST_STATUS_COMPLETE) + BroadcastTextId = RAND(SAY_TCHALIS_VOODOO_1, SAY_TCHALIS_VOODOO_2, SAY_TCHALIS_VOODOO_3, SAY_TCHALIS_VOODOO_4); + + if (BroadcastTextId) + target->Talk(BroadcastTextId, CHAT_MSG_SAY, sWorld->getFloatConfig(CONFIG_LISTEN_RANGE_SAY), target); + } + + void Register() override + { + OnEffectApply += AuraEffectApplyFn(spell_brewfest_barker_bunny_AuraScript::OnApply, EFFECT_1, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL); + } + }; + + AuraScript* GetAuraScript() const override + { + return new spell_brewfest_barker_bunny_AuraScript(); + } +}; + void AddSC_holiday_spell_scripts() { // Love is in the Air @@ -461,4 +817,13 @@ void AddSC_holiday_spell_scripts() // Winter Veil new spell_winter_veil_mistletoe(); new spell_winter_veil_px_238_winter_wondervolt(); + // Brewfest + new spell_brewfest_giddyup(); + new spell_brewfest_ram(); + new spell_brewfest_ram_fatigue(); + new spell_brewfest_apple_trap(); + new spell_brewfest_exhausted_ram(); + new spell_brewfest_relay_race_intro_force_player_to_throw(); + new spell_brewfest_dismount_ram(); + new spell_brewfest_barker_bunny(); } diff --git a/src/server/scripts/Spells/spell_mage.cpp b/src/server/scripts/Spells/spell_mage.cpp index d72c6d5c775..17c72ba5561 100644 --- a/src/server/scripts/Spells/spell_mage.cpp +++ b/src/server/scripts/Spells/spell_mage.cpp @@ -537,16 +537,17 @@ class spell_mage_focus_magic : public SpellScriptLoader { PrepareAuraScript(spell_mage_focus_magic_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_mage_focus_magic_AuraScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FOCUS_MAGIC_PROC)) - return false; - return true; + _procTarget = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _procTarget = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_MAGE_FOCUS_MAGIC_PROC)) + return false; return true; } diff --git a/src/server/scripts/Spells/spell_paladin.cpp b/src/server/scripts/Spells/spell_paladin.cpp index e6ad3e83477..1dab620a9c7 100644 --- a/src/server/scripts/Spells/spell_paladin.cpp +++ b/src/server/scripts/Spells/spell_paladin.cpp @@ -88,6 +88,14 @@ class spell_pal_ardent_defender : public SpellScriptLoader { PrepareAuraScript(spell_pal_ardent_defender_AuraScript); + public: + spell_pal_ardent_defender_AuraScript() + { + absorbPct = 0; + healPct = 0; + } + + private: uint32 absorbPct, healPct; enum Spell @@ -459,6 +467,13 @@ class spell_pal_divine_storm : public SpellScriptLoader { PrepareSpellScript(spell_pal_divine_storm_SpellScript); + public: + spell_pal_divine_storm_SpellScript() + { + healPct = 0; + } + + private: uint32 healPct; bool Validate(SpellInfo const* /*spellInfo*/) override @@ -502,6 +517,13 @@ class spell_pal_divine_storm_dummy : public SpellScriptLoader { PrepareSpellScript(spell_pal_divine_storm_dummy_SpellScript); + public: + spell_pal_divine_storm_dummy_SpellScript() + { + _targetCount = 0; + } + + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_PALADIN_DIVINE_STORM_HEAL)) @@ -693,6 +715,13 @@ class spell_pal_hand_of_sacrifice : public SpellScriptLoader { PrepareAuraScript(spell_pal_hand_of_sacrifice_AuraScript); + public: + spell_pal_hand_of_sacrifice_AuraScript() + { + remainingAmount = 0; + } + + private: int32 remainingAmount; bool Load() override diff --git a/src/server/scripts/Spells/spell_pet.cpp b/src/server/scripts/Spells/spell_pet.cpp index f8466eb1f74..9fd55ae057e 100644 --- a/src/server/scripts/Spells/spell_pet.cpp +++ b/src/server/scripts/Spells/spell_pet.cpp @@ -229,11 +229,17 @@ public: { PrepareAuraScript(spell_warl_pet_scaling_01_AuraScript); + public: + spell_warl_pet_scaling_01_AuraScript() + { + _tempBonus = 0; + } + + private: bool Load() override { if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER) return false; - _tempBonus = 0; return true; } @@ -366,11 +372,17 @@ public: { PrepareAuraScript(spell_warl_pet_scaling_02_AuraScript); + public: + spell_warl_pet_scaling_02_AuraScript() + { + _tempBonus = 0; + } + + private: bool Load() override { if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER) return false; - _tempBonus = 0; return true; } @@ -880,6 +892,13 @@ public: { PrepareAuraScript(spell_hun_pet_scaling_01_AuraScript); + public: + spell_hun_pet_scaling_01_AuraScript() + { + _tempHealth = 0; + } + + private: void CalculateStaminaAmount(AuraEffect const* /* aurEff */, int32& amount, bool& /*canBeRecalculated*/) { if (Unit* pet = GetUnitOwner()) @@ -1457,11 +1476,17 @@ public: { PrepareAuraScript(spell_dk_pet_scaling_01_AuraScript); + public: + spell_dk_pet_scaling_01_AuraScript() + { + _tempHealth = 0; + } + + private: bool Load() override { if (!GetCaster() || !GetCaster()->GetOwner() || GetCaster()->GetOwner()->GetTypeId() != TYPEID_PLAYER) return false; - _tempHealth = 0; return true; } diff --git a/src/server/scripts/Spells/spell_priest.cpp b/src/server/scripts/Spells/spell_priest.cpp index 0f78790bcee..8ec5450072f 100644 --- a/src/server/scripts/Spells/spell_priest.cpp +++ b/src/server/scripts/Spells/spell_priest.cpp @@ -465,6 +465,13 @@ class spell_pri_guardian_spirit : public SpellScriptLoader { PrepareAuraScript(spell_pri_guardian_spirit_AuraScript); + public: + spell_pri_guardian_spirit_AuraScript() + { + healPct = 0; + } + + private: uint32 healPct; bool Validate(SpellInfo const* /*spellInfo*/) override @@ -657,16 +664,17 @@ class spell_pri_mana_leech : public SpellScriptLoader { PrepareAuraScript(spell_pri_mana_leech_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_pri_mana_leech_AuraScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC)) - return false; - return true; + _procTarget = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _procTarget = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_PRIEST_MANA_LEECH_PROC)) + return false; return true; } diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp index 9c65567fe7f..a59594935b5 100644 --- a/src/server/scripts/Spells/spell_quest.cpp +++ b/src/server/scripts/Spells/spell_quest.cpp @@ -2101,6 +2101,11 @@ class spell_q12641_death_comes_from_on_high : public SpellScriptLoader }; // 52694 - Recall Eye of Acherus +enum Recall_Eye_of_Acherus +{ + THE_EYE_OF_ACHERUS = 51852 +}; + class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader { public: @@ -2116,6 +2121,7 @@ class spell_q12641_recall_eye_of_acherus : public SpellScriptLoader { player->StopCastingCharm(); player->StopCastingBindSight(); + player->RemoveAura(THE_EYE_OF_ACHERUS); } } diff --git a/src/server/scripts/Spells/spell_rogue.cpp b/src/server/scripts/Spells/spell_rogue.cpp index 175a3c4f361..56010e275dc 100644 --- a/src/server/scripts/Spells/spell_rogue.cpp +++ b/src/server/scripts/Spells/spell_rogue.cpp @@ -68,16 +68,17 @@ class spell_rog_blade_flurry : public SpellScriptLoader { PrepareAuraScript(spell_rog_blade_flurry_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_rog_blade_flurry_AuraScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK)) - return false; - return true; + _procTarget = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _procTarget = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_BLADE_FLURRY_EXTRA_ATTACK)) + return false; return true; } @@ -126,6 +127,13 @@ class spell_rog_cheat_death : public SpellScriptLoader { PrepareAuraScript(spell_rog_cheat_death_AuraScript); + public: + spell_rog_cheat_death_AuraScript() + { + absorbChance = 0; + } + + private: uint32 absorbChance; bool Validate(SpellInfo const* /*spellInfo*/) override @@ -253,9 +261,15 @@ class spell_rog_deadly_poison : public SpellScriptLoader { PrepareSpellScript(spell_rog_deadly_poison_SpellScript); - bool Load() override + public: + spell_rog_deadly_poison_SpellScript() { _stackAmount = 0; + } + + private: + bool Load() override + { // at this point CastItem must already be initialized return GetCaster()->GetTypeId() == TYPEID_PLAYER && GetCastItem(); } @@ -487,6 +501,13 @@ class spell_rog_nerves_of_steel : public SpellScriptLoader { PrepareAuraScript(spell_rog_nerves_of_steel_AuraScript); + public: + spell_rog_nerves_of_steel_AuraScript() + { + absorbPct = 0; + } + + private: uint32 absorbPct; bool Load() override @@ -882,6 +903,13 @@ class spell_rog_tricks_of_the_trade : public SpellScriptLoader { PrepareAuraScript(spell_rog_tricks_of_the_trade_AuraScript); + public: + spell_rog_tricks_of_the_trade_AuraScript() + { + _redirectTarget = nullptr; + } + + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_ROGUE_TRICKS_OF_THE_TRADE_DMG_BOOST)) @@ -891,12 +919,6 @@ class spell_rog_tricks_of_the_trade : public SpellScriptLoader return true; } - bool Load() override - { - _redirectTarget = NULL; - return true; - } - void OnRemove(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/) { if (GetTargetApplication()->GetRemoveMode() != AURA_REMOVE_BY_DEFAULT) diff --git a/src/server/scripts/Spells/spell_shaman.cpp b/src/server/scripts/Spells/spell_shaman.cpp index b9f34bafedf..5e8e3a1070f 100644 --- a/src/server/scripts/Spells/spell_shaman.cpp +++ b/src/server/scripts/Spells/spell_shaman.cpp @@ -219,14 +219,15 @@ class spell_sha_chain_heal : public SpellScriptLoader { PrepareSpellScript(spell_sha_chain_heal_SpellScript); - bool Load() override + public: + spell_sha_chain_heal_SpellScript() { firstHeal = true; riptide = false; amount = 0; - return true; } + private: void HandleHeal(SpellEffIndex /*effIndex*/) { if (firstHeal) diff --git a/src/server/scripts/Spells/spell_warlock.cpp b/src/server/scripts/Spells/spell_warlock.cpp index 42acb474169..24fa9ee31ae 100644 --- a/src/server/scripts/Spells/spell_warlock.cpp +++ b/src/server/scripts/Spells/spell_warlock.cpp @@ -139,12 +139,13 @@ class spell_warl_banish : public SpellScriptLoader { PrepareSpellScript(spell_warl_banish_SpellScript); - bool Load() override + public: + spell_warl_banish_SpellScript() { _removed = false; - return true; } + private: void HandleBanish() { /// Casting Banish on a banished target will cancel the effect diff --git a/src/server/scripts/Spells/spell_warrior.cpp b/src/server/scripts/Spells/spell_warrior.cpp index 4bf57d116fe..5e976b12071 100644 --- a/src/server/scripts/Spells/spell_warrior.cpp +++ b/src/server/scripts/Spells/spell_warrior.cpp @@ -839,16 +839,17 @@ class spell_warr_sweeping_strikes : public SpellScriptLoader { PrepareAuraScript(spell_warr_sweeping_strikes_AuraScript); - bool Validate(SpellInfo const* /*spellInfo*/) override + public: + spell_warr_sweeping_strikes_AuraScript() { - if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2)) - return false; - return true; + _procTarget = nullptr; } - bool Load() override + private: + bool Validate(SpellInfo const* /*spellInfo*/) override { - _procTarget = NULL; + if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_1) || !sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SWEEPING_STRIKES_EXTRA_ATTACK_2)) + return false; return true; } @@ -903,6 +904,7 @@ class spell_warr_sword_and_board : public SpellScriptLoader { PrepareAuraScript(spell_warr_sword_and_board_AuraScript); + private: bool Validate(SpellInfo const* /*spellInfo*/) override { if (!sSpellMgr->GetSpellInfo(SPELL_WARRIOR_SHIELD_SLAM)) diff --git a/src/server/shared/Debugging/Errors.cpp b/src/server/shared/Debugging/Errors.cpp index 0621cfa5b6d..8b1b9454850 100644 --- a/src/server/shared/Debugging/Errors.cpp +++ b/src/server/shared/Debugging/Errors.cpp @@ -21,6 +21,7 @@ #include <cstdio> #include <cstdlib> #include <thread> +#include <cstdarg> namespace Trinity { @@ -32,6 +33,21 @@ void Assert(char const* file, int line, char const* function, char const* messag exit(1); } +void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...) +{ + va_list args; + va_start(args, format); + + fprintf(stderr, "\n%s:%i in %s ASSERTION FAILED:\n %s ", file, line, function, message); + vfprintf(stderr, format, args); + fprintf(stderr, "\n"); + fflush(stderr); + + va_end(args); + *((volatile int*)NULL) = 0; + exit(1); +} + void Fatal(char const* file, int line, char const* function, char const* message) { fprintf(stderr, "\n%s:%i in %s FATAL ERROR:\n %s\n", diff --git a/src/server/shared/Debugging/Errors.h b/src/server/shared/Debugging/Errors.h index 218acfa453e..e6da19eb00d 100644 --- a/src/server/shared/Debugging/Errors.h +++ b/src/server/shared/Debugging/Errors.h @@ -23,8 +23,8 @@ namespace Trinity { - DECLSPEC_NORETURN void Assert(char const* file, int line, char const* function, char const* message) ATTR_NORETURN; + DECLSPEC_NORETURN void Assert(char const* file, int line, char const* function, char const* message, char const* format, ...) ATTR_NORETURN ATTR_PRINTF(5, 6); DECLSPEC_NORETURN void Fatal(char const* file, int line, char const* function, char const* message) ATTR_NORETURN; @@ -42,7 +42,7 @@ namespace Trinity #define ASSERT_END #endif -#define WPAssert(cond) ASSERT_BEGIN do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond); } while(0) ASSERT_END +#define WPAssert(cond, ...) ASSERT_BEGIN do { if (!(cond)) Trinity::Assert(__FILE__, __LINE__, __FUNCTION__, #cond, ##__VA_ARGS__); } while(0) ASSERT_END #define WPFatal(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Fatal(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END #define WPError(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Error(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END #define WPWarning(cond, msg) ASSERT_BEGIN do { if (!(cond)) Trinity::Warning(__FILE__, __LINE__, __FUNCTION__, (msg)); } while(0) ASSERT_END diff --git a/src/server/shared/Packets/ByteBuffer.h b/src/server/shared/Packets/ByteBuffer.h index f7d27697f24..d65b6c58a51 100644 --- a/src/server/shared/Packets/ByteBuffer.h +++ b/src/server/shared/Packets/ByteBuffer.h @@ -118,7 +118,6 @@ class ByteBuffer template <typename T> void append(T value) { static_assert(std::is_fundamental<T>::value, "append(compound)"); - FlushBits(); EndianConvert(value); append((uint8 *)&value, sizeof(value)); } @@ -128,9 +127,10 @@ class ByteBuffer if (_bitpos == 8) return; + _bitpos = 8; + append((uint8 *)&_curbitval, sizeof(uint8)); _curbitval = 0; - _bitpos = 8; } bool WriteBit(uint32 bit) @@ -583,6 +583,8 @@ class ByteBuffer ASSERT(size() < 10000000); + FlushBits(); + if (_storage.size() < _wpos + cnt) _storage.resize(_wpos + cnt); std::memcpy(&_storage[_wpos], src, cnt); |