diff options
47 files changed, 3189 insertions, 477 deletions
diff --git a/sql/updates/world/2015_07_19_00_world_2015_07_18_04.sql b/sql/updates/world/2015_07_19_00_world_2015_07_18_04.sql new file mode 100644 index 00000000000..852eae9ecf2 --- /dev/null +++ b/sql/updates/world/2015_07_19_00_world_2015_07_18_04.sql @@ -0,0 +1,45 @@ +DROP TABLE IF EXISTS `gameobject_template_locale`; +CREATE TABLE IF NOT EXISTS `gameobject_template_locale` ( + `entry` MEDIUMINT(8) UNSIGNED NOT NULL DEFAULT '0', + `locale` VARCHAR(4) NOT NULL, + `name` TEXT, + `castBarCaption` TEXT, + `VerifiedBuild` SMALLINT(5) DEFAULT '0' +) ENGINE=MYISAM DEFAULT CHARSET=utf8; + +ALTER TABLE `gameobject_template_locale` + ADD PRIMARY KEY (`entry`,`locale`); + +-- koKR +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "koKR", `name_loc1`, `castbarcaption_loc1`, `VerifiedBuild` FROM `locales_gameobject`); + +-- frFR +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "frFR", `name_loc2`, `castbarcaption_loc2`, `VerifiedBuild` FROM `locales_gameobject`); + +-- deDE +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "deDE", `name_loc3`, `castbarcaption_loc3`, `VerifiedBuild` FROM `locales_gameobject`); + +-- zhCN +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "zhCN", `name_loc4`, `castbarcaption_loc4`, `VerifiedBuild` FROM `locales_gameobject`); + +-- zhTW +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "zhTW", `name_loc5`, `castbarcaption_loc5`, `VerifiedBuild` FROM `locales_gameobject`); + +-- esES +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "esES", `name_loc6`, `castbarcaption_loc6`, `VerifiedBuild` FROM `locales_gameobject`); + +-- esMX +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "esMX", `name_loc7`, `castbarcaption_loc7`, `VerifiedBuild` FROM `locales_gameobject`); + +-- ruRU +INSERT INTO `gameobject_template_locale` (`entry`, `locale`, `name`, `castBarCaption`, `VerifiedBuild`) + (SELECT `entry`, "ruRU", `name_loc8`, `castbarcaption_loc8`, `VerifiedBuild` FROM `locales_gameobject`); + +DROP TABLE IF EXISTS `locales_gameobject`; diff --git a/sql/updates/world/2015_07_19_01_world.sql b/sql/updates/world/2015_07_19_01_world.sql new file mode 100644 index 00000000000..fc14961d089 --- /dev/null +++ b/sql/updates/world/2015_07_19_01_world.sql @@ -0,0 +1,49 @@ +-- Missing Emotes for Crystalline Ice Giant in Dragonblight +-- Crystalline Ice Giant SAI 1 +SET @GUID := -112879; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 2 +SET @GUID := -112860; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 3 +SET @GUID := -112853; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 4 +SET @GUID := -112858; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 5 +SET @GUID := -112874; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 6 +SET @GUID := -112848; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); + +-- Crystalline Ice Giant SAI 7 +SET @GUID := -112854; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=26291; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@GUID 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 +(@GUID,0,0,0,1,0,100,0,3000,5000,3000,5000,11,50298,0,0,0,0,0,19,26358,200,0,0,0,0,0,"Crystalline Ice Giant - Out of Combat - Cast 'Boulder Miss'"); diff --git a/sql/updates/world/2015_07_19_02_world.sql b/sql/updates/world/2015_07_19_02_world.sql new file mode 100644 index 00000000000..92aad97bccf --- /dev/null +++ b/sql/updates/world/2015_07_19_02_world.sql @@ -0,0 +1,914 @@ +-- Jortun +SET @NPC := 112693; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=3966.579,`position_y`=272.363,`position_z`=15.73003 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,3966.579,272.363,15.73003,0,0,0,0,100,0), +(@PATH,2,3961.079,270.613,15.48003,0,0,0,0,100,0), +(@PATH,3,3973.329,260.363,14.73003,0,0,0,0,100,0), +(@PATH,4,3979.829,254.613,15.98003,0,0,0,0,100,0), +(@PATH,5,3981.329,253.363,17.98003,0,0,0,0,100,0), +(@PATH,6,3987.59,248.0518,18.82422,0,0,0,0,100,0), +(@PATH,7,3989.59,247.8018,19.57422,0,0,0,0,100,0), +(@PATH,8,4013.34,246.0518,20.32422,0,0,0,0,100,0), +(@PATH,9,4014.34,245.8018,20.82422,0,0,0,0,100,0), +(@PATH,10,4015.34,245.8018,21.57422,0,0,0,0,100,0), +(@PATH,11,4016.34,245.8018,22.32422,0,0,0,0,100,0), +(@PATH,12,4022.34,245.3018,23.07422,0,0,0,0,100,0), +(@PATH,13,4022.455,245.0236,23.22869,0,0,0,0,100,0), +(@PATH,14,4023.205,244.7736,23.22869,0,0,0,0,100,0), +(@PATH,15,4030.205,244.2736,23.97869,0,0,0,0,100,0), +(@PATH,16,4035.205,243.7736,24.22869,0,0,0,0,100,0), +(@PATH,17,4041.955,243.2736,24.97869,0,0,0,0,100,0), +(@PATH,18,4050.955,242.2736,25.47869,0,0,0,0,100,0), +(@PATH,19,4051.224,242.1657,25.6583,0,0,0,0,100,0), +(@PATH,20,4055.724,241.6657,26.1583,0,0,0,0,100,0), +(@PATH,21,4060.474,240.4157,26.9083,0,0,0,0,100,0), +(@PATH,22,4064.474,239.6657,27.4083,0,0,0,0,100,0), +(@PATH,23,4069.224,238.4157,27.9083,0,0,0,0,100,0), +(@PATH,24,4075.724,236.6657,28.4083,0,0,0,0,100,0), +(@PATH,25,4086.474,234.4157,29.1583,0,0,0,0,100,0), +(@PATH,26,4090.474,233.6657,28.1583,0,0,0,0,100,0), +(@PATH,27,4092.474,233.1657,27.6583,0,0,0,0,100,0), +(@PATH,28,4096.224,232.1657,28.1583,0,0,0,0,100,0), +(@PATH,29,4098.224,231.6657,29.1583,0,0,0,0,100,0), +(@PATH,30,4100.224,231.1657,29.9083,0,0,0,0,100,0), +(@PATH,31,4096.492,231.9982,28.5828,0,0,0,0,100,0), +(@PATH,32,4098.492,231.4982,29.3328,0,0,0,0,100,0), +(@PATH,33,4100.492,230.9982,29.8328,0,0,0,0,100,0), +(@PATH,34,4101.492,230.7482,30.0828,0,0,0,0,100,0), +(@PATH,35,4126.742,211.4982,29.0828,0,0,0,0,100,0), +(@PATH,36,4130.742,208.4982,30.0828,0,0,0,0,100,0), +(@PATH,37,4126.928,211.2156,29.37246,0,0,0,0,100,0), +(@PATH,38,4130.928,208.2156,30.37246,0,0,0,0,100,0), +(@PATH,39,4132.178,207.2156,30.87246,0,0,0,0,100,0), +(@PATH,40,4133.928,205.9656,32.37246,0,0,0,0,100,0), +(@PATH,41,4158.026,187.5103,33.04226,0,0,0,0,100,0), +(@PATH,42,4177.526,171.0103,33.54226,0,0,0,0,100,0), +(@PATH,43,4181.526,167.7603,34.29226,0,0,0,0,100,0), +(@PATH,44,4177.997,170.6888,33.88856,0,0,0,0,100,0), +(@PATH,45,4181.747,167.4388,34.13856,0,0,0,0,100,0), +(@PATH,46,4182.247,166.9388,34.38856,0,0,0,0,100,0), +(@PATH,47,4183.997,165.6888,34.88856,0,0,0,0,100,0), +(@PATH,48,4188.747,162.1888,35.38856,0,0,0,0,100,0), +(@PATH,49,4194.247,158.4388,36.13856,0,0,0,0,100,0), +(@PATH,50,4198.997,154.9388,36.63856,0,0,0,0,100,0), +(@PATH,51,4201.497,153.1888,35.88856,0,0,0,0,100,0), +(@PATH,52,4203.247,151.9388,34.88856,0,0,0,0,100,0), +(@PATH,53,4201.792,152.8958,36.00117,0,0,0,0,100,0), +(@PATH,54,4203.292,151.6458,35.25117,0,0,0,0,100,0), +(@PATH,55,4210.042,146.6458,34.75117,0,0,0,0,100,0), +(@PATH,56,4212.792,142.8958,35.75117,0,0,0,0,100,0), +(@PATH,57,4213.792,141.1458,37.00117,0,0,0,0,100,0), +(@PATH,58,4215.042,139.3958,38.00117,0,0,0,0,100,0), +(@PATH,59,4216.042,137.6458,39.00117,0,0,0,0,100,0), +(@PATH,60,4214.134,140.9572,37.10639,0,0,0,0,100,0), +(@PATH,61,4215.134,139.2072,38.35639,0,0,0,0,100,0), +(@PATH,62,4216.384,137.4572,39.10639,0,0,0,0,100,0), +(@PATH,63,4216.884,136.4572,39.60639,0,0,0,0,100,0), +(@PATH,64,4218.634,135.7072,39.85639,0,0,0,0,100,0), +(@PATH,65,4224.134,133.4572,40.35639,0,0,0,0,100,0), +(@PATH,66,4229.384,130.9572,41.10639,0,0,0,0,100,0), +(@PATH,67,4235.634,127.9572,41.60639,0,0,0,0,100,0), +(@PATH,68,4229.684,130.7465,41.28711,0,0,0,0,100,0), +(@PATH,69,4235.934,127.7465,41.78711,0,0,0,0,100,0), +(@PATH,70,4238.684,126.4965,42.03711,0,0,0,0,100,0), +(@PATH,71,4242.434,123.2465,42.53711,0,0,0,0,100,0), +(@PATH,72,4246.934,119.2465,43.03711,0,0,0,0,100,0), +(@PATH,73,4249.684,116.7465,43.78711,0,0,0,0,100,0), +(@PATH,74,4251.184,115.4965,43.03711,0,0,0,0,100,0), +(@PATH,75,4254.434,112.9965,42.28711,0,0,0,0,100,0), +(@PATH,76,4267.336,101.6284,43.40099,0,0,0,0,100,0), +(@PATH,77,4269.836,98.62839,44.15099,0,0,0,0,100,0), +(@PATH,78,4273.086,95.12839,44.65099,0,0,0,0,100,0), +(@PATH,79,4278.336,89.12839,45.40099,0,0,0,0,100,0), +(@PATH,80,4279.836,87.62839,46.65099,0,0,0,0,100,0), +(@PATH,81,4278.601,88.82341,45.6701,0,0,0,0,100,0), +(@PATH,82,4280.101,87.32341,46.9201,0,0,0,0,100,0), +(@PATH,83,4281.351,85.82341,48.4201,0,0,0,0,100,0), +(@PATH,84,4285.351,82.82341,49.6701,0,0,0,0,100,0), +(@PATH,85,4288.851,79.82341,50.4201,0,0,0,0,100,0), +(@PATH,86,4292.851,76.82341,51.1701,0,0,0,0,100,0), +(@PATH,87,4297.351,73.07341,51.9201,0,0,0,0,100,0), +(@PATH,88,4297.78,72.80531,52.14567,0,0,0,0,100,0), +(@PATH,89,4302.28,69.05531,52.64567,0,0,0,0,100,0), +(@PATH,90,4305.78,64.30531,53.14567,0,0,0,0,100,0), +(@PATH,91,4308.78,60.55531,53.89567,0,0,0,0,100,0), +(@PATH,92,4312.53,55.80531,54.64567,0,0,0,0,100,0), +(@PATH,93,4309.234,60.36448,54.05492,0,0,0,0,100,0), +(@PATH,94,4312.734,55.61448,54.80492,0,0,0,0,100,0), +(@PATH,95,4315.234,52.36448,55.30492,0,0,0,0,100,0), +(@PATH,96,4317.984,49.61448,55.80492,0,0,0,0,100,0), +(@PATH,97,4320.984,47.11448,56.30492,0,0,0,0,100,0), +(@PATH,98,4321.984,45.61448,55.80492,0,0,0,0,100,0), +(@PATH,99,4323.484,44.11448,55.05492,0,0,0,0,100,0), +(@PATH,100,4325.484,42.11448,54.30492,0,0,0,0,100,0), +(@PATH,101,4326.984,40.61448,55.30492,0,0,0,0,100,0), +(@PATH,102,4330.484,37.11448,55.80492,0,0,0,0,100,0), +(@PATH,103,4332.734,35.11448,57.05492,0,0,0,0,100,0), +(@PATH,104,4333.234,34.36448,58.30492,0,0,0,0,100,0), +(@PATH,105,4330.798,36.88138,55.91195,0,0,0,0,100,0), +(@PATH,106,4332.798,34.63138,57.41195,0,0,0,0,100,0), +(@PATH,107,4333.548,34.13138,58.41195,0,0,0,0,100,0), +(@PATH,108,4334.298,33.38138,58.16195,0,0,0,0,100,0), +(@PATH,109,4339.298,28.38138,58.91195,0,0,0,0,100,0), +(@PATH,110,4342.798,25.13138,59.66195,0,0,0,0,100,0), +(@PATH,111,4347.048,20.88138,60.16195,0,0,0,0,100,0), +(@PATH,112,4351.298,16.88138,60.91195,0,0,0,0,100,0), +(@PATH,113,4351.698,16.44775,60.95687,0,0,0,0,100,0), +(@PATH,114,4351.948,16.19775,60.95687,0,0,0,0,100,0), +(@PATH,115,4356.448,12.19775,61.70687,0,0,0,0,100,0), +(@PATH,116,4361.698,7.947746,62.20687,0,0,0,0,100,0), +(@PATH,117,4365.448,4.697746,61.45687,0,0,0,0,100,0), +(@PATH,118,4366.198,4.197746,60.20687,0,0,0,0,100,0), +(@PATH,119,4365.591,4.536743,61.66898,0,0,0,0,100,0), +(@PATH,120,4366.591,4.036743,60.41898,0,0,0,0,100,0), +(@PATH,121,4372.341,-0.9632568,60.66898,0,0,0,0,100,0), +(@PATH,122,4375.841,-5.713257,61.41898,0,0,0,0,100,0), +(@PATH,123,4376.841,-7.463257,62.16898,0,0,0,0,100,0), +(@PATH,124,4378.091,-8.963257,62.66898,0,0,0,0,100,0), +(@PATH,125,4378.591,-9.713257,63.41898,0,0,0,0,100,0), +(@PATH,126,4380.341,-11.96326,64.41898,0,0,0,0,100,0), +(@PATH,127,4384.091,-16.71326,64.91898,0,0,0,0,100,0), +(@PATH,128,4388.841,-23.21326,65.66898,0,0,0,0,100,0), +(@PATH,129,4384.258,-16.96124,65.1631,0,0,0,0,100,0), +(@PATH,130,4389.008,-23.46124,65.9131,0,0,0,0,100,0), +(@PATH,131,4392.258,-27.71124,66.1631,0,0,0,0,100,0), +(@PATH,132,4398.258,-32.96124,66.9131,0,0,0,0,100,0), +(@PATH,133,4402.758,-36.46124,67.1631,0,0,0,0,100,0), +(@PATH,134,4408.758,-41.71124,67.6631,0,0,0,0,100,0), +(@PATH,135,4414.008,-46.21124,68.4131,0,0,0,0,100,0), +(@PATH,136,4419.508,-50.71124,68.9131,0,0,0,0,100,0), +(@PATH,137,4422.508,-53.46124,69.6631,0,0,0,0,100,0), +(@PATH,138,4419.742,-51.0945,69.37471,0,0,0,0,100,0), +(@PATH,139,4422.742,-53.5945,69.87471,0,0,0,0,100,0), +(@PATH,140,4423.242,-54.0945,70.12471,0,0,0,0,100,0), +(@PATH,141,4425.742,-55.5945,70.62471,0,0,0,0,100,0), +(@PATH,142,4427.492,-56.5945,71.12471,0,0,0,0,100,0), +(@PATH,143,4430.742,-58.5945,71.87471,0,0,0,0,100,0), +(@PATH,144,4434.242,-60.5945,72.62471,0,0,0,0,100,0), +(@PATH,145,4437.492,-62.5945,73.12471,0,0,0,0,100,0), +(@PATH,146,4437.903,-62.88269,73.40182,0,0,0,0,100,0), +(@PATH,147,4442.903,-65.88269,73.40182,0,0,0,0,100,0), +(@PATH,148,4454.653,-70.63269,73.90182,0,0,0,0,100,0), +(@PATH,149,4460.153,-73.13269,74.65182,0,0,0,0,100,0), +(@PATH,150,4454.842,-70.95877,74.27554,0,0,0,0,100,0), +(@PATH,151,4460.342,-73.20877,74.77554,0,0,0,0,100,0), +(@PATH,152,4464.842,-75.20877,75.52554,0,0,0,0,100,0), +(@PATH,153,4469.342,-77.45877,76.27554,0,0,0,0,100,0), +(@PATH,154,4473.592,-79.20877,76.52554,0,0,0,0,100,0), +(@PATH,155,4477.092,-80.95877,77.27554,0,0,0,0,100,0), +(@PATH,156,4481.592,-83.20877,78.02554,0,0,0,0,100,0), +(@PATH,157,4486.092,-85.45877,78.77554,0,0,0,0,100,0), +(@PATH,158,4486.404,-85.60809,79.05294,0,0,0,0,100,0), +(@PATH,159,4490.154,-87.35809,79.80294,0,0,0,0,100,0), +(@PATH,160,4493.904,-88.85809,80.30294,0,0,0,0,100,0), +(@PATH,161,4496.654,-89.85809,80.80294,0,0,0,0,100,0), +(@PATH,162,4499.154,-90.60809,81.30294,0,0,0,0,100,0), +(@PATH,163,4502.904,-92.10809,81.80294,0,0,0,0,100,0), +(@PATH,164,4505.654,-93.10809,82.55294,0,0,0,0,100,0), +(@PATH,165,4509.404,-94.60809,83.30294,0,0,0,0,100,0), +(@PATH,166,4505.88,-93.29077,82.71257,0,0,0,0,100,0), +(@PATH,167,4509.63,-94.79077,83.46257,0,0,0,0,100,0), +(@PATH,168,4510.38,-95.04077,83.46257,0,0,0,0,100,0), +(@PATH,169,4513.13,-95.79077,84.21257,0,0,0,0,100,0), +(@PATH,170,4516.63,-96.79077,84.71257,0,0,0,0,100,0), +(@PATH,171,4521.38,-98.29077,85.46257,0,0,0,0,100,0), +(@PATH,172,4525.38,-99.54077,86.21257,0,0,0,0,100,0), +(@PATH,173,4528.13,-100.2908,86.71257,0,0,0,0,100,0), +(@PATH,174,4521.656,-98.51135,85.72998,0,0,0,0,100,0), +(@PATH,175,4525.656,-99.76135,86.47998,0,0,0,0,100,0), +(@PATH,176,4528.406,-100.5114,86.97998,0,0,0,0,100,0), +(@PATH,177,4530.656,-101.0114,86.97998,0,0,0,0,100,0), +(@PATH,178,4535.656,-101.2614,87.72998,0,0,0,0,100,0), +(@PATH,179,4541.406,-101.7614,86.97998,0,0,0,0,100,0), +(@PATH,180,4550.406,-102.5114,87.72998,0,0,0,0,100,0), +(@PATH,181,4553.406,-102.7614,88.22998,0,0,0,0,100,0), +(@PATH,182,4555.406,-102.7614,88.97998,0,0,0,0,100,0), +(@PATH,183,4550.558,-102.7295,87.9478,0,0,0,0,100,0), +(@PATH,184,4553.558,-102.9795,88.4478,0,0,0,0,100,0), +(@PATH,185,4555.558,-102.9795,88.9478,0,0,0,0,100,0), +(@PATH,186,4556.558,-103.2295,88.9478,0,0,0,0,100,0), +(@PATH,187,4558.308,-103.4795,89.4478,0,0,0,0,100,0), +(@PATH,188,4561.308,-104.2295,90.6978,0,0,0,0,100,0), +(@PATH,189,4563.308,-104.7295,91.6978,0,0,0,0,100,0), +(@PATH,190,4565.308,-104.9795,92.4478,0,0,0,0,100,0), +(@PATH,191,4567.808,-105.7295,92.9478,0,0,0,0,100,0), +(@PATH,192,4576.808,-107.4795,92.1978,0,0,0,0,100,0), +(@PATH,193,4578.558,-107.9795,91.6978,0,0,0,0,100,0), +(@PATH,194,4580.558,-108.2295,90.6978,0,0,0,0,100,0), +(@PATH,195,4582.558,-108.7295,90.1978,0,0,0,0,100,0), +(@PATH,196,4578.968,-108.0446,92.06143,0,0,0,0,100,0), +(@PATH,197,4580.968,-108.5446,91.06143,0,0,0,0,100,0), +(@PATH,198,4582.718,-109.0446,90.56143,0,0,0,0,100,0), +(@PATH,199,4584.218,-109.2946,90.56143,0,0,0,0,100,0), +(@PATH,200,4587.968,-110.2946,91.31143,0,0,0,0,100,0), +(@PATH,201,4589.718,-110.5446,92.56143,0,0,0,0,100,0), +(@PATH,202,4592.718,-111.2946,94.56143,0,0,0,0,100,0), +(@PATH,203,4594.718,-111.7946,95.06143,0,0,0,0,100,0), +(@PATH,204,4596.468,-112.2946,95.81143,0,0,0,0,100,0), +(@PATH,205,4599.468,-113.0446,97.31143,0,0,0,0,100,0), +(@PATH,206,4594.818,-111.8515,95.27139,0,0,0,0,100,0), +(@PATH,207,4596.818,-112.3515,96.02139,0,0,0,0,100,0), +(@PATH,208,4599.818,-112.8515,97.52139,0,0,0,0,100,0), +(@PATH,209,4600.568,-113.1015,97.77139,0,0,0,0,100,0), +(@PATH,210,4602.568,-113.1015,98.52139,0,0,0,0,100,0), +(@PATH,211,4604.568,-113.1015,99.27139,0,0,0,0,100,0), +(@PATH,212,4606.568,-113.1015,99.77139,0,0,0,0,100,0), +(@PATH,213,4609.318,-113.1015,100.5214,0,0,0,0,100,0), +(@PATH,214,4611.318,-113.1015,101.2714,0,0,0,0,100,0), +(@PATH,215,4613.318,-113.1015,102.0214,0,0,0,0,100,0), +(@PATH,216,4615.318,-113.1015,102.5214,0,0,0,0,100,0), +(@PATH,217,4617.318,-113.1015,103.2714,0,0,0,0,100,0), +(@PATH,218,4619.318,-113.1015,104.0214,0,0,0,0,100,0), +(@PATH,219,4613.589,-113.3498,102.2264,0,0,0,0,100,0), +(@PATH,220,4615.589,-113.3498,102.7264,0,0,0,0,100,0), +(@PATH,221,4617.589,-113.3498,103.2264,0,0,0,0,100,0), +(@PATH,222,4619.589,-113.3498,103.9764,0,0,0,0,100,0), +(@PATH,223,4621.589,-113.3498,104.7264,0,0,0,0,100,0), +(@PATH,224,4623.589,-113.5998,105.7264,0,0,0,0,100,0), +(@PATH,225,4627.589,-113.8498,104.9764,0,0,0,0,100,0), +(@PATH,226,4628.589,-113.8498,104.2264,0,0,0,0,100,0), +(@PATH,227,4630.589,-114.0998,103.4764,0,0,0,0,100,0), +(@PATH,228,4643.339,-114.5998,103.9764,0,0,0,0,100,0), +(@PATH,229,4649.339,-114.8498,104.4764,0,0,0,0,100,0), +(@PATH,230,4655.339,-115.3498,105.2264,0,0,0,0,100,0), +(@PATH,231,4709.1,-115.011,117.582,0,0,0,0,100,0), +(@PATH,232,4711.271,-114.7002,118.7371,0,0,0,0,100,0), +(@PATH,233,4713.271,-114.7002,119.2371,0,0,0,0,100,0), +(@PATH,234,4715.271,-114.4502,119.9871,0,0,0,0,100,0), +(@PATH,235,4717.271,-114.4502,120.9871,0,0,0,0,100,0), +(@PATH,236,4719.271,-114.4502,122.4871,0,0,0,0,100,0), +(@PATH,237,4721.271,-114.4502,124.9871,0,0,0,0,100,0), +(@PATH,238,4722.271,-114.4502,126.9871,0,0,0,0,100,0), +(@PATH,239,4723.271,-114.2002,128.7371,0,0,0,0,100,0), +(@PATH,240,4724.271,-114.2002,130.2371,0,0,0,0,100,0), +(@PATH,241,4730.271,-114.2002,131.7371,0,0,0,0,100,0), +(@PATH,242,4733.271,-114.2002,132.4871,0,0,0,0,100,0), +(@PATH,243,4736.021,-114.2002,132.9871,0,0,0,0,100,0), +(@PATH,244,4739.021,-113.9502,133.7371,0,0,0,0,100,0), +(@PATH,245,4742.021,-113.9502,134.2371,0,0,0,0,100,0), +(@PATH,246,4745.021,-113.9502,134.9871,0,0,0,0,100,0), +(@PATH,247,4748.021,-113.7002,135.7371,0,0,0,0,100,0), +(@PATH,248,4751.021,-113.7002,136.4871,0,0,0,0,100,0), +(@PATH,249,4755.021,-113.4502,137.2371,0,0,0,0,100,0), +(@PATH,250,4757.021,-113.4502,137.9871,0,0,0,0,100,0), +(@PATH,251,4760.021,-113.4502,138.4871,0,0,0,0,100,0), +(@PATH,252,4755.3,-113.3806,137.3929,0,0,0,0,100,0), +(@PATH,253,4757.3,-113.3806,138.1429,0,0,0,0,100,0), +(@PATH,254,4760.3,-113.1306,138.6429,0,0,0,0,100,0), +(@PATH,255,4760.8,-113.1306,138.8929,0,0,0,0,100,0), +(@PATH,256,4764.8,-112.8806,139.6429,0,0,0,0,100,0), +(@PATH,257,4767.55,-112.6306,140.3929,0,0,0,0,100,0), +(@PATH,258,4770.3,-112.3806,140.6429,0,0,0,0,100,0), +(@PATH,259,4773.3,-112.3806,141.3929,0,0,0,0,100,0), +(@PATH,260,4776.3,-112.1306,141.8929,0,0,0,0,100,0), +(@PATH,261,4779.3,-111.8806,142.6429,0,0,0,0,100,0), +(@PATH,262,4782.3,-111.3806,143.1429,0,0,0,0,100,0), +(@PATH,263,4785.3,-111.1306,143.8929,0,0,0,0,100,0), +(@PATH,264,4782.639,-111.3082,143.3183,0,0,0,0,100,0), +(@PATH,265,4785.639,-111.0582,144.0683,0,0,0,0,100,0), +(@PATH,266,4787.639,-111.0582,144.8183,0,0,0,0,100,0), +(@PATH,267,4789.639,-111.0582,145.8183,0,0,0,0,100,0), +(@PATH,268,4791.639,-110.8082,146.8183,0,0,0,0,100,0), +(@PATH,269,4793.389,-110.8082,147.5683,0,0,0,0,100,0), +(@PATH,270,4795.389,-110.8082,148.5683,0,0,0,0,100,0), +(@PATH,271,4797.389,-110.5582,149.3183,0,0,0,0,100,0), +(@PATH,272,4799.389,-110.5582,150.3183,0,0,0,0,100,0), +(@PATH,273,4801.389,-110.5582,151.0683,0,0,0,0,100,0), +(@PATH,274,4803.389,-110.3082,151.8183,0,0,0,0,100,0), +(@PATH,275,4799.521,-110.2245,150.6717,0,0,0,0,100,0), +(@PATH,276,4801.521,-110.2245,151.4217,0,0,0,0,100,0), +(@PATH,277,4803.521,-110.2245,152.1717,0,0,0,0,100,0), +(@PATH,278,4804.021,-110.2245,152.1717,0,0,0,0,100,0), +(@PATH,279,4806.771,-109.4745,152.9217,0,0,0,0,100,0), +(@PATH,280,4808.771,-108.9745,153.6717,0,0,0,0,100,0), +(@PATH,281,4809.771,-108.7245,154.6717,0,0,0,0,100,0), +(@PATH,282,4810.521,-108.4745,155.6717,0,0,0,0,100,0), +(@PATH,283,4811.521,-108.2245,156.9217,0,0,0,0,100,0), +(@PATH,284,4816.271,-107.2245,158.9217,0,0,0,0,100,0), +(@PATH,285,4819.271,-106.4745,159.4217,0,0,0,0,100,0), +(@PATH,286,4816.643,-107.0058,159.1424,0,0,0,0,100,0), +(@PATH,287,4819.393,-106.2558,159.6424,0,0,0,0,100,0), +(@PATH,288,4822.393,-105.5058,160.3924,0,0,0,0,100,0), +(@PATH,289,4825.643,-103.2558,161.1424,0,0,0,0,100,0), +(@PATH,290,4828.893,-101.0058,161.8924,0,0,0,0,100,0), +(@PATH,291,4831.393,-99.25578,162.3924,0,0,0,0,100,0), +(@PATH,292,4833.643,-97.75578,162.8924,0,0,0,0,100,0), +(@PATH,293,4844.393,-90.50578,163.8924,0,0,0,0,100,0), +(@PATH,294,4846.143,-89.50578,164.8924,0,0,0,0,100,0), +(@PATH,295,4847.643,-88.25578,166.1424,0,0,0,0,100,0), +(@PATH,296,4849.393,-87.00578,167.6424,0,0,0,0,100,0), +(@PATH,297,4850.893,-86.00578,168.6424,0,0,0,0,100,0), +(@PATH,298,4852.643,-84.75578,170.1424,0,0,0,0,100,0), +(@PATH,299,4847.853,-88.10442,166.4347,0,0,0,0,100,0), +(@PATH,300,4849.603,-86.85442,167.9347,0,0,0,0,100,0), +(@PATH,301,4851.353,-85.85442,168.9347,0,0,0,0,100,0), +(@PATH,302,4852.853,-84.60442,170.4347,0,0,0,0,100,0), +(@PATH,303,4853.353,-84.35442,170.4347,0,0,0,0,100,0), +(@PATH,304,4854.353,-83.85442,171.4347,0,0,0,0,100,0), +(@PATH,305,4856.103,-83.10442,172.1847,0,0,0,0,100,0), +(@PATH,306,4857.103,-82.85442,172.9347,0,0,0,0,100,0), +(@PATH,307,4858.853,-82.35442,174.4347,0,0,0,0,100,0), +(@PATH,308,4860.603,-81.60442,175.1847,0,0,0,0,100,0), +(@PATH,309,4861.353,-81.10442,175.9347,0,0,0,0,100,0), +(@PATH,310,4863.103,-80.35442,176.9347,0,0,0,0,100,0), +(@PATH,311,4864.103,-79.85442,177.9347,0,0,0,0,100,0), +(@PATH,312,4866.103,-79.10442,178.9347,0,0,0,0,100,0), +(@PATH,313,4866.853,-78.85442,179.4347,0,0,0,0,100,0), +(@PATH,314,4870.603,-77.10442,178.6847,0,0,0,0,100,0), +(@PATH,315,4871.603,-76.85442,179.1847,0,0,0,0,100,0), +(@PATH,316,4873.353,-76.10442,179.9347,0,0,0,0,100,0), +(@PATH,317,4870.785,-76.93673,178.8536,0,0,0,0,100,0), +(@PATH,318,4871.785,-76.68673,179.6036,0,0,0,0,100,0), +(@PATH,319,4873.535,-75.68673,180.3536,0,0,0,0,100,0), +(@PATH,320,4875.535,-74.93673,181.1036,0,0,0,0,100,0), +(@PATH,321,4878.535,-72.68673,181.6036,0,0,0,0,100,0), +(@PATH,322,4884.285,-68.43673,182.6036,0,0,0,0,100,0), +(@PATH,323,4885.535,-67.18673,184.6036,0,0,0,0,100,0), +(@PATH,324,4887.035,-66.18673,185.1036,0,0,0,0,100,0), +(@PATH,325,4888.785,-64.93673,186.1036,0,0,0,0,100,0), +(@PATH,326,4891.035,-63.18673,186.8536,0,0,0,0,100,0), +(@PATH,327,4892.785,-61.93673,187.3536,0,0,0,0,100,0), +(@PATH,328,4895.035,-60.18673,188.1036,0,0,0,0,100,0), +(@PATH,329,4898.285,-57.68673,189.1036,0,0,0,0,100,0), +(@PATH,330,4900.785,-55.93673,189.8536,0,0,0,0,100,0), +(@PATH,331,4902.285,-54.68673,190.3536,0,0,0,0,100,0), +(@PATH,332,4898.646,-57.62174,189.3363,0,0,0,0,100,0), +(@PATH,333,4900.896,-55.62174,190.0863,0,0,0,0,100,0), +(@PATH,334,4902.646,-54.62174,190.5863,0,0,0,0,100,0), +(@PATH,335,4903.646,-53.62174,191.0863,0,0,0,0,100,0), +(@PATH,336,4905.896,-51.87174,191.8363,0,0,0,0,100,0), +(@PATH,337,4908.146,-49.87174,192.5863,0,0,0,0,100,0), +(@PATH,338,4911.896,-46.62174,193.0863,0,0,0,0,100,0), +(@PATH,339,4914.146,-44.87174,193.8363,0,0,0,0,100,0), +(@PATH,340,4915.646,-43.62174,194.5863,0,0,0,0,100,0), +(@PATH,341,4917.146,-42.37174,195.5863,0,0,0,0,100,0), +(@PATH,342,4920.146,-39.87174,197.3363,0,0,0,0,100,0), +(@PATH,343,4923.146,-37.37174,198.5863,0,0,0,0,100,0), +(@PATH,344,4925.646,-35.37174,199.8363,0,0,0,0,100,0), +(@PATH,345,4927.146,-34.12174,201.5863,0,0,0,0,100,0), +(@PATH,346,4928.646,-32.87174,202.3363,0,0,0,0,100,0), +(@PATH,347,4927.425,-33.87713,201.8472,0,0,0,0,100,0), +(@PATH,348,4928.925,-32.62713,202.5972,0,0,0,0,100,0), +(@PATH,349,4929.675,-31.87713,203.3472,0,0,0,0,100,0), +(@PATH,350,4931.175,-30.37713,204.0972,0,0,0,0,100,0), +(@PATH,351,4932.425,-28.62713,204.8472,0,0,0,0,100,0), +(@PATH,352,4933.675,-27.12713,205.8472,0,0,0,0,100,0), +(@PATH,353,4934.925,-25.62713,206.3472,0,0,0,0,100,0), +(@PATH,354,4935.925,-24.12713,207.0972,0,0,0,0,100,0), +(@PATH,355,4937.175,-22.87713,207.8472,0,0,0,0,100,0), +(@PATH,356,4938.675,-21.37713,208.5972,0,0,0,0,100,0), +(@PATH,357,4939.925,-19.87713,209.3472,0,0,0,0,100,0), +(@PATH,358,4941.175,-18.37713,210.0972,0,0,0,0,100,0), +(@PATH,359,4943.175,-15.87713,211.3472,0,0,0,0,100,0), +(@PATH,360,4944.425,-14.37713,212.0972,0,0,0,0,100,0), +(@PATH,361,4938.823,-21.04173,208.8677,0,0,0,0,100,0), +(@PATH,362,4940.073,-19.54173,209.6177,0,0,0,0,100,0), +(@PATH,363,4941.323,-18.04173,210.3677,0,0,0,0,100,0), +(@PATH,364,4943.323,-15.79173,211.6177,0,0,0,0,100,0), +(@PATH,365,4944.573,-14.29173,212.3677,0,0,0,0,100,0), +(@PATH,366,4945.573,-12.79173,212.8677,0,0,0,0,100,0), +(@PATH,367,4947.573,-10.54173,214.1177,0,0,0,0,100,0), +(@PATH,368,4948.823,-9.041726,214.8677,0,0,0,0,100,0), +(@PATH,369,4950.073,-7.291726,215.3677,0,0,0,0,100,0), +(@PATH,370,4951.323,-5.791726,216.3677,0,0,0,0,100,0), +(@PATH,371,4952.573,-4.291726,217.1177,0,0,0,0,100,0), +(@PATH,372,4953.573,-2.791726,218.1177,0,0,0,0,100,0), +(@PATH,373,4955.323,-0.5417261,218.8677,0,0,0,0,100,0), +(@PATH,374,4956.573,0.9582739,219.6177,0,0,0,0,100,0), +(@PATH,375,4957.823,2.458274,220.3677,0,0,0,0,100,0), +(@PATH,376,4959.573,4.958274,221.6177,0,0,0,0,100,0), +(@PATH,377,4960.823,6.458274,222.6177,0,0,0,0,100,0), +(@PATH,378,4962.073,8.208274,223.3677,0,0,0,0,100,0), +(@PATH,379,4963.823,10.45827,224.8677,0,0,0,0,100,0), +(@PATH,380,4965.073,11.95827,225.3677,0,0,0,0,100,0), +(@PATH,381,4967.073,14.45827,226.6177,0,0,0,0,100,0), +(@PATH,382,4968.323,15.95827,227.6177,0,0,0,0,100,0), +(@PATH,383,4970.073,18.20827,228.8677,0,0,0,0,100,0), +(@PATH,384,4971.323,19.95827,229.6177,0,0,0,0,100,0), +(@PATH,385,4968.528,16.30715,227.939,0,0,0,0,100,0), +(@PATH,386,4970.278,18.55715,229.189,0,0,0,0,100,0), +(@PATH,387,4971.528,20.05715,229.939,0,0,0,0,100,0), +(@PATH,388,4972.278,21.05715,230.189,0,0,0,0,100,0), +(@PATH,389,4974.278,23.05715,231.439,0,0,0,0,100,0), +(@PATH,390,4975.778,24.55715,232.439,0,0,0,0,100,0), +(@PATH,391,4978.028,26.55715,233.689,0,0,0,0,100,0), +(@PATH,392,4979.778,28.55715,234.689,0,0,0,0,100,0), +(@PATH,393,4982.028,30.55715,235.939,0,0,0,0,100,0), +(@PATH,394,4984.278,32.80715,237.189,0,0,0,0,100,0), +(@PATH,395,4986.278,34.80715,238.189,0,0,0,0,100,0), +(@PATH,396,4988.528,36.80715,239.439,0,0,0,0,100,0), +(@PATH,397,4988.716,37.15675,239.7151,0,0,0,0,100,0), +(@PATH,398,4989.966,38.40675,240.7151,0,0,0,0,100,0), +(@PATH,399,4991.466,39.65675,241.4651,0,0,0,0,100,0), +(@PATH,400,4993.716,41.65675,242.7151,0,0,0,0,100,0), +(@PATH,401,4994.966,42.65675,243.7151,0,0,0,0,100,0), +(@PATH,402,4996.466,44.15675,244.2151,0,0,0,0,100,0), +(@PATH,403,4997.966,45.40675,244.9651,0,0,0,0,100,0), +(@PATH,404,5000.216,47.40675,246.4651,0,0,0,0,100,0), +(@PATH,405,5001.716,48.65675,247.2151,0,0,0,0,100,0), +(@PATH,406,4996.59,44.31219,244.4983,0,0,0,0,100,0), +(@PATH,407,4998.09,45.56219,245.2483,0,0,0,0,100,0), +(@PATH,408,5000.34,47.56219,246.7483,0,0,0,0,100,0), +(@PATH,409,5001.84,49.06219,247.4983,0,0,0,0,100,0), +(@PATH,410,5003.84,50.81219,248.7483,0,0,0,0,100,0), +(@PATH,411,5004.59,52.56219,249.9983,0,0,0,0,100,0), +(@PATH,412,5005.59,54.31219,250.7483,0,0,0,0,100,0), +(@PATH,413,5006.59,56.06219,251.2483,0,0,0,0,100,0), +(@PATH,414,5007.34,57.56219,251.9983,0,0,0,0,100,0), +(@PATH,415,5008.34,59.31219,252.7483,0,0,0,0,100,0), +(@PATH,416,5009.34,61.06219,253.7483,0,0,0,0,100,0), +(@PATH,417,5010.34,62.81219,254.2483,0,0,0,0,100,0), +(@PATH,418,5010.84,63.56219,255.2483,0,0,0,0,100,0), +(@PATH,419,5011.84,65.31219,255.9983,0,0,0,0,100,0), +(@PATH,420,5012.84,67.06219,256.9983,0,0,0,0,100,0), +(@PATH,421,5013.84,68.81219,257.9983,0,0,0,0,100,0), +(@PATH,422,5011.006,63.99465,255.4823,0,0,0,0,100,0), +(@PATH,423,5012.006,65.74465,256.2323,0,0,0,0,100,0), +(@PATH,424,5013.006,67.49465,257.2323,0,0,0,0,100,0), +(@PATH,425,5014.006,69.24465,258.2323,0,0,0,0,100,0), +(@PATH,426,5014.756,70.24465,258.4823,0,0,0,0,100,0), +(@PATH,427,5016.506,71.24465,259.2323,0,0,0,0,100,0), +(@PATH,428,5019.006,72.49465,259.7323,0,0,0,0,100,0), +(@PATH,429,5021.756,73.74465,260.4823,0,0,0,0,100,0), +(@PATH,430,5023.506,74.74465,260.7323,0,0,0,0,100,0), +(@PATH,431,5025.006,75.74465,261.4823,0,0,0,0,100,0), +(@PATH,432,5027.756,76.99465,262.2323,0,0,0,0,100,0), +(@PATH,433,5029.506,77.99465,262.9823,0,0,0,0,100,0), +(@PATH,434,5030.256,78.49465,263.7323,0,0,0,0,100,0), +(@PATH,435,5033.006,79.74465,264.4823,0,0,0,0,100,0), +(@PATH,436,5033.756,80.24465,264.9823,0,0,0,0,100,0), +(@PATH,437,5035.506,81.24465,265.4823,0,0,0,0,100,0), +(@PATH,438,5036.506,81.74465,266.2323,0,0,0,0,100,0), +(@PATH,439,5030.598,78.71907,263.8674,0,0,0,0,100,0), +(@PATH,440,5033.098,79.96907,264.6174,0,0,0,0,100,0), +(@PATH,441,5034.098,80.46907,265.1174,0,0,0,0,100,0), +(@PATH,442,5035.848,81.46907,265.8674,0,0,0,0,100,0), +(@PATH,443,5036.848,81.96907,266.3674,0,0,0,0,100,0), +(@PATH,444,5038.598,82.96907,267.1174,0,0,0,0,100,0), +(@PATH,445,5040.348,83.71907,267.8674,0,0,0,0,100,0), +(@PATH,446,5042.098,84.46907,268.6174,0,0,0,0,100,0), +(@PATH,447,5044.098,85.46907,269.3674,0,0,0,0,100,0), +(@PATH,448,5046.598,86.46907,270.1174,0,0,0,0,100,0), +(@PATH,449,5049.098,87.71907,271.6174,0,0,0,0,100,0), +(@PATH,450,5051.848,88.96907,272.3674,0,0,0,0,100,0), +(@PATH,451,5053.848,89.71907,273.3674,0,0,0,0,100,0), +(@PATH,452,5055.598,90.71907,274.1174,0,0,0,0,100,0), +(@PATH,453,5059.098,92.21907,275.6174,0,0,0,0,100,0), +(@PATH,454,5059.351,92.58967,275.9098,0,0,0,0,100,0), +(@PATH,455,5061.351,93.33967,276.9098,0,0,0,0,100,0), +(@PATH,456,5062.351,93.58967,277.6598,0,0,0,0,100,0), +(@PATH,457,5064.101,94.08967,278.6598,0,0,0,0,100,0), +(@PATH,458,5066.101,94.58967,279.1598,0,0,0,0,100,0), +(@PATH,459,5067.101,94.83967,279.9098,0,0,0,0,100,0), +(@PATH,460,5068.101,94.83967,280.4098,0,0,0,0,100,0), +(@PATH,461,5072.601,95.83967,281.1598,0,0,0,0,100,0), +(@PATH,462,5075.601,96.58967,281.9098,0,0,0,0,100,0), +(@PATH,463,5078.601,97.33967,282.6598,0,0,0,0,100,0), +(@PATH,464,5081.351,98.08967,283.1598,0,0,0,0,100,0), +(@PATH,465,5081.644,98.23627,283.3898,0,0,0,0,100,0), +(@PATH,466,5085.394,99.23627,284.1398,0,0,0,0,100,0), +(@PATH,467,5089.394,99.48627,284.6398,0,0,0,0,100,0), +(@PATH,468,5092.394,99.73627,285.6398,0,0,0,0,100,0), +(@PATH,469,5094.144,99.98627,286.8898,0,0,0,0,100,0), +(@PATH,470,5095.144,99.98627,287.8898,0,0,0,0,100,0), +(@PATH,471,5097.144,100.2363,288.6398,0,0,0,0,100,0), +(@PATH,472,5100.144,100.7363,289.3898,0,0,0,0,100,0), +(@PATH,473,5103.144,100.9863,290.1398,0,0,0,0,100,0), +(@PATH,474,5105.144,101.2363,290.6398,0,0,0,0,100,0), +(@PATH,475,5104.537,101.2179,290.6266,0,0,0,0,100,0), +(@PATH,476,5102.787,100.9679,290.1266,0,0,0,0,100,0), +(@PATH,477,5100.787,100.7179,289.3766,0,0,0,0,100,0), +(@PATH,478,5098.787,100.4679,288.8766,0,0,0,0,100,0), +(@PATH,479,5096.787,100.2179,288.1266,0,0,0,0,100,0), +(@PATH,480,5094.787,99.96793,287.1266,0,0,0,0,100,0), +(@PATH,481,5093.787,99.96793,286.3766,0,0,0,0,100,0), +(@PATH,482,5091.787,99.71793,285.6266,0,0,0,0,100,0), +(@PATH,483,5090.037,99.71793,284.8766,0,0,0,0,100,0), +(@PATH,484,5086.037,99.21793,284.1266,0,0,0,0,100,0), +(@PATH,485,5083.037,98.96793,283.6266,0,0,0,0,100,0), +(@PATH,486,5079.037,98.46793,282.8766,0,0,0,0,100,0), +(@PATH,487,5078.892,98.26491,282.666,0,0,0,0,100,0), +(@PATH,488,5076.892,98.01491,282.166,0,0,0,0,100,0), +(@PATH,489,5073.142,96.76491,281.416,0,0,0,0,100,0), +(@PATH,490,5070.142,96.01491,280.916,0,0,0,0,100,0), +(@PATH,491,5067.392,95.26491,280.166,0,0,0,0,100,0), +(@PATH,492,5066.392,95.01491,279.666,0,0,0,0,100,0), +(@PATH,493,5065.392,94.76491,278.666,0,0,0,0,100,0), +(@PATH,494,5062.642,94.01491,277.916,0,0,0,0,100,0), +(@PATH,495,5061.642,93.76491,277.416,0,0,0,0,100,0), +(@PATH,496,5060.642,93.76491,276.666,0,0,0,0,100,0), +(@PATH,497,5057.892,93.01491,275.666,0,0,0,0,100,0), +(@PATH,498,5055.892,92.51491,274.916,0,0,0,0,100,0), +(@PATH,499,5053.892,92.01491,273.916,0,0,0,0,100,0), +(@PATH,500,5052.142,91.51491,273.166,0,0,0,0,100,0), +(@PATH,501,5050.142,90.76491,272.666,0,0,0,0,100,0), +(@PATH,502,5049.142,90.51491,271.916,0,0,0,0,100,0), +(@PATH,503,5046.392,89.76491,271.166,0,0,0,0,100,0), +(@PATH,504,5044.392,89.26491,270.416,0,0,0,0,100,0), +(@PATH,505,5055.736,92.20252,274.5854,0,0,0,0,100,0), +(@PATH,506,5053.736,91.70252,273.5854,0,0,0,0,100,0), +(@PATH,507,5051.736,91.20252,272.8354,0,0,0,0,100,0), +(@PATH,508,5049.986,90.70252,272.3354,0,0,0,0,100,0), +(@PATH,509,5048.986,90.45252,271.5854,0,0,0,0,100,0), +(@PATH,510,5045.986,89.70252,270.8354,0,0,0,0,100,0), +(@PATH,511,5043.986,88.95252,270.0854,0,0,0,0,100,0), +(@PATH,512,5043.736,88.95252,269.8354,0,0,0,0,100,0), +(@PATH,513,5040.986,87.45252,268.5854,0,0,0,0,100,0), +(@PATH,514,5039.486,86.45252,267.8354,0,0,0,0,100,0), +(@PATH,515,5037.736,85.45252,267.0854,0,0,0,0,100,0), +(@PATH,516,5036.236,84.20252,266.5854,0,0,0,0,100,0), +(@PATH,517,5034.486,83.20252,265.5854,0,0,0,0,100,0), +(@PATH,518,5032.736,82.45252,265.0854,0,0,0,0,100,0), +(@PATH,519,5030.986,81.45252,264.5854,0,0,0,0,100,0), +(@PATH,520,5029.236,80.45252,263.8354,0,0,0,0,100,0), +(@PATH,521,5027.486,79.45252,263.0854,0,0,0,0,100,0), +(@PATH,522,5025.986,78.45252,262.3354,0,0,0,0,100,0), +(@PATH,523,5024.236,77.45252,261.5854,0,0,0,0,100,0), +(@PATH,524,5021.486,75.95252,260.5854,0,0,0,0,100,0), +(@PATH,525,5018.986,74.45252,260.0854,0,0,0,0,100,0), +(@PATH,526,5021.314,75.6748,260.4416,0,0,0,0,100,0), +(@PATH,527,5018.814,74.1748,259.6916,0,0,0,0,100,0), +(@PATH,528,5016.064,72.6748,259.1916,0,0,0,0,100,0), +(@PATH,529,5014.064,70.4248,258.1916,0,0,0,0,100,0), +(@PATH,530,5012.064,68.1748,257.1916,0,0,0,0,100,0), +(@PATH,531,5010.064,65.9248,255.4416,0,0,0,0,100,0), +(@PATH,532,5008.064,63.9248,253.6916,0,0,0,0,100,0), +(@PATH,533,5005.814,61.6748,251.9416,0,0,0,0,100,0), +(@PATH,534,5004.814,60.1748,251.1916,0,0,0,0,100,0), +(@PATH,535,5003.314,58.9248,250.6916,0,0,0,0,100,0), +(@PATH,536,5002.064,57.4248,249.4416,0,0,0,0,100,0), +(@PATH,537,5000.564,55.9248,248.6916,0,0,0,0,100,0), +(@PATH,538,4998.564,53.9248,247.4416,0,0,0,0,100,0), +(@PATH,539,4995.814,50.9248,245.6916,0,0,0,0,100,0), +(@PATH,540,4994.564,49.4248,244.9416,0,0,0,0,100,0), +(@PATH,541,4991.814,46.6748,243.1916,0,0,0,0,100,0), +(@PATH,542,4990.314,45.1748,242.6916,0,0,0,0,100,0), +(@PATH,543,4988.314,42.9248,241.1916,0,0,0,0,100,0), +(@PATH,544,4991.532,46.35353,242.8972,0,0,0,0,100,0), +(@PATH,545,4990.032,44.85353,242.3972,0,0,0,0,100,0), +(@PATH,546,4988.032,42.60353,240.8972,0,0,0,0,100,0), +(@PATH,547,4987.282,41.60353,240.3972,0,0,0,0,100,0), +(@PATH,548,4985.782,40.35353,239.6472,0,0,0,0,100,0), +(@PATH,549,4984.282,38.85353,238.6472,0,0,0,0,100,0), +(@PATH,550,4982.782,37.60353,237.8972,0,0,0,0,100,0), +(@PATH,551,4982.032,36.85353,236.6472,0,0,0,0,100,0), +(@PATH,552,4980.532,35.35353,235.6472,0,0,0,0,100,0), +(@PATH,553,4979.782,34.85353,234.3972,0,0,0,0,100,0), +(@PATH,554,4979.282,34.10353,233.6472,0,0,0,0,100,0), +(@PATH,555,4978.532,33.35353,233.1472,0,0,0,0,100,0), +(@PATH,556,4977.782,32.60353,232.1472,0,0,0,0,100,0), +(@PATH,557,4975.782,30.85353,230.8972,0,0,0,0,100,0), +(@PATH,558,4975.032,30.10353,230.3972,0,0,0,0,100,0), +(@PATH,559,4972.782,28.10353,229.1472,0,0,0,0,100,0), +(@PATH,560,4970.782,26.10353,228.3972,0,0,0,0,100,0), +(@PATH,561,4969.282,24.60353,227.8972,0,0,0,0,100,0), +(@PATH,562,4964.282,19.85353,227.3972,0,0,0,0,100,0), +(@PATH,563,4963.855,19.72905,227.0677,0,0,0,0,100,0), +(@PATH,564,4962.605,18.47905,226.3177,0,0,0,0,100,0), +(@PATH,565,4961.105,17.22905,225.5677,0,0,0,0,100,0), +(@PATH,566,4960.355,16.47905,224.8177,0,0,0,0,100,0), +(@PATH,567,4958.855,15.22904,224.3177,0,0,0,0,100,0), +(@PATH,568,4957.355,13.97904,223.5677,0,0,0,0,100,0), +(@PATH,569,4956.605,13.47904,223.0677,0,0,0,0,100,0), +(@PATH,570,4955.355,12.47904,222.0677,0,0,0,0,100,0), +(@PATH,571,4953.105,10.47904,221.0677,0,0,0,0,100,0), +(@PATH,572,4951.355,9.229045,220.5677,0,0,0,0,100,0), +(@PATH,573,4950.605,8.479045,219.8177,0,0,0,0,100,0), +(@PATH,574,4949.105,7.229045,219.0677,0,0,0,0,100,0), +(@PATH,575,4947.605,5.979045,218.3177,0,0,0,0,100,0), +(@PATH,576,4952.728,10.19929,220.7288,0,0,0,0,100,0), +(@PATH,577,4951.228,8.949289,220.2288,0,0,0,0,100,0), +(@PATH,578,4950.478,8.199289,219.4788,0,0,0,0,100,0), +(@PATH,579,4948.978,6.949289,218.7288,0,0,0,0,100,0), +(@PATH,580,4947.478,5.699289,217.9788,0,0,0,0,100,0), +(@PATH,581,4945.228,3.699289,216.9788,0,0,0,0,100,0), +(@PATH,582,4943.478,1.199289,215.7288,0,0,0,0,100,0), +(@PATH,583,4942.478,-0.5507112,214.9788,0,0,0,0,100,0), +(@PATH,584,4941.728,-2.300711,214.2288,0,0,0,0,100,0), +(@PATH,585,4940.728,-3.800711,213.7288,0,0,0,0,100,0), +(@PATH,586,4939.728,-5.300711,212.9788,0,0,0,0,100,0), +(@PATH,587,4938.728,-7.050711,212.2288,0,0,0,0,100,0), +(@PATH,588,4937.728,-8.800711,211.4788,0,0,0,0,100,0), +(@PATH,589,4936.728,-10.55071,210.7288,0,0,0,0,100,0), +(@PATH,590,4935.728,-12.30071,209.9788,0,0,0,0,100,0), +(@PATH,591,4934.478,-14.05071,209.2288,0,0,0,0,100,0), +(@PATH,592,4933.478,-15.55071,208.2288,0,0,0,0,100,0), +(@PATH,593,4931.978,-18.30071,207.4788,0,0,0,0,100,0), +(@PATH,594,4935.371,-12.56639,209.951,0,0,0,0,100,0), +(@PATH,595,4934.371,-14.31639,209.201,0,0,0,0,100,0), +(@PATH,596,4933.371,-15.81639,208.201,0,0,0,0,100,0), +(@PATH,597,4931.871,-18.56639,207.201,0,0,0,0,100,0), +(@PATH,598,4930.871,-20.06639,206.451,0,0,0,0,100,0), +(@PATH,599,4928.871,-22.06639,205.451,0,0,0,0,100,0), +(@PATH,600,4926.871,-24.31639,204.451,0,0,0,0,100,0), +(@PATH,601,4925.371,-25.81639,203.701,0,0,0,0,100,0), +(@PATH,602,4924.871,-26.56639,202.701,0,0,0,0,100,0), +(@PATH,603,4922.871,-28.81639,200.701,0,0,0,0,100,0), +(@PATH,604,4921.371,-30.31639,199.701,0,0,0,0,100,0), +(@PATH,605,4920.121,-31.56639,198.951,0,0,0,0,100,0), +(@PATH,606,4918.371,-33.81638,197.701,0,0,0,0,100,0), +(@PATH,607,4915.621,-36.56638,196.201,0,0,0,0,100,0), +(@PATH,608,4913.621,-38.81638,195.451,0,0,0,0,100,0), +(@PATH,609,4910.871,-41.81638,194.451,0,0,0,0,100,0), +(@PATH,610,4908.871,-44.06638,193.451,0,0,0,0,100,0), +(@PATH,611,4910.639,-42.03794,194.2787,0,0,0,0,100,0), +(@PATH,612,4908.639,-44.28794,193.2787,0,0,0,0,100,0), +(@PATH,613,4903.889,-49.28794,191.5287,0,0,0,0,100,0), +(@PATH,614,4901.639,-51.28794,190.7787,0,0,0,0,100,0), +(@PATH,615,4899.389,-53.28794,190.0287,0,0,0,0,100,0), +(@PATH,616,4897.139,-55.28794,189.5287,0,0,0,0,100,0), +(@PATH,617,4895.889,-56.28794,188.7787,0,0,0,0,100,0), +(@PATH,618,4893.639,-58.28794,188.2787,0,0,0,0,100,0), +(@PATH,619,4891.389,-60.28794,187.2787,0,0,0,0,100,0), +(@PATH,620,4889.139,-62.03794,185.7787,0,0,0,0,100,0), +(@PATH,621,4885.389,-65.53794,183.7787,0,0,0,0,100,0), +(@PATH,622,4883.139,-67.28794,182.2787,0,0,0,0,100,0), +(@PATH,623,4885.011,-65.72313,183.5428,0,0,0,0,100,0), +(@PATH,624,4882.761,-67.72313,182.0428,0,0,0,0,100,0), +(@PATH,625,4878.761,-71.22313,181.7928,0,0,0,0,100,0), +(@PATH,626,4875.511,-73.47313,181.0428,0,0,0,0,100,0), +(@PATH,627,4873.011,-75.22313,180.2928,0,0,0,0,100,0), +(@PATH,628,4871.511,-76.47313,179.2928,0,0,0,0,100,0), +(@PATH,629,4870.511,-76.97313,178.7928,0,0,0,0,100,0), +(@PATH,630,4866.011,-80.47313,178.0428,0,0,0,0,100,0), +(@PATH,631,4864.511,-81.47313,176.5428,0,0,0,0,100,0), +(@PATH,632,4863.511,-82.22313,175.2928,0,0,0,0,100,0), +(@PATH,633,4862.011,-83.22313,174.2928,0,0,0,0,100,0), +(@PATH,634,4860.261,-84.47313,172.7928,0,0,0,0,100,0), +(@PATH,635,4858.761,-85.72313,171.7928,0,0,0,0,100,0), +(@PATH,636,4858.011,-86.22313,170.5428,0,0,0,0,100,0), +(@PATH,637,4856.261,-87.47313,169.2928,0,0,0,0,100,0), +(@PATH,638,4854.761,-88.72313,168.2928,0,0,0,0,100,0), +(@PATH,639,4853.011,-89.72313,166.7928,0,0,0,0,100,0), +(@PATH,640,4852.261,-90.47313,165.0428,0,0,0,0,100,0), +(@PATH,641,4856.188,-87.68352,169.0529,0,0,0,0,100,0), +(@PATH,642,4854.438,-88.93352,168.0529,0,0,0,0,100,0), +(@PATH,643,4852.938,-90.18352,166.5529,0,0,0,0,100,0), +(@PATH,644,4851.938,-90.68352,164.8029,0,0,0,0,100,0), +(@PATH,645,4851.688,-90.93352,165.0529,0,0,0,0,100,0), +(@PATH,646,4850.688,-91.18352,164.5529,0,0,0,0,100,0), +(@PATH,647,4848.688,-91.43352,163.5529,0,0,0,0,100,0), +(@PATH,648,4845.688,-91.43352,162.5529,0,0,0,0,100,0), +(@PATH,649,4838.688,-92.43352,163.3029,0,0,0,0,100,0), +(@PATH,650,4829.188,-93.68352,162.8029,0,0,0,0,100,0), +(@PATH,651,4824.188,-94.18352,162.0529,0,0,0,0,100,0), +(@PATH,652,4819.188,-94.93352,161.5529,0,0,0,0,100,0), +(@PATH,653,4814.188,-95.43352,160.8029,0,0,0,0,100,0), +(@PATH,654,4811.188,-95.93352,160.3029,0,0,0,0,100,0), +(@PATH,655,4813.979,-95.63231,160.5142,0,0,0,0,100,0), +(@PATH,656,4810.979,-96.13231,160.0142,0,0,0,0,100,0), +(@PATH,657,4807.979,-96.38231,158.7642,0,0,0,0,100,0), +(@PATH,658,4806.979,-96.63231,157.5142,0,0,0,0,100,0), +(@PATH,659,4805.979,-96.88231,155.7642,0,0,0,0,100,0), +(@PATH,660,4804.979,-97.13231,154.5142,0,0,0,0,100,0), +(@PATH,661,4804.229,-97.38231,153.5142,0,0,0,0,100,0), +(@PATH,662,4802.229,-97.88231,152.7642,0,0,0,0,100,0), +(@PATH,663,4799.229,-98.63231,151.2642,0,0,0,0,100,0), +(@PATH,664,4797.229,-99.13231,150.2642,0,0,0,0,100,0), +(@PATH,665,4795.479,-99.63231,149.5142,0,0,0,0,100,0), +(@PATH,666,4793.479,-100.1323,148.5142,0,0,0,0,100,0), +(@PATH,667,4791.729,-100.6323,147.7642,0,0,0,0,100,0), +(@PATH,668,4789.729,-100.8823,147.0142,0,0,0,0,100,0), +(@PATH,669,4786.979,-101.3823,146.2642,0,0,0,0,100,0), +(@PATH,670,4784.979,-101.8823,145.7642,0,0,0,0,100,0), +(@PATH,671,4781.979,-102.6323,145.0142,0,0,0,0,100,0), +(@PATH,672,4779.979,-103.1323,144.5142,0,0,0,0,100,0), +(@PATH,673,4777.229,-103.8823,143.7642,0,0,0,0,100,0), +(@PATH,674,4775.229,-104.3823,143.2642,0,0,0,0,100,0), +(@PATH,675,4779.875,-103.49,144.2818,0,0,0,0,100,0), +(@PATH,676,4776.875,-104.24,143.5318,0,0,0,0,100,0), +(@PATH,677,4774.875,-104.74,143.0318,0,0,0,0,100,0), +(@PATH,678,4771.125,-105.49,142.2818,0,0,0,0,100,0), +(@PATH,679,4767.125,-106.24,141.5318,0,0,0,0,100,0), +(@PATH,680,4765.125,-106.49,140.7818,0,0,0,0,100,0), +(@PATH,681,4762.125,-106.49,140.2818,0,0,0,0,100,0), +(@PATH,682,4759.375,-106.99,139.5318,0,0,0,0,100,0), +(@PATH,683,4757.375,-107.24,139.0318,0,0,0,0,100,0), +(@PATH,684,4753.625,-107.74,138.5318,0,0,0,0,100,0), +(@PATH,685,4750.625,-108.24,137.5318,0,0,0,0,100,0), +(@PATH,686,4747.625,-108.49,136.7818,0,0,0,0,100,0), +(@PATH,687,4744.625,-108.99,136.2818,0,0,0,0,100,0), +(@PATH,688,4742.625,-109.24,135.5318,0,0,0,0,100,0), +(@PATH,689,4739.625,-109.49,135.0318,0,0,0,0,100,0), +(@PATH,690,4742.248,-109.4313,135.3615,0,0,0,0,100,0), +(@PATH,691,4739.498,-109.9313,134.8615,0,0,0,0,100,0), +(@PATH,692,4738.998,-109.9313,134.6115,0,0,0,0,100,0), +(@PATH,693,4735.998,-110.4313,134.1115,0,0,0,0,100,0), +(@PATH,694,4733.998,-110.6813,133.3615,0,0,0,0,100,0), +(@PATH,695,4730.998,-111.1813,132.8615,0,0,0,0,100,0), +(@PATH,696,4728.998,-111.4313,132.1115,0,0,0,0,100,0), +(@PATH,697,4724.248,-112.1813,130.8615,0,0,0,0,100,0), +(@PATH,698,4723.498,-112.1813,128.6115,0,0,0,0,100,0), +(@PATH,699,4722.498,-112.4313,126.6115,0,0,0,0,100,0), +(@PATH,700,4721.498,-112.6813,125.1115,0,0,0,0,100,0), +(@PATH,701,4720.498,-112.6813,123.6115,0,0,0,0,100,0), +(@PATH,702,4719.498,-112.9313,122.6115,0,0,0,0,100,0), +(@PATH,703,4718.498,-113.1813,121.8615,0,0,0,0,100,0), +(@PATH,704,4717.498,-113.1813,121.1115,0,0,0,0,100,0), +(@PATH,705,4715.498,-113.4313,120.1115,0,0,0,0,100,0), +(@PATH,706,4713.498,-113.9313,119.3615,0,0,0,0,100,0), +(@PATH,707,4711.498,-114.1813,118.6115,0,0,0,0,100,0), +(@PATH,708,4709.498,-114.4313,117.8615,0,0,0,0,100,0), +(@PATH,709,4654.35,-121.904,105.083,0,0,0,0,100,0), +(@PATH,710,4649.321,-121.2758,104.7296,0,0,0,0,100,0), +(@PATH,711,4644.321,-120.7758,103.9796,0,0,0,0,100,0), +(@PATH,712,4629.571,-119.2758,104.9796,0,0,0,0,100,0), +(@PATH,713,4628.571,-119.2758,105.7296,0,0,0,0,100,0), +(@PATH,714,4627.571,-119.0258,106.7296,0,0,0,0,100,0), +(@PATH,715,4626.571,-119.0258,107.4796,0,0,0,0,100,0), +(@PATH,716,4625.571,-119.0258,108.2296,0,0,0,0,100,0), +(@PATH,717,4622.571,-118.7758,107.7296,0,0,0,0,100,0), +(@PATH,718,4620.821,-118.7758,106.4796,0,0,0,0,100,0), +(@PATH,719,4618.821,-118.5258,105.9796,0,0,0,0,100,0), +(@PATH,720,4616.821,-118.2758,105.2296,0,0,0,0,100,0), +(@PATH,721,4614.821,-118.2758,104.4796,0,0,0,0,100,0), +(@PATH,722,4611.821,-117.7758,103.9796,0,0,0,0,100,0), +(@PATH,723,4609.821,-117.7758,102.7296,0,0,0,0,100,0), +(@PATH,724,4607.821,-117.5258,101.9796,0,0,0,0,100,0), +(@PATH,725,4605.821,-117.2758,101.2296,0,0,0,0,100,0), +(@PATH,726,4603.821,-117.0258,100.4796,0,0,0,0,100,0), +(@PATH,727,4601.821,-117.0258,99.72955,0,0,0,0,100,0), +(@PATH,728,4599.821,-116.7758,99.47955,0,0,0,0,100,0), +(@PATH,729,4598.821,-116.7758,98.47955,0,0,0,0,100,0), +(@PATH,730,4596.821,-116.5258,97.72955,0,0,0,0,100,0), +(@PATH,731,4594.821,-116.2758,97.22955,0,0,0,0,100,0), +(@PATH,732,4592.821,-116.0258,96.47955,0,0,0,0,100,0), +(@PATH,733,4588.821,-115.7758,95.72955,0,0,0,0,100,0), +(@PATH,734,4594.681,-116.0849,96.89848,0,0,0,0,100,0), +(@PATH,735,4592.681,-115.8349,96.39848,0,0,0,0,100,0), +(@PATH,736,4588.681,-115.5849,95.39848,0,0,0,0,100,0), +(@PATH,737,4587.681,-115.3349,94.64848,0,0,0,0,100,0), +(@PATH,738,4586.931,-115.0849,93.64848,0,0,0,0,100,0), +(@PATH,739,4585.931,-115.0849,93.14848,0,0,0,0,100,0), +(@PATH,740,4584.931,-114.8349,92.64848,0,0,0,0,100,0), +(@PATH,741,4582.931,-114.3349,91.89848,0,0,0,0,100,0), +(@PATH,742,4581.931,-114.3349,91.14848,0,0,0,0,100,0), +(@PATH,743,4578.181,-113.5849,90.64848,0,0,0,0,100,0), +(@PATH,744,4563.431,-110.8349,89.89848,0,0,0,0,100,0), +(@PATH,745,4563.33,-110.5865,89.69603,0,0,0,0,100,0), +(@PATH,746,4562.58,-110.3365,89.44603,0,0,0,0,100,0), +(@PATH,747,4557.08,-108.3365,88.94603,0,0,0,0,100,0), +(@PATH,748,4553.33,-106.8365,88.44603,0,0,0,0,100,0), +(@PATH,749,4548.58,-105.0865,87.69603,0,0,0,0,100,0), +(@PATH,750,4542.33,-103.0865,87.19603,0,0,0,0,100,0), +(@PATH,751,4538.58,-101.5865,87.69603,0,0,0,0,100,0), +(@PATH,752,4532.08,-99.08654,87.19603,0,0,0,0,100,0), +(@PATH,753,4528.33,-97.83654,86.44603,0,0,0,0,100,0), +(@PATH,754,4524.58,-96.33654,85.94603,0,0,0,0,100,0), +(@PATH,755,4531.686,-98.95202,86.95757,0,0,0,0,100,0), +(@PATH,756,4527.936,-97.45202,86.20757,0,0,0,0,100,0), +(@PATH,757,4524.186,-96.20202,85.70757,0,0,0,0,100,0), +(@PATH,758,4522.686,-95.45202,85.45757,0,0,0,0,100,0), +(@PATH,759,4518.936,-93.95202,84.70757,0,0,0,0,100,0), +(@PATH,760,4516.186,-92.95202,83.95757,0,0,0,0,100,0), +(@PATH,761,4512.686,-91.70202,83.20757,0,0,0,0,100,0), +(@PATH,762,4508.936,-90.45202,82.95757,0,0,0,0,100,0), +(@PATH,763,4506.186,-89.20202,82.20757,0,0,0,0,100,0), +(@PATH,764,4503.436,-88.20202,81.70757,0,0,0,0,100,0), +(@PATH,765,4499.686,-86.70202,81.20757,0,0,0,0,100,0), +(@PATH,766,4496.686,-85.70202,80.45757,0,0,0,0,100,0), +(@PATH,767,4503.196,-88.03407,81.28053,0,0,0,0,100,0), +(@PATH,768,4499.446,-86.53407,80.78053,0,0,0,0,100,0), +(@PATH,769,4496.446,-85.53407,80.28053,0,0,0,0,100,0), +(@PATH,770,4493.196,-84.03407,79.78053,0,0,0,0,100,0), +(@PATH,771,4490.446,-82.78407,79.03053,0,0,0,0,100,0), +(@PATH,772,4486.946,-80.78407,78.53053,0,0,0,0,100,0), +(@PATH,773,4483.696,-79.03407,78.03053,0,0,0,0,100,0), +(@PATH,774,4480.446,-77.03407,77.53053,0,0,0,0,100,0), +(@PATH,775,4476.946,-75.28407,76.78053,0,0,0,0,100,0), +(@PATH,776,4474.196,-73.78407,76.28053,0,0,0,0,100,0), +(@PATH,777,4469.946,-71.28407,75.53053,0,0,0,0,100,0), +(@PATH,778,4469.636,-71.05446,75.28565,0,0,0,0,100,0), +(@PATH,779,4466.886,-69.55446,74.78565,0,0,0,0,100,0), +(@PATH,780,4462.636,-67.30446,74.28565,0,0,0,0,100,0), +(@PATH,781,4458.886,-65.30446,73.53565,0,0,0,0,100,0), +(@PATH,782,4454.636,-63.05446,73.03565,0,0,0,0,100,0), +(@PATH,783,4437.886,-54.55446,72.53565,0,0,0,0,100,0), +(@PATH,784,4435.386,-53.05446,72.03565,0,0,0,0,100,0), +(@PATH,785,4430.886,-50.80446,71.28565,0,0,0,0,100,0), +(@PATH,786,4428.136,-49.30446,70.53565,0,0,0,0,100,0), +(@PATH,787,4435.071,-52.68845,71.81055,0,0,0,0,100,0), +(@PATH,788,4430.571,-50.43845,71.06055,0,0,0,0,100,0), +(@PATH,789,4428.071,-49.18845,70.31055,0,0,0,0,100,0), +(@PATH,790,4427.571,-48.93845,70.31055,0,0,0,0,100,0), +(@PATH,791,4425.071,-47.18845,69.56055,0,0,0,0,100,0), +(@PATH,792,4422.821,-45.18845,69.06055,0,0,0,0,100,0), +(@PATH,793,4417.321,-41.18845,68.56055,0,0,0,0,100,0), +(@PATH,794,4411.821,-37.18845,67.81055,0,0,0,0,100,0), +(@PATH,795,4406.321,-32.93845,67.31055,0,0,0,0,100,0), +(@PATH,796,4402.037,-29.82576,66.68288,0,0,0,0,100,0), +(@PATH,797,4396.287,-25.82576,66.18288,0,0,0,0,100,0), +(@PATH,798,4390.037,-21.57576,65.68288,0,0,0,0,100,0), +(@PATH,799,4383.537,-17.07576,65.18288,0,0,0,0,100,0), +(@PATH,800,4377.183,-12.6132,64.68977,0,0,0,0,100,0), +(@PATH,801,4374.933,-10.6132,63.68977,0,0,0,0,100,0), +(@PATH,802,4374.183,-9.863197,62.93977,0,0,0,0,100,0), +(@PATH,803,4372.683,-8.613197,62.18977,0,0,0,0,100,0), +(@PATH,804,4371.933,-8.113197,61.68977,0,0,0,0,100,0), +(@PATH,805,4368.933,-5.363197,60.93977,0,0,0,0,100,0), +(@PATH,806,4361.433,0.8868032,61.68977,0,0,0,0,100,0), +(@PATH,807,4359.933,2.136803,62.43977,0,0,0,0,100,0), +(@PATH,808,4354.683,6.636803,61.93977,0,0,0,0,100,0), +(@PATH,809,4350.183,10.6368,61.43977,0,0,0,0,100,0), +(@PATH,810,4349.859,10.88503,61.13586,0,0,0,0,100,0), +(@PATH,811,4344.609,15.38503,60.38586,0,0,0,0,100,0), +(@PATH,812,4339.859,19.13503,59.88586,0,0,0,0,100,0), +(@PATH,813,4336.109,22.13503,59.13586,0,0,0,0,100,0), +(@PATH,814,4330.859,26.38503,58.88586,0,0,0,0,100,0), +(@PATH,815,4324.609,31.38503,58.38586,0,0,0,0,100,0), +(@PATH,816,4319.109,35.88503,57.63586,0,0,0,0,100,0), +(@PATH,817,4324.25,31.73278,57.89963,0,0,0,0,100,0), +(@PATH,818,4319,35.98278,57.39963,0,0,0,0,100,0), +(@PATH,819,4316.5,37.98278,57.14963,0,0,0,0,100,0), +(@PATH,820,4314,42.23278,56.39963,0,0,0,0,100,0), +(@PATH,821,4311.25,45.98278,55.64963,0,0,0,0,100,0), +(@PATH,822,4309,49.48278,55.14963,0,0,0,0,100,0), +(@PATH,823,4306.25,53.48278,54.64963,0,0,0,0,100,0), +(@PATH,824,4303.5,57.73278,53.89963,0,0,0,0,100,0), +(@PATH,825,4305.94,53.7986,54.33125,0,0,0,0,100,0), +(@PATH,826,4303.19,58.0486,53.58125,0,0,0,0,100,0), +(@PATH,827,4301.44,60.2986,53.33125,0,0,0,0,100,0), +(@PATH,828,4297.94,63.7986,52.83125,0,0,0,0,100,0), +(@PATH,829,4294.44,67.2986,52.08125,0,0,0,0,100,0), +(@PATH,830,4290.19,71.2986,51.58125,0,0,0,0,100,0), +(@PATH,831,4287.69,74.2986,50.83125,0,0,0,0,100,0), +(@PATH,832,4284.19,77.7986,50.33125,0,0,0,0,100,0), +(@PATH,833,4281.94,79.7986,49.58125,0,0,0,0,100,0), +(@PATH,834,4279.94,82.0486,49.08125,0,0,0,0,100,0), +(@PATH,835,4277.69,84.0486,47.33125,0,0,0,0,100,0), +(@PATH,836,4277.19,84.7986,45.83125,0,0,0,0,100,0), +(@PATH,837,4275.69,86.2986,45.08125,0,0,0,0,100,0), +(@PATH,838,4276.842,85.21431,45.47573,0,0,0,0,100,0), +(@PATH,839,4275.342,86.46431,44.72573,0,0,0,0,100,0), +(@PATH,840,4270.592,91.21431,43.97573,0,0,0,0,100,0), +(@PATH,841,4264.092,97.71431,43.22573,0,0,0,0,100,0), +(@PATH,842,4259.092,102.2143,42.72573,0,0,0,0,100,0), +(@PATH,843,4253.092,108.4643,43.47573,0,0,0,0,100,0), +(@PATH,844,4250.842,110.7143,44.22573,0,0,0,0,100,0), +(@PATH,845,4244.342,116.9643,43.47573,0,0,0,0,100,0), +(@PATH,846,4244.214,117.0388,43.13848,0,0,0,0,100,0), +(@PATH,847,4241.214,120.0388,42.63848,0,0,0,0,100,0), +(@PATH,848,4236.964,124.2888,41.88848,0,0,0,0,100,0), +(@PATH,849,4233.214,128.5388,41.38848,0,0,0,0,100,0), +(@PATH,850,4228.964,132.7888,41.13848,0,0,0,0,100,0), +(@PATH,851,4226.214,135.7888,40.38848,0,0,0,0,100,0), +(@PATH,852,4221.964,140.0388,39.88848,0,0,0,0,100,0), +(@PATH,853,4226.044,135.9142,40.22433,0,0,0,0,100,0), +(@PATH,854,4221.794,140.4142,39.47433,0,0,0,0,100,0), +(@PATH,855,4221.044,141.1642,39.72433,0,0,0,0,100,0), +(@PATH,856,4217.544,144.6642,37.72433,0,0,0,0,100,0), +(@PATH,857,4217.044,145.4142,36.97433,0,0,0,0,100,0), +(@PATH,858,4216.294,145.9142,36.22433,0,0,0,0,100,0), +(@PATH,859,4215.544,146.6642,35.72433,0,0,0,0,100,0), +(@PATH,860,4214.044,148.1642,34.97433,0,0,0,0,100,0), +(@PATH,861,4203.044,159.4142,35.72433,0,0,0,0,100,0), +(@PATH,862,4201.794,160.6642,36.72433,0,0,0,0,100,0), +(@PATH,863,4202.975,159.6724,35.65335,0,0,0,0,100,0), +(@PATH,864,4201.475,160.9224,36.65335,0,0,0,0,100,0), +(@PATH,865,4199.475,163.1724,36.40335,0,0,0,0,100,0), +(@PATH,866,4193.725,167.1724,35.65335,0,0,0,0,100,0), +(@PATH,867,4188.225,170.9224,35.15335,0,0,0,0,100,0), +(@PATH,868,4186.725,172.1724,34.15335,0,0,0,0,100,0), +(@PATH,869,4184.975,173.4224,33.90335,0,0,0,0,100,0), +(@PATH,870,4182.725,175.1724,33.15335,0,0,0,0,100,0), +(@PATH,871,4173.627,181.7326,32.9141,0,0,0,0,100,0), +(@PATH,872,4150.717,201.6091,32.68254,0,0,0,0,100,0), +(@PATH,873,4136.467,211.8591,31.93254,0,0,0,0,100,0), +(@PATH,874,4134.217,213.8591,31.18254,0,0,0,0,100,0), +(@PATH,875,4133.467,214.3591,30.68254,0,0,0,0,100,0), +(@PATH,876,4130.967,216.1091,29.68254,0,0,0,0,100,0), +(@PATH,877,4126.967,219.1091,30.18254,0,0,0,0,100,0), +(@PATH,878,4130.626,216.4117,29.37199,0,0,0,0,100,0), +(@PATH,879,4126.626,219.4117,30.12199,0,0,0,0,100,0), +(@PATH,880,4125.626,220.1617,30.37199,0,0,0,0,100,0), +(@PATH,881,4100.376,233.6617,29.87199,0,0,0,0,100,0), +(@PATH,882,4098.626,234.6617,28.37199,0,0,0,0,100,0), +(@PATH,883,4095.126,236.4117,27.62199,0,0,0,0,100,0), +(@PATH,884,4092.376,237.9117,29.62199,0,0,0,0,100,0), +(@PATH,885,4086.126,241.1617,29.12199,0,0,0,0,100,0), +(@PATH,886,4085.963,241.2927,29.05919,0,0,0,0,100,0), +(@PATH,887,4085.213,241.7927,28.80919,0,0,0,0,100,0), +(@PATH,888,4077.963,245.2927,28.30919,0,0,0,0,100,0), +(@PATH,889,4071.963,248.2927,27.55919,0,0,0,0,100,0), +(@PATH,890,4067.463,250.5427,27.05919,0,0,0,0,100,0), +(@PATH,891,4063.963,252.2927,26.55919,0,0,0,0,100,0), +(@PATH,892,4059.463,254.5427,25.80919,0,0,0,0,100,0), +(@PATH,893,4063.641,252.6666,26.29952,0,0,0,0,100,0), +(@PATH,894,4059.141,254.6666,25.54952,0,0,0,0,100,0), +(@PATH,895,4055.641,256.6666,25.04952,0,0,0,0,100,0), +(@PATH,896,4049.641,257.6666,24.29952,0,0,0,0,100,0), +(@PATH,897,4044.141,259.1666,24.04952,0,0,0,0,100,0), +(@PATH,898,4038.391,260.4166,23.29952,0,0,0,0,100,0), +(@PATH,899,4032.391,261.9166,22.79952,0,0,0,0,100,0), +(@PATH,900,4037.974,260.678,23.14158,0,0,0,0,100,0), +(@PATH,901,4032.224,262.178,22.64158,0,0,0,0,100,0), +(@PATH,902,4027.474,263.178,22.14158,0,0,0,0,100,0), +(@PATH,903,4024.724,264.178,21.64158,0,0,0,0,100,0), +(@PATH,904,4023.724,264.678,21.14158,0,0,0,0,100,0), +(@PATH,905,4022.724,264.928,20.39158,0,0,0,0,100,0), +(@PATH,906,4021.724,265.178,19.89158,0,0,0,0,100,0); diff --git a/sql/updates/world/2015_07_19_03_world.sql b/sql/updates/world/2015_07_19_03_world.sql new file mode 100644 index 00000000000..2a7460a7fdb --- /dev/null +++ b/sql/updates/world/2015_07_19_03_world.sql @@ -0,0 +1,7 @@ +-- +-- Frigid Necromancer SAI +SET @ENTRY := 27539; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=12; +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,12,0,25,0,100,0,0,0,0,0,11,49292,0,0,0,0,0,1,0,0,0,0,0,0,0,"Frigid Necromancer - On Reset - Cast 'Ruby Corruption'"); diff --git a/sql/updates/world/2015_07_19_04_world.sql b/sql/updates/world/2015_07_19_04_world.sql new file mode 100644 index 00000000000..562515459ba --- /dev/null +++ b/sql/updates/world/2015_07_19_04_world.sql @@ -0,0 +1,881 @@ +-- Dragonblight - Scarlet Point + +-- 1. Onslaught Infantry +SET @NPC := 114254; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4572.629,`position_y`=-514.3341,`position_z`=155.2067 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4572.629,-514.3341,155.2067,0,0,0,0,100,0), +(@PATH,2,4577.129,-522.0841,155.2067,0,0,0,0,100,0), +(@PATH,3,4577.187,-522.428,155.2298,0,0,0,0,100,0), +(@PATH,4,4577.687,-522.928,155.2298,0,0,0,0,100,0), +(@PATH,5,4577.687,-526.928,155.2298,0,0,0,0,100,0), +(@PATH,6,4578.187,-531.678,155.2298,0,0,0,0,100,0), +(@PATH,7,4577.187,-532.928,155.2298,0,0,0,0,100,0), +(@PATH,8,4578.359,-535.9939,155.2575,0,0,0,0,100,0), +(@PATH,9,4576.859,-539.7439,155.2575,0,0,0,0,100,0), +(@PATH,10,4576.359,-541.2439,155.2575,0,0,0,0,100,0), +(@PATH,11,4575.859,-542.4939,155.2575,0,0,0,0,100,0), +(@PATH,12,4574.067,-547.567,155.2375,0,0,0,0,100,0), +(@PATH,13,4572.817,-547.817,155.2375,0,0,0,0,100,0), +(@PATH,14,4570.817,-548.567,155.2375,0,0,0,0,100,0), +(@PATH,15,4566.067,-550.067,155.2375,0,0,0,0,100,0), +(@PATH,16,4560.803,-551.7219,155.0219,0,0,0,0,100,0), +(@PATH,17,4555.803,-548.9719,155.0219,0,0,0,0,100,0), +(@PATH,18,4548.898,-545.5068,155.2439,0,0,0,0,100,0), +(@PATH,19,4548.148,-544.0068,155.2439,0,0,0,0,100,0), +(@PATH,20,4545.398,-539.5068,154.9939,0,0,0,0,100,0), +(@PATH,21,4545.385,-539.1914,154.97,0,0,0,0,100,0), +(@PATH,22,4544.385,-537.1914,155.22,0,0,0,0,100,0), +(@PATH,23,4544.885,-533.4414,155.22,0,0,0,0,100,0), +(@PATH,24,4545.635,-527.1914,155.22,0,0,0,0,100,0), +(@PATH,25,4545.818,-526.8594,155.2668,0,0,0,0,100,0), +(@PATH,26,4545.818,-526.3594,155.2668,0,0,0,0,100,0), +(@PATH,27,4549.318,-521.8594,155.0168,0,0,0,0,100,0), +(@PATH,28,4551.818,-518.1094,155.0168,0,0,0,0,100,0), +(@PATH,29,4552.098,-517.9098,155.1916,0,0,0,0,100,0), +(@PATH,30,4553.848,-515.9098,155.1916,0,0,0,0,100,0), +(@PATH,31,4556.598,-515.6598,155.1916,0,0,0,0,100,0), +(@PATH,32,4558.098,-515.6598,155.1916,0,0,0,0,100,0), +(@PATH,33,4562.348,-515.1598,155.1916,0,0,0,0,100,0), +(@PATH,34,4566.348,-514.9098,155.1916,0,0,0,0,100,0); + +-- 2. Workemotes +-- Onslaught Mason SAI +SET @ENTRY := 27333; +UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY; +DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0 AND `id`=2; +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,2,0,1,0,100,0,2000,2000,2000,2000,5,28,0,0,0,0,0,1,0,0,0,0,0,0,0,"Onslaught Mason - Out of Combat - Play Emote 28"); + +-- 3. Onslaught Raven Archon +UPDATE `smart_scripts` SET `action_param1`=1 WHERE `entryorguid`=27357 AND `source_type`=0 AND `id`=0 AND `link`=0; +SET @NPC := 117141; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4602.237,`position_y`=-548.184,`position_z`=157.1292 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4602.237,-548.184,157.1292,0,0,0,0,100,0), +(@PATH,2,4599.987,-549.934,156.3792,0,0,0,0,100,0), +(@PATH,3,4596.987,-552.184,155.8792,0,0,0,0,100,0), +(@PATH,4,4593.737,-554.434,155.3792,0,0,0,0,100,0), +(@PATH,5,4594.211,-554.0303,155.7048,0,0,0,0,100,0), +(@PATH,6,4597.211,-552.0303,155.9548,0,0,0,0,100,0), +(@PATH,7,4600.461,-549.5303,156.7048,0,0,0,0,100,0), +(@PATH,8,4600.543,-549.354,156.9763,0,0,0,0,100,0), +(@PATH,9,4602.543,-547.854,157.2263,0,0,0,0,100,0), +(@PATH,10,4607.293,-546.604,158.2263,0,0,0,0,100,0), +(@PATH,11,4610.293,-546.104,158.7263,0,0,0,0,100,0), +(@PATH,12,4613.043,-545.354,159.2263,0,0,0,0,100,0), +(@PATH,13,4614.793,-544.854,159.9763,0,0,0,0,100,0), +(@PATH,14,4617.793,-543.854,160.7263,0,0,0,0,100,0), +(@PATH,15,4620.543,-543.104,161.4763,0,0,0,0,100,0), +(@PATH,16,4622.543,-542.604,162.2263,0,0,0,0,100,0), +(@PATH,17,4622.75,-542.4305,162.4348,0,0,0,0,100,0), +(@PATH,18,4623.5,-542.1805,162.6848,0,0,0,0,100,0), +(@PATH,19,4626,-540.1805,163.6848,0,0,0,0,100,0), +(@PATH,20,4627.5,-538.9305,164.1848,0,0,0,0,100,0), +(@PATH,21,4629.5,-537.4305,165.1848,0,0,0,0,100,0), +(@PATH,22,4631.75,-535.4305,165.9348,0,0,0,0,100,0), +(@PATH,23,4634.75,-532.9305,166.4348,0,0,0,0,100,0), +(@PATH,24,4635.075,-532.534,166.5515,0,0,0,0,100,0), +(@PATH,25,4635.825,-532.034,166.8015,0,0,0,0,100,0), +(@PATH,26,4641.044,-524.0594,167.1748,0,0,0,0,100,0), +(@PATH,27,4640.689,-524.028,167.0105,0,0,0,0,100,0), +(@PATH,28,4640.771,-523.9791,167.2765,0,0,0,0,100,0), +(@PATH,29,4635.734,-532.2753,166.7173,0,0,0,0,100,0), +(@PATH,30,4633.234,-534.2753,166.2173,0,0,0,0,100,0), +(@PATH,31,4630.984,-536.0253,165.7173,0,0,0,0,100,0), +(@PATH,32,4628.984,-537.7753,164.7173,0,0,0,0,100,0), +(@PATH,33,4626.734,-539.7753,163.9673,0,0,0,0,100,0), +(@PATH,34,4624.984,-541.0253,163.2173,0,0,0,0,100,0), +(@PATH,35,4624.819,-541.2441,162.7961,0,0,0,0,100,0), +(@PATH,36,4623.319,-542.4941,162.5461,0,0,0,0,100,0), +(@PATH,37,4621.319,-542.9941,161.7961,0,0,0,0,100,0), +(@PATH,38,4619.569,-543.4941,161.0461,0,0,0,0,100,0), +(@PATH,39,4617.569,-543.9941,160.2961,0,0,0,0,100,0), +(@PATH,40,4613.819,-544.7441,159.7961,0,0,0,0,100,0), +(@PATH,41,4612.069,-545.2441,159.0461,0,0,0,0,100,0), +(@PATH,42,4609.069,-545.9941,158.5461,0,0,0,0,100,0), +(@PATH,43,4606.069,-546.9941,157.7961,0,0,0,0,100,0), +(@PATH,44,4602.238,-548.0697,157.0609,0,0,0,0,100,0), +(@PATH,45,4599.988,-549.8197,156.5609,0,0,0,0,100,0), +(@PATH,46,4596.738,-552.3197,155.8109,0,0,0,0,100,0), +(@PATH,47,4593.738,-554.3197,155.5609,0,0,0,0,100,0), +(@PATH,48,4594.211,-554.0303,155.7048,0,0,0,0,100,0), +(@PATH,49,4597.211,-552.0303,155.9548,0,0,0,0,100,0), +(@PATH,50,4600.461,-549.5303,156.7048,0,0,0,0,100,0); + +-- 4. Onslaught Raven Archon +SET @NPC := 117137; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4644.006,`position_y`=-489.4915,`position_z`=168.7654 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4644.006,-489.4915,168.7654,0,0,0,0,100,0), +(@PATH,2,4643.756,-493.4915,168.2654,0,0,0,0,100,0), +(@PATH,3,4643.256,-496.4915,167.7654,0,0,0,0,100,0), +(@PATH,4,4643.006,-498.4915,167.2654,0,0,0,0,100,0), +(@PATH,5,4643.311,-495.9854,167.7208,0,0,0,0,100,0), +(@PATH,6,4643.561,-492.9854,168.2208,0,0,0,0,100,0), +(@PATH,7,4643.817,-492.9625,168.5086,0,0,0,0,100,0), +(@PATH,8,4644.317,-489.2125,168.7586,0,0,0,0,100,0); + +-- 5. Onslaught Raven Archon +SET @NPC := 117142; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4568.026,`position_y`=-587.3014,`position_z`=151.4318 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4568.026,-587.3014,151.4318,0,0,0,0,100,0), +(@PATH,2,4564.026,-587.5514,150.6818,0,0,0,0,100,0), +(@PATH,3,4560.276,-587.8014,150.1818,0,0,0,0,100,0), +(@PATH,4,4557.276,-588.0514,149.6818,0,0,0,0,100,0), +(@PATH,5,4554.276,-588.3014,149.1818,0,0,0,0,100,0), +(@PATH,6,4553.841,-588.2387,148.9315,0,0,0,0,100,0), +(@PATH,7,4553.341,-588.4887,148.9315,0,0,0,0,100,0), +(@PATH,8,4549.591,-587.4887,148.1815,0,0,0,0,100,0), +(@PATH,9,4546.591,-586.7387,147.4315,0,0,0,0,100,0), +(@PATH,10,4543.841,-586.4887,147.1815,0,0,0,0,100,0), +(@PATH,11,4540.091,-585.4887,146.4315,0,0,0,0,100,0), +(@PATH,12,4537.091,-584.9887,145.6815,0,0,0,0,100,0), +(@PATH,13,4536.776,-584.8312,145.5589,0,0,0,0,100,0), +(@PATH,14,4535.276,-584.5812,145.3089,0,0,0,0,100,0), +(@PATH,15,4532.526,-585.5812,144.5589,0,0,0,0,100,0), +(@PATH,16,4530.776,-586.0812,143.8089,0,0,0,0,100,0), +(@PATH,17,4529.026,-586.8312,143.5589,0,0,0,0,100,0), +(@PATH,18,4527.026,-587.0812,142.8089,0,0,0,0,100,0), +(@PATH,19,4525.026,-587.8312,142.0589,0,0,0,0,100,0), +(@PATH,20,4524.905,-587.9237,142.0388,0,0,0,0,100,0), +(@PATH,21,4526.655,-587.1737,142.7888,0,0,0,0,100,0), +(@PATH,22,4528.655,-586.6737,143.2888,0,0,0,0,100,0), +(@PATH,23,4530.405,-586.1737,143.7888,0,0,0,0,100,0), +(@PATH,24,4533.155,-585.1737,144.5388,0,0,0,0,100,0), +(@PATH,25,4533.413,-585.1615,144.8716,0,0,0,0,100,0), +(@PATH,26,4535.413,-584.6615,145.3716,0,0,0,0,100,0), +(@PATH,27,4538.163,-585.4115,146.1216,0,0,0,0,100,0), +(@PATH,28,4541.163,-585.9115,146.3716,0,0,0,0,100,0), +(@PATH,29,4543.913,-586.6615,147.1216,0,0,0,0,100,0), +(@PATH,30,4547.913,-587.1615,147.8716,0,0,0,0,100,0), +(@PATH,31,4550.663,-587.9115,148.3716,0,0,0,0,100,0), +(@PATH,32,4551.041,-587.8854,148.5696,0,0,0,0,100,0), +(@PATH,33,4553.541,-588.3854,149.0696,0,0,0,0,100,0), +(@PATH,34,4556.541,-588.1354,149.5696,0,0,0,0,100,0), +(@PATH,35,4560.291,-587.8854,150.0696,0,0,0,0,100,0), +(@PATH,36,4564.291,-587.6354,150.8196,0,0,0,0,100,0), +(@PATH,37,4564.641,-587.5833,151.1127,0,0,0,0,100,0), +(@PATH,38,4568.141,-587.3333,151.6127,0,0,0,0,100,0), +(@PATH,39,4571.141,-583.3333,152.3627,0,0,0,0,100,0), +(@PATH,40,4575.641,-576.8333,152.6127,0,0,0,0,100,0), +(@PATH,41,4580.891,-569.8333,153.3627,0,0,0,0,100,0), +(@PATH,42,4584.391,-564.8333,153.8627,0,0,0,0,100,0), +(@PATH,43,4583.907,-565.6901,153.7024,0,0,0,0,100,0), +(@PATH,44,4580.407,-570.4401,153.2024,0,0,0,0,100,0), +(@PATH,45,4574.657,-578.4401,152.7024,0,0,0,0,100,0), +(@PATH,46,4570.657,-583.9401,152.2024,0,0,0,0,100,0); + +-- 6. Onslaught Death Knight +SET @NPC := 117875; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4570.128,`position_y`=-631.7788,`position_z`=159.2071 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4570.128,-631.7788,159.2071,0,0,0,0,100,0), +(@PATH,2,4570.628,-632.5288,159.7071,0,0,0,0,100,0), +(@PATH,3,4572.128,-631.0288,160.2071,0,0,0,0,100,0), +(@PATH,4,4574.378,-629.0288,160.2071,0,0,0,0,100,0), +(@PATH,5,4584.378,-619.7788,160.9571,0,0,0,0,100,0), +(@PATH,6,4591.824,-612.4489,160.821,0,0,0,0,100,0), +(@PATH,7,4591.324,-611.6989,160.321,0,0,0,0,100,0), +(@PATH,8,4590.324,-609.9489,159.571,0,0,0,0,100,0), +(@PATH,9,4586.074,-603.6989,159.321,0,0,0,0,100,0), +(@PATH,10,4585.984,-603.7021,159.1084,0,0,0,0,100,0), +(@PATH,11,4584.984,-601.9521,158.8584,0,0,0,0,100,0), +(@PATH,12,4582.984,-602.9521,157.8584,0,0,0,0,100,0), +(@PATH,13,4580.484,-604.2021,156.8584,0,0,0,0,100,0), +(@PATH,14,4577.734,-605.4521,155.1084,0,0,0,0,100,0), +(@PATH,15,4575.734,-606.2021,154.1084,0,0,0,0,100,0), +(@PATH,16,4573.234,-607.4521,153.3584,0,0,0,0,100,0), +(@PATH,17,4571.484,-608.4521,152.8584,0,0,0,0,100,0), +(@PATH,18,4568.984,-609.7021,152.1084,0,0,0,0,100,0), +(@PATH,19,4565.234,-611.2021,151.3584,0,0,0,0,100,0), +(@PATH,20,4562.484,-612.4521,150.6084,0,0,0,0,100,0), +(@PATH,21,4557.984,-614.7021,149.8584,0,0,0,0,100,0), +(@PATH,22,4558.026,-614.7653,149.9136,0,0,0,0,100,0), +(@PATH,23,4557.526,-615.2653,149.6636,0,0,0,0,100,0), +(@PATH,24,4558.526,-616.7653,150.1636,0,0,0,0,100,0), +(@PATH,25,4561.026,-620.0153,151.1636,0,0,0,0,100,0), +(@PATH,26,4562.776,-622.2653,152.4136,0,0,0,0,100,0), +(@PATH,27,4564.026,-623.7653,153.1636,0,0,0,0,100,0), +(@PATH,28,4565.276,-625.2653,153.9136,0,0,0,0,100,0), +(@PATH,29,4566.276,-627.0153,154.9136,0,0,0,0,100,0), +(@PATH,30,4567.526,-628.5153,155.9136,0,0,0,0,100,0); + +-- 7. Onslaught Death Knight +SET @NPC := 117876; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4644.598,`position_y`=-554.0845,`position_z`=168.3518 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4644.598,-554.0845,168.3518,0,0,0,0,100,0), +(@PATH,2,4643.098,-556.5845,167.8518,0,0,0,0,100,0), +(@PATH,3,4641.598,-558.8345,167.1018,0,0,0,0,100,0), +(@PATH,4,4639.598,-562.0845,166.3518,0,0,0,0,100,0), +(@PATH,5,4638.045,-564.3422,165.4118,0,0,0,0,100,0), +(@PATH,6,4637.045,-564.0922,164.9118,0,0,0,0,100,0), +(@PATH,7,4636.045,-563.8422,164.1618,0,0,0,0,100,0), +(@PATH,8,4634.045,-563.3422,163.6618,0,0,0,0,100,0), +(@PATH,9,4633.045,-563.0922,163.4118,0,0,0,0,100,0), +(@PATH,10,4631.545,-562.3422,162.4118,0,0,0,0,100,0), +(@PATH,11,4627.545,-561.5922,161.6618,0,0,0,0,100,0), +(@PATH,12,4624.713,-560.8789,161.1454,0,0,0,0,100,0), +(@PATH,13,4622.713,-560.8789,160.3954,0,0,0,0,100,0), +(@PATH,14,4620.713,-560.6289,159.6454,0,0,0,0,100,0), +(@PATH,15,4617.713,-560.6289,159.1454,0,0,0,0,100,0), +(@PATH,16,4613.963,-560.3789,158.6454,0,0,0,0,100,0), +(@PATH,17,4608.963,-560.3789,157.8954,0,0,0,0,100,0), +(@PATH,18,4611.391,-560.3311,158.5312,0,0,0,0,100,0), +(@PATH,19,4617.141,-560.5811,159.0312,0,0,0,0,100,0), +(@PATH,20,4620.141,-560.5811,159.7812,0,0,0,0,100,0), +(@PATH,21,4622.141,-560.5811,160.2812,0,0,0,0,100,0), +(@PATH,22,4624.141,-560.5811,161.0312,0,0,0,0,100,0), +(@PATH,23,4624.396,-560.9586,161.3495,0,0,0,0,100,0), +(@PATH,24,4624.896,-560.9586,161.3495,0,0,0,0,100,0), +(@PATH,25,4626.896,-561.4586,161.8495,0,0,0,0,100,0), +(@PATH,26,4631.396,-562.7086,162.8495,0,0,0,0,100,0), +(@PATH,27,4633.396,-562.9586,163.5995,0,0,0,0,100,0), +(@PATH,28,4636.146,-563.9586,164.3495,0,0,0,0,100,0), +(@PATH,29,4637.146,-564.2086,164.8495,0,0,0,0,100,0), +(@PATH,30,4636.412,-563.797,164.5076,0,0,0,0,100,0), +(@PATH,31,4637.412,-564.047,165.0076,0,0,0,0,100,0), +(@PATH,32,4638.162,-564.297,165.7576,0,0,0,0,100,0), +(@PATH,33,4640.412,-561.047,166.5076,0,0,0,0,100,0), +(@PATH,34,4641.662,-558.297,167.2576,0,0,0,0,100,0), +(@PATH,35,4643.912,-555.297,168.2576,0,0,0,0,100,0), +(@PATH,36,4645.912,-551.797,169.0076,0,0,0,0,100,0), +(@PATH,37,4644.598,-554.0845,168.3518,0,0,0,0,100,0); + +-- 8. Onslaught Raven Archon +SET @NPC := 117139; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4672.427,`position_y`=-432.248,`position_z`=173.8428 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4672.427,-432.248,173.8428,0,0,0,0,100,0), +(@PATH,2,4675.927,-430.498,174.3428,0,0,0,0,100,0), +(@PATH,3,4679.177,-428.998,175.0928,0,0,0,0,100,0), +(@PATH,4,4685.926,-425.7451,175.791,0,0,0,0,100,0), +(@PATH,5,4688.676,-423.2451,176.291,0,0,0,0,100,0), +(@PATH,6,4691.676,-420.7451,177.041,0,0,0,0,100,0), +(@PATH,7,4693.746,-418.9523,177.5551,0,0,0,0,100,0), +(@PATH,8,4695.496,-416.4523,178.0551,0,0,0,0,100,0), +(@PATH,9,4699.661,-409.5062,178.1642,0,0,0,0,100,0), +(@PATH,10,4697.22,-391.7566,178.4175,0,0,0,0,100,0), +(@PATH,11,4697.272,-392.0195,178.3085,0,0,0,0,100,0), +(@PATH,12,4697.517,-391.9886,178.4114,0,0,0,0,100,0), +(@PATH,13,4699.727,-409.6594,178.2528,0,0,0,0,100,0), +(@PATH,14,4693.497,-419.0012,177.537,0,0,0,0,100,0), +(@PATH,15,4691.247,-420.7512,176.787,0,0,0,0,100,0), +(@PATH,16,4688.497,-423.5012,176.537,0,0,0,0,100,0), +(@PATH,17,4686.247,-425.5012,175.787,0,0,0,0,100,0), +(@PATH,18,4686.04,-425.7852,175.5942,0,0,0,0,100,0), +(@PATH,19,4685.54,-426.0352,175.5942,0,0,0,0,100,0), +(@PATH,20,4681.04,-428.2852,175.0942,0,0,0,0,100,0), +(@PATH,21,4676.04,-430.5352,174.3442,0,0,0,0,100,0), +(@PATH,22,4672.29,-432.2852,173.8442,0,0,0,0,100,0); + +-- 9. Onslaught Death Knight +SET @NPC := 117857; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4633.917,`position_y`=-476.0173,`position_z`=168.7754 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4633.917,-476.0173,168.7754,0,0,0,0,100,0), +(@PATH,2,4634.167,-475.5173,168.7754,0,0,0,0,100,0), +(@PATH,3,4635.772,-458.6652,168.1609,0,0,0,0,100,0), +(@PATH,4,4633.772,-456.4152,167.4109,0,0,0,0,100,0), +(@PATH,5,4633.272,-455.9152,166.9109,0,0,0,0,100,0), +(@PATH,6,4632.272,-454.4152,166.4109,0,0,0,0,100,0), +(@PATH,7,4630.772,-452.9152,165.6609,0,0,0,0,100,0), +(@PATH,8,4630.631,-452.4373,165.6382,0,0,0,0,100,0), +(@PATH,9,4631.881,-453.9373,166.3882,0,0,0,0,100,0), +(@PATH,10,4632.881,-455.1873,166.8882,0,0,0,0,100,0), +(@PATH,11,4633.381,-455.9373,167.3882,0,0,0,0,100,0), +(@PATH,12,4635.381,-458.4373,168.1382,0,0,0,0,100,0), +(@PATH,13,4635.367,-458.5712,168.2003,0,0,0,0,100,0), +(@PATH,14,4635.617,-459.0712,168.2003,0,0,0,0,100,0), +(@PATH,15,4633.764,-475.9621,168.6973,0,0,0,0,100,0), +(@PATH,16,4632.514,-478.7121,169.1973,0,0,0,0,100,0), +(@PATH,17,4631.264,-481.2121,169.6973,0,0,0,0,100,0), +(@PATH,18,4627.014,-490.9621,169.1973,0,0,0,0,100,0), +(@PATH,19,4625.764,-493.7121,168.4473,0,0,0,0,100,0), +(@PATH,20,4624.014,-497.4621,167.9473,0,0,0,0,100,0), +(@PATH,21,4621.019,-503.5197,167.5489,0,0,0,0,100,0), +(@PATH,22,4618.269,-509.5197,167.0489,0,0,0,0,100,0), +(@PATH,23,4618.476,-508.4322,167.2701,0,0,0,0,100,0), +(@PATH,24,4621.087,-503.366,167.9358,0,0,0,0,100,0), +(@PATH,25,4625.337,-494.116,168.4358,0,0,0,0,100,0), +(@PATH,26,4627.087,-490.616,169.1858,0,0,0,0,100,0), +(@PATH,27,4628.087,-488.116,170.1858,0,0,0,0,100,0), +(@PATH,28,4631.837,-479.866,169.4358,0,0,0,0,100,0), +(@PATH,29,4633.587,-476.366,168.6858,0,0,0,0,100,0); + +-- 10. Onslaught Death Knight +SET @NPC := 117836; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4663.659,`position_y`=-378.53,`position_z`=178.9522 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4663.659,-378.53,178.9522,0,0,0,0,100,0), +(@PATH,2,4661.159,-374.28,178.9522,0,0,0,0,100,0), +(@PATH,3,4656.159,-367.03,178.9522,0,0,0,0,100,0), +(@PATH,4,4656.221,-366.9449,178.9369,0,0,0,0,100,0), +(@PATH,5,4655.721,-366.1949,178.9369,0,0,0,0,100,0), +(@PATH,6,4656.221,-362.1949,178.9369,0,0,0,0,100,0), +(@PATH,7,4688.97,-376.0598,179.0081,0,0,0,0,100,0), +(@PATH,8,4688.47,-377.3098,179.0081,0,0,0,0,100,0), +(@PATH,9,4686.72,-377.8098,179.0081,0,0,0,0,100,0), +(@PATH,10,4683.47,-378.8098,179.0081,0,0,0,0,100,0), +(@PATH,11,4681.97,-379.3098,179.0081,0,0,0,0,100,0), +(@PATH,12,4675.504,-381.5966,179.0296,0,0,0,0,100,0), +(@PATH,13,4672.254,-380.5966,178.7796,0,0,0,0,100,0), +(@PATH,14,4668.004,-379.5966,178.7796,0,0,0,0,100,0), +(@PATH,15,4663.438,-378.4114,178.941,0,0,0,0,100,0); + +-- 11. Onslaught Death Knight +SET @NPC := 117835; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4646.254,`position_y`=-412.3115,`position_z`=168.0308 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4646.254,-412.3115,168.0308,0,0,0,0,100,0), +(@PATH,2,4650.254,-411.8115,169.0308,0,0,0,0,100,0), +(@PATH,3,4652.004,-411.5615,169.5308,0,0,0,0,100,0), +(@PATH,4,4654.004,-411.0615,170.2808,0,0,0,0,100,0), +(@PATH,5,4656.004,-410.8115,170.7808,0,0,0,0,100,0), +(@PATH,6,4658.004,-410.5615,171.5308,0,0,0,0,100,0), +(@PATH,7,4660.004,-410.3115,172.2808,0,0,0,0,100,0), +(@PATH,8,4661.754,-410.0615,172.7808,0,0,0,0,100,0), +(@PATH,9,4663.754,-409.8115,173.2808,0,0,0,0,100,0), +(@PATH,10,4665.754,-409.3115,174.0308,0,0,0,0,100,0), +(@PATH,11,4668.754,-408.8115,174.7808,0,0,0,0,100,0), +(@PATH,12,4670.504,-408.5615,175.5308,0,0,0,0,100,0), +(@PATH,13,4672.504,-408.3115,176.5308,0,0,0,0,100,0), +(@PATH,14,4674.504,-408.0615,177.5308,0,0,0,0,100,0), +(@PATH,15,4674.718,-407.6685,177.7038,0,0,0,0,100,0), +(@PATH,16,4676.718,-407.4185,178.2038,0,0,0,0,100,0), +(@PATH,17,4678.718,-406.6685,178.7038,0,0,0,0,100,0), +(@PATH,18,4683.218,-405.4185,179.4538,0,0,0,0,100,0), +(@PATH,19,4687.403,-403.8835,179.7482,0,0,0,0,100,0), +(@PATH,20,4685.523,-395.8652,179.424,0,0,0,0,100,0), +(@PATH,21,4682.773,-395.6152,178.924,0,0,0,0,100,0), +(@PATH,22,4677.773,-395.1152,178.174,0,0,0,0,100,0), +(@PATH,23,4674.023,-394.6152,177.924,0,0,0,0,100,0), +(@PATH,24,4671.023,-394.3652,177.174,0,0,0,0,100,0), +(@PATH,25,4671.405,-394.4984,177.5945,0,0,0,0,100,0), +(@PATH,26,4674.405,-394.7484,177.8445,0,0,0,0,100,0), +(@PATH,27,4680.155,-395.2484,178.5945,0,0,0,0,100,0), +(@PATH,28,4685.155,-395.7484,179.3445,0,0,0,0,100,0), +(@PATH,29,4685.285,-395.9227,179.333,0,0,0,0,100,0), +(@PATH,30,4685.785,-395.9227,179.333,0,0,0,0,100,0), +(@PATH,31,4687.56,-403.8329,179.7082,0,0,0,0,100,0), +(@PATH,32,4681.06,-406.0829,179.2082,0,0,0,0,100,0), +(@PATH,33,4678.31,-406.8329,178.7082,0,0,0,0,100,0), +(@PATH,34,4677.956,-407.2584,178.4327,0,0,0,0,100,0), +(@PATH,35,4676.456,-407.7584,178.1827,0,0,0,0,100,0), +(@PATH,36,4674.706,-408.0084,177.4327,0,0,0,0,100,0), +(@PATH,37,4672.706,-408.2584,176.4327,0,0,0,0,100,0), +(@PATH,38,4670.706,-408.5084,175.4327,0,0,0,0,100,0), +(@PATH,39,4668.706,-409.0084,174.6827,0,0,0,0,100,0), +(@PATH,40,4665.706,-409.5084,174.1827,0,0,0,0,100,0), +(@PATH,41,4663.706,-409.7584,173.4327,0,0,0,0,100,0), +(@PATH,42,4661.956,-409.7584,172.9327,0,0,0,0,100,0), +(@PATH,43,4659.956,-410.2584,172.1827,0,0,0,0,100,0), +(@PATH,44,4657.956,-410.5084,171.6827,0,0,0,0,100,0), +(@PATH,45,4655.956,-410.7584,170.9327,0,0,0,0,100,0), +(@PATH,46,4654.206,-411.0084,170.1827,0,0,0,0,100,0), +(@PATH,47,4652.206,-411.5084,169.6827,0,0,0,0,100,0), +(@PATH,48,4650.206,-411.7584,168.9327,0,0,0,0,100,0), +(@PATH,49,4646.206,-412.5084,168.1827,0,0,0,0,100,0); + +-- 12. Onslaught Death Knight +SET @NPC := 117853; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4673.927,`position_y`=-465.8671,`position_z`=175.9483 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4673.927,-465.8671,175.9483,0,0,0,0,100,0), +(@PATH,2,4674.057,-465.5458,176.4839,0,0,0,0,100,0), +(@PATH,3,4675.307,-462.7958,176.7339,0,0,0,0,100,0), +(@PATH,4,4679.307,-453.0458,177.2339,0,0,0,0,100,0), +(@PATH,5,4682.046,-446.772,178.1347,0,0,0,0,100,0), +(@PATH,6,4684.296,-444.772,178.3847,0,0,0,0,100,0), +(@PATH,7,4687.046,-442.272,179.1347,0,0,0,0,100,0), +(@PATH,8,4690.046,-439.772,179.8847,0,0,0,0,100,0), +(@PATH,9,4687.49,-442.0988,179.0242,0,0,0,0,100,0), +(@PATH,10,4683.99,-445.0988,178.5242,0,0,0,0,100,0), +(@PATH,11,4682.49,-446.3488,178.0242,0,0,0,0,100,0), +(@PATH,12,4682.049,-446.586,177.8403,0,0,0,0,100,0), +(@PATH,13,4681.799,-446.836,177.8403,0,0,0,0,100,0), +(@PATH,14,4679.049,-453.336,177.0903,0,0,0,0,100,0), +(@PATH,15,4675.049,-463.336,176.5903,0,0,0,0,100,0), +(@PATH,16,4674.158,-465.8684,176.1417,0,0,0,0,100,0); + +-- 13. Onslaught Death Knight +SET @NPC := 117837; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4562.605,`position_y`=-482.3372,`position_z`=130.0714 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4562.605,-482.3372,130.0714,0,0,0,0,100,0), +(@PATH,2,4563.605,-482.5872,131.0714,0,0,0,0,100,0), +(@PATH,3,4565.605,-483.0872,132.3214,0,0,0,0,100,0), +(@PATH,4,4567.355,-483.5872,133.8214,0,0,0,0,100,0), +(@PATH,5,4569.355,-484.0872,135.5714,0,0,0,0,100,0), +(@PATH,6,4571.355,-484.5872,137.0714,0,0,0,0,100,0), +(@PATH,7,4572.855,-485.0872,138.5714,0,0,0,0,100,0), +(@PATH,8,4574.855,-485.3372,139.5714,0,0,0,0,100,0), +(@PATH,9,4576.855,-486.0872,141.0714,0,0,0,0,100,0), +(@PATH,10,4578.855,-486.5872,142.5714,0,0,0,0,100,0), +(@PATH,11,4580.605,-487.0872,143.8214,0,0,0,0,100,0), +(@PATH,12,4580.711,-487.1699,143.7785,0,0,0,0,100,0), +(@PATH,13,4578.711,-486.4199,142.5285,0,0,0,0,100,0), +(@PATH,14,4576.711,-485.9199,141.0285,0,0,0,0,100,0), +(@PATH,15,4574.961,-485.4199,139.5285,0,0,0,0,100,0), +(@PATH,16,4572.211,-484.9199,138.0285,0,0,0,0,100,0), +(@PATH,17,4570.211,-484.4199,136.7785,0,0,0,0,100,0), +(@PATH,18,4568.461,-483.9199,134.7785,0,0,0,0,100,0), +(@PATH,19,4566.461,-483.1699,133.0285,0,0,0,0,100,0), +(@PATH,20,4564.461,-482.6699,131.5285,0,0,0,0,100,0), +(@PATH,21,4566.122,-483.1504,132.8683,0,0,0,0,100,0), +(@PATH,22,4564.372,-482.4004,131.3683,0,0,0,0,100,0), +(@PATH,23,4563.372,-482.1504,130.8683,0,0,0,0,100,0), +(@PATH,24,4562.372,-482.1504,129.8683,0,0,0,0,100,0), +(@PATH,25,4561.372,-482.1504,129.1183,0,0,0,0,100,0), +(@PATH,26,4560.372,-482.1504,128.1183,0,0,0,0,100,0), +(@PATH,27,4559.372,-482.1504,127.6183,0,0,0,0,100,0), +(@PATH,28,4557.372,-482.1504,126.8683,0,0,0,0,100,0), +(@PATH,29,4556.372,-481.9004,126.1183,0,0,0,0,100,0), +(@PATH,30,4555.372,-481.9004,125.3683,0,0,0,0,100,0), +(@PATH,31,4554.372,-481.9004,124.8683,0,0,0,0,100,0), +(@PATH,32,4553.372,-481.9004,124.3683,0,0,0,0,100,0), +(@PATH,33,4552.622,-481.6504,123.6183,0,0,0,0,100,0), +(@PATH,34,4550.622,-481.6504,122.6183,0,0,0,0,100,0), +(@PATH,35,4549.622,-481.6504,122.1183,0,0,0,0,100,0), +(@PATH,36,4548.622,-481.4004,121.3683,0,0,0,0,100,0), +(@PATH,37,4546.622,-481.4004,120.6183,0,0,0,0,100,0), +(@PATH,38,4544.622,-481.1504,119.6183,0,0,0,0,100,0), +(@PATH,39,4543.622,-481.1504,118.3683,0,0,0,0,100,0), +(@PATH,40,4540.622,-480.9004,117.3683,0,0,0,0,100,0), +(@PATH,55,4561.372,-482.1504,129.1183,0,0,0,0,100,0), +(@PATH,54,4560.372,-482.1504,128.1183,0,0,0,0,100,0), +(@PATH,53,4559.372,-482.1504,127.6183,0,0,0,0,100,0), +(@PATH,52,4557.372,-482.1504,126.8683,0,0,0,0,100,0), +(@PATH,51,4556.372,-481.9004,126.1183,0,0,0,0,100,0), +(@PATH,50,4555.372,-481.9004,125.3683,0,0,0,0,100,0), +(@PATH,49,4554.372,-481.9004,124.8683,0,0,0,0,100,0), +(@PATH,48,4553.372,-481.9004,124.3683,0,0,0,0,100,0), +(@PATH,47,4552.622,-481.6504,123.6183,0,0,0,0,100,0), +(@PATH,46,4550.622,-481.6504,122.6183,0,0,0,0,100,0), +(@PATH,45,4549.622,-481.6504,122.1183,0,0,0,0,100,0), +(@PATH,44,4548.622,-481.4004,121.3683,0,0,0,0,100,0), +(@PATH,43,4546.622,-481.4004,120.6183,0,0,0,0,100,0), +(@PATH,42,4544.622,-481.1504,119.6183,0,0,0,0,100,0), +(@PATH,41,4543.622,-481.1504,118.3683,0,0,0,0,100,0); + +-- 14. Onslaught Death Knight +SET @NPC := 117855; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4591.347,`position_y`=-453.3334,`position_z`=146.8176 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4591.347,-453.3334,146.8176,0,0,0,0,100,0), +(@PATH,2,4593.286,-447.2549,146.5961,0,0,0,0,100,0), +(@PATH,3,4593.286,-443.2549,145.8461,0,0,0,0,100,0), +(@PATH,4,4593.286,-438.5049,145.3461,0,0,0,0,100,0), +(@PATH,5,4593.036,-431.5049,145.0961,0,0,0,0,100,0), +(@PATH,6,4593.392,-428.4322,144.6565,0,0,0,0,100,0), +(@PATH,7,4595.142,-426.1822,145.6565,0,0,0,0,100,0), +(@PATH,8,4597.142,-423.6822,146.6565,0,0,0,0,100,0), +(@PATH,9,4599.642,-420.6822,147.4065,0,0,0,0,100,0), +(@PATH,10,4602.142,-417.9322,148.1565,0,0,0,0,100,0), +(@PATH,11,4604.642,-414.9322,148.9065,0,0,0,0,100,0), +(@PATH,12,4606.642,-412.6822,149.9065,0,0,0,0,100,0), +(@PATH,13,4608.392,-410.1822,150.9065,0,0,0,0,100,0), +(@PATH,14,4608.691,-409.937,151.0649,0,0,0,0,100,0), +(@PATH,15,4609.941,-408.687,151.3149,0,0,0,0,100,0), +(@PATH,16,4613.441,-406.437,152.5649,0,0,0,0,100,0), +(@PATH,17,4615.691,-405.187,153.8149,0,0,0,0,100,0), +(@PATH,18,4618.191,-403.687,154.5649,0,0,0,0,100,0), +(@PATH,19,4621.691,-401.687,156.0649,0,0,0,0,100,0), +(@PATH,20,4620.293,-402.3251,155.5382,0,0,0,0,100,0), +(@PATH,21,4617.043,-404.3251,154.0382,0,0,0,0,100,0), +(@PATH,22,4614.543,-405.8251,152.7882,0,0,0,0,100,0), +(@PATH,23,4611.293,-407.8251,151.7882,0,0,0,0,100,0), +(@PATH,24,4609.751,-408.8759,151.0355,0,0,0,0,100,0), +(@PATH,25,4607.751,-411.1259,150.2855,0,0,0,0,100,0), +(@PATH,26,4605.751,-413.3759,149.0355,0,0,0,0,100,0), +(@PATH,27,4604.001,-415.8759,148.2855,0,0,0,0,100,0), +(@PATH,28,4602.001,-418.1259,147.7855,0,0,0,0,100,0), +(@PATH,29,4599.001,-421.6259,146.7855,0,0,0,0,100,0), +(@PATH,30,4597.001,-423.8759,146.0355,0,0,0,0,100,0), +(@PATH,31,4594.501,-427.1259,145.2855,0,0,0,0,100,0), +(@PATH,32,4594.465,-427.3057,145.1041,0,0,0,0,100,0), +(@PATH,33,4593.215,-428.5557,144.6041,0,0,0,0,100,0), +(@PATH,34,4593.465,-434.5557,145.3541,0,0,0,0,100,0), +(@PATH,35,4593.465,-440.3057,145.8541,0,0,0,0,100,0), +(@PATH,36,4593.465,-445.3057,146.3541,0,0,0,0,100,0); + +-- 15. Onslaught Raven Archon +SET @NPC := 117138; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4724.406,`position_y`=-356.798,`position_z`=181.8883 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4724.406,-356.798,181.8883,0,0,0,0,100,0), +(@PATH,2,4717.824,-372.1068,181.2777,0,0,0,0,100,0), +(@PATH,3,4712.074,-377.1068,180.7777,0,0,0,0,100,0), +(@PATH,4,4709.574,-379.1068,180.2777,0,0,0,0,100,0), +(@PATH,5,4710.34,-378.5876,180.2192,0,0,0,0,100,0), +(@PATH,6,4713.34,-376.0876,180.9692,0,0,0,0,100,0), +(@PATH,7,4718.058,-372.0478,181.2572,0,0,0,0,100,0), +(@PATH,8,4721.808,-363.0478,182.0072,0,0,0,0,100,0), +(@PATH,9,4724.464,-356.5519,181.7701,0,0,0,0,100,0), +(@PATH,10,4722.449,-346.1371,182.0739,0,0,0,0,100,0), +(@PATH,11,4728.199,-335.8871,182.5739,0,0,0,0,100,0), +(@PATH,12,4722.129,-346.2792,181.8653,0,0,0,0,100,0), +(@PATH,13,4722.348,-346.2967,182.047,0,0,0,0,100,0), +(@PATH,14,4724.397,-356.7561,181.8892,0,0,0,0,100,0); + +-- 16. Onslaught Death Knight +SET @NPC := 117832; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4775.135,`position_y`=-303.4818,`position_z`=196.1635 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4775.135,-303.4818,196.1635,0,0,0,0,100,0), +(@PATH,2,4774.385,-303.9818,195.6635,0,0,0,0,100,0), +(@PATH,3,4773.885,-303.9818,195.1635,0,0,0,0,100,0), +(@PATH,4,4773.885,-305.9818,194.9135,0,0,0,0,100,0), +(@PATH,5,4773.885,-309.9818,194.1635,0,0,0,0,100,0), +(@PATH,6,4773.885,-311.9818,193.4135,0,0,0,0,100,0), +(@PATH,7,4773.885,-314.9818,192.6635,0,0,0,0,100,0), +(@PATH,8,4774.135,-323.9818,193.4135,0,0,0,0,100,0), +(@PATH,9,4774.135,-332.7318,192.6635,0,0,0,0,100,0), +(@PATH,10,4774.135,-333.7318,193.6635,0,0,0,0,100,0), +(@PATH,11,4774.325,-344.7158,193.9453,0,0,0,0,100,0), +(@PATH,12,4775.325,-344.7158,194.9453,0,0,0,0,100,0), +(@PATH,13,4776.325,-344.7158,195.4453,0,0,0,0,100,0), +(@PATH,14,4777.325,-344.7158,196.1953,0,0,0,0,100,0), +(@PATH,15,4779.075,-344.7158,196.6953,0,0,0,0,100,0), +(@PATH,16,4780.075,-344.7158,197.1953,0,0,0,0,100,0), +(@PATH,17,4781.075,-344.7158,198.1953,0,0,0,0,100,0), +(@PATH,18,4782.075,-344.7158,198.9453,0,0,0,0,100,0), +(@PATH,19,4783.075,-344.7158,199.6953,0,0,0,0,100,0), +(@PATH,20,4783.273,-344.7045,200.0436,0,0,0,0,100,0), +(@PATH,21,4784.023,-344.7045,200.7936,0,0,0,0,100,0), +(@PATH,22,4784.273,-341.7045,201.5436,0,0,0,0,100,0), +(@PATH,23,4784.273,-338.7045,202.0436,0,0,0,0,100,0), +(@PATH,24,4784.273,-336.7045,203.0436,0,0,0,0,100,0), +(@PATH,25,4784.523,-334.7045,203.7936,0,0,0,0,100,0), +(@PATH,26,4784.523,-331.7045,204.2936,0,0,0,0,100,0), +(@PATH,27,4784.773,-323.7045,203.7936,0,0,0,0,100,0), +(@PATH,28,4785.273,-312.9545,204.2936,0,0,0,0,100,0), +(@PATH,29,4785.523,-308.9545,205.5436,0,0,0,0,100,0), +(@PATH,30,4785.523,-302.9545,206.0436,0,0,0,0,100,0), +(@PATH,31,4785.646,-300.5979,206.2332,0,0,0,0,100,0), +(@PATH,32,4784.646,-300.8479,205.4832,0,0,0,0,100,0), +(@PATH,33,4783.896,-301.0979,204.4832,0,0,0,0,100,0), +(@PATH,34,4782.896,-301.3479,203.4832,0,0,0,0,100,0), +(@PATH,35,4781.896,-301.5979,202.7332,0,0,0,0,100,0), +(@PATH,36,4780.896,-301.8479,201.7332,0,0,0,0,100,0), +(@PATH,37,4779.896,-302.0979,200.4832,0,0,0,0,100,0), +(@PATH,38,4779.146,-302.3479,199.7332,0,0,0,0,100,0), +(@PATH,39,4778.396,-302.8479,198.4832,0,0,0,0,100,0), +(@PATH,40,4777.396,-303.0979,197.7332,0,0,0,0,100,0), +(@PATH,41,4775.396,-303.3479,196.4832,0,0,0,0,100,0); + +-- 17. Onslaught Death Knight +SET @NPC := 117839; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4716.436,`position_y`=-400.944,`position_z`=185.0362 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4716.436,-400.944,185.0362,0,0,0,0,100,0), +(@PATH,2,4717.936,-397.444,185.5362,0,0,0,0,100,0), +(@PATH,3,4721.186,-389.194,186.0362,0,0,0,0,100,0), +(@PATH,4,4723.422,-384.276,186.1633,0,0,0,0,100,0), +(@PATH,5,4735.376,-367.9473,186.7946,0,0,0,0,100,0), +(@PATH,6,4737.126,-365.4473,187.5446,0,0,0,0,100,0), +(@PATH,7,4739.126,-362.1973,188.0446,0,0,0,0,100,0), +(@PATH,8,4740.876,-359.9473,188.5446,0,0,0,0,100,0), +(@PATH,9,4742.458,-357.7573,189.1335,0,0,0,0,100,0), +(@PATH,10,4744.458,-358.0073,189.8835,0,0,0,0,100,0), +(@PATH,11,4746.458,-358.2573,190.6335,0,0,0,0,100,0), +(@PATH,12,4748.458,-358.2573,190.8835,0,0,0,0,100,0), +(@PATH,13,4750.208,-358.5073,191.6335,0,0,0,0,100,0), +(@PATH,14,4752.208,-358.7573,192.1335,0,0,0,0,100,0), +(@PATH,15,4755.208,-359.0073,192.8835,0,0,0,0,100,0), +(@PATH,16,4755.139,-358.7617,192.7538,0,0,0,0,100,0), +(@PATH,17,4752.139,-358.5117,192.2538,0,0,0,0,100,0), +(@PATH,18,4750.139,-358.5117,191.5038,0,0,0,0,100,0), +(@PATH,19,4748.389,-358.2617,191.0038,0,0,0,0,100,0), +(@PATH,20,4746.389,-358.2617,190.5038,0,0,0,0,100,0), +(@PATH,21,4744.389,-358.0117,189.7538,0,0,0,0,100,0), +(@PATH,22,4744.068,-358.0636,189.5123,0,0,0,0,100,0), +(@PATH,23,4742.068,-357.8136,188.7623,0,0,0,0,100,0), +(@PATH,24,4740.568,-360.3136,188.2623,0,0,0,0,100,0), +(@PATH,25,4738.568,-363.3136,187.7623,0,0,0,0,100,0), +(@PATH,26,4736.318,-366.5636,187.2623,0,0,0,0,100,0), +(@PATH,27,4736.031,-366.8282,186.9275,0,0,0,0,100,0), +(@PATH,28,4735.031,-368.0782,186.6775,0,0,0,0,100,0), +(@PATH,29,4732.281,-372.0782,186.1775,0,0,0,0,100,0), +(@PATH,30,4723.25,-384.6306,186.0191,0,0,0,0,100,0), +(@PATH,31,4718.75,-395.3806,185.5191,0,0,0,0,100,0), +(@PATH,32,4716.201,-400.9923,185.1606,0,0,0,0,100,0), +(@PATH,33,4718.451,-402.9923,185.6606,0,0,0,0,100,0), +(@PATH,34,4722.451,-405.9923,186.6606,0,0,0,0,100,0), +(@PATH,35,4734.701,-415.7423,187.4106,0,0,0,0,100,0), +(@PATH,36,4735.451,-416.4923,188.4106,0,0,0,0,100,0), +(@PATH,37,4735.871,-416.6113,188.0563,0,0,0,0,100,0), +(@PATH,38,4734.871,-415.8613,187.3063,0,0,0,0,100,0), +(@PATH,39,4734.121,-415.3613,186.8063,0,0,0,0,100,0), +(@PATH,40,4731.871,-413.3613,185.8063,0,0,0,0,100,0), +(@PATH,41,4730.371,-412.1113,186.5563,0,0,0,0,100,0), +(@PATH,42,4718.871,-403.1113,185.8063,0,0,0,0,100,0), +(@PATH,43,4716.524,-401.1166,185.1767,0,0,0,0,100,0); + +-- 18. Onslaught Death Knight +SET @NPC := 117851; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4705.714,`position_y`=-320.1843,`position_z`=176.6997 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4705.714,-320.1843,176.6997,0,0,0,0,100,0), +(@PATH,2,4706.964,-320.9343,177.1997,0,0,0,0,100,0), +(@PATH,3,4707.714,-323.6843,177.6997,0,0,0,0,100,0), +(@PATH,4,4708.464,-325.4343,178.4497,0,0,0,0,100,0), +(@PATH,5,4709.69,-328.5651,179.3957,0,0,0,0,100,0), +(@PATH,6,4703.855,-338.3154,179.2477,0,0,0,0,100,0), +(@PATH,7,4702.105,-337.5654,178.4977,0,0,0,0,100,0), +(@PATH,8,4699.355,-336.3154,177.7477,0,0,0,0,100,0), +(@PATH,9,4696.605,-335.0654,177.2477,0,0,0,0,100,0), +(@PATH,10,4679.237,-327.8691,176.4677,0,0,0,0,100,0), +(@PATH,11,4679.204,-327.8438,176.4087,0,0,0,0,100,0), +(@PATH,12,4679.519,-327.856,176.9473,0,0,0,0,100,0), +(@PATH,13,4696.519,-335.106,177.4473,0,0,0,0,100,0), +(@PATH,14,4699.269,-336.356,177.6973,0,0,0,0,100,0), +(@PATH,15,4701.269,-337.106,178.1973,0,0,0,0,100,0), +(@PATH,16,4701.459,-337.2228,178.4309,0,0,0,0,100,0), +(@PATH,17,4704.209,-338.4728,179.1809,0,0,0,0,100,0), +(@PATH,18,4709.626,-328.3861,179.4376,0,0,0,0,100,0), +(@PATH,19,4708.876,-326.6361,178.6876,0,0,0,0,100,0), +(@PATH,20,4708.126,-324.8861,177.9376,0,0,0,0,100,0), +(@PATH,21,4707.126,-322.1361,177.4376,0,0,0,0,100,0), +(@PATH,22,4707.211,-321.6881,177.3876,0,0,0,0,100,0), +(@PATH,23,4706.711,-320.6881,176.8876,0,0,0,0,100,0), +(@PATH,24,4704.961,-319.6881,176.3876,0,0,0,0,100,0), +(@PATH,25,4702.461,-318.1881,175.3876,0,0,0,0,100,0), +(@PATH,26,4700.711,-317.1881,174.6376,0,0,0,0,100,0), +(@PATH,27,4698.961,-316.1881,173.8876,0,0,0,0,100,0), +(@PATH,28,4696.211,-315.1881,173.1376,0,0,0,0,100,0), +(@PATH,29,4694.711,-314.1881,172.3876,0,0,0,0,100,0), +(@PATH,30,4692.211,-312.6881,171.8876,0,0,0,0,100,0), +(@PATH,31,4690.461,-311.6881,171.1376,0,0,0,0,100,0), +(@PATH,32,4688.711,-310.6881,170.1376,0,0,0,0,100,0), +(@PATH,33,4686.961,-309.6881,169.6376,0,0,0,0,100,0), +(@PATH,34,4684.461,-308.1881,167.8876,0,0,0,0,100,0), +(@PATH,35,4682.711,-307.1881,167.3876,0,0,0,0,100,0), +(@PATH,36,4684.099,-307.9991,167.579,0,0,0,0,100,0), +(@PATH,37,4682.349,-306.9991,167.079,0,0,0,0,100,0), +(@PATH,38,4681.849,-306.7491,166.829,0,0,0,0,100,0), +(@PATH,39,4679.849,-306.4991,165.829,0,0,0,0,100,0), +(@PATH,40,4677.849,-306.2491,165.079,0,0,0,0,100,0), +(@PATH,41,4675.099,-305.7491,163.829,0,0,0,0,100,0), +(@PATH,42,4672.349,-305.2491,162.829,0,0,0,0,100,0), +(@PATH,43,4670.349,-304.7491,162.079,0,0,0,0,100,0), +(@PATH,44,4668.349,-304.4991,161.579,0,0,0,0,100,0), +(@PATH,45,4666.349,-303.9991,160.579,0,0,0,0,100,0), +(@PATH,46,4666.279,-304.1193,160.5885,0,0,0,0,100,0), +(@PATH,47,4669.279,-304.6193,161.8385,0,0,0,0,100,0), +(@PATH,48,4671.279,-305.1193,162.5885,0,0,0,0,100,0), +(@PATH,49,4673.029,-305.3693,163.3385,0,0,0,0,100,0), +(@PATH,50,4676.029,-305.6193,164.0885,0,0,0,0,100,0), +(@PATH,51,4678.029,-306.1193,165.0885,0,0,0,0,100,0), +(@PATH,52,4680.029,-306.3693,165.8385,0,0,0,0,100,0), +(@PATH,53,4680.176,-306.6355,166.1882,0,0,0,0,100,0), +(@PATH,54,4682.176,-306.8855,166.9382,0,0,0,0,100,0), +(@PATH,55,4684.676,-308.3855,168.6882,0,0,0,0,100,0), +(@PATH,56,4686.426,-309.3855,169.4382,0,0,0,0,100,0), +(@PATH,57,4688.176,-310.3855,170.1882,0,0,0,0,100,0), +(@PATH,58,4689.926,-311.3855,170.9382,0,0,0,0,100,0), +(@PATH,59,4691.676,-312.3855,171.1882,0,0,0,0,100,0), +(@PATH,60,4693.176,-313.3855,171.9382,0,0,0,0,100,0), +(@PATH,61,4694.926,-314.1355,172.9382,0,0,0,0,100,0), +(@PATH,62,4697.676,-315.6355,173.6882,0,0,0,0,100,0), +(@PATH,63,4699.426,-316.6355,174.4382,0,0,0,0,100,0), +(@PATH,64,4700.926,-317.6355,174.9382,0,0,0,0,100,0), +(@PATH,65,4703.676,-318.8855,175.6882,0,0,0,0,100,0), +(@PATH,66,4705.426,-319.8855,176.4382,0,0,0,0,100,0), +(@PATH,67,4703.938,-319.2475,176.1418,0,0,0,0,100,0); + +-- 19. Onslaught Death Knight +SET @NPC := 117838; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4738.398,`position_y`=-268.4922,`position_z`=170.6809 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4738.398,-268.4922,170.6809,0,0,0,0,100,0), +(@PATH,2,4738.148,-270.2422,171.6809,0,0,0,0,100,0), +(@PATH,3,4738.648,-271.2422,172.1809,0,0,0,0,100,0), +(@PATH,4,4739.148,-271.9922,172.9309,0,0,0,0,100,0), +(@PATH,5,4740.148,-273.7422,173.6809,0,0,0,0,100,0), +(@PATH,6,4741.148,-275.4922,174.9309,0,0,0,0,100,0), +(@PATH,7,4742.148,-277.2422,175.6809,0,0,0,0,100,0), +(@PATH,8,4743.148,-278.7422,176.4309,0,0,0,0,100,0), +(@PATH,9,4744.148,-280.4922,177.6809,0,0,0,0,100,0), +(@PATH,10,4745.148,-282.2422,179.1809,0,0,0,0,100,0), +(@PATH,11,4746.148,-283.9922,179.9309,0,0,0,0,100,0), +(@PATH,12,4747.148,-285.4922,180.9309,0,0,0,0,100,0), +(@PATH,13,4747.233,-285.5703,180.9717,0,0,0,0,100,0), +(@PATH,14,4747.733,-286.3203,181.4717,0,0,0,0,100,0), +(@PATH,15,4748.483,-283.3203,180.2217,0,0,0,0,100,0), +(@PATH,16,4748.733,-281.3203,179.2217,0,0,0,0,100,0), +(@PATH,17,4749.483,-279.5703,178.4717,0,0,0,0,100,0), +(@PATH,18,4749.983,-277.8203,177.7217,0,0,0,0,100,0), +(@PATH,19,4750.483,-275.8203,176.9717,0,0,0,0,100,0), +(@PATH,20,4751.545,-272.9406,176.0473,0,0,0,0,100,0), +(@PATH,21,4760.295,-268.6906,175.2973,0,0,0,0,100,0), +(@PATH,22,4768.045,-264.6906,176.0473,0,0,0,0,100,0), +(@PATH,23,4768.183,-264.4334,175.7711,0,0,0,0,100,0), +(@PATH,24,4770.933,-262.9334,176.2711,0,0,0,0,100,0), +(@PATH,25,4769.183,-260.4334,174.7711,0,0,0,0,100,0), +(@PATH,26,4768.683,-259.6834,174.2711,0,0,0,0,100,0), +(@PATH,27,4767.433,-258.1834,173.2711,0,0,0,0,100,0), +(@PATH,28,4766.183,-256.4334,172.7711,0,0,0,0,100,0), +(@PATH,29,4765.183,-255.1834,172.0211,0,0,0,0,100,0), +(@PATH,30,4763.433,-252.6834,171.2711,0,0,0,0,100,0), +(@PATH,31,4761.683,-250.1834,170.5211,0,0,0,0,100,0), +(@PATH,32,4760.683,-248.6834,169.5211,0,0,0,0,100,0), +(@PATH,33,4758.657,-246.4807,168.7377,0,0,0,0,100,0), +(@PATH,34,4755.907,-247.2307,167.9877,0,0,0,0,100,0), +(@PATH,35,4753.907,-247.4807,167.2377,0,0,0,0,100,0), +(@PATH,36,4750.907,-248.2307,166.4877,0,0,0,0,100,0), +(@PATH,37,4748.407,-248.9807,166.2377,0,0,0,0,100,0), +(@PATH,38,4745.407,-249.4807,165.4877,0,0,0,0,100,0), +(@PATH,39,4742.407,-249.9807,164.7377,0,0,0,0,100,0), +(@PATH,40,4742.154,-250.1919,164.6562,0,0,0,0,100,0), +(@PATH,41,4740.904,-250.6919,164.4062,0,0,0,0,100,0), +(@PATH,42,4740.654,-252.4419,165.1562,0,0,0,0,100,0), +(@PATH,43,4740.404,-255.4419,165.9062,0,0,0,0,100,0), +(@PATH,44,4740.154,-257.4419,166.6562,0,0,0,0,100,0), +(@PATH,45,4739.904,-259.4419,167.6562,0,0,0,0,100,0), +(@PATH,46,4739.654,-261.1919,167.9062,0,0,0,0,100,0), +(@PATH,47,4739.154,-264.1919,168.9062,0,0,0,0,100,0), +(@PATH,48,4738.904,-266.1919,169.6562,0,0,0,0,100,0); + +-- 20. Onslaught Death Knight +SET @NPC := 117860; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4696.873,`position_y`=-283.3671,`position_z`=163.6956 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,10719,0,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,4696.873,-283.3671,163.6956,0,0,0,0,100,0), +(@PATH,2,4695.873,-281.6171,162.9456,0,0,0,0,100,0), +(@PATH,3,4695.373,-280.6171,162.4456,0,0,0,0,100,0), +(@PATH,4,4694.623,-278.8671,161.4456,0,0,0,0,100,0), +(@PATH,5,4693.373,-276.1171,160.9456,0,0,0,0,100,0), +(@PATH,6,4692.373,-274.3671,160.1956,0,0,0,0,100,0), +(@PATH,7,4691.623,-272.6171,159.4456,0,0,0,0,100,0), +(@PATH,8,4690.123,-270.1171,158.9456,0,0,0,0,100,0), +(@PATH,9,4689.373,-268.3671,158.4456,0,0,0,0,100,0), +(@PATH,10,4688.623,-266.6171,157.6956,0,0,0,0,100,0), +(@PATH,11,4687.373,-263.8671,156.9456,0,0,0,0,100,0), +(@PATH,12,4686.623,-262.1171,156.1956,0,0,0,0,100,0), +(@PATH,13,4685.623,-260.1171,155.4456,0,0,0,0,100,0), +(@PATH,14,4684.373,-257.6171,154.6956,0,0,0,0,100,0), +(@PATH,15,4684.381,-257.5009,154.6773,0,0,0,0,100,0), +(@PATH,16,4684.131,-257.0009,154.4273,0,0,0,0,100,0), +(@PATH,17,4686.131,-256.7509,155.1773,0,0,0,0,100,0), +(@PATH,18,4688.131,-256.5009,155.9273,0,0,0,0,100,0), +(@PATH,19,4690.131,-256.5009,156.4273,0,0,0,0,100,0), +(@PATH,20,4692.631,-256.2509,156.9273,0,0,0,0,100,0), +(@PATH,21,4696.631,-255.7509,157.6773,0,0,0,0,100,0), +(@PATH,22,4696.935,-255.8058,157.7687,0,0,0,0,100,0), +(@PATH,23,4699.935,-255.5558,158.5187,0,0,0,0,100,0), +(@PATH,24,4701.935,-256.0558,159.0187,0,0,0,0,100,0), +(@PATH,25,4703.435,-256.8058,159.5187,0,0,0,0,100,0), +(@PATH,26,4705.435,-257.3058,160.0187,0,0,0,0,100,0), +(@PATH,27,4708.185,-258.0558,160.7687,0,0,0,0,100,0), +(@PATH,28,4708.102,-258.0999,160.4381,0,0,0,0,100,0), +(@PATH,29,4705.352,-257.3499,159.9381,0,0,0,0,100,0), +(@PATH,30,4702.602,-256.3499,159.4381,0,0,0,0,100,0), +(@PATH,31,4700.602,-255.5999,158.6881,0,0,0,0,100,0), +(@PATH,32,4700.52,-255.7942,158.4137,0,0,0,0,100,0), +(@PATH,33,4699.77,-255.5442,158.1637,0,0,0,0,100,0), +(@PATH,34,4696.77,-255.7942,157.6637,0,0,0,0,100,0), +(@PATH,35,4692.77,-256.0442,156.9137,0,0,0,0,100,0), +(@PATH,36,4690.02,-256.5442,156.4137,0,0,0,0,100,0), +(@PATH,37,4688.02,-256.5442,155.9137,0,0,0,0,100,0), +(@PATH,38,4686.02,-256.5442,155.1637,0,0,0,0,100,0), +(@PATH,39,4686.198,-256.8826,155.1549,0,0,0,0,100,0), +(@PATH,40,4684.198,-256.8826,154.4049,0,0,0,0,100,0), +(@PATH,41,4684.948,-258.8826,155.1549,0,0,0,0,100,0), +(@PATH,42,4685.948,-260.6326,155.9049,0,0,0,0,100,0), +(@PATH,43,4687.198,-263.3826,156.6549,0,0,0,0,100,0), +(@PATH,44,4688.198,-265.1326,157.4049,0,0,0,0,100,0), +(@PATH,45,4688.948,-266.8826,158.1549,0,0,0,0,100,0), +(@PATH,46,4690.198,-269.6326,158.9049,0,0,0,0,100,0), +(@PATH,47,4691.198,-271.1326,159.4049,0,0,0,0,100,0), +(@PATH,48,4691.948,-272.8826,159.9049,0,0,0,0,100,0), +(@PATH,49,4692.948,-275.6326,160.6549,0,0,0,0,100,0), +(@PATH,50,4693.948,-277.3826,161.4049,0,0,0,0,100,0), +(@PATH,51,4694.698,-279.3826,162.1549,0,0,0,0,100,0), +(@PATH,52,4696.198,-281.8826,162.9049,0,0,0,0,100,0), +(@PATH,53,4696.171,-282.1349,163.015,0,0,0,0,100,0), +(@PATH,54,4696.921,-283.6349,163.765,0,0,0,0,100,0), +(@PATH,55,4692.171,-284.8849,162.765,0,0,0,0,100,0), +(@PATH,56,4686.671,-286.8849,162.015,0,0,0,0,100,0), +(@PATH,57,4682.792,-288.4092,162.0146,0,0,0,0,100,0), +(@PATH,58,4688.542,-286.4092,162.5146,0,0,0,0,100,0), +(@PATH,59,4693.042,-284.9092,163.0146,0,0,0,0,100,0), +(@PATH,60,4696.851,-283.3021,163.8536,0,0,0,0,100,0); diff --git a/sql/updates/world/2015_07_19_05_world.sql b/sql/updates/world/2015_07_19_05_world.sql new file mode 100644 index 00000000000..2d174d02b4d --- /dev/null +++ b/sql/updates/world/2015_07_19_05_world.sql @@ -0,0 +1,512 @@ +-- Dragonblight - Lights Trust + Jintha'kalar + Border Zone to Zul'Drak + +-- Spawn Borderzone to Zul'Drak +SET @CGUID := 52283; +DELETE FROM `creature` WHERE `guid` BETWEEN @CGUID+0 AND @CGUID+39; +INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `MovementType`) VALUES +(@CGUID+0, 26965, 571, 1, 1, 4851.188, -1375.803, 168.173, 2.495821, 120, 0, 0), -- 26965 (Area: 65) +(@CGUID+1, 26965, 571, 1, 1, 4857.981, -1376.318, 168.6309, 2.670354, 120, 0, 0), -- 26965 (Area: 65) +(@CGUID+2, 26942, 571, 1, 1, 4835.941, -1356.574, 168.1345, 3.508112, 120, 0, 0), -- 26942 (Area: 65) +(@CGUID+3, 26943, 571, 1, 1, 4794.83, -1363.528, 168.2291, 2.879793, 120, 0, 0), -- 26943 (Area: 65) (Auras: 31261 - 31261) +(@CGUID+4, 26942, 571, 1, 1, 4824.749, -1351.297, 168.1345, 5.201081, 120, 0, 0), -- 26942 (Area: 65) +(@CGUID+5, 26965, 571, 1, 1, 4845.405, -1390.947, 168.3004, 2.426008, 120, 0, 0), -- 26965 (Area: 65) +(@CGUID+6, 26948, 571, 1, 1, 4879.886, -1359.748, 170.6132, 1.32645, 120, 0, 0), -- 26948 (Area: 65) +(@CGUID+7, 27122, 571, 1, 1, 4861.432, -1393.793, 174.2825, 2.408554, 120, 0, 0), -- 27122 (Area: 65) +(@CGUID+8, 26942, 571, 1, 1, 4818.89, -1360.14, 168.1345, 0.05235988, 120, 0, 0), -- 26942 (Area: 65) +(@CGUID+9, 26943, 571, 1, 1, 4824.268, -1309.96, 168.1351, 1.815142, 120, 0, 0), -- 26943 (Area: 65) (Auras: 31261 - 31261) +(@CGUID+10, 26965, 571, 1, 1, 4813.782, -1379.419, 168.1394, 0.715585, 120, 0, 0), -- 26965 (Area: 65) +(@CGUID+11, 26948, 571, 1, 1, 4787.675, -1357.641, 168.1228, 5.608262, 120, 5, 1), -- 26948 (Area: 65) (possible waypoints or random movement) +(@CGUID+12, 27180, 571, 1, 1, 4828.494, -1359.478, 168.9354, 3.595378, 120, 0, 0), -- 27180 (Area: 65) (Auras: ) +(@CGUID+13, 26965, 571, 1, 1, 4759.144, -1324.293, 168.1289, 1.239184, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+14, 26965, 571, 1, 1, 4830.825, -1281.564, 168.1345, 2.478368, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+15, 26942, 571, 1, 1, 4882.462, -1296.305, 168.9128, 5.967298, 120, 5, 1), -- 26942 (Area: 4194) (possible waypoints or random movement) +(@CGUID+16, 26942, 571, 1, 1, 4825.333, -1271.901, 168.1345, 1.466077, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+17, 26965, 571, 1, 1, 4839.098, -1278.017, 168.1345, 2.443461, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+18, 26942, 571, 1, 1, 4776.366, -1298.084, 168.1923, 2.459157, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+19, 26948, 571, 1, 1, 4780.881, -1323.59, 170.382, 5.497787, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+20, 26948, 571, 1, 1, 4860.839, -1288.24, 168.1761, 5.231593, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+21, 26965, 571, 1, 1, 4756.153, -1322.307, 168.082, 1.117011, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+22, 26948, 571, 1, 1, 4828.986, -1302.488, 168.1761, 3.63614, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+23, 26942, 571, 1, 1, 4817.282, -1265.442, 168.1345, 0.3316126, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+24, 26942, 571, 1, 1, 4835.445, -1268.463, 168.1345, 2.548181, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+25, 26942, 571, 1, 1, 4848.663, -1267.707, 168.1599, 5.433909, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+26, 26948, 571, 1, 1, 4835.497, -1239.648, 168.0885, 2.040028, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+27, 26965, 571, 1, 1, 4843.369, -1234.644, 168.1397, 3.926991, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+28, 26943, 571, 1, 1, 4887.302, -1264.812, 171.437, 4.607669, 120, 0, 0), -- 26943 (Area: 4194) +(@CGUID+29, 26965, 571, 1, 1, 4869.199, -1266.455, 168.1345, 5.026548, 120, 0, 0), -- 26965 (Area: 4194) +(@CGUID+30, 27180, 571, 1, 1, 4826.384, -1262.595, 169.1476, 5.51524, 120, 0, 0), -- 27180 (Area: 4194) (Auras: ) +(@CGUID+31, 26948, 571, 1, 1, 4883.104, -1231.949, 171.7453, 2.377072, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+32, 26948, 571, 1, 1, 4777.86, -1257.964, 170.2508, 5.732042, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+33, 26943, 571, 1, 1, 4787.492, -1245.858, 170.2264, 0.3839724, 120, 0, 0), -- 26943 (Area: 4194) (Auras: 31261 - 31261) +(@CGUID+34, 26948, 571, 1, 1, 4894.829, -1239.824, 171.6914, 6.06022, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+35, 26616, 571, 1, 1, 4835.255, -1185.161, 169.3726, 0.5858352, 120, 0, 0), -- 26616 (Area: 4194) +(@CGUID+36, 29328, 571, 1, 1, 4751.768, -1247.785, 165.9524, 6.012752, 120, 0, 0), -- 29328 (Area: 4194) +(@CGUID+37, 26942, 571, 1, 1, 4797.997, -1199.684, 168.015, 3.508836, 120, 0, 0), -- 26942 (Area: 4194) +(@CGUID+38, 26948, 571, 1, 1, 4820.067, -1186.061, 168.7476, 1.778343, 120, 0, 0), -- 26948 (Area: 4194) +(@CGUID+39, 26948, 571, 1, 1, 4745.205, -1261.961, 166.8819, 5.879832, 120, 0, 0); -- 26948 (Area: 4194) + +-- 1. Arctic Grizzly +SET @NPC := 106511; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4455.596,`position_y`=-826.0573,`position_z`=157.3699 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4455.596,-826.0573,157.3699,0,0,0,0,100,0), +(@PATH,2,4455.596,-823.0573,156.6199,0,0,0,0,100,0), +(@PATH,3,4455.596,-820.3073,156.1199,0,0,0,0,100,0), +(@PATH,4,4455.846,-817.3073,155.6199,0,0,0,0,100,0), +(@PATH,5,4455.846,-814.3073,154.8699,0,0,0,0,100,0), +(@PATH,6,4456.21,-814.3221,155.0774,0,0,0,0,100,0), +(@PATH,7,4456.21,-813.3221,154.8274,0,0,0,0,100,0), +(@PATH,8,4464.21,-813.3221,155.0774,0,0,0,0,100,0), +(@PATH,9,4472.21,-813.5721,154.8274,0,0,0,0,100,0), +(@PATH,10,4482.96,-813.5721,154.0774,0,0,0,0,100,0), +(@PATH,11,4491.96,-813.5721,154.8274,0,0,0,0,100,0), +(@PATH,12,4500.96,-813.8221,155.0774,0,0,0,0,100,0), +(@PATH,13,4501.19,-813.7798,155.2957,0,0,0,0,100,0), +(@PATH,14,4502.94,-813.7798,155.2957,0,0,0,0,100,0), +(@PATH,15,4504.69,-817.2798,156.0457,0,0,0,0,100,0), +(@PATH,16,4506.19,-819.7798,156.5457,0,0,0,0,100,0), +(@PATH,17,4508.19,-823.2798,157.2957,0,0,0,0,100,0), +(@PATH,18,4510.19,-827.0298,158.0457,0,0,0,0,100,0), +(@PATH,19,4510.94,-828.7798,158.7957,0,0,0,0,100,0), +(@PATH,20,4512.19,-831.2798,159.2957,0,0,0,0,100,0), +(@PATH,21,4513.69,-833.7798,159.7957,0,0,0,0,100,0), +(@PATH,22,4515.19,-836.2798,160.5457,0,0,0,0,100,0), +(@PATH,23,4516.94,-839.7798,161.2957,0,0,0,0,100,0), +(@PATH,24,4519.44,-844.2798,162.0457,0,0,0,0,100,0), +(@PATH,25,4521.19,-847.7798,162.7957,0,0,0,0,100,0), +(@PATH,26,4521.416,-848.0215,163.045,0,0,0,0,100,0), +(@PATH,27,4522.166,-849.2715,163.045,0,0,0,0,100,0), +(@PATH,28,4511.916,-853.5215,163.795,0,0,0,0,100,0), +(@PATH,29,4506.666,-855.7715,164.295,0,0,0,0,100,0), +(@PATH,30,4502.916,-857.2715,165.045,0,0,0,0,100,0), +(@PATH,31,4500.166,-858.5215,165.545,0,0,0,0,100,0), +(@PATH,32,4495.666,-860.2715,166.295,0,0,0,0,100,0), +(@PATH,33,4493.258,-861.2418,166.6318,0,0,0,0,100,0), +(@PATH,34,4476.508,-854.7418,165.8818,0,0,0,0,100,0), +(@PATH,35,4470.258,-852.4918,165.1318,0,0,0,0,100,0), +(@PATH,36,4465.508,-850.7418,164.6318,0,0,0,0,100,0), +(@PATH,37,4461.008,-848.7418,164.1318,0,0,0,0,100,0), +(@PATH,38,4457.258,-847.4918,163.6318,0,0,0,0,100,0), +(@PATH,39,4457.196,-847.1956,163.4145,0,0,0,0,100,0), +(@PATH,40,4454.696,-846.1956,162.9145,0,0,0,0,100,0), +(@PATH,41,4454.696,-844.1956,162.1645,0,0,0,0,100,0), +(@PATH,42,4454.946,-841.1956,161.4145,0,0,0,0,100,0), +(@PATH,43,4454.946,-839.1956,160.6645,0,0,0,0,100,0), +(@PATH,44,4455.196,-837.1956,160.1645,0,0,0,0,100,0), +(@PATH,45,4455.196,-834.1956,159.4145,0,0,0,0,100,0), +(@PATH,46,4455.446,-832.1956,158.9145,0,0,0,0,100,0); + +-- 2. Arctic Grizzly +SET @NPC := 106526; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4449.314,`position_y`=-732.3552,`position_z`=139.431 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4449.314,-732.3552,139.431,0,0,0,0,100,0), +(@PATH,2,4448.814,-731.3552,138.931,0,0,0,0,100,0), +(@PATH,3,4450.064,-729.6052,138.431,0,0,0,0,100,0), +(@PATH,4,4451.564,-727.1052,137.681,0,0,0,0,100,0), +(@PATH,5,4452.814,-725.3552,136.931,0,0,0,0,100,0), +(@PATH,6,4454.314,-722.8552,136.181,0,0,0,0,100,0), +(@PATH,7,4455.564,-721.3552,135.431,0,0,0,0,100,0), +(@PATH,8,4457.314,-719.1052,134.681,0,0,0,0,100,0), +(@PATH,9,4458.064,-717.3552,134.181,0,0,0,0,100,0), +(@PATH,10,4459.814,-714.8552,133.431,0,0,0,0,100,0), +(@PATH,11,4460.814,-713.1052,132.681,0,0,0,0,100,0), +(@PATH,12,4462.564,-710.6052,131.681,0,0,0,0,100,0), +(@PATH,13,4463.564,-709.1052,130.931,0,0,0,0,100,0), +(@PATH,14,4465.314,-706.6052,130.431,0,0,0,0,100,0), +(@PATH,15,4465.617,-706.4352,130.1077,0,0,0,0,100,0), +(@PATH,16,4466.367,-705.1852,129.8577,0,0,0,0,100,0), +(@PATH,17,4489.202,-704.9454,130.1116,0,0,0,0,100,0), +(@PATH,18,4489.952,-706.9454,130.6116,0,0,0,0,100,0), +(@PATH,19,4490.702,-708.6954,131.3616,0,0,0,0,100,0), +(@PATH,20,4491.452,-710.4454,132.1116,0,0,0,0,100,0), +(@PATH,21,4492.702,-713.4454,132.8616,0,0,0,0,100,0), +(@PATH,22,4493.452,-715.1954,133.6116,0,0,0,0,100,0), +(@PATH,23,4494.202,-716.9454,134.1116,0,0,0,0,100,0), +(@PATH,24,4494.952,-718.9454,134.8616,0,0,0,0,100,0), +(@PATH,25,4495.952,-721.6954,135.6116,0,0,0,0,100,0), +(@PATH,26,4496.702,-723.4454,136.3616,0,0,0,0,100,0), +(@PATH,27,4497.452,-725.1954,136.8616,0,0,0,0,100,0), +(@PATH,28,4498.202,-726.9454,137.3616,0,0,0,0,100,0), +(@PATH,29,4499.452,-729.6954,138.1116,0,0,0,0,100,0), +(@PATH,30,4500.202,-731.4454,138.8616,0,0,0,0,100,0), +(@PATH,31,4500.952,-733.4454,139.3616,0,0,0,0,100,0), +(@PATH,32,4501.702,-735.1954,139.8616,0,0,0,0,100,0), +(@PATH,33,4502.702,-737.9454,140.6116,0,0,0,0,100,0), +(@PATH,34,4503.452,-739.9454,141.3616,0,0,0,0,100,0), +(@PATH,35,4504.452,-741.6954,142.1116,0,0,0,0,100,0), +(@PATH,36,4505.202,-743.4454,142.8616,0,0,0,0,100,0), +(@PATH,37,4488.686,-705.0179,129.7006,0,0,0,0,100,0), +(@PATH,38,4489.704,-706.9329,130.6221,0,0,0,0,100,0), +(@PATH,39,4490.454,-708.6829,131.3721,0,0,0,0,100,0), +(@PATH,40,4491.204,-710.4329,132.1221,0,0,0,0,100,0), +(@PATH,41,4492.454,-713.4329,132.8721,0,0,0,0,100,0), +(@PATH,42,4493.204,-715.1829,133.6221,0,0,0,0,100,0), +(@PATH,43,4493.954,-716.9329,134.3721,0,0,0,0,100,0), +(@PATH,44,4494.704,-718.9329,134.8721,0,0,0,0,100,0), +(@PATH,45,4495.954,-721.6829,135.6221,0,0,0,0,100,0), +(@PATH,46,4496.704,-723.4329,136.3721,0,0,0,0,100,0), +(@PATH,47,4497.204,-725.1829,136.8721,0,0,0,0,100,0), +(@PATH,48,4497.954,-726.9329,137.3721,0,0,0,0,100,0), +(@PATH,49,4499.204,-729.6829,138.1221,0,0,0,0,100,0), +(@PATH,50,4499.954,-731.4329,138.8721,0,0,0,0,100,0), +(@PATH,51,4500.704,-733.4329,139.3721,0,0,0,0,100,0), +(@PATH,52,4501.454,-735.1829,139.8721,0,0,0,0,100,0), +(@PATH,53,4502.704,-737.9329,140.6221,0,0,0,0,100,0), +(@PATH,54,4503.454,-739.6829,141.3721,0,0,0,0,100,0), +(@PATH,55,4504.204,-741.6829,142.1221,0,0,0,0,100,0), +(@PATH,56,4505.454,-744.4329,142.8721,0,0,0,0,100,0), +(@PATH,57,4505.363,-744.7341,143.1125,0,0,0,0,100,0), +(@PATH,58,4505.613,-745.2341,143.3625,0,0,0,0,100,0), +(@PATH,59,4505.113,-747.2341,144.1125,0,0,0,0,100,0), +(@PATH,60,4504.613,-749.2341,145.1125,0,0,0,0,100,0), +(@PATH,61,4504.113,-751.2341,145.6125,0,0,0,0,100,0), +(@PATH,62,4503.363,-753.7341,146.3625,0,0,0,0,100,0), +(@PATH,63,4502.863,-755.7341,146.8625,0,0,0,0,100,0), +(@PATH,64,4502.613,-757.7341,147.6125,0,0,0,0,100,0), +(@PATH,65,4501.863,-760.4841,148.3625,0,0,0,0,100,0), +(@PATH,66,4501.113,-763.4841,148.8625,0,0,0,0,100,0), +(@PATH,67,4500.878,-763.7328,148.9358,0,0,0,0,100,0), +(@PATH,68,4500.878,-764.2328,148.9358,0,0,0,0,100,0), +(@PATH,69,4492.878,-765.2328,148.4358,0,0,0,0,100,0), +(@PATH,70,4485.878,-765.9828,147.6858,0,0,0,0,100,0), +(@PATH,71,4480.378,-766.9828,147.4358,0,0,0,0,100,0), +(@PATH,72,4470.456,-768.4113,146.689,0,0,0,0,100,0), +(@PATH,73,4468.456,-764.9113,145.939,0,0,0,0,100,0), +(@PATH,74,4466.456,-761.4113,145.439,0,0,0,0,100,0), +(@PATH,75,4464.956,-758.9113,144.689,0,0,0,0,100,0), +(@PATH,76,4462.956,-755.4113,143.939,0,0,0,0,100,0), +(@PATH,77,4460.956,-752.1613,143.189,0,0,0,0,100,0), +(@PATH,78,4459.456,-749.6613,142.689,0,0,0,0,100,0), +(@PATH,79,4457.456,-746.1613,142.189,0,0,0,0,100,0), +(@PATH,80,4454.956,-741.9113,141.689,0,0,0,0,100,0), +(@PATH,81,4453.456,-739.4113,140.939,0,0,0,0,100,0), +(@PATH,82,4451.456,-735.9113,140.439,0,0,0,0,100,0); + +-- 3. Arctic Grizzly +SET @NPC := 106524; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4497.59,`position_y`=-893.8101,`position_z`=166.2068 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4497.59,-893.8101,166.2068,0,0,0,0,100,0), +(@PATH,2,4506.247,-894.3373,166.1922,0,0,0,0,100,0), +(@PATH,3,4506.506,-894.2155,166.6691,0,0,0,0,100,0), +(@PATH,4,4514.256,-898.7155,167.1691,0,0,0,0,100,0), +(@PATH,5,4521.006,-902.4655,167.9191,0,0,0,0,100,0), +(@PATH,6,4525.506,-904.7155,168.1691,0,0,0,0,100,0), +(@PATH,7,4529.006,-906.7155,168.9191,0,0,0,0,100,0), +(@PATH,8,4531.506,-908.2155,169.6691,0,0,0,0,100,0), +(@PATH,9,4534.895,-910.2976,170.6145,0,0,0,0,100,0), +(@PATH,10,4533.645,-916.0476,170.8645,0,0,0,0,100,0), +(@PATH,11,4531.895,-922.7976,171.3645,0,0,0,0,100,0), +(@PATH,12,4530.395,-930.5476,172.1145,0,0,0,0,100,0), +(@PATH,13,4530.322,-930.6996,172.1171,0,0,0,0,100,0), +(@PATH,14,4529.822,-932.4496,172.1171,0,0,0,0,100,0), +(@PATH,15,4524.822,-932.9496,171.6171,0,0,0,0,100,0), +(@PATH,16,4516.072,-934.1996,171.3671,0,0,0,0,100,0), +(@PATH,17,4494.955,-936.9406,171.2598,0,0,0,0,100,0), +(@PATH,18,4485.705,-932.9406,170.5098,0,0,0,0,100,0), +(@PATH,19,4476.705,-928.6906,170.0098,0,0,0,0,100,0), +(@PATH,20,4465.955,-924.1906,169.7598,0,0,0,0,100,0), +(@PATH,21,4457.705,-920.4406,169.0098,0,0,0,0,100,0), +(@PATH,22,4457.823,-920.1961,168.8619,0,0,0,0,100,0), +(@PATH,23,4455.823,-919.1961,168.6119,0,0,0,0,100,0), +(@PATH,24,4464.823,-892.9461,168.3619,0,0,0,0,100,0), +(@PATH,25,4455.874,-918.874,168.5312,0,0,0,0,100,0), +(@PATH,26,4464.785,-893.3854,168.254,0,0,0,0,100,0), +(@PATH,27,4465.062,-893.3198,168.0946,0,0,0,0,100,0), +(@PATH,28,4465.562,-891.8198,168.0946,0,0,0,0,100,0), +(@PATH,29,4476.312,-892.5698,167.5946,0,0,0,0,100,0), +(@PATH,30,4484.312,-893.0698,167.0946,0,0,0,0,100,0), +(@PATH,31,4492.062,-893.5698,166.5946,0,0,0,0,100,0); + +-- 4. Arctic Grizzly +SET @NPC := 106525; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4568.884,`position_y`=-844.4005,`position_z`=165.7502 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4568.884,-844.4005,165.7502,0,0,0,0,100,0), +(@PATH,2,4567.384,-842.4005,165.2502,0,0,0,0,100,0), +(@PATH,3,4539.384,-858.9005,165.0002,0,0,0,0,100,0), +(@PATH,4,4547.863,-854.0766,165.1171,0,0,0,0,100,0), +(@PATH,5,4534.446,-861.8645,164.7767,0,0,0,0,100,0), +(@PATH,6,4534.374,-862.3221,164.8531,0,0,0,0,100,0), +(@PATH,7,4532.874,-863.0721,164.8531,0,0,0,0,100,0), +(@PATH,8,4533.624,-868.0721,165.3531,0,0,0,0,100,0), +(@PATH,9,4534.624,-874.0721,166.1031,0,0,0,0,100,0), +(@PATH,10,4535.874,-879.8221,166.8531,0,0,0,0,100,0), +(@PATH,11,4536.874,-885.8221,167.6031,0,0,0,0,100,0), +(@PATH,12,4537.624,-890.5721,167.8531,0,0,0,0,100,0), +(@PATH,13,4538.374,-895.3221,168.6031,0,0,0,0,100,0), +(@PATH,14,4538.874,-898.3221,169.1031,0,0,0,0,100,0), +(@PATH,15,4539.374,-901.3221,169.6031,0,0,0,0,100,0), +(@PATH,16,4539.874,-904.3221,170.3531,0,0,0,0,100,0), +(@PATH,17,4540.624,-908.0721,170.8531,0,0,0,0,100,0), +(@PATH,18,4540.836,-908.4626,171.0686,0,0,0,0,100,0), +(@PATH,19,4541.336,-910.9626,171.8186,0,0,0,0,100,0), +(@PATH,20,4545.336,-910.9626,172.3186,0,0,0,0,100,0), +(@PATH,21,4549.336,-910.7126,172.5686,0,0,0,0,100,0), +(@PATH,22,4555.336,-910.4626,173.3186,0,0,0,0,100,0), +(@PATH,23,4564.086,-910.2126,173.8186,0,0,0,0,100,0), +(@PATH,24,4580.394,-909.6721,174.1334,0,0,0,0,100,0), +(@PATH,25,4593.894,-898.1721,173.6334,0,0,0,0,100,0), +(@PATH,26,4596.875,-895.4355,173.4156,0,0,0,0,100,0), +(@PATH,27,4590.375,-880.1855,172.9156,0,0,0,0,100,0), +(@PATH,28,4588.625,-875.4355,172.6656,0,0,0,0,100,0), +(@PATH,29,4586.889,-871.8877,172.1367,0,0,0,0,100,0), +(@PATH,30,4585.139,-869.3877,171.3867,0,0,0,0,100,0), +(@PATH,31,4583.139,-865.8877,170.6367,0,0,0,0,100,0), +(@PATH,32,4581.889,-864.3877,169.8867,0,0,0,0,100,0), +(@PATH,33,4579.639,-860.8877,168.8867,0,0,0,0,100,0), +(@PATH,34,4578.139,-858.3877,168.6367,0,0,0,0,100,0), +(@PATH,35,4577.139,-857.1377,167.8867,0,0,0,0,100,0), +(@PATH,36,4575.139,-853.6377,167.1367,0,0,0,0,100,0), +(@PATH,37,4572.389,-849.3877,166.6367,0,0,0,0,100,0); + +-- 5. Hulking Atrocity +SET @NPC := 52303; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4873.201,`position_y`=-1293.072,`position_z`=168.7106 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4873.201,-1293.072,168.7106,0,0,0,0,100,0), +(@PATH,2,4884.201,-1296.572,169.4606,0,0,0,0,100,0), +(@PATH,3,4887.201,-1297.572,169.9606,0,0,0,0,100,0), +(@PATH,4,4888.951,-1298.322,170.7106,0,0,0,0,100,0), +(@PATH,5,4890.951,-1298.822,171.4606,0,0,0,0,100,0), +(@PATH,6,4891.121,-1298.756,171.5394,0,0,0,0,100,0), +(@PATH,7,4891.621,-1299.006,171.5394,0,0,0,0,100,0), +(@PATH,8,4897.621,-1296.006,172.2894,0,0,0,0,100,0), +(@PATH,9,4899.621,-1295.506,173.0394,0,0,0,0,100,0), +(@PATH,10,4900.371,-1295.256,173.5394,0,0,0,0,100,0), +(@PATH,11,4902.371,-1294.256,174.7894,0,0,0,0,100,0), +(@PATH,12,4901.395,-1294.679,173.9983,0,0,0,0,100,0), +(@PATH,13,4899.395,-1295.679,173.2483,0,0,0,0,100,0), +(@PATH,14,4897.895,-1296.179,172.2483,0,0,0,0,100,0), +(@PATH,15,4893.395,-1298.179,171.7483,0,0,0,0,100,0), +(@PATH,16,4891.389,-1298.837,171.4858,0,0,0,0,100,0), +(@PATH,17,4889.389,-1298.337,170.4858,0,0,0,0,100,0), +(@PATH,18,4886.639,-1297.337,169.7358,0,0,0,0,100,0), +(@PATH,19,4883.639,-1296.587,169.2358,0,0,0,0,100,0), +(@PATH,20,4880.139,-1295.587,168.7358,0,0,0,0,100,0), +(@PATH,21,4872.796,-1292.83,168.4547,0,0,0,0,100,0); + +-- 6. Hulking Atrocity +SET @NPC := 52309; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4833.301,`position_y`=-1250.246,`position_z`=168.0729 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4833.301,-1250.246,168.0729,0,0,0,0,100,0), +(@PATH,2,4833.497,-1250.006,168.2503,0,0,0,0,100,0), +(@PATH,3,4833.301,-1250.246,168.0729,0,0,0,0,100,0), +(@PATH,4,4833.65,-1250.326,168.146,0,0,0,0,100,0), +(@PATH,5,4833.301,-1250.246,168.0729,0,0,0,0,100,0); + +-- 7. Decrepit Necromancer +SET @NPC := 52301; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4783.401,`position_y`=-1303.945,`position_z`=168.4535 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4783.401,-1303.945,168.4535,0,0,0,0,100,0), +(@PATH,2,4781.151,-1301.695,168.4535,0,0,0,0,100,0), +(@PATH,3,4781.063,-1301.9,168.1761,0,0,0,0,100,0), +(@PATH,4,4774.518,-1296.581,168.1986,6.020476,0,0,0,100,0), +(@PATH,5,4781.063,-1301.9,168.1761,0,0,0,0,100,0), +(@PATH,6,4781.41,-1301.784,168.4261,0,0,0,0,100,0), +(@PATH,7,4783.66,-1304.284,168.4261,0,0,0,0,100,0), +(@PATH,8,4788.66,-1308.284,168.4261,0,0,0,0,100,0), +(@PATH,9,4789.16,-1310.284,168.4261,0,0,0,0,100,0), +(@PATH,10,4789.16,-1311.284,168.4261,0,0,0,0,100,0), +(@PATH,11,4789.16,-1312.284,168.4261,0,0,0,0,100,0), +(@PATH,12,4789.66,-1316.534,168.4261,0,0,0,0,100,0), +(@PATH,13,4792.242,-1318.595,168.6807,0,0,0,0,100,0), +(@PATH,14,4788.742,-1322.345,169.1807,0,0,0,0,100,0), +(@PATH,15,4787.242,-1323.595,169.6807,0,0,0,0,100,0), +(@PATH,16,4785.492,-1325.595,170.4307,0,0,0,0,100,0), +(@PATH,17,4783.992,-1327.095,170.9307,0,0,0,0,100,0), +(@PATH,18,4784.781,-1326.539,170.3771,0,0,0,0,100,0), +(@PATH,19,4786.781,-1324.289,169.8771,0,0,0,0,100,0), +(@PATH,20,4788.531,-1322.539,169.1271,0,0,0,0,100,0), +(@PATH,21,4791.907,-1318.56,168.3817,0,0,0,0,100,0), +(@PATH,22,4789.657,-1316.31,168.3817,0,0,0,0,100,0), +(@PATH,23,4789.157,-1312.31,168.3817,0,0,0,0,100,0), +(@PATH,24,4789.157,-1311.56,168.3817,0,0,0,0,100,0), +(@PATH,25,4789.157,-1310.31,168.3817,0,0,0,0,100,0), +(@PATH,26,4788.657,-1308.31,168.3817,0,0,0,0,100,0), +(@PATH,27,4783.657,-1304.06,168.3817,0,0,0,0,100,0); + +-- 8. Hulking Atrocity +SET @NPC := 52309; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4833.096,`position_y`=-1235.037,`position_z`=168.1427 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4833.096,-1235.037,168.1427,0,0,0,0,100,0), +(@PATH,2,4815.159,-1247.104,168.4296,0,0,0,0,100,0), +(@PATH,3,4848.274,-1264.722,168.3758,0,0,0,0,100,0), +(@PATH,4,4833.156,-1235.177,168.138,0,0,0,0,100,0), +(@PATH,5,4814.97,-1247.315,168.4292,0,0,0,0,100,0), +(@PATH,6,4848.213,-1264.69,168.3758,0,0,0,0,100,0); + +-- 9. Battered Drakkari Berserker +SET @NPC := 52286; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4795.928,`position_y`=-1359.065,`position_z`=168.3463 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4795.928,-1359.065,168.3463,0,0,0,0,100,0), +(@PATH,2,4793.178,-1361.315,168.3463,0,0,0,0,100,0), +(@PATH,3,4793.178,-1360.565,168.3463,0,0,0,0,100,0), +(@PATH,4,4791.678,-1359.065,168.3463,0,0,0,0,100,0), +(@PATH,5,4790.678,-1358.315,168.3463,0,0,0,0,100,0), +(@PATH,6,4786.428,-1355.815,169.0963,0,0,0,0,100,0), +(@PATH,7,4783.678,-1354.065,168.5963,0,0,0,0,100,0), +(@PATH,8,4787.492,-1356.543,168.6921,0,0,0,0,100,0), +(@PATH,9,4782.413,-1357.459,168.132,0,0,0,0,100,0), +(@PATH,10,4783.502,-1354.219,168.7146,0,0,0,0,100,0), +(@PATH,11,4788.502,-1358.219,168.2146,0,0,0,0,100,0), +(@PATH,12,4789.502,-1359.469,168.2146,0,0,0,0,100,0), +(@PATH,13,4791.252,-1360.219,168.4646,0,0,0,0,100,0), +(@PATH,14,4791.752,-1360.469,168.7146,0,0,0,0,100,0), +(@PATH,15,4791.417,-1360.317,168.4067,0,0,0,0,100,0), +(@PATH,16,4791.917,-1360.567,168.6567,0,0,0,0,100,0), +(@PATH,17,4793.417,-1361.317,168.4067,0,0,0,0,100,0), +(@PATH,18,4793.417,-1361.817,168.1567,0,0,0,0,100,0), +(@PATH,19,4796.167,-1361.317,168.1567,0,0,0,0,100,0), +(@PATH,20,4798.917,-1358.067,168.1567,0,0,0,0,100,0), +(@PATH,21,4799.917,-1357.067,168.1567,0,0,0,0,100,0), +(@PATH,22,4807.036,-1350.74,168.3832,0,0,0,0,100,0), +(@PATH,23,4819.165,-1338.013,168.4106,0,0,0,0,100,0), +(@PATH,24,4804.908,-1316.614,168.1761,0,0,0,0,100,0), +(@PATH,25,4799.671,-1308.67,168.1761,0,0,0,0,100,0), +(@PATH,26,4819.17,-1338.246,168.1345,0,0,0,0,100,0), +(@PATH,27,4819.192,-1338.354,168.4123,0,0,0,0,100,0), +(@PATH,28,4806.981,-1351.038,168.4544,0,0,0,0,100,0), +(@PATH,29,4800.231,-1357.038,168.2044,0,0,0,0,100,0), +(@PATH,30,4799.231,-1358.038,168.2044,0,0,0,0,100,0), +(@PATH,31,4795.981,-1359.038,168.2044,0,0,0,0,100,0); + +-- 10. Decrepit Necromancer +SET @NPC := 52298; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4889.711,`position_y`=-1307.407,`position_z`=172.0003 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4889.711,-1307.407,172.0003,0,0,0,0,100,0), +(@PATH,2,4890.461,-1307.907,172.0003,0,0,0,0,100,0), +(@PATH,3,4897.94,-1294.326,172,0,0,0,0,100,0), +(@PATH,4,4896.19,-1293.326,171,0,0,0,0,100,0), +(@PATH,5,4894.44,-1292.576,170.25,0,0,0,0,100,0), +(@PATH,6,4892.44,-1291.826,170,0,0,0,0,100,0), +(@PATH,7,4888.94,-1290.076,169.25,0,0,0,0,100,0), +(@PATH,8,4882.44,-1287.576,168.75,0,0,0,0,100,0), +(@PATH,9,4865.969,-1279.812,168.4411,0,0,0,0,100,0), +(@PATH,10,4863.719,-1283.312,168.4411,0,0,0,0,100,0), +(@PATH,11,4862.719,-1284.312,168.4411,0,0,0,0,100,0), +(@PATH,12,4860.719,-1287.312,168.4411,0,0,0,0,100,0), +(@PATH,13,4862.719,-1290.812,168.4411,0,0,0,0,100,0), +(@PATH,14,4862.351,-1292.805,168.5391,0,0,0,0,100,0), +(@PATH,15,4879.851,-1302.305,169.2891,0,0,0,0,100,0), +(@PATH,16,4882.351,-1303.555,170.0391,0,0,0,0,100,0), +(@PATH,17,4885.101,-1305.055,170.5391,0,0,0,0,100,0), +(@PATH,18,4886.851,-1306.055,171.2891,0,0,0,0,100,0), +(@PATH,19,4889.351,-1307.555,172.0391,0,0,0,0,100,0); + +-- 11. Hulking Atrocity +SET @NPC := 52302; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4797.891,`position_y`=-1316.5,`position_z`=168.4261 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4797.891,-1316.5,168.4261,0,0,0,0,100,0), +(@PATH,2,4791.748,-1300.289,168.1761,0,0,0,0,100,0), +(@PATH,3,4788.525,-1291.622,168.1761,0,0,0,0,100,0), +(@PATH,4,4788.608,-1291.644,168.4261,0,0,0,0,100,0), +(@PATH,5,4775.032,-1307.969,169.1507,0,0,0,0,100,0), +(@PATH,6,4775.532,-1309.969,168.4007,0,0,0,0,100,0), +(@PATH,7,4775.782,-1310.969,167.6507,0,0,0,0,100,0), +(@PATH,8,4776.032,-1311.719,167.1507,0,0,0,0,100,0), +(@PATH,9,4776.282,-1313.719,166.6507,0,0,0,0,100,0), +(@PATH,10,4775.782,-1315.969,166.6507,0,0,0,0,100,0), +(@PATH,11,4776.282,-1318.469,166.6507,0,0,0,0,100,0), +(@PATH,12,4777.032,-1319.469,167.6507,0,0,0,0,100,0), +(@PATH,13,4778.032,-1320.469,169.4007,0,0,0,0,100,0), +(@PATH,14,4779.282,-1321.719,170.4007,0,0,0,0,100,0), +(@PATH,15,4782.282,-1324.719,170.6507,0,0,0,0,100,0), +(@PATH,16,4782.53,-1324.803,170.7992,0,0,0,0,100,0), +(@PATH,17,4783.53,-1326.053,170.7992,0,0,0,0,100,0), +(@PATH,18,4786.03,-1324.553,170.0492,0,0,0,0,100,0), +(@PATH,19,4789.28,-1322.303,169.2992,0,0,0,0,100,0), +(@PATH,20,4793.28,-1319.803,168.5492,0,0,0,0,100,0), +(@PATH,21,4797.741,-1316.434,168.4261,0,0,0,0,100,0), +(@PATH,22,4788.488,-1291.569,168.4261,0,0,0,0,100,0), +(@PATH,23,4767.418,-1289.177,168.6507,0,0,0,0,100,0), +(@PATH,24,4771.168,-1299.927,168.6507,0,0,0,0,100,0), +(@PATH,25,4773.168,-1308.177,168.1507,0,0,0,0,100,0), +(@PATH,26,4773.918,-1309.927,167.4007,0,0,0,0,100,0), +(@PATH,27,4774.668,-1312.177,166.9007,0,0,0,0,100,0), +(@PATH,28,4776.418,-1313.677,166.6507,0,0,0,0,100,0), +(@PATH,29,4775.668,-1315.927,166.6507,0,0,0,0,100,0), +(@PATH,30,4776.168,-1318.427,166.6507,0,0,0,0,100,0), +(@PATH,31,4777.168,-1319.427,167.6507,0,0,0,0,100,0), +(@PATH,32,4778.168,-1320.677,169.4007,0,0,0,0,100,0), +(@PATH,33,4779.168,-1321.677,170.4007,0,0,0,0,100,0), +(@PATH,34,4782.168,-1324.677,170.6507,0,0,0,0,100,0); + +-- 12. Hulking Atrocity +SET @NPC := 52315; +SET @PATH := @NPC * 10; +UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=4786.356,`position_y`=-1263.052,`position_z`=170.254 WHERE `guid`=@NPC; +DELETE FROM `creature_addon` WHERE `guid`=@NPC; +INSERT INTO `creature_addon` (`guid`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@NPC,@PATH,0,0,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,4786.356,-1263.052,170.254,0,0,0,0,100,0), +(@PATH,2,4779.106,-1258.552,170.754,0,0,0,0,100,0), +(@PATH,3,4773.106,-1254.802,170.254,0,0,0,0,100,0), +(@PATH,4,4772.703,-1254.717,170.2665,0,0,0,0,100,0), +(@PATH,5,4771.203,-1253.467,169.7665,0,0,0,0,100,0), +(@PATH,6,4770.953,-1250.467,169.2665,0,0,0,0,100,0), +(@PATH,7,4770.203,-1246.467,168.7665,0,0,0,0,100,0), +(@PATH,8,4769.703,-1242.967,168.2665,0,0,0,0,100,0), +(@PATH,9,4768.953,-1237.967,167.7665,0,0,0,0,100,0), +(@PATH,10,4771.858,-1254.272,169.9462,0,0,0,0,100,0), +(@PATH,11,4770.951,-1249.199,169.4025,0,0,0,0,100,0), +(@PATH,12,4770.451,-1246.199,168.6525,0,0,0,0,100,0), +(@PATH,13,4769.951,-1242.449,168.1525,0,0,0,0,100,0), +(@PATH,14,4768.951,-1236.449,167.4025,0,0,0,0,100,0), +(@PATH,15,4771.091,-1251.908,169.4031,0,0,0,0,100,0), +(@PATH,16,4771.341,-1253.658,169.9031,0,0,0,0,100,0), +(@PATH,17,4775.591,-1256.408,170.6531,0,0,0,0,100,0), +(@PATH,18,4787.091,-1263.408,169.9031,0,0,0,0,100,0), +(@PATH,19,4786.356,-1263.052,170.254,0,0,0,0,100,0); diff --git a/sql/updates/world/2015_07_20_02_world_2015_07_19_35.sql b/sql/updates/world/2015_07_20_02_world_2015_07_19_35.sql new file mode 100644 index 00000000000..205aa716424 --- /dev/null +++ b/sql/updates/world/2015_07_20_02_world_2015_07_19_35.sql @@ -0,0 +1,8 @@ +-- Equipment Template for NPC Unworthy Initiate +DELETE FROM `creature_equip_template` WHERE `CreatureID` IN (29519, 29520, 29565, 29566, 29567); +INSERT INTO `creature_equip_template` (`CreatureID`, `ID`, `ItemID1`, `ItemID2`, `ItemID3`, `VerifiedBuild`) VALUES +(29519, 1, 38707, 0, 0, 0), +(29520, 1, 38707, 0, 0, 0), +(29565, 1, 38707, 0, 0, 0), +(29566, 1, 38707, 0, 0, 0), +(29567, 1, 38707, 0, 0, 0); diff --git a/sql/updates/world/2015_07_21_00_world.sql b/sql/updates/world/2015_07_21_00_world.sql new file mode 100644 index 00000000000..afa6ee1534c --- /dev/null +++ b/sql/updates/world/2015_07_21_00_world.sql @@ -0,0 +1,2 @@ +-- +UPDATE `creature` SET `MovementType`=0 WHERE `guid` IN (111169, 111170); diff --git a/src/server/collision/Management/MMapManager.cpp b/src/server/collision/Management/MMapManager.cpp index 847b7bbd001..b71b94e3291 100644 --- a/src/server/collision/Management/MMapManager.cpp +++ b/src/server/collision/Management/MMapManager.cpp @@ -32,11 +32,41 @@ namespace MMAP // if we had, tiles in MMapData->mmapLoadedTiles, their actual data is lost! } + void MMapManager::InitializeThreadUnsafe(const std::vector<uint32>& mapIds) + { + // the caller must pass the list of all mapIds that will be used in the VMapManager2 lifetime + for (const uint32& mapId : mapIds) + loadedMMaps.insert(MMapDataSet::value_type(mapId, nullptr)); + + thread_safe_environment = false; + } + + MMapDataSet::const_iterator MMapManager::GetMMapData(uint32 mapId) const + { + // return the iterator if found or end() if not found/NULL + MMapDataSet::const_iterator itr = loadedMMaps.find(mapId); + if (itr != loadedMMaps.cend() && !itr->second) + itr = loadedMMaps.cend(); + + return itr; + } + bool MMapManager::loadMapData(uint32 mapId) { // we already have this map loaded? - if (loadedMMaps.find(mapId) != loadedMMaps.end()) - return true; + MMapDataSet::iterator itr = loadedMMaps.find(mapId); + if (itr != loadedMMaps.end()) + { + if (itr->second) + return true; + } + else + { + if (thread_safe_environment) + itr = loadedMMaps.insert(MMapDataSet::value_type(mapId, nullptr)).first; + else + ASSERT(false, "Invalid mapId %u passed to MMapManager after startup in thread unsafe environment", mapId); + } // load and init dtNavMesh - read parameters from file uint32 pathLen = sWorld->GetDataPath().length() + strlen("mmaps/%03i.mmap")+1; @@ -79,7 +109,7 @@ namespace MMAP MMapData* mmap_data = new MMapData(mesh); mmap_data->mmapLoadedTiles.clear(); - loadedMMaps.insert(std::pair<uint32, MMapData*>(mapId, mmap_data)); + itr->second = mmap_data; return true; } @@ -165,21 +195,20 @@ namespace MMAP dtFree(data); return false; } - - return false; } bool MMapManager::unloadMap(uint32 mapId, int32 x, int32 y) { // check if we have this map loaded - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) { // file may not exist, therefore not loaded TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map. %03u%02i%02i.mmtile", mapId, x, y); return false; } - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; // check if we have this tile loaded uint32 packedGridPos = packTileID(x, y); @@ -214,7 +243,8 @@ namespace MMAP bool MMapManager::unloadMap(uint32 mapId) { - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::iterator itr = loadedMMaps.find(mapId); + if (itr == loadedMMaps.end() || !itr->second) { // file may not exist, therefore not loaded TC_LOG_DEBUG("maps", "MMAP:unloadMap: Asked to unload not loaded navmesh map %03u", mapId); @@ -222,7 +252,7 @@ namespace MMAP } // unload all tiles from given map - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; for (MMapTileSet::iterator i = mmap->mmapLoadedTiles.begin(); i != mmap->mmapLoadedTiles.end(); ++i) { uint32 x = (i->first >> 16); @@ -237,7 +267,7 @@ namespace MMAP } delete mmap; - loadedMMaps.erase(mapId); + itr->second = nullptr; TC_LOG_DEBUG("maps", "MMAP:unloadMap: Unloaded %03i.mmap", mapId); return true; @@ -246,14 +276,15 @@ namespace MMAP bool MMapManager::unloadMapInstance(uint32 mapId, uint32 instanceId) { // check if we have this map loaded - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) { // file may not exist, therefore not loaded TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded navmesh map %03u", mapId); return false; } - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end()) { TC_LOG_DEBUG("maps", "MMAP:unloadMapInstance: Asked to unload not loaded dtNavMeshQuery mapId %03u instanceId %u", mapId, instanceId); @@ -271,18 +302,20 @@ namespace MMAP dtNavMesh const* MMapManager::GetNavMesh(uint32 mapId) { - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) return NULL; - return loadedMMaps[mapId]->navMesh; + return itr->second->navMesh; } dtNavMeshQuery const* MMapManager::GetNavMeshQuery(uint32 mapId, uint32 instanceId) { - if (loadedMMaps.find(mapId) == loadedMMaps.end()) + MMapDataSet::const_iterator itr = GetMMapData(mapId); + if (itr == loadedMMaps.end()) return NULL; - MMapData* mmap = loadedMMaps[mapId]; + MMapData* mmap = itr->second; if (mmap->navMeshQueries.find(instanceId) == mmap->navMeshQueries.end()) { // allocate mesh query diff --git a/src/server/collision/Management/MMapManager.h b/src/server/collision/Management/MMapManager.h index ac01a3c5693..f51f6ecd981 100644 --- a/src/server/collision/Management/MMapManager.h +++ b/src/server/collision/Management/MMapManager.h @@ -60,9 +60,10 @@ namespace MMAP class MMapManager { public: - MMapManager() : loadedTiles(0) { } + MMapManager() : loadedTiles(0), thread_safe_environment(true) {} ~MMapManager(); + void InitializeThreadUnsafe(const std::vector<uint32>& mapIds); bool loadMap(const std::string& basePath, uint32 mapId, int32 x, int32 y); bool unloadMap(uint32 mapId, int32 x, int32 y); bool unloadMap(uint32 mapId); @@ -78,8 +79,10 @@ namespace MMAP bool loadMapData(uint32 mapId); uint32 packTileID(int32 x, int32 y); + MMapDataSet::const_iterator GetMMapData(uint32 mapId) const; MMapDataSet loadedMMaps; uint32 loadedTiles; + bool thread_safe_environment; }; } diff --git a/src/server/collision/Management/VMapFactory.cpp b/src/server/collision/Management/VMapFactory.cpp index e3e211268e0..4c2750a9e5c 100644 --- a/src/server/collision/Management/VMapFactory.cpp +++ b/src/server/collision/Management/VMapFactory.cpp @@ -27,7 +27,7 @@ namespace VMAP // just return the instance IVMapManager* VMapFactory::createOrGetVMapManager() { - if (gVMapManager == 0) + if (gVMapManager == nullptr) gVMapManager= new VMapManager2(); // should be taken from config ... Please change if you like :-) return gVMapManager; } diff --git a/src/server/collision/Management/VMapManager2.cpp b/src/server/collision/Management/VMapManager2.cpp index f9fcff96ad2..a1cdb5502a9 100644 --- a/src/server/collision/Management/VMapManager2.cpp +++ b/src/server/collision/Management/VMapManager2.cpp @@ -37,6 +37,7 @@ namespace VMAP { GetLiquidFlagsPtr = &GetLiquidFlagsDummy; IsVMAPDisabledForPtr = &IsVMAPDisabledForDummy; + thread_safe_environment = true; } VMapManager2::~VMapManager2(void) @@ -51,6 +52,15 @@ namespace VMAP } } + void VMapManager2::InitializeThreadUnsafe(const std::vector<uint32>& mapIds) + { + // the caller must pass the list of all mapIds that will be used in the VMapManager2 lifetime + for (const uint32& mapId : mapIds) + iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, nullptr)); + + thread_safe_environment = false; + } + Vector3 VMapManager2::convertPositionToInternalRep(float x, float y, float z) const { Vector3 pos; @@ -86,12 +96,31 @@ namespace VMAP return result; } + InstanceTreeMap::const_iterator VMapManager2::GetMapTree(uint32 mapId) const + { + // return the iterator if found or end() if not found/NULL + InstanceTreeMap::const_iterator itr = iInstanceMapTrees.find(mapId); + if (itr != iInstanceMapTrees.cend() && !itr->second) + itr = iInstanceMapTrees.cend(); + + return itr; + } + // load one tile (internal use only) bool VMapManager2::_loadMap(unsigned int mapId, const std::string& basePath, uint32 tileX, uint32 tileY) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); if (instanceTree == iInstanceMapTrees.end()) { + if (thread_safe_environment) + instanceTree = iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, nullptr)).first; + else + ASSERT(false, "Invalid mapId %u tile [%u, %u] passed to VMapManager2 after startup in thread unsafe environment", + mapId, tileX, tileY); + } + + if (!instanceTree->second) + { std::string mapFileName = getMapFileName(mapId); StaticMapTree* newTree = new StaticMapTree(mapId, basePath); if (!newTree->InitMap(mapFileName, this)) @@ -99,7 +128,7 @@ namespace VMAP delete newTree; return false; } - instanceTree = iInstanceMapTrees.insert(InstanceTreeMap::value_type(mapId, newTree)).first; + instanceTree->second = newTree; } return instanceTree->second->LoadMapTile(tileX, tileY, this); @@ -108,13 +137,13 @@ namespace VMAP void VMapManager2::unloadMap(unsigned int mapId) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); - if (instanceTree != iInstanceMapTrees.end()) + if (instanceTree != iInstanceMapTrees.end() && instanceTree->second) { instanceTree->second->UnloadMap(this); if (instanceTree->second->numLoadedTiles() == 0) { delete instanceTree->second; - iInstanceMapTrees.erase(mapId); + instanceTree->second = nullptr; } } } @@ -122,13 +151,13 @@ namespace VMAP void VMapManager2::unloadMap(unsigned int mapId, int x, int y) { InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); - if (instanceTree != iInstanceMapTrees.end()) + if (instanceTree != iInstanceMapTrees.end() && instanceTree->second) { instanceTree->second->UnloadMapTile(x, y, this); if (instanceTree->second->numLoadedTiles() == 0) { delete instanceTree->second; - iInstanceMapTrees.erase(mapId); + instanceTree->second = nullptr; } } } @@ -138,7 +167,7 @@ namespace VMAP if (!isLineOfSightCalcEnabled() || IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS)) return true; - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1); @@ -160,7 +189,7 @@ namespace VMAP { if (isLineOfSightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LOS)) { - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos1 = convertPositionToInternalRep(x1, y1, z1); @@ -190,7 +219,7 @@ namespace VMAP { if (isHeightCalcEnabled() && !IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_HEIGHT)) { - InstanceTreeMap::iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos = convertPositionToInternalRep(x, y, z); @@ -209,7 +238,7 @@ namespace VMAP { if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_AREAFLAG)) { - InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { Vector3 pos = convertPositionToInternalRep(x, y, z); @@ -227,7 +256,7 @@ namespace VMAP { if (!IsVMAPDisabledForPtr(mapId, VMAP_DISABLE_LIQUIDSTATUS)) { - InstanceTreeMap::const_iterator instanceTree = iInstanceMapTrees.find(mapId); + InstanceTreeMap::const_iterator instanceTree = GetMapTree(mapId); if (instanceTree != iInstanceMapTrees.end()) { LocationInfo info; diff --git a/src/server/collision/Management/VMapManager2.h b/src/server/collision/Management/VMapManager2.h index e13d5ab952b..af04fa0d970 100644 --- a/src/server/collision/Management/VMapManager2.h +++ b/src/server/collision/Management/VMapManager2.h @@ -80,6 +80,7 @@ namespace VMAP // Tree to check collision ModelFileMap iLoadedModelFiles; InstanceTreeMap iInstanceMapTrees; + bool thread_safe_environment; // Mutex for iLoadedModelFiles std::mutex LoadedModelFilesLock; @@ -89,6 +90,8 @@ namespace VMAP static uint32 GetLiquidFlagsDummy(uint32) { return 0; } static bool IsVMAPDisabledForDummy(uint32 /*entry*/, uint8 /*flags*/) { return false; } + InstanceTreeMap::const_iterator GetMapTree(uint32 mapId) const; + public: // public for debug G3D::Vector3 convertPositionToInternalRep(float x, float y, float z) const; @@ -97,6 +100,7 @@ namespace VMAP VMapManager2(); ~VMapManager2(void); + void InitializeThreadUnsafe(const std::vector<uint32>& mapIds); int loadMap(const char* pBasePath, unsigned int mapId, int x, int y) override; void unloadMap(unsigned int mapId, int x, int y) override; diff --git a/src/server/game/AI/CoreAI/UnitAI.h b/src/server/game/AI/CoreAI/UnitAI.h index efe55830b1b..1939c96dac9 100644 --- a/src/server/game/AI/CoreAI/UnitAI.h +++ b/src/server/game/AI/CoreAI/UnitAI.h @@ -22,6 +22,7 @@ #include "Define.h" #include "Unit.h" #include "Containers.h" +#include "EventMap.h" #include <list> class Player; diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 37187d9b04c..013acd2e314 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -1228,11 +1228,11 @@ bool SmartAIMgr::IsTextValid(SmartScriptHolder const& e, uint32 id) default: if (e.entryOrGuid < 0) { - entry = uint32(std::abs(e.entryOrGuid)); - CreatureData const* data = sObjectMgr->GetCreatureData(entry); + ObjectGuid::LowType guid = ObjectGuid::LowType(-e.entryOrGuid); + CreatureData const* data = sObjectMgr->GetCreatureData(guid); if (!data) { - TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Creature guid %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), entry); + TC_LOG_ERROR("sql.sql", "SmartAIMgr: Entry %d SourceType %u Event %u Action %u using non-existent Creature guid %d, skipped.", e.entryOrGuid, e.GetScriptType(), e.event_id, e.GetActionType(), guid); return false; } else diff --git a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp index 16d5f4b6959..4b48f1f341b 100644 --- a/src/server/game/AuctionHouse/AuctionHouseMgr.cpp +++ b/src/server/game/AuctionHouse/AuctionHouseMgr.cpp @@ -293,7 +293,7 @@ void AuctionHouseMgr::LoadAuctionItems() ItemTemplate const* proto = sObjectMgr->GetItemTemplate(itemEntry); if (!proto) { - TC_LOG_ERROR("misc", "AuctionHouseMgr::LoadAuctionItems: Unknown item (GUID: %u id: #%u) in auction, skipped.", item_guid, itemEntry); + TC_LOG_ERROR("misc", "AuctionHouseMgr::LoadAuctionItems: Unknown item (GUID: %u item entry: #%u) in auction, skipped.", item_guid, itemEntry); continue; } diff --git a/src/server/game/Battlegrounds/Battleground.h b/src/server/game/Battlegrounds/Battleground.h index 562a20b340f..08134298569 100644 --- a/src/server/game/Battlegrounds/Battleground.h +++ b/src/server/game/Battlegrounds/Battleground.h @@ -26,6 +26,7 @@ #include "WorldPacket.h" #include "Object.h" #include "GameObject.h" +#include "EventMap.h" class Creature; class GameObject; diff --git a/src/server/game/Chat/Chat.h b/src/server/game/Chat/Chat.h index ba59245cdaa..1b095534ad0 100644 --- a/src/server/game/Chat/Chat.h +++ b/src/server/game/Chat/Chat.h @@ -71,21 +71,21 @@ class ChatHandler void SendSysMessage(uint32 entry); template<typename... Args> - void PSendSysMessage(const char* fmt, Args const&... args) + void PSendSysMessage(const char* fmt, Args&&... args) { - SendSysMessage(Trinity::StringFormat(fmt, args...).c_str()); + SendSysMessage(Trinity::StringFormat(fmt, std::forward<Args>(args)...).c_str()); } template<typename... Args> - void PSendSysMessage(uint32 entry, Args const&... args) + void PSendSysMessage(uint32 entry, Args&&... args) { - SendSysMessage(PGetParseString(entry, args...).c_str()); + SendSysMessage(PGetParseString(entry, std::forward<Args>(args)...).c_str()); } template<typename... Args> - std::string PGetParseString(uint32 entry, Args const&... args) const + std::string PGetParseString(uint32 entry, Args&&... args) const { - return Trinity::StringFormat(GetTrinityString(entry), args...); + return Trinity::StringFormat(GetTrinityString(entry), std::forward<Args>(args)...); } bool ParseCommands(const char* text); diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp index acf7dcb79e9..c65e52c8de7 100644 --- a/src/server/game/Globals/ObjectMgr.cpp +++ b/src/server/game/Globals/ObjectMgr.cpp @@ -6527,13 +6527,10 @@ void ObjectMgr::LoadGameObjectLocales() { uint32 oldMSTime = getMSTime(); - _gameObjectLocaleStore.clear(); // need for reload case - - QueryResult result = WorldDatabase.Query("SELECT entry, " - "name_loc1, name_loc2, name_loc3, name_loc4, name_loc5, name_loc6, name_loc7, name_loc8, " - "castbarcaption_loc1, castbarcaption_loc2, castbarcaption_loc3, castbarcaption_loc4, " - "castbarcaption_loc5, castbarcaption_loc6, castbarcaption_loc7, castbarcaption_loc8 FROM locales_gameobject"); + _gameObjectLocaleStore.clear(); // need for reload case + // 0 1 2 3 + QueryResult result = WorldDatabase.Query("SELECT entry, locale, name, castBarCaption FROM gameobject_template_locale"); if (!result) return; @@ -6541,18 +6538,21 @@ void ObjectMgr::LoadGameObjectLocales() { Field* fields = result->Fetch(); - uint32 entry = fields[0].GetUInt32(); + uint32 id = fields[0].GetUInt32(); + std::string localeName = fields[1].GetString(); - GameObjectLocale& data = _gameObjectLocaleStore[entry]; + std::string name = fields[2].GetString(); + std::string castBarCaption = fields[3].GetString(); + + GameObjectLocale& data = _gameObjectLocaleStore[id]; + LocaleConstant locale = GetLocaleByName(localeName); + + AddLocaleString(name, locale, data.Name); + AddLocaleString(castBarCaption, locale, data.CastBarCaption); - for (uint8 i = TOTAL_LOCALES - 1; i > 0; --i) - { - AddLocaleString(fields[i].GetString(), LocaleConstant(i), data.Name); - AddLocaleString(fields[i + (TOTAL_LOCALES - 1)].GetString(), LocaleConstant(i), data.CastBarCaption); - } } while (result->NextRow()); - TC_LOG_INFO("server.loading", ">> Loaded %u gameobject locale strings in %u ms", uint32(_gameObjectLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); + TC_LOG_INFO("server.loading", ">> Loaded %u gameobject_template_locale strings in %u ms", uint32(_gameObjectLocaleStore.size()), GetMSTimeDiffToNow(oldMSTime)); } inline void CheckGOLockId(GameObjectTemplate const* goInfo, uint32 dataN, uint32 N) diff --git a/src/server/game/Handlers/QueryHandler.cpp b/src/server/game/Handlers/QueryHandler.cpp index 03782481ef7..fda3551bf2b 100644 --- a/src/server/game/Handlers/QueryHandler.cpp +++ b/src/server/game/Handlers/QueryHandler.cpp @@ -174,15 +174,14 @@ void WorldSession::HandleGameObjectQueryOpcode(WorldPacket& recvData) IconName = info->IconName; CastBarCaption = info->castBarCaption; - int loc_idx = GetSessionDbLocaleIndex(); - if (loc_idx >= 0) - { - if (GameObjectLocale const* gl = sObjectMgr->GetGameObjectLocale(entry)) + LocaleConstant localeConstant = GetSessionDbLocaleIndex(); + if (localeConstant >= LOCALE_enUS) + if (GameObjectLocale const* gameObjectLocale = sObjectMgr->GetGameObjectLocale(entry)) { - ObjectMgr::GetLocaleString(gl->Name, loc_idx, Name); - ObjectMgr::GetLocaleString(gl->CastBarCaption, loc_idx, CastBarCaption); + ObjectMgr::GetLocaleString(gameObjectLocale->Name, localeConstant, Name); + ObjectMgr::GetLocaleString(gameObjectLocale->CastBarCaption, localeConstant, CastBarCaption); } - } + TC_LOG_DEBUG("network", "WORLD: CMSG_GAMEOBJECT_QUERY '%s' - Entry: %u. ", info->name.c_str(), entry); WorldPacket data (SMSG_GAMEOBJECT_QUERY_RESPONSE, 150); data << uint32(entry); diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 585533fa21b..354bbe4e269 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -317,7 +317,15 @@ void Map::SwitchGridContainers(Creature* obj, bool on) if (!IsGridLoaded(GridCoord(cell.data.Part.grid_x, cell.data.Part.grid_y))) return; - TC_LOG_DEBUG("maps", "Switch object %s from grid[%u, %u] %u", obj->GetGUID().ToString().c_str(), cell.data.Part.grid_x, cell.data.Part.grid_y, on); + if (sLog->ShouldLog("maps", LOG_LEVEL_DEBUG)) + { + // Extract bitfield values + uint32 const grid_x = cell.data.Part.grid_x; + uint32 const grid_y = cell.data.Part.grid_y; + + TC_LOG_DEBUG("maps", "Switch object %s from grid[%u, %u] %u", obj->GetGUID().ToString().c_str(), grid_x, grid_y, on); + } + NGridType *ngrid = getNGrid(cell.GridX(), cell.GridY()); ASSERT(ngrid != NULL); @@ -354,7 +362,15 @@ void Map::SwitchGridContainers(GameObject* obj, bool on) if (!IsGridLoaded(GridCoord(cell.data.Part.grid_x, cell.data.Part.grid_y))) return; - TC_LOG_DEBUG("maps", "Switch object %s from grid[%u, %u] %u", obj->GetGUID().ToString().c_str(), cell.data.Part.grid_x, cell.data.Part.grid_y, on); + if (sLog->ShouldLog("maps", LOG_LEVEL_DEBUG)) + { + // Extract bitfield values + uint32 const grid_x = cell.data.Part.grid_x; + uint32 const grid_y = cell.data.Part.grid_y; + + TC_LOG_DEBUG("maps", "Switch object %s from grid[%u, %u] %u", obj->GetGUID().ToString().c_str(), grid_x, grid_y, on); + } + NGridType *ngrid = getNGrid(cell.GridX(), cell.GridY()); ASSERT(ngrid != NULL); diff --git a/src/server/game/Server/WorldSocket.cpp b/src/server/game/Server/WorldSocket.cpp index cff423c71c6..be70d67b4de 100644 --- a/src/server/game/Server/WorldSocket.cpp +++ b/src/server/game/Server/WorldSocket.cpp @@ -509,6 +509,8 @@ void WorldSocket::SendAuthResponseError(uint8 code) bool WorldSocket::HandlePing(WorldPacket& recvPacket) { + using namespace std::chrono; + uint32 ping; uint32 latency; diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp index b63f0571ac5..54262d8f2e4 100644 --- a/src/server/game/Spells/SpellMgr.cpp +++ b/src/server/game/Spells/SpellMgr.cpp @@ -3158,6 +3158,11 @@ void SpellMgr::LoadSpellInfoCorrections() // add corruption to affected spells spellInfo->Effects[EFFECT_1].SpellClassMask[0] |= 2; break; + case 57470: // Renewed Hope (Rank 1) + case 57472: // Renewed Hope (Rank 2) + // should also affect Flash Heal + spellInfo->Effects[EFFECT_0].SpellClassMask[0] |= 0x800; + break; case 51852: // The Eye of Acherus (no spawn in phase 2 in db) spellInfo->Effects[EFFECT_0].MiscValue |= 1; break; diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 7cddfc3f61e..fc79f351a54 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -1375,6 +1375,17 @@ void World::SetInitialWorldSettings() LoadDBCStores(m_dataPath); DetectDBCLang(); + std::vector<uint32> mapIds; + for (uint32 mapId = 0; mapId < sMapStore.GetNumRows(); mapId++) + if (sMapStore.LookupEntry(mapId)) + mapIds.push_back(mapId); + + if (VMAP::VMapManager2* vmmgr2 = dynamic_cast<VMAP::VMapManager2*>(VMAP::VMapFactory::createOrGetVMapManager())) + vmmgr2->InitializeThreadUnsafe(mapIds); + + MMAP::MMapManager* mmmgr = MMAP::MMapFactory::createOrGetMMapManager(); + mmmgr->InitializeThreadUnsafe(mapIds); + TC_LOG_INFO("server.loading", "Loading SpellInfo store..."); sSpellMgr->LoadSpellInfoStore(); diff --git a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp index 326360428d2..b37d505d766 100644 --- a/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp +++ b/src/server/scripts/EasternKingdoms/ScarletEnclave/chapter1.cpp @@ -152,6 +152,7 @@ public: if (id == 1) { wait_timer = 5000; + me->LoadEquipment(1); me->CastSpell(me, SPELL_DK_INITIATE_VISUAL, true); if (Player* starter = ObjectAccessor::GetPlayer(*me, playerGUID)) diff --git a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp index 1f9fc6d7981..2baa5d60221 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_erekem.cpp @@ -254,7 +254,7 @@ public: else breakBondsCd -= diff; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_EARTH_SHIELD: if (Unit* ally = DoSelectLowestHpFriendly(30.0f)) diff --git a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp index cfdacb10896..25f063e451a 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_ichoron.cpp @@ -345,7 +345,7 @@ public: events.Update(diff); - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_WATER_BLAST: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) @@ -398,7 +398,7 @@ public: events.Update(diff); - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_WATER_BLAST: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) diff --git a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp index 8dc0e32fb31..8b77b512ca4 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_lavanthor.cpp @@ -106,7 +106,7 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_FIREBOLT: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) diff --git a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp index f9e223d3bab..8662e7f6669 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_moragg.cpp @@ -108,7 +108,7 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_OPTIC_LINK: if (Unit* target = SelectTarget(SELECT_TARGET_RANDOM, 0)) diff --git a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp index 4fb7646558d..548c87efc22 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_xevozz.cpp @@ -196,7 +196,7 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_ARCANE_BARRAGE: DoCast(SPELL_ARCANE_BARRAGE_VOLLEY); @@ -286,7 +286,7 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_RANGE_CHECK: if (Creature* xevozz = ObjectAccessor::GetCreature(*me, instance->GetGuidData(DATA_XEVOZZ))) diff --git a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp index 02e479a22f4..5b3f06c9e40 100644 --- a/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp +++ b/src/server/scripts/Northrend/VioletHold/boss_zuramat.cpp @@ -180,7 +180,7 @@ public: if (me->HasUnitState(UNIT_STATE_CASTING)) return; - switch (uint32 eventId = events.ExecuteEvent()) + switch (events.ExecuteEvent()) { case EVENT_SUMMON_VOID: DoCast(SPELL_SUMMON_VOID_SENTRY); diff --git a/src/server/shared/Common.h b/src/server/shared/Common.h index dc4a4d231b1..09d64acc795 100644 --- a/src/server/shared/Common.h +++ b/src/server/shared/Common.h @@ -38,6 +38,7 @@ #include <queue> #include <sstream> #include <algorithm> +#include <memory> #include "Debugging/Errors.h" @@ -144,4 +145,14 @@ typedef std::vector<std::string> StringVector; #define MAX_QUERY_LEN 32*1024 +namespace Trinity +{ + //! std::make_unique implementation (TODO: remove this once C++14 is supported) + template<typename T, typename ...Args> + std::unique_ptr<T> make_unique(Args&& ...args) + { + return std::unique_ptr<T>(new T(std::forward<Args>(args)...)); + } +} + #endif diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h index 6bc204fbf76..6fb58cf414e 100644 --- a/src/server/shared/Database/DatabaseWorkerPool.h +++ b/src/server/shared/Database/DatabaseWorkerPool.h @@ -162,7 +162,7 @@ class DatabaseWorkerPool //! This method should only be used for queries that are only executed once, e.g during startup. void Execute(const char* sql) { - if (!sql) + if (Trinity::IsFormatEmptyOrNull(sql)) return; BasicStatementTask* task = new BasicStatementTask(sql); @@ -171,13 +171,13 @@ class DatabaseWorkerPool //! Enqueues a one-way SQL operation in string format -with variable args- that will be executed asynchronously. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename... Args> - void PExecute(const char* sql, Args const&... args) + template<typename Format, typename... Args> + void PExecute(Format&& sql, Args&&... args) { - if (!sql) + if (Trinity::IsFormatEmptyOrNull(sql)) return; - Execute(Trinity::StringFormat(sql, args...).c_str()); + Execute(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); } //! Enqueues a one-way SQL operation in prepared statement format that will be executed asynchronously. @@ -206,13 +206,13 @@ class DatabaseWorkerPool //! Directly executes a one-way SQL operation in string format -with variable args-, that will block the calling thread until finished. //! This method should only be used for queries that are only executed once, e.g during startup. - template<typename... Args> - void DirectPExecute(const char* sql, Args const&... args) + template<typename Format, typename... Args> + void DirectPExecute(Format&& sql, Args&&... args) { - if (!sql) + if (Trinity::IsFormatEmptyOrNull(sql)) return; - DirectExecute(Trinity::StringFormat(sql, args...).c_str()); + DirectExecute(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); } //! Directly executes a one-way SQL operation in prepared statement format, that will block the calling thread until finished. @@ -233,7 +233,7 @@ class DatabaseWorkerPool //! Directly executes an SQL query in string format that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - QueryResult Query(const char* sql, T* conn = NULL) + QueryResult Query(const char* sql, T* conn = nullptr) { if (!conn) conn = GetFreeConnection(); @@ -251,24 +251,24 @@ class DatabaseWorkerPool //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename... Args> - QueryResult PQuery(const char* sql, T* conn, Args const&... args) + template<typename Format, typename... Args> + QueryResult PQuery(Format&& sql, T* conn, Args&&... args) { - if (!sql) - return QueryResult(NULL); + if (Trinity::IsFormatEmptyOrNull(sql)) + return QueryResult(nullptr); - return Query(Trinity::StringFormat(sql, args...).c_str(), conn); + return Query(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str(), conn); } //! Directly executes an SQL query in string format -with variable args- that will block the calling thread until finished. //! Returns reference counted auto pointer, no need for manual memory management in upper level code. - template<typename... Args> - QueryResult PQuery(const char* sql, Args const&... args) + template<typename Format, typename... Args> + QueryResult PQuery(Format&& sql, Args&&... args) { if (!sql) - return QueryResult(NULL); + return QueryResult(nullptr); - return Query(Trinity::StringFormat(sql, args...).c_str()); + return Query(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); } //! Directly executes an SQL query in prepared format that will block the calling thread until finished. @@ -309,10 +309,10 @@ class DatabaseWorkerPool //! Enqueues a query in string format -with variable args- that will set the value of the QueryResultFuture return object as soon as the query is executed. //! The return value is then processed in ProcessQueryCallback methods. - template<typename... Args> - QueryResultFuture AsyncPQuery(const char* sql, Args const&... args) + template<typename Format, typename... Args> + QueryResultFuture AsyncPQuery(Format&& sql, Args&&... args) { - return AsyncQuery(Trinity::StringFormat(sql, args...).c_str()); + return AsyncQuery(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); } //! Enqueues a query in prepared format that will set the value of the PreparedQueryResultFuture return object as soon as the query is executed. diff --git a/src/server/shared/Database/QueryHolder.h b/src/server/shared/Database/QueryHolder.h index 4102bba1223..b64da948a16 100644 --- a/src/server/shared/Database/QueryHolder.h +++ b/src/server/shared/Database/QueryHolder.h @@ -30,8 +30,11 @@ class SQLQueryHolder SQLQueryHolder() { } ~SQLQueryHolder(); bool SetQuery(size_t index, const char* sql); - template<typename... Args> - bool SetPQuery(size_t index, const char* sql, Args const&... args) { return SetQuery(index, Trinity::StringFormat(sql, args...).c_str()); } + template<typename Format, typename... Args> + bool SetPQuery(size_t index, Format&& sql, Args&&... args) + { + return SetQuery(index, Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + } bool SetPreparedQuery(size_t index, PreparedStatement* stmt); void SetSize(size_t size); QueryResult GetResult(size_t index); diff --git a/src/server/shared/Database/Transaction.h b/src/server/shared/Database/Transaction.h index a51c96ea93b..4fbbe1ed45b 100644 --- a/src/server/shared/Database/Transaction.h +++ b/src/server/shared/Database/Transaction.h @@ -39,8 +39,11 @@ class Transaction void Append(PreparedStatement* statement); void Append(const char* sql); - template<typename... Args> - void PAppend(const char* sql, Args const&... args) { Append(Trinity::StringFormat(sql, args...).c_str()); } + template<typename Format, typename... Args> + void PAppend(Format&& sql, Args&&... args) + { + Append(Trinity::StringFormat(std::forward<Format>(sql), std::forward<Args>(args)...).c_str()); + } size_t GetSize() const { return m_queries.size(); } diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp index a2150733c6b..6c2580b3168 100644 --- a/src/server/shared/Logging/Log.cpp +++ b/src/server/shared/Logging/Log.cpp @@ -269,7 +269,7 @@ void Log::write(std::unique_ptr<LogMessage>&& msg) const if (_ioService) { - auto logOperation = std::shared_ptr<LogOperation>(new LogOperation(logger, std::forward<std::unique_ptr<LogMessage>>(msg))); + auto logOperation = std::shared_ptr<LogOperation>(new LogOperation(logger, std::move(msg))); _ioService->post(_strand->wrap([logOperation](){ logOperation->call(); })); } @@ -290,9 +290,8 @@ std::string Log::GetTimestampStr() // HH hour (2 digits 00-23) // MM minutes (2 digits 00-59) // SS seconds (2 digits 00-59) - char buf[20]; - snprintf(buf, 20, "%04d-%02d-%02d_%02d-%02d-%02d", aTm.tm_year+1900, aTm.tm_mon+1, aTm.tm_mday, aTm.tm_hour, aTm.tm_min, aTm.tm_sec); - return std::string(buf); + return Trinity::StringFormat("%04d-%02d-%02d_%02d-%02d-%02d", + aTm.tm_year + 1900, aTm.tm_mon + 1, aTm.tm_mday, aTm.tm_hour, aTm.tm_min, aTm.tm_sec); } bool Log::SetLogLevel(std::string const& name, const char* newLevelc, bool isLogger /* = true */) diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h index e22a06e635e..ab7b2169ed2 100644 --- a/src/server/shared/Logging/Log.h +++ b/src/server/shared/Logging/Log.h @@ -23,6 +23,7 @@ #include "Appender.h" #include "Logger.h" #include "StringFormat.h" +#include "Common.h" #include <boost/asio/io_service.hpp> #include <boost/asio/strand.hpp> @@ -61,19 +62,22 @@ class Log bool ShouldLog(std::string const& type, LogLevel level) const; bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true); - template<typename... Args> - inline void outMessage(std::string const& filter, LogLevel const level, const char* fmt, Args const&... args) + template<typename Format, typename... Args> + inline void outMessage(std::string const& filter, LogLevel const level, Format&& fmt, Args&&... args) { - write(std::unique_ptr<LogMessage>(new LogMessage(level, filter, Trinity::StringFormat(fmt, args...)))); + write(Trinity::make_unique<LogMessage>(level, filter, + Trinity::StringFormat(std::forward<Format>(fmt), std::forward<Args>(args)...))); } - template<typename... Args> - void outCommand(uint32 account, const char* fmt, Args const&... args) + template<typename Format, typename... Args> + void outCommand(uint32 account, Format&& fmt, Args&&... args) { if (!ShouldLog("commands.gm", LOG_LEVEL_INFO)) return; - std::unique_ptr<LogMessage> msg(new LogMessage(LOG_LEVEL_INFO, "commands.gm", std::move(Trinity::StringFormat(fmt, args...)))); + std::unique_ptr<LogMessage> msg = + Trinity::make_unique<LogMessage>(LOG_LEVEL_INFO, "commands.gm", + Trinity::StringFormat(std::forward<Format>(fmt), std::forward<Args>(args)...)); msg->param1 = std::to_string(account); @@ -159,7 +163,8 @@ inline bool Log::ShouldLog(std::string const& type, LogLevel level) const } #if PLATFORM != PLATFORM_WINDOWS -void check_args(const char* format, ...) ATTR_PRINTF(1, 2); +void check_args(const char*, ...) ATTR_PRINTF(1, 2); +void check_args(std::string const&, ...); // This will catch format errors on build time #define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) \ diff --git a/src/server/shared/PrecompiledHeaders/sharedPCH.h b/src/server/shared/PrecompiledHeaders/sharedPCH.h index 87af9f44eb7..d99476bc7a8 100644 --- a/src/server/shared/PrecompiledHeaders/sharedPCH.h +++ b/src/server/shared/PrecompiledHeaders/sharedPCH.h @@ -7,3 +7,4 @@ #include "Errors.h" #include "TypeList.h" #include "TaskScheduler.h" +#include "EventMap.h" diff --git a/src/server/shared/Threading/ProducerConsumerQueue.h b/src/server/shared/Threading/ProducerConsumerQueue.h index e2f13e5c339..96546960393 100644 --- a/src/server/shared/Threading/ProducerConsumerQueue.h +++ b/src/server/shared/Threading/ProducerConsumerQueue.h @@ -70,7 +70,8 @@ public: { std::unique_lock<std::mutex> lock(_queueLock); - // we could be using .wait(lock, predicate) overload here but some threading error analysis tools produce false positives + // we could be using .wait(lock, predicate) overload here but it is broken + // https://connect.microsoft.com/VisualStudio/feedback/details/1098841 while (_queue.empty() && !_shutdown) _condition.wait(lock); diff --git a/src/server/shared/Utilities/Duration.h b/src/server/shared/Utilities/Duration.h new file mode 100644 index 00000000000..58a08e5842f --- /dev/null +++ b/src/server/shared/Utilities/Duration.h @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _DURATION_H_ +#define _DURATION_H_ + +#include <chrono> + +/// Milliseconds shorthand typedef. +typedef std::chrono::milliseconds Milliseconds; + +/// Seconds shorthand typedef. +typedef std::chrono::seconds Seconds; + +/// Minutes shorthand typedef. +typedef std::chrono::minutes Minutes; + +/// Hours shorthand typedef. +typedef std::chrono::hours Hours; + +/// Makes std::chrono_literals globally available. +// ToDo: Enable this when TC supports C++14. +// using namespace std::chrono_literals; + +#endif // _DURATION_H_ diff --git a/src/server/shared/Utilities/EventMap.cpp b/src/server/shared/Utilities/EventMap.cpp new file mode 100644 index 00000000000..8c3f60afe82 --- /dev/null +++ b/src/server/shared/Utilities/EventMap.cpp @@ -0,0 +1,136 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "EventMap.h" + +void EventMap::Reset() +{ + _eventMap.clear(); + _time = 0; + _phase = 0; +} + +void EventMap::SetPhase(uint8 phase) +{ + if (!phase) + _phase = 0; + else if (phase <= 8) + _phase = uint8(1 << (phase - 1)); +} + +void EventMap::ScheduleEvent(uint32 eventId, uint32 time, uint32 group /*= 0*/, uint8 phase /*= 0*/) +{ + if (group && group <= 8) + eventId |= (1 << (group + 15)); + + if (phase && phase <= 8) + eventId |= (1 << (phase + 23)); + + _eventMap.insert(EventStore::value_type(_time + time, eventId)); +} + +uint32 EventMap::ExecuteEvent() +{ + while (!Empty()) + { + EventStore::iterator itr = _eventMap.begin(); + + if (itr->first > _time) + return 0; + else if (_phase && (itr->second & 0xFF000000) && !((itr->second >> 24) & _phase)) + _eventMap.erase(itr); + else + { + uint32 eventId = (itr->second & 0x0000FFFF); + _lastEvent = itr->second; // include phase/group + _eventMap.erase(itr); + return eventId; + } + } + + return 0; +} + +void EventMap::DelayEvents(uint32 delay, uint32 group) +{ + if (!group || group > 8 || Empty()) + return; + + EventStore delayed; + + for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) + { + if (itr->second & (1 << (group + 15))) + { + delayed.insert(EventStore::value_type(itr->first + delay, itr->second)); + _eventMap.erase(itr++); + } + else + ++itr; + } + + _eventMap.insert(delayed.begin(), delayed.end()); +} + +void EventMap::CancelEvent(uint32 eventId) +{ + if (Empty()) + return; + + for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) + { + if (eventId == (itr->second & 0x0000FFFF)) + _eventMap.erase(itr++); + else + ++itr; + } +} + +void EventMap::CancelEventGroup(uint32 group) +{ + if (!group || group > 8 || Empty()) + return; + + for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) + { + if (itr->second & (1 << (group + 15))) + _eventMap.erase(itr++); + else + ++itr; + } +} + +uint32 EventMap::GetNextEventTime(uint32 eventId) const +{ + if (Empty()) + return 0; + + for (EventStore::const_iterator itr = _eventMap.begin(); itr != _eventMap.end(); ++itr) + if (eventId == (itr->second & 0x0000FFFF)) + return itr->first; + + return 0; +} + +uint32 EventMap::GetTimeUntilEvent(uint32 eventId) const +{ + for (EventStore::const_iterator itr = _eventMap.begin(); itr != _eventMap.end(); ++itr) + if (eventId == (itr->second & 0x0000FFFF)) + return itr->first - _time; + + return std::numeric_limits<uint32>::max(); +} diff --git a/src/server/shared/Utilities/EventMap.h b/src/server/shared/Utilities/EventMap.h new file mode 100644 index 00000000000..790a25a0b63 --- /dev/null +++ b/src/server/shared/Utilities/EventMap.h @@ -0,0 +1,341 @@ +/* + * Copyright (C) 2008-2015 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef _EVENT_MAP_H_ +#define _EVENT_MAP_H_ + +#include "Common.h" +#include "Duration.h" + +class EventMap +{ + /** + * Internal storage type. + * Key: Time as uint32 when the event should occur. + * Value: The event data as uint32. + * + * Structure of event data: + * - Bit 0 - 15: Event Id. + * - Bit 16 - 23: Group + * - Bit 24 - 31: Phase + * - Pattern: 0xPPGGEEEE + */ + typedef std::multimap<uint32, uint32> EventStore; + +public: + EventMap() : _time(0), _phase(0), _lastEvent(0) { } + + /** + * @name Reset + * @brief Removes all scheduled events and resets time and phase. + */ + void Reset(); + + /** + * @name Update + * @brief Updates the timer of the event map. + * @param time Value in ms to be added to time. + */ + void Update(uint32 time) + { + _time += time; + } + + /** + * @name GetTimer + * @return Current timer in ms value. + */ + uint32 GetTimer() const + { + return _time; + } + + /** + * @name GetPhaseMask + * @return Active phases as mask. + */ + uint8 GetPhaseMask() const + { + return _phase; + } + + /** + * @name Empty + * @return True, if there are no events scheduled. + */ + bool Empty() const + { + return _eventMap.empty(); + } + + /** + * @name SetPhase + * @brief Sets the phase of the map (absolute). + * @param phase Phase which should be set. Values: 1 - 8. 0 resets phase. + */ + void SetPhase(uint8 phase); + + /** + * @name AddPhase + * @brief Activates the given phase (bitwise). + * @param phase Phase which should be activated. Values: 1 - 8 + */ + void AddPhase(uint8 phase) + { + if (phase && phase <= 8) + _phase |= uint8(1 << (phase - 1)); + } + + /** + * @name RemovePhase + * @brief Deactivates the given phase (bitwise). + * @param phase Phase which should be deactivated. Values: 1 - 8. + */ + void RemovePhase(uint8 phase) + { + if (phase && phase <= 8) + _phase &= uint8(~(1 << (phase - 1))); + } + + /** + * @name ScheduleEvent + * @brief Creates new event entry in map. + * @param eventId The id of the new event. + * @param time The time in milliseconds as std::chrono::duration until the event occurs. + * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. + * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. + */ + void ScheduleEvent(uint32 eventId, Milliseconds const& time, uint32 group = 0, uint8 phase = 0) + { + ScheduleEvent(eventId, time.count(), group, phase); + } + + /** + * @name ScheduleEvent + * @brief Creates new event entry in map. + * @param eventId The id of the new event. + * @param time The time in milliseconds until the event occurs. + * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. + * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. + */ + void ScheduleEvent(uint32 eventId, uint32 time, uint32 group = 0, uint8 phase = 0); + + /** + * @name RescheduleEvent + * @brief Cancels the given event and reschedules it. + * @param eventId The id of the event. + * @param time The time in milliseconds as std::chrono::duration until the event occurs. + * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. + * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. + */ + void RescheduleEvent(uint32 eventId, Milliseconds const& time, uint32 group = 0, uint8 phase = 0) + { + RescheduleEvent(eventId, time.count(), group, phase); + } + + /** + * @name RescheduleEvent + * @brief Cancels the given event and reschedules it. + * @param eventId The id of the event. + * @param time The time in milliseconds until the event occurs. + * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. + * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. + */ + void RescheduleEvent(uint32 eventId, uint32 time, uint32 group = 0, uint8 phase = 0) + { + CancelEvent(eventId); + ScheduleEvent(eventId, time, group, phase); + } + + /** + * @name RepeatEvent + * @brief Repeats the mostly recently executed event. + * @param time Time until in milliseconds as std::chrono::duration the event occurs. + */ + void Repeat(Milliseconds const& time) + { + Repeat(time.count()); + } + + /** + * @name RepeatEvent + * @brief Repeats the mostly recently executed event. + * @param time Time until the event occurs. + */ + void Repeat(uint32 time) + { + _eventMap.insert(EventStore::value_type(_time + time, _lastEvent)); + } + + /** + * @name RepeatEvent + * @brief Repeats the mostly recently executed event. + * @param minTime Minimum time as std::chrono::duration until the event occurs. + * @param maxTime Maximum time as std::chrono::duration until the event occurs. + */ + void Repeat(Milliseconds const& minTime, Milliseconds const& maxTime) + { + Repeat(minTime.count(), maxTime.count()); + } + + /** + * @name RepeatEvent + * @brief Repeats the mostly recently executed event, Equivalent to Repeat(urand(minTime, maxTime). + * @param minTime Minimum time until the event occurs. + * @param maxTime Maximum time until the event occurs. + */ + void Repeat(uint32 minTime, uint32 maxTime) + { + Repeat(urand(minTime, maxTime)); + } + + /** + * @name ExecuteEvent + * @brief Returns the next event to execute and removes it from map. + * @return Id of the event to execute. + */ + uint32 ExecuteEvent(); + + /** + * @name DelayEvents + * @brief Delays all events in the map. If delay is greater than or equal internal timer, delay will be 0. + * @param delay Amount of delay in ms as std::chrono::duration. + */ + void DelayEvents(Milliseconds const& delay) + { + DelayEvents(delay.count()); + } + + /** + * @name DelayEvents + * @brief Delays all events in the map. If delay is greater than or equal internal timer, delay will be 0. + * @param delay Amount of delay. + */ + void DelayEvents(uint32 delay) + { + _time = delay < _time ? _time - delay : 0; + } + + /** + * @name DelayEvents + * @brief Delay all events of the same group. + * @param delay Amount of delay in ms as std::chrono::duration. + * @param group Group of the events. + */ + void DelayEvents(Milliseconds const& delay, uint32 group) + { + DelayEvents(delay.count(), group); + } + + /** + * @name DelayEvents + * @brief Delay all events of the same group. + * @param delay Amount of delay. + * @param group Group of the events. + */ + void DelayEvents(uint32 delay, uint32 group); + + /** + * @name CancelEvent + * @brief Cancels all events of the specified id. + * @param eventId Event id to cancel. + */ + void CancelEvent(uint32 eventId); + + /** + * @name CancelEventGroup + * @brief Cancel events belonging to specified group. + * @param group Group to cancel. + */ + void CancelEventGroup(uint32 group); + + /** + * @name GetNextEventTime + * @brief Returns closest occurence of specified event. + * @param eventId Wanted event id. + * @return Time of found event. + */ + uint32 GetNextEventTime(uint32 eventId) const; + + /** + * @name GetNextEventTime + * @return Time of next event. + */ + uint32 GetNextEventTime() const + { + return Empty() ? 0 : _eventMap.begin()->first; + } + + /** + * @name IsInPhase + * @brief Returns whether event map is in specified phase or not. + * @param phase Wanted phase. + * @return True, if phase of event map contains specified phase. + */ + bool IsInPhase(uint8 phase) const + { + return phase <= 8 && (!phase || _phase & (1 << (phase - 1))); + } + + /** + * @name GetTimeUntilEvent + * @brief Returns time in milliseconds until next event. + * @param eventId of the event. + * @return Time of next event. + */ + uint32 GetTimeUntilEvent(uint32 eventId) const; + +private: + /** + * @name _time + * @brief Internal timer. + * + * This does not represent the real date/time value. + * It's more like a stopwatch: It can run, it can be stopped, + * it can be resetted and so on. Events occur when this timer + * has reached their time value. Its value is changed in the + * Update method. + */ + uint32 _time; + + /** + * @name _phase + * @brief Phase mask of the event map. + * + * Contains the phases the event map is in. Multiple + * phases from 1 to 8 can be set with SetPhase or + * AddPhase. RemovePhase deactives a phase. + */ + uint8 _phase; + + /** + * @name _eventMap + * @brief Internal event storage map. Contains the scheduled events. + * + * See typedef at the beginning of the class for more + * details. + */ + EventStore _eventMap; + + /** + * @name _lastEvent + * @brief Stores information on the most recently executed event + */ + uint32 _lastEvent; +}; + +#endif // _EVENT_MAP_H_ diff --git a/src/server/shared/Utilities/StringFormat.h b/src/server/shared/Utilities/StringFormat.h index 70d9aefb14d..67e0100e7c8 100644 --- a/src/server/shared/Utilities/StringFormat.h +++ b/src/server/shared/Utilities/StringFormat.h @@ -19,15 +19,27 @@ #ifndef TRINITYCORE_STRING_FORMAT_H #define TRINITYCORE_STRING_FORMAT_H -#include <format.h> +#include "format.h" namespace Trinity { - //! Default TC string format function - template<typename... Args> - inline std::string StringFormat(const char* fmt, Args const&... args) + /// Default TC string format function. + template<typename Format, typename... Args> + inline std::string StringFormat(Format&& fmt, Args&&... args) { - return fmt::sprintf(fmt, args...); + return fmt::sprintf(std::forward<Format>(fmt), std::forward<Args>(args)...); + } + + /// Returns true if the given char pointer is null. + inline bool IsFormatEmptyOrNull(const char* fmt) + { + return fmt == nullptr; + } + + /// Returns true if the given std::string is empty. + inline bool IsFormatEmptyOrNull(std::string const& fmt) + { + return fmt.empty(); } } diff --git a/src/server/shared/Utilities/TaskScheduler.h b/src/server/shared/Utilities/TaskScheduler.h index d45835b5f17..f1fe7ea0a21 100644 --- a/src/server/shared/Utilities/TaskScheduler.h +++ b/src/server/shared/Utilities/TaskScheduler.h @@ -29,6 +29,7 @@ #include <boost/optional.hpp> #include "Util.h" +#include "Duration.h" class TaskContext; @@ -646,16 +647,4 @@ private: void Invoke(); }; -/// Milliseconds shorthand typedef. -typedef std::chrono::milliseconds Milliseconds; - -/// Seconds shorthand typedef. -typedef std::chrono::seconds Seconds; - -/// Minutes shorthand typedef. -typedef std::chrono::minutes Minutes; - -/// Hours shorthand typedef. -typedef std::chrono::hours Hours; - #endif /// _TASK_SCHEDULER_H_ diff --git a/src/server/shared/Utilities/Timer.h b/src/server/shared/Utilities/Timer.h index b7d2fa1b5ad..c54903d7be2 100644 --- a/src/server/shared/Utilities/Timer.h +++ b/src/server/shared/Utilities/Timer.h @@ -21,10 +21,10 @@ #include <chrono> -using namespace std::chrono; - inline uint32 getMSTime() { + using namespace std::chrono; + static const system_clock::time_point ApplicationStartTime = system_clock::now(); return uint32(duration_cast<milliseconds>(system_clock::now() - ApplicationStartTime).count()); diff --git a/src/server/shared/Utilities/Util.cpp b/src/server/shared/Utilities/Util.cpp index c4e47a6ee07..33c273fb05f 100644 --- a/src/server/shared/Utilities/Util.cpp +++ b/src/server/shared/Utilities/Util.cpp @@ -560,12 +560,3 @@ std::string ByteArrayToHexStr(uint8 const* bytes, uint32 arrayLen, bool reverse return ss.str(); } - -uint32 EventMap::GetTimeUntilEvent(uint32 eventId) const -{ - for (EventStore::const_iterator itr = _eventMap.begin(); itr != _eventMap.end(); ++itr) - if (eventId == (itr->second & 0x0000FFFF)) - return itr->first - _time; - - return std::numeric_limits<uint32>::max(); -} diff --git a/src/server/shared/Utilities/Util.h b/src/server/shared/Utilities/Util.h index cd523511c1d..3da1c800410 100644 --- a/src/server/shared/Utilities/Util.h +++ b/src/server/shared/Utilities/Util.h @@ -542,346 +542,4 @@ bool CompareValues(ComparisionType type, T val1, T val2) } } -class EventMap -{ - /** - * Internal storage type. - * Key: Time as uint32 when the event should occur. - * Value: The event data as uint32. - * - * Structure of event data: - * - Bit 0 - 15: Event Id. - * - Bit 16 - 23: Group - * - Bit 24 - 31: Phase - * - Pattern: 0xPPGGEEEE - */ - typedef std::multimap<uint32, uint32> EventStore; - - public: - EventMap() : _time(0), _phase(0), _lastEvent(0) { } - - /** - * @name Reset - * @brief Removes all scheduled events and resets time and phase. - */ - void Reset() - { - _eventMap.clear(); - _time = 0; - _phase = 0; - } - - /** - * @name Update - * @brief Updates the timer of the event map. - * @param time Value to be added to time. - */ - void Update(uint32 time) - { - _time += time; - } - - /** - * @name GetTimer - * @return Current timer value. - */ - uint32 GetTimer() const - { - return _time; - } - - /** - * @name GetPhaseMask - * @return Active phases as mask. - */ - uint8 GetPhaseMask() const - { - return _phase; - } - - /** - * @name Empty - * @return True, if there are no events scheduled. - */ - bool Empty() const - { - return _eventMap.empty(); - } - - /** - * @name SetPhase - * @brief Sets the phase of the map (absolute). - * @param phase Phase which should be set. Values: 1 - 8. 0 resets phase. - */ - void SetPhase(uint8 phase) - { - if (!phase) - _phase = 0; - else if (phase <= 8) - _phase = uint8(1 << (phase - 1)); - } - - /** - * @name AddPhase - * @brief Activates the given phase (bitwise). - * @param phase Phase which should be activated. Values: 1 - 8 - */ - void AddPhase(uint8 phase) - { - if (phase && phase <= 8) - _phase |= uint8(1 << (phase - 1)); - } - - /** - * @name RemovePhase - * @brief Deactivates the given phase (bitwise). - * @param phase Phase which should be deactivated. Values: 1 - 8. - */ - void RemovePhase(uint8 phase) - { - if (phase && phase <= 8) - _phase &= uint8(~(1 << (phase - 1))); - } - - /** - * @name ScheduleEvent - * @brief Creates new event entry in map. - * @param eventId The id of the new event. - * @param time The time in milliseconds until the event occurs. - * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. - * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. - */ - void ScheduleEvent(uint32 eventId, uint32 time, uint32 group = 0, uint8 phase = 0) - { - if (group && group <= 8) - eventId |= (1 << (group + 15)); - - if (phase && phase <= 8) - eventId |= (1 << (phase + 23)); - - _eventMap.insert(EventStore::value_type(_time + time, eventId)); - } - - /** - * @name RescheduleEvent - * @brief Cancels the given event and reschedules it. - * @param eventId The id of the event. - * @param time The time in milliseconds until the event occurs. - * @param group The group which the event is associated to. Has to be between 1 and 8. 0 means it has no group. - * @param phase The phase in which the event can occur. Has to be between 1 and 8. 0 means it can occur in all phases. - */ - void RescheduleEvent(uint32 eventId, uint32 time, uint32 group = 0, uint8 phase = 0) - { - CancelEvent(eventId); - ScheduleEvent(eventId, time, group, phase); - } - - /** - * @name RepeatEvent - * @brief Repeats the mostly recently executed event. - * @param time Time until the event occurs. - */ - void Repeat(uint32 time) - { - _eventMap.insert(EventStore::value_type(_time + time, _lastEvent)); - } - - /** - * @name RepeatEvent - * @brief Repeats the mostly recently executed event, Equivalent to Repeat(urand(minTime, maxTime). - * @param minTime Minimum time until the event occurs. - * @param maxTime Maximum time until the event occurs. - */ - void Repeat(uint32 minTime, uint32 maxTime) - { - Repeat(urand(minTime, maxTime)); - } - - /** - * @name ExecuteEvent - * @brief Returns the next event to execute and removes it from map. - * @return Id of the event to execute. - */ - uint32 ExecuteEvent() - { - while (!Empty()) - { - EventStore::iterator itr = _eventMap.begin(); - - if (itr->first > _time) - return 0; - else if (_phase && (itr->second & 0xFF000000) && !((itr->second >> 24) & _phase)) - _eventMap.erase(itr); - else - { - uint32 eventId = (itr->second & 0x0000FFFF); - _lastEvent = itr->second; // include phase/group - _eventMap.erase(itr); - return eventId; - } - } - - return 0; - } - - /** - * @name DelayEvents - * @brief Delays all events in the map. If delay is greater than or equal internal timer, delay will be 0. - * @param delay Amount of delay. - */ - void DelayEvents(uint32 delay) - { - _time = delay < _time ? _time - delay : 0; - } - - /** - * @name DelayEvents - * @brief Delay all events of the same group. - * @param delay Amount of delay. - * @param group Group of the events. - */ - void DelayEvents(uint32 delay, uint32 group) - { - if (!group || group > 8 || Empty()) - return; - - EventStore delayed; - - for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) - { - if (itr->second & (1 << (group + 15))) - { - delayed.insert(EventStore::value_type(itr->first + delay, itr->second)); - _eventMap.erase(itr++); - } - else - ++itr; - } - - _eventMap.insert(delayed.begin(), delayed.end()); - } - - /** - * @name CancelEvent - * @brief Cancels all events of the specified id. - * @param eventId Event id to cancel. - */ - void CancelEvent(uint32 eventId) - { - if (Empty()) - return; - - for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) - { - if (eventId == (itr->second & 0x0000FFFF)) - _eventMap.erase(itr++); - else - ++itr; - } - } - - /** - * @name CancelEventGroup - * @brief Cancel events belonging to specified group. - * @param group Group to cancel. - */ - void CancelEventGroup(uint32 group) - { - if (!group || group > 8 || Empty()) - return; - - for (EventStore::iterator itr = _eventMap.begin(); itr != _eventMap.end();) - { - if (itr->second & (1 << (group + 15))) - _eventMap.erase(itr++); - else - ++itr; - } - } - - /** - * @name GetNextEventTime - * @brief Returns closest occurence of specified event. - * @param eventId Wanted event id. - * @return Time of found event. - */ - uint32 GetNextEventTime(uint32 eventId) const - { - if (Empty()) - return 0; - - for (EventStore::const_iterator itr = _eventMap.begin(); itr != _eventMap.end(); ++itr) - if (eventId == (itr->second & 0x0000FFFF)) - return itr->first; - - return 0; - } - - /** - * @name GetNextEventTime - * @return Time of next event. - */ - uint32 GetNextEventTime() const - { - return Empty() ? 0 : _eventMap.begin()->first; - } - - /** - * @name IsInPhase - * @brief Returns wether event map is in specified phase or not. - * @param phase Wanted phase. - * @return True, if phase of event map contains specified phase. - */ - bool IsInPhase(uint8 phase) - { - return phase <= 8 && (!phase || _phase & (1 << (phase - 1))); - } - - /** - * @name GetTimeUntilEvent - * @brief Returns time in milliseconds until next event. - * @param eventId of the event. - * @return Time of next event. - */ - uint32 GetTimeUntilEvent(uint32 eventId) const; - - private: - /** - * @name _time - * @brief Internal timer. - * - * This does not represent the real date/time value. - * It's more like a stopwatch: It can run, it can be stopped, - * it can be resetted and so on. Events occur when this timer - * has reached their time value. Its value is changed in the - * Update method. - */ - uint32 _time; - - /** - * @name _phase - * @brief Phase mask of the event map. - * - * Contains the phases the event map is in. Multiple - * phases from 1 to 8 can be set with SetPhase or - * AddPhase. RemovePhase deactives a phase. - */ - uint8 _phase; - - /** - * @name _eventMap - * @brief Internal event storage map. Contains the scheduled events. - * - * See typedef at the beginning of the class for more - * details. - */ - EventStore _eventMap; - - /** - * @name _lastEvent - * @brief Stores information on the most recently executed event - */ - uint32 _lastEvent; -}; - #endif |