mirror of
https://github.com/TrinityCore/TrinityCore.git
synced 2026-01-16 07:30:42 +01:00
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/game/Achievements/AchievementMgr.cpp src/server/game/Achievements/AchievementMgr.h src/server/game/Globals/ObjectMgr.cpp
This commit is contained in:
@@ -349,6 +349,8 @@ function(_Boost_GUESS_COMPILER_PREFIX _ret)
|
||||
else()
|
||||
set (_boost_COMPILER "-il")
|
||||
endif()
|
||||
elseif (MSVC14)
|
||||
set(_boost_COMPILER "-vc140")
|
||||
elseif (MSVC12)
|
||||
set(_boost_COMPILER "-vc120")
|
||||
elseif (MSVC11)
|
||||
|
||||
52
sql/updates/world/2014_09_19_05_world_misc.sql
Normal file
52
sql/updates/world/2014_09_19_05_world_misc.sql
Normal file
@@ -0,0 +1,52 @@
|
||||
DELETE FROM `creature` WHERE `guid` IN (101984,102039,101966,101942,101943,101913,101790,88308);
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN 102022 AND 102032;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
|
||||
(101984,29504,571,1,1,7168.308,-3616.868,830.689,3.692736,300,5,1), -- Seething Revenant
|
||||
(102022,29504,571,1,1,7185.381,-3632.053,824.247,4.338225,300,5,1), -- Seething Revenant
|
||||
(102023,29504,571,1,1,7191.07,-3520.252,826.8859,4.542768,300,5,1), -- Seething Revenant
|
||||
(102024,29504,571,1,1,7217.771,-3425.522,838.6382,5.01096,300,5,1), -- Seething Revenant
|
||||
(102025,29504,571,1,1,7221.059,-3668.075,823.829,5.133259,300,5,1), -- Seething Revenant
|
||||
(102026,29504,571,1,1,7223.214,-3625.205,823.4471,3.3342,300,5,1), -- Seething Revenant
|
||||
(102027,29504,571,1,1,7245.613,-3324.135,852.1368,0.2004583,300,5,1), -- Seething Revenant
|
||||
(102028,29504,571,1,1,7247.223,-3147.932,837.5768,3.113845,300,5,1), -- Seething Revenant
|
||||
(102029,29504,571,1,1,7250.414,-3082.812,837.5768,5.273692,300,5,1), -- Seething Revenant
|
||||
(102030,29504,571,1,1,7257.364,-3650.48,823.7267,5.320714,300,5,1), -- Seething Revenant
|
||||
(102031,29504,571,1,1,7318.657,-3108.576,837.5768,0.7864776,300,5,1), -- Seething Revenant
|
||||
(102032,29504,571,1,1,7319.729,-3256.892,843.9413,4.579113,300,5,1), -- Seething Revenant
|
||||
(102039,29504,571,1,1,7322.325,-3181.755,837.5279,3.279677,300,5,1), -- Seething Revenant
|
||||
(101966,29504,571,1,1,7384.565,-3117.917,837.5417,1.487818,300,5,1), -- Seething Revenant
|
||||
(101942,29504,571,1,1,7407.328,-3276.822,858.1526,3.880721,300,5,1), -- Seething Revenant
|
||||
(101943,29504,571,1,1,7454.707,-3204.902,837.5764,4.937684,300,5,1), -- Seething Revenant
|
||||
(101913,29504,571,1,1,7457.445,-3072.987,837.5768,1.176061,300,5,1), -- Seething Revenant
|
||||
(101790,29504,571,1,1,7483.619,-3148.763,837.5848,3.356413,300,5,1), -- Seething Revenant
|
||||
(88308,29503,571,1,1,7217.113,-3659.162,823.2127,2.024582,120,0,0); -- Fjorn
|
||||
|
||||
-- Pathing for Seething Revenant Entry: 29504
|
||||
SET @NPC := 102023;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7185.569,`position_y`=-3578.212,`position_z`=826.3776 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7185.569,-3578.212,826.3776,0,0,0,0,100,0),
|
||||
(@PATH,2,7184.791,-3556.857,827.6204,0,0,0,0,100,0),
|
||||
(@PATH,3,7191.07,-3520.252,826.8859,0,0,0,0,100,0),
|
||||
(@PATH,4,7203.232,-3480.131,833.8677,0,0,0,0,100,0),
|
||||
(@PATH,5,7191.07,-3520.252,826.8859,0,0,0,0,100,0),
|
||||
(@PATH,6,7184.791,-3556.857,827.6204,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Seething Revenant Entry: 29504
|
||||
SET @NPC := 102024;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7212.51,`position_y`=-3459.921,`position_z`=835.768 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7212.51,-3459.921,835.768,0,0,0,0,100,0),
|
||||
(@PATH,2,7219.868,-3432.39,837.9383,0,0,0,0,100,0),
|
||||
(@PATH,3,7213.401,-3411.379,840.3849,0,0,0,0,100,0),
|
||||
(@PATH,4,7206.807,-3388.99,843.8749,0,0,0,0,100,0),
|
||||
(@PATH,5,7213.369,-3411.22,840.351,0,0,0,0,100,0),
|
||||
(@PATH,6,7219.868,-3432.39,837.9383,0,0,0,0,100,0);
|
||||
@@ -0,0 +1,2 @@
|
||||
UPDATE `creature` SET `orientation` = MOD(`orientation`, 2*PI()) WHERE `guid` IN (42160, 207528);
|
||||
UPDATE `gameobject` SET `orientation` = MOD(`orientation`, 2*PI()) WHERE `guid` = 7607;
|
||||
20
sql/updates/world/2014_09_19_07_world_creature_text.sql
Normal file
20
sql/updates/world/2014_09_19_07_world_creature_text.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
DELETE FROM `trinity_string` WHERE `entry` BETWEEN 12050 AND 12072;
|
||||
DELETE FROM `creature_text` WHERE `entry`=15214 AND (`groupid`=0 OR `groupid` BETWEEN 27 AND 38);
|
||||
INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `BroadcastTextId`, `TextRange`, `comment`) VALUES
|
||||
(15214, 27, 0, 'The Battle for Lake Wintergrasp is about to begin!', 41, 0, 100, 0, 0, 0, 30960, 2, 'Invisible Stalker'),
|
||||
(15214, 28, 0, 'Let the battle begin!', 41, 0, 100, 0, 0, 0, 30961, 2, 'Invisible Stalker'),
|
||||
|
||||
(15214, 29, 0, 'The Alliance has defended Wintergrasp Fortress!', 41, 0, 100, 0, 0, 8455, 31403, 2, 'Invisible Stalker'),
|
||||
(15214, 30, 0, 'The Alliance has captured Wintergrasp Fortress!', 41, 0, 100, 0, 0, 8455, 27817, 2, 'Invisible Stalker'),
|
||||
|
||||
(15214, 31, 0, 'The Horde has defended Wintergrasp Fortress!', 41, 0, 100, 0, 0, 8454, 31405, 2, 'Invisible Stalker'),
|
||||
(15214, 32, 0, 'The Horde has captured Wintergrasp Fortress!', 41, 0, 100, 0, 0, 8454, 27816, 2, 'Invisible Stalker'),
|
||||
|
||||
(15214, 33, 0, 'The north-eastern keep tower has been damaged!', 41, 0, 100, 0, 0, 0, 31235, 2, 'Invisible Stalker'),
|
||||
(15214, 34, 0, 'The north-eastern keep tower has been destroyed!', 41, 0, 100, 0, 0, 0, 31236, 2, 'Invisible Stalker'),
|
||||
|
||||
(15214, 35, 0, 'The south-western keep tower has been damaged!', 41, 0, 100, 0, 0, 0, 31233, 2, 'Invisible Stalker'),
|
||||
(15214, 36, 0, 'The south-western keep tower has been destroyed!', 41, 0, 100, 0, 0, 0, 31238, 2, 'Invisible Stalker'),
|
||||
|
||||
(15214, 37, 0, 'You have reached Rank 1: Corporal', 42, 0, 100, 0, 0, 0, 30650, 0, 'Invisible Stalker - Player'),
|
||||
(15214, 38, 0, 'You have reached Rank 2: First Lieutenant', 42, 0, 100, 0, 0, 0, 30651, 0, 'Invisible Stalker - Player');
|
||||
147
sql/updates/world/2014_09_19_08_world_misc.sql
Normal file
147
sql/updates/world/2014_09_19_08_world_misc.sql
Normal file
@@ -0,0 +1,147 @@
|
||||
-- Fixups for Dun Neffelem
|
||||
|
||||
-- Pathing for Son of Hodir Entry: 29809
|
||||
SET @NPC := 106320;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7344.558,`position_y`=-2907.763,`position_z`=823.1275 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7344.558,-2907.763,823.1275,0,0,0,0,100,0),
|
||||
(@PATH,2,7312.182,-2896.888,823.4388,0,0,0,0,100,0),
|
||||
(@PATH,3,7272.284,-2896.83,824.0884,0,0,0,0,100,0),
|
||||
(@PATH,4,7312.182,-2896.888,823.4388,0,0,0,0,100,0),
|
||||
(@PATH,5,7344.558,-2907.763,823.1275,0,0,0,0,100,0),
|
||||
(@PATH,6,7377.579,-2916.997,823.7962,0,0,0,0,100,0),
|
||||
(@PATH,7,7406.458,-2907.756,825.6242,0,0,0,0,100,0),
|
||||
(@PATH,8,7377.579,-2916.997,823.7962,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Hodir Entry: 29809
|
||||
SET @NPC := 106332;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7368.463,`position_y`=-2842.755,`position_z`=800.5325 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7368.463,-2842.755,800.5325,0,0,0,0,100,0),
|
||||
(@PATH,2,7400.792,-2857.594,800.4119,0,0,0,0,100,0),
|
||||
(@PATH,3,7445.252,-2857.651,799.9712,0,4000,0,0,100,0),
|
||||
(@PATH,4,7400.792,-2857.594,800.4119,0,0,0,0,100,0),
|
||||
(@PATH,5,7368.463,-2842.755,800.5325,0,0,0,0,100,0),
|
||||
(@PATH,6,7333.749,-2849.251,800.5008,0,0,0,0,100,0),
|
||||
(@PATH,7,7297.994,-2845.033,792.8625,0,4000,0,0,100,0),
|
||||
(@PATH,8,7333.461,-2849.232,800.5008,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Hodir Entry: 29809
|
||||
SET @NPC := 106334;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7406.458,`position_y`=-2907.756,`position_z`=825.6242 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7406.458,-2907.756,825.6242,0,0,0,0,100,0),
|
||||
(@PATH,2,7377.579,-2916.997,823.7962,0,0,0,0,100,0),
|
||||
(@PATH,3,7344.558,-2907.763,823.1275,0,0,0,0,100,0),
|
||||
(@PATH,4,7312.182,-2896.888,823.4388,0,0,0,0,100,0),
|
||||
(@PATH,5,7272.284,-2896.83,824.0884,0,0,0,0,100,0),
|
||||
(@PATH,6,7312.182,-2896.888,823.4388,0,0,0,0,100,0),
|
||||
(@PATH,7,7344.558,-2907.763,823.1275,0,0,0,0,100,0),
|
||||
(@PATH,8,7377.579,-2916.997,823.7962,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Frostworg Entry: 29358
|
||||
SET @NPC := 112393;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7440.885,`position_y`=-2710.991,`position_z`=808.2947 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7440.885,-2710.991,808.2947,0,0,0,0,100,0),
|
||||
(@PATH,2,7416.691,-2667.639,809.0078,0,0,0,0,100,0),
|
||||
(@PATH,3,7440.885,-2710.991,808.2947,0,0,0,0,100,0),
|
||||
(@PATH,4,7457.135,-2748.122,798.2523,0,0,0,0,100,0),
|
||||
(@PATH,5,7458.822,-2784.053,787.1277,0,0,0,0,100,0),
|
||||
(@PATH,6,7457.135,-2748.122,798.2523,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Frostworg Entry: 29358
|
||||
SET @NPC := 112514;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7257.337,`position_y`=-2621.496,`position_z`=814.8495 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7257.337,-2621.496,814.8495,0,0,0,0,100,0),
|
||||
(@PATH,2,7306.544,-2622.633,814.8911,0,0,0,0,100,0),
|
||||
(@PATH,3,7353.797,-2608.551,814.8893,0,0,0,0,100,0),
|
||||
(@PATH,4,7306.544,-2622.633,814.8911,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Frostworg Entry: 29358
|
||||
SET @NPC := 112392;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7327.009,`position_y`=-2631.48,`position_z`=747.7151 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7327.009,-2631.48,747.7151,0,0,0,0,100,0),
|
||||
(@PATH,2,7346.908,-2653.571,747.9738,0,0,0,0,100,0),
|
||||
(@PATH,3,7368.78,-2655.305,748.0898,0,0,0,0,100,0),
|
||||
(@PATH,4,7368.78,-2655.305,748.0898,4.171337,20000,0,0,100,0),
|
||||
(@PATH,5,7328.656,-2648.171,747.0898,0,0,0,0,100,0),
|
||||
(@PATH,6,7317.717,-2612.781,747.0901,0,0,0,0,100,0),
|
||||
(@PATH,7,7341.498,-2597.444,749.4114,0,0,0,0,100,0),
|
||||
(@PATH,8,7341.498,-2597.444,749.4114,3.246312,20000,0,0,100,0);
|
||||
|
||||
-- Pathing for Frostworg Entry: 29358
|
||||
SET @NPC := 112515;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7253.167,`position_y`=-2730.059,`position_z`=747.0898 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7253.167,-2730.059,747.0898,0,0,0,0,100,0),
|
||||
(@PATH,2,7235.487,-2711.358,748.4982,0,0,0,0,100,0),
|
||||
(@PATH,3,7202.864,-2711.527,762.0225,0,0,0,0,100,0),
|
||||
(@PATH,4,7177.577,-2716.251,773.6584,0,0,0,0,100,0),
|
||||
(@PATH,5,7170.178,-2744.835,776.9741,0,0,0,0,100,0),
|
||||
(@PATH,6,7200.037,-2774.302,776.9871,0,0,0,0,100,0),
|
||||
(@PATH,7,7232.467,-2806.691,777.7,0,0,0,0,100,0),
|
||||
(@PATH,8,7274.858,-2803.938,776.7856,0,0,0,0,100,0),
|
||||
(@PATH,9,7296.991,-2780.158,776.1025,0,0,0,0,100,0),
|
||||
(@PATH,10,7298.799,-2748.659,775.0818,0,0,0,0,100,0),
|
||||
(@PATH,11,7304.38,-2728.39,746.965,0,0,0,0,100,0),
|
||||
(@PATH,12,7264.486,-2745.654,748.08,0,0,0,0,100,0),
|
||||
(@PATH,13,7261.873,-2751.083,748.8501,0,0,0,0,100,0),
|
||||
(@PATH,14,7261.873,-2751.083,748.8501,1.570796,15000,0,0,100,0);
|
||||
|
||||
-- Captive Proto Drake Beam Bunny SAI
|
||||
SET @ENTRY := 29805;
|
||||
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,0,0,0,0,11,55244,0,0,0,0,0,1,0,0,0,0,0,0,0,"Captive Proto Drake Beam Bunny - OCC - Cast 'Proto Drake Chain Channel'");
|
||||
|
||||
-- Add spell target condition for Proto Drake Chain Channel
|
||||
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (55244);
|
||||
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
|
||||
(13, 1, 55244, 0, 1, 31, 3, 30442, 0, 0, '', 'Proto Drake Chain Channel targets Phase 1 Generic Bunny');
|
||||
|
||||
DELETE FROM `creature` WHERE `id`=29805;
|
||||
DELETE FROM `creature` WHERE `guid` IN (97557,97558,97560,97561,97562,97563,97564);
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
|
||||
(97557,29708,571,1,1,7152.347,-2669.387,849.6174,5.760307,120,0,0), -- Captive Proto-Drake
|
||||
(97558,29708,571,1,1,7227.964,-2659.802,866.7960,2.988974,120,0,0), -- Captive Proto-Drake
|
||||
(97560,29708,571,1,1,7242.648,-2660.197,899.8528,5.542587,120,0,0), -- Captive Proto-Drake
|
||||
(97561,29708,571,1,1,7277.569,-2735.515,872.2152,5.635166,120,0,0), -- Captive Proto-Drake
|
||||
(97562,29708,571,1,1,7339.314,-2827.775,886.0789,2.190141,120,0,0), -- Captive Proto-Drake
|
||||
(97563,29708,571,1,1,7353.549,-2895.788,896.9881,1.938608,120,0,0), -- Captive Proto-Drake
|
||||
(97564,29708,571,1,1,7388.962,-2785.868,869.0148,3.480815,120,0,0); -- Captive Proto-Drake
|
||||
|
||||
DELETE FROM `vehicle_template_accessory` WHERE `entry`=29708;
|
||||
INSERT INTO `vehicle_template_accessory` (`entry`,`accessory_entry`,`seat_id`,`minion`,`description`,`summontype`,`summontimer`) VALUES
|
||||
(29708,29805,0,0, 'Captive Proto-Drake',8,0);
|
||||
8
sql/updates/world/2014_09_19_09_world_misc.sql
Normal file
8
sql/updates/world/2014_09_19_09_world_misc.sql
Normal file
@@ -0,0 +1,8 @@
|
||||
DELETE FROM `creature_addon` WHERE `bytes1`=67108864;
|
||||
DELETE FROM `creature_template_addon` WHERE `entry` IN (29219,29185);
|
||||
INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`auras`) VALUES
|
||||
(29206,67108864,1, '53624'),(29219,67108864,1, ''),(29185,67108864,1, '53624');
|
||||
UPDATE `creature_template` SET `InhabitType`=4 WHERE entry IN (29708,29805,30442);
|
||||
UPDATE `creature` SET `spawndist`=0, `MovementType`=0 WHERE `id` IN (29805,30442);
|
||||
UPDATE `creature` SET `spawndist`=0, `MovementType`=0 WHERE `guid` IN (97558,97560,97562,97562,97563,97564);
|
||||
UPDATE `creature_addon` SET `bytes1`=50331648 WHERE guid IN (SELECT guid FROM creature WHERE id=29625);
|
||||
38
sql/updates/world/2014_09_19_10_world_misc.sql
Normal file
38
sql/updates/world/2014_09_19_10_world_misc.sql
Normal file
@@ -0,0 +1,38 @@
|
||||
-- Pathing for Son of Hodir Entry: 29809
|
||||
SET @NPC := 106332;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7333.749,`position_y`=-2849.251,`position_z`=800.5008 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7333.749,-2849.251,800.5008,0,0,0,0,100,0),
|
||||
(@PATH,2,7297.994,-2845.033,792.8625,0,0,0,0,100,0),
|
||||
(@PATH,3,7333.748,-2849.252,800.5008,0,0,0,0,100,0),
|
||||
(@PATH,4,7368.463,-2842.755,800.5325,0,0,0,0,100,0),
|
||||
(@PATH,5,7400.792,-2857.594,800.4119,0,0,0,0,100,0),
|
||||
(@PATH,6,7445.252,-2857.651,799.9712,0,0,0,0,100,0),
|
||||
(@PATH,7,7400.792,-2857.594,800.4119,0,0,0,0,100,0),
|
||||
(@PATH,8,7368.463,-2842.755,800.5325,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Hodir Entry: 29809
|
||||
SET @NPC := 106501;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7360.89,`position_y`=-2783.458,`position_z`=770.2411 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7360.89,-2783.458,770.2411,0,0,0,0,100,0),
|
||||
(@PATH,2,7347.097,-2770.412,767.152,0,0,0,0,100,0),
|
||||
(@PATH,3,7347.097,-2770.412,767.152,1.553343,15000,0,0,100,0),
|
||||
(@PATH,4,7395.059,-2778.334,770.9921,0,0,0,0,100,0),
|
||||
(@PATH,5,7397.093,-2777.097,770.9921,0,0,0,0,100,0),
|
||||
(@PATH,6,7397.093,-2777.097,770.9921,3.176499,20000,0,0,100,0);
|
||||
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=0,`position_x`=7206.456,`position_y`=-2834.342,`position_z`=822.8013,`orientation`=1.553343 WHERE `guid`=106336;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=106336;
|
||||
DELETE FROM `waypoint_data` WHERE `id`=1063360;
|
||||
UPDATE `creature` SET `modelid`=0,`spawndist`=0,`MovementType`=0,`curhealth`=1 WHERE `id`=29558;
|
||||
DELETE FROM `creature` WHERE `guid`=97993;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=97993;
|
||||
20
sql/updates/world/2014_09_19_11_world_misc.sql
Normal file
20
sql/updates/world/2014_09_19_11_world_misc.sql
Normal file
@@ -0,0 +1,20 @@
|
||||
-- Pathing for Creteus Entry: 30052
|
||||
SET @NPC := 104811;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7364.138,`position_y`=-963.9908,`position_z`=906.1143 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7364.138,-963.9908,906.1143,0,0,0,0,100,0),
|
||||
(@PATH,2,7354.389,-990.3735,907.1021,0,0,0,0,100,0),
|
||||
(@PATH,3,7344.142,-1026.269,907.1985,0,0,0,0,100,0),
|
||||
(@PATH,4,7346.274,-1065.193,908.5342,0,0,0,0,100,0),
|
||||
(@PATH,5,7344.142,-1026.269,907.1985,0,0,0,0,100,0),
|
||||
(@PATH,6,7354.389,-990.3735,907.1021,0,0,0,0,100,0),
|
||||
(@PATH,7,7364.138,-963.9908,906.1143,0,0,0,0,100,0),
|
||||
(@PATH,8,7374.346,-935.5877,906.896,0,0,0,0,100,0),
|
||||
(@PATH,9,7393.324,-923.742,907.4128,0,0,0,0,100,0),
|
||||
(@PATH,10,7420.953,-909.6816,908.7245,0,0,0,0,100,0),
|
||||
(@PATH,11,7393.313,-923.7285,907.2764,0,0,0,0,100,0),
|
||||
(@PATH,12,7374.346,-935.5877,906.896,0,0,0,0,100,0);
|
||||
50
sql/updates/world/2014_09_19_12_world_misc.sql
Normal file
50
sql/updates/world/2014_09_19_12_world_misc.sql
Normal file
@@ -0,0 +1,50 @@
|
||||
-- Pathing for Son of Corok Entry: 19824
|
||||
SET @NPC := 70934;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-4400.59,`position_y`=1298.177,`position_z`=84.52772 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,-4400.59,1298.177,84.52772,0,0,0,0,100,0),
|
||||
(@PATH,2,-4420.625,1286.901,77.03065,0,0,0,0,100,0),
|
||||
(@PATH,3,-4433.011,1273.885,71.53358,0,0,0,0,100,0),
|
||||
(@PATH,4,-4443.392,1262.241,66.49532,0,0,0,0,100,0),
|
||||
(@PATH,5,-4461.213,1245.472,58.49483,0,0,0,0,100,0),
|
||||
(@PATH,6,-4443.392,1262.241,66.49532,0,0,0,0,100,0),
|
||||
(@PATH,7,-4433.011,1273.885,71.53358,0,0,0,0,100,0),
|
||||
(@PATH,8,-4420.625,1286.901,77.03065,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Corok Entry: 19824
|
||||
SET @NPC := 70936;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-4462.013,`position_y`=1364.896,`position_z`=131.461 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,-4462.013,1364.896,131.461,0,0,0,0,100,0),
|
||||
(@PATH,2,-4423.92,1374.436,132.7069,0,0,0,0,100,0),
|
||||
(@PATH,3,-4406.461,1375.059,136.9795,0,0,0,0,100,0),
|
||||
(@PATH,4,-4380.588,1383.079,140.5566,0,0,0,0,100,0),
|
||||
(@PATH,5,-4354.617,1389.822,141.8532,0,0,0,0,100,0),
|
||||
(@PATH,6,-4380.588,1383.079,140.5566,0,0,0,0,100,0),
|
||||
(@PATH,7,-4406.461,1375.059,136.9795,0,0,0,0,100,0),
|
||||
(@PATH,8,-4423.92,1374.436,132.7069,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Corok Entry: 19824
|
||||
SET @NPC := 70939;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-4329.11,`position_y`=1386.571,`position_z`=143.7565 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,-4329.11,1386.571,143.7565,0,0,0,0,100,0),
|
||||
(@PATH,2,-4303.821,1385.086,143.7775,0,0,0,0,100,0),
|
||||
(@PATH,3,-4281.203,1392.313,139.9943,0,0,0,0,100,0),
|
||||
(@PATH,4,-4257.452,1400.368,135.1779,0,0,0,0,100,0),
|
||||
(@PATH,5,-4241.35,1408.419,131.0781,0,0,0,0,100,0),
|
||||
(@PATH,6,-4257.452,1400.368,135.1779,0,0,0,0,100,0),
|
||||
(@PATH,7,-4281.203,1392.313,139.9943,0,0,0,0,100,0),
|
||||
(@PATH,8,-4303.821,1385.086,143.7775,0,0,0,0,100,0);
|
||||
15
sql/updates/world/2014_09_19_13_world_misc.sql
Normal file
15
sql/updates/world/2014_09_19_13_world_misc.sql
Normal file
@@ -0,0 +1,15 @@
|
||||
-- Pathing for Fjorn Entry: 29503
|
||||
SET @NPC := 88308;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=7174.861,`position_y`=-3647.9,`position_z`=828.4227 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,7174.861,-3647.9,828.4227,0,0,0,0,100,0),
|
||||
(@PATH,2,7190.947,-3657.829,823.7313,0,0,0,0,100,0),
|
||||
(@PATH,3,7203.092,-3661.859,823.8141,0,0,0,0,100,0),
|
||||
(@PATH,4,7217.113,-3659.162,823.2127,2.024582,24000,0,0,100,0),
|
||||
(@PATH,5,7178.155,-3646.861,826.0764,0,0,0,0,100,0),
|
||||
(@PATH,6,7166.444,-3625.109,830.9739,0,0,0,0,100,0),
|
||||
(@PATH,7,7166.76,-3600.556,830.7375,0,35000,0,0,100,0);
|
||||
2
sql/updates/world/2014_09_20_00_world_creature.sql
Normal file
2
sql/updates/world/2014_09_20_00_world_creature.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- Stormpeak Wyrm proper respawntime
|
||||
UPDATE `creature` SET `spawntimesecs`=300 WHERE `id`=29753;
|
||||
115
sql/updates/world/2014_09_20_01_world_creature.sql
Normal file
115
sql/updates/world/2014_09_20_01_world_creature.sql
Normal file
@@ -0,0 +1,115 @@
|
||||
-- Some Shadowmoon missing spawns
|
||||
SET @CGUID := 213235;
|
||||
DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+70;
|
||||
INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES
|
||||
(@CGUID+0,22016,530,1,1,-4096.191,1317.842,63.59529,3.054326,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+1,22016,530,1,1,-4096.357,1322.749,65.64674,2.932153,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+2,22016,530,1,1,-4099.992,1353.743,73.72105,3.293946,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+3,22016,530,1,1,-4100.049,1373.944,79.28508,2.099715,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+4,22016,530,1,1,-4100.065,1377.723,80.54171,2.111848,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+5,22016,530,1,1,-4100.112,1350.39,72.31179,3.054326,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+6,22016,530,1,1,-4108.455,1288.618,54.21447,1.989675,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+7,22016,530,1,1,-4111.45,1286.984,54.4025,2.268928,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+8,22016,530,1,1,-4120.15,1336.899,68.11907,0,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+9,22016,530,1,1,-4120.369,1333.758,66.54772,0.01745329,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+10,22016,530,1,1,-4121.998,1381.514,81.2709,0.715585,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+11,22016,530,1,1,-4124.98,1317.968,58.9916,5.51524,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+12,22016,530,1,1,-4125.009,1385.029,82.06972,0.6806784,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+13,22016,530,1,1,-4127.137,1286,55.26802,1.815142,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+14,22016,530,1,1,-4127.499,1315.508,57.7211,5.707227,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+15,22016,530,1,1,-4131.382,1285.947,55.53052,1.972222,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+16,22016,530,1,1,-4149.733,1310.271,56.65502,4.729842,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+17,22016,530,1,1,-4153.588,1311.411,56.16999,4.625123,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+18,22016,530,1,1,-4173.101,1288.451,57.65374,1.500983,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+19,22016,530,1,1,-4173.19,1316.726,57.28808,4.625123,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+20,22016,530,1,1,-4176.76,1317.902,56.13078,4.665615,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+21,22016,530,1,1,-4177.251,1289.748,58.80741,1.466077,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+22,22016,530,1,1,-4191.07,1296.055,57.67142,1.605703,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+23,22016,530,1,1,-4194.589,1296.483,57.23888,1.553343,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+24,22016,530,1,1,-4203.806,1313.086,56.38221,4.729842,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+25,22016,530,1,1,-4206.372,1313.213,56.97198,4.677482,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+26,22016,530,1,1,-4212.834,1296.573,57.13382,1.570796,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+27,22016,530,1,1,-4216.644,1297.057,56.21738,1.570796,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+28,22016,530,1,1,-4225.272,1314.485,56.76705,4.642576,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+29,22016,530,1,1,-4229.29,1314.141,56.20462,4.834562,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+30,22016,530,1,1,-4234.124,1296.488,57.25279,1.623156,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+31,22016,530,1,1,-4237.948,1296.56,56.6738,1.518436,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+32,22016,530,1,1,-4246.702,1319.209,55.12754,4.729842,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+33,22016,530,1,1,-4250.584,1318.969,54.34119,4.694936,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+34,22016,530,1,1,-4254.897,1297.109,54.1566,1.623156,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+35,22016,530,1,1,-4259.223,1297.016,53.46115,1.570796,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+36,22016,530,1,1,-4296.026,1328.683,65.42085,4.904375,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+37,22016,530,1,1,-4299.64,1328.812,66.22527,4.747295,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+38,22016,530,1,1,-4313.26,1332.713,75.18435,4.869469,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+39,22016,530,1,1,-4316.293,1330.928,75.44308,4.799655,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+40,22016,530,1,1,-4321.846,1306.318,77.87005,1.43117,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+41,22016,530,1,1,-4325.973,1306.922,79.31133,1.553343,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+42,22016,530,1,1,-4333.595,1331.259,81.49699,4.747295,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+43,22016,530,1,1,-4337.558,1331.472,82.28129,4.747295,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+44,22016,530,1,1,-4341.43,1307.242,81.52878,1.605703,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+45,22016,530,1,1,-4345.604,1307.461,81.77303,1.466077,300,0,0), -- Eclipsion Soldier
|
||||
(@CGUID+46,22017,530,1,1,-4110.106,1287.867,54.45539,2.391101,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+47,22017,530,1,1,-4248.659,1319.342,54.67619,4.39823,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+48,22017,530,1,1,-4278.104,1312.277,56.58344,2.740167,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+49,22017,530,1,1,-4157.983,1285.352,57.4682,0,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+50,22017,530,1,1,-4204.949,1314.804,57.78447,4.677482,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+51,22017,530,1,1,-4175.284,1288.93,58.04388,1.570796,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+52,22017,530,1,1,-4146.76,1283.892,59.42959,2.635447,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+53,22017,530,1,1,-4287.814,1313.235,62.81659,6.213372,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+54,22017,530,1,1,-4433.133,1253.58,71.40871,2.670354,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+55,22017,530,1,1,-4323.755,1306.162,78.73392,1.605703,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+56,22017,530,1,1,-4411.285,1278.528,79.11395,2.495821,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+57,22017,530,1,1,-4430.338,1293.527,79.38573,5.51524,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+58,22017,530,1,1,-4343.598,1307.349,81.73926,1.48353,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+59,22017,530,1,1,-4335.564,1331.208,81.76533,4.537856,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+60,22017,530,1,1,-4393.921,1293.493,85.24201,2.391101,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+61,22017,530,1,1,-4372.298,1299.017,86.82649,1.710423,300,0,0), -- Eclipsion Spellbinder
|
||||
(@CGUID+62,22018,530,1,1,-4279.213,1299.724,48.06502,3.121056,300,0,0), -- Eclipsion Cavalier
|
||||
(@CGUID+63,22018,530,1,1,-4223.789,1311.041,56.19987,3.10787,300,0,0), -- Eclipsion Cavalier
|
||||
(@CGUID+64,22018,530,1,1,-4102.838,1353.306,72.31637,0.1523528,300,0,0), -- Eclipsion Cavalier
|
||||
(@CGUID+65,22018,530,1,1,-4117.879,1380.962,80.29784,5.423772,300,0,0), -- Eclipsion Cavalier
|
||||
(@CGUID+66,22018,530,1,1,-4393.687,1296.77,85.9353,5.331202,300,0,0), -- Eclipsion Cavalier
|
||||
(@CGUID+67,19824,530,1,1,-4153.195,1279.679,57.75654,1.27409,300,0,0), -- Son of Corok
|
||||
(@CGUID+68,19824,530,1,1,-4204.253,1308.621,56.27257,3.128989,300,0,0), -- Son of Corok
|
||||
(@CGUID+69,19824,530,1,1,-4281.281,1317.739,58.53769,4.485496,300,0,0), -- Son of Corok
|
||||
(@CGUID+70,19824,530,1,1,-4333.929,1322.016,77.64864,3.117183,300,0,0); -- Son of Corok
|
||||
|
||||
-- Pathing for Son of Corok Entry: 19824
|
||||
SET @NPC := @CGUID+68;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-4231.903,`position_y`=1307.641,`position_z`=55.94048 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,-4231.903,1307.641,55.94048,0,0,0,0,100,0),
|
||||
(@PATH,2,-4258.673,1308.574,51.75086,0,0,0,0,100,0),
|
||||
(@PATH,3,-4279.65,1299.844,48.04818,0,0,0,0,100,0),
|
||||
(@PATH,4,-4258.673,1308.574,51.75086,0,0,0,0,100,0),
|
||||
(@PATH,5,-4231.903,1307.641,55.94048,0,0,0,0,100,0),
|
||||
(@PATH,6,-4210.623,1308.702,56.31548,0,0,0,0,100,0),
|
||||
(@PATH,7,-4185.151,1308.381,56.14388,0,0,0,0,100,0),
|
||||
(@PATH,8,-4154.984,1302.706,55.8171,0,0,0,0,100,0),
|
||||
(@PATH,9,-4128.466,1303.851,53.66854,0,0,0,0,100,0),
|
||||
(@PATH,10,-4115.384,1315.77,56.70418,0,0,0,0,100,0),
|
||||
(@PATH,11,-4128.466,1303.851,53.66854,0,0,0,0,100,0),
|
||||
(@PATH,12,-4154.984,1302.706,55.8171,0,0,0,0,100,0),
|
||||
(@PATH,13,-4185.151,1308.381,56.14388,0,0,0,0,100,0),
|
||||
(@PATH,14,-4210.623,1308.702,56.31548,0,0,0,0,100,0);
|
||||
|
||||
-- Pathing for Son of Corok Entry: 19824
|
||||
SET @NPC := @CGUID+70;
|
||||
SET @PATH := @NPC * 10;
|
||||
UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-4391.421,`position_y`=1317.775,`position_z`=86.86306 WHERE `guid`=@NPC;
|
||||
DELETE FROM `creature_addon` WHERE `guid`=@NPC;
|
||||
INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
|
||||
DELETE FROM `waypoint_data` WHERE `id`=@PATH;
|
||||
INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_type`,`action`,`action_chance`,`wpguid`) VALUES
|
||||
(@PATH,1,-4391.421,1317.775,86.86306,0,0,0,0,100,0),
|
||||
(@PATH,2,-4368.556,1319.71,84.21169,0,0,0,0,100,0),
|
||||
(@PATH,3,-4351.29,1322.436,82.0905,0,0,0,0,100,0),
|
||||
(@PATH,4,-4329.943,1321.933,77.08961,0,0,0,0,100,0),
|
||||
(@PATH,5,-4293.944,1321.216,63.2162,0,0,0,0,100,0),
|
||||
(@PATH,6,-4329.943,1321.919,77.08363,0,0,0,0,100,0),
|
||||
(@PATH,7,-4351.29,1322.436,82.0905,0,0,0,0,100,0),
|
||||
(@PATH,8,-4368.556,1319.71,84.21169,0,0,0,0,100,0);
|
||||
215
sql/updates/world/2014_09_20_02_world_gameobject.sql
Normal file
215
sql/updates/world/2014_09_20_02_world_gameobject.sql
Normal file
@@ -0,0 +1,215 @@
|
||||
-- Properly spawn Deathforged Infernals in Shadowmoon Vally
|
||||
SET @OGUID := 164235;
|
||||
DELETE FROM gameobject WHERE id=184979;
|
||||
DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+209;
|
||||
INSERT INTO `gameobject` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `rotation0`, `rotation1`, `rotation2`, `rotation3`, `spawntimesecs`, `animprogress`, `state`) VALUES
|
||||
(@OGUID+0,184979,530,1,1,-2750.138,2138.423,116.0525,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+1,184979,530,1,1,-2749.669,2117.245,116.0938,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+2,184979,530,1,1,-2715.974,2106.958,116.113,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+3,184979,530,1,1,-2749.15,2061.387,116.113,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+4,184979,530,1,1,-2733.552,2083.086,116.1207,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+5,184979,530,1,1,-2749.911,2083.202,116.1207,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+6,184979,530,1,1,-2766.644,2082.366,116.1255,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+7,184979,530,1,1,-2766.507,2093.344,116.1266,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+8,184979,530,1,1,-2749.759,2072.118,116.1846,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+9,184979,530,1,1,-2733.448,2049.271,116.3267,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+10,184979,530,1,1,-2733.294,2059.86,116.51,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+11,184979,530,1,1,-2749.49,2039.397,116.7552,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+12,184979,530,1,1,-2683.527,2093.502,116.7869,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+13,184979,530,1,1,-2750.224,2104.642,117.114,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+14,184979,530,1,1,-2700.19,2118.861,117.1919,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+15,184979,530,1,1,-2683.939,2108.297,117.2251,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+16,184979,530,1,1,-2683.984,2117.688,117.2251,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+17,184979,530,1,1,-2684.271,2082.263,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+18,184979,530,1,1,-2684.318,2060.447,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+19,184979,530,1,1,-2684.381,2071.899,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+20,184979,530,1,1,-2684.976,2050.075,117.2252,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+21,184979,530,1,1,-2699.94,2049.929,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+22,184979,530,1,1,-2699.966,2071.411,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+23,184979,530,1,1,-2699.976,2130.446,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+24,184979,530,1,1,-2699.979,2094.061,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+25,184979,530,1,1,-2699.991,2082.913,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+26,184979,530,1,1,-2700.016,2060.659,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+27,184979,530,1,1,-2700.138,2108.184,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+28,184979,530,1,1,-2700.177,2038.576,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+29,184979,530,1,1,-2716.219,2139.359,117.2252,1.431168,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+30,184979,530,1,1,-2716.628,2129.812,117.2252,1.483528,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+31,184979,530,1,1,-2717.525,2039.224,117.2252,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+32,184979,530,1,1,-2717.543,2094.533,117.2252,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+33,184979,530,1,1,-2717.976,2060.81,117.2252,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+34,184979,530,1,1,-2718.234,2051.139,117.2252,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+35,184979,530,1,1,-2718.268,2083.307,117.2252,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+36,184979,530,1,1,-2718.269,2072.285,117.2252,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+37,184979,530,1,1,-2733.234,2104.237,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+38,184979,530,1,1,-2733.318,2038.487,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+39,184979,530,1,1,-2733.372,2128.404,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+40,184979,530,1,1,-2733.44,2116.1,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+41,184979,530,1,1,-2733.506,2094.508,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+42,184979,530,1,1,-2733.573,2072.265,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+43,184979,530,1,1,-2749.855,2128.431,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+44,184979,530,1,1,-2750.015,2049.435,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+45,184979,530,1,1,-2750.417,2094.657,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+46,184979,530,1,1,-2766.46,2116.606,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+47,184979,530,1,1,-2766.6,2104.408,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+48,184979,530,1,1,-2766.733,2129.118,117.2252,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+49,184979,530,1,1,-2766.605,2137.388,117.2259,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+50,184979,530,1,1,-2717.173,2117.924,117.2352,1.500983,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+51,184979,530,1,1,-2733.285,2139.106,117.2383,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+52,184979,530,1,1,-2684.392,2039.612,117.4476,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+53,184979,530,1,1,-2617.667,2650.463,74.03696,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+54,184979,530,1,1,-2618.448,2539.722,74.08352,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+55,184979,530,1,1,-2617.122,2607.377,74.09629,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+56,184979,530,1,1,-2633.116,2650.877,74.1957,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+57,184979,530,1,1,-2632.632,2618.964,74.19731,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+58,184979,530,1,1,-2649.333,2563.91,74.19743,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+59,184979,530,1,1,-2649.577,2517.048,74.19785,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+60,184979,530,1,1,-2680.234,2626.323,74.2042,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+61,184979,530,1,1,-2633.568,2515.614,74.20628,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+62,184979,530,1,1,-2666.665,2528.697,74.22224,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+63,184979,530,1,1,-2617.554,2640.466,74.24556,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+64,184979,530,1,1,-2632.863,2586.7,74.43395,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+65,184979,530,1,1,-2680.595,2615.58,74.57539,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+66,184979,530,1,1,-2618.024,2564.751,74.73867,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+67,184979,530,1,1,-2617.634,2576.117,74.76399,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+68,184979,530,1,1,-2666.463,2564.755,74.85522,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+69,184979,530,1,1,-2666.361,2576.1,74.92399,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+70,184979,530,1,1,-2649.286,2650.263,74.92444,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+71,184979,530,1,1,-2617.43,2629.57,74.92467,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+72,184979,530,1,1,-2617.843,2618.619,74.92467,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+73,184979,530,1,1,-2632.496,2630.536,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+74,184979,530,1,1,-2632.558,2640.987,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+75,184979,530,1,1,-2632.701,2609.445,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+76,184979,530,1,1,-2649.156,2596.553,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+77,184979,530,1,1,-2649.156,2629.343,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+78,184979,530,1,1,-2649.284,2639.933,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+79,184979,530,1,1,-2666.259,2637.499,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+80,184979,530,1,1,-2666.322,2627.339,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+81,184979,530,1,1,-2666.434,2605.873,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+82,184979,530,1,1,-2666.556,2616.489,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+83,184979,530,1,1,-2666.591,2596.142,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+84,184979,530,1,1,-2666.615,2650.022,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+85,184979,530,1,1,-2680.63,2637.091,74.92467,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+86,184979,530,1,1,-2681.59,2648.71,74.92467,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+87,184979,530,1,1,-2648.775,2586.718,74.92469,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+88,184979,530,1,1,-2666.687,2586.434,74.92469,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+89,184979,530,1,1,-2649.26,2618.303,74.92471,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+90,184979,530,1,1,-2649.322,2607.469,74.92471,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+91,184979,530,1,1,-2679.733,2575.556,74.92471,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+92,184979,530,1,1,-2617.009,2587.361,74.92472,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+93,184979,530,1,1,-2617.221,2598.454,74.92472,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+94,184979,530,1,1,-2618.208,2553.414,74.92472,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+95,184979,530,1,1,-2632.542,2598.43,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+96,184979,530,1,1,-2632.583,2550.556,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+97,184979,530,1,1,-2632.777,2564.511,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+98,184979,530,1,1,-2633.191,2575.303,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+99,184979,530,1,1,-2633.512,2538.872,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+100,184979,530,1,1,-2633.667,2527.575,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+101,184979,530,1,1,-2648.8,2528.096,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+102,184979,530,1,1,-2648.909,2539.104,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+103,184979,530,1,1,-2648.909,2575.672,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+104,184979,530,1,1,-2666.377,2539.364,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+105,184979,530,1,1,-2666.682,2551.397,74.92472,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+106,184979,530,1,1,-2680.09,2564.962,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+107,184979,530,1,1,-2680.358,2604.458,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+108,184979,530,1,1,-2680.419,2585.705,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+109,184979,530,1,1,-2680.421,2595.477,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+110,184979,530,1,1,-2680.701,2552.48,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+111,184979,530,1,1,-2680.757,2540.063,74.92472,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+112,184979,530,1,1,-2648.444,2550.63,74.92473,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+113,184979,530,1,1,-2780.7,2339.663,92.09248,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+114,184979,530,1,1,-2752.438,2349.842,92.11861,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+115,184979,530,1,1,-2733.243,2428.624,92.12263,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+116,184979,530,1,1,-2750.85,2406.097,92.13152,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+117,184979,530,1,1,-2781.745,2269.927,92.13453,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+118,184979,530,1,1,-2752.938,2340.571,92.1429,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+119,184979,530,1,1,-2781.078,2294.76,92.15851,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+120,184979,530,1,1,-2779.942,2316.583,92.1619,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+121,184979,530,1,1,-2716.438,2459.642,92.16201,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+122,184979,530,1,1,-2717.291,2449.497,92.16201,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+123,184979,530,1,1,-2749.594,2480.541,92.16201,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+124,184979,530,1,1,-2780.858,2439.462,92.16201,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+125,184979,530,1,1,-2751.313,2225.442,92.16203,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+126,184979,530,1,1,-2781.297,2281.584,92.16223,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+127,184979,530,1,1,-2751.321,2381.829,92.16233,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+128,184979,530,1,1,-2752.311,2284.226,92.18712,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+129,184979,530,1,1,-2780.94,2450.352,92.18733,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+130,184979,530,1,1,-2751.027,2236.649,92.21333,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+131,184979,530,1,1,-2799.737,2269.553,92.27402,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+132,184979,530,1,1,-2749.566,2490.816,92.2877,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+133,184979,530,1,1,-2749.652,2429.791,92.31191,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+134,184979,530,1,1,-2750.8,2416.693,92.31774,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+135,184979,530,1,1,-2781.55,2238.925,92.37675,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+136,184979,530,1,1,-2780.719,2305.973,92.38305,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+137,184979,530,1,1,-2752.458,2294.563,92.40945,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+138,184979,530,1,1,-2781.734,2460.782,92.41844,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+139,184979,530,1,1,-2752.097,2361.417,92.42614,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+140,184979,530,1,1,-2780.488,2406.024,92.4274,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+141,184979,530,1,1,-2781.476,2371.656,92.51871,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+142,184979,530,1,1,-2780.357,2416.676,92.55163,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+143,184979,530,1,1,-2751.701,2249.772,92.60823,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+144,184979,530,1,1,-2780.729,2327.836,92.6458,1.518436,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+145,184979,530,1,1,-2700.627,2492.339,92.65955,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+146,184979,530,1,1,-2780.827,2383.641,92.68105,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+147,184979,530,1,1,-2781.409,2470.233,92.81382,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+148,184979,530,1,1,-2766.72,2418.334,92.81592,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+149,184979,530,1,1,-2752.44,2316.313,92.89988,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+150,184979,530,1,1,-2781.791,2350.851,92.99918,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+151,184979,530,1,1,-2750.497,2394.5,93.02927,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+152,184979,530,1,1,-2780.358,2428.295,93.10728,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+153,184979,530,1,1,-2752.122,2329.221,93.19151,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+154,184979,530,1,1,-2782.3,2226.374,93.2033,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+155,184979,530,1,1,-2766.112,2479.956,93.2076,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+156,184979,530,1,1,-2716.673,2470.665,93.27448,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+157,184979,530,1,1,-2752.608,2305.437,93.28053,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+158,184979,530,1,1,-2766.398,2215.281,93.28061,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+159,184979,530,1,1,-2766.63,2238.048,93.28061,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+160,184979,530,1,1,-2782.795,2215.191,93.28061,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+161,184979,530,1,1,-2700.507,2468.615,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+162,184979,530,1,1,-2700.905,2479.709,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+163,184979,530,1,1,-2716.396,2503.082,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+164,184979,530,1,1,-2716.691,2481.191,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+165,184979,530,1,1,-2716.715,2492.909,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+166,184979,530,1,1,-2732.592,2502.451,93.28062,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+167,184979,530,1,1,-2733.102,2480.978,93.28062,1.605702,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+168,184979,530,1,1,-2733.178,2461.359,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+169,184979,530,1,1,-2733.323,2493.068,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+170,184979,530,1,1,-2733.358,2440.862,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+171,184979,530,1,1,-2733.41,2451.495,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+172,184979,530,1,1,-2733.462,2470.962,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+173,184979,530,1,1,-2749.432,2441.547,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+174,184979,530,1,1,-2749.65,2461.924,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+175,184979,530,1,1,-2749.894,2452.252,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+176,184979,530,1,1,-2750.345,2470.913,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+177,184979,530,1,1,-2751.096,2371.383,93.28062,1.53589,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+178,184979,530,1,1,-2751.117,2213.445,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+179,184979,530,1,1,-2765.999,2260.545,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+180,184979,530,1,1,-2766.004,2469.919,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+181,184979,530,1,1,-2766.192,2461.511,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+182,184979,530,1,1,-2766.463,2451.747,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+183,184979,530,1,1,-2766.521,2328.732,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+184,184979,530,1,1,-2766.553,2316.41,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+185,184979,530,1,1,-2766.56,2440.586,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+186,184979,530,1,1,-2766.596,2429.195,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+187,184979,530,1,1,-2766.61,2372.102,93.28062,1.605702,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+188,184979,530,1,1,-2766.624,2395.763,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+189,184979,530,1,1,-2766.649,2226.786,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+190,184979,530,1,1,-2766.68,2270.358,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+191,184979,530,1,1,-2766.685,2362.643,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+192,184979,530,1,1,-2766.691,2305.764,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+193,184979,530,1,1,-2766.718,2341.017,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+194,184979,530,1,1,-2766.725,2383.823,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+195,184979,530,1,1,-2766.751,2282.798,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+196,184979,530,1,1,-2766.803,2250.719,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+197,184979,530,1,1,-2766.815,2295.312,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+198,184979,530,1,1,-2766.82,2407.71,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+199,184979,530,1,1,-2767.003,2351.3,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+200,184979,530,1,1,-2780.179,2395.597,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+201,184979,530,1,1,-2781.081,2259.361,93.28062,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+202,184979,530,1,1,-2781.243,2362.486,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+203,184979,530,1,1,-2781.385,2250.284,93.28062,1.553341,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+204,184979,530,1,1,-2799.266,2249.667,93.28062,1.588249,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+205,184979,530,1,1,-2799.778,2216.632,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+206,184979,530,1,1,-2799.857,2238.583,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+207,184979,530,1,1,-2799.887,2260.721,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+208,184979,530,1,1,-2799.897,2226.724,93.28062,1.570796,0,0,0,1,120,255,1), -- Deathforged Infernal
|
||||
(@OGUID+209,184979,530,1,1,-2799.923,2204.199,93.28062,1.570796,0,0,0,1,120,255,1); -- Deathforged Infernal
|
||||
1060
sql/updates/world/2014_09_20_03_world_creature.sql
Normal file
1060
sql/updates/world/2014_09_20_03_world_creature.sql
Normal file
File diff suppressed because it is too large
Load Diff
@@ -1005,7 +1005,7 @@ template<class T>
|
||||
void AchievementMgr<T>::CheckAllAchievementCriteria(Player* referencePlayer)
|
||||
{
|
||||
// suppress sending packets
|
||||
for (uint32 i=0; i<ACHIEVEMENT_CRITERIA_TYPE_TOTAL; ++i)
|
||||
for (uint32 i = 0; i < ACHIEVEMENT_CRITERIA_TYPE_TOTAL; ++i)
|
||||
UpdateAchievementCriteria(AchievementCriteriaTypes(i), 0, 0, 0, NULL, referencePlayer);
|
||||
}
|
||||
|
||||
@@ -1408,7 +1408,7 @@ bool AchievementMgr<T>::IsCompletedCriteria(AchievementCriteriaEntry const* achi
|
||||
if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
|
||||
{
|
||||
// someone on this realm has already completed that achievement
|
||||
if (sAchievementMgr->IsRealmCompleted(achievement))
|
||||
if (sAchievementMgr->IsRealmCompleted(achievement, GetOwner()->GetInstanceId())
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -1822,10 +1822,7 @@ void AchievementMgr<Player>::CompletedAchievement(AchievementEntry const* achiev
|
||||
ca.date = time(NULL);
|
||||
ca.changed = true;
|
||||
|
||||
// don't insert for ACHIEVEMENT_FLAG_REALM_FIRST_KILL since otherwise only the first group member would reach that achievement
|
||||
/// @todo where do set this instead?
|
||||
if (!(achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
|
||||
sAchievementMgr->SetRealmCompleted(achievement);
|
||||
sAchievementMgr->SetRealmCompleted(achievement, GetOwner()->GetInstanceId());
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
|
||||
@@ -1918,7 +1915,7 @@ void AchievementMgr<Guild>::CompletedAchievement(AchievementEntry const* achieve
|
||||
ca.guids.insert(groupMember->GetGUID());
|
||||
}
|
||||
|
||||
sAchievementMgr->SetRealmCompleted(achievement);
|
||||
sAchievementMgr->SetRealmCompleted(achievement, referencePlayer->GetInstanceId());
|
||||
|
||||
_achievementPoints += achievement->points;
|
||||
|
||||
@@ -3183,7 +3180,7 @@ void AchievementGlobalMgr::LoadCompletedAchievements()
|
||||
continue;
|
||||
}
|
||||
else if (achievement->flags & (ACHIEVEMENT_FLAG_REALM_FIRST_REACH | ACHIEVEMENT_FLAG_REALM_FIRST_KILL))
|
||||
m_allCompletedAchievements.insert(achievementId);
|
||||
m_allCompletedAchievements[achievementId] = uint32(0xFFFFFFFF);
|
||||
}
|
||||
while (result->NextRow());
|
||||
|
||||
@@ -3360,3 +3357,10 @@ AchievementCriteriaEntry const* AchievementGlobalMgr::GetAchievementCriteria(uin
|
||||
{
|
||||
return sAchievementCriteriaStore.LookupEntry(criteriaId);
|
||||
}
|
||||
|
||||
void AchievementGlobalMgr::OnInstanceDestroyed(uint32 instanceId)
|
||||
{
|
||||
for (auto& realmCompletion : m_allCompletedAchievements)
|
||||
if (realmCompletion.second == instanceId)
|
||||
realmCompletion.second = uint32(0xFFFFFFFF);
|
||||
}
|
||||
|
||||
@@ -352,14 +352,24 @@ class AchievementGlobalMgr
|
||||
return iter != m_criteriaDataMap.end() ? &iter->second : NULL;
|
||||
}
|
||||
|
||||
bool IsRealmCompleted(AchievementEntry const* achievement) const
|
||||
bool IsRealmCompleted(AchievementEntry const* achievement, uint32 instanceId) const
|
||||
{
|
||||
return m_allCompletedAchievements.find(achievement->ID) != m_allCompletedAchievements.end();
|
||||
AllCompletedAchievements::const_iterator itr = m_allCompletedAchievements.find(achievement->ID);
|
||||
if (itr == m_allCompletedAchievements.end())
|
||||
return false;
|
||||
|
||||
if (achievement->flags & ACHIEVEMENT_FLAG_REALM_FIRST_KILL)
|
||||
return itr->second != instanceId;
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
void SetRealmCompleted(AchievementEntry const* achievement)
|
||||
void SetRealmCompleted(AchievementEntry const* achievement, uint32 instanceId)
|
||||
{
|
||||
m_allCompletedAchievements.insert(achievement->ID);
|
||||
if (IsRealmCompleted(achievement, instanceId))
|
||||
return;
|
||||
|
||||
m_allCompletedAchievements[achievement->ID] = instanceId;
|
||||
}
|
||||
|
||||
bool IsGroupCriteriaType(AchievementCriteriaTypes type) const
|
||||
@@ -380,6 +390,9 @@ class AchievementGlobalMgr
|
||||
return false;
|
||||
}
|
||||
|
||||
// Removes instanceId as valid id to complete realm first kill achievements
|
||||
void OnInstanceDestroyed(uint32 instanceId);
|
||||
|
||||
void LoadAchievementCriteriaList();
|
||||
void LoadAchievementCriteriaData();
|
||||
void LoadAchievementReferenceList();
|
||||
@@ -403,7 +416,7 @@ class AchievementGlobalMgr
|
||||
// store achievements by referenced achievement id to speed up lookup
|
||||
AchievementListByReferencedId m_AchievementListByReferencedId;
|
||||
|
||||
typedef std::set<uint32> AllCompletedAchievements;
|
||||
typedef std::map<uint32 /*achievementId*/, uint32 /*instanceId*/> AllCompletedAchievements;
|
||||
AllCompletedAchievements m_allCompletedAchievements;
|
||||
|
||||
AchievementRewards m_achievementRewards;
|
||||
|
||||
@@ -322,8 +322,6 @@ void Battlefield::StartBattle()
|
||||
InvitePlayersInZoneToWar();
|
||||
InvitePlayersInQueueToWar();
|
||||
|
||||
DoPlaySoundToAll(BF_START);
|
||||
|
||||
OnBattleStart();
|
||||
}
|
||||
|
||||
@@ -339,11 +337,6 @@ void Battlefield::EndBattle(bool endByTimer)
|
||||
if (!endByTimer)
|
||||
SetDefenderTeam(GetAttackerTeam());
|
||||
|
||||
if (GetDefenderTeam() == TEAM_ALLIANCE)
|
||||
DoPlaySoundToAll(BF_ALLIANCE_WINS);
|
||||
else
|
||||
DoPlaySoundToAll(BF_HORDE_WINS);
|
||||
|
||||
OnBattleEnd(endByTimer);
|
||||
|
||||
// Reset battlefield timer
|
||||
|
||||
@@ -45,9 +45,9 @@ enum BattlefieldObjectiveStates
|
||||
|
||||
enum BattlefieldSounds
|
||||
{
|
||||
BF_HORDE_WINS = 8454,
|
||||
BF_ALLIANCE_WINS = 8455,
|
||||
BF_START = 3439
|
||||
BF_SOUND_HORDE_WINS = 8454,
|
||||
BF_SOUND_ALLIANCE_WINS = 8455,
|
||||
BF_SOUND_START = 3439
|
||||
};
|
||||
|
||||
enum BattlefieldTimers
|
||||
@@ -98,9 +98,10 @@ class BfCapturePoint
|
||||
|
||||
bool SetCapturePointData(GameObject* capturePoint);
|
||||
GameObject* GetCapturePointGo();
|
||||
uint32 GetCapturePointEntry(){ return m_capturePointEntry; }
|
||||
uint32 GetCapturePointEntry() const { return m_capturePointEntry; }
|
||||
|
||||
TeamId GetTeamId() { return m_team; }
|
||||
|
||||
protected:
|
||||
bool DelCapturePoint();
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -25,11 +25,11 @@ class BattlefieldWG;
|
||||
class WintergraspCapturePoint;
|
||||
|
||||
struct BfWGGameObjectBuilding;
|
||||
struct WGWorkshop;
|
||||
struct WintergraspWorkshop;
|
||||
|
||||
typedef std::set<GameObject*> GameObjectSet;
|
||||
typedef std::set<BfWGGameObjectBuilding*> GameObjectBuilding;
|
||||
typedef std::set<WGWorkshop*> Workshop;
|
||||
typedef std::set<BfWGGameObjectBuilding*> GameObjectBuildingSet;
|
||||
typedef std::set<WintergraspWorkshop*> WorkshopSet;
|
||||
typedef std::set<Group*> GroupSet;
|
||||
//typedef std::set<WintergraspCapturePoint *> CapturePointSet; unused ?
|
||||
|
||||
@@ -222,7 +222,7 @@ struct BfWGCoordGY
|
||||
float o;
|
||||
uint32 gyid;
|
||||
uint8 type;
|
||||
int32 textid; // for gossip menu
|
||||
uint32 textid; // for gossip menu
|
||||
TeamId startcontrol;
|
||||
};
|
||||
|
||||
@@ -253,13 +253,13 @@ class WintergraspCapturePoint : public BfCapturePoint
|
||||
public:
|
||||
WintergraspCapturePoint(BattlefieldWG* battlefield, TeamId teamInControl);
|
||||
|
||||
void LinkToWorkshop(WGWorkshop* workshop) { m_Workshop = workshop; }
|
||||
void LinkToWorkshop(WintergraspWorkshop* workshop) { m_Workshop = workshop; }
|
||||
|
||||
void ChangeTeam(TeamId oldteam) override;
|
||||
TeamId GetTeam() const { return m_team; }
|
||||
|
||||
protected:
|
||||
WGWorkshop* m_Workshop;
|
||||
WintergraspWorkshop* m_Workshop;
|
||||
};
|
||||
|
||||
/* ######################### *
|
||||
@@ -415,11 +415,11 @@ class BattlefieldWG : public Battlefield
|
||||
protected:
|
||||
bool m_isRelicInteractible;
|
||||
|
||||
Workshop WorkshopsList;
|
||||
WorkshopSet Workshops;
|
||||
|
||||
GuidSet DefenderPortalList;
|
||||
GuidSet m_KeepGameObject[BG_TEAMS_COUNT];
|
||||
GameObjectBuilding BuildingsInZone;
|
||||
GameObjectBuildingSet BuildingsInZone;
|
||||
|
||||
GuidSet m_vehicles[BG_TEAMS_COUNT];
|
||||
GuidSet CanonList;
|
||||
@@ -446,6 +446,7 @@ uint8 const WG_MAX_OUTSIDE_NPC = 14;
|
||||
uint8 const WG_OUTSIDE_ALLIANCE_NPC = 7;
|
||||
uint8 const WG_MAX_TELEPORTER = 12;
|
||||
uint8 const WG_MAX_WORKSHOP = 6;
|
||||
uint8 const WG_MAX_TOWER = 7;
|
||||
|
||||
enum WintergraspGameObjectBuildingType
|
||||
{
|
||||
@@ -471,6 +472,17 @@ enum WintergraspGameObjectState
|
||||
BATTLEFIELD_WG_OBJECTSTATE_ALLIANCE_DESTROY
|
||||
};
|
||||
|
||||
enum WintergraspTowerIds
|
||||
{
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_NW,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_SW,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_SE,
|
||||
BATTLEFIELD_WG_TOWER_FORTRESS_NE,
|
||||
BATTLEFIELD_WG_TOWER_SHADOWSIGHT,
|
||||
BATTLEFIELD_WG_TOWER_WINTER_S_EDGE,
|
||||
BATTLEFIELD_WG_TOWER_FLAMEWATCH
|
||||
};
|
||||
|
||||
enum WintergraspWorkshopIds
|
||||
{
|
||||
BATTLEFIELD_WG_WORKSHOP_NE,
|
||||
@@ -498,32 +510,50 @@ enum WintergraspTeamControl
|
||||
BATTLEFIELD_WG_TEAM_NEUTRAL
|
||||
};
|
||||
|
||||
/// @todo: Can this be handled with creature_text or SmartAI ?
|
||||
enum WintergraspText
|
||||
{
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NE = 12055,
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NW = 12052,
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_SE = 12053,
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_SW = 12054,
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_ATTACK = 12051,
|
||||
BATTLEFIELD_WG_TEXT_WORKSHOP_TAKEN = 12050,
|
||||
BATTLEFIELD_WG_TEXT_ALLIANCE = 12057,
|
||||
BATTLEFIELD_WG_TEXT_HORDE = 12056,
|
||||
BATTLEFIELD_WG_TEXT_WILL_START = 12058,
|
||||
BATTLEFIELD_WG_TEXT_START = 12067,
|
||||
BATTLEFIELD_WG_TEXT_FIRSTRANK = 12059,
|
||||
BATTLEFIELD_WG_TEXT_SECONDRANK = 12060,
|
||||
BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_NE = 12062,
|
||||
BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_NW = 12064,
|
||||
BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_SE = 12061,
|
||||
BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_SW = 12063,
|
||||
BATTLEFIELD_WG_TEXT_TOWER_DAMAGE = 12065,
|
||||
BATTLEFIELD_WG_TEXT_TOWER_DESTROY = 12066,
|
||||
BATTLEFIELD_WG_TEXT_TOWER_NAME_S = 12069,
|
||||
BATTLEFIELD_WG_TEXT_TOWER_NAME_E = 12070,
|
||||
BATTLEFIELD_WG_TEXT_TOWER_NAME_W = 12071,
|
||||
BATTLEFIELD_WG_TEXT_DEFEND_KEEP = 12068,
|
||||
BATTLEFIELD_WG_TEXT_WIN_KEEP = 12072
|
||||
// Invisible Stalker
|
||||
BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DAMAGE = 1,
|
||||
BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DESTROY = 2,
|
||||
BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DAMAGE = 3,
|
||||
BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DESTROY = 4,
|
||||
BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DAMAGE = 5,
|
||||
BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DESTROY = 6,
|
||||
BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DAMAGE = 7,
|
||||
BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DESTROY = 8,
|
||||
BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DAMAGE = 9,
|
||||
BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DESTROY = 10,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_ALLIANCE = 11,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_ALLIANCE = 12,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_HORDE = 13,
|
||||
BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_HORDE = 14,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_ALLIANCE = 15,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_ALLIANCE = 16,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_HORDE = 17,
|
||||
BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_HORDE = 18,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_ALLIANCE = 19,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_ALLIANCE = 20,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_HORDE = 21,
|
||||
BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_HORDE = 22,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_ALLIANCE = 23,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_ALLIANCE = 24,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_HORDE = 25,
|
||||
BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_HORDE = 26,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_START_GROUPING = 27,
|
||||
BATTLEFIELD_WG_TEXT_START_BATTLE = 28,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_ALLIANCE = 29,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_ALLIANCE = 30,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_DEFEND_HORDE = 31,
|
||||
BATTLEFIELD_WG_TEXT_FORTRESS_CAPTURE_HORDE = 32,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DAMAGE = 33,
|
||||
BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DESTROY = 34,
|
||||
BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DAMAGE = 35,
|
||||
BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DESTROY = 36,
|
||||
|
||||
BATTLEFIELD_WG_TEXT_RANK_CORPORAL = 37,
|
||||
BATTLEFIELD_WG_TEXT_RANK_FIRST_LIEUTENANT = 38
|
||||
};
|
||||
|
||||
enum WintergraspGameObject
|
||||
@@ -550,16 +580,6 @@ enum WintergraspGameObject
|
||||
GO_WINTERGRASP_KEEP_COLLISION_WALL = 194323
|
||||
};
|
||||
|
||||
struct WintergraspObjectPositionData
|
||||
{
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float o;
|
||||
uint32 entryHorde;
|
||||
uint32 entryAlliance;
|
||||
};
|
||||
|
||||
// *****************************************************
|
||||
// ************ Destructible (Wall, Tower..) ***********
|
||||
// *****************************************************
|
||||
@@ -572,72 +592,90 @@ struct WintergraspBuildingSpawnData
|
||||
float y;
|
||||
float z;
|
||||
float o;
|
||||
uint32 type;
|
||||
uint32 nameId;
|
||||
WintergraspGameObjectBuildingType type;
|
||||
};
|
||||
|
||||
struct WintergraspRebuildableBuildingData
|
||||
struct WintergraspObjectPositionData
|
||||
{
|
||||
ObjectGuid Guid;
|
||||
uint32 entry;
|
||||
uint32 WorldState;
|
||||
float x;
|
||||
float y;
|
||||
float z;
|
||||
float o;
|
||||
uint32 type;
|
||||
uint32 nameId;
|
||||
uint32 entryHorde;
|
||||
uint32 entryAlliance;
|
||||
};
|
||||
|
||||
const WintergraspBuildingSpawnData WGGameObjectBuilding[WG_MAX_OBJ] =
|
||||
WintergraspBuildingSpawnData const WGGameObjectBuilding[WG_MAX_OBJ] =
|
||||
{
|
||||
// Wall (Not spawned in db)
|
||||
// Entry WS X Y Z O type NameID
|
||||
{ 190219, 3749, 5371.46f, 3047.47f, 407.571f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190220, 3750, 5331.26f, 3047.1f, 407.923f, 0.052359f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191795, 3764, 5385.84f, 2909.49f, 409.713f, 0.00872f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191796, 3772, 5384.45f, 2771.84f, 410.27f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191799, 3762, 5371.44f, 2630.61f, 408.816f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191800, 3766, 5301.84f, 2909.09f, 409.866f, 0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191801, 3770, 5301.06f, 2771.41f, 409.901f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191802, 3751, 5280.2f, 2995.58f, 408.825f, 1.61443f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191803, 3752, 5279.14f, 2956.02f, 408.604f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191804, 3767, 5278.69f, 2882.51f, 409.539f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191806, 3769, 5279.5f, 2798.94f, 409.998f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191807, 3759, 5279.94f, 2724.77f, 409.945f, 1.56207f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191808, 3760, 5279.6f, 2683.79f, 409.849f, 1.55334f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191809, 3761, 5330.96f, 2630.78f, 409.283f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190369, 3753, 5256.08f, 2933.96f, 409.357f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190370, 3758, 5257.46f, 2747.33f, 409.743f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190371, 3754, 5214.96f, 2934.09f, 409.19f, -0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190372, 3757, 5215.82f, 2747.57f, 409.188f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190374, 3755, 5162.27f, 2883.04f, 410.256f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 190376, 3756, 5163.72f, 2799.84f, 409.227f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
// Entry WS X Y Z O Type
|
||||
{ 190219, 3749, 5371.46f, 3047.47f, 407.571f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190220, 3750, 5331.26f, 3047.1f, 407.923f, 0.052359f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191795, 3764, 5385.84f, 2909.49f, 409.713f, 0.00872f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191796, 3772, 5384.45f, 2771.84f, 410.27f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191799, 3762, 5371.44f, 2630.61f, 408.816f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191800, 3766, 5301.84f, 2909.09f, 409.866f, 0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191801, 3770, 5301.06f, 2771.41f, 409.901f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191802, 3751, 5280.2f, 2995.58f, 408.825f, 1.61443f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191803, 3752, 5279.14f, 2956.02f, 408.604f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191804, 3767, 5278.69f, 2882.51f, 409.539f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191806, 3769, 5279.5f, 2798.94f, 409.998f, 1.5708f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191807, 3759, 5279.94f, 2724.77f, 409.945f, 1.56207f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191808, 3760, 5279.6f, 2683.79f, 409.849f, 1.55334f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191809, 3761, 5330.96f, 2630.78f, 409.283f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190369, 3753, 5256.08f, 2933.96f, 409.357f, 3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190370, 3758, 5257.46f, 2747.33f, 409.743f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190371, 3754, 5214.96f, 2934.09f, 409.19f, -0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190372, 3757, 5215.82f, 2747.57f, 409.188f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190374, 3755, 5162.27f, 2883.04f, 410.256f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 190376, 3756, 5163.72f, 2799.84f, 409.227f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
|
||||
// Tower of keep (Not spawned in db)
|
||||
{ 190221, 3711, 5281.15f, 3044.59f, 407.843f, 3.11539f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER, BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_NW },
|
||||
{ 190373, 3713, 5163.76f, 2932.23f, 409.19f, 3.12412f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER, BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_SW },
|
||||
{ 190377, 3714, 5166.4f, 2748.37f, 409.188f, -1.5708f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER, BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_SE },
|
||||
{ 190378, 3712, 5281.19f, 2632.48f, 409.099f, -1.58825f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER, BATTLEFIELD_WG_TEXT_KEEPTOWER_NAME_NE },
|
||||
{ 190221, 3711, 5281.15f, 3044.59f, 407.843f, 3.11539f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER }, // NW
|
||||
{ 190373, 3713, 5163.76f, 2932.23f, 409.19f, 3.12412f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER }, // SW
|
||||
{ 190377, 3714, 5166.4f, 2748.37f, 409.188f, -1.5708f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER }, // SE
|
||||
{ 190378, 3712, 5281.19f, 2632.48f, 409.099f, -1.58825f, BATTLEFIELD_WG_OBJECTTYPE_KEEP_TOWER }, // NE
|
||||
|
||||
// Wall (with passage) (Not spawned in db)
|
||||
{ 191797, 3765, 5343.29f, 2908.86f, 409.576f, 0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191798, 3771, 5342.72f, 2771.39f, 409.625f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191805, 3768, 5279.13f, 2840.8f, 409.783f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL, 0 },
|
||||
{ 191797, 3765, 5343.29f, 2908.86f, 409.576f, 0.008724f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191798, 3771, 5342.72f, 2771.39f, 409.625f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
{ 191805, 3768, 5279.13f, 2840.8f, 409.783f, 1.57952f, BATTLEFIELD_WG_OBJECTTYPE_WALL },
|
||||
|
||||
// South tower (Not spawned in db)
|
||||
{ 190356, 3704, 4557.17f, 3623.94f, 395.883f, 1.67552f, BATTLEFIELD_WG_OBJECTTYPE_TOWER, BATTLEFIELD_WG_TEXT_TOWER_NAME_W },
|
||||
{ 190357, 3705, 4398.17f, 2822.5f, 405.627f, -3.12412f, BATTLEFIELD_WG_OBJECTTYPE_TOWER, BATTLEFIELD_WG_TEXT_TOWER_NAME_S },
|
||||
{ 190358, 3706, 4459.1f, 1944.33f, 434.991f, -2.00276f, BATTLEFIELD_WG_OBJECTTYPE_TOWER, BATTLEFIELD_WG_TEXT_TOWER_NAME_E },
|
||||
{ 190356, 3704, 4557.17f, 3623.94f, 395.883f, 1.67552f, BATTLEFIELD_WG_OBJECTTYPE_TOWER }, // W
|
||||
{ 190357, 3705, 4398.17f, 2822.5f, 405.627f, -3.12412f, BATTLEFIELD_WG_OBJECTTYPE_TOWER }, // S
|
||||
{ 190358, 3706, 4459.1f, 1944.33f, 434.991f, -2.00276f, BATTLEFIELD_WG_OBJECTTYPE_TOWER }, // E
|
||||
|
||||
// Door of forteress (Not spawned in db)
|
||||
{ GO_WINTERGRASP_FORTRESS_GATE, 3763, 5162.99f, 2841.23f, 410.162f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_DOOR, 0 },
|
||||
{ GO_WINTERGRASP_FORTRESS_GATE, 3763, 5162.99f, 2841.23f, 410.162f, -3.13286f, BATTLEFIELD_WG_OBJECTTYPE_DOOR },
|
||||
|
||||
// Last door (Not spawned in db)
|
||||
{ GO_WINTERGRASP_VAULT_GATE, 3773, 5397.11f, 2841.54f, 425.899f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST, 0 },
|
||||
{ GO_WINTERGRASP_VAULT_GATE, 3773, 5397.11f, 2841.54f, 425.899f, 3.14159f, BATTLEFIELD_WG_OBJECTTYPE_DOOR_LAST },
|
||||
};
|
||||
|
||||
const Position WGTurret[WG_MAX_TURRET] =
|
||||
struct StaticWintergraspTowerInfo
|
||||
{
|
||||
uint8 TowerId;
|
||||
|
||||
struct
|
||||
{
|
||||
uint8 Damaged;
|
||||
uint8 Destroyed;
|
||||
} TextIds;
|
||||
};
|
||||
|
||||
StaticWintergraspTowerInfo const TowerData[WG_MAX_TOWER] =
|
||||
{
|
||||
{ BATTLEFIELD_WG_TOWER_FORTRESS_NW, { BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DAMAGE, BATTLEFIELD_WG_TEXT_NW_KEEPTOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_FORTRESS_SW, { BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DAMAGE, BATTLEFIELD_WG_TEXT_SW_KEEPTOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_FORTRESS_SE, { BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DAMAGE, BATTLEFIELD_WG_TEXT_SE_KEEPTOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_FORTRESS_NE, { BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DAMAGE, BATTLEFIELD_WG_TEXT_NE_KEEPTOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_SHADOWSIGHT, { BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DAMAGE, BATTLEFIELD_WG_TEXT_WESTERN_TOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_WINTER_S_EDGE, { BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DAMAGE, BATTLEFIELD_WG_TEXT_SOUTHERN_TOWER_DESTROY } },
|
||||
{ BATTLEFIELD_WG_TOWER_FLAMEWATCH, { BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DAMAGE, BATTLEFIELD_WG_TEXT_EASTERN_TOWER_DESTROY } }
|
||||
};
|
||||
|
||||
Position const WGTurret[WG_MAX_TURRET] =
|
||||
{
|
||||
{ 5391.19f, 3060.8f, 419.616f, 1.69557f },
|
||||
{ 5266.75f, 2976.5f, 421.067f, 3.20354f },
|
||||
@@ -657,7 +695,7 @@ const Position WGTurret[WG_MAX_TURRET] =
|
||||
};
|
||||
|
||||
// Here there is all npc keeper spawn point
|
||||
const WintergraspObjectPositionData WGKeepNPC[WG_MAX_KEEP_NPC] =
|
||||
WintergraspObjectPositionData const WGKeepNPC[WG_MAX_KEEP_NPC] =
|
||||
{
|
||||
// X Y Z O horde alliance
|
||||
// North East
|
||||
@@ -735,7 +773,7 @@ struct WintergraspTeleporterData
|
||||
float o;
|
||||
};
|
||||
|
||||
const WintergraspTeleporterData WGPortalDefenderData[WG_MAX_TELEPORTER] =
|
||||
WintergraspTeleporterData const WGPortalDefenderData[WG_MAX_TELEPORTER] =
|
||||
{
|
||||
// Player teleporter
|
||||
{ 190763, 5153.41f, 2901.35f, 409.191f, -0.069f },
|
||||
@@ -1030,67 +1068,70 @@ const WintergraspTowerCannonData TowerCannon[WG_MAX_TOWER_CANNON] =
|
||||
// *****************WorkShop Data & Element*****************
|
||||
// *********************************************************
|
||||
|
||||
struct WGWorkshopData
|
||||
struct StaticWintergraspWorkshopInfo
|
||||
{
|
||||
uint8 id;
|
||||
uint32 worldstate;
|
||||
uint32 text;
|
||||
uint8 WorkshopId;
|
||||
uint32 WorldStateId;
|
||||
|
||||
struct
|
||||
{
|
||||
uint8 AllianceCapture;
|
||||
uint8 AllianceAttack;
|
||||
uint8 HordeCapture;
|
||||
uint8 HordeAttack;
|
||||
} TextIds;
|
||||
};
|
||||
|
||||
const WGWorkshopData WorkshopsData[WG_MAX_WORKSHOP] =
|
||||
StaticWintergraspWorkshopInfo const WorkshopData[WG_MAX_WORKSHOP] =
|
||||
{
|
||||
// NE
|
||||
{BATTLEFIELD_WG_WORKSHOP_NE, WORLDSTATE_WORKSHOP_NE, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NE},
|
||||
// NW
|
||||
{BATTLEFIELD_WG_WORKSHOP_NW, WORLDSTATE_WORKSHOP_NW, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_NW},
|
||||
// SE
|
||||
{BATTLEFIELD_WG_WORKSHOP_SE, WORLDSTATE_WORKSHOP_SE, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_SE},
|
||||
// SW
|
||||
{BATTLEFIELD_WG_WORKSHOP_SW, WORLDSTATE_WORKSHOP_SW, BATTLEFIELD_WG_TEXT_WORKSHOP_NAME_SW},
|
||||
// KEEP WEST - It can't be taken, so it doesn't have a textid
|
||||
{BATTLEFIELD_WG_WORKSHOP_KEEP_WEST, WORLDSTATE_WORKSHOP_K_W, 0},
|
||||
// KEEP EAST - It can't be taken, so it doesn't have a textid
|
||||
{BATTLEFIELD_WG_WORKSHOP_KEEP_EAST, WORLDSTATE_WORKSHOP_K_E, 0}
|
||||
{ BATTLEFIELD_WG_WORKSHOP_NE, WORLDSTATE_WORKSHOP_NE, { BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_ALLIANCE, BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_ALLIANCE, BATTLEFIELD_WG_TEXT_SUNKEN_RING_CAPTURE_HORDE, BATTLEFIELD_WG_TEXT_SUNKEN_RING_ATTACK_HORDE } },
|
||||
{ BATTLEFIELD_WG_WORKSHOP_NW, WORLDSTATE_WORKSHOP_NW, { BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_ALLIANCE, BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_ALLIANCE, BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_CAPTURE_HORDE, BATTLEFIELD_WG_TEXT_BROKEN_TEMPLE_ATTACK_HORDE } },
|
||||
{ BATTLEFIELD_WG_WORKSHOP_SE, WORLDSTATE_WORKSHOP_SE, { BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_ALLIANCE, BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_ALLIANCE, BATTLEFIELD_WG_TEXT_EASTSPARK_CAPTURE_HORDE, BATTLEFIELD_WG_TEXT_EASTSPARK_ATTACK_HORDE } },
|
||||
{ BATTLEFIELD_WG_WORKSHOP_SW, WORLDSTATE_WORKSHOP_SW, { BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_ALLIANCE, BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_ALLIANCE, BATTLEFIELD_WG_TEXT_WESTSPARK_CAPTURE_HORDE, BATTLEFIELD_WG_TEXT_WESTSPARK_ATTACK_HORDE } },
|
||||
// KEEP WORKSHOPS - It can't be taken, so it doesn't have a textids
|
||||
{ BATTLEFIELD_WG_WORKSHOP_KEEP_WEST, WORLDSTATE_WORKSHOP_K_W, { 0, 0, 0, 0 } },
|
||||
{ BATTLEFIELD_WG_WORKSHOP_KEEP_EAST, WORLDSTATE_WORKSHOP_K_E, { 0, 0, 0, 0 } }
|
||||
};
|
||||
|
||||
// ********************************************************************
|
||||
// * Structs using for Building, Graveyard, Workshop *
|
||||
// ********************************************************************
|
||||
|
||||
// Structure for different buildings that can be destroyed during battle
|
||||
struct BfWGGameObjectBuilding
|
||||
{
|
||||
BfWGGameObjectBuilding(BattlefieldWG* wg);
|
||||
|
||||
// the team that controls this point
|
||||
uint8 m_Team;
|
||||
|
||||
private:
|
||||
// WG object
|
||||
BattlefieldWG* m_WG;
|
||||
BattlefieldWG* _wg;
|
||||
|
||||
// Linked gameobject
|
||||
ObjectGuid m_BuildGUID;
|
||||
ObjectGuid _buildGUID;
|
||||
|
||||
// eWGGameObjectBuildingType
|
||||
uint32 m_Type;
|
||||
// the team that controls this point
|
||||
TeamId _teamControl;
|
||||
|
||||
// WorldState
|
||||
uint32 m_WorldState;
|
||||
WintergraspGameObjectBuildingType _type;
|
||||
uint32 _worldState;
|
||||
|
||||
// eWGGameObjectState
|
||||
uint32 m_State;
|
||||
WintergraspGameObjectState _state;
|
||||
|
||||
// Name id for warning text
|
||||
uint32 m_NameId;
|
||||
StaticWintergraspTowerInfo const* _staticTowerInfo;
|
||||
|
||||
// GameObject associations
|
||||
GuidSet m_GameObjectList[2];
|
||||
GuidSet m_GameObjectList[BG_TEAMS_COUNT];
|
||||
|
||||
// Creature associations
|
||||
GuidSet m_CreatureBottomList[2];
|
||||
GuidSet m_CreatureTopList[2];
|
||||
GuidSet m_CreatureBottomList[BG_TEAMS_COUNT];
|
||||
GuidSet m_CreatureTopList[BG_TEAMS_COUNT];
|
||||
GuidSet m_TowerCannonBottomList;
|
||||
GuidSet m_TurretTopList;
|
||||
|
||||
public:
|
||||
BfWGGameObjectBuilding(BattlefieldWG* wg, WintergraspGameObjectBuildingType type, uint32 worldState);
|
||||
void Init(GameObject* go);
|
||||
|
||||
ObjectGuid const& GetGUID() const { return _buildGUID; }
|
||||
|
||||
void Rebuild();
|
||||
|
||||
// Called when associated gameobject is damaged
|
||||
@@ -1099,49 +1140,33 @@ struct BfWGGameObjectBuilding
|
||||
// Called when associated gameobject is destroyed
|
||||
void Destroyed();
|
||||
|
||||
void Init(GameObject* go, uint32 type, uint32 worldstate, uint32 nameId);
|
||||
|
||||
void UpdateCreatureAndGo();
|
||||
|
||||
void UpdateTurretAttack(bool disable);
|
||||
|
||||
void Save();
|
||||
};
|
||||
|
||||
struct WGWorkshop
|
||||
{
|
||||
// pointer to the battlefield that the workshop belongs to
|
||||
BattlefieldWG* bf;
|
||||
// id of the workshop, useful to retrieve data of the WorkshopsData array
|
||||
uint8 workshopId;
|
||||
// team that controls the node
|
||||
uint8 teamControl;
|
||||
// for worldstate
|
||||
uint32 state;
|
||||
|
||||
WGWorkshop(BattlefieldWG* _bf, uint8 _workshopId);
|
||||
|
||||
void GiveControlTo(uint8 team, bool init /*for first call in setup*/);
|
||||
|
||||
void UpdateGraveyardAndWorkshop();
|
||||
void FillInitialWorldStates(WorldPacket& data);
|
||||
|
||||
void Save();
|
||||
};
|
||||
|
||||
// Structure for the 6 workshop
|
||||
struct WintergraspWorkshopData
|
||||
struct WintergraspWorkshop
|
||||
{
|
||||
BattlefieldWG* m_WG; // Pointer to wintergrasp
|
||||
ObjectGuid m_BuildGUID;
|
||||
uint32 m_Type;
|
||||
uint32 m_State; // For worldstate
|
||||
uint32 m_WorldState;
|
||||
uint32 m_TeamControl; // Team witch control the workshop
|
||||
GuidSet m_CreatureOnPoint[2]; // Contain all Creature associate to this point
|
||||
GuidSet m_GameObjectOnPoint[2]; // Contain all Gameobject associate to this point
|
||||
uint32 m_NameId; // Id of trinity_string witch contain name of this node, using for alert message
|
||||
private:
|
||||
BattlefieldWG* _wg; // Pointer to wintergrasp
|
||||
ObjectGuid _buildGUID;
|
||||
WintergraspGameObjectState _state; // For worldstate
|
||||
TeamId _teamControl; // Team witch control the workshop
|
||||
GuidSet _creatureOnPoint[BG_TEAMS_COUNT]; // Contain all Creature associate to this point
|
||||
GuidSet _gameObjectOnPoint[BG_TEAMS_COUNT]; // Contain all Gameobject associate to this point
|
||||
|
||||
WintergraspWorkshopData(BattlefieldWG* wg);
|
||||
StaticWintergraspWorkshopInfo const* _staticInfo;
|
||||
|
||||
public:
|
||||
WintergraspWorkshop(BattlefieldWG* wg, uint8 type);
|
||||
|
||||
uint8 GetId() const { return _staticInfo->WorkshopId; }
|
||||
TeamId GetTeamControl() const { return _teamControl; }
|
||||
|
||||
// Spawning associate creature and store them
|
||||
void AddCreature(WintergraspObjectPositionData const& obj);
|
||||
@@ -1149,14 +1174,13 @@ struct WintergraspWorkshopData
|
||||
// Spawning Associate gameobject and store them
|
||||
void AddGameObject(WintergraspObjectPositionData const& obj);
|
||||
|
||||
// Init method, setup variable
|
||||
void Init(uint32 worldstate, uint32 type, uint32 nameId);
|
||||
|
||||
// Called on change faction in CapturePoint class
|
||||
void GiveControlTo(uint8 team, bool init /*for first call in setup*/);
|
||||
void GiveControlTo(TeamId teamId, bool init = false);
|
||||
|
||||
void UpdateGraveyardAndWorkshop();
|
||||
|
||||
void FillInitialWorldStates(WorldPacket& data);
|
||||
|
||||
void Save();
|
||||
};
|
||||
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "LFGMgr.h"
|
||||
#include "Log.h"
|
||||
#include "MapManager.h"
|
||||
#include "Object.h"
|
||||
#include "ObjectMgr.h"
|
||||
#include "Pet.h"
|
||||
#include "PoolMgr.h"
|
||||
@@ -1763,6 +1764,12 @@ void ObjectMgr::LoadCreatures()
|
||||
}
|
||||
}
|
||||
|
||||
if (std::abs(data.orientation) > 2 * float(M_PI))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Table `creature` has creature (GUID: %u Entry: %u) with abs(`orientation`) > 2*PI (orientation is expressed in radians), normalized.", guid, data.id);
|
||||
data.orientation = Position::NormalizeOrientation(data.orientation);
|
||||
}
|
||||
|
||||
if (data.phaseMask == 0)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Table `creature` has creature (GUID: %u Entry: %u) with `phaseMask`=0 (not visible for anyone), set to 1.", guid, data.id);
|
||||
@@ -2065,6 +2072,12 @@ void ObjectMgr::LoadGameobjects()
|
||||
data.phaseGroup = 0;
|
||||
}
|
||||
|
||||
if (std::abs(data.orientation) > 2 * float(M_PI))
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: %u Entry: %u) with abs(`orientation`) > 2*PI (orientation is expressed in radians), normalized.", guid, data.id);
|
||||
data.orientation = Position::NormalizeOrientation(data.orientation);
|
||||
}
|
||||
|
||||
if (data.rotation2 < -1.0f || data.rotation2 > 1.0f)
|
||||
{
|
||||
TC_LOG_ERROR("sql.sql", "Table `gameobject` has gameobject (GUID: %u Entry: %u) with invalid rotation2 (%f) value, skip", guid, data.id, data.rotation2);
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "Player.h"
|
||||
#include "WorldSession.h"
|
||||
#include "Opcodes.h"
|
||||
#include "AchievementMgr.h"
|
||||
|
||||
MapManager::MapManager()
|
||||
{
|
||||
@@ -393,4 +394,5 @@ void MapManager::FreeInstanceId(uint32 instanceId)
|
||||
SetNextInstanceId(instanceId);
|
||||
|
||||
_instanceIds[instanceId] = false;
|
||||
sAchievementMgr->OnInstanceDestroyed(instanceId);
|
||||
}
|
||||
|
||||
@@ -57,13 +57,10 @@ public:
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PlayerGUID = 0;
|
||||
RebuffTimer = 0;
|
||||
work = false;
|
||||
}
|
||||
|
||||
uint64 PlayerGUID;
|
||||
|
||||
uint32 RebuffTimer;
|
||||
bool work;
|
||||
|
||||
|
||||
@@ -44,9 +44,18 @@ public:
|
||||
{
|
||||
boss_lavanthorAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiFireboltTimer = 1000;
|
||||
uiFlameBreathTimer = 5000;
|
||||
uiLavaBurnTimer = 10000;
|
||||
uiCauterizingFlamesTimer = 3000;
|
||||
}
|
||||
|
||||
uint32 uiFireboltTimer;
|
||||
uint32 uiFlameBreathTimer;
|
||||
uint32 uiLavaBurnTimer;
|
||||
@@ -56,10 +65,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiFireboltTimer = 1000;
|
||||
uiFlameBreathTimer = 5000;
|
||||
uiLavaBurnTimer = 10000;
|
||||
uiCauterizingFlamesTimer = 3000;
|
||||
Initialize();
|
||||
if (instance->GetData(DATA_WAVE_COUNT) == 6)
|
||||
instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED);
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
|
||||
@@ -40,9 +40,16 @@ public:
|
||||
{
|
||||
boss_moraggAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiOpticLinkTimer = 10000;
|
||||
uiCorrosiveSalivaTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiOpticLinkTimer;
|
||||
uint32 uiCorrosiveSalivaTimer;
|
||||
|
||||
@@ -50,8 +57,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiOpticLinkTimer = 10000;
|
||||
uiCorrosiveSalivaTimer = 5000;
|
||||
Initialize();
|
||||
|
||||
if (instance->GetData(DATA_WAVE_COUNT) == 6)
|
||||
instance->SetData(DATA_1ST_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
@@ -70,9 +70,17 @@ public:
|
||||
{
|
||||
boss_xevozzAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSummonEtherealSphere_Timer = urand(10000, 12000);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000);
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiSummonEtherealSphere_Timer;
|
||||
@@ -86,9 +94,7 @@ public:
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
uiSummonEtherealSphere_Timer = urand(10000, 12000);
|
||||
uiArcaneBarrageVolley_Timer = urand(20000, 22000);
|
||||
uiArcaneBuffet_Timer = uiSummonEtherealSphere_Timer + urand(5000, 6000);
|
||||
Initialize();
|
||||
DespawnSphere();
|
||||
}
|
||||
|
||||
@@ -229,9 +235,16 @@ public:
|
||||
{
|
||||
npc_ethereal_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSummonPlayers_Timer = urand(33000, 35000);
|
||||
uiRangeCheck_Timer = 1000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 uiSummonPlayers_Timer;
|
||||
@@ -239,8 +252,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiSummonPlayers_Timer = urand(33000, 35000);
|
||||
uiRangeCheck_Timer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 uiDiff) override
|
||||
|
||||
@@ -65,9 +65,18 @@ public:
|
||||
{
|
||||
boss_zuramatAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
SpellShroudOfDarknessTimer = 22000;
|
||||
SpellVoidShiftTimer = 15000;
|
||||
SpellSummonVoidTimer = 12000;
|
||||
voidDance = true;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 SpellVoidShiftTimer;
|
||||
@@ -82,10 +91,7 @@ public:
|
||||
else if (instance->GetData(DATA_WAVE_COUNT) == 12)
|
||||
instance->SetData(DATA_2ND_BOSS_EVENT, NOT_STARTED);
|
||||
|
||||
SpellShroudOfDarknessTimer = 22000;
|
||||
SpellVoidShiftTimer = 15000;
|
||||
SpellSummonVoidTimer = 12000;
|
||||
voidDance = true;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void AttackStart(Unit* who) override
|
||||
|
||||
@@ -305,9 +305,16 @@ public:
|
||||
{
|
||||
npc_sinclariAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint8 uiPhase;
|
||||
@@ -315,8 +322,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiPhase = 0;
|
||||
uiTimer = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetReactState(REACT_AGGRESSIVE);
|
||||
|
||||
@@ -549,8 +555,14 @@ public:
|
||||
{
|
||||
npc_teleportation_portalAI(Creature* creature) : ScriptedAI(creature), listOfMobs(me)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
uiTypeOfMobsPortal = urand(0, 1); // 0 - elite mobs 1 - portal guardian or portal keeper with regular mobs
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiSpawnTimer = 10000;
|
||||
bPortalGuardianOrKeeperOrEliteSpawn = false;
|
||||
}
|
||||
|
||||
@@ -564,8 +576,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiSpawnTimer = 10000;
|
||||
bPortalGuardianOrKeeperOrEliteSpawn = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -672,7 +683,7 @@ struct violet_hold_trashAI : public npc_escortAI
|
||||
instance = creature->GetInstanceScript();
|
||||
bHasGotMovingPoints = false;
|
||||
portalLocationID = instance->GetData(DATA_PORTAL_LOCATION);
|
||||
Reset();
|
||||
secondPortalRouteID = 0;
|
||||
}
|
||||
|
||||
public:
|
||||
@@ -797,9 +808,18 @@ public:
|
||||
{
|
||||
npc_azure_invaderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiCleaveTimer = 5000;
|
||||
uiImpaleTimer = 4000;
|
||||
uiBrutalStrikeTimer = 5000;
|
||||
uiSunderArmorTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiCleaveTimer;
|
||||
uint32 uiImpaleTimer;
|
||||
uint32 uiBrutalStrikeTimer;
|
||||
@@ -807,10 +827,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiCleaveTimer = 5000;
|
||||
uiImpaleTimer = 4000;
|
||||
uiBrutalStrikeTimer = 5000;
|
||||
uiSunderArmorTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -875,9 +892,18 @@ public:
|
||||
{
|
||||
npc_azure_binderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneExplosionTimer = 5000;
|
||||
uiArcainBarrageTimer = 4000;
|
||||
uiFrostNovaTimer = 5000;
|
||||
uiFrostboltTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneExplosionTimer;
|
||||
uint32 uiArcainBarrageTimer;
|
||||
uint32 uiFrostNovaTimer;
|
||||
@@ -885,10 +911,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneExplosionTimer = 5000;
|
||||
uiArcainBarrageTimer = 4000;
|
||||
uiFrostNovaTimer = 5000;
|
||||
uiFrostboltTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -953,16 +976,22 @@ public:
|
||||
{
|
||||
npc_azure_mage_slayerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneEmpowermentTimer = 5000;
|
||||
uiSpellLockTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneEmpowermentTimer;
|
||||
uint32 uiSpellLockTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneEmpowermentTimer = 5000;
|
||||
uiSpellLockTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1013,16 +1042,22 @@ public:
|
||||
{
|
||||
npc_azure_raiderAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiConcussionBlowTimer = 5000;
|
||||
uiMagicReflectionTimer = 8000;
|
||||
}
|
||||
|
||||
uint32 uiConcussionBlowTimer;
|
||||
uint32 uiMagicReflectionTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiConcussionBlowTimer = 5000;
|
||||
uiMagicReflectionTimer = 8000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1060,14 +1095,20 @@ public:
|
||||
{
|
||||
npc_azure_stalkerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_backstabTimer = 1300;
|
||||
_tacticalBlinkTimer = 8000;
|
||||
_tacticalBlinkCast = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_backstabTimer = 1300;
|
||||
_tacticalBlinkTimer = 8000;
|
||||
_tacticalBlinkCast =false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1125,9 +1166,18 @@ public:
|
||||
{
|
||||
npc_azure_spellbreakerAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneBlastTimer = 5000;
|
||||
uiSlowTimer = 4000;
|
||||
uiChainsOfIceTimer = 5000;
|
||||
uiConeOfColdTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneBlastTimer;
|
||||
uint32 uiSlowTimer;
|
||||
uint32 uiChainsOfIceTimer;
|
||||
@@ -1135,10 +1185,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneBlastTimer = 5000;
|
||||
uiSlowTimer = 4000;
|
||||
uiChainsOfIceTimer = 5000;
|
||||
uiConeOfColdTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1209,16 +1256,22 @@ public:
|
||||
{
|
||||
npc_azure_captainAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiMortalStrikeTimer = 5000;
|
||||
uiWhirlwindTimer = 8000;
|
||||
}
|
||||
|
||||
uint32 uiMortalStrikeTimer;
|
||||
uint32 uiWhirlwindTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiMortalStrikeTimer = 5000;
|
||||
uiWhirlwindTimer = 8000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1261,18 +1314,24 @@ public:
|
||||
{
|
||||
npc_azure_sorcerorAI(Creature* creature) : violet_hold_trashAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiArcaneStreamTimer = 4000;
|
||||
uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer;
|
||||
uiManaDetonationTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 uiArcaneStreamTimer;
|
||||
uint32 uiArcaneStreamTimerStartingValueHolder;
|
||||
uint32 uiManaDetonationTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiArcaneStreamTimer = 4000;
|
||||
uiArcaneStreamTimerStartingValueHolder = uiArcaneStreamTimer;
|
||||
uiManaDetonationTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
@@ -1311,13 +1370,21 @@ public:
|
||||
|
||||
struct npc_violet_hold_arcane_sphereAI : public ScriptedAI
|
||||
{
|
||||
npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_violet_hold_arcane_sphereAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
DespawnTimer = 3000;
|
||||
}
|
||||
|
||||
uint32 DespawnTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
DespawnTimer = 3000;
|
||||
Initialize();
|
||||
|
||||
me->SetDisableGravity(true);
|
||||
DoCast(me, SPELL_ARCANE_SPHERE_PASSIVE, true);
|
||||
|
||||
@@ -565,7 +565,18 @@ class npc_wyrmrest_defender : public CreatureScript
|
||||
|
||||
struct npc_wyrmrest_defenderAI : public VehicleAI
|
||||
{
|
||||
npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature) { }
|
||||
npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
hpWarningReady = true;
|
||||
renewRecoveryCanCheck = false;
|
||||
|
||||
RenewRecoveryChecker = 0;
|
||||
}
|
||||
|
||||
bool hpWarningReady;
|
||||
bool renewRecoveryCanCheck;
|
||||
@@ -574,10 +585,7 @@ class npc_wyrmrest_defender : public CreatureScript
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
hpWarningReady = true;
|
||||
renewRecoveryCanCheck = false;
|
||||
|
||||
RenewRecoveryChecker = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -464,7 +464,6 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
_despawnTimer = 5000;
|
||||
_playerGUID = 0;
|
||||
}
|
||||
|
||||
void MovementInform(uint32, uint32 id) override
|
||||
@@ -498,7 +497,6 @@ public:
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
private:
|
||||
uint64 _playerGUID;
|
||||
uint32 _despawnTimer;
|
||||
};
|
||||
|
||||
|
||||
@@ -91,17 +91,23 @@ public:
|
||||
{
|
||||
npc_argent_valiantAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
creature->GetMotionMaster()->MovePoint(0, 8599.258f, 963.951f, 547.553f);
|
||||
creature->setFaction(35); //wrong faction in db?
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
uiChargeTimer = 7000;
|
||||
uiShieldBreakerTimer = 10000;
|
||||
}
|
||||
|
||||
uint32 uiChargeTimer;
|
||||
uint32 uiShieldBreakerTimer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
uiChargeTimer = 7000;
|
||||
uiShieldBreakerTimer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MovementInform(uint32 uiType, uint32 /*uiId*/) override
|
||||
@@ -285,9 +291,15 @@ class npc_tournament_training_dummy : public CreatureScript
|
||||
{
|
||||
npc_tournament_training_dummyAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
isVulnerable = false;
|
||||
}
|
||||
|
||||
EventMap events;
|
||||
bool isVulnerable;
|
||||
|
||||
@@ -295,7 +307,7 @@ class npc_tournament_training_dummy : public CreatureScript
|
||||
{
|
||||
me->SetControlled(true, UNIT_STATE_STUNNED);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_KNOCK_BACK, true);
|
||||
isVulnerable = false;
|
||||
Initialize();
|
||||
|
||||
// Cast Defend spells to max stack size
|
||||
switch (me->GetEntry())
|
||||
|
||||
@@ -229,7 +229,15 @@ public:
|
||||
|
||||
struct npc_engineer_heliceAI : public npc_escortAI
|
||||
{
|
||||
npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature) { }
|
||||
npc_engineer_heliceAI(Creature* creature) : npc_escortAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
m_uiChatTimer = 4000;
|
||||
}
|
||||
|
||||
uint32 m_uiChatTimer;
|
||||
|
||||
@@ -274,7 +282,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
m_uiChatTimer = 4000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -366,9 +374,12 @@ public:
|
||||
|
||||
struct npc_jungle_punch_targetAI : public ScriptedAI
|
||||
{
|
||||
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_jungle_punch_targetAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
sayTimer = 3500;
|
||||
sayStep = 0;
|
||||
@@ -378,6 +389,11 @@ public:
|
||||
orphanGUID.Clear();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* who) override
|
||||
{
|
||||
if (!phase && who && who->GetDistance2d(me) < 10.0f)
|
||||
|
||||
@@ -179,13 +179,21 @@ public:
|
||||
|
||||
struct npc_brunnhildar_prisonerAI : public ScriptedAI
|
||||
{
|
||||
npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_brunnhildar_prisonerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
freed = false;
|
||||
}
|
||||
|
||||
bool freed;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
freed = false;
|
||||
Initialize();
|
||||
me->CastSpell(me, SPELL_ICE_PRISON, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -318,13 +318,21 @@ public:
|
||||
|
||||
struct npc_avatar_of_martyredAI : public ScriptedAI
|
||||
{
|
||||
npc_avatar_of_martyredAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_avatar_of_martyredAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Mortal_Strike_timer = 10000;
|
||||
}
|
||||
|
||||
uint32 Mortal_Strike_timer;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Mortal_Strike_timer = 10000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -62,6 +62,16 @@ public:
|
||||
{
|
||||
boss_shirrak_the_dead_watcherAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Inhibitmagic_Timer = 0;
|
||||
Attractmagic_Timer = 28000;
|
||||
Carnivorousbite_Timer = 10000;
|
||||
FocusFire_Timer = 17000;
|
||||
FocusedTargetGUID.Clear();
|
||||
}
|
||||
|
||||
uint32 Inhibitmagic_Timer;
|
||||
@@ -73,11 +83,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Inhibitmagic_Timer = 0;
|
||||
Attractmagic_Timer = 28000;
|
||||
Carnivorousbite_Timer = 10000;
|
||||
FocusFire_Timer = 17000;
|
||||
FocusedTargetGUID.Clear();
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -174,6 +180,13 @@ public:
|
||||
{
|
||||
npc_focus_fireAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
FieryBlast_Timer = 3000 + (rand32() % 1000);
|
||||
fiery1 = fiery2 = true;
|
||||
}
|
||||
|
||||
uint32 FieryBlast_Timer;
|
||||
@@ -181,8 +194,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
FieryBlast_Timer = 3000 + (rand32() % 1000);
|
||||
fiery1 = fiery2 = true;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -78,7 +78,22 @@ public:
|
||||
|
||||
struct boss_nexusprince_shaffarAI : public ScriptedAI
|
||||
{
|
||||
boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me) { HasTaunted = false; }
|
||||
boss_nexusprince_shaffarAI(Creature* creature) : ScriptedAI(creature), summons(me)
|
||||
{
|
||||
Initialize();
|
||||
HasTaunted = false;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Blink_Timer = 1500;
|
||||
Beacon_Timer = 10000;
|
||||
FireBall_Timer = 8000;
|
||||
Frostbolt_Timer = 4000;
|
||||
FrostNova_Timer = 15000;
|
||||
|
||||
CanBlink = false;
|
||||
}
|
||||
|
||||
uint32 Blink_Timer;
|
||||
uint32 Beacon_Timer;
|
||||
@@ -93,13 +108,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Blink_Timer = 1500;
|
||||
Beacon_Timer = 10000;
|
||||
FireBall_Timer = 8000;
|
||||
Frostbolt_Timer = 4000;
|
||||
FrostNova_Timer = 15000;
|
||||
|
||||
CanBlink = false;
|
||||
Initialize();
|
||||
|
||||
float dist = 8.0f;
|
||||
float posX, posY, posZ, angle;
|
||||
@@ -241,6 +250,14 @@ public:
|
||||
{
|
||||
npc_ethereal_beaconAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Apprentice_Timer = DUNGEON_MODE(20000, 10000);
|
||||
ArcaneBolt_Timer = 1000;
|
||||
Check_Timer = 1000;
|
||||
}
|
||||
|
||||
uint32 Apprentice_Timer;
|
||||
@@ -254,9 +271,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Apprentice_Timer = DUNGEON_MODE(20000, 10000);
|
||||
ArcaneBolt_Timer = 1000;
|
||||
Check_Timer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* who) override
|
||||
@@ -331,7 +346,16 @@ public:
|
||||
|
||||
struct npc_ethereal_apprenticeAI : public ScriptedAI
|
||||
{
|
||||
npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_ethereal_apprenticeAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Cast_Timer = 3000;
|
||||
isFireboltTurn = true;
|
||||
}
|
||||
|
||||
uint32 Cast_Timer;
|
||||
|
||||
@@ -339,8 +363,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Cast_Timer = 3000;
|
||||
isFireboltTurn = true;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
|
||||
@@ -67,14 +67,22 @@ class boss_anzu : public CreatureScript
|
||||
|
||||
struct boss_anzuAI : public BossAI
|
||||
{
|
||||
boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU) { }
|
||||
boss_anzuAI(Creature* creature) : BossAI(creature, DATA_ANZU)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_under33Percent = false;
|
||||
_under66Percent = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
//_Reset();
|
||||
events.Reset();
|
||||
_under33Percent = false;
|
||||
_under66Percent = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
|
||||
@@ -71,14 +71,22 @@ public:
|
||||
|
||||
struct boss_darkweaver_sythAI : public BossAI
|
||||
{
|
||||
boss_darkweaver_sythAI(Creature* creature) : BossAI(creature, DATA_DARKWEAVER_SYTH) { }
|
||||
boss_darkweaver_sythAI(Creature* creature) : BossAI(creature, DATA_DARKWEAVER_SYTH)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_summon90 = false;
|
||||
_summon50 = false;
|
||||
_summon10 = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
_Reset();
|
||||
summon90 = false;
|
||||
summon50 = false;
|
||||
summon10 = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
@@ -109,6 +117,29 @@ public:
|
||||
{
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
summoned->AI()->AttackStart(target);
|
||||
|
||||
summons.Summon(summoned);
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*attacker*/, uint32& damage) override
|
||||
{
|
||||
if (me->HealthBelowPctDamaged(90, damage) && !_summon90)
|
||||
{
|
||||
SythSummoning();
|
||||
_summon90 = true;
|
||||
}
|
||||
|
||||
if (me->HealthBelowPctDamaged(50, damage) && !_summon50)
|
||||
{
|
||||
SythSummoning();
|
||||
_summon50 = true;
|
||||
}
|
||||
|
||||
if (me->HealthBelowPctDamaged(10, damage) && !_summon10)
|
||||
{
|
||||
SythSummoning();
|
||||
_summon10 = true;
|
||||
}
|
||||
}
|
||||
|
||||
void SythSummoning()
|
||||
@@ -124,72 +155,44 @@ public:
|
||||
DoCast(me, SPELL_SUMMON_SYTH_SHADOW, true); //right
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
void ExecuteEvent(uint32 eventId) override
|
||||
{
|
||||
if (!UpdateVictim())
|
||||
return;
|
||||
|
||||
events.Update(diff);
|
||||
|
||||
while (uint32 eventId = events.ExecuteEvent())
|
||||
switch (eventId)
|
||||
{
|
||||
switch (eventId)
|
||||
{
|
||||
case EVENT_FLAME_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_FLAME_SHOCK);
|
||||
events.ScheduleEvent(EVENT_FLAME_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_ARCANE_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_ARCANE_SHOCK);
|
||||
events.ScheduleEvent(EVENT_ARCANE_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_FROST_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_FROST_SHOCK);
|
||||
events.ScheduleEvent(EVENT_FROST_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_SHADOW_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_SHADOW_SHOCK);
|
||||
events.ScheduleEvent(EVENT_SHADOW_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_CHAIN_LIGHTNING:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_CHAIN_LIGHTNING);
|
||||
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 25000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
case EVENT_FLAME_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_FLAME_SHOCK);
|
||||
events.ScheduleEvent(EVENT_FLAME_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_ARCANE_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_ARCANE_SHOCK);
|
||||
events.ScheduleEvent(EVENT_ARCANE_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_FROST_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_FROST_SHOCK);
|
||||
events.ScheduleEvent(EVENT_FROST_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_SHADOW_SHOCK:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_SHADOW_SHOCK);
|
||||
events.ScheduleEvent(EVENT_SHADOW_SHOCK, urand(10000, 15000));
|
||||
break;
|
||||
case EVENT_CHAIN_LIGHTNING:
|
||||
if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0))
|
||||
DoCast(target, SPELL_CHAIN_LIGHTNING);
|
||||
events.ScheduleEvent(EVENT_CHAIN_LIGHTNING, 25000);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
if (HealthBelowPct(90) && !summon90)
|
||||
{
|
||||
SythSummoning();
|
||||
summon90 = true;
|
||||
}
|
||||
|
||||
if (HealthBelowPct(50) && !summon50)
|
||||
{
|
||||
SythSummoning();
|
||||
summon50 = true;
|
||||
}
|
||||
|
||||
if (HealthBelowPct(10) && !summon10)
|
||||
{
|
||||
SythSummoning();
|
||||
summon10 = true;
|
||||
}
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
bool summon90;
|
||||
bool summon50;
|
||||
bool summon10;
|
||||
bool _summon90;
|
||||
bool _summon50;
|
||||
bool _summon10;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
@@ -208,19 +211,20 @@ public:
|
||||
{
|
||||
npc_syth_fireAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint32 flameshock_timer;
|
||||
uint32 flamebuffet_timer;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
||||
flameshock_timer = 2500;
|
||||
flamebuffet_timer = 5000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
@@ -245,6 +249,10 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 flameshock_timer;
|
||||
uint32 flamebuffet_timer;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
@@ -258,28 +266,24 @@ class npc_syth_arcane : public CreatureScript
|
||||
public:
|
||||
npc_syth_arcane() : CreatureScript("npc_syth_arcane") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_arcaneAI(creature);
|
||||
}
|
||||
|
||||
struct npc_syth_arcaneAI : public ScriptedAI
|
||||
{
|
||||
npc_syth_arcaneAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint32 arcaneshock_timer;
|
||||
uint32 arcanebuffet_timer;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true);
|
||||
arcaneshock_timer = 2500;
|
||||
arcanebuffet_timer = 5000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_ARCANE, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
@@ -304,7 +308,16 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 arcaneshock_timer;
|
||||
uint32 arcanebuffet_timer;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_arcaneAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
class npc_syth_frost : public CreatureScript
|
||||
@@ -312,28 +325,24 @@ class npc_syth_frost : public CreatureScript
|
||||
public:
|
||||
npc_syth_frost() : CreatureScript("npc_syth_frost") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_frostAI(creature);
|
||||
}
|
||||
|
||||
struct npc_syth_frostAI : public ScriptedAI
|
||||
{
|
||||
npc_syth_frostAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint32 frostshock_timer;
|
||||
uint32 frostbuffet_timer;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||
frostshock_timer = 2500;
|
||||
frostbuffet_timer = 5000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
@@ -358,8 +367,16 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 frostshock_timer;
|
||||
uint32 frostbuffet_timer;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_frostAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
class npc_syth_shadow : public CreatureScript
|
||||
@@ -367,28 +384,24 @@ class npc_syth_shadow : public CreatureScript
|
||||
public:
|
||||
npc_syth_shadow() : CreatureScript("npc_syth_shadow") { }
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_shadowAI(creature);
|
||||
}
|
||||
|
||||
struct npc_syth_shadowAI : public ScriptedAI
|
||||
{
|
||||
npc_syth_shadowAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint32 shadowshock_timer;
|
||||
uint32 shadowbuffet_timer;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
||||
shadowshock_timer = 2500;
|
||||
shadowbuffet_timer = 5000;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_SHADOW, true);
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 diff) override
|
||||
{
|
||||
@@ -413,8 +426,16 @@ public:
|
||||
|
||||
DoMeleeAttackIfReady();
|
||||
}
|
||||
|
||||
private:
|
||||
uint32 shadowshock_timer;
|
||||
uint32 shadowbuffet_timer;
|
||||
};
|
||||
|
||||
CreatureAI* GetAI(Creature* creature) const override
|
||||
{
|
||||
return new npc_syth_shadowAI(creature);
|
||||
}
|
||||
};
|
||||
|
||||
void AddSC_boss_darkweaver_syth()
|
||||
|
||||
@@ -86,13 +86,19 @@ class boss_grandmaster_vorpil : public CreatureScript
|
||||
{
|
||||
boss_grandmaster_vorpilAI(Creature* creature) : BossAI(creature, DATA_GRANDMASTER_VORPIL)
|
||||
{
|
||||
Initialize();
|
||||
_intro = false;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_helpYell = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_Reset();
|
||||
_helpYell = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void SummonPortals()
|
||||
@@ -223,13 +229,19 @@ class npc_voidtraveler : public CreatureScript
|
||||
{
|
||||
npc_voidtravelerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
_instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_moveTimer = 0;
|
||||
_sacrificed = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_moveTimer = 0;
|
||||
_sacrificed = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
@@ -95,13 +95,19 @@ public:
|
||||
{
|
||||
npc_wrathbone_flayerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
_instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
_enteredCombat = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
_events.ScheduleEvent(EVENT_GET_CHANNELERS, 3000);
|
||||
_enteredCombat = false;
|
||||
Initialize();
|
||||
_bloodmageList.clear();
|
||||
_deathshaperList.clear();
|
||||
}
|
||||
|
||||
@@ -68,9 +68,29 @@ public:
|
||||
{
|
||||
boss_gurtogg_bloodboilAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
TargetGUID.Clear();
|
||||
TargetThreat = 0;
|
||||
|
||||
BloodboilTimer = 10000;
|
||||
BloodboilCount = 0;
|
||||
AcidGeyserTimer = 1000;
|
||||
AcidicWoundTimer = 6000;
|
||||
ArcingSmashTimer = 19000;
|
||||
EnrageTimer = 600000;
|
||||
FelAcidTimer = 25000;
|
||||
EjectTimer = 10000;
|
||||
BewilderingStrikeTimer = 15000;
|
||||
PhaseChangeTimer = 60000;
|
||||
|
||||
Phase1 = true;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
ObjectGuid TargetGUID;
|
||||
@@ -94,22 +114,7 @@ public:
|
||||
{
|
||||
instance->SetBossState(DATA_GURTOGG_BLOODBOIL, NOT_STARTED);
|
||||
|
||||
TargetGUID.Clear();
|
||||
|
||||
TargetThreat = 0;
|
||||
|
||||
BloodboilTimer = 10000;
|
||||
BloodboilCount = 0;
|
||||
AcidGeyserTimer = 1000;
|
||||
AcidicWoundTimer = 6000;
|
||||
ArcingSmashTimer = 19000;
|
||||
EnrageTimer = 600000;
|
||||
FelAcidTimer = 25000;
|
||||
EjectTimer = 10000;
|
||||
BewilderingStrikeTimer = 15000;
|
||||
PhaseChangeTimer = 60000;
|
||||
|
||||
Phase1 = true;
|
||||
Initialize();
|
||||
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_TAUNT, false);
|
||||
me->ApplySpellImmune(0, IMMUNITY_EFFECT, SPELL_EFFECT_ATTACK_ME, false);
|
||||
|
||||
@@ -375,15 +375,23 @@ public:
|
||||
|
||||
struct flame_of_azzinothAI : public ScriptedAI
|
||||
{
|
||||
flame_of_azzinothAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
flame_of_azzinothAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
FlameBlastTimer = 15000;
|
||||
CheckTimer = 5000;
|
||||
GlaiveGUID.Clear();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
DoZoneInCombat();
|
||||
@@ -474,10 +482,30 @@ public:
|
||||
{
|
||||
boss_illidan_stormrageAI(Creature* creature) : ScriptedAI(creature), Summons(me)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
DoCast(me, SPELL_DUAL_WIELD, true);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
MaievGUID.Clear();
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
FlameGUID[i].Clear();
|
||||
GlaiveGUID[i].Clear();
|
||||
}
|
||||
|
||||
Phase = PHASE_ILLIDAN_NULL;
|
||||
Event = EVENT_NULL;
|
||||
Timer[EVENT_BERSERK] = 1500000;
|
||||
|
||||
HoverPoint = 0;
|
||||
TalkCount = 0;
|
||||
FlightCount = 0;
|
||||
TransformCount = 0;
|
||||
}
|
||||
|
||||
void Reset() override;
|
||||
|
||||
void JustSummoned(Creature* summon) override;
|
||||
@@ -1133,9 +1161,12 @@ public:
|
||||
|
||||
struct boss_maievAI : public ScriptedAI
|
||||
{
|
||||
boss_maievAI(Creature* creature) : ScriptedAI(creature) { };
|
||||
boss_maievAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
MaxTimer = 0;
|
||||
Phase = PHASE_NORMAL_MAIEV;
|
||||
@@ -1143,6 +1174,11 @@ public:
|
||||
Timer[EVENT_MAIEV_STEALTH] = 0;
|
||||
Timer[EVENT_MAIEV_TAUNT] = urand(22, 43) * 1000;
|
||||
Timer[EVENT_MAIEV_SHADOW_STRIKE] = 30000;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
SetEquipmentSlots(false, EQUIP_ID_MAIN_HAND_MAIEV, EQUIP_UNEQUIP, EQUIP_NO_CHANGE);
|
||||
me->SetUInt32Value(UNIT_VIRTUAL_ITEM_SLOT_ID + 2, 45738);
|
||||
}
|
||||
@@ -1268,7 +1304,7 @@ public:
|
||||
&& !Timer[EVENT_MAIEV_STEALTH])
|
||||
return;
|
||||
|
||||
Event = EVENT_MAIEV_NULL;
|
||||
EventMaiev Event = EVENT_MAIEV_NULL;
|
||||
for (uint8 i = 1; i <= MaxTimer; ++i)
|
||||
if (Timer[i])
|
||||
{
|
||||
@@ -1334,7 +1370,6 @@ public:
|
||||
private:
|
||||
ObjectGuid IllidanGUID;
|
||||
PhaseIllidan Phase;
|
||||
EventMaiev Event;
|
||||
uint32 Timer[5];
|
||||
uint32 MaxTimer;
|
||||
};
|
||||
@@ -1354,13 +1389,29 @@ public:
|
||||
{
|
||||
npc_akama_illidanAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
JustCreated = true;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ChannelGUID.Clear();
|
||||
SpiritGUID[0].Clear();
|
||||
SpiritGUID[1].Clear();
|
||||
|
||||
Phase = PHASE_AKAMA_NULL;
|
||||
Timer = 0;
|
||||
|
||||
ChannelCount = 0;
|
||||
TalkCount = 0;
|
||||
Check_Timer = 5000;
|
||||
WalkCount = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
WalkCount = 0;
|
||||
Initialize();
|
||||
instance->SetBossState(DATA_ILLIDAN_STORMRAGE, NOT_STARTED);
|
||||
|
||||
IllidanGUID = instance->GetGuidData(DATA_ILLIDAN_STORMRAGE);
|
||||
@@ -1384,17 +1435,6 @@ public:
|
||||
instance->HandleGameObject(DoorGUID[i], true);
|
||||
}
|
||||
|
||||
ChannelGUID.Clear();
|
||||
SpiritGUID[0].Clear();
|
||||
SpiritGUID[1].Clear();
|
||||
|
||||
Phase = PHASE_AKAMA_NULL;
|
||||
Timer = 0;
|
||||
|
||||
ChannelCount = 0;
|
||||
TalkCount = 0;
|
||||
Check_Timer = 5000;
|
||||
|
||||
KillAllElites();
|
||||
|
||||
me->SetUInt32Value(UNIT_NPC_FLAGS, 0); // Database sometimes has strange values..
|
||||
@@ -1552,7 +1592,6 @@ public:
|
||||
break;
|
||||
}
|
||||
Phase = NextPhase;
|
||||
Event = false;
|
||||
}
|
||||
|
||||
void HandleTalkSequence()
|
||||
@@ -1674,7 +1713,7 @@ public:
|
||||
Check_Timer = 5000;
|
||||
} else Check_Timer -= diff;
|
||||
}
|
||||
Event = false;
|
||||
bool Event = false;
|
||||
if (Timer)
|
||||
{
|
||||
if (Timer <= diff)
|
||||
@@ -1755,7 +1794,6 @@ public:
|
||||
bool JustCreated;
|
||||
InstanceScript* instance;
|
||||
PhaseAkama Phase;
|
||||
bool Event;
|
||||
uint32 Timer;
|
||||
ObjectGuid IllidanGUID;
|
||||
ObjectGuid ChannelGUID;
|
||||
@@ -1786,21 +1824,7 @@ void boss_illidan_stormrage::boss_illidan_stormrageAI::Reset()
|
||||
akama->AI()->EnterEvadeMode();
|
||||
}
|
||||
|
||||
MaievGUID.Clear();
|
||||
for (uint8 i = 0; i < 2; ++i)
|
||||
{
|
||||
FlameGUID[i].Clear();
|
||||
GlaiveGUID[i].Clear();
|
||||
}
|
||||
|
||||
Phase = PHASE_ILLIDAN_NULL;
|
||||
Event = EVENT_NULL;
|
||||
Timer[EVENT_BERSERK] = 1500000;
|
||||
|
||||
HoverPoint = 0;
|
||||
TalkCount = 0;
|
||||
FlightCount = 0;
|
||||
TransformCount = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetDisplayId(MODEL_ILLIDAN);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
@@ -1951,9 +1975,12 @@ public:
|
||||
|
||||
struct cage_trap_triggerAI : public ScriptedAI
|
||||
{
|
||||
cage_trap_triggerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
cage_trap_triggerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
IllidanGUID.Clear();
|
||||
|
||||
@@ -1961,6 +1988,11 @@ public:
|
||||
SummonedBeams = false;
|
||||
|
||||
DespawnTimer = 0;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
@@ -2130,14 +2162,20 @@ public:
|
||||
{
|
||||
npc_parasitic_shadowfiendAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CheckTimer = 5000;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
IllidanGUID = instance->GetGuidData(DATA_ILLIDAN_STORMRAGE);
|
||||
|
||||
CheckTimer = 5000;
|
||||
Initialize();
|
||||
DoCast(me, SPELL_SHADOWFIEND_PASSIVE, true);
|
||||
}
|
||||
|
||||
|
||||
@@ -144,7 +144,17 @@ public:
|
||||
{
|
||||
boss_reliquary_of_soulsAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
Counter = 0;
|
||||
Timer = 0;
|
||||
SoulCount = 0;
|
||||
SoulDeathCount = 0;
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Phase = 0;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
@@ -170,7 +180,7 @@ public:
|
||||
EssenceGUID.Clear();
|
||||
}
|
||||
|
||||
Phase = 0;
|
||||
Initialize();
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetUInt32Value(UNIT_NPC_EMOTESTATE, EMOTE_ONESHOT_NONE);
|
||||
@@ -396,9 +406,19 @@ public:
|
||||
|
||||
struct boss_essence_of_sufferingAI : public ScriptedAI
|
||||
{
|
||||
boss_essence_of_sufferingAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_essence_of_sufferingAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint64 StatAuraGUID;
|
||||
void Initialize()
|
||||
{
|
||||
AggroYellTimer = 5000;
|
||||
FixateTimer = 8000;
|
||||
EnrageTimer = 30000;
|
||||
SoulDrainTimer = 45000;
|
||||
AuraTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 AggroYellTimer;
|
||||
uint32 FixateTimer;
|
||||
@@ -408,13 +428,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
StatAuraGUID = 0;
|
||||
|
||||
AggroYellTimer = 5000;
|
||||
FixateTimer = 8000;
|
||||
EnrageTimer = 30000;
|
||||
SoulDrainTimer = 45000;
|
||||
AuraTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void DamageTaken(Unit* /*done_by*/, uint32 &damage) override
|
||||
@@ -519,7 +533,17 @@ public:
|
||||
|
||||
struct boss_essence_of_desireAI : public ScriptedAI
|
||||
{
|
||||
boss_essence_of_desireAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_essence_of_desireAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
RuneShieldTimer = 60000;
|
||||
DeadenTimer = 30000;
|
||||
SoulShockTimer = 5000;
|
||||
}
|
||||
|
||||
uint32 RuneShieldTimer;
|
||||
uint32 DeadenTimer;
|
||||
@@ -527,9 +551,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
RuneShieldTimer = 60000;
|
||||
DeadenTimer = 30000;
|
||||
SoulShockTimer = 5000;
|
||||
Initialize();
|
||||
me->ApplySpellImmune(0, IMMUNITY_STATE, SPELL_AURA_MOD_CONFUSE, true);
|
||||
}
|
||||
|
||||
@@ -622,19 +644,12 @@ public:
|
||||
|
||||
struct boss_essence_of_angerAI : public ScriptedAI
|
||||
{
|
||||
boss_essence_of_angerAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
boss_essence_of_angerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
ObjectGuid AggroTargetGUID;
|
||||
|
||||
uint32 CheckTankTimer;
|
||||
uint32 SoulScreamTimer;
|
||||
uint32 SpiteTimer;
|
||||
|
||||
std::list<uint64> SpiteTargetGUID;
|
||||
|
||||
bool CheckedAggro;
|
||||
|
||||
void Reset() override
|
||||
void Initialize()
|
||||
{
|
||||
AggroTargetGUID.Clear();
|
||||
|
||||
@@ -642,11 +657,22 @@ public:
|
||||
SoulScreamTimer = 10000;
|
||||
SpiteTimer = 30000;
|
||||
|
||||
SpiteTargetGUID.clear();
|
||||
|
||||
CheckedAggro = false;
|
||||
}
|
||||
|
||||
ObjectGuid AggroTargetGUID;
|
||||
|
||||
uint32 CheckTankTimer;
|
||||
uint32 SoulScreamTimer;
|
||||
uint32 SpiteTimer;
|
||||
|
||||
bool CheckedAggro;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override
|
||||
{
|
||||
Talk(ANGER_SAY_FREED);
|
||||
|
||||
@@ -165,12 +165,21 @@ public:
|
||||
|
||||
struct boss_shade_of_akamaAI : public ScriptedAI
|
||||
{
|
||||
boss_shade_of_akamaAI(Creature* creature) : ScriptedAI(creature), HasKilledAkamaAndReseting(false)
|
||||
boss_shade_of_akamaAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
combatStarted = false;
|
||||
akamaReached = false;
|
||||
HasKilledAkama = false;
|
||||
HasKilledAkamaAndReseting = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
if (!HasKilledAkamaAndReseting)
|
||||
@@ -190,10 +199,7 @@ public:
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC);
|
||||
|
||||
me->SetWalk(true);
|
||||
combatStarted = false;
|
||||
akamaReached = false;
|
||||
HasKilledAkama = false;
|
||||
HasKilledAkamaAndReseting = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -417,18 +423,24 @@ public:
|
||||
{
|
||||
npc_akamaAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
StartChannel = false;
|
||||
StartCombat = false;
|
||||
HasYelledOnce = false;
|
||||
ShadeHasDied = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->setFaction(FACTION_FRIENDLY);
|
||||
me->SetFlag(UNIT_NPC_FLAGS, UNIT_NPC_FLAG_GOSSIP);
|
||||
DoCast(me, SPELL_STEALTH);
|
||||
StartChannel = false;
|
||||
StartCombat = false;
|
||||
HasYelledOnce = false;
|
||||
ShadeHasDied = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -631,15 +643,21 @@ public:
|
||||
{
|
||||
npc_creature_generator_akamaAI(Creature* creature) : ScriptedAI(creature), Summons(me)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
doSpawning = false;
|
||||
leftSide = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
Summons.DespawnAll();
|
||||
|
||||
doSpawning = false;
|
||||
leftSide = false;
|
||||
Initialize();
|
||||
|
||||
if (me->GetPositionY() < 400.0f)
|
||||
leftSide = true;
|
||||
@@ -739,8 +757,14 @@ public:
|
||||
{
|
||||
npc_ashtongue_sorcererAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
startedBanishing = false;
|
||||
switchToCombat = false;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
@@ -760,8 +784,7 @@ public:
|
||||
}
|
||||
|
||||
summonerGuid.Clear();
|
||||
startedBanishing = false;
|
||||
switchToCombat = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -1111,14 +1134,20 @@ public:
|
||||
{
|
||||
npc_ashtongue_spiritbinderAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
spiritMend = false;
|
||||
chainHeal = false;
|
||||
summonerGuid.Clear();
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
spiritMend = false;
|
||||
chainHeal = false;
|
||||
summonerGuid.Clear();
|
||||
Initialize();
|
||||
|
||||
if (Unit* target = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_AKAMA_SHADE)))
|
||||
AttackStart(target);
|
||||
|
||||
@@ -223,16 +223,22 @@ public:
|
||||
{
|
||||
npc_volcanoAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
SetCombatMovement(false);
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
wait = 3000;
|
||||
}
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
//DoCast(me, SPELL_VOLCANIC_ERUPTION);
|
||||
me->SetReactState(REACT_PASSIVE);
|
||||
wait = 3000;
|
||||
Initialize();
|
||||
}
|
||||
uint32 wait;
|
||||
|
||||
|
||||
@@ -63,7 +63,17 @@ public:
|
||||
|
||||
struct npc_doom_blossomAI : public ScriptedAI
|
||||
{
|
||||
npc_doom_blossomAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_doom_blossomAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CheckTeronTimer = 5000;
|
||||
ShadowBoltTimer = 12000;
|
||||
TeronGUID.Clear();
|
||||
}
|
||||
|
||||
uint32 CheckTeronTimer;
|
||||
uint32 ShadowBoltTimer;
|
||||
@@ -71,9 +81,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CheckTeronTimer = 5000;
|
||||
ShadowBoltTimer = 12000;
|
||||
TeronGUID.Clear();
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -132,7 +140,19 @@ public:
|
||||
|
||||
struct npc_shadowy_constructAI : public ScriptedAI
|
||||
{
|
||||
npc_shadowy_constructAI(Creature* creature) : ScriptedAI(creature) { }
|
||||
npc_shadowy_constructAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
GhostGUID.Clear();
|
||||
TeronGUID.Clear();
|
||||
|
||||
CheckPlayerTimer = 2000;
|
||||
CheckTeronTimer = 5000;
|
||||
}
|
||||
|
||||
ObjectGuid GhostGUID;
|
||||
ObjectGuid TeronGUID;
|
||||
@@ -142,11 +162,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
GhostGUID.Clear();
|
||||
TeronGUID.Clear();
|
||||
|
||||
CheckPlayerTimer = 2000;
|
||||
CheckTeronTimer = 5000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
@@ -224,9 +240,25 @@ public:
|
||||
{
|
||||
boss_teron_gorefiendAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
IncinerateTimer = urand(20000, 31000);
|
||||
SummonDoomBlossomTimer = 12000;
|
||||
EnrageTimer = 600000;
|
||||
CrushingShadowsTimer = 22000;
|
||||
SummonShadowsTimer = 60000;
|
||||
RandomYellTimer = 50000;
|
||||
|
||||
AggroTimer = 20000;
|
||||
AggroTargetGUID.Clear();
|
||||
Intro = false;
|
||||
Done = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 IncinerateTimer;
|
||||
@@ -248,21 +280,11 @@ public:
|
||||
{
|
||||
instance->SetBossState(DATA_TERON_GOREFIEND, NOT_STARTED);
|
||||
|
||||
IncinerateTimer = urand(20000, 31000);
|
||||
SummonDoomBlossomTimer = 12000;
|
||||
EnrageTimer = 600000;
|
||||
CrushingShadowsTimer = 22000;
|
||||
SummonShadowsTimer = 60000;
|
||||
RandomYellTimer = 50000;
|
||||
Initialize();
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
// Start off unattackable so that the intro is done properly
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE);
|
||||
|
||||
AggroTimer = 20000;
|
||||
AggroTargetGUID.Clear();
|
||||
Intro = false;
|
||||
Done = false;
|
||||
}
|
||||
|
||||
void EnterCombat(Unit* /*who*/) override { }
|
||||
|
||||
@@ -129,6 +129,17 @@ public:
|
||||
{
|
||||
npc_blood_elf_council_voice_triggerAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
EnrageTimer = 900000; // 15 minutes
|
||||
AggroYellTimer = 500;
|
||||
|
||||
YellCounter = 0;
|
||||
|
||||
EventStarted = false;
|
||||
}
|
||||
|
||||
ObjectGuid Council[4];
|
||||
@@ -142,12 +153,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
EnrageTimer = 900000; // 15 minutes
|
||||
AggroYellTimer = 500;
|
||||
|
||||
YellCounter = 0;
|
||||
|
||||
EventStarted = false;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
// finds and stores the GUIDs for each Council member using instance data system.
|
||||
@@ -223,9 +229,19 @@ public:
|
||||
{
|
||||
npc_illidari_councilAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CheckTimer = 2000;
|
||||
EndEventTimer = 0;
|
||||
|
||||
DeathCount = 0;
|
||||
EventBegun = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
ObjectGuid Council[4];
|
||||
@@ -239,10 +255,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CheckTimer = 2000;
|
||||
EndEventTimer = 0;
|
||||
|
||||
DeathCount = 0;
|
||||
Initialize();
|
||||
|
||||
Creature* pMember = NULL;
|
||||
for (uint8 i = 0; i < 4; ++i)
|
||||
@@ -263,8 +276,6 @@ public:
|
||||
if (Creature* VoiceTrigger = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_BLOOD_ELF_COUNCIL_VOICE)))
|
||||
VoiceTrigger->AI()->EnterEvadeMode();
|
||||
|
||||
EventBegun = false;
|
||||
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
me->SetDisplayId(11686);
|
||||
@@ -451,7 +462,19 @@ public:
|
||||
|
||||
struct boss_gathios_the_shattererAI : public boss_illidari_councilAI
|
||||
{
|
||||
boss_gathios_the_shattererAI(Creature* creature) : boss_illidari_councilAI(creature) { }
|
||||
boss_gathios_the_shattererAI(Creature* creature) : boss_illidari_councilAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
ConsecrationTimer = 40000;
|
||||
HammerOfJusticeTimer = 10000;
|
||||
SealTimer = 40000;
|
||||
AuraTimer = 90000;
|
||||
BlessingTimer = 60000;
|
||||
}
|
||||
|
||||
uint32 ConsecrationTimer;
|
||||
uint32 HammerOfJusticeTimer;
|
||||
@@ -461,11 +484,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
ConsecrationTimer = 40000;
|
||||
HammerOfJusticeTimer = 10000;
|
||||
SealTimer = 40000;
|
||||
AuraTimer = 90000;
|
||||
BlessingTimer = 60000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
@@ -583,7 +602,20 @@ public:
|
||||
|
||||
struct boss_high_nethermancer_zerevorAI : public boss_illidari_councilAI
|
||||
{
|
||||
boss_high_nethermancer_zerevorAI(Creature* creature) : boss_illidari_councilAI(creature) { }
|
||||
boss_high_nethermancer_zerevorAI(Creature* creature) : boss_illidari_councilAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
BlizzardTimer = urand(30, 91) * 1000;
|
||||
FlamestrikeTimer = urand(30, 91) * 1000;
|
||||
ArcaneBoltTimer = 10000;
|
||||
DampenMagicTimer = 2000;
|
||||
ArcaneExplosionTimer = 14000;
|
||||
Cooldown = 0;
|
||||
}
|
||||
|
||||
uint32 BlizzardTimer;
|
||||
uint32 FlamestrikeTimer;
|
||||
@@ -594,12 +626,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
BlizzardTimer = urand(30, 91) * 1000;
|
||||
FlamestrikeTimer = urand(30, 91) * 1000;
|
||||
ArcaneBoltTimer = 10000;
|
||||
DampenMagicTimer = 2000;
|
||||
ArcaneExplosionTimer = 14000;
|
||||
Cooldown = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
@@ -687,7 +714,18 @@ public:
|
||||
|
||||
struct boss_lady_malandeAI : public boss_illidari_councilAI
|
||||
{
|
||||
boss_lady_malandeAI(Creature* creature) : boss_illidari_councilAI(creature) { }
|
||||
boss_lady_malandeAI(Creature* creature) : boss_illidari_councilAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
EmpoweredSmiteTimer = 38000;
|
||||
CircleOfHealingTimer = 20000;
|
||||
DivineWrathTimer = 40000;
|
||||
ReflectiveShieldTimer = 0;
|
||||
}
|
||||
|
||||
uint32 EmpoweredSmiteTimer;
|
||||
uint32 CircleOfHealingTimer;
|
||||
@@ -696,10 +734,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
EmpoweredSmiteTimer = 38000;
|
||||
CircleOfHealingTimer = 20000;
|
||||
DivineWrathTimer = 40000;
|
||||
ReflectiveShieldTimer = 0;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void KilledUnit(Unit* /*victim*/) override
|
||||
@@ -765,9 +800,19 @@ public:
|
||||
|
||||
struct boss_veras_darkshadowAI : public boss_illidari_councilAI
|
||||
{
|
||||
boss_veras_darkshadowAI(Creature* creature) : boss_illidari_councilAI(creature) { }
|
||||
boss_veras_darkshadowAI(Creature* creature) : boss_illidari_councilAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
}
|
||||
|
||||
uint64 EnvenomTargetGUID;
|
||||
void Initialize()
|
||||
{
|
||||
DeadlyPoisonTimer = 20000;
|
||||
VanishTimer = urand(60, 121) * 1000;
|
||||
AppearEnvenomTimer = 150000;
|
||||
|
||||
HasVanished = false;
|
||||
}
|
||||
|
||||
uint32 DeadlyPoisonTimer;
|
||||
uint32 VanishTimer;
|
||||
@@ -777,13 +822,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
EnvenomTargetGUID = 0;
|
||||
|
||||
DeadlyPoisonTimer = 20000;
|
||||
VanishTimer = urand(60, 121) * 1000;
|
||||
AppearEnvenomTimer = 150000;
|
||||
|
||||
HasVanished = false;
|
||||
Initialize();
|
||||
me->SetVisible(true);
|
||||
me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
}
|
||||
|
||||
@@ -111,9 +111,19 @@ public:
|
||||
{
|
||||
boss_fathomlord_karathressAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CataclysmicBolt_Timer = 10000;
|
||||
Enrage_Timer = 600000; //10 minutes
|
||||
SearNova_Timer = 20000 + rand32() % 40000; // 20 - 60 seconds
|
||||
|
||||
BlessingOfTides = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 CataclysmicBolt_Timer;
|
||||
@@ -126,11 +136,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CataclysmicBolt_Timer = 10000;
|
||||
Enrage_Timer = 600000; //10 minutes
|
||||
SearNova_Timer = 20000 + rand32() % 40000; // 20 - 60 seconds
|
||||
|
||||
BlessingOfTides = false;
|
||||
Initialize();
|
||||
|
||||
ObjectGuid RAdvisors[MAX_ADVISORS];
|
||||
RAdvisors[0] = instance->GetGuidData(DATA_SHARKKIS);
|
||||
@@ -304,9 +310,20 @@ public:
|
||||
{
|
||||
boss_fathomguard_sharkkisAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
LeechingThrow_Timer = 20000;
|
||||
TheBeastWithin_Timer = 30000;
|
||||
Multishot_Timer = 15000;
|
||||
Pet_Timer = 10000;
|
||||
|
||||
pet = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 LeechingThrow_Timer;
|
||||
@@ -320,12 +337,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
LeechingThrow_Timer = 20000;
|
||||
TheBeastWithin_Timer = 30000;
|
||||
Multishot_Timer = 15000;
|
||||
Pet_Timer = 10000;
|
||||
|
||||
pet = false;
|
||||
Initialize();
|
||||
|
||||
Creature* Pet = ObjectAccessor::GetCreature(*me, SummonedPet);
|
||||
if (Pet && Pet->IsAlive())
|
||||
@@ -442,9 +454,18 @@ public:
|
||||
{
|
||||
boss_fathomguard_tidalvessAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
FrostShock_Timer = 25000;
|
||||
Spitfire_Timer = 60000;
|
||||
PoisonCleansing_Timer = 30000;
|
||||
Earthbind_Timer = 45000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 FrostShock_Timer;
|
||||
@@ -454,10 +475,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
FrostShock_Timer = 25000;
|
||||
Spitfire_Timer = 60000;
|
||||
PoisonCleansing_Timer = 30000;
|
||||
Earthbind_Timer = 45000;
|
||||
Initialize();
|
||||
|
||||
instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
||||
}
|
||||
@@ -558,9 +576,18 @@ public:
|
||||
{
|
||||
boss_fathomguard_caribdisAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
WaterBoltVolley_Timer = 35000;
|
||||
TidalSurge_Timer = 15000 + rand32() % 5000;
|
||||
Heal_Timer = 55000;
|
||||
Cyclone_Timer = 30000 + rand32() % 10000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 WaterBoltVolley_Timer;
|
||||
@@ -570,10 +597,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
WaterBoltVolley_Timer = 35000;
|
||||
TidalSurge_Timer = 15000 + rand32() % 5000;
|
||||
Heal_Timer = 55000;
|
||||
Cyclone_Timer = 30000 + rand32() % 10000;
|
||||
Initialize();
|
||||
|
||||
instance->SetData(DATA_KARATHRESSEVENT, NOT_STARTED);
|
||||
}
|
||||
|
||||
@@ -93,9 +93,27 @@ public:
|
||||
{
|
||||
boss_hydross_the_unstableAI(Creature* creature) : ScriptedAI(creature), Summons(me)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
beams[0].Clear();
|
||||
beams[1].Clear();
|
||||
PosCheck_Timer = 2500;
|
||||
MarkOfHydross_Timer = 15000;
|
||||
MarkOfCorruption_Timer = 15000;
|
||||
WaterTomb_Timer = 7000;
|
||||
VileSludge_Timer = 7000;
|
||||
MarkOfHydross_Count = 0;
|
||||
MarkOfCorruption_Count = 0;
|
||||
EnrageTimer = 600000;
|
||||
|
||||
CorruptedForm = false;
|
||||
beam = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
ObjectGuid beams[2];
|
||||
@@ -114,18 +132,8 @@ public:
|
||||
void Reset() override
|
||||
{
|
||||
DeSummonBeams();
|
||||
beams[0].Clear();
|
||||
beams[1].Clear();
|
||||
PosCheck_Timer = 2500;
|
||||
MarkOfHydross_Timer = 15000;
|
||||
MarkOfCorruption_Timer = 15000;
|
||||
WaterTomb_Timer = 7000;
|
||||
VileSludge_Timer = 7000;
|
||||
MarkOfHydross_Count = 0;
|
||||
MarkOfCorruption_Count = 0;
|
||||
EnrageTimer = 600000;
|
||||
Initialize();
|
||||
|
||||
CorruptedForm = false;
|
||||
me->SetMeleeDamageSchool(SPELL_SCHOOL_FROST);
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FROST, true);
|
||||
me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, false);
|
||||
@@ -133,7 +141,6 @@ public:
|
||||
me->SetDisplayId(MODEL_CLEAN);
|
||||
|
||||
instance->SetData(DATA_HYDROSSTHEUNSTABLEEVENT, NOT_STARTED);
|
||||
beam = false;
|
||||
Summons.DespawnAll();
|
||||
}
|
||||
|
||||
|
||||
@@ -147,12 +147,34 @@ public:
|
||||
{
|
||||
boss_lady_vashjAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
Intro = false;
|
||||
JustCreated = true;
|
||||
CanAttack = false;
|
||||
creature->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NON_ATTACKABLE); // set it only once on Creature create (no need do intro if wiped)
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
AggroTimer = 19000;
|
||||
ShockBlastTimer = 1 + rand32() % 60000;
|
||||
EntangleTimer = 30000;
|
||||
StaticChargeTimer = 10000 + rand32() % 15000;
|
||||
ForkedLightningTimer = 2000;
|
||||
CheckTimer = 15000;
|
||||
EnchantedElementalTimer = 5000;
|
||||
TaintedElementalTimer = 50000;
|
||||
CoilfangEliteTimer = 45000 + rand32() % 5000;
|
||||
CoilfangStriderTimer = 60000 + rand32() % 10000;
|
||||
SummonSporebatTimer = 10000;
|
||||
SummonSporebatStaticTimer = 30000;
|
||||
EnchantedElementalPos = 0;
|
||||
Phase = 0;
|
||||
|
||||
Entangle = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
ObjectGuid ShieldGeneratorChannel[4];
|
||||
@@ -179,22 +201,8 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
AggroTimer = 19000;
|
||||
ShockBlastTimer = 1 + rand32() % 60000;
|
||||
EntangleTimer = 30000;
|
||||
StaticChargeTimer = 10000 + rand32() % 15000;
|
||||
ForkedLightningTimer = 2000;
|
||||
CheckTimer = 15000;
|
||||
EnchantedElementalTimer = 5000;
|
||||
TaintedElementalTimer = 50000;
|
||||
CoilfangEliteTimer = 45000 + rand32() % 5000;
|
||||
CoilfangStriderTimer = 60000 + rand32() % 10000;
|
||||
SummonSporebatTimer = 10000;
|
||||
SummonSporebatStaticTimer = 30000;
|
||||
EnchantedElementalPos = 0;
|
||||
Phase = 0;
|
||||
Initialize();
|
||||
|
||||
Entangle = false;
|
||||
if (JustCreated)
|
||||
{
|
||||
CanAttack = false;
|
||||
@@ -555,9 +563,20 @@ public:
|
||||
{
|
||||
npc_enchanted_elementalAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
Move = 0;
|
||||
Phase = 1;
|
||||
|
||||
X = ElementWPPos[0][0];
|
||||
Y = ElementWPPos[0][1];
|
||||
Z = ElementWPPos[0][2];
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
uint32 Move;
|
||||
uint32 Phase;
|
||||
@@ -569,12 +588,7 @@ public:
|
||||
{
|
||||
me->SetSpeed(MOVE_WALK, 0.6f); // walk
|
||||
me->SetSpeed(MOVE_RUN, 0.6f); // run
|
||||
Move = 0;
|
||||
Phase = 1;
|
||||
|
||||
X = ElementWPPos[0][0];
|
||||
Y = ElementWPPos[0][1];
|
||||
Z = ElementWPPos[0][2];
|
||||
Initialize();
|
||||
|
||||
//search for nearest waypoint (up on stairs)
|
||||
for (uint32 i = 1; i < 8; ++i)
|
||||
@@ -644,9 +658,16 @@ public:
|
||||
{
|
||||
npc_tainted_elementalAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
PoisonBoltTimer = 5000 + rand32() % 5000;
|
||||
DespawnTimer = 30000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 PoisonBoltTimer;
|
||||
@@ -654,8 +675,7 @@ public:
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
PoisonBoltTimer = 5000 + rand32() % 5000;
|
||||
DespawnTimer = 30000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void JustDied(Unit* /*killer*/) override
|
||||
@@ -712,10 +732,19 @@ public:
|
||||
{
|
||||
npc_toxic_sporebatAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
EnterEvadeMode();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
MovementTimer = 0;
|
||||
ToxicSporeTimer = 5000;
|
||||
BoltTimer = 5500;
|
||||
CheckTimer = 1000;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
|
||||
uint32 MovementTimer;
|
||||
@@ -727,10 +756,7 @@ public:
|
||||
{
|
||||
me->SetDisableGravity(true);
|
||||
me->setFaction(14);
|
||||
MovementTimer = 0;
|
||||
ToxicSporeTimer = 5000;
|
||||
BoltTimer = 5500;
|
||||
CheckTimer = 1000;
|
||||
Initialize();
|
||||
}
|
||||
|
||||
void MoveInLineOfSight(Unit* /*who*/) override
|
||||
@@ -808,17 +834,23 @@ public:
|
||||
{
|
||||
npc_shield_generator_channelAI(Creature* creature) : ScriptedAI(creature)
|
||||
{
|
||||
Initialize();
|
||||
instance = creature->GetInstanceScript();
|
||||
}
|
||||
|
||||
void Initialize()
|
||||
{
|
||||
CheckTimer = 0;
|
||||
Cast = false;
|
||||
}
|
||||
|
||||
InstanceScript* instance;
|
||||
uint32 CheckTimer;
|
||||
bool Cast;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
CheckTimer = 0;
|
||||
Cast = false;
|
||||
Initialize();
|
||||
me->SetDisplayId(11686); // invisible
|
||||
|
||||
me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_NOT_SELECTABLE);
|
||||
|
||||
@@ -73,13 +73,6 @@ public:
|
||||
}
|
||||
}
|
||||
|
||||
uint64 OgreGUID;
|
||||
|
||||
void Reset() override
|
||||
{
|
||||
OgreGUID = 0;
|
||||
}
|
||||
|
||||
void UpdateAI(uint32 /*diff*/) override { }
|
||||
};
|
||||
|
||||
|
||||
@@ -459,7 +459,10 @@ class spell_dru_innervate : public SpellScriptLoader
|
||||
|
||||
void CalculateAmount(AuraEffect const* aurEff, int32& amount, bool& /*canBeRecalculated*/)
|
||||
{
|
||||
amount = CalculatePct(int32(GetUnitOwner()->GetCreatePowers(POWER_MANA) / aurEff->GetTotalTicks()), amount);
|
||||
if (Unit* caster = GetCaster())
|
||||
amount = int32(CalculatePct(caster->GetCreatePowers(POWER_MANA), amount) / aurEff->GetTotalTicks());
|
||||
else
|
||||
amount = 0;
|
||||
}
|
||||
|
||||
void Register() override
|
||||
|
||||
Reference in New Issue
Block a user