aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2015_08_26_00_world.sql2
-rw-r--r--sql/updates/world/2015_08_26_01_world.sql1
-rw-r--r--sql/updates/world/2015_08_27_00_world.sql6
-rw-r--r--sql/updates/world/2015_08_29_00_world.sql37
-rw-r--r--sql/updates/world/2015_08_29_01_world.sql104
-rw-r--r--sql/updates/world/2015_08_29_02_world.sql345
-rw-r--r--sql/updates/world/2015_08_29_03_world.sql49
-rw-r--r--sql/updates/world/2015_08_29_04_world.sql11
-rw-r--r--sql/updates/world/2015_08_30_00_world.sql33
-rw-r--r--sql/updates/world/2015_08_31_01_world.sql17
-rw-r--r--sql/updates/world/2015_09_01_00_world_335.sql2
-rw-r--r--sql/updates/world/2015_09_02_00_world.sql7
-rw-r--r--sql/updates/world/2015_09_02_01_world.sql7
-rw-r--r--src/server/game/Battlegrounds/BattlegroundMgr.cpp3
-rw-r--r--src/server/game/DataStores/DBCStructure.h7
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp4
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.h2
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp69
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.h1
-rw-r--r--src/server/game/DungeonFinding/LFGScripts.cpp2
-rw-r--r--src/server/game/Entities/Unit/Unit.cpp6
-rw-r--r--src/server/game/Globals/ObjectMgr.cpp3
-rw-r--r--src/server/game/Miscellaneous/Language.h3
-rw-r--r--src/server/game/Server/WorldSession.h1
-rw-r--r--src/server/scripts/Commands/cs_cheat.cpp41
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h41
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp8
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp7
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp6
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp4
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp2
-rw-r--r--src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp231
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp4
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp25
-rw-r--r--src/server/scripts/Northrend/zone_borean_tundra.cpp10
-rw-r--r--src/server/scripts/World/npcs_special.cpp122
39 files changed, 895 insertions, 349 deletions
diff --git a/sql/updates/world/2015_08_26_00_world.sql b/sql/updates/world/2015_08_26_00_world.sql
new file mode 100644
index 00000000000..2bb55b8bfc7
--- /dev/null
+++ b/sql/updates/world/2015_08_26_00_world.sql
@@ -0,0 +1,2 @@
+DELETE FROM `trinity_string` WHERE `entry` = 364;
+INSERT INTO `trinity_string` (`entry`, `content_default`) VALUES (364, 'Taxinodes: %s.');
diff --git a/sql/updates/world/2015_08_26_01_world.sql b/sql/updates/world/2015_08_26_01_world.sql
new file mode 100644
index 00000000000..ded18be8a7b
--- /dev/null
+++ b/sql/updates/world/2015_08_26_01_world.sql
@@ -0,0 +1 @@
+UPDATE `game_event_battleground_holiday` SET `bgflag` = 1073741824 WHERE `eventEntry` = 54 ;
diff --git a/sql/updates/world/2015_08_27_00_world.sql b/sql/updates/world/2015_08_27_00_world.sql
new file mode 100644
index 00000000000..a0519693f9e
--- /dev/null
+++ b/sql/updates/world/2015_08_27_00_world.sql
@@ -0,0 +1,6 @@
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 13 AND `SourceEntry` = 36450;
+INSERT INTO `conditions`(`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`,`ConditionValue2`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(13, 3, 36450, 0, 0, 31, 0, 3, 20060, 0, 0, 0, '', 'Kael\'thas Ressurection hit only Lord Sanguinar'),
+(13, 3, 36450, 0, 1, 31, 0, 3, 20062, 0, 0, 0, '', 'Kael\'thas Ressurection hit only Grand Astromancer Capernian'),
+(13, 3, 36450, 0, 2, 31, 0, 3, 20063, 0, 0, 0, '', 'Kael\'thas Ressurection hit only Master Engineer Telonicus'),
+(13, 3, 36450, 0, 3, 31, 0, 3, 20064, 0, 0, 0, '', 'Kael\'thas Ressurection hit only Thaladred the Darkener');
diff --git a/sql/updates/world/2015_08_29_00_world.sql b/sql/updates/world/2015_08_29_00_world.sql
new file mode 100644
index 00000000000..59bf0e2bfcf
--- /dev/null
+++ b/sql/updates/world/2015_08_29_00_world.sql
@@ -0,0 +1,37 @@
+--
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (32682, 27932);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (32682, 27932) AND `source_type`=0;
+UPDATE `creature_template` SET `InhabitType`=4, `speed_run`=2.5 WHERE `entry` IN (32682, 27932);
+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
+(32682, 0, 0, 0, 27, 0, 100, 1, 0, 0, 0, 0, 53, 1, 32682, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Harry''s Bomber- On passeger rided - Start wp'),
+(27932, 0, 0, 0, 27, 0, 100, 1, 0, 0, 0, 0, 53, 1, 27932, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Harry''s Bomber- On passeger rided - Start wp'),
+(32682, 0, 1, 0, 58, 0, 100, 1, 9, 32682, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Harry''s Bomber- On waypoint ended - Eject passengers'),
+(27932, 0, 1, 0, 58, 0, 100, 1, 9, 27932, 0, 0, 11, 50630, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,0,'Harry''s Bomber- On passeger ended - Eject passengers');
+
+UPDATE `smart_scripts` SET `action_type`=85 WHERE `entryorguid`=28277 AND `source_type`=0 AND `id`=0;
+DELETE FROM `waypoints` WHERE `entry` IN (32682, 27932);
+INSERT INTO `waypoints` (`entry`, `pointid`, `position_x`, `position_y`, `position_z`, `point_comment`) VALUES
+(32682, 1, 61.83957, -6228.992, 19.07242, 'Harry''s Bomber'),
+(32682, 2, -64.6518, -5908.95, 29.8502, 'Harry''s Bomber'),
+(32682, 3, -158.0859, -5631.193, 29.8502, 'Harry''s Bomber'),
+(32682, 4, -436.5865, -5223.862, 32.1002, 'Harry''s Bomber'),
+(32682, 5, -412.989, -5012.779, 45.7391, 'Harry''s Bomber'),
+(32682, 6, -75.09814, -4341.288, 64.29379, 'Harry''s Bomber'),
+(32682, 7, -51.86116, -4023.003, 70.12712, 'Harry''s Bomber'),
+(32682, 8, -136.1673, -3716.832, 59.96046, 'Harry''s Bomber'),
+(32682, 9, -170.8945, -3578.378, 4.988236, 'Harry''s Bomber'),
+(27932, 1, -136.1673, -3716.832, 59.96046, 'Harry''s Bomber'),
+(27932, 2, -51.86116, -4023.003, 70.12712, 'Harry''s Bomber'),
+(27932, 3, -75.09814, -4341.288, 64.29379, 'Harry''s Bomber'),
+(27932, 4, -412.989, -5012.779, 45.7391, 'Harry''s Bomber'),
+(27932, 5, -436.5865, -5223.862, 32.1002, 'Harry''s Bomber'),
+(27932, 6, -158.0859, -5631.193, 29.8502, 'Harry''s Bomber'),
+(27932, 7, -64.6518, -5908.95, 29.8502, 'Harry''s Bomber'),
+(27932, 8, 61.83957, -6228.992, 19.07242, 'Harry''s Bomber'),
+(27932, 9, 89.63259, -6287.430, -0.739605, 'Harry''s Bomber');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=10218;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`Scriptname`,`Comment`) VALUES
+(15,10218,0,0,0,23,0,495,0,0,0,0 ,'' , 'Harry''s Bomber - Show gossip option if the npc is in the area 495'),
+(15,10218,0,0,0,9,0,11567,0,0,0,0 ,'' , 'Harry''s Bomber - Show gossip option if player has taken quest 11567'),
+(15,10218,0,0,1,28,0,11567,0,0,0,0 ,'' , 'Harry''s Bomber - Show gossip option if player has quest 11567 completed');
diff --git a/sql/updates/world/2015_08_29_01_world.sql b/sql/updates/world/2015_08_29_01_world.sql
new file mode 100644
index 00000000000..05aa1774d18
--- /dev/null
+++ b/sql/updates/world/2015_08_29_01_world.sql
@@ -0,0 +1,104 @@
+--
+DELETE FROM `creature_template_addon` WHERE `entry` IN (30477, 30487);
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(30477, 0, 0, 33554432, 0, 0, '55971'),
+(30487, 0, 0, 33554432, 0, 0, '55971');
+UPDATE `creature_template` SET `vehicleid`=110 WHERE `entry`=28192;
+UPDATE `creature_template` SET `Inhabittype`=4 WHERE `entry`=24767;
+
+UPDATE `creature_template` SET `InhabitType`=4, `speed_run`=2.14286, `unit_flags`=33288 WHERE `entry`=27923;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (27923) 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
+(27923,0,0,0,54,0,100,0,0,0,0,0,1,0,2000,0,0,0,0,7,0,0,0,0,0,0,0,'Lou the Cabin Boy - On summon - Say line'),
+(27923,0,1,0,52,0,100,0,0,27923,0,0,53,1,27923,0,0,0,0,1,0,0,0,0,0,0,0,'Lou the Cabin Boy - On text over - Start WP movement'),
+(27923,0,3,0,40,0,100,0,13,27923,0,0,1,1,2000,0,0,0,0,1,0,0,0,0,0,0,0,'Lou the Cabin Boy - On WP 13 reached - Say line'),
+(27923,0,4,0,52,0,100,0,1,27923,0,0,28,46598,0,0,0,0,0,1,0,0,0,0,0,0,0,'Lou the Cabin Boy - On text over - Remove aura Ride Vehicle Hardcoded');
+
+DELETE FROM `creature_template_addon` WHERE `entry`=23982;
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(23982,0,0,1,0,0,'29266');
+
+SET @CGUID=88474;
+DELETE FROM `creature_addon` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+11;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(@CGUID+0,0,0,1,0,0,'45319'),
+(@CGUID+1,0,0,1,0,0,'45319'),
+(@CGUID+2,0,0,1,0,0,'45319'),
+(@CGUID+3,0,0,1,0,0,'45319'),
+(@CGUID+4,0,0,1,0,0,'45319'),
+(@CGUID+5,0,0,1,0,0,'45319'),
+(@CGUID+6,0,0,1,0,0,'45319'),
+(@CGUID+7,0,0,1,0,0,'45319'),
+(@CGUID+8,0,0,1,0,0,'45319'),
+(@CGUID+9,0,0,1,0,0,'45319'),
+(@CGUID+10,0,0,1,0,0,'45319'),
+(@CGUID+11,0,0,1,0,0,'45319');
+
+DELETE FROM `creature` WHERE `id`=23982;
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+64;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(@CGUID+0,23033,571,1,1,0,0,121.0426,-6350.602,0.2506703,0.2617994,300,0,0,42,0,0,0,0,0),
+(@CGUID+1,23033,571,1,1,0,0,105.1841,-6356.575,7.529881,2.234021,300,0,0,42,0,0,0,0,0),
+(@CGUID+2,23033,571,1,1,0,0,122.4542,-6349.216,13.51903,0.06981317,300,0,0,42,0,0,0,0,0),
+(@CGUID+3,23033,571,1,1,0,0,137.363,-6341.455,0.6397853,4.712389,300,0,0,42,0,0,0,0,0),
+(@CGUID+4,23033,571,1,1,0,0,134.3599,-6343.983,18.43672,4.13643,300,0,0,42,0,0,0,0,0),
+(@CGUID+5,23033,571,1,1,0,0,132.2583,-6350.229,0.2506703,0.9075712,300,0,0,42,0,0,0,0,0),
+(@CGUID+6,23033,571,1,1,0,0,126.0219,-6359.624,13.29924,0.8552113,300,0,0,42,0,0,0,0,0),
+(@CGUID+7,23033,571,1,1,0,0,100.9148,-6372.519,0.2711143,1.850049,300,0,0,42,0,0,0,0,0),
+(@CGUID+8,23033,571,1,1,0,0,112.8128,-6370.394,0.2509333,5.323254,300,0,0,42,0,0,0,0,0),
+(@CGUID+9,23033,571,1,1,0,0,108.9089,-6372.98,7.581032,1.151917,300,0,0,42,0,0,0,0,0),
+(@CGUID+10,23033,571,1,1,0,0,102.7771,-6374.673,18.44771,1.48353,300,0,0,42,0,0,0,0,0),
+(@CGUID+11,23033,571,1,1,0,0,102.7771,-6374.673,18.44771,1.48353,300,0,0,42,0,0,0,0,0),
+(@CGUID+12,23982,571,1,1,0,0,86.46146,-6311.128,3.060588,4.537856,300,0,0,20958,0,0,0,0,0),
+(@CGUID+13,23982,571,1,1,0,0,90.35403,-6339.574,7.16617,4.712389,300,0,0,20958,0,0,0,0,0),
+(@CGUID+14,23982,571,1,1,0,0,83.55727,-6293.268,2.560132,5.270895,300,0,0,20958,0,0,0,0,0),
+(@CGUID+15,23982,571,1,1,0,0,97.12625,-6329.794,6.238928,5.375614,300,0,0,20958,0,0,0,0,0),
+(@CGUID+16,23982,571,1,1,0,0,70.93034,-6330.428,3.54416,2.844887,300,0,0,20958,0,0,0,0,0),
+(@CGUID+17,23982,571,1,1,0,0,51.70757,-6311.947,3.161455,5.77704,300,0,0,20958,0,0,0,0,0),
+(@CGUID+18,23982,571,1,1,0,0,98.56985,-6344.554,7.688509,2.86234,300,0,0,20958,0,0,0,0,0),
+(@CGUID+19,23982,571,1,1,0,0,131.832,-6340.606,12.63307,0.8203048,300,0,0,20958,0,0,0,0,0),
+(@CGUID+20,23982,571,1,1,0,0,129.1864,-6345.83,0.2506703,5.5676,300,0,0,20958,0,0,0,0,0),
+(@CGUID+21,23982,571,1,1,0,0,120.3932,-6350.105,13.38886,4.153883,300,0,0,20958,0,0,0,0,0),
+(@CGUID+22,23982,571,1,1,0,0,104.8288,-6357.471,7.574474,5.235988,300,0,0,20958,0,0,0,0,0),
+(@CGUID+23,23982,571,1,1,0,0,133.6459,-6343.107,18.42958,1.48353,300,0,0,20958,0,0,0,0,0),
+(@CGUID+24,23982,571,1,1,0,0,138.9828,-6343.52,0.6380893,2.792527,300,0,0,20958,0,0,0,0,0),
+(@CGUID+25,23982,571,1,1,0,0,129.1845,-6351.269,0.2506703,3.490659,300,0,0,20958,0,0,0,0,0),
+(@CGUID+26,23982,571,1,1,0,0,119.9491,-6359.686,13.22697,5.201081,300,0,0,20958,0,0,0,0,0),
+(@CGUID+27,23982,571,1,1,0,0,115.4752,-6363.241,0.2506703,2.408554,300,0,0,20958,0,0,0,0,0),
+(@CGUID+28,23982,571,1,1,0,0,103.771,-6368.571,0.2564183,2.094395,300,0,0,20958,0,0,0,0,0),
+(@CGUID+29,23982,571,1,1,0,0,110.5545,-6371.233,7.581059,1.27409,300,0,0,20958,0,0,0,0,0),
+(@CGUID+30,23982,571,1,1,0,0,100.0265,-6375.111,18.99801,2.600541,300,0,0,20958,0,0,0,0,0),
+(@CGUID+31,23982,571,1,1,0,0,96.01752,-6378.461,4.325503,5.532694,300,0,0,20958,0,0,0,0,0),
+(@CGUID+32, 23982, 571, 1, 1, 0, 0, 1545.82, -6573.38, 13.7573, 0.366519, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+33, 23982, 571, 1, 1, 0, 0, 1555.81, -6473.45, 8.12772, 1.8326, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+34, 23982, 571, 1, 1, 0, 0, 1556.01, -6468.7, 1.18524, 0.296706, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+35, 23982, 571, 1, 1, 0, 0, 1557.06, -6466.08, 19.1378, 0.191986, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+36, 23982, 571, 1, 1, 0, 0, 1560.88, -6554.92, 7.85555, 4.7822, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+37, 23982, 571, 1, 1, 0, 0, 1562.99, -6467.94, 11.5577, 0.872665, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+38, 23982, 571, 1, 1, 0, 0, 1566.2, -6453.87, 8.1297, 5.20108, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+39, 23982, 571, 1, 1, 0, 0, 1569.21, -6459.58, 0.798187, 0.959931, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+40, 23982, 571, 1, 1, 0, 0, 1571.11, -6554.08, 19.5447, 4.2237, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+41, 23982, 571, 1, 1, 0, 0, 1571.94, -6444.88, 13.4798, 4.64258, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+42, 23982, 571, 1, 1, 0, 0, 1572.78, -6465.26, 13.9275, 2.02458, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+43, 23982, 571, 1, 1, 0, 0, 1585.26, -6439.69, 8.1282, 5.74213, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+44, 23982, 571, 1, 1, 0, 0, 1585.64, -6442.62, 0.80031, 0.907571, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+45, 23982, 571, 1, 1, 0, 0, 1592.84, -6430.96, 20.0984, 4.57276, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+46, 23982, 571, 1, 1, 0, 0, 1595.97, -6429.72, 4.87117, 5.88176, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+47, 23982, 571, 1, 1, 0, 0, 1608.47, -6469.64, 11.9444, 2.3911, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+48, 23982, 571, 1, 1, 0, 0, 1633.75, -6476.69, 5.27008, 3.26377, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+49, 23982, 571, 1, 1, 0, 0, 1641.51, -6496.98, 19.3894, 2.49582, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+50, 23982, 571, 1, 1, 0, 0, 1648.43, -6518.75, 7.92241, 2.6529, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+51, 23982, 571, 1, 1, 0, 0, 1648.63, -6515.61, 0.981542, 0.0349066, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+52, 23982, 571, 1, 1, 0, 0, 1654.91, -6506.14, 16.7789, 0.734061, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+53, 23982, 571, 1, 1, 0, 0, 1659.26, -6516.77, 12.9779, 1.02974, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+54, 23982, 571, 1, 1, 0, 0, 1660.06, -6516.17, 18.1532, 0.401426, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+55, 23982, 571, 1, 1, 0, 0, 1661.93, -6510.17, 0.595421, 1.41372, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+56, 23982, 571, 1, 1, 0, 0, 1664.66, -6497.61, 7.92616, 0.349066, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+57, 23982, 571, 1, 1, 0, 0, 1667.07, -6513.15, 7.92516, 1.44862, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+58, 23982, 571, 1, 1, 0, 0, 1667.19, -6503.34, 13.7694, 4.50295, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+59, 23982, 571, 1, 1, 0, 0, 1676.57, -6488.01, 7.84255, 0.599511, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+60, 23982, 571, 1, 1, 0, 0, 1678.84, -6484.38, 7.92603, 5.16617, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+61, 23982, 571, 1, 1, 0, 0, 1680.69, -6489.71, 15.3545, 4.69494, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+62, 23982, 571, 1, 1, 0, 0, 1683.73, -6489.54, 0.600268, 3.38594, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+63, 23982, 571, 1, 1, 0, 0, 1693.21, -6481.45, 20.3186, 4.32842, 300, 0, 0, 20958, 0, 0, 0,0,0),
+(@CGUID+64, 23982, 571, 1, 1, 0, 0, 1693.28, -6480.37, 4.67026, 2.49582, 300, 0, 0, 20958, 0, 0, 0,0,0);
diff --git a/sql/updates/world/2015_08_29_02_world.sql b/sql/updates/world/2015_08_29_02_world.sql
new file mode 100644
index 00000000000..44ec964d97f
--- /dev/null
+++ b/sql/updates/world/2015_08_29_02_world.sql
@@ -0,0 +1,345 @@
+--
+SET @CGUID := 144155; -- 80 free guid set by TC
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+79;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 30136, 571, 1, 2, 7443.688, -997.967, 791.5563, 5.77704, 0, 0, 0),
+(@CGUID+1, 30136, 571, 1, 2, 7464.026, -982.6368, 796.7954, 5.445427, 0, 0, 0),
+(@CGUID+2, 30136, 571, 1, 2, 7439.698, -1004.994, 791.5581, 5.88176, 0, 0, 0),
+(@CGUID+3, 30136, 571, 1, 2, 7432.88, -996.9908, 538.754, 5.8294, 0, 0, 0),
+(@CGUID+4, 30136, 571, 1, 2, 7440.099, -971.4941, 596.7019, 5.5676, 0, 0, 0),
+(@CGUID+5, 30136, 571, 1, 2, 7443.239, -957.6465, 704.6074, 5.445427, 0, 0, 0),
+(@CGUID+6, 30136, 571, 1, 2, 7436.259, -995.6957, 538.7682, 5.794493, 0, 0, 0),
+(@CGUID+7, 30136, 571, 1, 2, 7453.724, -975.0106, 538.7589, 5.480334, 0, 0, 0),
+(@CGUID+8, 30136, 571, 1, 2, 7453.564, -978.4579, 538.7731, 5.51524, 0, 0, 0),
+(@CGUID+9, 30136, 571, 1, 2, 7432.952, -993.7203, 594.6988, 5.794493, 0, 0, 0),
+(@CGUID+10, 30136, 571, 1, 2, 7470.03, -953.4771, 538.7057, 5.183628, 0, 0, 0),
+(@CGUID+11, 30136, 571, 1, 2, 7509.529, -942.8323, 596.5732, 4.747295, 0, 0, 0),
+(@CGUID+12, 30136, 571, 1, 2, 7512.031, -952.4295, 793.3883, 4.729842, 0, 0, 0),
+(@CGUID+13, 30136, 571, 1, 2, 7522.184, -944.5262, 538.7827, 4.590216, 0, 0, 0),
+(@CGUID+14, 30136, 571, 1, 2, 7567.444, -977.0383, 595.8424, 3.944444, 0, 0, 0),
+(@CGUID+15, 30136, 571, 1, 2, 7587.854, -1034.644, 711.9574, 3.159046, 0, 0, 0),
+(@CGUID+16, 30136, 571, 1, 2, 7496.645, -940.393, 538.7007, 4.886922, 0, 0, 0),
+(@CGUID+17, 30136, 571, 1, 2, 7530.056, -967.2031, 689.8135, 4.45059, 0, 0, 0),
+(@CGUID+18, 30136, 571, 1, 2, 7536.476, -957.3798, 594.0485, 4.39823, 0, 0, 0),
+(@CGUID+19, 30136, 571, 1, 2, 7518.525, -943.5374, 538.7671, 4.642576, 0, 0, 0),
+(@CGUID+20, 30136, 571, 1, 2, 7524.424, -965.8981, 688.9619, 4.537856, 0, 0, 0),
+(@CGUID+21, 30136, 571, 1, 2, 7480.429, -1015.052, 738.4304, 5.707227, 0, 0, 0),
+(@CGUID+22, 30136, 571, 1, 2, 7562.215, -946.9121, 816.2698, 4.18879, 0, 0, 0),
+(@CGUID+23, 30136, 571, 1, 2, 7493.477, -944.535, 596.1667, 4.921828, 0, 0, 0),
+(@CGUID+24, 30136, 571, 1, 2, 7594.04, -1016.391, 710.2169, 3.368485, 0, 0, 0),
+(@CGUID+25, 30136, 571, 1, 2, 7561.688, -985.4562, 696.1497, 3.926991, 0, 0, 0),
+(@CGUID+26, 30493, 571, 1, 2, 7258.688, -865.7031, 924.9865, 5.602507, 0, 0, 0),
+(@CGUID+27, 30502, 571, 1, 2, 7246.357, -866.1553, 924.8257, 0.03490658, 0, 0, 0),
+(@CGUID+28, 30502, 571, 1, 2, 7329.806, -1027.244, 908.9823, 1.902409, 0, 0, 0),
+(@CGUID+29, 30502, 571, 1, 2, 7258.124, -851.6719, 926.1149, 4.869469, 0, 0, 0),
+(@CGUID+30, 30502, 571, 1, 2, 7379.61, -910.0995, 908.1426, 2.670354, 0, 0, 0),
+(@CGUID+31, 30502, 571, 1, 2, 7360.499, -1137.121, 907.58, 1.937315, 0, 0, 0),
+(@CGUID+32, 30502, 571, 1, 2, 7518.664, -1240.335, 913.9808, 3.822271, 0, 0, 0),
+(@CGUID+33, 30502, 571, 1, 2, 7369.898, -1214.435, 904.9849, 0.2268928, 0, 0, 0),
+(@CGUID+34, 30502, 571, 1, 2, 7283.155, -1084.717, 939.2233, 1.762783, 0, 0, 0),
+(@CGUID+35, 30502, 571, 1, 2, 7451.647, -843.4373, 917.2958, 3.246312, 0, 0, 0),
+(@CGUID+36, 30502, 571, 1, 2, 7261.373, -1013.67, 918.5519, 1.413717, 0, 0, 0),
+(@CGUID+37, 30502, 571, 1, 2, 7606.527, -1225.569, 929.4883, 4.29351, 0, 0, 0),
+(@CGUID+38, 30502, 571, 1, 2, 7554.601, -1320.671, 930.3687, 4.660029, 0, 0, 0),
+(@CGUID+39, 30502, 571, 1, 2, 7430.659, -1318.579, 911.7595, 4.468043, 0, 0, 0),
+(@CGUID+40, 30502, 571, 1, 2, 7283.702, -1305.297, 909.7721, 5.88176, 0, 0, 0),
+(@CGUID+41, 30064, 571, 1, 2, 7260.882, -1363.916, 911.7665, 0.4014257, 0, 0, 0),
+(@CGUID+42, 30064, 571, 1, 2, 7294.543, -1239.342, 910.2243, 6.126106, 0, 0, 0),
+(@CGUID+43, 30064, 571, 1, 2, 7447.73, -1222.154, 906.4549, 3.979351, 0, 0, 0),
+(@CGUID+44, 30064, 571, 1, 2, 7021.103, -1281.485, 925.2195, 5.751715, 0, 0, 0),
+(@CGUID+45, 30064, 571, 1, 2, 7366.789, -921.5516, 908.176, 1.151917, 0, 0, 0),
+(@CGUID+46, 30064, 571, 1, 2, 7366.549, -1167.878, 907.7737, 4.276057, 0, 0, 0),
+(@CGUID+47, 30064, 571, 1, 2, 7266.572, -1061.63, 941.623, 3.45743, 0, 0, 0),
+(@CGUID+48, 30064, 571, 1, 2, 7274.531, -973.0413, 919.6902, 3.892084, 0, 0, 0),
+(@CGUID+49, 30064, 571, 1, 2, 7344.521, -1002.784, 907.9092, 1.370535, 0, 0, 0),
+(@CGUID+50, 30504, 571, 1, 2, 7264.177, -1064.293, 941.6094, 1.58825, 0, 0, 0),
+(@CGUID+51, 30504, 571, 1, 2, 7261.539, -1060.268, 942.1428, 1.58825, 0, 0, 0),
+(@CGUID+52, 30504, 571, 1, 2, 7258.846, -1064.966, 941.6843, 1.570796, 0, 0, 0),
+(@CGUID+53, 30504, 571, 1, 2, 7285.515, -995.3761, 915.2917, 1.780236, 0, 0, 0),
+(@CGUID+54, 30504, 571, 1, 2, 7291.571, -993.6209, 915.0613, 1.832596, 0, 0, 0),
+(@CGUID+55, 30504, 571, 1, 2, 7284.015, -942.5671, 919.7255, 1.884956, 0, 0, 0),
+(@CGUID+56, 30504, 571, 1, 2, 7295.979, -986.884, 915.3113, 1.867502, 0, 0, 0),
+(@CGUID+57, 30504, 571, 1, 2, 7297.396, -992.0636, 914.5924, 1.867502, 0, 0, 0),
+(@CGUID+58, 30504, 571, 1, 2, 7290.535, -988.4466, 915.6047, 1.832596, 0, 0, 0),
+(@CGUID+59, 30504, 571, 1, 2, 7288.845, -939.8006, 919.2185, 1.954769, 0, 0, 0),
+(@CGUID+60, 30504, 571, 1, 2, 7284.822, -936.735, 920.152, 1.919862, 0, 0, 0),
+(@CGUID+61, 30504, 571, 1, 2, 7284.391, -990.1196, 915.7115, 1.780236, 0, 0, 0),
+(@CGUID+62, 30504, 571, 1, 2, 7347.897, -934.4936, 908.6702, 2.478368, 0, 0, 0),
+(@CGUID+63, 30504, 571, 1, 2, 7352.746, -928.9537, 908.5024, 2.548181, 0, 0, 0),
+(@CGUID+64, 30504, 571, 1, 2, 7345.77, -927.7479, 909.7731, 2.513274, 0, 0, 0),
+(@CGUID+65, 30504, 571, 1, 2, 7278.971, -906.7933, 926.6701, 2.042035, 0, 0, 0),
+(@CGUID+66, 30504, 571, 1, 2, 7328.465, -894.0953, 920.5985, 2.75762, 0, 0, 0),
+(@CGUID+67, 30504, 571, 1, 2, 7271.211, -905.6917, 927.1619, 1.902409, 0, 0, 0),
+(@CGUID+68, 30504, 571, 1, 2, 7326.755, -908.373, 917.7892, 2.583087, 0, 0, 0),
+(@CGUID+69, 30504, 571, 1, 2, 7330.237, -902.4053, 918.4761, 2.670354, 0, 0, 0),
+(@CGUID+70, 30504, 571, 1, 2, 7281.855, -898.8499, 926.4277, 2.199115, 0, 0, 0),
+(@CGUID+71, 30504, 571, 1, 2, 7284.128, -903.6423, 926.1991, 2.181662, 0, 0, 0),
+(@CGUID+72, 30504, 571, 1, 2, 7273.202, -910.2079, 927.0142, 1.902409, 0, 0, 0),
+(@CGUID+73, 30504, 571, 1, 2, 7321.779, -905.3262, 919.6216, 2.583087, 0, 0, 0),
+(@CGUID+74, 30504, 571, 1, 2, 7276.896, -902.2155, 926.9134, 2.059489, 0, 0, 0),
+(@CGUID+75, 30504, 571, 1, 2, 7333.466, -896.3923, 918.7648, 2.75762, 0, 0, 0),
+(@CGUID+76, 30382, 571, 1, 1, 7525.702, -971.7235, 478.799, 5.637414, 0, 0, 0),
+(@CGUID+77, 30383, 571, 1, 1, 7515.811, -975.2843, 467.4983, 3.857178, 0, 0, 0),
+(@CGUID+78, 30401, 571, 1, 1, 6647.1733, -310.2567, 989.5303, 1.2511, 0, 0, 0),
+(@CGUID+79, 30504, 571, 1, 2, 7325.687, -899.111, 920.3403, 2.758484, 0, 0, 0);
+
+DELETE FROM `creature_template_addon` WHERE `entry`=30493;
+INSERT INTO `creature_template_addon` (`entry`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(30493, 0, 0, 0, 0, 0, '29266');
+
+DELETE FROM `creature_addon` WHERE `guid`=@CGUID+78;
+INSERT INTO `creature_addon` (`guid`, `path_id`, `mount`, `bytes1`, `bytes2`, `emote`, `auras`) VALUES
+(@CGUID+78, 0, 0, 0, 0, 0, '54503'); -- quest invisibility
+
+DELETE FROM `spell_area` WHERE `spell`=55782 AND `area`=4432;
+INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
+(55782, 4432, 12973, 0, 0, 0, 2, 1, 74, 0);
+
+DELETE FROM `spell_area` WHERE `spell`=54504 AND `area`=4428;
+INSERT INTO `spell_area` (`spell`, `area`, `quest_start`, `quest_end`, `aura_spell`, `racemask`, `gender`, `autocast`, `quest_start_status`, `quest_end_status`) VALUES
+(54504, 4428, 12973, 0, 0, 0, 2, 1, 10, 0);
+
+SET @Brann := 30107;
+SET @Brann1 := 30382; -- Brann 60888 cosmetic movement
+SET @Brann2 := 30405;
+SET @Machine := 30134; -- Machine
+SET @Soldier := 30136; -- Stormforged Soldier
+Set @Yorg := 30408; -- Yorg Stormheart spell to summon=56676
+Set @Magni := 30411; -- Magni Bronzebeard spell to summon=56697
+SET @SPELL1 := 56603;
+SET @Machine2 := 30383; -- Machine static
+
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Soldier AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann1 AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann1*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann2 AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann2*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Brann*100+1 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Machine AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Machine*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Machine2 AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Yorg AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Yorg*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Yorg*100+1 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Magni AND `source_type` = 0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Magni*100 AND `source_type` = 9;
+DELETE FROM `smart_scripts` WHERE `entryorguid` = @Magni*100+1 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
+(@Brann1, 0, 0, 0, 19, 0, 100, 0, 12973, 0, 0, 0, 80, @Brann1*100, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann - On Quest Accept - action list'),
+(@Brann1*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 56558, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann - action liste - cast spell to invoque'),
+(@brann1*100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 41, 0, 0, 0, 0, 0, 0, 19, @Machine2, 20, 0, 0, 0, 0, 0, 'Brann - On ActionList - despawn'),
+(@brann1*100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 44, 3, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Brann - On ActionList - Set phase 3'),
+(@brann1*100, 9, 3, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann - On ActionList - despawn'),
+(@Brann1, 0, 1, 0, 1, 0, 100, 0, 4000, 4000, 4000, 7000, 11, 60888, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann - Ooc - Cast cosmetic movement'),
+(@Machine, 0, 16, 0, 63, 0, 100, 0, 0, 0, 0, 0, 44, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - Just created - Set phase 3'),
+(@Machine, 0, 0, 0, 27, 0, 100, 0, 0, 0, 0, 0, 80, @Machine*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - On passeger boarded - action list'),
+(@Machine*100, 9, 0, 0, 0, 0, 100, 0, 2000, 2000, 0, 0, 53, 1, @Machine, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - action list - start wp'),
+(@Machine*100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 19, @Brann, 10, 0, 0, 0, 0, 0, 'Brann - On Script - Set React Passive'),
+(@Machine*100, 9, 2, 0, 0, 0, 100, 0, 0, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - On Script - Set React Passive'),
+(@Machine*100, 9, 3, 0, 0, 0, 100, 0, 0, 0, 0, 0, 18, 131072, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - On Script - set PACIFIED'),
+(@Soldier, 0, 0, 0, 0, 0, 100, 0, 3000, 3000, 4000, 4000, 11, 56621, 1, 0, 0, 0, 0, 5, 0, 0, 0, 0, 0, 0,0,'Stormforged Soldier - In Combat - Cast Thunder Orb'),
+(@Machine, 0, 1, 0, 40, 0, 100, 0, 2, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 2, 0, 40, 0, 100, 0, 4, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 3, 0, 40, 0, 100, 0, 7, 0, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 4, 0, 40, 0, 100, 0, 22, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 5, 0, 40, 0, 100, 0, 27, 0, 0, 0, 1, 4, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 6, 0, 40, 0, 100, 0, 31, 0, 0, 0, 1, 5, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 7, 0, 40, 0, 100, 0, 35, 0, 0, 0, 1, 6, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 8, 0, 40, 0, 100, 0, 36, 0, 0, 0, 1, 7, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 9, 0, 40, 0, 100, 0, 41, 0, 0, 0, 1, 8, 0, 0, 0, 0, 0, 19, @brann, 10, 0, 0, 0, 0, 0, 'Machine - On waypoint - talk'),
+(@Machine, 0, 10, 11, 40, 0, 100, 0, 42, 0, 0, 0, 11, 68576, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - On waypoint - Eject passengenrs'),
+(@Machine, 0, 11, 12, 61, 0, 100, 0, 0, 0, 0, 0, 85, 56675, 0, 0, 0, 0, 0, 21, 20, 0, 0, 0, 0, 0, 0, 'Machine - On waypoint - Invoker cast to Spawn Brann'),
+(@Machine, 0, 12, 0, 61, 0, 100, 0, 0, 0, 0, 0, 41, 1000, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - On waypoint - Despawn'),
+(@Machine, 0, 13, 0, 1, 0, 100, 0, 3000, 3000, 3000, 3000, 86, 56622, 1, 9, @Soldier, 5, 50, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - OOC - CROSSCAST'),
+(@Machine, 0, 14, 0, 1, 0, 100, 0, 3000, 3000, 3000, 3000, 86, 55089, 1, 19, @Soldier, 40, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Machine - OOC - CROSSCAST'),
+(@brann2, 0, 0, 1, 54, 0, 100, 0, 0, 0, 0, 0, 83, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - Just created - Remove npcflag'),
+(@brann2, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 80, @brann2*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - Has aura - action list'),
+(@brann2*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - set run off'),
+(@brann2*100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6696.584473, -301.435760, 989.392761, 3.094404, 'brann - ActionList - move to pos'),
+(@brann2*100, 9, 2, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 11, 56676, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList- spawn Yorg'),
+(@brann2*100, 9, 3, 0, 0, 0, 100, 0, 10000, 10000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 4, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 5, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 6, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 7, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 8, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 9, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 10, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 11, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 12, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 13, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 14, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 56697, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - spawn Magni'),
+(@brann2*100, 9, 15, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 16, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 66, 2.662433, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6696.584473, -301.435760, 989.392761, 2.662433, 'brann - ActionList - Set orientation'),
+(@brann2*100, 9, 17, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 18, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 2, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 19, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 20, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 3, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 21, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 8, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 22, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 9, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 23, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 4, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 24, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 5, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 25, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 1, 10, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 26, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 27, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 11, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 28, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 6, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 29, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 12, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 30, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 31, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 7, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 32, 0, 0, 0, 100, 0, 7000, 7000, 0, 0, 1, 13, 0, 0, 0, 0, 0, 19, @Yorg, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 33, 0, 0, 0, 100, 0, 0, 0, 0, 0, 75, 71385, 0, 0, 0, 0, 0, 11, @Yorg, 20, 0, 0, 0, 0, 0, 'brann - ActionList - add aura'),
+(@brann2*100, 9, 34, 0, 0, 0, 100, 0, 6000, 6000, 0, 0, 1, 8, 0, 0, 0, 0, 0, 19, @Magni, 10, 0, 0, 0, 0, 0, 'brann - ActionList - talk'),
+(@brann2*100, 9, 35, 0, 0, 0, 100, 0, 4000, 4000, 0, 0, 75, 71385, 0, 0, 0, 0, 0, 11, @Magni, 20, 0, 0, 0, 0, 0, 'brann - ActionList - add aura'),
+(@brann2*100, 9, 36, 0, 0, 0, 100, 0, 0, 0, 0, 0, 11, 56742, 0, 0, 0, 0, 0, 23, 0, 0, 0, 0, 0, 0, 0, 'brann - ActionList - Cast credit spell'),
+(@brann2*100, 9, 37, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6740.549316, -293.961212, 993.427979, 3.559861, 'brann - ActionList - move to pos'),
+(@brann2*100, 9, 38, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Brann - On ActionList - despawn'),
+(@Yorg, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, @Yorg*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Yorg - On spawn - ActionList'),
+(@Yorg*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Yorg - ActionList - set run off'),
+(@Yorg*100, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6692.118164, -301.678192, 989.427734, 6.194374, 'Yorg - ActionList - go to pos'),
+(@Yorg*100, 9, 2, 0, 0, 0, 100, 0, 90000, 90000, 0, 0, 66, 0.579558, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6692.118164, -301.678192, 989.427734, 0.579558, 'Yorg - ActionList - Set orientation'),
+(@Yorg, 0, 1, 0, 23, 0, 100, 1, 71385, 1, 0, 0, 80, @Yorg*100+1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Yorg - call timed actionlist when has aura'),
+(@Yorg*100+1, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6608.733887, -282.180756, 986.123230, 3.491027, 'Yorg - ActionList - move to pos'),
+(@Yorg*100+1, 9, 1, 0, 0, 0, 100, 0, 25000, 25000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Yorg - ActionList - despawn'),
+(@Magni, 0, 0, 0, 54, 0, 100, 0, 0, 0, 0, 0, 80, @Magni*100, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - On Spawn - ActionList'),
+(@Magni*100, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6694.134766, -297.678925, 989.207092, 4.757878, 'Magni - ActionList - Go to pos'),
+(@Magni*100, 9, 1, 0, 0, 0, 100, 0, 1000, 1000, 0, 0, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - ActionList - talk'),
+(@Magni*100, 9, 2, 0, 0, 0, 100, 0, 3000, 3000, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - ActionList - talk'),
+(@Magni*100, 9, 3, 0, 0, 0, 100, 0, 5000, 5000, 0, 0, 66, 4.757878, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6694.134766, -297.678925, 989.207092, 4.757878, 'Magni - ActionList - Set orientation'),
+(@Magni, 0, 1, 0, 23, 0, 100, 1, 71385, 1, 0, 0, 80, @Magni*100+1, 2, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - call timed actionlist when has aura'),
+(@Magni*100+1, 9, 0, 0, 0, 0, 100, 0, 0, 0, 0, 0, 59, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - ActionList - Set run off'),
+(@Magni*100+1, 9, 1, 0, 0, 0, 100, 0, 0, 0, 0, 0, 69, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 6740.549316, -293.961212, 993.427979, 3.559861, 'Magni - ActionList - Go to pos'),
+(@Magni*100+1, 9, 2, 0, 0, 0, 100, 0, 15000, 15000, 0, 0, 41, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Magni - ActionList - despawn');
+
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`in (@Brann, @Brann1, @Brann2, @Magni, @Yorg, @Machine, @Machine2);
+UPDATE `creature_template` SET `faction`=2102, `AIName`='SmartAI' WHERE `entry`=@Soldier;
+UPDATE `creature_template` SET `faction`=35, `npcflag`=16777216, `type_flags`=2048, `speed_run`=2.14, `VehicleId`=219, `InhabitType`=4, `RegenHealth`=0 WHERE `entry`=@Machine;
+UPDATE `creature_template` SET `unit_flags`=537166144, `dynamicflags`=32 WHERE `entry`=30493;
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=56621;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,56621,0,0,31,0,3,@Soldier,0,1,0,0,'','Only the Machine is a target for the spell.');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=56622;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,56622,0,0,31,0,3,@Soldier,0,1,0,0,'','Only the Machine is a target for the spell.');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@Machine;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(22,1,@Machine,0,0,9,0,12973,0,0,0,0,'','Vehicle flying machine require quest 12973');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=55089;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,1,55089,0,0,31,0,3,@Machine,0,0,0,0,'','Only the flying machine is a target for the spell.');
+
+DELETE FROM `vehicle_template_accessory` where `entry`= @Machine;
+INSERT INTO `vehicle_template_accessory` (`entry`,`accessory_entry`,`seat_id`,`minion`,`description`,`summontype`,`summontimer`)
+VALUES(@Machine,@Brann,0,1,'Brann flying machine',8,0);
+
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry` = @Machine;
+INSERT INTO `npc_spellclick_spells` (`npc_entry`, `spell_id`, `cast_flags`, `user_type`) VALUES
+(@Machine, 43671, 1, 1),
+(@Machine, @SPELL1, 1, 0);
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceEntry` IN (@SPELL1, 43671);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(18,@Machine,@SPELL1,0,0,9,0,12973,0,0,0,0,'','Required quest active for spellclick'),
+(18,@Machine,43671,0,0,31,0,3,0,0,0,0,'','Only npc for spellclick');
+
+DELETE FROM `spell_target_position` WHERE `id`=56558;
+INSERT INTO `spell_target_position` (`id`,`mapid`,`positionx`,`positiony`,`positionz`,`orientation`) VALUES
+(56558, 571, 7515.810059, -975.283997, 478.508027, 3.883507);
+DELETE FROM `spell_target_position` WHERE `id`=56676;
+INSERT INTO `spell_target_position` (`id`,`mapid`,`positionx`,`positiony`,`positionz`,`orientation`) VALUES
+(56676, 571, 6668.243164, -300.716309, 989.048035, 0.049131);
+DELETE FROM `spell_target_position` WHERE `id`=56697;
+INSERT INTO `spell_target_position` (`id`,`mapid`,`positionx`,`positiony`,`positionz`,`orientation`) VALUES
+(56697, 571, 6646.655762, -292.56268, 982.318909, 6.077349);
+
+DELETE FROM `waypoints` WHERE entry=@Machine;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(@Machine,1,7482.256, -1010.183, 480.4727,'Brann flying machine'),
+(@Machine,2,7487.624, -1073.279, 486.6947,'Brann flying machine'),
+(@Machine,3,7554.068, -1073.744, 504.4724,'Brann flying machine'),
+(@Machine,4,7540.521, -994.4729, 521.6666,'Brann flying machine'),
+(@Machine,5,7476.892, -979.5384, 539.4715,'Brann flying machine'),
+(@Machine,6,7441.698, -1035.954, 552.1108,'Brann flying machine'),
+(@Machine,7,7471.937, -1091.025, 565.5829,'Brann flying machine'),
+(@Machine,8,7510.604, -1098.736, 585.0275,'Brann flying machine'),
+(@Machine,9,7560.741, -1064.01, 596.1101,'Brann flying machine'),
+(@Machine,10,7558.652, -991.4143, 606.4708,'Brann flying machine'),
+(@Machine,11,7481.208, -966.8239, 614.276,'Brann flying machine'),
+(@Machine,12,7430.998, -1039.164, 622.7203,'Brann flying machine'),
+(@Machine,13,7464.418, -1092.93, 634.8871,'Brann flying machine'),
+(@Machine,14,7535.688, -1088.016, 651.7204,'Brann flying machine'),
+(@Machine,15,7563.452, -1036.534, 661.0538,'Brann flying machine'),
+(@Machine,16,7516.293, -977.355, 676.6924,'Brann flying machine'),
+(@Machine,17,7455.716, -999.9194, 689.1921,'Brann flying machine'),
+(@Machine,18,7447.983, -1050.863, 710.22,'Brann flying machine'),
+(@Machine,19,7518.54, -1090.449, 733.2756,'Brann flying machine'),
+(@Machine,20,7565.333, -1038.004, 745.6921,'Brann flying machine'),
+(@Machine,21,7532.994, -979.3826, 757.9145,'Brann flying machine'),
+(@Machine,22,7434.272, -1013.309, 756.1094,'Brann flying machine'),
+(@Machine,23,7460.686, -1081.453, 775.8036,'Brann flying machine'),
+(@Machine,24,7518.524, -1091.506, 800.887,'Brann flying machine'),
+(@Machine,25,7563.83, -1015.821, 824.6927,'Brann flying machine'),
+(@Machine,26,7485.566, -970.3575, 842.8317,'Brann flying machine'),
+(@Machine,27,7446.667, -1061.756, 867.8871,'Brann flying machine'),
+(@Machine,28,7479.346, -1108.014, 896.2759,'Brann flying machine'),
+(@Machine,29,7534.174, -1115.574, 932.2327,'Brann flying machine'),
+(@Machine,30,7583.952, -1166.912, 949.7326,'Brann flying machine'),
+(@Machine,31,7569.052, -1238.047, 949.7327,'Brann flying machine'),
+(@Machine,32,7505.558, -1260.738, 959.0381,'Brann flying machine'),
+(@Machine,33,7425.231, -1227.18, 965.1213,'Brann flying machine'),
+(@Machine,34,7358.262, -1154.908, 965.1213,'Brann flying machine'),
+(@Machine,35,7316.554, -1004.713, 969.5936,'Brann flying machine'),
+(@Machine,36,7273.263, -897.3846, 973.7048,'Brann flying machine'),
+(@Machine,37,7216.268, -811.6398, 984.3438,'Brann flying machine'),
+(@Machine,38,7148.946, -634.7748, 984.3438,'Brann flying machine'),
+(@Machine,39,7051.731, -506.0969, 984.3438,'Brann flying machine'),
+(@Machine,40,6928.087, -372.7923, 1013.677,'Brann flying machine'),
+(@Machine,41,6820.645, -310.3642, 1017.538,'Brann flying machine'),
+(@Machine,42,6741.966, -291.7396, 996.2623,'Brann flying machine');
+
+DELETE FROM `creature_text` WHERE `entry` IN (@Brann, @Yorg, @Magni, @Brann2) ;
+INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`, `BroadcastTextID`) VALUES
+(@Brann, 0, 0, 'I can''t thank you enough for all of your help in putting together the keystone. Great things will come of this, I assure you.', 12, 0, 100, 0, 0, 0, 'Brann', 31023),
+(@Brann, 1, 0, 'Iron dwarves... everywhere.... they''re making their way down from the top. They certainly are persistent.', 12, 0, 100, 0, 0, 0, 'Brann', 31024),
+(@Brann, 2, 0, 'They''re trying to take down the plane! I can''t pull up any steeper... you need to keep them off of us!', 12, 0, 100, 0, 0, 0, 'Brann', 31025),
+(@Brann, 3, 0, 'There are more just ahead - keep at it!', 12, 0, 100, 0, 0, 0, 'Brann', 31026),
+(@Brann, 4, 0, 'We''re almost out... just a little bit further.', 12, 0, 100, 0, 0, 0, 'Brann', 31027),
+(@Brann, 5, 0, 'Barring stray boulders from those giants, we should be clear... it seems a mess from down there though.', 12, 0, 100, 0, 0, 0, 'Brann', 31028),
+(@Brann, 6, 0, 'Their numbers are unbelievable... I''m glad to hear King Stormheart came to your aid. I only hear good things of him - I think it''s high time we meet.', 12, 0, 100, 0, 0, 0, 'Brann', 31029),
+(@Brann, 7, 0, 'Poor Creteus. He was a good keeper... I''m glad he at least got to see his task to completion, I imagine that''s all that really mattered to him.', 12, 0, 100, 0, 0, 0, 'Brann', 31030),
+(@Brann, 8, 0, 'We''re coming up on Frosthold. I would be very appreciative if you would introduce me to King Stormeheart before you go. I believe we are both very much in his debt.', 12, 0, 100, 0, 0, 0, 'Brann', 31031),
+(@Brann2, 0, 0, 'By all the gods... it can''t be... Muradin?', 12, 0, 100, 0, 0, 0, 'Brann', 31032),
+(@Brann2, 1, 0, 'Come on boy, there''s no mistak''n it - it''s definately you. Don''t ya recognize your younger brother?', 12, 0, 100, 0, 0, 0, 'Brann', 31033),
+(@Brann2, 2, 0, 'I can''t believe this! You were dead! All accounts said so... what happened, Muradin. How did you get here?', 12, 0, 100, 0, 0, 0, 'Brann', 31034),
+(@Brann2, 3, 0, 'Indeed! Magni will be so happy to see you too! He''s gotten nothing but bad news for a long time now, but this changes everything!', 12, 0, 100, 0, 0, 0, 'Brann', 31035),
+(@Brann2, 4, 0, 'He''s here in Northrend, brother, looking for you. A seer in Wintergarde brought word that you were not dead, and he left Ironforge immediately to come find you.', 12, 0, 100, 0, 0, 0, 'Brann', 31036),
+(@Brann2, 5, 0, 'Speaking of which...', 12, 0, 100, 0, 0, 0, 'Brann', 31087),
+(@Brann2, 6, 0, 'That''s in the past, Muradin. Regrets won''t change anything.', 12, 0, 100, 0, 0, 0, 'Brann', 31096),
+(@Brann2, 7, 0, 'Aye, be safe Muradin. I''d join you, but I''m on top of the most amazing discovery the world has yet seen. I can''t abandon it now.', 12, 0, 100, 0, 0, 0, 'Brann', 31102),
+(@Yorg, 0, 0, 'What''s that? You talkin'' to me, lad?', 12, 0, 100, 0, 0, 0, 'Yorg', 31037),
+(@Yorg, 1, 0, 'My brother... yes... I do have brothers...', 12, 0, 100, 0, 0, 0, 'Yorg', 31038),
+(@Yorg, 2, 0, 'Muradin clutches his head and reels for a moment as the memories rush back to him.', 16, 0, 100, 0, 0, 0, 'Yorg', 31039),
+(@Yorg, 3, 0, '...Brann?', 12, 0, 100, 0, 0, 0, 'Yorg', 31040),
+(@Yorg, 4, 0, 'I... I dunno, Brann. I''ve been ''ere a long time... all I ''ave of me life before this place are flashes and nightmares.', 12, 0, 100, 0, 0, 0, 'Yorg', 31042),
+(@Yorg, 5, 0, 'It''s good te see you though, brother. More than words can say.', 12, 0, 100, 0, 0, 0, 'Yorg', 31043),
+(@Yorg, 6, 0, 'Magn! Forgive me, the memories are comin'' back slowly, brother.', 12, 0, 100, 0, 0, 0, 'Yorg', 31045),
+(@Yorg, 7, 0, 'The frostborn have been very good to me. They''re strong people.', 12, 0, 100, 0, 0, 0, 'Yorg', 31048),
+(@Yorg, 8, 0, 'Not much, Magni. I''ve had nightmares of a human... tall... light hair... death black armor. His name rests on the tip of me tongue, but...', 12, 0, 100, 0, 0, 0, 'Yorg', 31089),
+(@Yorg, 9, 0, '...Arthas.', 12, 0, 100, 0, 0, 0, 'Yorg', 31091),
+(@Yorg, 10, 0, 'Aye, I know. I watched him turn... I watched him give up all that was right and I didn''t lift a hand... I didn''t even consider it until it was too late.', 12, 0, 100, 0, 0, 0, 'Yorg', 31094),
+(@Yorg, 11, 0, 'No... no they won''t. But I can make this right. I have te. I''m goin'' after the boy. I''ll make''m answer for everything he''s done.', 12, 0, 100, 0, 0, 0, 'Yorg', 31097),
+(@Yorg, 12, 0, 'I''m sure, Magni. I''ll see this through, don''t ya worry.', 12, 0, 100, 0, 0, 0, 'Yorg', 31100),
+(@Yorg, 13, 0, 'Go Brann. Bring back an epic tale when we meet again. Farewell for now, brothers...', 12, 0, 100, 0, 0, 0, 'Yorg', 31103),
+(@Magni, 0, 0, 'Look, Lagnus, I consider you a capable man, but my patience is wearing thin. I know that Muradin is here, can you point me to him or not?', 14, 0, 100, 0, 0, 0, 'Magni', 31084),
+(@Magni, 1, 0, 'Brother! There you are! I can barely believe my eyes... you''re alive!', 14, 0, 100, 0, 0, 0, 'Magni', 31085),
+(@Magni, 2, 0, 'It''s so good to see you again, Muradin. And what''s this I heard about you being a King in your own right now? The Bronzebeards were always destined to greatness.', 12, 0, 100, 0, 0, 0, 'Magni', 31086),
+(@Magni, 3, 0, 'So it seems! And you haven''t lost any muscle yourself. Do you remember anything of what happened, Muradin? Fate as turned ill in your absence.', 12, 0, 100, 0, 0, 0, 'Magni', 31088),
+(@Magni, 4, 0, 'Magni nods.', 16, 0, 100, 0, 0, 0, 'Magni', 31092),
+(@Magni, 5, 0, 'He''s not the boy of your memories anymore, Muradin. He''s become something else entirely.', 12, 0, 100, 0, 0, 0, 'Magni', 31093),
+(@Magni, 6, 0, 'Are you sure Muradin? I just got you back after years of thinking you were dead. I do not want to lose you again.', 12, 0, 100, 0, 0, 0, 'Magni', 31099),
+(@Magni, 7, 0, 'So be it then. I have to return to my people, brothers. Come back to me in one piece.', 12, 0, 100, 0, 0, 0, 'Magni', 31101),
+(@Magni, 8, 0, '...farewell brother.', 12, 0, 100, 0, 0, 0, 'Magni', 31129);
+
+UPDATE `gameobject` SET `phaseMask`=7 WHERE id=195308;
diff --git a/sql/updates/world/2015_08_29_03_world.sql b/sql/updates/world/2015_08_29_03_world.sql
new file mode 100644
index 00000000000..7d520664422
--- /dev/null
+++ b/sql/updates/world/2015_08_29_03_world.sql
@@ -0,0 +1,49 @@
+--
+DELETE FROM `creature` WHERE `guid`=126052;
+DELETE FROM `creature_addon` WHERE `guid`=126052;
+DELETE FROM `linked_respawn` WHERE `guid`=126052 AND `linkedGuid`=126103;
+UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry` IN (26668, 30810);
+UPDATE `smart_scripts` SET `action_param6`=2 WHERE `entryorguid`=-126160 AND `id`=0;
+
+UPDATE `creature_template` SET `RegenHealth`=0 WHERE `entry`=12423;
+
+-- Spawn some missing 'Ghostclaw Ravager' and 'Greater Spindleweb' in Ghostlands
+SET @CGUID := 130434;
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID AND @CGUID+23;
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 16349, 530, 1, 1, 6949.108, -6818.657, 48.41008, 2.161509, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+1, 16352, 530, 1, 1, 6933.826, -6715.566, 23.84517, 3.122064, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+2, 16352, 530, 1, 1, 6968.374, -6953.108, 51.54251, 2.980778, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+3, 16352, 530, 1, 1, 6890.797, -6722.461, 39.58191, 2.24407, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+4, 16352, 530, 1, 1, 6853.69, -6851.976, 69.60109, 2.738199, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+5, 16349, 530, 1, 1, 6950.041, -6888.719, 49.80816, 3.477853, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+6, 16352, 530, 1, 1, 6878.636, -6864.466, 62.72943, 2.882877, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+7, 16349, 530, 1, 1, 6895.033, -6912.371, 47.20905, 4.118551, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+8, 16349, 530, 1, 1, 6922.021, -7040.709, 43.90837, 4.415325, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+9, 16352, 530, 1, 1, 6885.669, -7022.219, 48.7115, 1.793493, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+10, 16349, 530, 1, 1, 6897.135, -6971.594, 47.17694, 2.724053, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+11, 16352, 530, 1, 1, 6978.319, -7000.734, 51.0767, 4.078644, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+12, 16352, 530, 1, 1, 6942.256, -7020.499, 45.66068, 0.1648275, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+13, 16349, 530, 1, 1, 6984.509, -7047.863, 51.65011, 1.124614, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+14, 16349, 530, 1, 1, 6963.142, -7082.294, 49.01252, 6.261704, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+15, 16352, 530, 1, 1, 6890.896, -7106.758, 45.10302, 1.95221, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+16, 16349, 530, 1, 1, 6836.949, -6998.213, 89.5099, 3.035898, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+17, 16349, 530, 1, 1, 6963.359, -7153.403, 47.53667, 3.969122, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+18, 16352, 530, 1, 1, 6966.125, -7145.214, 49.57573, 5.950935, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+19, 16349, 530, 1, 1, 7039.774, -6724.048, 31.42106, 0.8247696, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+20, 16349, 530, 1, 1, 6894.136, -6637.756, 22.16779, 4.740626, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+21, 16352, 530, 1, 1, 6892.136, -6687.743, 33.33307, 6.265609, 120, 5, 1), -- 16352 (Area: 3433)
+(@CGUID+22, 16349, 530, 1, 1, 6862.79, -6653.266, 29.21497, 0.1569574, 120, 5, 1), -- 16349 (Area: 3433)
+(@CGUID+23, 16349, 530, 1, 1, 6795.933, -6674.067, 43.69128, 2.761438, 120, 5, 1); -- 16349 (Area: 3433)
+
+-- Set all of these creatures to roam 5 yards, and random movement type
+UPDATE `creature` SET `spawndist`=5, `MovementType`=1 WHERE id IN (16349,16352);
+
+UPDATE `quest_template_addon` SET `PrevQuestID`=0 WHERE `id`=9369;
+
+UPDATE `creature_template` SET `unit_flags`=537166656, `unit_flags2`=2048 WHERE `entry` IN (26737);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (26737) AND `source_type`=0 AND `id`=6;
+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
+(26737,0,6,0,6,0,100,0,0,0,0,0,19,256,0,0,0,0,0,1,0,0,0,0,0,0,0,"Crazed Mana-Surge - On Just Died - Remove unit flag immune to pc");
+
+UPDATE `creature_template` SET `unit_flags`=0 WHERE `entry`=10161;
diff --git a/sql/updates/world/2015_08_29_04_world.sql b/sql/updates/world/2015_08_29_04_world.sql
new file mode 100644
index 00000000000..b0ffc1fb0c5
--- /dev/null
+++ b/sql/updates/world/2015_08_29_04_world.sql
@@ -0,0 +1,11 @@
+--
+-- Removed useless conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (62290,62307,62357,62489,62635);
+-- Adjusted incorrect conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (62363,65044,65045);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition` ,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(13,2,62363,0,0,31,0,3,33214,0,0,0,'','Flame Leviathan - Anti-Air Rocket'),
+(13,1,65044,0,0,32,0,0x18, 0,0,0,0,'','Flame Leviathan - Flames'), -- should hit everything
+(13,2,65044,0,0,31,0,3,33090,0,0,0,'','Flame Leviathan - Flames'),
+(13,1,65045,0,0,32,0,0x18, 0,0,0,0,'','Flame Leviathan - Flames'), -- should hit everything
+(13,2,65045,0,0,31,0,3,33090,0,0,0,'','Flame Leviathan - Flames');
diff --git a/sql/updates/world/2015_08_30_00_world.sql b/sql/updates/world/2015_08_30_00_world.sql
new file mode 100644
index 00000000000..02a247bdd6d
--- /dev/null
+++ b/sql/updates/world/2015_08_30_00_world.sql
@@ -0,0 +1,33 @@
+--
+SET @CGUID := 84210;
+SET @OLDCGUID := 370474;
+SET @OLDCGUID2 := 325984;
+
+DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+15;
+DELETE FROM `creature` WHERE `guid` BETWEEN @OLDCGUID+0 AND @OLDCGUID+15;
+DELETE FROM `creature` WHERE `guid` BETWEEN @OLDCGUID2+0 AND @OLDCGUID2+1;
+INSERT INTO `creature` (`guid`, `id`, `map`, `SpawnMask`, `modelid`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+0, 20212, 642, 3, 0, 7.305609, -0.095246, 34.51022, 3.159046, 7200, 0, 0),
+(@CGUID+1, 20213, 641, 3, 0, 11.69965, 0.034146, 20.62076, 3.211406, 7200, 0, 0);
+
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
+(@CGUID+2, 37543, 530, 1, 1, 9633.195, -7136.578, 30.51368, 0, 120, 0, 0), -- 37543 (Area: 3665) 3.3.5a
+(@CGUID+3, 37543, 530, 1, 1, 9648.338, -7119.096, 28.47594, 0, 120, 0, 0), -- 37543 (Area: 3665) 3.3.5a
+(@CGUID+4, 37543, 530, 1, 1, 9665.38, -7136.049, 28.58942, 0, 120, 0, 0), -- 37543 (Area: 3665) 3.3.5a
+(@CGUID+5, 37574, 530, 1, 1, 9568.38, -7194.522, 24.68986, 4.660029, 120, 0, 0), -- 37574 (Area: 0) 3.3.5a
+(@CGUID+6, 37574, 530, 1, 1, 9530.643, -7189.838, 31.87009, 4.660029, 120, 0, 0), -- 37574 (Area: 0) 3.3.5a
+(@CGUID+7, 37543, 530, 1, 1, 9530.571, -7220.372, 30.44205, 1.22173, 120, 0, 0), -- 37543 (Area: 0) 3.3.5a
+(@CGUID+8, 37574, 530, 1, 1, 9520.098, -7188.818, 31.84313, 4.660029, 120, 0, 0), -- 37574 (Area: 0) 3.3.5a
+(@CGUID+9, 37574, 530, 1, 1, 9676.034, -7346.333, 22.96401, 4.660029, 120, 0, 0), -- 37574 (Area: 3482) 3.3.5a
+(@CGUID+10, 37574, 530, 1, 1, 9683.437, -7394.599, 24.14162, 4.660029, 120, 0, 0), -- 37574 (Area: 3482) 3.3.5a
+(@CGUID+11, 37574, 530, 1, 1, 9532.216, -7239.835, 24.74386, 4.660029, 120, 0, 0), -- 37574 (Area: 3482) 3.3.5a
+(@CGUID+12, 37574, 530, 1, 1, 9574.714, -7221.677, 23.17951, 4.660029, 120, 0, 0), -- 37574 (Area: 3482) 3.3.5a
+(@CGUID+13, 37543, 530, 1, 1, 9648.606, -7151.55, 28.7944, 0, 120, 0, 0), -- 37543 (Area: 3482) 3.3.5a
+(@CGUID+14, 37543, 530, 1, 1, 9467.849, -7269.604, 34.85052, 0, 120, 0, 0), -- 37543 (Area: 3482) 3.3.5a
+(@CGUID+15, 37543, 530, 1, 1, 9467.499, -7287.613, 36.13566, 0, 120, 0, 0); -- 37543 (Area: 3482) 3.3.5a
+
+DELETE FROM `creature_addon` WHERE `guid` IN (@CGUID, @CGUID+1);
+DELETE FROM `creature_addon` WHERE `guid` IN (@OLDCGUID2, @OLDCGUID2+1);
+INSERT INTO `creature_addon` (`guid`, `auras`) VALUES
+(@CGUID+0, 66656), -- Parachute
+(@CGUID+1, 66656); -- Parachute
diff --git a/sql/updates/world/2015_08_31_01_world.sql b/sql/updates/world/2015_08_31_01_world.sql
new file mode 100644
index 00000000000..c3a5bc4cdfd
--- /dev/null
+++ b/sql/updates/world/2015_08_31_01_world.sql
@@ -0,0 +1,17 @@
+--
+-- Kvaldir Raider SAI
+SET @ENTRY := 25760;
+UPDATE `creature_template` SET `AIName`="SmartAI" 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,0,1,0,100,1,2000,2000,4000,4000,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kvaldir Raider - OOC - React passif"),
+(@ENTRY,0,1,0,1,0,100,1,3000,5000,4000,4000,17,375,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kvaldir Raider - OOC - Emote"),
+(@ENTRY,0,2,0,1,0,100,1,3000,3000,4000,4000,8,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kvaldir Raider - OOC - React Aggressif");
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceGroup` IN (1,2,3) AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`,`NegativeCondition`) VALUES
+(22,1,@ENTRY,0,0,1,1,43671,1,0,0,"","Only Run script if the npc has the aura 43671",0),
+(22,2,@ENTRY,0,0,1,1,43671,1,0,0,"","Only Run script if the npc hasn't the aura 43671",1),
+(22,3,@ENTRY,0,0,1,1,43671,1,0,0,"","Only Run script if the npc hasn't the aura 43671",1);
+
+UPDATE `creature_template_addon` SET `emote`=0 WHERE `entry`=@ENTRY;
diff --git a/sql/updates/world/2015_09_01_00_world_335.sql b/sql/updates/world/2015_09_01_00_world_335.sql
new file mode 100644
index 00000000000..a14e8633c7a
--- /dev/null
+++ b/sql/updates/world/2015_09_01_00_world_335.sql
@@ -0,0 +1,2 @@
+--
+UPDATE `creature` SET `phaseMask`=1 WHERE `phaseMask`=65535;
diff --git a/sql/updates/world/2015_09_02_00_world.sql b/sql/updates/world/2015_09_02_00_world.sql
new file mode 100644
index 00000000000..c83de23b06a
--- /dev/null
+++ b/sql/updates/world/2015_09_02_00_world.sql
@@ -0,0 +1,7 @@
+-- Waypoint fix for quest "Escape from the Winterfin Caverns" (11570)
+UPDATE `script_waypoint` SET `location_x`=4279.54, `location_y`=6187.932, `location_z`=0.294670 WHERE `entry`=25208 AND `pointid`=41;
+
+-- Swap 1st and 2nd text
+UPDATE `creature_text` SET `groupid` = 99 WHERE `entry` = 25208 AND `groupid` = 0 AND `id` = 0;
+UPDATE `creature_text` SET `groupid` = 0 WHERE `entry` = 25208 AND `groupid` = 1 AND `id` = 0;
+UPDATE `creature_text` SET `groupid` = 1 WHERE `entry` = 25208 AND `groupid` = 99 AND `id` = 0;
diff --git a/sql/updates/world/2015_09_02_01_world.sql b/sql/updates/world/2015_09_02_01_world.sql
new file mode 100644
index 00000000000..1b58aed1abc
--- /dev/null
+++ b/sql/updates/world/2015_09_02_01_world.sql
@@ -0,0 +1,7 @@
+--
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=47669;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `Comment`) VALUES
+(13, 1, 47669, 0, 1, 0, 48048, 0,0, "Awaken Subboss");
+
+DELETE FROM `spell_linked_spell` WHERE `spell_trigger` = 48048;
+INSERT INTO `spell_linked_spell` VALUES (48048, 47669, 0, 'Awaken Subboss');
diff --git a/src/server/game/Battlegrounds/BattlegroundMgr.cpp b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
index 8e5766407f1..5bdaf0e661d 100644
--- a/src/server/game/Battlegrounds/BattlegroundMgr.cpp
+++ b/src/server/game/Battlegrounds/BattlegroundMgr.cpp
@@ -821,7 +821,8 @@ void BattlegroundMgr::ToggleArenaTesting()
void BattlegroundMgr::SetHolidayWeekends(uint32 mask)
{
- for (uint32 bgtype = 1; bgtype < MAX_BATTLEGROUND_TYPE_ID; ++bgtype)
+ // The current code supports battlegrounds up to BattlegroundTypeId(31)
+ for (uint32 bgtype = 1; bgtype < MAX_BATTLEGROUND_TYPE_ID && bgtype < 32; ++bgtype)
if (Battleground* bg = GetBattlegroundTemplate(BattlegroundTypeId(bgtype)))
bg->SetHoliday((mask & (1 << bgtype)) != 0);
}
diff --git a/src/server/game/DataStores/DBCStructure.h b/src/server/game/DataStores/DBCStructure.h
index 5ccd5d2b7e5..c680494cd72 100644
--- a/src/server/game/DataStores/DBCStructure.h
+++ b/src/server/game/DataStores/DBCStructure.h
@@ -2072,7 +2072,12 @@ struct VehicleSeatEntry
uint32 m_flagsB; // 45
// 46-57 added in 3.1, floats mostly
- bool CanEnterOrExit() const { return (m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT) != 0; }
+ bool CanEnterOrExit() const
+ {
+ return ((m_flags & VEHICLE_SEAT_FLAG_CAN_ENTER_OR_EXIT) != 0 ||
+ //If it has anmation for enter/ride, means it can be entered/exited by logic
+ (m_flags & (VEHICLE_SEAT_FLAG_HAS_LOWER_ANIM_FOR_ENTER | VEHICLE_SEAT_FLAG_HAS_LOWER_ANIM_FOR_RIDE)) != 0);
+ }
bool CanSwitchFromSeat() const { return (m_flags & VEHICLE_SEAT_FLAG_CAN_SWITCH) != 0; }
bool IsUsableByOverride() const { return (m_flags & (VEHICLE_SEAT_FLAG_UNCONTROLLED | VEHICLE_SEAT_FLAG_UNK18)
|| (m_flagsB & (VEHICLE_SEAT_FLAG_B_USABLE_FORCED | VEHICLE_SEAT_FLAG_B_USABLE_FORCED_2 |
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 59eedaaffed..1f52623461c 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -585,7 +585,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
@param[in] guid Player or group guid
*/
-void LFGMgr::LeaveLfg(ObjectGuid guid)
+void LFGMgr::LeaveLfg(ObjectGuid guid, bool disconnected)
{
ObjectGuid gguid = guid.IsGroup() ? guid : GetGroup(guid);
@@ -646,7 +646,7 @@ void LFGMgr::LeaveLfg(ObjectGuid guid)
break;
case LFG_STATE_DUNGEON:
case LFG_STATE_FINISHED_DUNGEON:
- if (guid != gguid) // Player
+ if (guid != gguid && !disconnected) // Player
SetState(guid, LFG_STATE_NONE);
break;
}
diff --git a/src/server/game/DungeonFinding/LFGMgr.h b/src/server/game/DungeonFinding/LFGMgr.h
index fda9a8b7ce9..90fbc36a114 100644
--- a/src/server/game/DungeonFinding/LFGMgr.h
+++ b/src/server/game/DungeonFinding/LFGMgr.h
@@ -399,7 +399,7 @@ class LFGMgr
/// Join Lfg with selected roles, dungeons and comment
void JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, std::string const& comment);
/// Leaves lfg
- void LeaveLfg(ObjectGuid guid);
+ void LeaveLfg(ObjectGuid guid, bool disconnected = false);
// LfgQueue
/// Get last lfg state (NONE, DUNGEON or FINISHED_DUNGEON)
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index 6ac20541574..d2140a96a46 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -80,6 +80,49 @@ char const* GetCompatibleString(LfgCompatibility compatibles)
}
}
+std::string LFGQueue::GetDetailedMatchRoles(GuidList const& check)
+{
+ if (check.empty())
+ return "";
+
+ // need the guids in order to avoid duplicates
+ GuidSet guids(check.begin(), check.end());
+
+ std::ostringstream o;
+
+ GuidSet::const_iterator it = guids.begin();
+ o << it->GetRawValue();
+ LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(*it);
+ if (itQueue == QueueDataStore.end())
+ {
+ TC_LOG_ERROR("lfg.queue.data.details", "Queue data not found for [%s]", it->ToString().c_str());
+ o << ' ' << GetRolesString(PLAYER_ROLE_NONE);
+ }
+ else
+ {
+ // skip leader flag, log only dps/tank/healer
+ o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER));
+ }
+
+ for (++it; it != guids.end(); ++it)
+ {
+ o << '|' << it->GetRawValue();
+ itQueue = QueueDataStore.find(*it);
+ if (itQueue == QueueDataStore.end())
+ {
+ TC_LOG_ERROR("lfg.queue.data.details", "Queue data not found for [%s]", it->ToString().c_str());
+ o << ' ' << GetRolesString(PLAYER_ROLE_NONE);
+ }
+ else
+ {
+ // skip leader flag, log only dps/tank/healer
+ o << ' ' << GetRolesString(itQueue->second.roles[*it] & uint8(~PLAYER_ROLE_LEADER));
+ }
+ }
+
+ return o.str();
+}
+
void LFGQueue::AddToQueue(ObjectGuid guid)
{
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
@@ -278,13 +321,13 @@ LfgCompatibility LFGQueue::FindNewGroups(GuidList& check, GuidList& all)
std::string strGuids = ConcatenateGuids(check);
LfgCompatibility compatibles = GetCompatibles(strGuids);
- TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s): %s - all(%s)", strGuids.c_str(), GetCompatibleString(compatibles), ConcatenateGuids(all).c_str());
+ TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s): %s - all(%s)", GetDetailedMatchRoles(check).c_str(), GetCompatibleString(compatibles), GetDetailedMatchRoles(all).c_str());
if (compatibles == LFG_COMPATIBILITY_PENDING) // Not previously cached, calculate
compatibles = CheckCompatibility(check);
if (compatibles == LFG_COMPATIBLES_BAD_STATES && sLFGMgr->AllQueued(check))
{
- TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s) compatibles (cached) changed from bad states to match", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s) compatibles (cached) changed from bad states to match", GetDetailedMatchRoles(check).c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_MATCH);
return LFG_COMPATIBLES_MATCH;
}
@@ -322,7 +365,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
// Check for correct size
if (check.size() > MAXGROUPSIZE || check.empty())
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s): Size wrong - Not compatibles", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s): Size wrong - Not compatibles", GetDetailedMatchRoles(check).c_str());
return LFG_INCOMPATIBLES_WRONG_GROUP_SIZE;
}
@@ -336,7 +379,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
LfgCompatibility child_compatibles = CheckCompatibility(check);
if (child_compatibles < LFG_COMPATIBLES_WITH_LESS_PLAYERS) // Group not compatible
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) child %s not compatibles", strGuids.c_str(), ConcatenateGuids(check).c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) child %s not compatibles", strGuids.c_str(), GetDetailedMatchRoles(check).c_str());
SetCompatibles(strGuids, child_compatibles);
return child_compatibles;
}
@@ -374,7 +417,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
// Group with less that MAXGROUPSIZE members always compatible
if (check.size() == 1 && numPlayers != MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) single group. Compatibles", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) single group. Compatibles", GetDetailedMatchRoles(check).c_str());
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(check.front());
LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
@@ -388,14 +431,14 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
if (numLfgGroups > 1)
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) More than one Lfggroup (%u)", strGuids.c_str(), numLfgGroups);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) More than one Lfggroup (%u)", GetDetailedMatchRoles(check).c_str(), numLfgGroups);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS);
return LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS;
}
if (numPlayers > MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Too much players (%u)", strGuids.c_str(), numPlayers);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Too much players (%u)", GetDetailedMatchRoles(check).c_str(), numPlayers);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS);
return LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS;
}
@@ -423,7 +466,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
if (uint8 playersize = numPlayers - proposalRoles.size())
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) not compatible, %u players are ignoring each other", strGuids.c_str(), playersize);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) not compatible, %u players are ignoring each other", GetDetailedMatchRoles(check).c_str(), playersize);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_HAS_IGNORES);
return LFG_INCOMPATIBLES_HAS_IGNORES;
}
@@ -435,7 +478,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
for (LfgRolesMap::const_iterator it = debugRoles.begin(); it != debugRoles.end(); ++it)
o << ", " << it->first.GetRawValue() << ": " << GetRolesString(it->second);
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Roles not compatible%s", strGuids.c_str(), o.str().c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Roles not compatible%s", GetDetailedMatchRoles(check).c_str(), o.str().c_str());
SetCompatibles(strGuids, LFG_INCOMPATIBLES_NO_ROLES);
return LFG_INCOMPATIBLES_NO_ROLES;
}
@@ -455,7 +498,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
if (proposalDungeons.empty())
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) No compatible dungeons%s", strGuids.c_str(), o.str().c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) No compatible dungeons%s", GetDetailedMatchRoles(check).c_str(), o.str().c_str());
SetCompatibles(strGuids, LFG_INCOMPATIBLES_NO_DUNGEONS);
return LFG_INCOMPATIBLES_NO_DUNGEONS;
}
@@ -472,7 +515,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
// Enough players?
if (numPlayers != MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Compatibles but not enough players(%u)", strGuids.c_str(), numPlayers);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Compatibles but not enough players(%u)", GetDetailedMatchRoles(check).c_str(), numPlayers);
LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
data.roles = proposalRoles;
@@ -489,7 +532,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
if (!sLFGMgr->AllQueued(check))
{
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Group MATCH but can't create proposal!", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Group MATCH but can't create proposal!", GetDetailedMatchRoles(check).c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_BAD_STATES);
return LFG_COMPATIBLES_BAD_STATES;
}
@@ -531,7 +574,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(GuidList check)
sLFGMgr->AddProposal(proposal);
- TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) MATCH! Group formed", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) MATCH! Group formed", GetDetailedMatchRoles(check).c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_MATCH);
return LFG_COMPATIBLES_MATCH;
}
diff --git a/src/server/game/DungeonFinding/LFGQueue.h b/src/server/game/DungeonFinding/LFGQueue.h
index 9bf8ee64b78..77683614d49 100644
--- a/src/server/game/DungeonFinding/LFGQueue.h
+++ b/src/server/game/DungeonFinding/LFGQueue.h
@@ -88,6 +88,7 @@ class LFGQueue
public:
// Add/Remove from queue
+ std::string GetDetailedMatchRoles(GuidList const& check);
void AddToQueue(ObjectGuid guid);
void RemoveFromQueue(ObjectGuid guid);
void AddQueueData(ObjectGuid guid, time_t joinTime, LfgDungeonSet const& dungeons, LfgRolesMap const& rolesMap);
diff --git a/src/server/game/DungeonFinding/LFGScripts.cpp b/src/server/game/DungeonFinding/LFGScripts.cpp
index 852eb7d8c5f..b1ae61cef11 100644
--- a/src/server/game/DungeonFinding/LFGScripts.cpp
+++ b/src/server/game/DungeonFinding/LFGScripts.cpp
@@ -44,6 +44,8 @@ void LFGPlayerScript::OnLogout(Player* player)
player->GetSession()->SendLfgLfrList(false);
sLFGMgr->LeaveLfg(player->GetGUID());
}
+ else if (player->GetSession()->PlayerDisconnected())
+ sLFGMgr->LeaveLfg(player->GetGUID(), true);
}
void LFGPlayerScript::OnLogin(Player* player, bool /*loginFirst*/)
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 4597f18eedb..d02a22d43f4 100644
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -3192,7 +3192,7 @@ bool Unit::IsUnderWater() const
void Unit::UpdateUnderwaterState(Map* m, float x, float y, float z)
{
- if (!IsPet() && !IsVehicle())
+ if (IsFlying() || (!IsPet() && !IsVehicle()))
return;
LiquidData liquid_status;
@@ -11947,9 +11947,9 @@ bool Unit::_IsValidAttackTarget(Unit const* target, SpellInfo const* bySpell, Wo
|| target->GetReactionTo(this) > REP_NEUTRAL)
return false;
- // Not all neutral creatures can be attacked
+ // Not all neutral creatures can be attacked (even some unfriendly faction does not react aggresive to you, like Sporaggar)
if (GetReactionTo(target) == REP_NEUTRAL &&
- target->GetReactionTo(this) == REP_NEUTRAL)
+ target->GetReactionTo(this) <= REP_NEUTRAL)
{
if (!(target->GetTypeId() == TYPEID_PLAYER && GetTypeId() == TYPEID_PLAYER) &&
!(target->GetTypeId() == TYPEID_UNIT && GetTypeId() == TYPEID_UNIT))
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index d9753433235..4cb1116d2fd 100644
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -2755,7 +2755,8 @@ void ObjectMgr::LoadItemTemplates()
itemTemplate.Spells[j].SpellId = 0;
}
- if (spellInfo && itemTemplate.Spells[j].SpellCategory)
+ if (spellInfo && itemTemplate.Spells[j].SpellCategory
+ && itemTemplate.Spells[j].SpellCategory != SPELL_CATEGORY_FOOD)
{
bool added = sSpellsByCategoryStore[itemTemplate.Spells[j].SpellCategory].insert(itemTemplate.Spells[j].SpellId).second;
if (added)
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index 63390ad61da..a4ba9866064 100644
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -379,7 +379,8 @@ enum TrinityStrings
LANG_COMMAND_CHEAT_POWER = 361,
LANG_COMMAND_CHEAT_WW = 362,
LANG_COMMAND_WHISPEROFFPLAYER = 363,
- // Room for more level 2 364-399 not used
+ LANG_COMMAND_CHEAT_TAXINODES = 364,
+ // Room for more level 2 365-399 not used
// level 3 chat
LANG_SCRIPTS_RELOADED = 400,
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 87a40657e24..3753f796768 100644
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -256,6 +256,7 @@ class WorldSession
bool PlayerLogout() const { return m_playerLogout; }
bool PlayerLogoutWithSave() const { return m_playerLogout && m_playerSave; }
bool PlayerRecentlyLoggedOut() const { return m_playerRecentlyLogout; }
+ bool PlayerDisconnected() const { return !m_Socket; }
void ReadAddonsInfo(WorldPacket& data);
void SendAddonsInfo();
diff --git a/src/server/scripts/Commands/cs_cheat.cpp b/src/server/scripts/Commands/cs_cheat.cpp
index 54ae72c3d8a..78ba5a4dc74 100644
--- a/src/server/scripts/Commands/cs_cheat.cpp
+++ b/src/server/scripts/Commands/cs_cheat.cpp
@@ -24,7 +24,6 @@ EndScriptData */
#include "Chat.h"
#include "Language.h"
-#include "ObjectMgr.h"
#include "Player.h"
#include "ScriptMgr.h"
@@ -166,8 +165,8 @@ public:
{
Player* player = handler->GetSession()->GetPlayer();
- const char* enabled = "enabled";
- const char* disabled = "disabled";
+ const char* enabled = "ON";
+ const char* disabled = "OFF";
handler->SendSysMessage(LANG_COMMAND_CHEAT_STATUS);
handler->PSendSysMessage(LANG_COMMAND_CHEAT_GOD, player->GetCommandStatus(CHEAT_GOD) ? enabled : disabled);
@@ -175,6 +174,8 @@ public:
handler->PSendSysMessage(LANG_COMMAND_CHEAT_CT, player->GetCommandStatus(CHEAT_CASTTIME) ? enabled : disabled);
handler->PSendSysMessage(LANG_COMMAND_CHEAT_POWER, player->GetCommandStatus(CHEAT_POWER) ? enabled : disabled);
handler->PSendSysMessage(LANG_COMMAND_CHEAT_WW, player->GetCommandStatus(CHEAT_WATERWALK) ? enabled : disabled);
+ handler->PSendSysMessage(LANG_COMMAND_CHEAT_TAXINODES, player->isTaxiCheater() ? enabled : disabled);
+
return true;
}
@@ -186,13 +187,7 @@ public:
std::string argstr = (char*)args;
if (!*args)
- {
argstr = (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK)) ? "off" : "on";
- if (handler->GetSession()->GetPlayer()->GetCommandStatus(CHEAT_WATERWALK))
- argstr = "off";
- else
- argstr = "on";
- }
if (argstr == "off")
{
@@ -214,15 +209,7 @@ public:
static bool HandleTaxiCheatCommand(ChatHandler* handler, const char* args)
{
- if (!*args)
- {
- handler->SendSysMessage(LANG_USE_BOL);
- handler->SetSentErrorMessage(true);
- return false;
- }
-
std::string argstr = (char*)args;
-
Player* chr = handler->getSelectedPlayer();
if (!chr)
@@ -230,13 +217,9 @@ public:
else if (handler->HasLowerSecurity(chr, ObjectGuid::Empty)) // check online security
return false;
- if (argstr == "on")
+ if (!*args)
{
- chr->SetTaxiCheater(true);
- handler->PSendSysMessage(LANG_YOU_GIVE_TAXIS, handler->GetNameLink(chr).c_str());
- if (handler->needReportToTarget(chr))
- ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_ADDED, handler->GetNameLink().c_str());
- return true;
+ argstr = (chr->isTaxiCheater()) ? "off" : "on";
}
if (argstr == "off")
@@ -245,7 +228,14 @@ public:
handler->PSendSysMessage(LANG_YOU_REMOVE_TAXIS, handler->GetNameLink(chr).c_str());
if (handler->needReportToTarget(chr))
ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_REMOVED, handler->GetNameLink().c_str());
-
+ return true;
+ }
+ else if (argstr == "on")
+ {
+ chr->SetTaxiCheater(true);
+ handler->PSendSysMessage(LANG_YOU_GIVE_TAXIS, handler->GetNameLink(chr).c_str());
+ if (handler->needReportToTarget(chr))
+ ChatHandler(chr->GetSession()).PSendSysMessage(LANG_YOURS_TAXIS_ADDED, handler->GetNameLink().c_str());
return true;
}
@@ -259,10 +249,11 @@ public:
if (!*args)
return false;
+ // std::int flag = (char*)args;
int flag = atoi((char*)args);
Player* chr = handler->getSelectedPlayer();
- if (chr == NULL)
+ if (!chr)
{
handler->SendSysMessage(LANG_NO_CHAR_SELECTED);
handler->SetSentErrorMessage(true);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
index c79a57d0746..12798833a3f 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/blackwing_lair.h
@@ -25,14 +25,18 @@ uint32 const EncounterCount = 8;
enum BWLEncounter
{
- BOSS_RAZORGORE = 0,
- BOSS_VAELASTRAZ = 1,
- BOSS_BROODLORD = 2,
- BOSS_FIREMAW = 3,
- BOSS_EBONROC = 4,
- BOSS_FLAMEGOR = 5,
- BOSS_CHROMAGGUS = 6,
- BOSS_NEFARIAN = 7
+ // Encounter States/Boss GUIDs
+ DATA_RAZORGORE_THE_UNTAMED = 0,
+ DATA_VAELASTRAZ_THE_CORRUPT = 1,
+ DATA_BROODLORD_LASHLAYER = 2,
+ DATA_FIREMAW = 3,
+ DATA_EBONROC = 4,
+ DATA_FLAMEGOR = 5,
+ DATA_CHROMAGGUS = 6,
+ DATA_NEFARIAN = 7,
+
+ // Additional Data
+ DATA_LORD_VICTOR_NEFARIUS = 8
};
enum CreatureIds
@@ -44,7 +48,7 @@ enum CreatureIds
NPC_BLACKWING_WARLOCK = 12459,
NPC_VAELASTRAZ = 13020,
NPC_BROODLORD = 12017,
- NPC_FIRENAW = 11983,
+ NPC_FIREMAW = 11983,
NPC_EBONROC = 14601,
NPC_FLAMEGOR = 11981,
NPC_CHROMAGGUS = 14020,
@@ -52,17 +56,14 @@ enum CreatureIds
NPC_NEFARIAN = 11583
};
-enum BWLData64
+enum GameObjectIds
{
- DATA_RAZORGORE_THE_UNTAMED = 1,
- DATA_VAELASTRAZ_THE_CORRUPT,
- DATA_BROODLORD_LASHLAYER,
- DATA_FIRENAW,
- DATA_EBONROC,
- DATA_FLAMEGOR,
- DATA_CHROMAGGUS,
- DATA_LORD_VICTOR_NEFARIUS,
- DATA_NEFARIAN
+ GO_BLACK_DRAGON_EGG = 177807,
+ GO_BOSSGATE01 = 175946,
+ GO_DRAKE_RIDER_PORTCULLIS = 175185,
+ GO_ALTERAC_VALLEY_GATE = 180424,
+ GO_GATE = 185483,
+ GO_VACCUUM_EXIT_GATE = 181125
};
enum BWLEvents
@@ -79,4 +80,4 @@ enum BWLMisc
DATA_EGG_EVENT
};
-#endif \ No newline at end of file
+#endif
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp
index 2609cf5fdf8..5ba933005ec 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp
@@ -50,16 +50,10 @@ public:
struct boss_broodlordAI : public BossAI
{
- boss_broodlordAI(Creature* creature) : BossAI(creature, BOSS_BROODLORD) { }
+ boss_broodlordAI(Creature* creature) : BossAI(creature, DATA_BROODLORD_LASHLAYER) { }
void EnterCombat(Unit* /*who*/) override
{
- if (instance->GetBossState(BOSS_VAELASTRAZ) != DONE)
- {
- EnterEvadeMode();
- return;
- }
-
_EnterCombat();
Talk(SAY_AGGRO);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
index 61d6c052cdf..9a49b96e68e 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_chromaggus.cpp
@@ -71,7 +71,7 @@ public:
struct boss_chromaggusAI : public BossAI
{
- boss_chromaggusAI(Creature* creature) : BossAI(creature, BOSS_CHROMAGGUS)
+ boss_chromaggusAI(Creature* creature) : BossAI(creature, DATA_CHROMAGGUS)
{
Initialize();
@@ -193,11 +193,6 @@ public:
void EnterCombat(Unit* /*who*/) override
{
- if (instance->GetBossState(BOSS_FLAMEGOR) != DONE)
- {
- EnterEvadeMode();
- return;
- }
_EnterCombat();
events.ScheduleEvent(EVENT_SHIMMER, 0);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
index 8bd3ae0ebce..7a7e30f7913 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_ebonroc.cpp
@@ -41,15 +41,10 @@ public:
struct boss_ebonrocAI : public BossAI
{
- boss_ebonrocAI(Creature* creature) : BossAI(creature, BOSS_EBONROC) { }
+ boss_ebonrocAI(Creature* creature) : BossAI(creature, DATA_EBONROC) { }
void EnterCombat(Unit* /*who*/) override
{
- if (instance->GetBossState(BOSS_BROODLORD) != DONE)
- {
- EnterEvadeMode();
- return;
- }
_EnterCombat();
events.ScheduleEvent(EVENT_SHADOWFLAME, urand(10000, 20000));
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp
index e41153796e5..3dcdbfe01df 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_firemaw.cpp
@@ -41,15 +41,10 @@ public:
struct boss_firemawAI : public BossAI
{
- boss_firemawAI(Creature* creature) : BossAI(creature, BOSS_FIREMAW) { }
+ boss_firemawAI(Creature* creature) : BossAI(creature, DATA_FIREMAW) { }
void EnterCombat(Unit* /*who*/) override
{
- if (instance->GetBossState(BOSS_BROODLORD) != DONE)
- {
- EnterEvadeMode();
- return;
- }
_EnterCombat();
events.ScheduleEvent(EVENT_SHADOWFLAME, urand(10000, 20000));
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp
index 011c695b61f..20e69211da2 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_flamegor.cpp
@@ -46,15 +46,10 @@ public:
struct boss_flamegorAI : public BossAI
{
- boss_flamegorAI(Creature* creature) : BossAI(creature, BOSS_FLAMEGOR) { }
+ boss_flamegorAI(Creature* creature) : BossAI(creature, DATA_FLAMEGOR) { }
void EnterCombat(Unit* /*who*/) override
{
- if (instance->GetBossState(BOSS_BROODLORD) != DONE)
- {
- EnterEvadeMode();
- return;
- }
_EnterCombat();
events.ScheduleEvent(EVENT_SHADOWFLAME, urand(10000, 20000));
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
index 1ff18b845a1..51e1bf67f16 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_nefarian.cpp
@@ -166,7 +166,7 @@ public:
struct boss_victor_nefariusAI : public BossAI
{
- boss_victor_nefariusAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN)
+ boss_victor_nefariusAI(Creature* creature) : BossAI(creature, DATA_NEFARIAN)
{
Initialize();
}
@@ -394,7 +394,7 @@ public:
struct boss_nefarianAI : public BossAI
{
- boss_nefarianAI(Creature* creature) : BossAI(creature, BOSS_NEFARIAN)
+ boss_nefarianAI(Creature* creature) : BossAI(creature, DATA_NEFARIAN)
{
Initialize();
}
@@ -458,7 +458,7 @@ public:
{
if (canDespawn && DespawnTimer <= diff)
{
- instance->SetBossState(BOSS_NEFARIAN, FAIL);
+ instance->SetBossState(DATA_NEFARIAN, FAIL);
std::list<Creature*> constructList;
me->GetCreatureListWithEntryInGrid(constructList, NPC_BONE_CONSTRUCT, 500.0f);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
index 8d660fc17d1..1d66964ce6b 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_razorgore.cpp
@@ -68,7 +68,7 @@ public:
struct boss_razorgoreAI : public BossAI
{
- boss_razorgoreAI(Creature* creature) : BossAI(creature, BOSS_RAZORGORE)
+ boss_razorgoreAI(Creature* creature) : BossAI(creature, DATA_RAZORGORE_THE_UNTAMED)
{
Initialize();
}
@@ -175,7 +175,7 @@ public:
{
if (InstanceScript* instance = go->GetInstanceScript())
if (instance->GetData(DATA_EGG_EVENT) != DONE)
- if (Creature* razor = ObjectAccessor::GetCreature(*go, instance->GetGuidData(DATA_RAZORGORE_THE_UNTAMED)))
+ if (Creature* razor = instance->GetCreature(DATA_RAZORGORE_THE_UNTAMED))
{
razor->Attack(player, true);
player->CastSpell(razor, SPELL_MINDCONTROL);
diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
index 0a2a245ece6..636554a0ae4 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_vaelastrasz.cpp
@@ -68,7 +68,7 @@ public:
struct boss_vaelAI : public BossAI
{
- boss_vaelAI(Creature* creature) : BossAI(creature, BOSS_VAELASTRAZ)
+ boss_vaelAI(Creature* creature) : BossAI(creature, DATA_VAELASTRAZ_THE_CORRUPT)
{
Initialize();
creature->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
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 7e38a9265f7..97646b774eb 100644
--- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
+++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/instance_blackwing_lair.cpp
@@ -15,23 +15,36 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include "ScriptMgr.h"
+#include "Player.h"
#include "ScriptedCreature.h"
-#include "PassiveAI.h"
+#include "ScriptMgr.h"
#include "blackwing_lair.h"
-#include "Player.h"
-/*
-Blackwing Lair Encounter:
-1 - boss_razorgore.cpp
-2 - boss_vaelastrasz.cpp
-3 - boss_broodlord_lashlayer.cpp
-4 - boss_firemaw.cpp
-5 - boss_ebonroc.cpp
-6 - boss_flamegor.cpp
-7 - boss_chromaggus.cpp
-8 - boss_nefarian.cpp
-*/
+DoorData const doorData[] =
+{
+ { GO_BOSSGATE01, DATA_RAZORGORE_THE_UNTAMED, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_DRAKE_RIDER_PORTCULLIS, DATA_VAELASTRAZ_THE_CORRUPT, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_ALTERAC_VALLEY_GATE, DATA_BROODLORD_LASHLAYER, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_GATE, DATA_FIREMAW, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_GATE, DATA_EBONROC, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_GATE, DATA_FLAMEGOR, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { GO_VACCUUM_EXIT_GATE, DATA_CHROMAGGUS, DOOR_TYPE_PASSAGE, BOUNDARY_NONE },
+ { 0, 0, DOOR_TYPE_ROOM, BOUNDARY_NONE } // END
+};
+
+ObjectData const creatureData[] =
+{
+ { NPC_RAZORGORE, DATA_RAZORGORE_THE_UNTAMED },
+ { NPC_VAELASTRAZ, DATA_VAELASTRAZ_THE_CORRUPT },
+ { NPC_BROODLORD, DATA_BROODLORD_LASHLAYER },
+ { NPC_FIREMAW, DATA_FIREMAW },
+ { NPC_EBONROC, DATA_EBONROC },
+ { NPC_FLAMEGOR, DATA_FLAMEGOR },
+ { NPC_CHROMAGGUS, DATA_CHROMAGGUS },
+ { NPC_NEFARIAN, DATA_NEFARIAN },
+ { NPC_VICTOR_NEFARIUS, DATA_LORD_VICTOR_NEFARIUS },
+ { 0, 0 } // END
+};
Position const SummonPosition[8] =
{
@@ -57,92 +70,84 @@ public:
instance_blackwing_lair_InstanceMapScript(Map* map) : InstanceScript(map)
{
SetHeaders(DataHeader);
+ SetBossNumber(EncounterCount);
+ LoadDoorData(doorData);
+ LoadObjectData(creatureData, nullptr);
+
// Razorgore
EggCount = 0;
EggEvent = 0;
- SetBossNumber(EncounterCount);
}
void OnCreatureCreate(Creature* creature) override
{
+ InstanceScript::OnCreatureCreate(creature);
+
switch (creature->GetEntry())
{
- case NPC_RAZORGORE:
- RazorgoreTheUntamedGUID = creature->GetGUID();
- break;
case NPC_BLACKWING_DRAGON:
case NPC_BLACKWING_TASKMASTER:
case NPC_BLACKWING_LEGIONAIRE:
case NPC_BLACKWING_WARLOCK:
- if (Creature* razor = instance->GetCreature(RazorgoreTheUntamedGUID))
+ if (Creature* razor = GetCreature(DATA_RAZORGORE_THE_UNTAMED))
razor->AI()->JustSummoned(creature);
break;
- case NPC_VAELASTRAZ:
- VaelastraszTheCorruptGUID = creature->GetGUID();
- break;
- case NPC_BROODLORD:
- BroodlordLashlayerGUID = creature->GetGUID();
- break;
- case NPC_FIRENAW:
- FiremawGUID = creature->GetGUID();
- break;
- case NPC_EBONROC:
- EbonrocGUID = creature->GetGUID();
- break;
- case NPC_FLAMEGOR:
- FlamegorGUID = creature->GetGUID();
- break;
- case NPC_CHROMAGGUS:
- ChromaggusGUID = creature->GetGUID();
- break;
- case NPC_VICTOR_NEFARIUS:
- LordVictorNefariusGUID = creature->GetGUID();
- break;
- case NPC_NEFARIAN:
- NefarianGUID = creature->GetGUID();
+ default:
break;
}
}
void OnGameObjectCreate(GameObject* go) override
{
- switch (go->GetEntry())
+ InstanceScript::OnGameObjectCreate(go);
+
+ if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
{
- case 177807: // Egg
- if (GetBossState(BOSS_FIREMAW) == DONE)
- go->SetPhaseMask(2, true);
- else
- EggList.push_back(go->GetGUID());
- break;
- case 175946: // Door
- RazorgoreDoorGUID = go->GetGUID();
- HandleGameObject(ObjectGuid::Empty, GetBossState(BOSS_RAZORGORE) == DONE, go);
- break;
- case 175185: // Door
- VaelastraszDoorGUID = go->GetGUID();
- HandleGameObject(ObjectGuid::Empty, GetBossState(BOSS_VAELASTRAZ) == DONE, go);
- break;
- case 180424: // Door
- BroodlordDoorGUID = go->GetGUID();
- HandleGameObject(ObjectGuid::Empty, GetBossState(BOSS_BROODLORD) == DONE, go);
- break;
- case 185483: // Door
- ChrommagusDoorGUID = go->GetGUID();
- HandleGameObject(ObjectGuid::Empty, GetBossState(BOSS_FIREMAW) == DONE && GetBossState(BOSS_EBONROC) == DONE && GetBossState(BOSS_FLAMEGOR) == DONE, go);
- break;
- case 181125: // Door
- NefarianDoorGUID = go->GetGUID();
- HandleGameObject(ObjectGuid::Empty, GetBossState(BOSS_CHROMAGGUS) == DONE, go);
- break;
+ if (GetBossState(DATA_FIREMAW) == DONE)
+ go->SetPhaseMask(2, true);
+ else
+ EggList.push_back(go->GetGUID());
}
}
void OnGameObjectRemove(GameObject* go) override
{
- if (go->GetEntry() == 177807) // Egg
+ InstanceScript::OnGameObjectRemove(go);
+
+ if (go->GetEntry() == GO_BLACK_DRAGON_EGG)
EggList.remove(go->GetGUID());
}
+ bool CheckRequiredBosses(uint32 bossId, Player const* player /*= nullptr*/) const override
+ {
+ if (_SkipCheckRequiredBosses(player))
+ return true;
+
+ switch (bossId)
+ {
+ case DATA_BROODLORD_LASHLAYER:
+ if (GetBossState(DATA_VAELASTRAZ_THE_CORRUPT) != DONE)
+ return false;
+ break;
+ case DATA_FIREMAW:
+ case DATA_EBONROC:
+ case DATA_FLAMEGOR:
+ if (GetBossState(DATA_BROODLORD_LASHLAYER) != DONE)
+ return false;
+ break;
+ case DATA_CHROMAGGUS:
+ if (GetBossState(DATA_FIREMAW) != DONE
+ || GetBossState(DATA_EBONROC) != DONE
+ || GetBossState(DATA_FLAMEGOR) != DONE)
+ return false;
+ break;
+ default:
+ break;
+ }
+
+ return true;
+ }
+
bool SetBossState(uint32 type, EncounterState state) override
{
if (!InstanceScript::SetBossState(type, state))
@@ -150,40 +155,25 @@ public:
switch (type)
{
- case BOSS_RAZORGORE:
- HandleGameObject(RazorgoreDoorGUID, state == DONE);
+ case DATA_RAZORGORE_THE_UNTAMED:
if (state == DONE)
{
for (GuidList::const_iterator itr = EggList.begin(); itr != EggList.end(); ++itr)
- if (GameObject* egg = instance->GetGameObject((*itr)))
+ if (GameObject* egg = instance->GetGameObject(*itr))
egg->SetPhaseMask(2, true);
}
SetData(DATA_EGG_EVENT, NOT_STARTED);
break;
- case BOSS_VAELASTRAZ:
- HandleGameObject(VaelastraszDoorGUID, state == DONE);
- break;
- case BOSS_BROODLORD:
- HandleGameObject(BroodlordDoorGUID, state == DONE);
- break;
- case BOSS_FIREMAW:
- case BOSS_EBONROC:
- case BOSS_FLAMEGOR:
- HandleGameObject(ChrommagusDoorGUID, GetBossState(BOSS_FIREMAW) == DONE && GetBossState(BOSS_EBONROC) == DONE && GetBossState(BOSS_FLAMEGOR) == DONE);
- break;
- case BOSS_CHROMAGGUS:
- HandleGameObject(NefarianDoorGUID, state == DONE);
- break;
- case BOSS_NEFARIAN:
+ case DATA_NEFARIAN:
switch (state)
{
case NOT_STARTED:
- if (Creature* nefarian = instance->GetCreature(NefarianGUID))
+ if (Creature* nefarian = GetCreature(DATA_NEFARIAN))
nefarian->DespawnOrUnsummon();
break;
case FAIL:
- _events.ScheduleEvent(EVENT_RESPAWN_NEFARIUS, 15*IN_MILLISECONDS*MINUTE);
- SetBossState(BOSS_NEFARIAN, NOT_STARTED);
+ _events.ScheduleEvent(EVENT_RESPAWN_NEFARIUS, 15 * IN_MILLISECONDS * MINUTE);
+ SetBossState(DATA_NEFARIAN, NOT_STARTED);
break;
default:
break;
@@ -193,24 +183,6 @@ public:
return true;
}
- ObjectGuid GetGuidData(uint32 id) const override
- {
- switch (id)
- {
- case DATA_RAZORGORE_THE_UNTAMED: return RazorgoreTheUntamedGUID;
- case DATA_VAELASTRAZ_THE_CORRUPT: return VaelastraszTheCorruptGUID;
- case DATA_BROODLORD_LASHLAYER: return BroodlordLashlayerGUID;
- case DATA_FIRENAW: return FiremawGUID;
- case DATA_EBONROC: return EbonrocGUID;
- case DATA_FLAMEGOR: return FlamegorGUID;
- case DATA_CHROMAGGUS: return ChromaggusGUID;
- case DATA_LORD_VICTOR_NEFARIUS: return LordVictorNefariusGUID;
- case DATA_NEFARIAN: return NefarianGUID;
- }
-
- return ObjectGuid::Empty;
- }
-
void SetData(uint32 type, uint32 data) override
{
if (type == DATA_EGG_EVENT)
@@ -218,7 +190,7 @@ public:
switch (data)
{
case IN_PROGRESS:
- _events.ScheduleEvent(EVENT_RAZOR_SPAWN, 45*IN_MILLISECONDS);
+ _events.ScheduleEvent(EVENT_RAZOR_SPAWN, 45 * IN_MILLISECONDS);
EggEvent = data;
EggCount = 0;
break;
@@ -230,13 +202,13 @@ public:
case SPECIAL:
if (++EggCount == 15)
{
- if (Creature* razor = instance->GetCreature(RazorgoreTheUntamedGUID))
+ if (Creature* razor = GetCreature(DATA_RAZORGORE_THE_UNTAMED))
{
SetData(DATA_EGG_EVENT, DONE);
razor->RemoveAurasDueToSpell(42013); // MindControl
DoRemoveAurasDueToSpellOnPlayers(42013);
}
- _events.ScheduleEvent(EVENT_RAZOR_PHASE_TWO, IN_MILLISECONDS);
+ _events.ScheduleEvent(EVENT_RAZOR_PHASE_TWO, 1 * IN_MILLISECONDS);
_events.CancelEvent(EVENT_RAZOR_SPAWN);
}
if (EggEvent == NOT_STARTED)
@@ -249,8 +221,8 @@ public:
void OnUnitDeath(Unit* unit) override
{
//! HACK, needed because of buggy CreatureAI after charm
- if (unit->GetEntry() == NPC_RAZORGORE && GetBossState(BOSS_RAZORGORE) != DONE)
- SetBossState(BOSS_RAZORGORE, DONE);
+ if (unit->GetEntry() == NPC_RAZORGORE && GetBossState(DATA_RAZORGORE_THE_UNTAMED) != DONE)
+ SetBossState(DATA_RAZORGORE_THE_UNTAMED, DONE);
}
void Update(uint32 diff) override
@@ -268,15 +240,15 @@ public:
for (uint8 i = urand(2, 5); i > 0 ; --i)
if (Creature* summon = instance->SummonCreature(Entry[urand(0, 4)], SummonPosition[urand(0, 7)]))
summon->SetInCombatWithZone();
- _events.ScheduleEvent(EVENT_RAZOR_SPAWN, urand(12, 17)*IN_MILLISECONDS);
+ _events.ScheduleEvent(EVENT_RAZOR_SPAWN, urand(12, 17) * IN_MILLISECONDS);
break;
case EVENT_RAZOR_PHASE_TWO:
_events.CancelEvent(EVENT_RAZOR_SPAWN);
- if (Creature* razor = instance->GetCreature(RazorgoreTheUntamedGUID))
+ if (Creature* razor = GetCreature(DATA_RAZORGORE_THE_UNTAMED))
razor->AI()->DoAction(ACTION_PHASE_TWO);
break;
case EVENT_RESPAWN_NEFARIUS:
- if (Creature* nefarius = instance->GetCreature(LordVictorNefariusGUID))
+ if (Creature* nefarius = GetCreature(DATA_LORD_VICTOR_NEFARIUS))
{
nefarius->SetPhaseMask(1, true);
nefarius->setActive(true);
@@ -291,34 +263,11 @@ public:
protected:
// Misc
EventMap _events;
+
// Razorgore
uint8 EggCount;
uint32 EggEvent;
- ObjectGuid RazorgoreTheUntamedGUID;
- ObjectGuid RazorgoreDoorGUID;
GuidList EggList;
-
- // Vaelastrasz the Corrupt
- ObjectGuid VaelastraszTheCorruptGUID;
- ObjectGuid VaelastraszDoorGUID;
-
- // Broodlord Lashlayer
- ObjectGuid BroodlordLashlayerGUID;
- ObjectGuid BroodlordDoorGUID;
-
- // 3 Dragons
- ObjectGuid FiremawGUID;
- ObjectGuid EbonrocGUID;
- ObjectGuid FlamegorGUID;
- ObjectGuid ChrommagusDoorGUID;
-
- // Chormaggus
- ObjectGuid ChromaggusGUID;
- ObjectGuid NefarianDoorGUID;
-
- // Nefarian
- ObjectGuid LordVictorNefariusGUID;
- ObjectGuid NefarianGUID;
};
InstanceScript* GetInstanceScript(InstanceMap* map) const override
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
index 5b04e4bb0f7..4b60107a182 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_hodir.cpp
@@ -396,8 +396,8 @@ class boss_hodir : public CreatureScript
me->SetControlled(true, UNIT_STATE_STUNNED);
me->CombatStop(true);
- DoCastAOE(SPELL_KILL_CREDIT); /// need to be cast before changing boss faction
- /// spell will target enemies only
+ DoCastAOE(SPELL_KILL_CREDIT, true); /// need to be cast before changing boss faction
+ /// spell will target enemies only
me->setFaction(35);
me->DespawnOrUnsummon(10000);
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
index 48f28077e00..59c28cd3a5a 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp
@@ -696,19 +696,22 @@ class boss_sara : public CreatureScript
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
{
- if (_events.IsInPhase(PHASE_ONE) && damage >= me->GetHealth())
+ if (damage >= me->GetHealth())
{
- damage = 0;
+ damage = me->GetHealth() - 1;
- if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
- voice->AI()->DoAction(ACTION_PHASE_TRANSFORM);
-
- Talk(SAY_SARA_TRANSFORM_1);
- _events.SetPhase(PHASE_TRANSFORM);
- _events.ScheduleEvent(EVENT_TRANSFORM_1, 4700, 0, PHASE_TRANSFORM);
- _events.ScheduleEvent(EVENT_TRANSFORM_2, 9500, 0, PHASE_TRANSFORM);
- _events.ScheduleEvent(EVENT_TRANSFORM_3, 14300, 0, PHASE_TRANSFORM);
- _events.ScheduleEvent(EVENT_TRANSFORM_4, 14500, 0, PHASE_TRANSFORM);
+ if (_events.IsInPhase(PHASE_ONE))
+ {
+ if (Creature* voice = ObjectAccessor::GetCreature(*me, _instance->GetGuidData(DATA_VOICE_OF_YOGG_SARON)))
+ voice->AI()->DoAction(ACTION_PHASE_TRANSFORM);
+
+ Talk(SAY_SARA_TRANSFORM_1);
+ _events.SetPhase(PHASE_TRANSFORM);
+ _events.ScheduleEvent(EVENT_TRANSFORM_1, 4700, 0, PHASE_TRANSFORM);
+ _events.ScheduleEvent(EVENT_TRANSFORM_2, 9500, 0, PHASE_TRANSFORM);
+ _events.ScheduleEvent(EVENT_TRANSFORM_3, 14300, 0, PHASE_TRANSFORM);
+ _events.ScheduleEvent(EVENT_TRANSFORM_4, 14500, 0, PHASE_TRANSFORM);
+ }
}
}
diff --git a/src/server/scripts/Northrend/zone_borean_tundra.cpp b/src/server/scripts/Northrend/zone_borean_tundra.cpp
index 6069c0d8be7..4cdfa653224 100644
--- a/src/server/scripts/Northrend/zone_borean_tundra.cpp
+++ b/src/server/scripts/Northrend/zone_borean_tundra.cpp
@@ -596,12 +596,13 @@ public:
switch (IntroPhase)
{
case 1:
- Talk(SAY_START_1);
+ if (Player* player = GetPlayerForEscort())
+ Talk(SAY_START_1, player);
IntroPhase = 2;
IntroTimer = 7500;
break;
case 2:
- Talk(SAY_END_1);
+ Talk(SAY_START_2);
IntroPhase = 3;
IntroTimer = 7500;
break;
@@ -611,12 +612,13 @@ public:
IntroTimer = 0;
break;
case 4:
- Talk(SAY_START_2);
+ Talk(SAY_END_1);
IntroPhase = 5;
IntroTimer = 8000;
break;
case 5:
- Talk(SAY_END_2);
+ if (Player* player = GetPlayerForEscort())
+ Talk(SAY_END_2, player);
IntroPhase = 6;
IntroTimer = 2500;
break;
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index d1d2ddc8a80..57346443390 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -942,6 +942,28 @@ public:
{
npc_garments_of_questsAI(Creature* creature) : npc_escortAI(creature)
{
+ switch (me->GetEntry())
+ {
+ case ENTRY_SHAYA:
+ quest = QUEST_MOON;
+ break;
+ case ENTRY_ROBERTS:
+ quest = QUEST_LIGHT_1;
+ break;
+ case ENTRY_DOLF:
+ quest = QUEST_LIGHT_2;
+ break;
+ case ENTRY_KORJA:
+ quest = QUEST_SPIRIT;
+ break;
+ case ENTRY_DG_KEL:
+ quest = QUEST_DARKNESS;
+ break;
+ default:
+ quest = 0;
+ break;
+ }
+
Reset();
}
@@ -951,6 +973,7 @@ public:
bool CanRun;
uint32 RunAwayTimer;
+ uint32 quest;
void Reset() override
{
@@ -982,93 +1005,20 @@ public:
if (Player* player = caster->ToPlayer())
{
- switch (me->GetEntry())
+ if (quest && player->GetQuestStatus(quest) == QUEST_STATUS_INCOMPLETE)
{
- case ENTRY_SHAYA:
- if (player->GetQuestStatus(QUEST_MOON) == QUEST_STATUS_INCOMPLETE)
- {
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
- {
- Talk(SAY_THANKS, caster);
- CanRun = true;
- }
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
- {
- CasterGUID = caster->GetGUID();
- me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
- IsHealed = true;
- }
- }
- break;
- case ENTRY_ROBERTS:
- if (player->GetQuestStatus(QUEST_LIGHT_1) == QUEST_STATUS_INCOMPLETE)
- {
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
- {
- Talk(SAY_THANKS, caster);
- CanRun = true;
- }
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
- {
- CasterGUID = caster->GetGUID();
- me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
- IsHealed = true;
- }
- }
- break;
- case ENTRY_DOLF:
- if (player->GetQuestStatus(QUEST_LIGHT_2) == QUEST_STATUS_INCOMPLETE)
- {
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
- {
- Talk(SAY_THANKS, caster);
- CanRun = true;
- }
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
- {
- CasterGUID = caster->GetGUID();
- me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
- IsHealed = true;
- }
- }
- break;
- case ENTRY_KORJA:
- if (player->GetQuestStatus(QUEST_SPIRIT) == QUEST_STATUS_INCOMPLETE)
- {
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
- {
- Talk(SAY_THANKS, caster);
- CanRun = true;
- }
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
- {
- CasterGUID = caster->GetGUID();
- me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
- IsHealed = true;
- }
- }
- break;
- case ENTRY_DG_KEL:
- if (player->GetQuestStatus(QUEST_DARKNESS) == QUEST_STATUS_INCOMPLETE)
- {
- if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
- {
- Talk(SAY_THANKS, caster);
- CanRun = true;
- }
- else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
- {
- CasterGUID = caster->GetGUID();
- me->SetStandState(UNIT_STAND_STATE_STAND);
- Talk(SAY_HEALED, caster);
- IsHealed = true;
- }
- }
- break;
+ if (IsHealed && !CanRun && spell->Id == SPELL_FORTITUDE_R1)
+ {
+ Talk(SAY_THANKS, caster);
+ CanRun = true;
+ }
+ else if (!IsHealed && spell->Id == SPELL_LESSER_HEAL_R2)
+ {
+ CasterGUID = caster->GetGUID();
+ me->SetStandState(UNIT_STAND_STATE_STAND);
+ Talk(SAY_HEALED, caster);
+ IsHealed = true;
+ }
}
// give quest credit, not expect any special quest objectives