aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2014_09_22_00_world.sql32
-rw-r--r--sql/updates/world/2014_09_23_00_world.sql15
-rw-r--r--sql/updates/world/2014_09_23_01_world.sql2
-rw-r--r--sql/updates/world/2014_09_23_02_world.sql83
-rw-r--r--sql/updates/world/2014_09_23_03_world.sql28
-rw-r--r--sql/updates/world/2014_09_23_04_world.sql5
-rw-r--r--sql/updates/world/2014_09_24_00_world.sql111
-rw-r--r--sql/updates/world/2014_09_24_01_world.sql43
-rw-r--r--sql/updates/world/2014_09_25_00_world.sql9
-rw-r--r--sql/updates/world/2014_09_25_01_world.sql23
-rw-r--r--sql/updates/world/2014_09_25_02_world.sql1
-rw-r--r--sql/updates/world/2014_09_26_00_world.sql326
-rw-r--r--sql/updates/world/2014_09_26_01_world.sql2
-rw-r--r--sql/updates/world/2014_09_26_02_world.sql1
-rw-r--r--sql/updates/world/2014_09_26_03_world.sql33
-rw-r--r--sql/updates/world/2014_09_27_00_world.sql60
-rw-r--r--sql/updates/world/2014_09_27_01_world.sql3
-rw-r--r--sql/updates/world/2014_09_27_02_world.sql4
-rw-r--r--src/server/game/Achievements/AchievementMgr.cpp2
-rw-r--r--src/server/game/Entities/Pet/Pet.cpp1
-rw-r--r--src/server/game/Instances/InstanceScript.h2
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp15
-rw-r--r--src/server/game/Spells/Spell.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockDepths/instance_blackrock_depths.cpp22
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/Deadmines/instance_deadmines.cpp14
-rw-r--r--src/server/scripts/EasternKingdoms/Gnomeregan/instance_gnomeregan.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/Karazhan/instance_karazhan.cpp20
-rw-r--r--src/server/scripts/EasternKingdoms/Scholomance/boss_darkmaster_gandling.cpp16
-rw-r--r--src/server/scripts/EasternKingdoms/ShadowfangKeep/instance_shadowfang_keep.cpp18
-rw-r--r--src/server/scripts/EasternKingdoms/Stratholme/instance_stratholme.cpp17
-rw-r--r--src/server/scripts/EasternKingdoms/SunkenTemple/instance_sunken_temple.cpp21
-rw-r--r--src/server/scripts/EasternKingdoms/Uldaman/instance_uldaman.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/zone_isle_of_queldanas.cpp101
-rw-r--r--src/server/scripts/Kalimdor/BlackfathomDeeps/instance_blackfathom_deeps.cpp18
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/BattleForMountHyjal/instance_hyjal.cpp14
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/EscapeFromDurnholdeKeep/instance_old_hillsbrad.cpp18
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/TheBlackMorass/instance_the_black_morass.cpp12
-rw-r--r--src/server/scripts/Kalimdor/OnyxiasLair/instance_onyxias_lair.cpp18
-rw-r--r--src/server/scripts/Kalimdor/RazorfenDowns/instance_razorfen_downs.cpp14
-rw-r--r--src/server/scripts/Kalimdor/RazorfenKraul/instance_razorfen_kraul.cpp10
-rw-r--r--src/server/scripts/Kalimdor/TempleOfAhnQiraj/instance_temple_of_ahnqiraj.cpp24
-rw-r--r--src/server/scripts/Kalimdor/WailingCaverns/instance_wailing_caverns.cpp14
-rw-r--r--src/server/scripts/Kalimdor/ZulFarrak/instance_zulfarrak.cpp20
-rw-r--r--src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_elder_nadox.cpp14
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/instance_obsidian_sanctum.cpp4
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/instance_trial_of_the_champion.cpp24
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp15
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/instance_trial_of_the_crusader.cpp4
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_forgemaster_garfrost.cpp5
-rw-r--r--src/server/scripts/Northrend/FrozenHalls/PitOfSaron/boss_scourgelord_tyrannus.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_deathbringer_saurfang.cpp16
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_icecrown_gunship_battle.cpp22
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp5
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_professor_putricide.cpp8
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_rotface.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_sindragosa.cpp7
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_the_lich_king.cpp45
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_valithria_dreamwalker.cpp14
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/icecrown_citadel.cpp5
-rw-r--r--src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp7
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/instance_nexus.cpp12
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp8
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_flame_leviathan.cpp7
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_mimiron.cpp13
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp52
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_ymiron.cpp2
-rw-r--r--src/server/scripts/Northrend/VaultOfArchavon/boss_koralon.cpp5
-rw-r--r--src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp58
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp5
-rw-r--r--src/server/scripts/Outland/Auchindoun/ManaTombs/boss_nexusprince_shaffar.cpp465
-rw-r--r--src/server/scripts/Outland/CoilfangReservoir/SerpentShrine/instance_serpent_shrine.cpp5
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/BloodFurnace/boss_kelidan_the_breaker.cpp1
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/HellfireRamparts/instance_hellfire_ramparts.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/MagtheridonsLair/instance_magtheridons_lair.cpp14
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/instance_shattered_halls.cpp4
-rw-r--r--src/server/scripts/Outland/TempestKeep/Eye/instance_the_eye.cpp18
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp104
-rw-r--r--src/server/scripts/Outland/zone_shattrath_city.cpp22
-rw-r--r--src/server/scripts/Outland/zone_terokkar_forest.cpp28
-rw-r--r--src/server/scripts/Spells/spell_dk.cpp75
-rw-r--r--src/server/scripts/Spells/spell_druid.cpp7
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp36
-rw-r--r--src/server/scripts/Spells/spell_holiday.cpp373
-rw-r--r--src/server/scripts/Spells/spell_mage.cpp13
-rw-r--r--src/server/scripts/Spells/spell_paladin.cpp29
-rw-r--r--src/server/scripts/Spells/spell_pet.cpp31
-rw-r--r--src/server/scripts/Spells/spell_priest.cpp20
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp6
-rw-r--r--src/server/scripts/Spells/spell_rogue.cpp48
-rw-r--r--src/server/scripts/Spells/spell_shaman.cpp5
-rw-r--r--src/server/scripts/Spells/spell_warlock.cpp5
-rw-r--r--src/server/scripts/Spells/spell_warrior.cpp14
-rw-r--r--src/server/shared/Debugging/Errors.cpp16
-rw-r--r--src/server/shared/Debugging/Errors.h4
-rw-r--r--src/server/shared/Packets/ByteBuffer.h6
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);