aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2011_12_14_01_world_gameobject_template.sql1
-rw-r--r--sql/updates/world/2011_12_16_00_world_creature_template.sql4
-rw-r--r--sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql5
-rw-r--r--sql/updates/world/2011_12_17_00_world_creature.sql974
-rw-r--r--sql/updates/world/2011_12_17_00_world_gameobject.sql384
-rw-r--r--sql/updates/world/2011_12_18_00_world_creature_addon.sql2
-rw-r--r--sql/updates/world/2011_12_18_01_world_gossip.sql42
-rw-r--r--sql/updates/world/2011_12_18_02_world_spell_script_names.sql3
-rw-r--r--sql/updates/world/2011_12_18_03_world_trinity_string.sql3
-rw-r--r--sql/updates/world/2011_12_18_04_world_conditions.sql7
-rw-r--r--sql/updates/world/2011_12_18_04_world_misc.sql87
-rw-r--r--sql/updates/world/2011_12_18_05_world_misc.sql94
-rw-r--r--sql/updates/world/2011_12_18_06_world_sai.sql14
-rw-r--r--sql/updates/world/2011_12_18_07_world_conditions.sql17
-rw-r--r--src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp1
-rwxr-xr-xsrc/server/game/Achievements/AchievementMgr.cpp1
-rwxr-xr-xsrc/server/game/Chat/Commands/TicketCommands.cpp17
-rwxr-xr-xsrc/server/game/Entities/Pet/Pet.cpp1
-rwxr-xr-xsrc/server/game/Entities/Player/Player.cpp27
-rwxr-xr-xsrc/server/game/Entities/Player/Player.h4
-rwxr-xr-xsrc/server/game/Entities/Unit/Unit.cpp13
-rwxr-xr-xsrc/server/game/Globals/ObjectMgr.cpp4
-rwxr-xr-xsrc/server/game/Maps/Map.cpp8
-rwxr-xr-xsrc/server/game/Miscellaneous/Language.h3
-rwxr-xr-xsrc/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp3
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/CharacterHandler.cpp108
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/ItemHandler.cpp2
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/MiscHandler.cpp18
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/NPCHandler.cpp27
-rwxr-xr-xsrc/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp12
-rwxr-xr-xsrc/server/game/Server/WorldSession.cpp17
-rwxr-xr-xsrc/server/game/Server/WorldSession.h17
-rwxr-xr-xsrc/server/game/Spells/Auras/SpellAuraEffects.cpp17
-rwxr-xr-xsrc/server/game/Spells/SpellEffects.cpp98
-rw-r--r--src/server/game/Spells/SpellInfo.cpp13
-rwxr-xr-xsrc/server/game/Spells/SpellMgr.cpp4
-rwxr-xr-xsrc/server/game/World/World.h2
-rw-r--r--src/server/scripts/Commands/cs_npc.cpp10
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp8
-rw-r--r--src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp2
-rw-r--r--src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp8
-rw-r--r--src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp3
-rw-r--r--src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp2
-rw-r--r--src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp4
-rw-r--r--src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp4
-rw-r--r--src/server/scripts/Outland/nagrand.cpp2
-rw-r--r--src/server/scripts/Spells/spell_generic.cpp50
-rw-r--r--src/server/scripts/World/go_scripts.cpp28
-rw-r--r--src/server/scripts/World/npcs_special.cpp179
-rwxr-xr-xsrc/server/shared/Database/DatabaseWorkerPool.h7
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.cpp8
-rwxr-xr-xsrc/server/shared/Database/Implementation/CharacterDatabase.h6
-rwxr-xr-xsrc/server/worldserver/CommandLine/CliRunnable.cpp2
-rwxr-xr-xsrc/server/worldserver/RemoteAccess/RASocket.cpp2
54 files changed, 2134 insertions, 245 deletions
diff --git a/sql/updates/world/2011_12_14_01_world_gameobject_template.sql b/sql/updates/world/2011_12_14_01_world_gameobject_template.sql
new file mode 100644
index 00000000000..12729afd6b8
--- /dev/null
+++ b/sql/updates/world/2011_12_14_01_world_gameobject_template.sql
@@ -0,0 +1 @@
+UPDATE `gameobject_template` SET `scriptName` = 'go_ethereal_teleport_pad' WHERE `entry` = 184073; -- Update Ethereal Teleport Pad scriptname \ No newline at end of file
diff --git a/sql/updates/world/2011_12_16_00_world_creature_template.sql b/sql/updates/world/2011_12_16_00_world_creature_template.sql
new file mode 100644
index 00000000000..156fd431359
--- /dev/null
+++ b/sql/updates/world/2011_12_16_00_world_creature_template.sql
@@ -0,0 +1,4 @@
+-- Greater Fire Elemental script
+UPDATE `creature_template` SET `ScriptName`='npc_fire_elemental' WHERE `entry`=15438;
+-- Greater Earth Elemental script
+UPDATE `creature_template` SET `ScriptName`='npc_earth_elemental' WHERE `entry`=15352; \ No newline at end of file
diff --git a/sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql b/sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql
new file mode 100644
index 00000000000..3250bda4fdb
--- /dev/null
+++ b/sql/updates/world/2011_12_16_00_world_spell_bonus_data.sql
@@ -0,0 +1,5 @@
+-- Bounus coef for Greater Fire Elemental spells
+DELETE FROM `spell_bonus_data` WHERE `entry` IN (13376,57984);
+INSERT INTO `spell_bonus_data` (`entry`, `direct_bonus`, `dot_bonus`,`ap_bonus`, `ap_dot_bonus`, `comments`) VALUES
+(13376,0.032,-1,-1,-1,'Greater Fire Elemental - Fire Shield'),
+(57984,0.4289,-1,-1,-1,'Greater Fire Elemental - Fire Blast'); \ No newline at end of file
diff --git a/sql/updates/world/2011_12_17_00_world_creature.sql b/sql/updates/world/2011_12_17_00_world_creature.sql
new file mode 100644
index 00000000000..0126561da01
--- /dev/null
+++ b/sql/updates/world/2011_12_17_00_world_creature.sql
@@ -0,0 +1,974 @@
+-- -------------
+-- UBRS FIXUP --
+-- -------------
+SET @GUID := 137817; -- 289 required
+DELETE FROM `creature` WHERE `map`=229 AND `id` IN (9098,9257,9258,9416,9045,9097,10339,9096,10083,10366,10371,10372,10680,10681,9816,9817,9818,9819,10317,10316,10740,16048,10430,10509,10363,10429,10318,10319,10742,10762,10899,10683,10264,10162);
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+288;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`) VALUES
+-- Pyroguard Emberseer
+(@GUID,9816,229,1,1,0,0,144.438171,-258.034149,96.40662,4.677482,1000000,0,0,1,0,0),
+-- Rage Talon Dragonspawn
+(@GUID+1,9096,229,1,1,0,0,100.742607,-246.0053,106.518906,2.65290046,7200,0,0,1,0,0),
+(@GUID+2,9096,229,1,1,0,0,101.678032,-237.6665,106.518906,3.54301834,7200,0,0,1,0,0),
+(@GUID+3,9096,229,1,1,0,0,102.156441,-253.07338,106.5189,4.72320032,7200,0,0,1,0,0),
+(@GUID+4,9096,229,1,1,0,0,103.098129,-364.3394,116.925743,5.86430645,7200,0,0,1,0,0),
+(@GUID+5,9096,229,1,1,0,0,105.175392,-327.1109,106.518906,2.53072739,7200,0,0,1,0,0),
+(@GUID+6,9096,229,1,1,0,0,128.020447,-315.29,111.029076,2.984513,7200,0,0,1,0,0),
+(@GUID+7,9096,229,1,1,0,0,136.037247,-338.207458,111.043625,0.6457718,7200,0,0,1,0,0),
+(@GUID+8,9096,229,1,1,0,0,136.2818,-308.682281,111.073242,0.279252678,7200,0,0,1,0,0),
+(@GUID+9,9096,229,1,1,0,0,136.424042,-316.1892,111.063728,0.0174532924,7200,0,0,1,0,0),
+(@GUID+10,9096,229,1,1,0,0,138.315643,-395.08606,122.058578,4.764749,7200,0,0,1,0,0),
+(@GUID+11,9096,229,1,1,0,0,142.593109,-342.274048,111.040665,1.39626336,7200,0,0,1,0,0),
+(@GUID+12,9096,229,1,1,0,0,147.042328,-312.391449,71.03966,5.550147,7200,10,0,1,0,1),
+(@GUID+13,9096,229,1,1,0,0,153.89537,-332.387146,70.95632,3.14905024,7200,0,0,1,0,0),
+(@GUID+14,9096,229,1,1,0,0,161.09,-316.201721,70.95632,1.913126,7200,10,0,1,0,1),
+(@GUID+15,9096,229,1,1,0,0,165.520889,-394.921417,122.058556,4.677482,7200,0,0,1,0,0),
+(@GUID+16,9096,229,1,1,0,0,167.774048,-338.655426,111.0341,2.79252672,7200,0,0,1,0,0),
+(@GUID+17,9096,229,1,1,0,0,193.480331,-314.875244,77.0207748,5.375614,7200,10,0,1,0,1),
+(@GUID+18,9096,229,1,1,0,0,195.986176,-291.863159,76.93301,2.74624467,7200,10,0,1,0,1),
+(@GUID+19,9096,229,1,1,0,0,92.24497,-427.635468,111.006088,3.159046,7200,0,0,1,0,0),
+(@GUID+20,9096,229,1,1,0,0,94.5186539,-256.702728,91.53693,6.265732,7200,0,0,1,0,0),
+(@GUID+21,9096,229,1,1,0,0,96.17891,-268.540375,91.53113,1.37881,7200,0,0,1,0,0),
+(@GUID+22,9096,229,1,1,0,0,97.91753,-333.680664,106.5189,1.93731546,7200,0,0,1,0,0),
+-- Rage Talon Flamescale
+(@GUID+23,10083,229,1,1,0,0,102.801758,-332.1205,106.518906,2.21656823,7200,0,0,1,0,0),
+(@GUID+24,10083,229,1,1,0,0,141.698181,-394.829071,122.058556,4.86946869,7200,0,0,1,0,0),
+(@GUID+25,10083,229,1,1,0,0,151.5985,-312.834961,110.825859,1.583788,7200,0,0,1,0,0),
+(@GUID+26,10083,229,1,1,0,0,157.517059,-366.047333,116.844231,6.27482271,7200,0,0,1,0,0),
+(@GUID+27,10083,229,1,1,0,0,161.314163,-393.648651,122.058533,4.86946869,7200,0,0,1,0,0),
+(@GUID+28,10083,229,1,1,0,0,161.339554,-343.435425,111.039314,1.850049,7200,0,0,1,0,0),
+(@GUID+29,10083,229,1,1,0,0,74.99681,-316.2664,91.52034,5.86179638,7200,7,0,1,0,1),
+(@GUID+30,10083,229,1,1,0,0,81.0063858,-284.352936,91.53317,5.951573,7200,7,0,1,0,1),
+-- Rage Talon Dragon Guard
+(@GUID+31,10366,229,1,1,0,0,11.332943,-492.121582,111.022545,0.7330383,7200,0,0,1,0,0),
+(@GUID+32,10366,229,1,1,0,0,165.272675,-475.4804,116.842445,0.01255145,7200,0,0,1,0,0),
+(@GUID+33,10366,229,1,1,0,0,27.6826859,-426.0668,111.009117,5.480334,7200,0,0,1,0,0),
+(@GUID+34,10366,229,1,1,0,0,31.2498379,-497.100922,111.035072,1.27409029,7200,0,0,1,0,0),
+(@GUID+35,10366,229,1,1,0,0,39.75237,-426.769226,111.010643,3.96189737,7200,0,0,1,0,0),
+(@GUID+36,10366,229,1,1,0,0,43.22777,-449.182983,111.026749,3.85717773,7200,0,0,1,0,0),
+(@GUID+37,10366,229,1,1,0,0,8.27626,-487.534119,111.013985,0.436332315,7200,0,0,1,0,0),
+(@GUID+38,10366,229,1,1,0,0,92.84775,-489.693024,116.925728,1.58824956,7200,0,0,1,0,0),
+-- Goraluk Anvilcrack <Blackhand Legion Armorsmith>
+(@GUID+39,10899,229,1,1,0,0,147.684921,-242.757523,111.004608,1.7652961,7200,0,0,1,0,0),
+-- Rage Talon Captain
+(@GUID+40,10371,229,1,1,0,0,-10.6942663,-350.008,111.026779,0.8552113,7200,0,0,1,0,0),
+(@GUID+41,10371,229,1,1,0,0,-16.02218,-263.335266,111.026764,5.70722675,7200,0,0,1,0,0),
+(@GUID+42,10371,229,1,1,0,0,20.24981,-263.2449,111.026764,3.651049,7200,0,0,1,0,0),
+(@GUID+43,10371,229,1,1,0,0,33.96815,-327.537231,111.026779,4.729842,7200,0,0,1,0,0),
+(@GUID+44,10371,229,1,1,0,0,8.802712,-450.5478,111.020157,5.689773,7200,0,0,1,0,0),
+-- Rage Talon Fire Tongue
+(@GUID+45,10372,229,1,1,0,0,-15.58145,-344.314941,111.026779,0.715585,7200,0,0,1,0,0),
+(@GUID+46,10372,229,1,1,0,0,16.30601,-449.322784,111.029114,4.468043,7200,0,0,1,0,0),
+(@GUID+47,10372,229,1,1,0,0,21.4282932,-475.194733,111.038452,1.76278257,7200,0,0,1,0,0),
+(@GUID+48,10372,229,1,1,0,0,23.7180157,-258.2444,111.030754,3.46037364,7200,0,0,1,0,0),
+(@GUID+49,10372,229,1,1,0,0,26.412632,-327.414429,111.026779,4.79965544,7200,0,0,1,0,0),
+(@GUID+50,10372,229,1,1,0,0,6.645312,-460.464966,111.016,0.418879032,7200,0,0,1,0,0),
+(@GUID+51,10372,229,1,1,0,0,86.68403,-480.173737,116.925743,0.8552113,7200,0,0,1,0,0),
+-- Blackhand Summoner <Blackhand Legion>
+(@GUID+52,9818,229,1,1,0,0,124.871681,-334.522583,71.04309,4.694936,7200,0,0,1,0,0),
+(@GUID+53,9818,229,1,1,0,0,128.321472,-295.045166,71.06125,3.874631,7200,0,0,1,0,0),
+(@GUID+54,9818,229,1,1,0,0,130.4315,-340.0683,71.0431061,3.17649913,7200,0,0,1,0,0),
+(@GUID+55,9818,229,1,1,0,0,151.102859,-358.37,71.02174,1.20427716,7200,0,0,1,0,0),
+(@GUID+56,9818,229,1,1,0,0,156.814621,-283.34024,71.03544,1.98967528,7200,0,0,1,0,0),
+(@GUID+57,9818,229,1,1,0,0,162.630127,-243.073456,111.034378,4.32841635,7200,0,0,1,0,0),
+(@GUID+58,9818,229,1,1,0,0,170.605957,-362.35318,116.924133,4.86946869,7200,0,0,1,0,0),
+(@GUID+59,9818,229,1,1,0,0,179.994781,-365.8944,116.925758,3.19395256,7200,0,0,1,0,0),
+(@GUID+60,9818,229,1,1,0,0,188.856033,-258.8772,77.03584,6.07374573,7200,0,0,1,0,0),
+(@GUID+61,9818,229,1,1,0,0,212.137329,-339.792267,76.9862747,1.15191734,7200,0,0,1,0,0),
+(@GUID+62,9818,229,1,1,0,0,217.200012,-259.563751,82.1870956,6.265732,7200,0,0,1,0,0),
+(@GUID+63,9818,229,1,1,0,0,223.7043,-297.484253,77.05145,5.46288061,7200,0,0,1,0,0),
+(@GUID+64,9818,229,1,1,0,0,224.405029,-307.493042,77.05062,0.7853982,7200,0,0,1,0,0),
+(@GUID+65,9818,229,1,1,0,0,87.17487,-363.085022,117.796295,4.729842,7200,0,0,1,0,0),
+(@GUID+66,9818,229,1,1,0,0,90.10163,-419.203979,111.006088,0.994837642,7200,0,0,1,0,0),
+-- Blackhand Veteran <Blackhand Legion>
+(@GUID+67,9819,229,1,1,0,0,113.70948,-366.072266,116.932022,5.82939959,7200,0,0,1,0,0),
+(@GUID+68,9819,229,1,1,0,0,120.166054,-295.048645,71.06183,5.497787,7200,0,0,1,0,0),
+(@GUID+69,9819,229,1,1,0,0,121.719147,-301.576538,71.0559845,0.75049156,7200,0,0,1,0,0),
+(@GUID+70,9819,229,1,1,0,0,141.709488,-299.4828,111.032074,0.0349065848,7200,0,0,1,0,0),
+(@GUID+71,9819,229,1,1,0,0,141.762787,-302.243439,111.031624,0.122173049,7200,0,0,1,0,0),
+(@GUID+72,9819,229,1,1,0,0,141.79213,-296.809937,111.031372,6.23082542,7200,0,0,1,0,0),
+(@GUID+73,9819,229,1,1,0,0,142.861816,-272.084259,111.026764,6.213372,7200,0,0,1,0,0),
+(@GUID+74,9819,229,1,1,0,0,142.902451,-275.0304,111.026955,0.0349065848,7200,0,0,1,0,0),
+(@GUID+75,9819,229,1,1,0,0,142.97287,-277.891327,111.027122,0.139626339,7200,0,0,1,0,0),
+(@GUID+76,9819,229,1,1,0,0,144.939285,-257.132019,110.919548,5.82939959,7200,0,0,1,0,0),
+(@GUID+77,9819,229,1,1,0,0,149.200531,-252.04541,110.907585,1.20427716,7200,0,0,1,0,0),
+(@GUID+78,9819,229,1,1,0,0,149.248459,-249.036591,110.907883,4.86946869,7200,0,0,1,0,0),
+(@GUID+79,9819,229,1,1,0,0,150.514359,-354.057831,71.0197,5.21853447,7200,0,0,1,0,0),
+(@GUID+80,9819,229,1,1,0,0,157.248657,-291.7521,71.0334,1.69296932,7200,0,0,1,0,0),
+(@GUID+81,9819,229,1,1,0,0,157.8796,-359.290649,71.0255661,1.53588974,7200,0,0,1,0,0),
+(@GUID+82,9819,229,1,1,0,0,159.268585,-245.612747,111.026138,6.23082542,7200,0,0,1,0,0),
+(@GUID+83,9819,229,1,1,0,0,161.448456,-317.885559,111.022552,3.17649913,7200,0,0,1,0,0),
+(@GUID+84,9819,229,1,1,0,0,161.471252,-314.998138,111.022469,3.19395256,7200,0,0,1,0,0),
+(@GUID+85,9819,229,1,1,0,0,161.5384,-320.877258,111.025208,3.12413931,7200,0,0,1,0,0),
+(@GUID+86,9819,229,1,1,0,0,168.431061,-288.5739,111.0254,2.91469979,7200,0,0,1,0,0),
+(@GUID+87,9819,229,1,1,0,0,168.467117,-285.357452,111.0254,3.159046,7200,0,0,1,0,0),
+(@GUID+88,9819,229,1,1,0,0,168.529587,-282.207245,111.0254,3.38593864,7200,0,0,1,0,0),
+(@GUID+89,9819,229,1,1,0,0,172.878586,-365.445526,116.925789,2.84488654,7200,0,0,1,0,0),
+(@GUID+90,9819,229,1,1,0,0,178.113251,-364.08963,116.925758,4.956735,7200,0,0,1,0,0),
+(@GUID+91,9819,229,1,1,0,0,191.3293,-272.009766,77.03062,5.61996031,7200,0,0,1,0,0),
+(@GUID+92,9819,229,1,1,0,0,194.615189,-255.948486,77.019455,4.310963,7200,0,0,1,0,0),
+(@GUID+93,9819,229,1,1,0,0,195.222046,-271.912567,77.03062,3.78736448,7200,0,0,1,0,0),
+(@GUID+94,9819,229,1,1,0,0,212.101151,-336.132416,76.955864,5.096361,7200,0,0,1,0,0),
+(@GUID+95,9819,229,1,1,0,0,222.666229,-334.5855,77.01298,3.07177949,7200,0,0,1,0,0),
+(@GUID+96,9819,229,1,1,0,0,225.916336,-261.5317,82.1132355,4.103862,7200,0,0,1,0,0),
+(@GUID+97,9819,229,1,1,0,0,85.73412,-373.6244,116.925743,0.6806784,7200,0,0,1,0,0),
+(@GUID+98,9819,229,1,1,0,0,87.50004,-426.620819,111.006088,5.916666,7200,0,0,1,0,0),
+(@GUID+99,9819,229,1,1,0,0,90.02657,-367.4056,117.518463,2.51327419,7200,0,0,1,0,0),
+(@GUID+100,9819,229,1,1,0,0,92.1094,-415.1748,111.006096,4.59021568,7200,0,0,1,0,0),
+(@GUID+101,9819,229,1,1,0,0,106.9291,-367.275757,116.925743,2.30383468,7200,0,0,1,0,0),
+-- Awbee
+(@GUID+102,10740,229,1,1,0,0,70.54358,-420.442535,110.846558,0.75049156,7200,0,0,1,0,0),
+-- Blackhand Incarcerator <Blackhand Legion>
+(@GUID+103,10316,229,1,1,0,0,126.3072,-258.6249,91.637146,0.0349065848,7200,0,0,1,0,0),
+(@GUID+104,10316,229,1,1,0,0,126.446983,-276.596771,91.6375656,0.820304751,7200,0,0,1,0,0),
+(@GUID+105,10316,229,1,1,0,0,126.507553,-240.895081,91.62151,5.532694,7200,0,0,1,0,0),
+(@GUID+106,10316,229,1,1,0,0,144.283234,-240.993958,91.62266,4.729842,7200,0,0,1,0,0),
+(@GUID+107,10316,229,1,1,0,0,162.216324,-240.97139,91.68952,3.89208412,7200,0,0,1,0,0),
+(@GUID+108,10316,229,1,1,0,0,162.327271,-276.7592,91.69608,2.32128787,7200,0,0,1,0,0),
+(@GUID+109,10316,229,1,1,0,0,162.459671,-258.961456,91.61771,3.08923268,7200,0,0,1,0,0),
+-- Lord Valthalak Trigger
+(@GUID+110,16048,229,1,1,0,0,50.1153679,-534.537354,111.019806,6.161012,7200,0,0,1,0,0),
+-- Blackhand Dreadweaver <Blackhand Legion>
+(@GUID+111,9817,229,1,1,0,0,119.028313,-340.441254,71.04595,0.0349065848,7200,0,0,1,0,0),
+(@GUID+112,9817,229,1,1,0,0,122.051933,-293.15744,71.06183,5.497787,7200,0,0,1,0,0),
+(@GUID+113,9817,229,1,1,0,0,125.033432,-346.358124,71.04615,1.60570288,7200,0,0,1,0,0),
+(@GUID+114,9817,229,1,1,0,0,154.42865,-289.456,71.02977,6.17846537,7200,0,0,1,0,0),
+(@GUID+116,9817,229,1,1,0,0,159.006119,-347.022461,71.01292,0.802851439,7200,0,0,1,0,0),
+(@GUID+117,9817,229,1,1,0,0,159.043167,-288.595856,71.03185,3.64773822,7200,0,0,1,0,0),
+(@GUID+118,9817,229,1,1,0,0,163.503326,-247.513779,111.025925,2.09439516,7200,0,0,1,0,0),
+(@GUID+119,9817,229,1,1,0,0,169.915909,-367.141479,116.925789,1.134464,7200,0,0,1,0,0),
+(@GUID+120,9817,229,1,1,0,0,177.830521,-367.561035,116.925758,1.15191734,7200,0,0,1,0,0),
+(@GUID+121,9817,229,1,1,0,0,190.633072,-263.9589,77.03324,0.9599311,7200,0,0,1,0,0),
+(@GUID+122,9817,229,1,1,0,0,215.519485,-337.73288,76.95243,3.106686,7200,0,0,1,0,0),
+(@GUID+123,9817,229,1,1,0,0,221.517853,-258.423828,82.12929,3.04173565,7200,0,0,1,0,0),
+(@GUID+124,9817,229,1,1,0,0,225.8605,-266.1465,82.087326,3.30034256,7200,0,0,1,0,0),
+(@GUID+125,9817,229,1,1,0,0,232.839737,-297.4911,77.0545654,4.08407,7200,0,0,1,0,0),
+(@GUID+126,9817,229,1,1,0,0,234.324112,-306.76416,77.06055,2.443461,7200,0,0,1,0,0),
+(@GUID+127,9817,229,1,1,0,0,85.6391449,-366.950134,116.925743,0.802851439,7200,0,0,1,0,0),
+(@GUID+128,9817,229,1,1,0,0,93.9203949,-417.965485,111.006088,2.79252672,7200,0,0,1,0,0),
+-- Blackhand Thug
+(@GUID+129,10762,229,1,1,0,0,71.6325,-421.34613,110.794823,1.74532926,7200,0,0,1,0,0),
+(@GUID+130,10762,229,1,1,0,0,71.74594,-419.1056,111.144218,4.694936,7200,0,0,1,0,0),
+-- Blackhand Elite <Blackhand Legion>
+(@GUID+131,10317,229,1,1,0,0,119.342194,-567.1412,107.25071,5.916666,7200,0,0,1,0,0),
+(@GUID+132,10317,229,1,1,0,0,120.0068,-563.2474,107.453323,5.846853,7200,0,0,1,0,0),
+(@GUID+133,10317,229,1,1,0,0,144.60112,-299.439117,110.735207,3.08923268,7200,0,0,1,0,0),
+(@GUID+134,10317,229,1,1,0,0,146.275345,-275.0636,111.0268,3.106686,7200,0,0,1,0,0),
+(@GUID+135,10317,229,1,1,0,0,15.7085686,-269.44873,110.943428,3.70086622,7200,0,0,1,0,0),
+(@GUID+136,10317,229,1,1,0,0,158.335342,-317.906342,110.734566,0.0349065848,7200,0,0,1,0,0),
+(@GUID+137,10317,229,1,1,0,0,11.4635525,-262.667877,110.943428,3.70086479,7200,0,0,1,0,0),
+(@GUID+138,10317,229,1,1,0,0,164.433945,-285.266144,111.025864,0,7200,0,0,1,0,0),
+(@GUID+139,10317,229,1,1,0,0,-18.404726,-338.186249,111.026764,0.5934119,7200,0,0,1,0,0),
+(@GUID+140,10317,229,1,1,0,0,20.7244225,-468.8023,111.035339,4.834562,7200,0,0,1,0,0),
+(@GUID+141,10317,229,1,1,0,0,24.4351749,-268.222015,111.026764,2.830616,7200,0,0,1,0,0),
+(@GUID+142,10317,229,1,1,0,0,29.5069962,-385.555267,110.747688,5.42797375,7200,0,0,1,0,0),
+(@GUID+143,10317,229,1,1,0,0,-3.292078,-259.9108,111.026764,5.480334,7200,0,0,1,0,0),
+(@GUID+144,10317,229,1,1,0,0,30.4171047,-332.906921,111.026779,4.764749,7200,0,0,1,0,0),
+(@GUID+145,10317,229,1,1,0,0,35.48675,-492.949921,111.035957,3.054326,7200,0,0,1,0,0),
+(@GUID+146,10317,229,1,1,0,0,37.333168,-333.77887,111.026779,4.660029,7200,0,0,1,0,0),
+(@GUID+147,10317,229,1,1,0,0,37.9199028,-451.0573,111.028809,0.08726646,7200,0,0,1,0,0),
+(@GUID+148,10317,229,1,1,0,0,-5.026564,-352.542572,111.026779,0.9599311,7200,0,0,1,0,0),
+(@GUID+149,10317,229,1,1,0,0,97.21676,-476.817535,116.925743,5.23598766,7200,0,0,1,0,0),
+-- Lord Victor Nefarius <Lord of Blackrock>
+(@GUID+150,10162,229,1,1,0,0,163.168335,-444.165,122.058609,3.12413931,7200,0,0,1,0,0),
+-- Warchief Rend Blackhand
+(@GUID+151,10429,229,1,1,0,0,159.276138,-443.619049,122.058609,6.265732,7200,0,0,1,0,0),
+-- The Beast
+(@GUID+152,10430,229,1,1,0,0,124.21048,-563.799438,107.4246,2.75762,7200,0,0,1,0,0),
+-- Jed Runewatcher <Blackhand Legion> RARE
+(@GUID+153,10509,229,1,1,0,0,165.09407,-341.9633,110.951019,1.588817,7200,0,0,1,0,0),
+-- General Drakkisath
+(@GUID+154,10363,229,1,1,0,0,36.4508629,-285.993561,111.036224,3.14159274,7200,0,0,1,0,0),
+-- Blackhand Assassin <Blackhand Legion>
+(@GUID+155,10318,229,1,1,0,0,117.948341,-569.3336,107.13662,5.98647928,7200,0,0,1,0,0),
+(@GUID+156,10318,229,1,1,0,0,18.2123585,-471.40033,111.030594,6.17846537,7200,0,0,1,0,0),
+(@GUID+157,10318,229,1,1,0,0,23.50665,-470.537872,111.03933,3.56047153,7200,0,0,1,0,0),
+(@GUID+158,10318,229,1,1,0,0,31.8534851,-490.6625,111.036209,4.32841635,7200,0,0,1,0,0),
+(@GUID+159,10318,229,1,1,0,0,38.164032,-385.480133,110.797859,4.18879032,7200,0,0,1,0,0),
+(@GUID+160,10318,229,1,1,0,0,40.42038,-453.613342,111.024033,1.34390354,7200,0,0,1,0,0),
+(@GUID+161,10318,229,1,1,0,0,-6.880112,-252.370468,111.026764,5.42797375,7200,0,0,1,0,0),
+(@GUID+162,10318,229,1,1,0,0,71.493454,-474.6056,115.778786,6.27848864,7200,0,0,1,0,0),
+(@GUID+163,10318,229,1,1,0,0,99.72865,-479.4235,116.925743,2.75762,7200,0,0,1,0,0),
+-- Blackhand Iron Guard <Blackhand Legion>
+(@GUID+164,10319,229,1,1,0,0,10.1526937,-457.006958,111.020668,4.502949,7200,0,0,1,0,0),
+(@GUID+165,10319,229,1,1,0,0,11.7395382,-460.466461,111.021942,2.80998015,7200,0,0,1,0,0),
+(@GUID+166,10319,229,1,1,0,0,124.05793,-470.958618,116.925743,3.85717773,7200,0,0,1,0,0),
+(@GUID+167,10319,229,1,1,0,0,124.094147,-478.257874,116.925743,2.37364769,7200,0,0,1,0,0),
+(@GUID+168,10319,229,1,1,0,0,-13.7761574,-274.925873,111.026764,5.899213,7200,0,0,1,0,0),
+(@GUID+169,10319,229,1,1,0,0,137.4377,-458.1639,121.873993,1.61019349,7200,0,0,1,0,0),
+(@GUID+170,10319,229,1,1,0,0,172.060364,-470.11795,116.907768,3.38593864,7200,0,0,1,0,0),
+(@GUID+171,10319,229,1,1,0,0,172.2113,-479.1257,116.922729,2.77507353,7200,0,0,1,0,0),
+(@GUID+172,10319,229,1,1,0,0,25.9503689,-431.148,111.036423,3.455752,7200,0,0,1,0,0),
+(@GUID+173,10319,229,1,1,0,0,27.20901,-487.106232,110.948944,5.92132044,7200,0,0,1,0,0),
+(@GUID+174,10319,229,1,1,0,0,30.4782486,-381.1838,110.765739,4.97418833,7200,0,0,1,0,0),
+(@GUID+175,10319,229,1,1,0,0,32.98562,-441.197968,110.947975,4.68552542,7200,0,0,1,0,0),
+(@GUID+177,10319,229,1,1,0,0,40.66904,-330.527466,111.026779,4.62512255,7200,0,0,1,0,0),
+(@GUID+178,10319,229,1,1,0,0,42.51416,-431.718781,111.029396,5.934119,7200,0,0,1,0,0),
+(@GUID+179,10319,229,1,1,0,0,-8.141677,-341.8935,111.026779,0.7679449,7200,0,0,1,0,0),
+(@GUID+180,10319,229,1,1,0,0,-9.265498,-265.802856,111.026764,5.67232,7200,0,0,1,0,0),
+-- Scarshield Acolyte <Scarshield Legion>
+(@GUID+181,9045,229,1,1,0,0,107.023872,-306.314117,54.00366,4.22369671,7200,0,0,1,0,0),
+(@GUID+182,9045,229,1,1,0,0,107.412292,-329.5834,54.003273,5.20108128,7200,0,0,1,0,0),
+(@GUID+183,9045,229,1,1,0,0,14.1215773,-259.2284,65.43308,2.3561945,7200,0,0,1,0,0),
+(@GUID+184,9045,229,1,1,0,0,18.0154171,-276.733521,65.375824,1.0306716,7200,4,0,1,0,1),
+(@GUID+185,9045,229,1,1,0,0,46.5601959,-453.7283,26.3562088,2.40855432,7200,0,0,1,0,0),
+(@GUID+186,9045,229,1,1,0,0,48.0624542,-257.406921,65.45917,0.418879032,7200,0,0,1,0,0),
+(@GUID+187,9045,229,1,1,0,0,5.471476,-520.6829,29.48178,3.4382987,7200,0,0,1,0,0),
+(@GUID+188,9045,229,1,1,0,0,52.8444061,-312.8106,54.00366,0.575958669,7200,0,0,1,0,0),
+(@GUID+189,9045,229,1,1,0,0,69.2313843,-439.3284,41.19126,3.159046,7200,0,0,1,0,0),
+(@GUID+190,9045,229,1,1,0,0,75.6738052,-319.729126,55.8668,1.71042264,7200,5,0,1,0,1),
+(@GUID+191,9045,229,1,1,0,0,79.86551,-353.9204,60.78536,0.87266463,7200,4,0,1,0,1),
+-- Scarshield Legionnaire <Scarshield Legion>
+(@GUID+192,9097,229,1,1,0,0,-1.888463,-585.6428,29.2742,2.49582076,7200,0,0,1,0,0),
+(@GUID+193,9097,229,1,1,0,0,102.429573,-314.697754,54.00119,1.06465089,7200,0,0,1,0,0),
+(@GUID+194,9097,229,1,1,0,0,107.2788,-324.246582,54.00367,3.50811172,7200,0,0,1,0,0),
+(@GUID+195,9097,229,1,1,0,0,107.6331,-311.3865,54.00366,2.67035365,7200,0,0,1,0,0),
+(@GUID+196,9097,229,1,1,0,0,12.8929729,-329.7429,48.8472366,3.159046,7200,0,0,1,0,0),
+(@GUID+197,9097,229,1,1,0,0,12.9406261,-279.607941,65.45197,5.969026,7200,5,0,1,0,1),
+(@GUID+198,9097,229,1,1,0,0,18.7627659,-284.2841,65.45917,2.12930179,7200,5,0,1,0,1),
+(@GUID+199,9097,229,1,1,0,0,-2.931882,-524.657837,29.27372,0.5934119,7200,0,0,1,0,0),
+(@GUID+200,9097,229,1,1,0,0,-28.38935,-563.0387,29.2742,2.86234,7200,0,0,1,0,0),
+(@GUID+201,9097,229,1,1,0,0,30.9195728,-399.682678,48.7868233,3.00196624,7200,0,0,1,0,0),
+(@GUID+202,9097,229,1,1,0,0,-31.5340881,-564.217163,29.2742,1.16937053,7200,0,0,1,0,0),
+(@GUID+203,9097,229,1,1,0,0,-34.0393829,-585.6407,29.2742,6.19591856,7200,0,0,1,0,0),
+(@GUID+204,9097,229,1,1,0,0,-37.9832726,-585.003052,29.2742,1.50098312,7200,0,0,1,0,0),
+(@GUID+205,9097,229,1,1,0,0,43.5522041,-274.521637,65.45917,6.108652,7200,4,0,1,0,1),
+(@GUID+206,9097,229,1,1,0,0,45.7239571,-449.172668,27.6064148,3.700098,7200,0,0,1,0,0),
+(@GUID+207,9097,229,1,1,0,0,45.8465,-279.354,65.3547,1.03702569,7200,4,0,1,0,1),
+(@GUID+208,9097,229,1,1,0,0,51.89088,-287.3514,65.45917,3.03687286,7200,0,0,1,0,0),
+(@GUID+209,9097,229,1,1,0,0,54.68561,-325.345245,54.00365,1.39626336,7200,0,0,1,0,0),
+(@GUID+210,9097,229,1,1,0,0,55.91653,-459.1569,24.6387119,4.74729538,7200,0,0,1,0,0),
+(@GUID+211,9097,229,1,1,0,0,57.3262329,-569.6453,30.678772,0.191986218,7200,0,0,1,0,0),
+(@GUID+212,9097,229,1,1,0,0,57.5051956,-314.922241,54.0019226,2.268928,7200,0,0,1,0,0),
+(@GUID+213,9097,229,1,1,0,0,57.8382835,-310.131531,54.00148,3.577925,7200,0,0,1,0,0),
+(@GUID+214,9097,229,1,1,0,0,59.3199,-507.905,29.2652359,6.05629253,7200,0,0,1,0,0),
+(@GUID+215,9097,229,1,1,0,0,6.909,-271.977539,65.41073,0.209439516,7200,0,0,1,0,0),
+(@GUID+216,9097,229,1,1,0,0,61.8540535,-560.6797,30.6882877,3.49065852,7200,0,0,1,0,0),
+(@GUID+217,9097,229,1,1,0,0,63.39378,-505.4025,29.2684975,4.57276249,7200,0,0,1,0,0),
+(@GUID+218,9097,229,1,1,0,0,66.23844,-274.531647,60.73464,6.23082542,7200,0,0,1,0,0),
+(@GUID+219,9097,229,1,1,0,0,66.43544,-435.9842,42.10328,4.32841635,7200,0,0,1,0,0),
+(@GUID+220,9097,229,1,1,0,0,69.6397,-278.3183,60.67765,0.296705961,7200,0,0,1,0,0),
+(@GUID+221,9097,229,1,1,0,0,-7.64752,-586.2085,29.2742,0.9250245,7200,0,0,1,0,0),
+(@GUID+222,9097,229,1,1,0,0,71.6458054,-586.649231,30.686348,6.265732,7200,0,0,1,0,0),
+(@GUID+223,9097,229,1,1,0,0,79.0274353,-287.054626,60.77396,1.98967528,7200,5,0,1,0,1),
+(@GUID+224,9097,229,1,1,0,0,8.43384,-253.37677,65.4404,5.46288061,7200,0,0,1,0,0),
+(@GUID+225,9097,229,1,1,0,0,82.27611,-580.576843,30.6900673,4.118977,7200,0,0,1,0,0),
+(@GUID+226,9097,229,1,1,0,0,82.37819,-315.5727,55.78426,2.65947676,7200,5,0,1,0,1),
+(@GUID+227,9097,229,1,1,0,0,85.21238,-357.96698,60.78536,6.05629253,7200,4,0,1,0,1),
+(@GUID+228,9097,229,1,1,0,0,86.74077,-283.049225,60.610733,2.49932933,7200,0,0,1,0,0),
+(@GUID+229,9097,229,1,1,0,0,87.000885,-316.9617,65.48379,3.38828468,7200,0,0,1,0,0),
+(@GUID+230,9097,229,1,1,0,0,87.48928,-318.901154,65.49227,3.38828754,7200,0,0,1,0,0),
+(@GUID+231,9097,229,1,1,0,0,9.058154,-257.7314,65.41364,0.6981317,7200,0,0,1,0,0),
+(@GUID+232,9097,229,1,1,0,0,9.251252,-332.5572,48.7950478,1.23918378,7200,0,0,1,0,0),
+(@GUID+233,9097,229,1,1,0,0,90.2249146,-280.722229,60.6818237,4.834562,7200,0,0,1,0,0),
+(@GUID+234,9097,229,1,1,0,0,91.53687,-361.906,60.7020264,1.54308629,7200,4,0,1,0,1),
+(@GUID+235,9097,229,1,1,0,0,94.65439,-275.0468,60.7526,3.14159274,7200,0,0,1,0,0),
+(@GUID+236,9097,229,1,1,0,0,-52.07244,-586.2182,29.2742,2.96705961,7200,0,0,1,0,0),
+(@GUID+237,9097,229,1,1,0,0,-55.7421837,-581.55426,29.2742,4.24115,7200,0,0,1,0,0),
+(@GUID+238,9097,229,1,1,0,0,-63.33937,-572.386353,29.2742,0.122173049,7200,0,0,1,0,0),
+(@GUID+239,9097,229,1,1,0,0,-67.22875,-535.405151,29.2742,3.874631,7200,0,0,1,0,0),
+(@GUID+240,9097,229,1,1,0,0,-70.01909,-575.8177,29.2742,1.16937053,7200,0,0,1,0,0),
+-- Scarshield Spellbinder <Scarshield Legion>
+(@GUID+241,9098,229,1,1,0,0,-1.331627,-519.548645,29.3309135,5.42797375,7200,0,0,1,0,0),
+(@GUID+242,9098,229,1,1,0,0,102.172279,-308.9317,54.0021477,5.916666,7200,0,0,1,0,0),
+(@GUID+243,9098,229,1,1,0,0,105.506432,-332.577332,54.0027466,6.23082542,7200,0,0,1,0,0),
+(@GUID+244,9098,229,1,1,0,0,14.2493792,-254.139786,65.4354858,3.68264461,7200,0,0,1,0,0),
+(@GUID+245,9098,229,1,1,0,0,-2.807793,-580.5389,29.2742,3.94444418,7200,0,0,1,0,0),
+(@GUID+246,9098,229,1,1,0,0,29.0991611,-396.495331,48.80111,4.537856,7200,0,0,1,0,0),
+(@GUID+247,9098,229,1,1,0,0,-31.529623,-559.1773,29.2742,5.480334,7200,0,0,1,0,0),
+(@GUID+248,9098,229,1,1,0,0,40.8953743,-448.450134,27.932621,5.497787,7200,0,0,1,0,0),
+(@GUID+249,9098,229,1,1,0,0,47.6854668,-270.914276,65.3638,6.241553,7200,4,0,1,0,1),
+(@GUID+250,9098,229,1,1,0,0,52.1842651,-307.34,54.0018921,5.253441,7200,0,0,1,0,0),
+(@GUID+251,9098,229,1,1,0,0,52.41355,-255.366913,65.45917,3.63028479,7200,0,0,1,0,0),
+(@GUID+252,9098,229,1,1,0,0,54.9745064,-327.755585,54.00365,1.41371667,7200,0,0,1,0,0),
+(@GUID+253,9098,229,1,1,0,0,55.53388,-464.8595,24.94574,1.4486233,7200,0,0,1,0,0),
+(@GUID+254,9098,229,1,1,0,0,57.2190132,-562.799744,30.6716766,0.418879032,7200,0,0,1,0,0),
+(@GUID+255,9098,229,1,1,0,0,65.42762,-510.3604,29.3167419,2.565634,7200,0,0,1,0,0),
+(@GUID+256,9098,229,1,1,0,0,67.43828,-443.5344,40.726696,2.09439516,7200,0,0,1,0,0),
+(@GUID+257,9098,229,1,1,0,0,8.843101,-326.523132,48.8573074,5.113815,7200,0,0,1,0,0),
+(@GUID+258,9098,229,1,1,0,0,80.25544,-584.6707,30.6894226,1.2566371,7200,0,0,1,0,0),
+(@GUID+259,9098,229,1,1,0,0,81.61091,-325.340729,55.8671455,1.79768908,7200,6,0,1,0,1),
+(@GUID+260,9098,229,1,1,0,0,90.11126,-354.347534,60.78536,4.485496,7200,4,0,1,0,1),
+-- Scarshield Worg <Scarshield Legion>
+(@GUID+261,9416,229,1,1,0,0,15.70567,-319.694763,48.9296379,4.81710863,7200,0,0,1,0,0),
+(@GUID+262,9416,229,1,1,0,0,21.6263542,-319.307526,48.921833,4.59021568,7200,0,0,1,0,0),
+(@GUID+263,9416,229,1,1,0,0,39.9757576,-401.308,48.73395,1.37881,7200,0,0,1,0,0),
+(@GUID+264,9416,229,1,1,0,0,-43.9925423,-560.761658,29.2742,5.77704,7200,0,0,1,0,0),
+(@GUID+265,9416,229,1,1,0,0,44.2465363,-401.749878,48.8481827,1.41371667,7200,0,0,1,0,0),
+(@GUID+266,9416,229,1,1,0,0,-44.5054626,-555.940247,29.2742,5.44542742,7200,0,0,1,0,0),
+(@GUID+267,9416,229,1,1,0,0,45.85862,-503.317871,29.2189922,0.628318548,7200,0,0,1,0,0),
+(@GUID+268,9416,229,1,1,0,0,48.7350845,-507.5874,29.2278786,0.802851439,7200,0,0,1,0,0),
+(@GUID+269,9416,229,1,1,0,0,54.7811,-477.6601,26.7370472,2.51327419,7200,0,0,1,0,0),
+(@GUID+270,9416,229,1,1,0,0,57.44511,-472.058868,25.8572731,2.740167,7200,0,0,1,0,0),
+(@GUID+271,9416,229,1,1,0,0,-62.07272,-550.186646,29.2742,0.9075712,7200,0,0,1,0,0),
+(@GUID+273,9416,229,1,1,0,0,-65.6472,-544.931946,29.2742,0.575958669,7200,0,0,1,0,0),
+-- Scarshield Raider <Scarshield Legion>
+(@GUID+274,9258,229,1,1,0,0,18.6335163,-319.563538,48.92536,4.694936,7200,0,0,1,0,0),
+(@GUID+275,9258,229,1,1,0,0,42.2404366,-400.899567,48.78902,1.39626336,7200,0,0,1,0,0),
+(@GUID+276,9258,229,1,1,0,0,-43.1253738,-558.9627,29.2742,5.61996031,7200,0,0,1,0,0),
+(@GUID+277,9258,229,1,1,0,0,48.0036926,-504.871857,29.22562,0.715585,7200,0,0,1,0,0),
+(@GUID+278,9258,229,1,1,0,0,55.2906952,-474.477264,26.0807571,2.61799383,7200,0,0,1,0,0),
+(@GUID+279,9258,229,1,1,0,0,-62.76482,-546.4872,29.2742,0.75049156,7200,0,0,1,0,0),
+-- Scarshield Warlock <Scarshield Legion>
+(@GUID+280,9257,229,1,1,0,0,26.0838318,-398.5821,48.8247757,6.07374573,7200,0,0,1,0,0),
+(@GUID+281,9257,229,1,1,0,0,3.1376,-524.950745,29.456665,2.23402143,7200,0,0,1,0,0),
+(@GUID+282,9257,229,1,1,0,0,41.2527657,-453.779816,26.4869156,1.012291,7200,0,0,1,0,0),
+(@GUID+283,9257,229,1,1,0,0,60.2924347,-460.7934,24.84539,3.2986722,7200,0,0,1,0,0),
+(@GUID+284,9257,229,1,1,0,0,62.5478935,-437.094635,42.1535568,5.532694,7200,0,0,1,0,0),
+(@GUID+285,9257,229,1,1,0,0,62.9071541,-569.002136,30.6996365,3.106686,7200,0,0,1,0,0),
+(@GUID+286,9257,229,1,1,0,0,75.31803,-587.21405,30.68769,2.86234,7200,0,0,1,0,0),
+(@GUID+287,9257,229,1,1,0,0,-8.240628,-580.9951,29.2742,5.67232,7200,0,0,1,0,0),
+(@GUID+288,9257,229,1,1,0,0,-56.70842,-586.1366,29.2742,1.2915436,7200,0,0,1,0,0);
+
+-- Add sitting to some Scarshield Legionnaires
+DELETE FROM `creature_addon` WHERE `guid` IN (209318,209333,209315,209337,209308,209312,209331,209320,209335);
+INSERT INTO `creature_addon` (`guid`,`bytes1`,`bytes2`) VALUES
+(209318,1,1),(209333,1,1),(209315,1,1),(209337,1,1),(209308,1,1),(209312,1,1),(209331,1,1),(209320,1,1),(209335,1,1);
+
+-- Pathing for Blackhand Dreadweaver Entry: 9817
+SET @NPC := @GUID+116;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=156.027,`position_y`=-256.98,`position_z`=110.873 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,156.655,-261.057,110.911,0,0,0,100,0),
+(@PATH,2,156.697,-270.709,110.945,0,0,0,100,0),
+(@PATH,3,157.437,-283.381,110.653,0,0,0,100,0),
+(@PATH,4,156.721,-302.091,110.655,0,0,0,100,0),
+(@PATH,5,155.393,-316.954,110.658,0,0,0,100,0),
+(@PATH,6,145.795,-316.889,110.658,0,0,0,100,0),
+(@PATH,7,138.546,-312.556,110.971,0,0,0,100,0),
+(@PATH,8,128.11,-312.561,110.948,0,0,0,100,0),
+(@PATH,9,113.444,-312.323,106.436,0,0,0,100,0),
+(@PATH,10,107.291,-311.159,106.436,0,0,0,100,0),
+(@PATH,11,107.143,-305.034,106.436,0,0,0,100,0),
+(@PATH,12,107.968,-294.352,106.436,0,0,0,100,0),
+(@PATH,13,108.13,-273.961,106.436,0,0,0,100,0),
+(@PATH,14,108.325,-262.696,106.436,0,0,0,100,0),
+(@PATH,15,113.576,-260.461,106.436,0,0,0,100,0),
+(@PATH,16,119.512,-259.629,108.912,0,0,0,100,0),
+(@PATH,17,126.887,-258.807,110.95,0,0,0,100,0),
+(@PATH,18,134.264,-256.577,110.872,0,0,0,100,0),
+(@PATH,19,142.107,-253.858,110.808,0,0,0,100,0),
+(@PATH,20,149.232,-254.785,110.835,0,0,0,100,0),
+(@PATH,21,156.027,-256.98,110.873,0,0,0,100,0);
+
+-- Pathing for Rage Talon Dragonspawn Entry: 9096
+SET @NPC := @GUID+13;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=141.415,`position_y`=-328.32,`position_z`=70.9563 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,137.036,-318.309,70.9563,0,0,0,100,0),
+(@PATH,2,139.625,-311.595,70.9563,0,0,0,100,0),
+(@PATH,3,145.022,-306.612,70.9563,0,0,0,100,0),
+(@PATH,4,155.634,-307.226,70.9563,0,0,0,100,0),
+(@PATH,5,165.665,-309.29,70.9563,0,0,0,100,0),
+(@PATH,6,179.918,-308.349,75.0044,0,0,0,100,0),
+(@PATH,7,186.484,-307.375,76.8804,0,0,0,100,0),
+(@PATH,8,190.417,-303.615,76.8863,0,0,0,100,0),
+(@PATH,9,190,-295.833,76.9324,0,0,0,100,0),
+(@PATH,10,192.748,-284.944,76.9366,0,0,0,100,0),
+(@PATH,11,197.221,-281.635,76.9372,0,0,0,100,0),
+(@PATH,12,205.403,-280.035,76.9363,0,0,0,100,0),
+(@PATH,13,206.769,-288.047,76.9327,0,0,0,100,0),
+(@PATH,14,206.049,-300.881,76.9044,0,0,0,100,0),
+(@PATH,15,203.805,-308.685,76.8987,0,0,0,100,0),
+(@PATH,16,200.091,-314.903,76.892,0,0,0,100,0),
+(@PATH,17,196.037,-321.532,76.8849,0,0,0,100,0),
+(@PATH,18,187.264,-325.25,76.8738,0,0,0,100,0),
+(@PATH,19,172.508,-330.708,71.6636,0,0,0,100,0),
+(@PATH,20,157.819,-330.472,70.9563,0,0,0,100,0),
+(@PATH,21,151.347,-332.406,70.9563,0,0,0,100,0),
+(@PATH,22,141.415,-328.32,70.9563,0,0,0,100,0);
+
+-- Pathing for Rage Talon Dragonspawn Entry: 9096
+SET @NPC := @GUID+3;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=102.111,`position_y`=-255.036,`position_z`=106.436 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,102.492,-284.08,106.436,0,0,0,100,0),
+(@PATH,2,103.388,-312.501,106.436,0,0,0,100,0),
+(@PATH,3,102.492,-284.08,106.436,0,0,0,100,0),
+(@PATH,4,102.111,-255.036,106.436,0,0,0,100,0);
+
+-- Pathing for Rage Talon Flamescale Entry: 10083
+SET @NPC := @GUID+25;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=151.43,`position_y`=-299.848,`position_z`=110.655 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,151.483,-266.668,110.941,0,0,0,100,0),
+(@PATH,2,151.43,-299.848,110.655,0,0,0,100,0),
+(@PATH,3,151.826,-337.478,110.948,0,0,0,100,0),
+(@PATH,4,151.43,-299.848,110.655,0,0,0,100,0);
+
+-- Pathing for Rage Talon Flamescale Entry: 10083
+SET @NPC := @GUID+26;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=159.69,`position_y`=-366.065,`position_z`=116.844 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,164.673,-366.137,116.844,0,0,0,100,0),
+(@PATH,2,159.69,-366.065,116.844,0,0,0,100,0),
+(@PATH,3,134.314,-365.853,116.844,0,0,0,100,0),
+(@PATH,4,113.681,-366.227,116.844,0,0,0,100,0),
+(@PATH,5,134.314,-365.853,116.844,0,0,0,100,0),
+(@PATH,6,159.69,-366.065,116.844,0,0,0,100,0);
+
+-- Pathing for Blackhand Veteran Entry: 9819
+SET @NPC := @GUID+77;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=151.986,`position_y`=-343.381,`position_z`=110.952 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,156.734,-340.574,110.949,0,0,0,100,0),
+(@PATH,2,161.285,-330.085,110.941,0,0,0,100,0),
+(@PATH,3,164.349,-321.437,110.935,0,0,0,100,0),
+(@PATH,4,164.066,-307.895,110.926,0,0,0,100,0),
+(@PATH,5,161.931,-295.254,110.937,0,0,0,100,0),
+(@PATH,6,161.54,-286.843,110.94,0,0,0,100,0),
+(@PATH,7,161.626,-276.16,110.942,0,0,0,100,0),
+(@PATH,8,162.619,-260.48,110.922,0,0,0,100,0),
+(@PATH,9,160.883,-251.074,110.911,0,0,0,100,0),
+(@PATH,10,153.333,-254.239,110.841,0,0,0,100,0),
+(@PATH,11,147.933,-256.874,110.85,0,0,0,100,0),
+(@PATH,12,144.41,-258.089,110.852,0,0,0,100,0),
+(@PATH,13,142.226,-262.721,110.888,0,0,0,100,0),
+(@PATH,14,139.325,-272.981,110.928,0,0,0,100,0),
+(@PATH,15,139.064,-292.411,110.964,0,0,0,100,0),
+(@PATH,16,138.366,-304.562,110.976,0,0,0,100,0),
+(@PATH,17,140.202,-318.19,110.956,0,0,0,100,0),
+(@PATH,18,141.56,-328.348,110.948,0,0,0,100,0),
+(@PATH,19,145.867,-339.175,110.95,0,0,0,100,0),
+(@PATH,20,151.986,-343.381,110.952,0,0,0,100,0);
+
+-- Pathing for Blackhand Veteran Entry: 9819
+SET @NPC := @GUID+68;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=137.681,`position_y`=-374.135,`position_z`=116.807 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,137.932,-365.946,116.844,0,0,0,100,0),
+(@PATH,2,119.13,-366.058,116.848,0,0,0,100,0),
+(@PATH,3,137.932,-365.946,116.844,0,0,0,100,0),
+(@PATH,4,137.681,-374.135,116.807,0,0,0,100,0),
+(@PATH,5,138.003,-383.829,121.975,0,0,0,100,0),
+(@PATH,6,137.621,-374.032,116.807,0,0,0,100,0),
+(@PATH,7,137.28,-358.897,116.838,0,0,0,100,0),
+(@PATH,8,138.01,-349.646,111.285,0,0,0,100,0),
+(@PATH,9,138.504,-339.926,110.965,0,0,0,100,0),
+(@PATH,10,138.055,-349.128,110.97,0,0,0,100,0),
+(@PATH,11,137.272,-358.828,116.838,0,0,0,100,0),
+(@PATH,12,137.975,-366.027,116.844,0,0,0,100,0),
+(@PATH,13,151.988,-365.319,116.844,0,0,0,100,0),
+(@PATH,14,168.97,-365.253,116.844,0,0,0,100,0),
+(@PATH,15,151.988,-365.319,116.844,0,0,0,100,0),
+(@PATH,16,137.975,-366.027,116.844,0,0,0,100,0),
+(@PATH,17,137.263,-358.934,116.838,0,0,0,100,0),
+(@PATH,18,138.048,-349.209,110.971,0,0,0,100,0),
+(@PATH,19,138.504,-339.926,110.965,0,0,0,100,0),
+(@PATH,20,138.01,-349.646,111.285,0,0,0,100,0),
+(@PATH,21,137.286,-358.828,116.838,0,0,0,100,0),
+(@PATH,22,137.621,-374.032,116.807,0,0,0,100,0),
+(@PATH,23,138.003,-383.829,121.975,0,0,0,100,0),
+(@PATH,24,137.681,-374.135,116.807,0,0,0,100,0);
+
+-- Pathing for Rage Talon Dragon Guard Entry: 10366
+SET @NPC := @GUID+32;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=137.109,`position_y`=-474.652,`position_z`=116.842 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,150.917,-475.661,116.826,0,0,0,100,0),
+(@PATH,2,165.273,-475.48,116.842,0,0,0,100,0),
+(@PATH,3,150.917,-475.661,116.826,0,0,0,100,0),
+(@PATH,4,137.109,-474.652,116.842,0,0,0,100,0),
+(@PATH,5,120.161,-474.673,116.842,0,0,0,100,0),
+(@PATH,6,106.258,-474.643,116.842,0,0,0,100,0),
+(@PATH,7,94.7496,-473.079,116.842,0,0,0,100,0),
+(@PATH,8,83.6851,-474.242,116.842,0,0,0,100,0),
+(@PATH,9,77.1173,-474.496,116.842,0,0,0,100,0),
+(@PATH,10,65.0976,-474.578,113.951,0,0,0,100,0),
+(@PATH,11,51.9036,-474.688,110.923,0,0,0,100,0),
+(@PATH,12,64.8587,-474.58,113.951,0,0,0,100,0),
+(@PATH,13,77.1173,-474.496,116.842,0,0,0,100,0),
+(@PATH,14,83.4094,-474.271,116.842,0,0,0,100,0),
+(@PATH,15,94.7496,-473.079,116.842,0,0,0,100,0),
+(@PATH,16,106.258,-474.643,116.842,0,0,0,100,0),
+(@PATH,17,120.161,-474.673,116.842,0,0,0,100,0),
+(@PATH,18,137.109,-474.652,116.842,0,0,0,100,0);
+
+-- Pathing for Jed Runewatcher Entry: 10509 "RARE"
+SET @NPC := @GUID+153;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=165.094,`position_y`=-341.963,`position_z`=110.951 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,143.081,-332.039,110.946,0,0,0,100,0),
+(@PATH,2,137.568,-346.437,110.972,0,0,0,100,0),
+(@PATH,3,137.582,-349.249,110.999,0,0,0,100,0),
+(@PATH,4,137.404,-357.640,116.838,0,0,0,100,0),
+(@PATH,5,137.005,-366.262,116.844,0,0,0,100,0),
+(@PATH,6,137.173,-374.983,116.807,0,0,0,100,0),
+(@PATH,7,137.252,-383.108,121.975,0,0,0,100,0),
+(@PATH,8,137.299,-392.334,121.975,0,0,0,100,0),
+(@PATH,9,151.393,-392.988,121.975,0,0,0,100,0),
+(@PATH,10,165.537,-392.823,121.975,0,0,0,100,0),
+(@PATH,11,165.440,-383.058,121.975,0,0,0,100,0),
+(@PATH,12,165.651,-374.907,116.807,0,0,0,100,0),
+(@PATH,13,165.556,-367.59,116.845,0,0,0,100,0),
+(@PATH,14,165.415,-357.528,116.837,0,0,0,100,0),
+(@PATH,15,165.545,-348.847,110.969,0,0,0,100,0),
+(@PATH,16,165.094,-341.963,110.951,0,0,0,100,0),
+(@PATH,17,160.784,-330.969,110.941,0,0,0,100,0),
+(@PATH,18,160.191,-309.153,110.656,0,0,0,100,0),
+(@PATH,19,160.079,-280.562,110.652,0,0,0,100,0),
+(@PATH,20,144.032,-280.615,110.653,0,0,0,100,0),
+(@PATH,21,142.987,-312.006,110.658,0,0,0,100,0);
+
+-- Pathing for Blackhand Assassin Entry: 10318
+SET @NPC := @GUID+173;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=70.90186,`position_y`=-474.6028,`position_z`=115.4964 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '22766');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,83.54216,-474.6622,116.8424,0,0,0,100,0),
+(@PATH,2,93.11698,-476.8058,116.8424,0,0,0,100,0),
+(@PATH,3,93.16169,-492.36,116.8424,0,0,0,100,0),
+(@PATH,4,93.11698,-476.8058,116.8424,0,0,0,100,0),
+(@PATH,5,83.68505,-474.6942,116.8424,0,0,0,100,0),
+(@PATH,6,70.90186,-474.6028,115.4964,0,0,0,100,0),
+(@PATH,7,60.60706,-474.3578,112.1393,0,0,0,100,0),
+(@PATH,8,45.0526,-476.1751,110.926,0,0,0,100,0),
+(@PATH,9,36.50502,-483.8639,110.9392,0,0,0,100,0),
+(@PATH,10,24.51036,-485.5788,110.9466,0,0,0,100,0),
+(@PATH,11,12.32181,-481.5825,110.9355,0,0,0,100,0),
+(@PATH,12,10.06764,-472.9978,110.9354,0,0,0,100,0),
+(@PATH,13,17.3661,-456.8065,110.9467,0,0,0,100,0),
+(@PATH,14,29.56967,-454.026,110.9595,0,0,0,100,0),
+(@PATH,15,35.45218,-454.5979,110.943,0,0,0,100,0),
+(@PATH,16,34.74645,-442.8175,110.945,0,0,0,100,0),
+(@PATH,17,33.50422,-417.918,110.7123,0,0,0,100,0),
+(@PATH,18,34.74645,-442.8175,110.945,0,0,0,100,0),
+(@PATH,19,35.45218,-454.5979,110.943,0,0,0,100,0),
+(@PATH,20,29.56967,-454.026,110.9595,0,0,0,100,0),
+(@PATH,21,17.3661,-456.8065,110.9467,0,0,0,100,0),
+(@PATH,22,10.06764,-472.9978,110.9354,0,0,0,100,0),
+(@PATH,23,12.32181,-481.5825,110.9355,0,0,0,100,0),
+(@PATH,24,24.51036,-485.5788,110.9466,0,0,0,100,0),
+(@PATH,25,36.50502,-483.8639,110.9392,0,0,0,100,0),
+(@PATH,26,45.0526,-476.1751,110.926,0,0,0,100,0),
+(@PATH,27,60.60706,-474.3578,112.1393,0,0,0,100,0),
+(@PATH,28,70.90186,-474.6028,115.4964,0,0,0,100,0);
+-- 0xF13000284E0957D1 .go 83.54216 -474.6622 116.8424
+
+-- Pathing for Blackhand Assassin Entry: 10318
+SET @NPC := @GUID+155;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=117.2911,`position_y`=-562.6133,`position_z`=107.403 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,117.5151,-567.9547,107.125,0,0,0,100,0),
+(@PATH,2,117.2911,-562.6133,107.403,0,0,0,100,0),
+(@PATH,3,112.9668,-557.6212,107.6628,0,0,0,100,0),
+(@PATH,4,105.0914,-557.2451,107.6823,0,0,0,100,0),
+(@PATH,5,96.04835,-553.9485,110.5781,0,0,0,100,0),
+(@PATH,6,87.70401,-550.9095,110.9234,0,0,0,100,0),
+(@PATH,7,79.952,-545.0425,110.9392,0,0,0,100,0),
+(@PATH,8,71.74578,-539.9948,110.9404,0,0,0,100,0),
+(@PATH,9,63.53278,-534.9427,110.9417,0,0,0,100,0),
+(@PATH,10,71.6881,-539.9797,110.9404,0,0,0,100,0),
+(@PATH,11,79.952,-545.0425,110.9392,0,0,0,100,0),
+(@PATH,12,87.70401,-550.9095,110.9234,0,0,0,100,0),
+(@PATH,13,96.04835,-553.9485,110.5781,0,0,0,100,0),
+(@PATH,14,105.0914,-557.2451,107.6823,0,0,0,100,0),
+(@PATH,15,112.9668,-557.6212,107.6628,0,0,0,100,0),
+(@PATH,16,117.2911,-562.6133,107.403,0,0,0,100,0);
+-- 0xF13000284E0957CB .go 117.5151 -567.9547 107.125
+
+-- Pathing for Blackhand Iron Guard Entry: 10319
+SET @NPC := @GUID+185;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=27.209,`position_y`=-487.106,`position_z`=110.949 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,41.0048,-479.188,110.932,0,0,0,100,0),
+(@PATH,2,40.6946,-470.055,110.934,0,0,0,100,0),
+(@PATH,3,28.987,-457.701,110.958,0,0,0,100,0),
+(@PATH,4,19.4282,-458.143,110.948,0,0,0,100,0),
+(@PATH,5,10.9487,-465.839,110.938,0,0,0,100,0),
+(@PATH,6,12.0295,-481.36,110.935,0,0,0,100,0),
+(@PATH,7,27.209,-487.106,110.949,0,0,0,100,0);
+
+-- Pathing for Blackhand Iron Guard Entry: 10319
+SET @NPC := @GUID+187;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=32.9856,`position_y`=-441.198,`position_z`=110.948 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,33.2388,-451.331,110.947,0,0,0,100,0),
+(@PATH,2,27.8349,-467.173,110.954,0,0,0,100,0),
+(@PATH,3,22.5882,-486.309,110.945,0,0,0,100,0),
+(@PATH,4,21.3946,-495.946,110.941,0,0,0,100,0),
+(@PATH,5,22.5882,-486.309,110.945,0,0,0,100,0),
+(@PATH,6,27.8349,-467.173,110.954,0,0,0,100,0),
+(@PATH,7,33.2388,-451.331,110.947,0,0,0,100,0),
+(@PATH,8,32.9856,-441.198,110.948,0,0,0,100,0),
+(@PATH,9,33.2187,-432.523,110.949,0,0,0,100,0),
+(@PATH,10,32.9856,-441.198,110.948,0,0,0,100,0);
+
+-- Pathing for Blackhand Iron Guard Entry: 10319
+SET @NPC := @GUID+180;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=137.438,`position_y`=-458.164,`position_z`=121.874 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,137.876,-449.432,121.975,0,0,0,100,0),
+(@PATH,2,142.882,-447.466,121.975,0,0,0,100,0),
+(@PATH,3,150.106,-447.552,121.975,0,0,0,100,0),
+(@PATH,4,158.939,-447.841,121.975,0,0,0,100,0),
+(@PATH,5,162.936,-450.315,121.975,0,0,0,100,0),
+(@PATH,6,164.986,-455.795,121.975,0,0,0,100,0),
+(@PATH,7,165.879,-465.25,116.954,0,0,0,100,0),
+(@PATH,8,165.223,-470.568,116.829,0,0,0,100,0),
+(@PATH,9,158.806,-470.375,116.826,0,0,0,100,0),
+(@PATH,10,148.989,-470.486,116.816,0,0,0,100,0),
+(@PATH,11,142.296,-471.539,116.839,0,0,0,100,0),
+(@PATH,12,127.625,-473.384,116.845,0,0,0,100,0),
+(@PATH,13,118.149,-473.105,116.842,0,0,0,100,0),
+(@PATH,14,109.252,-473.191,116.842,0,0,0,100,0),
+(@PATH,15,101.37,-473.117,116.842,0,0,0,100,0),
+(@PATH,16,97.2847,-470.1,116.842,0,0,0,100,0),
+(@PATH,17,93.7787,-464.77,116.842,0,0,0,100,0),
+(@PATH,18,93.1996,-456.881,116.842,0,0,0,100,0),
+(@PATH,19,93.0105,-447.581,113.951,0,0,0,100,0),
+(@PATH,20,92.7964,-437.883,110.923,0,0,0,100,0),
+(@PATH,21,92.9087,-447.432,113.951,0,0,0,100,0),
+(@PATH,22,93.261,-456.932,116.842,0,0,0,100,0),
+(@PATH,23,94.0509,-465.158,116.842,0,0,0,100,0),
+(@PATH,24,97.3934,-470.372,116.842,0,0,0,100,0),
+(@PATH,25,101.615,-473.2,116.842,0,0,0,100,0),
+(@PATH,26,109.96,-473.221,116.842,0,0,0,100,0),
+(@PATH,27,119.431,-472.966,116.842,0,0,0,100,0),
+(@PATH,28,129.714,-473.405,116.844,0,0,0,100,0),
+(@PATH,29,137.726,-471.057,116.836,0,0,0,100,0),
+(@PATH,30,137.759,-466.307,116.807,0,0,0,100,0),
+(@PATH,31,137.438,-458.164,121.874,0,0,0,100,0);
+
+-- Pathing for Goraluk Anvilcrack Entry: 10899
+SET @NPC := @GUID+39;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=145.1794,`position_y`=-242.7074,`position_z`=110.8712 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,140.8718,-243.5903,110.8264,0,0,0,100,0),
+(@PATH,2,140.0336,-244.9933,110.8045,7000,0,@PATH+1,100,0),
+(@PATH,3,140.0312,-247.3475,110.7735,0,0,0,100,0),
+(@PATH,4,142.0183,-248.9341,110.7787,0,0,0,100,0),
+(@PATH,5,144.8816,-250.2995,110.7876,0,0,0,100,0),
+(@PATH,6,148.9328,-246.4266,110.8622,0,0,0,100,0),
+(@PATH,7,152.1183,-245.3219,110.9002,0,0,0,100,0),
+(@PATH,8,159.5392,-248.6294,110.9232,48000,0,@PATH+2,100,0),
+(@PATH,9,155.1528,-243.6318,110.9261,0,0,0,100,0),
+(@PATH,10,148.9452,-243.1658,110.8972,0,0,0,100,0),
+(@PATH,11,147.2209,-242.0178,110.8953,70000,0,@PATH+3,100,0),
+(@PATH,12,144.9547,-246.9615,110.8239,0,0,0,100,0),
+(@PATH,13,147.9653,-244.2648,110.8774,0,0,0,100,0),
+(@PATH,14,149.6411,-243.5608,110.8987,0,0,0,100,0),
+(@PATH,15,147.806,-248.5052,110.8308,0,0,0,100,0),
+(@PATH,16,148.3326,-245.9803,110.8621,0,0,0,100,0),
+(@PATH,17,152.27,-246.4282,110.8896,0,0,0,100,0),
+(@PATH,18,147.7813,-243.522,110.8838,0,0,0,100,0),
+(@PATH,19,148.1721,-245.3295,110.8677,0,0,0,100,0),
+(@PATH,20,149.0415,-247.1999,110.8549,0,0,0,100,0),
+(@PATH,21,150.1232,-244.7369,110.8901,0,0,0,100,0),
+(@PATH,22,145.1794,-242.7074,110.8712,0,0,0,100,0);
+DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2,@PATH+3);
+INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES
+(@PATH+1,0,30,0,0,5.759586,89),
+(@PATH+1,3,1,69,1,0,90),
+(@PATH+2,0,30,0,0,0.715585,91),
+(@PATH+2,4,1,133,1,0,92),
+(@PATH+2,39,1,0,1,0,93),
+(@PATH+3,0,30,0,0,1.801312,94),
+(@PATH+3,1,1,28,1,0,95),
+(@PATH+3,22,1,0,1,0,96);
+
+-- Pathing for Rage Talon Captain Entry: 10371
+SET @NPC := @GUID+42;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=17.7263,`position_y`=-263.467,`position_z`=110.943 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,0.073367,-274.516,110.929,0,0,0,100,0),
+(@PATH,2,-0.197867,-320.715,110.939,0,0,0,100,0),
+(@PATH,3,32.9907,-344.613,110.943,0,0,0,100,0),
+(@PATH,4,2.70391,-335.468,110.942,0,0,0,100,0),
+(@PATH,5,21.5374,-315.253,110.945,0,0,0,100,0),
+(@PATH,6,21.8535,-266.793,110.943,0,0,0,100,0),
+(@PATH,7,21.5374,-315.253,110.945,0,0,0,100,0),
+(@PATH,8,2.70391,-335.468,110.942,0,0,0,100,0),
+(@PATH,9,32.9907,-344.613,110.943,0,0,0,100,0),
+(@PATH,10,-0.199047,-320.916,110.942,0,0,0,100,0),
+(@PATH,11,0.073367,-274.516,110.929,0,0,0,100,0),
+(@PATH,12,17.7263,-263.467,110.943,0,0,0,100,0);
+
+-- Pathing for Blackrock Drake Entry: 8964
+SET @NPC := 3343;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-7502.985,`position_y`=-1091.508,`position_z`=286.4399 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,-7526.111,-1065.07,290.0508,0,0,0,100,0),
+(@PATH,2,-7528.773,-1060.98,289.8008,0,0,0,100,0),
+(@PATH,3,-7554.438,-1032.648,293.9675,0,0,0,100,0),
+(@PATH,4,-7569.052,-1024.164,297.7729,0,0,0,100,0),
+(@PATH,5,-7603.773,-1019.187,303.3568,0,0,0,100,0),
+(@PATH,6,-7625.236,-1030.118,300.6064,0,0,0,100,0),
+(@PATH,7,-7652.77,-1045.974,291.5509,0,0,0,100,0),
+(@PATH,8,-7670.932,-1065.009,280.1344,0,0,0,100,0),
+(@PATH,9,-7677.66,-1074.487,277.8844,0,0,0,100,0),
+(@PATH,10,-7685.643,-1097.263,280.412,0,0,0,100,0),
+(@PATH,11,-7684.969,-1144.9,293.829,0,0,0,100,0),
+(@PATH,12,-7666.268,-1177.758,297.051,0,0,0,100,0),
+(@PATH,13,-7643.656,-1196.774,297.273,0,0,0,100,0),
+(@PATH,14,-7634.542,-1201.614,295.5235,0,0,0,100,0),
+(@PATH,15,-7597.882,-1211.088,294.7454,0,0,0,100,0),
+(@PATH,16,-7560.959,-1205.237,290.3565,0,0,0,100,0),
+(@PATH,17,-7536.037,-1191.708,287.6343,0,0,0,100,0),
+(@PATH,18,-7519.03,-1173.085,287.1065,0,0,0,100,0),
+(@PATH,19,-7502.939,-1142.821,286.4399,0,0,0,100,0),
+(@PATH,20,-7499.304,-1120.659,286.4399,0,0,0,100,0),
+(@PATH,21,-7502.985,-1091.508,286.4399,0,0,0,100,0);
+
+-- Pathing for Blackrock Drake Entry: 8964
+SET @NPC := 3344;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=-7587.611,`position_y`=-1127.057,`position_z`=299.0391 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`) VALUES (@NPC,@PATH,1,0);
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,-7595.692,-1122.375,300.0919,0,0,0,100,0),
+(@PATH,2,-7602.509,-1119.911,298.7615,0,0,0,100,0),
+(@PATH,3,-7623.113,-1121.951,299.8724,0,0,0,100,0),
+(@PATH,4,-7624.854,-1116.178,298.9836,0,0,0,100,0),
+(@PATH,5,-7623.076,-1109.361,301.2891,0,0,0,100,0),
+(@PATH,6,-7621.203,-1101.338,301.6222,0,0,0,100,0),
+(@PATH,7,-7617.672,-1097.37,302.9557,0,0,0,100,0),
+(@PATH,8,-7612.521,-1091.614,305.2333,0,0,0,100,0),
+(@PATH,9,-7603.752,-1088.397,307.15,0,0,0,100,0),
+(@PATH,10,-7595.697,-1086.253,309.7056,0,0,0,100,0),
+(@PATH,11,-7584.765,-1084.863,313.5945,0,0,0,100,0),
+(@PATH,12,-7573.741,-1089.98,318.4,0,0,0,100,0),
+(@PATH,13,-7563.752,-1095.654,321.1225,0,0,0,100,0),
+(@PATH,14,-7561.293,-1111.069,323.0945,0,0,0,100,0),
+(@PATH,15,-7562.622,-1134.871,324.7891,0,0,0,100,0),
+(@PATH,16,-7575.259,-1146.927,321.928,0,0,0,100,0),
+(@PATH,17,-7587.246,-1150.965,322.5114,0,0,0,100,0),
+(@PATH,18,-7599.556,-1147.009,320.2891,0,0,0,100,0),
+(@PATH,19,-7609.301,-1143.611,316.2057,0,0,0,100,0),
+(@PATH,20,-7634.01,-1120.37,312.1778,0,0,0,100,0),
+(@PATH,21,-7622.606,-1101.056,311.3446,0,0,0,100,0),
+(@PATH,22,-7614.432,-1092.255,305.6779,0,0,0,100,0),
+(@PATH,23,-7582.061,-1084.941,298.7889,0,0,0,100,0),
+(@PATH,24,-7562.621,-1112.578,307.4555,0,0,0,100,0),
+(@PATH,25,-7567.333,-1126.35,304.3445,0,0,0,100,0),
+(@PATH,26,-7587.611,-1127.057,299.0391,0,0,0,100,0);
+
+-- Pathing for Scarshield Legionnaire Entry: 9097
+SET @NPC := @GUID+228;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=70.94958,`position_y`=-282.0711,`position_z`=60.60775 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,72.5072,-281.7826,60.62373,0,0,0,100,0),
+(@PATH,2,87.12473,-283.3365,60.60862,29000,0,@PATH+1,100,0),
+(@PATH,3,86.74077,-283.0492,60.61073,0,0,0,100,0),
+(@PATH,4,70.94958,-282.0711,60.60775,24000,0,@PATH+2,100,0);
+DELETE FROM `waypoint_scripts` WHERE `id` IN (@PATH+1,@PATH+2);
+INSERT INTO `waypoint_scripts` (`id`,`delay`,`command`,`datalong`,`datalong2`,`o`,`guid`) VALUES
+(@PATH+1,2,2,74,1,0,97),
+(@PATH+1,2,1,7,0,0,98),
+(@PATH+1,24,2,74,0,0,99),
+(@PATH+2,0,30,0,0,3.892084,100),
+(@PATH+2,7,1,69,1,0,101),
+(@PATH+2,16,1,0,1,0,102);
+
+-- Pathing for Scarshield Legionnaire Entry: 9097
+SET @NPC := @GUID+209;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=53.45955,`position_y`=-325.36,`position_z`=53.91605 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,41.51676,-327.2762,53.74633,0,0,0,100,0),
+(@PATH,2,34.57693,-329.2669,53.62961,0,0,0,100,0),
+(@PATH,3,22.06219,-329.2139,48.75629,0,0,0,100,0),
+(@PATH,4,18.71977,-332.48,48.72622,0,0,0,100,0),
+(@PATH,5,18.61024,-346.3583,48.6756,0,0,0,100,0),
+(@PATH,6,20.25173,-349.2039,48.67309,0,0,0,100,0),
+(@PATH,7,35.13033,-349.1511,48.67545,0,0,0,100,0),
+(@PATH,8,37.16372,-352.3886,48.67825,0,0,0,100,0),
+(@PATH,9,37.26665,-364.0914,48.65669,0,0,0,100,0),
+(@PATH,10,37.16372,-352.3886,48.67825,0,0,0,100,0),
+(@PATH,11,35.13033,-349.1511,48.67545,0,0,0,100,0),
+(@PATH,12,20.25173,-349.2039,48.67309,0,0,0,100,0),
+(@PATH,13,18.61024,-346.3583,48.6756,0,0,0,100,0),
+(@PATH,14,18.71977,-332.48,48.72622,0,0,0,100,0),
+(@PATH,15,22.06219,-329.2139,48.75629,0,0,0,100,0),
+(@PATH,16,34.57693,-329.2669,53.62961,0,0,0,100,0),
+(@PATH,17,41.51676,-327.2762,53.74633,0,0,0,100,0),
+(@PATH,18,53.45955,-325.36,53.91605,0,0,0,100,0);
+
+-- Pathing for Scarshield Legionnaire Entry: 9097
+SET @NPC := @GUID+229;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=81.97402,`position_y`=-288.0753,`position_z`=60.66125 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,88.13084,-288.4329,60.61533,0,0,0,100,0),
+(@PATH,2,93.48189,-291.8687,60.63227,0,0,0,100,0),
+(@PATH,3,95.94733,-296.9316,60.66517,0,0,0,100,0),
+(@PATH,4,95.94772,-309.7263,65.39042,0,0,0,100,0),
+(@PATH,5,94.99308,-314.9491,65.47927,0,0,0,100,0),
+(@PATH,6,87.00089,-316.9617,65.48379,0,0,0,100,0),
+(@PATH,7,71.71636,-319.5778,65.46734,0,0,0,100,0),
+(@PATH,8,65.58628,-320.8983,65.45923,0,0,0,100,0),
+(@PATH,9,64.69189,-327.0649,65.46348,0,0,0,100,0),
+(@PATH,10,64.73603,-340.4908,60.70201,0,0,0,100,0),
+(@PATH,11,66.16424,-345.6102,60.70203,0,0,0,100,0),
+(@PATH,12,71.37296,-346.4238,60.70203,0,0,0,100,0),
+(@PATH,13,75.15958,-346.2384,60.70203,0,0,0,100,0),
+(@PATH,14,83.80564,-346.3136,60.70203,0,0,0,100,0),
+(@PATH,15,91.50565,-346.1702,60.70203,0,0,0,100,0),
+(@PATH,16,94.48775,-344.4582,60.70203,0,0,0,100,0),
+(@PATH,17,95.49223,-340.7823,60.70203,0,0,0,100,0),
+(@PATH,18,95.32813,-327.5041,65.46348,0,0,0,100,0),
+(@PATH,19,94.68663,-322.0191,65.46594,0,0,0,100,0),
+(@PATH,20,89.48792,-319.0262,65.4938,0,0,0,100,0),
+(@PATH,21,80.78517,-319.4615,65.47144,0,0,0,100,0),
+(@PATH,22,70.61723,-318.8349,65.48348,0,0,0,100,0),
+(@PATH,23,65.92691,-314.6129,65.46348,0,0,0,100,0),
+(@PATH,24,64.53401,-310.319,65.46348,0,0,0,100,0),
+(@PATH,25,64.13761,-297.2044,60.74208,0,0,0,100,0),
+(@PATH,26,67.14284,-292.4547,60.63996,0,0,0,100,0),
+(@PATH,27,74.20583,-289.4101,60.64116,0,0,0,100,0),
+(@PATH,28,81.97402,-288.0753,60.66125,0,0,0,100,0);
+
+-- Pathing for Scarshield Legionnaire Entry: 9097
+SET @NPC := @GUID+230;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=83.98484,`position_y`=-287.0403,`position_z`=60.643 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,89.93808,-286.1351,60.59507,0,0,0,100,0),
+(@PATH,2,93.29991,-289.3597,60.59763,0,0,0,100,0),
+(@PATH,3,96.0648,-291.1504,60.62643,0,0,0,100,0),
+(@PATH,4,97.3805,-295.3065,60.67328,0,0,0,100,0),
+(@PATH,5,97.94749,-302.046,62.42866,0,0,0,100,0),
+(@PATH,6,97.94783,-313.342,65.46348,0,0,0,100,0),
+(@PATH,7,96.72861,-316.5773,65.48706,0,0,0,100,0),
+(@PATH,8,91.31343,-317.9382,65.49011,0,0,0,100,0),
+(@PATH,9,68.48672,-322.1597,65.45495,0,0,0,100,0),
+(@PATH,10,65.65896,-322.9286,65.45052,0,0,0,100,0),
+(@PATH,11,66.58692,-327.4106,65.46348,0,0,0,100,0),
+(@PATH,12,66.21835,-330.4742,64.56249,0,0,0,100,0),
+(@PATH,13,66.71193,-333.1539,63.52972,0,0,0,100,0),
+(@PATH,14,66.74886,-344.3894,60.70203,0,0,0,100,0),
+(@PATH,15,94.72881,-344.1098,60.70203,0,0,0,100,0),
+(@PATH,16,95.94814,-341.3136,60.70203,0,0,0,100,0),
+(@PATH,17,94.90443,-337.6124,61.81128,0,0,0,100,0),
+(@PATH,18,95.29044,-329.2947,65.01956,0,0,0,100,0),
+(@PATH,19,93.29169,-324.5692,65.46348,0,0,0,100,0),
+(@PATH,20,92.33022,-319.0261,65.49524,0,0,0,100,0),
+(@PATH,21,88.11071,-320.541,65.4697,0,0,0,100,0),
+(@PATH,22,77.12846,-321.647,65.46059,0,0,0,100,0),
+(@PATH,23,73.90438,-321.0413,65.46191,0,0,0,100,0),
+(@PATH,24,70.89841,-320.856,65.46152,0,0,0,100,0),
+(@PATH,25,67.89243,-320.6708,65.46112,0,0,0,100,0),
+(@PATH,26,62.8699,-314.552,65.46348,0,0,0,100,0),
+(@PATH,27,62.38148,-310.165,65.46348,0,0,0,100,0),
+(@PATH,28,62.16359,-298.0943,60.90481,0,0,0,100,0),
+(@PATH,29,62.07857,-295.2815,60.75649,0,0,0,100,0),
+(@PATH,30,66.51885,-289.6947,60.65805,0,0,0,100,0),
+(@PATH,31,71.19937,-288.5282,60.61031,0,0,0,100,0),
+(@PATH,32,76.71995,-286.1484,60.66695,0,0,0,100,0),
+(@PATH,33,83.98484,-287.0403,60.643,0,0,0,100,0);
+
+-- Pathing for Scarshield Spellbinder Entry: 9098
+SET @NPC := @GUID+252;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=36.89285,`position_y`=-331.2767,`position_z`=53.68202 WHERE `guid`=@NPC;
+DELETE FROM `creature_addon` WHERE `guid`=@NPC;
+INSERT INTO `creature_addon` (`guid`,`path_id`,`bytes2`,`mount`,`auras`) VALUES (@NPC,@PATH,1,0, '');
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,39.96936,-329.8007,53.7379,0,0,0,100,0),
+(@PATH,2,57.18673,-326.7872,53.91625,0,0,0,100,0),
+(@PATH,3,34.34272,-331.2659,53.48465,0,0,0,100,0),
+(@PATH,4,26.80801,-331.241,48.74844,0,0,0,100,0),
+(@PATH,5,23.99778,-331.2221,48.75055,0,0,0,100,0),
+(@PATH,6,18.19567,-331.1975,48.73712,0,0,0,100,0),
+(@PATH,7,18.45785,-335.4669,48.70008,0,0,0,100,0),
+(@PATH,8,20.61245,-337.6364,48.681,0,0,0,100,0),
+(@PATH,9,20.58323,-349.7892,48.67257,0,0,0,100,0),
+(@PATH,10,23.55131,-350.9213,48.67374,0,0,0,100,0),
+(@PATH,11,26.39461,-347.1821,48.68155,0,0,0,100,0),
+(@PATH,12,38.42376,-347.1394,48.67081,0,0,0,100,0),
+(@PATH,13,39.21199,-357.8676,48.65726,0,0,0,100,0),
+(@PATH,14,39.29136,-366.8922,48.65531,0,0,0,100,0),
+(@PATH,15,39.13438,-349.0444,48.67277,0,0,0,100,0),
+(@PATH,16,35.49154,-345.9659,48.6712,0,0,0,100,0),
+(@PATH,17,29.60406,-347.1707,48.68155,0,0,0,100,0),
+(@PATH,18,17.56905,-347.2134,48.6734,0,0,0,100,0),
+(@PATH,19,20.65288,-340.964,48.6903,0,0,0,100,0),
+(@PATH,20,20.74783,-328.9321,48.7581,0,0,0,100,0),
+(@PATH,21,24.81668,-329.3186,48.77163,0,0,0,100,0),
+(@PATH,22,28.94844,-331.2431,50.09388,0,0,0,100,0),
+(@PATH,23,31.78614,-331.2551,51.87762,0,0,0,100,0),
+(@PATH,24,34.34272,-331.2659,53.48465,0,0,0,100,0),
+(@PATH,25,36.89285,-331.2767,53.68202,0,0,0,100,0);
diff --git a/sql/updates/world/2011_12_17_00_world_gameobject.sql b/sql/updates/world/2011_12_17_00_world_gameobject.sql
new file mode 100644
index 00000000000..98752a1b7ec
--- /dev/null
+++ b/sql/updates/world/2011_12_17_00_world_gameobject.sql
@@ -0,0 +1,384 @@
+-- Add missing Go spawns for UBRS & LBRS
+SET @OGUID := 87602; -- 261 required
+DELETE FROM `gameobject` WHERE `map`=229 AND `id` IN (153464,175124,175194,175195,175196,175197,175198,175199,175200,175266,175267,175268,175269,175270,175271,175272,175706,175244,175187,175153,175705,175185,175186,164726,
+164726,175382,175385,175528,175529,175530,175531,175532,175533,175946,175947,175970,176447,176448,176449,176450,176451,176452,136950,136952,136955,176459,176460,176461,176462,176463,136922,136923,136925,136926,136927,
+136928,136929,136930,136931,136932,136933,136934,136935,136936,136937,136938,136939,136940,136941,136942,136943,136944,136945,136946,136947,136948,136949,136951,136954,136957,136959,136961,136962,136963,136964,153469,
+164725,175334,175571,175584,175588,175606,175607,175608,175609,175886,175949,175950,176089,176090,176425,176426,176427,176428,176429,176430,176431,176432,176433,176434,176435,176436,176437,176438,176439,176440,176441,
+176442,176443,176444,176445,176446,176454,176455,176456,176457,176458);
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@OGUID,175124,229,1,1,100.579681,-312.488953,91.4455,0.122172989,0,0,0,0,120,0,1),
+(@OGUID+1,175124,229,1,1,101.516693,-311.471344,91.4455,-1.58824873,0,0,0,0,120,0,1),
+(@OGUID+2,175124,229,1,1,102.414017,-304.376343,91.4466248,0.0174524616,0,0,0,0,120,0,1),
+(@OGUID+3,175124,229,1,1,104.212967,-289.411041,91.47319,1.50098288,0,0,0,0,120,0,1),
+(@OGUID+4,175124,229,1,1,104.316406,-302.841278,91.47408,3.07176614,0,0,0,0,120,0,1),
+(@OGUID+5,175124,229,1,1,104.403542,-299.438263,91.47574,0.6806767,0,0,0,0,120,0,1),
+(@OGUID+6,175124,229,1,1,104.601669,-287.9975,91.47882,-1.97221982,0,0,0,0,120,0,1),
+(@OGUID+7,175124,229,1,1,104.926949,-286.137817,91.48353,1.448622,0,0,0,0,120,0,1),
+(@OGUID+8,175124,229,1,1,105.029182,-300.911469,91.4845352,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+9,175124,229,1,1,106.199173,-299.793121,91.50144,-1.20427728,0,0,0,0,120,0,1),
+(@OGUID+10,175124,229,1,1,106.420288,-281.429016,91.50514,-0.593412,0,0,0,0,120,0,1),
+(@OGUID+11,175124,229,1,1,106.603729,-283.775574,91.5078,1.954769,0,0,0,0,120,0,1),
+(@OGUID+12,175124,229,1,1,107.189377,-287.659851,91.51627,0.7504908,0,0,0,0,120,0,1),
+(@OGUID+13,175124,229,1,1,107.418739,-282.511749,91.5196,-2.19911456,0,0,0,0,120,0,1),
+(@OGUID+14,175124,229,1,1,107.927856,-299.94812,91.52648,2.00712848,0,0,0,0,120,0,1),
+(@OGUID+15,175124,229,1,1,112.297363,-390.177521,110.862892,-0.122172989,0,0,0,0,120,0,1),
+(@OGUID+16,175124,229,1,1,113.017937,-451.803925,110.862892,2.82742977,0,0,0,0,120,0,1),
+(@OGUID+17,175124,229,1,1,113.929672,-389.215057,110.862892,-0.785396755,0,0,0,0,120,0,1),
+(@OGUID+18,175124,229,1,1,114.805519,-450.286,110.862892,0.767943859,0,0,0,0,120,0,1),
+(@OGUID+19,175124,229,1,1,115.410751,-389.923,110.862892,-0.8377574,0,0,0,0,120,0,1),
+(@OGUID+20,175124,229,1,1,115.812012,-453.056946,110.862892,-1.98967242,0,0,0,0,120,0,1),
+(@OGUID+21,175124,229,1,1,186.987213,-389.476227,110.862892,-1.53588951,0,0,0,0,120,0,1),
+(@OGUID+22,175124,229,1,1,187.74115,-387.874451,110.862892,1.134463,0,0,0,0,120,0,1),
+(@OGUID+23,175124,229,1,1,188.002533,-452.5383,110.862892,1.34390128,0,0,0,0,120,0,1),
+(@OGUID+24,175124,229,1,1,188.12558,-450.820068,110.862892,1.48352814,0,0,0,0,120,0,1),
+(@OGUID+25,175124,229,1,1,189.080276,-388.61087,110.862892,-0.296705216,0,0,0,0,120,0,1),
+(@OGUID+26,175124,229,1,1,189.834488,-451.310455,110.862892,-2.86233544,0,0,0,0,120,0,1),
+(@OGUID+27,175124,229,1,1,197.826462,-407.929718,110.885162,-2.16420579,0,0,0,0,120,0,1),
+(@OGUID+28,175124,229,1,1,197.889175,-409.4169,110.885162,-1.51843619,0,0,0,0,120,0,1),
+(@OGUID+29,175124,229,1,1,198.345856,-432.6916,110.885071,-2.0594883,0,0,0,0,120,0,1),
+(@OGUID+30,175124,229,1,1,199.2812,-431.4338,110.885071,-2.44346023,0,0,0,0,120,0,1),
+(@OGUID+31,175124,229,1,1,199.588242,-433.8074,110.885071,1.11700928,0,0,0,0,120,0,1),
+(@OGUID+32,175124,229,1,1,199.616272,-410.271881,110.885689,-2.932139,0,0,0,0,120,0,1),
+(@OGUID+33,175124,229,1,1,200.124588,-407.845734,110.885162,2.879789,0,0,0,0,120,0,1),
+(@OGUID+34,175124,229,1,1,200.719711,-431.708069,110.885071,1.7802341,0,0,0,0,120,0,1),
+(@OGUID+35,175124,229,1,1,200.743408,-409.405762,110.885162,-1.37880921,0,0,0,0,120,0,1),
+(@OGUID+36,175124,229,1,1,201.846771,-432.208649,110.885483,1.448622,0,0,0,0,120,0,1),
+(@OGUID+37,175124,229,1,1,202.572159,-392.328,111.153641,-1.36135614,0,0,0,0,120,0,1),
+(@OGUID+38,175124,229,1,1,202.891327,-394.92514,111.134247,-2.80997539,0,0,0,0,120,0,1),
+(@OGUID+39,175124,229,1,1,203.082092,-401.453033,111.08667,-1.06464958,0,0,0,0,120,0,1),
+(@OGUID+40,175124,229,1,1,203.280655,-398.871735,111.104973,2.86233544,0,0,0,0,120,0,1),
+(@OGUID+41,175124,229,1,1,203.856339,-403.369232,111.071358,-1.15191638,0,0,0,0,120,0,1),
+(@OGUID+42,175124,229,1,1,204.114517,-393.5981,111.141563,-0.6457717,0,0,0,0,120,0,1),
+(@OGUID+43,175124,229,1,1,204.389526,-395.494537,111.127327,-1.2915417,0,0,0,0,120,0,1),
+(@OGUID+44,175124,229,1,1,204.402267,-400.3069,111.092491,-2.19911456,0,0,0,0,120,0,1),
+(@OGUID+45,175124,229,1,1,205.198654,-401.573273,111.081833,0.261798173,0,0,0,0,120,0,1),
+(@OGUID+46,175124,229,1,1,206.9045,-419.7901,110.925056,-0.7504908,0,0,0,0,120,0,1),
+(@OGUID+47,175124,229,1,1,207.266647,-434.7158,110.886642,0.226892471,0,0,0,0,120,0,1),
+(@OGUID+48,175124,229,1,1,207.935486,-420.0201,110.930283,-0.174532115,0,0,0,0,120,0,1),
+(@OGUID+49,175124,229,1,1,208.006454,-422.068726,110.929123,-1.51843619,0,0,0,0,120,0,1),
+(@OGUID+50,175124,229,1,1,208.166092,-418.3611,110.932716,2.21656513,0,0,0,0,120,0,1),
+(@OGUID+51,175124,229,1,1,208.798172,-433.633331,110.888489,-2.82742977,0,0,0,0,120,0,1),
+(@OGUID+52,175124,229,1,1,209.071991,-435.188141,110.884933,-2.94959545,0,0,0,0,120,0,1),
+(@OGUID+53,175124,229,1,1,209.28624,-391.269562,111.14872,-2.94959545,0,0,0,0,120,0,1),
+(@OGUID+54,175124,229,1,1,209.562531,-419.839661,110.938927,-0.5410506,0,0,0,0,120,0,1),
+(@OGUID+55,175124,229,1,1,210.485046,-393.288025,111.131866,-0.122172989,0,0,0,0,120,0,1),
+(@OGUID+56,175124,229,1,1,210.653778,-391.8297,111.142113,1.91986156,0,0,0,0,120,0,1),
+(@OGUID+57,175124,229,1,1,211.61734,-434.677,110.887962,-1.55334139,0,0,0,0,120,0,1),
+(@OGUID+58,175124,229,1,1,211.90686,-420.1357,110.945183,1.93731225,0,0,0,0,120,0,1),
+(@OGUID+59,175124,229,1,1,212.066559,-392.1727,111.136993,-0.5585039,0,0,0,0,120,0,1),
+(@OGUID+60,175124,229,1,1,212.458679,-418.521362,110.9529,2.98449826,0,0,0,0,120,0,1),
+(@OGUID+61,175124,229,1,1,212.63623,-432.306061,110.89183,-0.174532115,0,0,0,0,120,0,1),
+(@OGUID+62,175124,229,1,1,213.310959,-410.503100,110.962784,2.146753,0,0,0,0,120,0,1),
+(@OGUID+63,175124,229,1,1,213.576500,-419.532900,110.949500,0.628317,0,0,0,0,120,0,1),
+(@OGUID+64,175124,229,1,1,214.320190,-408.951233,110.967888,2.967041,0,0,0,0,120,0,1),
+(@OGUID+65,175124,229,1,1,217.875015,-392.086517,111.126740,0.907570,0,0,0,0,120,0,1),
+(@OGUID+66,175124,229,1,1,218.954147,-392.578674,111.121162,1.919862,0,0,0,0,120,0,1),
+(@OGUID+67,175124,229,1,1,219.678818,-393.405100,111.113823,-1.989672,0,0,0,0,120,0,1),
+(@OGUID+68,175124,229,1,1,219.995500,-399.617200,111.068283,-2.617989,0,0,0,0,120,0,1),
+(@OGUID+69,175124,229,1,1,220.161682,-421.224945,110.948463,-1.762782,0,0,0,0,120,0,1),
+(@OGUID+70,175124,229,1,1,220.172836,-391.630066,111.125732,1.361356,0,0,0,0,120,0,1),
+(@OGUID+71,175124,229,1,1,220.181274,-401.405100,111.055000,-1.989672,0,0,0,0,120,0,1),
+(@OGUID+72,175124,229,1,1,220.601800,-418.446900,110.961227,-1.221729,0,0,0,0,120,0,1),
+(@OGUID+73,175124,229,1,1,220.823685,-398.356600,111.075851,1.989672,0,0,0,0,120,0,1),
+(@OGUID+74,175124,229,1,1,220.835770,-393.648834,111.109894,-1.972220,0,0,0,0,120,0,1),
+(@OGUID+75,175124,229,1,1,220.869781,-411.346252,110.993027,-2.478367,0,0,0,0,120,0,1),
+(@OGUID+76,175124,229,1,1,221.281387,-400.066300,111.062630,0.977383,0,0,0,0,120,0,1),
+(@OGUID+77,175124,229,1,1,221.347992,-409.122284,111.003387,-2.076939,0,0,0,0,120,0,1),
+(@OGUID+78,175124,229,1,1,221.701370,-420.444366,110.953438,1.640607,0,0,0,0,120,0,1),
+(@OGUID+79,175124,229,1,1,222.093460,-432.249939,110.901382,0.000000,0,0,0,0,120,0,1),
+(@OGUID+80,175124,229,1,1,222.151962,-411.776367,110.992393,-3.071766,0,0,0,0,120,0,1),
+(@OGUID+81,175124,229,1,1,222.218918,-428.907776,110.916351,2.792518,0,0,0,0,120,0,1),
+(@OGUID+82,175124,229,1,1,222.736313,-410.476624,110.998500,-1.204277,0,0,0,0,120,0,1),
+(@OGUID+83,175124,229,1,1,222.815536,-430.970551,110.907448,-0.261798,0,0,0,0,120,0,1),
+(@OGUID+84,175124,229,1,1,223.579010,-419.323151,110.959229,-1.884953,0,0,0,0,120,0,1),
+(@OGUID+85,175124,229,1,1,223.816528,-429.410300,110.914421,-0.174532,0,0,0,0,120,0,1),
+(@OGUID+86,175124,229,1,1,223.977676,-432.850037,110.899147,1.884953,0,0,0,0,120,0,1),
+(@OGUID+87,175124,229,1,1,224.212540,-412.156647,110.991089,1.588249,0,0,0,0,120,0,1),
+(@OGUID+88,175124,229,1,1,48.812670,-337.076050,91.530170,2.268925,0,0,0,0,120,0,1),
+(@OGUID+89,175124,229,1,1,50.171127,-316.651550,91.530350,-2.426003,0,0,0,0,120,0,1),
+(@OGUID+90,175124,229,1,1,51.266464,-338.088400,91.541910,-1.989672,0,0,0,0,120,0,1),
+(@OGUID+91,175124,229,1,1,51.575382,-315.041870,91.522530,2.146753,0,0,0,0,120,0,1),
+(@OGUID+92,175124,229,1,1,51.863476,-316.613831,91.520930,-0.593412,0,0,0,0,120,0,1),
+(@OGUID+93,175124,229,1,1,54.265644,-255.434738,96.858940,1.343901,0,0,0,0,120,0,1),
+(@OGUID+94,175124,229,1,1,54.572220,-336.735138,91.529305,-1.134463,0,0,0,0,120,0,1),
+(@OGUID+95,175124,229,1,1,55.353077,-249.984161,97.048740,-2.652894,0,0,0,0,120,0,1),
+(@OGUID+96,175124,229,1,1,55.441975,-254.350900,97.197754,0.541051,0,0,0,0,120,0,1),
+(@OGUID+97,175124,229,1,1,56.761517,-332.325000,91.465240,-1.064650,0,0,0,0,120,0,1),
+(@OGUID+98,175124,229,1,1,56.851460,-253.342600,96.962560,-0.087266,0,0,0,0,120,0,1),
+(@OGUID+99,175124,229,1,1,56.876007,-255.377335,96.968940,0.261798,0,0,0,0,120,0,1),
+(@OGUID+100,175124,229,1,1,57.859043,-336.093262,91.523320,-2.234018,0,0,0,0,120,0,1),
+(@OGUID+101,175124,229,1,1,57.860306,-256.662100,96.739450,-1.012289,0,0,0,0,120,0,1),
+(@OGUID+102,175124,229,1,1,58.117460,-253.946426,96.880950,0.506145,0,0,0,0,120,0,1),
+(@OGUID+103,175124,229,1,1,58.817844,-334.106964,91.504810,0.977383,0,0,0,0,120,0,1),
+(@OGUID+104,175124,229,1,1,59.025590,-271.140137,93.636284,-2.495818,0,0,0,0,120,0,1),
+(@OGUID+105,175124,229,1,1,59.168900,-255.102982,96.815750,1.082103,0,0,0,0,120,0,1),
+(@OGUID+106,175124,229,1,1,59.192165,-317.294067,91.480150,-0.191985,0,0,0,0,120,0,1),
+(@OGUID+107,175124,229,1,1,59.330967,-332.230164,91.472916,-1.640610,0,0,0,0,120,0,1),
+(@OGUID+108,175124,229,1,1,59.419060,-337.406500,91.535560,-0.471239,0,0,0,0,120,0,1),
+(@OGUID+109,175124,229,1,1,60.185110,-270.196200,93.681820,-2.268925,0,0,0,0,120,0,1),
+(@OGUID+110,175124,229,1,1,60.351400,-312.296539,91.522070,1.134463,0,0,0,0,120,0,1),
+(@OGUID+111,175124,229,1,1,60.664970,-268.136017,93.601850,2.356195,0,0,0,0,120,0,1),
+(@OGUID+112,175124,229,1,1,61.012710,-315.652800,91.484780,0.733038,0,0,0,0,120,0,1),
+(@OGUID+113,175124,229,1,1,61.056700,-313.921875,91.505030,-0.680679,0,0,0,0,120,0,1),
+(@OGUID+114,175124,229,1,1,61.321583,-272.012665,93.600870,-1.151916,0,0,0,0,120,0,1),
+(@OGUID+115,175124,229,1,1,62.495476,-334.331300,91.506905,-0.349065,0,0,0,0,120,0,1),
+(@OGUID+116,175124,229,1,1,63.307910,-317.114000,91.471550,-3.089183,0,0,0,0,120,0,1),
+(@OGUID+117,175124,229,1,1,63.571682,-336.638200,91.528400,0.069812,0,0,0,0,120,0,1),
+(@OGUID+118,175124,229,1,1,64.204040,-268.474300,93.245410,-1.570796,0,0,0,0,120,0,1),
+(@OGUID+119,175124,229,1,1,64.925964,-317.059448,91.461044,1.780234,0,0,0,0,120,0,1),
+(@OGUID+120,175124,229,1,1,65.296530,-267.929600,93.076380,0.349065,0,0,0,0,120,0,1),
+(@OGUID+121,175124,229,1,1,65.583550,-305.104828,91.485280,1.099556,0,0,0,0,120,0,1),
+(@OGUID+122,175124,229,1,1,65.987790,-303.633759,91.469400,-2.617989,0,0,0,0,120,0,1),
+(@OGUID+123,175124,229,1,1,66.801750,-302.481100,91.451454,3.141593,0,0,0,0,120,0,1),
+(@OGUID+124,175124,229,1,1,68.121820,-302.416382,91.438910,3.124123,0,0,0,0,120,0,1),
+(@OGUID+125,175124,229,1,1,68.251770,-314.874634,91.433460,1.361356,0,0,0,0,120,0,1),
+(@OGUID+126,175124,229,1,1,68.728424,-307.073029,91.450460,0.994837,0,0,0,0,120,0,1),
+(@OGUID+127,175124,229,1,1,69.459880,-303.626923,91.437965,-1.396262,0,0,0,0,120,0,1),
+(@OGUID+128,175124,229,1,1,69.691370,-332.161224,91.486680,1.134463,0,0,0,0,120,0,1),
+(@OGUID+129,175124,229,1,1,69.930570,-326.639800,91.458800,2.897245,0,0,0,0,120,0,1),
+(@OGUID+130,175124,229,1,1,69.991165,-329.339233,91.465836,-0.401425,0,0,0,0,120,0,1),
+(@OGUID+131,175124,229,1,1,70.507195,-334.149000,91.505200,0.610864,0,0,0,0,120,0,1),
+(@OGUID+132,175124,229,1,1,70.929120,-304.969635,91.431526,3.036838,0,0,0,0,120,0,1),
+(@OGUID+133,175124,229,1,1,71.711500,-306.066100,91.418205,-1.518436,0,0,0,0,120,0,1),
+(@OGUID+134,175124,229,1,1,71.794900,-278.164948,92.456700,2.234018,0,0,0,0,120,0,1),
+(@OGUID+135,175124,229,1,1,72.002580,-328.391968,91.461020,-1.431168,0,0,0,0,120,0,1),
+(@OGUID+136,175124,229,1,1,72.026024,-331.224518,91.472250,-2.687807,0,0,0,0,120,0,1),
+(@OGUID+137,175124,229,1,1,72.053100,-325.809235,91.454160,1.431168,0,0,0,0,120,0,1),
+(@OGUID+138,175124,229,1,1,72.068990,-276.632355,92.298294,2.617989,0,0,0,0,120,0,1),
+(@OGUID+139,175124,229,1,1,72.141040,-285.905670,91.945180,-1.012289,0,0,0,0,120,0,1),
+(@OGUID+140,175124,229,1,1,73.133210,-306.736481,91.412690,-0.645772,0,0,0,0,120,0,1),
+(@OGUID+141,175124,229,1,1,73.545160,-324.155731,91.448090,0.453785,0,0,0,0,120,0,1),
+(@OGUID+142,175124,229,1,1,74.038910,-287.330600,91.448830,-1.012289,0,0,0,0,120,0,1),
+(@OGUID+143,175124,229,1,1,74.100430,-291.836700,91.442010,-0.401425,0,0,0,0,120,0,1),
+(@OGUID+144,175124,229,1,1,74.206830,-273.590729,91.642830,-1.396262,0,0,0,0,120,0,1),
+(@OGUID+145,175124,229,1,1,74.449070,-307.402924,91.414390,-0.733038,0,0,0,0,120,0,1),
+(@OGUID+146,175124,229,1,1,74.752180,-275.849121,91.650276,0.959930,0,0,0,0,120,0,1),
+(@OGUID+147,175124,229,1,1,75.177895,-292.906250,91.444630,1.989672,0,0,0,0,120,0,1),
+(@OGUID+148,175124,229,1,1,76.242165,-277.381100,91.473785,-0.785397,0,0,0,0,120,0,1),
+(@OGUID+149,175124,229,1,1,76.649890,-263.575470,91.480260,0.767944,0,0,0,0,120,0,1),
+(@OGUID+150,175124,229,1,1,76.864716,-275.632080,91.477770,2.321287,0,0,0,0,120,0,1),
+(@OGUID+151,175124,229,1,1,77.275060,-262.142944,91.479930,-1.256636,0,0,0,0,120,0,1),
+(@OGUID+152,175124,229,1,1,77.482170,-292.279968,91.447014,-0.087266,0,0,0,0,120,0,1),
+(@OGUID+153,175124,229,1,1,77.701280,-295.117300,91.443660,-1.117009,0,0,0,0,120,0,1),
+(@OGUID+154,175124,229,1,1,78.590004,-266.496338,91.474560,2.007128,0,0,0,0,120,0,1),
+(@OGUID+155,175124,229,1,1,79.001236,-331.653259,91.471030,-2.338740,0,0,0,0,120,0,1),
+(@OGUID+156,175124,229,1,1,79.072030,-328.432700,91.452940,-0.541051,0,0,0,0,120,0,1),
+(@OGUID+157,175124,229,1,1,79.206190,-262.497070,91.475750,-2.129301,0,0,0,0,120,0,1),
+(@OGUID+158,175124,229,1,1,79.568920,-291.473877,91.449265,-0.174532,0,0,0,0,120,0,1),
+(@OGUID+159,175124,229,1,1,79.786570,-325.953278,91.445595,1.605702,0,0,0,0,120,0,1),
+(@OGUID+160,175124,229,1,1,80.484150,-316.636383,91.437960,-0.855211,0,0,0,0,120,0,1),
+(@OGUID+161,175124,229,1,1,80.788110,-253.589417,91.475460,-2.146753,0,0,0,0,120,0,1),
+(@OGUID+162,175124,229,1,1,80.916214,-328.544200,91.451100,-2.094393,0,0,0,0,120,0,1),
+(@OGUID+163,175124,229,1,1,81.006350,-332.454468,91.481350,-2.513274,0,0,0,0,120,0,1),
+(@OGUID+164,175124,229,1,1,81.010410,-264.958038,91.470480,2.757613,0,0,0,0,120,0,1),
+(@OGUID+165,175124,229,1,1,81.071785,-330.128571,91.455090,-1.029743,0,0,0,0,120,0,1),
+(@OGUID+166,175124,229,1,1,81.765560,-326.139557,91.445510,2.460913,0,0,0,0,120,0,1),
+(@OGUID+167,175124,229,1,1,81.817490,-317.400055,91.439900,0.174532,0,0,0,0,120,0,1),
+(@OGUID+168,175124,229,1,1,81.974480,-335.983826,91.522300,-1.500983,0,0,0,0,120,0,1),
+(@OGUID+169,175124,229,1,1,82.075060,-251.810257,91.472730,-1.692969,0,0,0,0,120,0,1),
+(@OGUID+170,175124,229,1,1,82.531170,-315.925079,91.436134,1.710422,0,0,0,0,120,0,1),
+(@OGUID+171,175124,229,1,1,82.764340,-267.748474,91.465096,-3.019413,0,0,0,0,120,0,1),
+(@OGUID+172,175124,229,1,1,82.941520,-330.608337,91.454190,0.698132,0,0,0,0,120,0,1),
+(@OGUID+173,175124,229,1,1,82.960050,-249.989090,91.470880,-1.640610,0,0,0,0,120,0,1),
+(@OGUID+174,175124,229,1,1,83.030556,-333.102661,91.489250,-0.209439,0,0,0,0,120,0,1),
+(@OGUID+175,175124,229,1,1,83.216140,-327.689700,91.446200,-0.296705,0,0,0,0,120,0,1),
+(@OGUID+176,175124,229,1,1,83.653244,-252.415115,91.469410,1.954769,0,0,0,0,120,0,1),
+(@OGUID+177,175124,229,1,1,83.950905,-325.865200,91.445510,-2.967041,0,0,0,0,120,0,1),
+(@OGUID+178,175124,229,1,1,83.954080,-315.109400,91.434060,-0.541051,0,0,0,0,120,0,1),
+(@OGUID+179,175124,229,1,1,84.112040,-268.795441,91.461670,-2.879789,0,0,0,0,120,0,1),
+(@OGUID+180,175124,229,1,1,84.506134,-248.377167,91.467630,1.780234,0,0,0,0,120,0,1),
+(@OGUID+181,175124,229,1,1,84.657295,-301.760900,91.443214,0.157079,0,0,0,0,120,0,1),
+(@OGUID+182,175124,229,1,1,85.563520,-293.522736,91.447860,1.308995,0,0,0,0,120,0,1),
+(@OGUID+183,175124,229,1,1,85.667694,-314.023560,91.436035,-2.076939,0,0,0,0,120,0,1),
+(@OGUID+184,175124,229,1,1,85.834040,-295.413666,91.447740,2.775069,0,0,0,0,120,0,1),
+(@OGUID+185,175124,229,1,1,85.975090,-250.809708,91.464530,-2.932139,0,0,0,0,120,0,1),
+(@OGUID+186,175124,229,1,1,86.112880,-302.506317,91.443740,0.767944,0,0,0,0,120,0,1),
+(@OGUID+187,175124,229,1,1,86.367140,-246.965225,91.463715,1.815142,0,0,0,0,120,0,1),
+(@OGUID+188,175124,229,1,1,87.226135,-252.472137,91.461900,-0.942477,0,0,0,0,120,0,1),
+(@OGUID+189,175124,229,1,1,87.281105,-254.392151,91.461790,0.034906,0,0,0,0,120,0,1),
+(@OGUID+190,175124,229,1,1,87.410990,-278.121460,91.453200,-2.565632,0,0,0,0,120,0,1),
+(@OGUID+191,175124,229,1,1,87.812740,-314.716200,91.444310,3.019413,0,0,0,0,120,0,1),
+(@OGUID+192,175124,229,1,1,87.861210,-303.151947,91.444374,-1.797689,0,0,0,0,120,0,1),
+(@OGUID+193,175124,229,1,1,87.923130,-280.001373,91.447140,-2.705255,0,0,0,0,120,0,1),
+(@OGUID+194,175124,229,1,1,88.098390,-333.163361,91.484410,1.431168,0,0,0,0,120,0,1),
+(@OGUID+195,175124,229,1,1,88.343250,-248.339035,91.459560,2.286379,0,0,0,0,120,0,1),
+(@OGUID+196,175124,229,1,1,88.691250,-301.069800,91.444680,0.366518,0,0,0,0,120,0,1),
+(@OGUID+197,175124,229,1,1,88.808876,-316.133700,91.444670,-0.698132,0,0,0,0,120,0,1),
+(@OGUID+198,175124,229,1,1,89.004050,-251.208176,91.458170,2.949595,0,0,0,0,120,0,1),
+(@OGUID+199,175124,229,1,1,89.099160,-290.132965,91.446330,1.535890,0,0,0,0,120,0,1),
+(@OGUID+200,175124,229,1,1,89.926796,-301.831146,91.445114,0.541051,0,0,0,0,120,0,1),
+(@OGUID+201,175124,229,1,1,89.958930,-318.158875,91.444320,-0.872664,0,0,0,0,120,0,1),
+(@OGUID+202,175124,229,1,1,90.307120,-332.646332,91.473750,2.617989,0,0,0,0,120,0,1),
+(@OGUID+203,175124,229,1,1,90.575424,-320.018616,91.445500,1.204277,0,0,0,0,120,0,1),
+(@OGUID+204,175124,229,1,1,91.830710,-291.348500,91.445500,-3.089183,0,0,0,0,120,0,1),
+(@OGUID+205,175124,229,1,1,91.860870,-301.934900,91.445500,0.733038,0,0,0,0,120,0,1),
+(@OGUID+206,175124,229,1,1,92.115500,-334.860800,91.506560,0.453785,0,0,0,0,120,0,1),
+(@OGUID+207,175124,229,1,1,92.125114,-279.851044,91.445500,-1.675514,0,0,0,0,120,0,1),
+(@OGUID+208,175124,229,1,1,92.600150,-288.176178,91.445500,0.436332,0,0,0,0,120,0,1),
+(@OGUID+209,175124,229,1,1,92.644230,-304.446533,91.445500,2.443460,0,0,0,0,120,0,1),
+(@OGUID+210,175124,229,1,1,93.673340,-290.120483,91.445500,-0.750491,0,0,0,0,120,0,1),
+(@OGUID+211,175124,229,1,1,93.811460,-305.536255,91.445500,1.029743,0,0,0,0,120,0,1),
+(@OGUID+212,175124,229,1,1,93.890366,-288.281036,91.445500,2.356195,0,0,0,0,120,0,1),
+(@OGUID+213,175124,229,1,1,94.564140,-281.093300,91.445500,2.513274,0,0,0,0,120,0,1),
+(@OGUID+214,175124,229,1,1,94.917090,-288.643616,91.445500,2.967041,0,0,0,0,120,0,1),
+(@OGUID+215,175124,229,1,1,95.461464,-313.583679,91.445500,0.855211,0,0,0,0,120,0,1),
+(@OGUID+216,175124,229,1,1,96.062840,-287.470337,91.445500,1.710422,0,0,0,0,120,0,1),
+(@OGUID+217,175124,229,1,1,96.341835,-280.517578,91.445500,0.139624,0,0,0,0,120,0,1),
+(@OGUID+218,175124,229,1,1,97.125830,-281.948944,91.445500,-1.274091,0,0,0,0,120,0,1),
+(@OGUID+219,175124,229,1,1,97.196310,-310.890533,91.445500,-3.036838,0,0,0,0,120,0,1),
+(@OGUID+220,175124,229,1,1,97.340485,-313.429962,91.445500,2.670348,0,0,0,0,120,0,1),
+(@OGUID+221,175124,229,1,1,98.855940,-313.048950,91.445500,-1.012289,0,0,0,0,120,0,1),
+(@OGUID+222,175194,229,1,1,192.740372,-258.394226,76.86026,0,0,0,0,0,120,0,0),
+(@OGUID+223,175195,229,1,1,124.778954,-298.037384,70.85264,0.785396755,0,0,0,0,120,0,0),
+(@OGUID+224,175196,229,1,1,228.802658,-301.542084,76.88119,-1.57079577,0,0,0,0,120,0,0),
+(@OGUID+225,175197,229,1,1,125.357704,-340.4654,70.875206,2.356195,0,0,0,0,120,0,0),
+(@OGUID+226,175198,229,1,1,215.157425,-334.733,76.81243,-2.356195,0,0,0,0,120,0,0),
+(@OGUID+227,175199,229,1,1,155.33374,-353.044769,70.83366,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+228,175200,229,1,1,155.320572,-286.073547,70.87632,0,0,0,0,0,120,0,0),
+(@OGUID+229,175266,229,1,1,144.3746,-240.826111,91.471344,0,0,0,0,0,120,0,0),
+(@OGUID+230,175267,229,1,1,126.354256,-240.769867,91.47007,0,0,0,0,0,120,0,0),
+(@OGUID+231,175268,229,1,1,162.465958,-240.764633,91.46876,0,0,0,0,0,120,0,0),
+(@OGUID+232,175269,229,1,1,126.295486,-258.731628,91.47007,0,0,0,0,0,120,0,0),
+(@OGUID+233,175270,229,1,1,162.443268,-258.9044,91.47007,0,0,0,0,0,120,0,0),
+(@OGUID+234,175271,229,1,1,126.4017,-276.79007,91.47007,0,0,0,0,0,120,0,0),
+(@OGUID+235,175272,229,1,1,162.400742,-276.823822,91.47007,0,0,0,0,0,120,0,0),
+(@OGUID+236,175706,229,1,1,144.445023,-280.941467,91.54761,1.58824873,0,0,0,0,120,0,0),
+(@OGUID+237,175244,229,1,1,216.44342,-286.135376,76.94057,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+238,175187,229,1,1,144.369614,-299.198425,91.47007,0,0,0,0,0,120,0,1),
+(@OGUID+239,175153,229,1,1,113.751076,-258.944977,91.56026,0,0,0,0,0,120,0,1),
+(@OGUID+240,175705,229,1,1,175.127151,-258.944946,91.56026,0,0,0,0,0,120,0,1),
+(@OGUID+241,175185,229,1,1,194.234833,-420.225037,110.76078,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+242,175186,229,1,1,92.959465,-435.590027,110.954376,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+243,164726,229,1,1,108.036087,-420.3313,110.954376,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+244,175382,229,1,1,67.1283,-297.421021,91.42554,-0.0349062532,0,0,0,0,120,0,1),
+(@OGUID+245,175385,229,1,1,65.41786,-280.4161,94.04653,0.06981169,0,0,0,0,120,0,1),
+(@OGUID+246,175528,229,1,1,100.25692,-313.139862,66.5452652,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+247,175529,229,1,1,100.25692,-324.880249,66.5452652,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+248,175530,229,1,1,110.21476,-324.880249,68.03545,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+249,175531,229,1,1,110.21476,-313.139862,68.03545,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+250,175532,229,1,1,120.461563,-324.880249,73.53309,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+251,175533,229,1,1,120.461563,-313.139862,73.53309,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+252,175946,229,1,1,45.1932869,-259.712219,106.532768,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+253,175947,229,1,1,45.19329,-312.5203,106.532768,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+254,175970,229,1,1,147.227539,-240.435669,112.20472,-1.64933348,0,0,0,0,120,0,1),
+(@OGUID+255,176447,229,1,1,35.2498856,-505.634277,110.91436,-3.13874269,0,0,0,0,120,0,1),
+(@OGUID+256,176448,229,1,1,31.2830067,-505.634277,110.91436,1.57142222,0,0,0,0,120,0,1),
+(@OGUID+257,176449,229,1,1,27.4453468,-505.634277,110.91436,-0.261172324,0,0,0,0,120,0,1),
+(@OGUID+258,176450,229,1,1,21.5667877,-506.580719,110.91436,-1.57016766,0,0,0,0,120,0,1),
+(@OGUID+259,176451,229,1,1,18.0824432,-505.634277,110.91436,-3.13874269,0,0,0,0,120,0,1),
+(@OGUID+260,176452,229,1,1,24.5420456,-504.7355,110.91436,-2.35556316,0,0,0,0,120,0,1),
+(@OGUID+261,136950,229,1,1,72.83732,-265.629639,60.73645,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+262,136952,229,1,1,69.97309,-329.867767,55.8721352,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+263,136955,229,1,1,56.3640633,-306.158142,54.01571,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+264,176459,229,1,1,68.64788,-270.903229,60.73748,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+265,176460,229,1,1,70.54355,-257.169067,60.74014,3.124123,0,0,0,0,120,0,1),
+(@OGUID+266,176461,229,1,1,69.3254242,-265.102051,60.60442,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+267,176462,229,1,1,90.48029,-283.217,60.70017,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+268,176463,229,1,1,91.63333,-262.053284,60.70017,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+269,136922,229,1,1,88.21516,-415.1,110.95723,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+270,136923,229,1,1,87.4498444,-468.453552,116.886841,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+271,136925,229,1,1,40.7229156,-586.7098,30.6816959,1.74532676,0,0,0,0,120,0,1),
+(@OGUID+272,136926,229,1,1,43.3148575,-572.47644,30.6816959,1.74532676,0,0,0,0,120,0,1),
+(@OGUID+273,136927,229,1,1,4.75705242,-567.072754,29.2221813,1.74532676,0,0,0,0,120,0,1),
+(@OGUID+274,136928,229,1,1,8.392041,-583.677,29.2221813,1.74532676,0,0,0,0,120,0,1),
+(@OGUID+275,136929,229,1,1,152.587021,-396.408356,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+276,136930,229,1,1,147.161285,-389.9539,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+277,136931,229,1,1,149.6765,-386.148346,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+278,136932,229,1,1,157.7783,-389.9539,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+279,136933,229,1,1,150.609192,-396.408356,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+280,136934,229,1,1,155.816116,-390.034546,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+281,136935,229,1,1,145.1764,-390.034546,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+282,136936,229,1,1,153.360245,-386.1687,121.963966,-1.57079577,0,0,0,0,120,0,1),
+(@OGUID+283,136937,229,1,1,149.569,-454.6866,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+284,136938,229,1,1,153.252762,-454.70694,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+285,136939,229,1,1,157.752838,-450.1581,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+286,136940,229,1,1,155.76796,-450.238739,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+287,136941,229,1,1,152.320068,-444.3045,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+288,136942,229,1,1,150.342224,-444.3045,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+289,136943,229,1,1,147.113144,-450.1581,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+290,136944,229,1,1,145.15094,-450.238739,121.963966,1.57079577,0,0,0,0,120,0,1),
+(@OGUID+291,136945,229,1,1,-174.133926,-342.7732,64.39388,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+292,136946,229,1,1,-172.351959,-462.842072,87.39826,-1.60570168,0,0,0,0,120,0,1),
+(@OGUID+293,136947,229,1,1,16.9936657,-253.820969,65.44975,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+294,136948,229,1,1,8.170414,-268.9804,65.44975,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+295,136949,229,1,1,51.2451057,-274.132843,65.44975,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+296,136951,229,1,1,68.8801651,-283.793518,60.73645,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+297,136954,229,1,1,16.1673641,-280.865326,9.61726,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+298,136957,229,1,1,117.4544,-254.2912,91.57107,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+299,136959,229,1,1,125.65564,-280.80777,91.57107,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+300,136961,229,1,1,46.4689255,-309.64917,91.57107,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+301,136962,229,1,1,106.176666,-265.9525,91.57107,-1.46607578,0,0,0,0,120,0,1),
+(@OGUID+302,136963,229,1,1,107.690056,-253.095154,91.57107,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+303,136964,229,1,1,82.58793,-364.5863,116.859177,2.72271276,0,0,0,0,120,0,1),
+(@OGUID+304,153464,229,1,1,-36.1175957,-583.8276,-18.8201447,1.97221982,0,0,0,0,120,0,1),
+(@OGUID+305,153469,229,1,1,-73.99849,-453.3353,-18.9350014,-3.08918333,0,0,0,0,120,0,1),
+(@OGUID+306,153469,229,1,1,-84.26773,-350.10376,70.9524155,1.91986156,0,0,0,0,120,0,1),
+(@OGUID+307,153469,229,1,1,86.85506,-587.50116,30.6085377,2.63544416,0,0,0,0,120,0,1),
+(@OGUID+308,164725,229,1,1,126.878883,-319.108551,70.93496,3.14159274,0,0,0,0,120,0,0),
+(@OGUID+309,175334,229,1,1,33.71665,-466.067383,-18.46511,-1.53588951,0,0,0,0,120,0,1),
+(@OGUID+310,175584,229,1,1,-14.3415041,-395.7287,48.5381279,2.86233544,0,0,0,0,120,0,1),
+(@OGUID+311,175588,229,1,1,-139.523071,-525.87854,6.363978,-2.4260025,0,0,0,0,120,0,1),
+(@OGUID+312,175606,229,1,1,-100.230141,-529.5372,-5.773813,-0.43633157,0,0,0,0,120,0,1),
+(@OGUID+313,175606,229,1,1,-100.324532,-523.847,10.7028713,2.111848,0,0,0,0,120,0,1),
+(@OGUID+314,175606,229,1,1,-101.885674,-521.985168,-7.841986,-0.0349062532,0,0,0,0,120,0,1),
+(@OGUID+315,175606,229,1,1,-102.4652,-575.651062,9.900889,2.478367,0,0,0,0,120,0,1),
+(@OGUID+316,175606,229,1,1,-112.209923,-569.506165,10.1991549,2.18166041,0,0,0,0,120,0,1),
+(@OGUID+317,175606,229,1,1,-125.2294,-576.6645,13.7725887,-0.296705216,0,0,0,0,120,0,1),
+(@OGUID+318,175606,229,1,1,-126.745758,-514.1637,-12.1469631,3.10665226,0,0,0,0,120,0,1),
+(@OGUID+319,175606,229,1,1,-129.513687,-441.7,24.4328327,0.9773831,0,0,0,0,120,0,1),
+(@OGUID+320,175606,229,1,1,-131.570419,-439.602051,22.8934059,-1.134463,0,0,0,0,120,0,1),
+(@OGUID+321,175606,229,1,1,-131.804932,-526.783936,6.556513,-2.28637886,0,0,0,0,120,0,1),
+(@OGUID+322,175606,229,1,1,-132.261276,-474.847717,9.822438,-2.82742977,0,0,0,0,120,0,1),
+(@OGUID+323,175606,229,1,1,-132.404343,-514.960754,-15.93743,-1.79768872,0,0,0,0,120,0,1),
+(@OGUID+324,175606,229,1,1,-138.894241,-439.497467,24.8087673,1.76278245,0,0,0,0,120,0,1),
+(@OGUID+325,175606,229,1,1,-139.15303,-434.7381,23.11234,-2.740162,0,0,0,0,120,0,1),
+(@OGUID+326,175606,229,1,1,-144.504959,-441.602783,23.1015816,0.3316107,0,0,0,0,120,0,1),
+(@OGUID+327,175606,229,1,1,-146.906982,-441.462952,22.4743786,-0.8028509,0,0,0,0,120,0,1),
+(@OGUID+328,175606,229,1,1,-147.8808,-448.5486,20.091135,1.3264482,0,0,0,0,120,0,1),
+(@OGUID+329,175606,229,1,1,-150.1039,-470.007965,16.2278,1.76278245,0,0,0,0,120,0,1),
+(@OGUID+330,175606,229,1,1,-153.787643,-515.2272,-15.9504414,-0.95993,0,0,0,0,120,0,1),
+(@OGUID+331,175606,229,1,1,-154.378235,-552.2341,9.918845,-2.0594883,0,0,0,0,120,0,1),
+(@OGUID+332,175606,229,1,1,-154.59169,-525.218567,8.161819,2.042035,0,0,0,0,120,0,1),
+(@OGUID+333,175606,229,1,1,-154.769653,-541.317,9.022168,-0.104719326,0,0,0,0,120,0,1),
+(@OGUID+334,175606,229,1,1,-154.889313,-570.3387,10.0172291,2.478367,0,0,0,0,120,0,1),
+(@OGUID+335,175607,229,1,1,20.4895344,-438.85733,-18.78273,-2.26892543,0,0,0,0,120,0,1),
+(@OGUID+336,175608,229,1,1,23.8203316,-440.8061,-18.75866,1.43116808,0,0,0,0,120,0,1),
+(@OGUID+337,175609,229,1,1,20.99143,-443.1193,-18.91834,1.08210289,0,0,0,0,120,0,1),
+(@OGUID+338,175609,229,1,1,23.7352352,-445.173035,-18.9350014,2.111848,0,0,0,0,120,0,1),
+(@OGUID+339,175609,229,1,1,25.9651279,-443.5448,-18.9203186,-2.75761318,0,0,0,0,120,0,1),
+(@OGUID+340,175886,229,1,1,-34.5386,-589.6351,30.9964237,-0.593412,0,0,0,0,120,0,1),
+(@OGUID+341,175886,229,1,1,-34.7323723,-589.6146,30.9339237,1.62315571,0,0,0,0,120,0,1),
+(@OGUID+342,175886,229,1,1,-35.6387024,-589.632263,30.9825344,-1.97221982,0,0,0,0,120,0,1),
+(@OGUID+343,175886,229,1,1,-36.297657,-589.616943,31.0103111,1.09955645,0,0,0,0,120,0,1),
+(@OGUID+344,175886,229,1,1,-37.7856445,-589.639465,30.9964237,-3.08918333,0,0,0,0,120,0,1),
+(@OGUID+345,175949,229,1,1,-128.233643,-482.381,25.4534683,-0.0174524616,0,0,0,0,120,0,1),
+(@OGUID+346,175950,229,1,1,-11.1344738,-466.205139,-16.8552532,-1.55334139,0,0,0,0,120,0,1),
+(@OGUID+347,176089,229,1,1,-18.8625946,-360.393951,-31.426754,2.513274,0,0,0,0,120,0,1),
+(@OGUID+348,176090,229,1,1,-19.0726433,-361.990631,-31.523716,-0.3490652,0,0,0,0,120,0,1),
+(@OGUID+349,176425,229,1,1,60.0723534,-511.967224,29.2142811,-3.13874269,0,0,0,0,120,0,1),
+(@OGUID+350,176426,229,1,1,56.9334679,-556.048035,30.66044,-3.13874269,0,0,0,0,120,0,1),
+(@OGUID+351,176427,229,1,1,53.1921,-461.069824,24.3897438,-3.14149952,0,0,0,0,120,0,1),
+(@OGUID+352,176428,229,1,1,-63.25678,-581.4829,29.29337,-3.14149952,0,0,0,0,120,0,1),
+(@OGUID+353,176429,229,1,1,-37.6862526,-551.8221,16.2163448,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+354,176430,229,1,1,-25.3348827,-478.438263,17.2503757,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+355,176431,229,1,1,-46.3864632,-448.609955,-18.5644283,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+356,176432,229,1,1,-2.64241648,-579.1437,-18.7608662,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+357,176433,229,1,1,26.982,-583.365234,-18.515255,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+358,176434,229,1,1,35.6424026,-550.729858,-18.41096,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+359,176435,229,1,1,33.1642647,-471.046875,-18.5059147,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+360,176436,229,1,1,31.9839039,-495.3488,-18.8984013,-3.13874269,0,0,0,0,120,0,1),
+(@OGUID+361,176437,229,1,1,-39.3852,-424.8782,-18.84707,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+362,176438,229,1,1,-23.2051277,-410.6093,-18.8984013,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+363,176439,229,1,1,-76.09747,-418.800659,-18.9234028,-1.83259165,0,0,0,0,120,0,1),
+(@OGUID+364,176440,229,1,1,-59.9712257,-409.6412,-18.8442917,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+365,176441,229,1,1,-79.5308762,-453.927216,-18.8331814,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+366,176442,229,1,1,-15.437788,-368.78067,49.49363,3.14085126,0,0,0,0,120,0,1),
+(@OGUID+367,176443,229,1,1,-121.137337,-296.445465,71.0397,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+368,176444,229,1,1,-137.26358,-305.604919,70.9605942,-1.83259165,0,0,0,0,120,0,1),
+(@OGUID+369,176445,229,1,1,-59.1198235,-339.829254,70.9605942,-1.83259165,0,0,0,0,120,0,1),
+(@OGUID+370,176446,229,1,1,-87.3357,-348.370026,71.0397,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+371,176454,229,1,1,60.57147,-562.5008,30.48111,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+372,176455,229,1,1,52.2036819,-470.448181,25.11214,3.14148068,0,0,0,0,120,0,1),
+(@OGUID+373,176456,229,1,1,-60.6475868,-584.3826,29.1114845,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+374,176457,229,1,1,-115.273315,-428.517548,-18.7010059,3.14159274,0,0,0,0,120,0,1),
+(@OGUID+375,176458,229,1,1,-114.981789,-421.896851,-18.9178715,3.14159274,0,0,0,0,120,0,1);
diff --git a/sql/updates/world/2011_12_18_00_world_creature_addon.sql b/sql/updates/world/2011_12_18_00_world_creature_addon.sql
new file mode 100644
index 00000000000..5df7f000b06
--- /dev/null
+++ b/sql/updates/world/2011_12_18_00_world_creature_addon.sql
@@ -0,0 +1,2 @@
+-- Delete addons for some creatures that has been removed
+DELETE FROM `creature_addon` WHERE `guid` IN (209318,209333,209315,209337,209308,209312,209331,209320,209335,209318,209333,209315,209337,209308,209312,209331,209320,209335);
diff --git a/sql/updates/world/2011_12_18_01_world_gossip.sql b/sql/updates/world/2011_12_18_01_world_gossip.sql
new file mode 100644
index 00000000000..eb76ffe4009
--- /dev/null
+++ b/sql/updates/world/2011_12_18_01_world_gossip.sql
@@ -0,0 +1,42 @@
+-- Gossip Menu insert from sniff
+DELETE FROM `gossip_menu` WHERE `entry`=7610 AND `text_id`=9261;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7610,9261);
+DELETE FROM `gossip_menu` WHERE `entry`=8249 AND `text_id`=10266;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (8249,10266);
+DELETE FROM `gossip_menu` WHERE `entry`=7612 AND `text_id`=9263;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7612,9263);
+DELETE FROM `gossip_menu` WHERE `entry`=7611 AND `text_id`=9262;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7611,9262);
+DELETE FROM `gossip_menu` WHERE `entry`=7588 AND `text_id`=9236;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7588,9236);
+DELETE FROM `gossip_menu` WHERE `entry`=7590 AND `text_id`=9238;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7590,9238);
+DELETE FROM `gossip_menu` WHERE `entry`=7591 AND `text_id`=9239;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7591,9239);
+DELETE FROM `gossip_menu` WHERE `entry`=7589 AND `text_id`=9237;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7589,9237);
+DELETE FROM `gossip_menu` WHERE `entry`=7526 AND `text_id`=9128;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7526,9128);
+DELETE FROM `gossip_menu` WHERE `entry`=7614 AND `text_id`=9265;
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES (7614,9265);
+-- Creature Gossip_menu_id Update from sniff
+UPDATE `creature_template` SET `gossip_menu_id`=7610 WHERE `entry`=18004;
+UPDATE `creature_template` SET `gossip_menu_id`=8249 WHERE `entry`=21172;
+UPDATE `creature_template` SET `gossip_menu_id`=7612 WHERE `entry`=18005;
+UPDATE `creature_template` SET `gossip_menu_id`=7611 WHERE `entry`=18006;
+UPDATE `creature_template` SET `gossip_menu_id`=7588 WHERE `entry`=18010;
+UPDATE `creature_template` SET `gossip_menu_id`=7590 WHERE `entry`=18019;
+UPDATE `creature_template` SET `gossip_menu_id`=7589 WHERE `entry`=18009;
+UPDATE `creature_template` SET `gossip_menu_id`=7614 WHERE `entry`=18003;
+-- Creature Gossip_menu_option Update from sniff
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (8249,7612,7611,7588,7590,7589,7495) AND `id`=0;
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=7590 AND `id`=1;
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`,`action_poi_id`,`box_coded`,`box_money`,`box_text`) VALUES
+(8249,0,1, 'I want to browse your goods.',3,128,0,0,0,0, ''),
+(7612,0,1, 'I wish to buy from you.',3,128,0,0,0,0, ''),
+(7611,0,1, 'I would like to buy from you.',3,128,0,0,0,0, ''),
+(7588,0,1, 'Show me your wares, Maktu.',3,128,0,0,0,0, ''),
+(7590,0,1, 'Let me browse your reagents and poison supplies.',3,128,0,0,0,0, ''),
+(7590,1,0, 'Specialist, eh? Just what kind of specialist are you, anyway?',1,1,7591,0,0,0, ''),
+(7589,0,1, 'I wish to browse your wares.',3,128,0,0,0,0, ''),
+(7495,0,0, 'Watcher Leesa''oh, why are you out here?',1,1,7526,0,0,0, '');
diff --git a/sql/updates/world/2011_12_18_02_world_spell_script_names.sql b/sql/updates/world/2011_12_18_02_world_spell_script_names.sql
new file mode 100644
index 00000000000..c5f9a4376df
--- /dev/null
+++ b/sql/updates/world/2011_12_18_02_world_spell_script_names.sql
@@ -0,0 +1,3 @@
+DELETE FROM `spell_script_names` WHERE `ScriptName`='spell_gen_luck_of_the_draw';
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(72221,'spell_gen_luck_of_the_draw');
diff --git a/sql/updates/world/2011_12_18_03_world_trinity_string.sql b/sql/updates/world/2011_12_18_03_world_trinity_string.sql
new file mode 100644
index 00000000000..d26cc356cff
--- /dev/null
+++ b/sql/updates/world/2011_12_18_03_world_trinity_string.sql
@@ -0,0 +1,3 @@
+DELETE FROM `trinity_string` WHERE `entry`=5031;
+INSERT INTO `trinity_string` (`entry`,`content_default`) VALUES
+(5031, 'AIName: %s ScriptName: %s');
diff --git a/sql/updates/world/2011_12_18_04_world_conditions.sql b/sql/updates/world/2011_12_18_04_world_conditions.sql
new file mode 100644
index 00000000000..a56151a9f8f
--- /dev/null
+++ b/sql/updates/world/2011_12_18_04_world_conditions.sql
@@ -0,0 +1,7 @@
+UPDATE spell_dbc SET EffectImplicitTargetA1 = 22, EffectImplicitTargetB1 = 7 WHERE Id = 58630;
+
+DELETE FROM conditions WHERE SourceTypeOrReferenceId = 13 AND SourceEntry IN (61863, 68663);
+INSERT INTO conditions (SourceTypeOrReferenceId, SourceEntry, ConditionTypeOrReference, ConditionValue1, Comment) VALUES
+(13, 61863, 18, 1, 'The Prophet Tharon''ja - Achievement Check'),
+(13, 68663, 18, 1, 'The Black Knight - Kill Credit'),
+(13, 58630, 18, 1, 'Mal''Ganis - Kill Credit');
diff --git a/sql/updates/world/2011_12_18_04_world_misc.sql b/sql/updates/world/2011_12_18_04_world_misc.sql
new file mode 100644
index 00000000000..3404e4f285f
--- /dev/null
+++ b/sql/updates/world/2011_12_18_04_world_misc.sql
@@ -0,0 +1,87 @@
+-- Remove empty EAI Script call from the following entries
+UPDATE `creature_template` SET `AIName` = '' WHERE `entry` IN (30243,30632);
+
+-- Crimson Hammersmith summon from Blacksmithing Plans fix
+-- Black Guard Swordsmith summon from Blacksmithing Plans fix
+UPDATE `gameobject_template` SET `AIName` = 'SmartGameObjectAI' WHERE `entry` IN (176325, 176327);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (176325, 176327) AND `source_type`=1;
+INSERT INTO `smart_scripts` (`entryorguid`, `source_type`, `id`, `link`, `event_type`, `event_phase_mask`, `event_chance`, `event_flags`, `event_param1`, `event_param2`, `event_param3`, `event_param4`, `action_type`, `action_param1`, `action_param2`, `action_param3`, `action_param4`, `action_param5`, `action_param6`, `target_type`, `target_param1`, `target_param2`, `target_param3`, `target_x`, `target_y`, `target_z`, `target_o`, `comment`) VALUES
+(176325, 1, 0, 0, 64, 0, 100, 1, 0, 0, 0, 0, 12, 11120, 6, 60000, 0, 0, 0, 8, 0, 0, 0, 3585.5, -3000.15, 125, 2.19912, 'Blacksmithing Plans - summon Crimson Hammersmith'),
+(176327, 1, 0, 0, 64, 0, 100, 1, 0, 0, 0, 0, 12, 11121, 6, 60000, 0, 0, 0, 8, 0, 0, 0, 3818.4, -3693.32, 144.242, 0.261799, 'Blacksmithing Plans - summon Black Guard Swordsmith');
+
+-- Sleeping Giants fix
+UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` = 24669;
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=24669 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
+(24669, 0, 0, 1, 8, 0, 100, 0, 44261, 1, 0, 0, 33, 24669, 0, 0, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 'Dormant Vrykul - Sleeping Giants quest credit'),
+(24669, 0, 1, 0, 61, 0, 100, 0, 0, 0, 0, 0, 37, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 'Dormant Vrykul - Sleeping Giants despawn');
+
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=18 AND `SourceEntry`=34083;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(18, 0, 34083, 0, 24, 1, 24669, 0, 63, '', 'Awakening Rod target limit to Dormant Vrykul'); -- changed to item script by Nay, not tested.
+
+-- Culling of Stratholme Hemotoxin SAI spell fix version
+SET @ENTRY := 28199;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `creature_ai_scripts` WHERE (`creature_id`=@ENTRY);
+DELETE FROM `smart_scripts` WHERE (`entryorguid`=@ENTRY);
+INSERT INTO `smart_scripts` VALUES
+(@ENTRY, 0, 0, 0, 9, 0, 25, 2, 0, 20, 5000, 8000, 11, 52522, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Tomb Stalker - Cast Hemotoxin Normal'),
+(@ENTRY, 0, 1, 0, 9, 0, 40, 4, 0, 20, 5000, 8000, 11, 58782, 32, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 'Tomb Stalker - Cast Hemotoxin Heroic');
+
+DELETE FROM `creature` WHERE `id` IN (28318, 29346);
+INSERT INTO `creature` (`guid`, `id`, `map`, `spawnMask`, `phaseMask`, `modelid`, `equipment_id`, `position_x`, `position_y`, `position_z`, `orientation`, `spawntimesecs`, `spawndist`, `currentwaypoint`, `curhealth`, `curmana`, `MovementType`, `npcflag`, `unit_flags`, `dynamicflags`) VALUES
+(40153, 28318, 530, 1, 1, 0, 0, -1775.148438, 5548.291992, -12.428190, 4.146070, 300, 0, 0, 1, 0, 0, 0, 0, 0), -- Grand Apothecary Putress
+(40251, 29346, 530, 1, 1, 0, 0, 1925, -4123.1899, 43.1780, 4.79965, 300, 0, 0, 1, 0, 0, 0, 0, 0); -- Apothecary Karlov
+
+-- Fix NPCs falling underground when killed by nelegalno
+UPDATE `creature_template` SET `InhabitType` = 3 WHERE `entry` IN (5936, 24899); -- Orca and Scoodles
+
+-- Removes wrong restriction from G.N.E.R.D. rage
+DELETE FROM `achievement_criteria_data` WHERE `criteria_id`=3882 AND `type`=16;
+
+-- Kalu'ak Fishing Derby start time fix
+UPDATE `game_event` SET `start_time` = '2011-01-01 13:00:00' WHERE `eventEntry`=63;
+UPDATE `game_event` SET `start_time` = '2011-01-01 14:00:00' WHERE `eventEntry`=64;
+
+-- Stranglethorn Fishing Extravaganza start time fix ( http://old.wowhead.com/event=301 )
+UPDATE `game_event` SET `start_time` = '2011-01-01 14:00:00' WHERE `eventEntry` IN (14, 15, 62);
+UPDATE `game_event` SET `description` = 'Stranglethorn Fishing Extravaganza Announce' WHERE `eventEntry`=14;
+UPDATE `game_event` SET `description` = 'Stranglethorn Fishing Extravaganza Fishing Pools' WHERE `eventEntry`=15;
+UPDATE `game_event` SET `description` = 'Stranglethorn Fishing Extravaganza Turn-ins' WHERE `eventEntry`=62;
+
+-- Eitrigg's Wisdom fix
+SET @GOSSIP = 21312;
+SET @NPC = 3144;
+SET @QUEST = 4941;
+-- Add gossip options for each menu id
+DELETE FROM `gossip_menu_option` WHERE `menu_id` BETWEEN @GOSSIP AND @GOSSIP+7;
+INSERT INTO `gossip_menu_option` (`menu_id`, `id`, `option_icon`, `option_text`, `option_id`, `npc_option_npcflag`, `action_menu_id`, `action_poi_id`, `box_coded`, `box_money`, `box_text`) VALUES
+(@GOSSIP, 0, 0, 'Hello, Eitrigg. I bring news from Blackrock Spire.', 1, 1, @GOSSIP+1, 0, 0, 0, ''),
+(@GOSSIP+1, 0, 0, 'There is only one Warchief, Eitrigg!', 1, 1, @GOSSIP+2, 0, 0, 0, ''),
+(@GOSSIP+2, 0, 0, 'What do you mean?', 1, 1, @GOSSIP+3, 0, 0, 0, ''),
+(@GOSSIP+3, 0, 0, 'Hearthglen? But...', 1, 1, @GOSSIP+4, 0, 0, 0, ''),
+(@GOSSIP+4, 0, 0, 'I will take you up on that offer, Eitrigg.', 1, 1, @GOSSIP+5, 0, 0, 0, ''),
+(@GOSSIP+5, 0, 0, 'Ah, so that is how they pushed the Dark Iron to the lower parts of the Spire.', 1, 1, @GOSSIP+6, 0, 0, 0, ''),
+(@GOSSIP+6, 0, 0, 'Perhaps there exists a way?', 1, 1, @GOSSIP+7, 0, 0, 0, ''),
+(@GOSSIP+7, 0, 0, 'As you wish, Eitrigg.', 1, 1, 0, 0, 0, 0, '');
+-- Add gossip menus (text values already in db)
+DELETE FROM `gossip_menu` WHERE `entry`BETWEEN @GOSSIP+1 AND @GOSSIP+7;
+INSERT INTO `gossip_menu` (`entry`, `text_id`) VALUES
+(@GOSSIP+1, 3574),
+(@GOSSIP+2, 3575),
+(@GOSSIP+3, 3576),
+(@GOSSIP+4, 3577),
+(@GOSSIP+5, 3578),
+(@GOSSIP+6, 3579),
+(@GOSSIP+7, 3580);
+-- Add Condtion so gossip only shows when on quest
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=@GOSSIP;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, @GOSSIP, 0, 0, 9, 4941, 0, 0, 0, '', NULL);
+-- Add SAI for quest complete and close of gossip when last option selected
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@NPC;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@NPC;
+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
+(@NPC,0,0,1,62,0,100,0,@GOSSIP+7,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0.0,0.0,0.0,0.0,'Eitrigg - Select As you wish, Eitrigg. - Close gossip'),
+(@NPC,0,1,0,61,0,100,0,0,0,0,0,15,@QUEST,0,0,0,0,0,7,0,0,0,0.0,0.0,0.0,0.0,'Eitrigg - On link - Give credit quest (4941)');
diff --git a/sql/updates/world/2011_12_18_05_world_misc.sql b/sql/updates/world/2011_12_18_05_world_misc.sql
new file mode 100644
index 00000000000..b8435c4211e
--- /dev/null
+++ b/sql/updates/world/2011_12_18_05_world_misc.sql
@@ -0,0 +1,94 @@
+-- Quest: The Black Knight's Orders (13663) SQL fix
+-- Black Knights Camp Spawns
+SET @OGUID=100489; -- Need 10
+SET @CGUID=152277; -- Need 3
+DELETE FROM `gameobject` WHERE `guid` BETWEEN @OGUID+0 AND @OGUID+9;
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@OGUID+0,194357,571,1,1,9070.324,2050.733,67.21755,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+1,194357,571,1,1,9073.764,2050.120,68.15718,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+2,194357,571,1,1,9074.699,2050.709,68.17049,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+3,194357,571,1,1,9069.595,2050.349,67.21755,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+4,194357,571,1,1,9069.961,2050.538,67.21755,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+5,194357,571,1,1,9072.077,2049.292,67.78963,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+6,194357,571,1,1,9065.680,2052.618,67.28638,0,0,0,0,1,0,0,0), -- Poison Vial
+(@OGUID+7,194394,571,1,1,9083.578,2041.696,67.81812,0,0,0,0,1,0,0,0), -- Cult Rune Circle
+(@OGUID+8,195011,571,1,1,9078.471,2057.547,67.21606,0,0,0,0.9981346,0.06105176,0,0,0), -- Bonfire
+(@OGUID+9,300007,571,1,1,8523.51,566.994,552.841,2.1518,0,0,0.880019,0.474938,300,0,1); -- Spell Focus GO?
+
+DELETE FROM `creature` WHERE `id`=33537;
+INSERT INTO `creature` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`modelid`,`equipment_id`,`position_x`,`position_y`,`position_z`,`orientation`,`spawntimesecs`,`spawndist`,`currentwaypoint`,`curhealth`,`curmana`,`MovementType`,`npcflag`,`unit_flags`,`dynamicflags`) VALUES
+(@CGUID+0,33537,571,1,1,0,0,9071.043,2075.388,67.21542,4.935980,120,0,0,1,0,0,0,0,0),
+(@CGUID+1,33537,571,1,1,0,0,9074.414,2049.259,67.34636,2.181662,120,0,0,1,0,0,0,0,0),
+(@CGUID+2,33537,571,1,1,0,0,9081.280,2058.925,67.38979,3.612832,120,0,0,1,0,0,0,0,0);
+
+-- Template updates
+UPDATE `creature_template` SET `unit_flags`=`unit_flags`|8,`speed_run`=4, `InhabitType`=5 WHERE `entry`=33519; -- Black Knight''s Gryphon
+UPDATE `creature_template` SET `faction_A`=2080,`faction_H`=2080,`unit_flags`=`unit_flags`|32768,`equipment_id`=823 WHERE `entry`=33537; -- Cult Conspirator
+
+-- See black knight's invisibility while on quest The Black Knight's Orders
+DELETE FROM `spell_area` WHERE `spell`=67471 AND `area` IN (4658);
+INSERT INTO `spell_area` (`spell`,`area`,`quest_start`,`quest_start_active`,`quest_end`,`aura_spell`,`racemask`,`gender`,`autocast`) VALUES
+(67471,4658,13663,1,13663,0,0,2,1); -- See Black Knight Invis
+
+-- Addon data
+DELETE FROM `creature_template_addon` WHERE `entry` IN (33519,33537);
+INSERT INTO `creature_template_addon` (`entry`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(33519,0,0,2049,0,NULL),-- Black Knight''s Gryphon
+(33537,0,1,1,0,NULL); -- Cult Conspirator
+
+-- SAI for Black Knight''s Gryphon
+SET @entry :=33519;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@entry;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@entry;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@entry,0,0,0,27,0,100,0,0,0,0,0,53,0,@entry,0,13663,0,0,1,0,0,0,0,0,0,0,'Black Knight''s Gryphon - On passenger - Start WP movement'),
+(@entry,0,1,0,40,0,100,0,40,@entry,0,0,33,33519,0,0,0,0,0,7,0,0,0,0,0,0,0,'Black Knight''s Gryphon - On WP 40 - Quest Credit'),
+(@entry,0,2,0,40,0,100,0,43,@entry,0,0,11,50630,0,0,0,0,0,7,0,0,0,0,0,0,0,'Black Knight''s Gryphon - On WP 43 - Dismount Spell'),
+(@entry,0,3,0,40,0,100,0,44,@entry,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Black Knight''s Gryphon - On WP 44 - Despawn');
+
+DELETE FROM `waypoints` WHERE `entry`=33519;
+INSERT INTO `waypoints` (`entry`,`pointid`,`position_x`,`position_y`,`position_z`,`point_comment`) VALUES
+(33519, 1,8521.271,569.5960,552.8375,'Black Knight''s Gryphon'),
+(33519, 2,8517.864,579.1095,553.2125,'Black Knight''s Gryphon'),
+(33519, 3,8513.146,594.6724,551.2125,'Black Knight''s Gryphon'),
+(33519, 4,8505.263,606.5569,550.4177,'Black Knight''s Gryphon'),
+(33519, 5,8503.017,628.4188,547.4177,'Black Knight''s Gryphon'),
+(33519, 6,8480.271,652.7083,547.4177,'Black Knight''s Gryphon'),
+(33519, 7,8459.121,686.1427,547.4177,'Black Knight''s Gryphon'),
+(33519, 8,8436.802,713.8687,547.3428,'Black Knight''s Gryphon'),
+(33519, 9,8405.380,740.0045,547.4177,'Black Knight''s Gryphon'),
+(33519,10,8386.139,770.6009,547.5881,'Black Knight''s Gryphon'),
+(33519,11,8374.297,802.2525,547.9304,'Black Knight''s Gryphon'),
+(33519,12,8374.271,847.0363,548.0427,'Black Knight''s Gryphon'),
+(33519,13,8385.988,868.9881,548.0491,'Black Knight''s Gryphon'),
+(33519,14,8413.027,867.8573,547.2991,'Black Knight''s Gryphon'),
+(33519,15,8452.552,869.0339,547.2991,'Black Knight''s Gryphon'),
+(33519,16,8473.058,875.2012,547.2955,'Black Knight''s Gryphon'),
+(33519,17,8472.278,912.3134,547.4169,'Black Knight''s Gryphon'),
+(33519,18,8479.666,954.1650,547.3298,'Black Knight''s Gryphon'),
+(33519,19,8477.349,1001.368,547.3372,'Black Knight''s Gryphon'),
+(33519,20,8484.538,1025.797,547.4622,'Black Knight''s Gryphon'),
+(33519,21,8525.363,1029.284,547.4177,'Black Knight''s Gryphon'),
+(33519,22,8532.808,1052.904,548.1677,'Black Knight''s Gryphon'),
+(33519,23,8537.356,1077.927,554.5791,'Black Knight''s Gryphon'),
+(33519,24,8540.528,1083.379,569.6827,'Black Knight''s Gryphon'),
+(33519,25,8563.641,1140.965,569.6827,'Black Knight''s Gryphon'),
+(33519,26,8594.897,1205.458,569.6827,'Black Knight''s Gryphon'),
+(33519,27,8617.104,1257.399,566.1833,'Black Knight''s Gryphon'),
+(33519,28,8648.496,1329.349,558.0187,'Black Knight''s Gryphon'),
+(33519,29,8667.723,1388.411,546.1880,'Black Knight''s Gryphon'),
+(33519,30,8699.145,1474.898,528.2197,'Black Knight''s Gryphon'),
+(33519,31,8726.869,1546.006,501.7741,'Black Knight''s Gryphon'),
+(33519,32,8739.058,1592.157,478.5511,'Black Knight''s Gryphon'),
+(33519,33,8750.799,1636.771,455.0797,'Black Knight''s Gryphon'),
+(33519,34,8760.006,1669.482,423.2208,'Black Knight''s Gryphon'),
+(33519,35,8783.310,1701.852,375.8872,'Black Knight''s Gryphon'),
+(33519,36,8817.336,1735.731,343.3323,'Black Knight''s Gryphon'),
+(33519,37,8882.320,1789.754,301.5807,'Black Knight''s Gryphon'),
+(33519,38,8958.597,1841.807,259.9141,'Black Knight''s Gryphon'),
+(33519,39,9045.891,1908.076,233.4143,'Black Knight''s Gryphon'),
+(33519,40,9107.177,1964.594,215.9704,'Black Knight''s Gryphon'),
+(33519,41,9134.763,2036.925,175.1925,'Black Knight''s Gryphon'),
+(33519,42,9128.608,2089.091,141.3593,'Black Knight''s Gryphon'),
+(33519,43,9093.364,2128.384,99.38685,'Black Knight''s Gryphon'),
+(33519,44,9050.709,2123.656,60.24802,'Black Knight''s Gryphon');
diff --git a/sql/updates/world/2011_12_18_06_world_sai.sql b/sql/updates/world/2011_12_18_06_world_sai.sql
new file mode 100644
index 00000000000..2fce176cd0f
--- /dev/null
+++ b/sql/updates/world/2011_12_18_06_world_sai.sql
@@ -0,0 +1,14 @@
+SET @JEEVES := 35642;
+SET @SPELL_GOODBYE := 68052;
+DELETE FROM `spell_linked_spell` WHERE `spell_effect`=@SPELL_GOODBYE AND `spell_trigger`=-68054 AND `type`=0;
+INSERT INTO `spell_linked_spell` (`spell_trigger`,`spell_effect`,`type`,`comment`) VALUES
+(-68054,@SPELL_GOODBYE,0, 'Jeeves - Say Goodbye');
+
+UPDATE `creature_template` SET `AIName`= 'SmartAI' WHERE `entry`=@JEEVES;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@JEEVES 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
+(@JEEVES,0,0,0,8,0,100,0,@SPELL_GOODBYE,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Jeeves - On Spellhit - Say Line 0");
+
+DELETE FROM `creature_text` WHERE `entry`=@JEEVES;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@JEEVES,0,0,"If you'll excuse me, I'm afraid I have other business I must attend to. Please call on me again in the future.",12,0,100,3,0,0, 'Jeeves');
diff --git a/sql/updates/world/2011_12_18_07_world_conditions.sql b/sql/updates/world/2011_12_18_07_world_conditions.sql
new file mode 100644
index 00000000000..ef669dd2dbb
--- /dev/null
+++ b/sql/updates/world/2011_12_18_07_world_conditions.sql
@@ -0,0 +1,17 @@
+-- Fix condition for Bom'bay's npc_text, gossip_menu and gossip_menu_option
+-- Player must to complete quest 826 'Zalazane' to see gossip_menu_option
+DELETE FROM `gossip_menu` WHERE `entry`=3062 AND `text_id` IN (3794,3795);
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(3062,3794), -- text before to complete quest 826
+(3062,3795); -- text after to complete quest 826
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` IN (14,15) AND `SourceGroup`=3062;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(14,3062,3794,0,14,826,0,0,0,'', "Bom'bay - show text 3794 if player does not have quest Zalazane"),
+(14,3062,3795,0,8,826,0,0,0,'', "Bom'bay - show text 3795 if player has quest Zalazane rewarded"),
+(15,3062,0,0,8,826,0,0,0,'', "Bom'bay - show gossip option 0 if player has quest Zalazane rewarded"),
+(15,3062,1,0,8,826,0,0,0,'', "Bom'bay - show gossip option 1 if player has quest Zalazane rewarded"),
+(15,3062,2,0,8,826,0,0,0,'', "Bom'bay - show gossip option 2 if player has quest Zalazane rewarded"),
+(15,3062,3,0,8,826,0,0,0,'', "Bom'bay - show gossip option 3 if player has quest Zalazane rewarded"),
+(15,3062,4,0,8,826,0,0,0,'', "Bom'bay - show gossip option 4 if player has quest Zalazane rewarded"),
+(15,3062,5,0,8,826,0,0,0,'', "Bom'bay - show gossip option 5 if player has quest Zalazane rewarded"),
+(15,3062,6,0,8,826,0,0,0,'', "Bom'bay - show gossip option 6 if player has quest Zalazane rewarded");
diff --git a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
index 06c1570ccd9..c5f04d4ff5f 100644
--- a/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
+++ b/src/server/game/AI/ScriptedAI/ScriptedEscortAI.cpp
@@ -543,7 +543,6 @@ bool npc_escortAI::GetWaypointPosition(uint32 pointId, float& x, float& y, float
if (waypoints.empty())
return false;
- ScriptPointVector::const_iterator itrEnd = waypoints.end();
for (ScriptPointVector::const_iterator itr = waypoints.begin(); itr != waypoints.end(); ++itr)
{
if (itr->uiPointId == pointId)
diff --git a/src/server/game/Achievements/AchievementMgr.cpp b/src/server/game/Achievements/AchievementMgr.cpp
index c43bfb2ca8b..596c85a6075 100755
--- a/src/server/game/Achievements/AchievementMgr.cpp
+++ b/src/server/game/Achievements/AchievementMgr.cpp
@@ -1075,7 +1075,6 @@ void AchievementMgr::UpdateAchievementCriteria(AchievementCriteriaTypes type, ui
AchievementCriteriaDataSet const* data = sAchievementMgr->GetCriteriaDataSet(achievementCriteria);
if (!data || !data->Meets(GetPlayer(), unit))
continue;
- break;
}
SetCriteriaProgress(achievementCriteria, 1);
diff --git a/src/server/game/Chat/Commands/TicketCommands.cpp b/src/server/game/Chat/Commands/TicketCommands.cpp
index 559d2186ff7..d38da9eb97c 100755
--- a/src/server/game/Chat/Commands/TicketCommands.cpp
+++ b/src/server/game/Chat/Commands/TicketCommands.cpp
@@ -122,28 +122,29 @@ bool ChatHandler::HandleGMTicketCloseByIdCommand(const char* args)
return true;
}
- // Ticket must be assigned to player, who tries to close it.
- uint64 guid = m_session->GetPlayer()->GetGUID();
- if (ticket->IsAssignedNotTo(guid))
+ // Ticket should be assigned to the player who tries to close it.
+ // Console can override though
+ Player* player = m_session ? m_session->GetPlayer() : NULL;
+ if (player && ticket->IsAssignedNotTo(player->GetGUID()))
{
PSendSysMessage(LANG_COMMAND_TICKETCANNOTCLOSE, ticket->GetId());
return true;
}
- sTicketMgr->CloseTicket(ticket->GetId(), guid);
+ sTicketMgr->CloseTicket(ticket->GetId(), player ? player->GetGUID() : -1);
sTicketMgr->UpdateLastChange();
- std::string msg = ticket->FormatMessageString(*this, m_session->GetPlayer()->GetName(), NULL, NULL, NULL);
+ std::string msg = ticket->FormatMessageString(*this, player ? player->GetName() : "Console", NULL, NULL, NULL);
SendGlobalGMSysMessage(msg.c_str());
// Inform player, who submitted this ticket, that it is closed
- if (Player* player = ticket->GetPlayer())
+ if (Player* submitter = ticket->GetPlayer())
{
- if (player->IsInWorld())
+ if (submitter->IsInWorld())
{
WorldPacket data(SMSG_GMTICKET_DELETETICKET, 4);
data << uint32(GMTICKET_RESPONSE_TICKET_DELETED);
- player->GetSession()->SendPacket(&data);
+ submitter->GetSession()->SendPacket(&data);
}
}
return true;
diff --git a/src/server/game/Entities/Pet/Pet.cpp b/src/server/game/Entities/Pet/Pet.cpp
index 404fe24d467..f730363d0c6 100755
--- a/src/server/game/Entities/Pet/Pet.cpp
+++ b/src/server/game/Entities/Pet/Pet.cpp
@@ -908,6 +908,7 @@ bool Guardian::InitStatsForLevel(uint8 petlevel)
SetCreateHealth(40*petlevel);
SetCreateMana(28 + 10*petlevel);
}
+ SetBonusDamage(m_owner->SpellBaseDamageBonus(SPELL_SCHOOL_MASK_FIRE) * 0.5f);
SetBaseWeaponDamage(BASE_ATTACK, MINDAMAGE, float(petlevel * 4 - petlevel));
SetBaseWeaponDamage(BASE_ATTACK, MAXDAMAGE, float(petlevel * 4 + petlevel));
break;
diff --git a/src/server/game/Entities/Player/Player.cpp b/src/server/game/Entities/Player/Player.cpp
index 5a9a3d2c751..b59c8c0bdd7 100755
--- a/src/server/game/Entities/Player/Player.cpp
+++ b/src/server/game/Entities/Player/Player.cpp
@@ -1850,7 +1850,7 @@ void Player::setDeathState(DeathState s)
SetUInt32Value(PLAYER_SELF_RES_SPELL, 0);
}
-bool Player::BuildEnumData(QueryResult result, WorldPacket* data)
+bool Player::BuildEnumData(PreparedQueryResult result, WorldPacket* data)
{
// 0 1 2 3 4 5 6 7
// "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.playerBytes, characters.playerBytes2, characters.level, "
@@ -1894,8 +1894,8 @@ bool Player::BuildEnumData(QueryResult result, WorldPacket* data)
*data << uint8(playerBytes2 & 0xFF); // facial hair
*data << uint8(fields[7].GetUInt8()); // level
- *data << uint32(fields[8].GetUInt32()); // zone
- *data << uint32(fields[9].GetUInt32()); // map
+ *data << uint32(fields[8].GetUInt16()); // zone
+ *data << uint32(fields[9].GetUInt16()); // map
*data << fields[10].GetFloat(); // x
*data << fields[11].GetFloat(); // y
@@ -12863,6 +12863,8 @@ void Player::SwapItem(uint16 src, uint16 dst)
RemoveItem(srcbag, srcslot, true);
StoreItem(dest, pSrcItem, true);
+ if (IsBankPos(src))
+ ItemAddedQuestCheck(pSrcItem->GetEntry(), pSrcItem->GetCount());
}
else if (IsBankPos (dst))
{
@@ -12876,6 +12878,7 @@ void Player::SwapItem(uint16 src, uint16 dst)
RemoveItem(srcbag, srcslot, true);
BankItem(dest, pSrcItem, true);
+ ItemRemovedQuestCheck(pSrcItem->GetEntry(), pSrcItem->GetCount());
}
else if (IsEquipmentPos (dst))
{
@@ -13300,11 +13303,7 @@ void Player::UpdateSoulboundTradeItems()
// also checks for garbage data
for (ItemDurationList::iterator itr = m_itemSoulboundTradeable.begin(); itr != m_itemSoulboundTradeable.end();)
{
- if (!*itr)
- {
- m_itemSoulboundTradeable.erase(itr++);
- continue;
- }
+ ASSERT(*itr);
if ((*itr)->GetOwnerGUID() != GetGUID())
{
m_itemSoulboundTradeable.erase(itr++);
@@ -13319,16 +13318,10 @@ void Player::UpdateSoulboundTradeItems()
}
}
+//TODO: should never allow an item to be added to m_itemSoulboundTradeable twice
void Player::RemoveTradeableItem(Item* item)
{
- for (ItemDurationList::iterator itr = m_itemSoulboundTradeable.begin(); itr != m_itemSoulboundTradeable.end(); ++itr)
- {
- if ((*itr) == item)
- {
- m_itemSoulboundTradeable.erase(itr);
- break;
- }
- }
+ m_itemSoulboundTradeable.remove(item);
}
void Player::UpdateItemDuration(uint32 time, bool realtimeonly)
@@ -18903,7 +18896,7 @@ void Player::_SaveSkills(SQLTransaction& trans)
void Player::_SaveSpells(SQLTransaction& trans)
{
- for (PlayerSpellMap::iterator itr = m_spells.begin(), next = m_spells.begin(); itr != m_spells.end();)
+ for (PlayerSpellMap::iterator itr = m_spells.begin(); itr != m_spells.end();)
{
if (itr->second->state == PLAYERSPELL_REMOVED || itr->second->state == PLAYERSPELL_CHANGED)
trans->PAppend("DELETE FROM character_spell WHERE guid = '%u' and spell = '%u'", GetGUIDLow(), itr->first);
diff --git a/src/server/game/Entities/Player/Player.h b/src/server/game/Entities/Player/Player.h
index 2b84a116ee8..8ee7d1a417f 100755
--- a/src/server/game/Entities/Player/Player.h
+++ b/src/server/game/Entities/Player/Player.h
@@ -1111,7 +1111,7 @@ class Player : public Unit, public GridObject<Player>
void Update(uint32 time);
- static bool BuildEnumData(QueryResult result, WorldPacket* data);
+ static bool BuildEnumData(PreparedQueryResult result, WorldPacket* data);
void SetInWater(bool apply);
@@ -2500,7 +2500,7 @@ class Player : public Unit, public GridObject<Player>
CreatureDisplayInfoEntry const* mountDisplayInfo = sCreatureDisplayInfoStore.LookupEntry(GetUInt32Value(UNIT_FIELD_MOUNTDISPLAYID));
if (!mountDisplayInfo)
return GetCollisionHeight(false);
-
+
CreatureModelDataEntry const* mountModelData = sCreatureModelDataStore.LookupEntry(mountDisplayInfo->ModelId);
if (!mountModelData)
return GetCollisionHeight(false);
diff --git a/src/server/game/Entities/Unit/Unit.cpp b/src/server/game/Entities/Unit/Unit.cpp
index 3b5b210d18e..5a7645bd513 100755
--- a/src/server/game/Entities/Unit/Unit.cpp
+++ b/src/server/game/Entities/Unit/Unit.cpp
@@ -1926,12 +1926,7 @@ void Unit::AttackerStateUpdate (Unit* victim, WeaponAttackType attType, bool ext
CombatStart(victim);
RemoveAurasWithInterruptFlags(AURA_INTERRUPT_FLAG_MELEE_ATTACK);
- uint32 hitInfo;
- if (attType == BASE_ATTACK)
- hitInfo = HITINFO_NORMALSWING2;
- else if (attType == OFF_ATTACK)
- hitInfo = HITINFO_LEFTSWING;
- else
+ if (attType != BASE_ATTACK && attType != OFF_ATTACK)
return; // ignore ranged case
// melee attack spell casted at main hand attack only - no normal melee dmg dealt
@@ -5474,7 +5469,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
case CLASS_DRUID:
RandomSpells.push_back(71484);
RandomSpells.push_back(71485);
- RandomSpells.push_back(71486);
+ RandomSpells.push_back(71492);
break;
case CLASS_HUNTER:
RandomSpells.push_back(71486);
@@ -5520,7 +5515,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
case CLASS_DRUID:
RandomSpells.push_back(71561);
RandomSpells.push_back(71556);
- RandomSpells.push_back(71558);
+ RandomSpells.push_back(71560);
break;
case CLASS_HUNTER:
RandomSpells.push_back(71558);
@@ -6502,7 +6497,7 @@ bool Unit::HandleDummyAuraProc(Unit* victim, uint32 damage, AuraEffect* triggere
RemoveAura(57934);
if (!redirectTarget)
break;
- redirectTarget->CastSpell(this,59628,true);
+ CastSpell(this,59628,true);
CastSpell(redirectTarget,57933,true);
break;
}
diff --git a/src/server/game/Globals/ObjectMgr.cpp b/src/server/game/Globals/ObjectMgr.cpp
index 4e159209e86..020f7bd56a9 100755
--- a/src/server/game/Globals/ObjectMgr.cpp
+++ b/src/server/game/Globals/ObjectMgr.cpp
@@ -3818,11 +3818,11 @@ void ObjectMgr::LoadQuests()
// no changes, quest not dependent from this value but can have problems at client (note some may be 0, we must allow this so no check)
}
//check for proper RequiredSkillId value (skill case)
- if (int32 skill_id = SkillByQuestSort(-int32(qinfo->ZoneOrSort)))
+ if (uint32 skill_id = SkillByQuestSort(-int32(qinfo->ZoneOrSort)))
{
if (qinfo->RequiredSkillId != skill_id)
{
- sLog->outErrorDb("Quest %u has `ZoneOrSort` = %i but `RequiredSkillId` does not have a corresponding value (%i).",
+ sLog->outErrorDb("Quest %u has `ZoneOrSort` = %i but `RequiredSkillId` does not have a corresponding value (%d).",
qinfo->GetQuestId(), qinfo->ZoneOrSort, skill_id);
//override, and force proper value here?
}
diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp
index 04a5b102a6d..306af9c962a 100755
--- a/src/server/game/Maps/Map.cpp
+++ b/src/server/game/Maps/Map.cpp
@@ -30,6 +30,7 @@
#include "MapManager.h"
#include "ObjectMgr.h"
#include "Group.h"
+#include "LFGMgr.h"
union u_map_magic
{
@@ -2318,6 +2319,13 @@ bool InstanceMap::AddPlayerToMap(Player* player)
ASSERT(playerBind->save == mapSave);
}
}
+
+ if (group && group->isLFGGroup())
+ if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
+ if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId))
+ if (LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*(sLFGMgr->GetSelectedDungeons(player->GetGUID()).begin())))
+ if (dungeon->map == GetId() && dungeon->difficulty == GetDifficulty() && randomDungeon->type == LFG_TYPE_RANDOM)
+ player->CastSpell(player, LFG_SPELL_LUCK_OF_THE_DRAW, true);
}
// for normal instances cancel the reset schedule when the
diff --git a/src/server/game/Miscellaneous/Language.h b/src/server/game/Miscellaneous/Language.h
index a6ff663b302..a5935e1de9f 100755
--- a/src/server/game/Miscellaneous/Language.h
+++ b/src/server/game/Miscellaneous/Language.h
@@ -946,8 +946,9 @@ enum TrinityStrings
LANG_GOINFO_NAME = 5027,
LANG_GOINFO_LOOTID = 5028,
LANG_COMMAND_LOOKUP_MAX_RESULTS = 5029,
- // Room for more Trinity strings 5030-9999
LANG_FLEE = 5030,
+ LANG_NPCINFO_AIINFO = 5031,
+ // Room for more Trinity strings 5032-9999
// Level requirement notifications
LANG_SAY_REQ = 6604,
diff --git a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
index 5bd0a23207e..09af2303397 100755
--- a/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
+++ b/src/server/game/Movement/MovementGenerators/RandomMovementGenerator.cpp
@@ -47,11 +47,10 @@ template<>
void
RandomMovementGenerator<Creature>::_setRandomLocation(Creature &creature)
{
- float X, Y, Z, z, nx, ny, nz, ori, dist;
+ float X, Y, Z, nx, ny, nz, ori, dist;
creature.GetHomePosition(X, Y, Z, ori);
- z = creature.GetPositionZ();
Map const* map = creature.GetBaseMap();
// For 2D/3D system selection
diff --git a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
index 9ad07685900..017fd5a78ad 100755
--- a/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/CharacterHandler.cpp
@@ -196,7 +196,7 @@ bool LoginQueryHolder::Initialize()
return res;
}
-void WorldSession::HandleCharEnum(QueryResult result)
+void WorldSession::HandleCharEnum(PreparedQueryResult result)
{
WorldPacket data(SMSG_CHAR_ENUM, 100); // we guess size
@@ -232,35 +232,16 @@ void WorldSession::HandleCharEnumOpcode(WorldPacket & /*recv_data*/)
CharacterDatabase.Execute(stmt);
/// get all the data necessary for loading all characters (along with their pets) on the account
- _charEnumCallback =
- CharacterDatabase.AsyncPQuery(
- !sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED) ?
- // ------- Query Without Declined Names --------
- // 0 1 2 3 4 5 6 7
- "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.playerBytes, characters.playerBytes2, characters.level, "
- // 8 9 10 11 12 13 14
- "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, guild_member.guildid, characters.playerFlags, "
- // 15 16 17 18 19 20
- "characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, character_banned.guid "
- "FROM characters LEFT JOIN character_pet ON characters.guid=character_pet.owner AND character_pet.slot='%u' "
- "LEFT JOIN guild_member ON characters.guid = guild_member.guid "
- "LEFT JOIN character_banned ON characters.guid = character_banned.guid AND character_banned.active = 1 "
- "WHERE characters.account = '%u' ORDER BY characters.guid"
- :
- // --------- Query With Declined Names ---------
- // 0 1 2 3 4 5 6 7
- "SELECT characters.guid, characters.name, characters.race, characters.class, characters.gender, characters.playerBytes, characters.playerBytes2, characters.level, "
- // 8 9 10 11 12 13 14
- "characters.zone, characters.map, characters.position_x, characters.position_y, characters.position_z, guild_member.guildid, characters.playerFlags, "
- // 15 16 17 18 19 20 21
- "characters.at_login, character_pet.entry, character_pet.modelid, character_pet.level, characters.equipmentCache, character_banned.guid, character_declinedname.genitive "
- "FROM characters LEFT JOIN character_pet ON characters.guid = character_pet.owner AND character_pet.slot='%u' "
- "LEFT JOIN character_declinedname ON characters.guid = character_declinedname.guid "
- "LEFT JOIN guild_member ON characters.guid = guild_member.guid "
- "LEFT JOIN character_banned ON characters.guid = character_banned.guid AND character_banned.active = 1 "
- "WHERE characters.account = '%u' ORDER BY characters.guid",
- PET_SAVE_AS_CURRENT, GetAccountId()
- );
+
+ if (sWorld->getBoolConfig(CONFIG_DECLINED_NAMES_USED))
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_ENUM_DECLINED_NAME);
+ else
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_ENUM);
+
+ stmt->setUInt8(0, PET_SAVE_AS_CURRENT);
+ stmt->setUInt32(1, GetAccountId());
+
+ _charEnumCallback = CharacterDatabase.AsyncQuery(stmt);
}
void WorldSession::HandleCharCreateOpcode(WorldPacket & recv_data)
@@ -1102,13 +1083,13 @@ void WorldSession::HandleShowingCloakOpcode(WorldPacket& recv_data)
void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
{
uint64 guid;
- std::string newname;
+ std::string newName;
recv_data >> guid;
- recv_data >> newname;
+ recv_data >> newName;
// prevent character rename to invalid name
- if (!normalizePlayerName(newname))
+ if (!normalizePlayerName(newName))
{
WorldPacket data(SMSG_CHAR_RENAME, 1);
data << uint8(CHAR_NAME_NO_NAME);
@@ -1116,7 +1097,7 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
return;
}
- uint8 res = ObjectMgr::CheckPlayerName(newname, true);
+ uint8 res = ObjectMgr::CheckPlayerName(newName, true);
if (res != CHAR_NAME_SUCCESS)
{
WorldPacket data(SMSG_CHAR_RENAME, 1);
@@ -1126,7 +1107,7 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
}
// check name limitations
- if (AccountMgr::IsPlayerAccount(GetSecurity()) && sObjectMgr->IsReservedName(newname))
+ if (AccountMgr::IsPlayerAccount(GetSecurity()) && sObjectMgr->IsReservedName(newName))
{
WorldPacket data(SMSG_CHAR_RENAME, 1);
data << uint8(CHAR_NAME_RESERVED);
@@ -1134,21 +1115,22 @@ void WorldSession::HandleCharRenameOpcode(WorldPacket& recv_data)
return;
}
- std::string escaped_newname = newname;
- CharacterDatabase.EscapeString(escaped_newname);
-
- // make sure that the character belongs to the current account, that rename at login is enabled
+ // Ensure that the character belongs to the current account, that rename at login is enabled
// and that there is no character with the desired new name
- _charRenameCallback.SetParam(newname);
- _charRenameCallback.SetFutureResult(
- CharacterDatabase.AsyncPQuery(
- "SELECT guid, name FROM characters WHERE guid = %d AND account = %d AND (at_login & %d) = %d AND NOT EXISTS (SELECT NULL FROM characters WHERE name = '%s')",
- GUID_LOPART(guid), GetAccountId(), AT_LOGIN_RENAME, AT_LOGIN_RENAME, escaped_newname.c_str()
- )
- );
+ _charRenameCallback.SetParam(newName);
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_FREE_NAME);
+
+ stmt->setUInt32(0, GUID_LOPART(guid));
+ stmt->setUInt32(1, GetAccountId());
+ stmt->setUInt16(2, AT_LOGIN_RENAME);
+ stmt->setUInt16(3, AT_LOGIN_RENAME);
+ stmt->setString(4, newName);
+
+ _charRenameCallback.SetFutureResult(CharacterDatabase.AsyncQuery(stmt));
}
-void WorldSession::HandleChangePlayerNameOpcodeCallBack(QueryResult result, std::string newname)
+void WorldSession::HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string newName)
{
if (!result)
{
@@ -1158,22 +1140,38 @@ void WorldSession::HandleChangePlayerNameOpcodeCallBack(QueryResult result, std:
return;
}
- uint32 guidLow = result->Fetch()[0].GetUInt32();
+ Field* fields = result->Fetch();
+
+ uint32 guidLow = fields[0].GetUInt32();
+ std::string oldName = fields[1].GetString();
+
uint64 guid = MAKE_NEW_GUID(guidLow, 0, HIGHGUID_PLAYER);
- std::string oldname = result->Fetch()[1].GetString();
- CharacterDatabase.PExecute("UPDATE characters set name = '%s', at_login = at_login & ~ %u WHERE guid ='%u'", newname.c_str(), uint32(AT_LOGIN_RENAME), guidLow);
- CharacterDatabase.PExecute("DELETE FROM character_declinedname WHERE guid ='%u'", guidLow);
+ // Update name and at_login flag in the db
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_UPDATE_NAME);
+
+ stmt->setString(0, newName);
+ stmt->setUInt16(1, AT_LOGIN_RENAME);
+ stmt->setUInt32(2, guidLow);
+
+ CharacterDatabase.Execute(stmt);
+
+ // Removed declined name from db
+ stmt = CharacterDatabase.GetPreparedStatement(CHAR_DEL_DECLINED_NAME);
+
+ stmt->setUInt32(0, guidLow);
- sLog->outChar("Account: %d (IP: %s) Character:[%s] (guid:%u) Changed name to: %s", GetAccountId(), GetRemoteAddress().c_str(), oldname.c_str(), guidLow, newname.c_str());
+ CharacterDatabase.Execute(stmt);
+
+ sLog->outChar("Account: %d (IP: %s) Character:[%s] (guid:%u) Changed name to: %s", GetAccountId(), GetRemoteAddress().c_str(), oldName.c_str(), guidLow, newName.c_str());
- WorldPacket data(SMSG_CHAR_RENAME, 1+8+(newname.size()+1));
+ WorldPacket data(SMSG_CHAR_RENAME, 1+8+(newName.size()+1));
data << uint8(RESPONSE_SUCCESS);
data << uint64(guid);
- data << newname;
+ data << newName;
SendPacket(&data);
- sWorld->UpdateCharacterNameData(guidLow, newname);
+ sWorld->UpdateCharacterNameData(guidLow, newName);
}
void WorldSession::HandleSetPlayerDeclinedNames(WorldPacket& recv_data)
diff --git a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
index f4e3af72892..4d323996de7 100755
--- a/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/ItemHandler.cpp
@@ -938,6 +938,7 @@ void WorldSession::HandleAutoBankItemOpcode(WorldPacket& recvPacket)
}
_player->RemoveItem(srcbag, srcslot, true);
+ _player->ItemRemovedQuestCheck(pItem->GetEntry(), pItem->GetCount());
_player->BankItem(dest, pItem, true);
}
@@ -965,6 +966,7 @@ void WorldSession::HandleAutoStoreBankItemOpcode(WorldPacket& recvPacket)
_player->RemoveItem(srcbag, srcslot, true);
_player->StoreItem(dest, pItem, true);
+ _player->ItemAddedQuestCheck(pItem->GetEntry(), pItem->GetCount());
}
else // moving from inventory to bank
{
diff --git a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
index 7327cdbba65..d4211bad293 100755
--- a/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/MiscHandler.cpp
@@ -613,22 +613,24 @@ void WorldSession::HandleAddIgnoreOpcode(WorldPacket & recv_data)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: Received CMSG_ADD_IGNORE");
- std::string IgnoreName = GetTrinityString(LANG_FRIEND_IGNORE_UNKNOWN);
+ std::string ignoreName = GetTrinityString(LANG_FRIEND_IGNORE_UNKNOWN);
- recv_data >> IgnoreName;
+ recv_data >> ignoreName;
- if (!normalizePlayerName(IgnoreName))
+ if (!normalizePlayerName(ignoreName))
return;
- CharacterDatabase.EscapeString(IgnoreName); // prevent SQL injection - normal name must not be changed by this call
-
sLog->outDebug(LOG_FILTER_NETWORKIO, "WORLD: %s asked to Ignore: '%s'",
- GetPlayer()->GetName(), IgnoreName.c_str());
+ GetPlayer()->GetName(), ignoreName.c_str());
+
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_GUID_BY_NAME);
+
+ stmt->setString(0, ignoreName);
- _addIgnoreCallback = CharacterDatabase.AsyncPQuery("SELECT guid FROM characters WHERE name = '%s'", IgnoreName.c_str());
+ _addIgnoreCallback = CharacterDatabase.AsyncQuery(stmt);
}
-void WorldSession::HandleAddIgnoreOpcodeCallBack(QueryResult result)
+void WorldSession::HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result)
{
if (!GetPlayer())
return;
diff --git a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
index a675214930a..9d1e806dada 100755
--- a/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/NPCHandler.cpp
@@ -618,39 +618,43 @@ void WorldSession::HandleStablePet(WorldPacket & recv_data)
return;
}
- _stablePetCallback = CharacterDatabase.AsyncPQuery("SELECT owner, slot, id FROM character_pet WHERE owner = '%u' AND slot >= '%u' AND slot <= '%u' ORDER BY slot ",
- _player->GetGUIDLow(), PET_SAVE_FIRST_STABLE_SLOT, PET_SAVE_LAST_STABLE_SLOT);
+ PreparedStatement* stmt = CharacterDatabase.GetPreparedStatement(CHAR_GET_PET_SLOTS);
+ stmt->setUInt32(0, _player->GetGUIDLow());
+ stmt->setUInt8(1, PET_SAVE_FIRST_STABLE_SLOT);
+ stmt->setUInt8(2, PET_SAVE_LAST_STABLE_SLOT);
+
+ _stablePetCallback = CharacterDatabase.AsyncQuery(stmt);
}
-void WorldSession::HandleStablePetCallback(QueryResult result)
+void WorldSession::HandleStablePetCallback(PreparedQueryResult result)
{
if (!GetPlayer())
return;
- uint32 free_slot = 1;
+ uint8 freeSlot = 1;
if (result)
{
do
{
Field* fields = result->Fetch();
- uint32 slot = fields[1].GetUInt32();
+ uint8 slot = fields[1].GetUInt8();
// slots ordered in query, and if not equal then free
- if (slot != free_slot)
+ if (slot != freeSlot)
break;
// this slot not free, skip
- ++free_slot;
+ ++freeSlot;
}
while (result->NextRow());
}
WorldPacket data(SMSG_STABLE_RESULT, 1);
- if (free_slot > 0 && free_slot <= GetPlayer()->m_stableSlots)
+ if (freeSlot > 0 && freeSlot <= GetPlayer()->m_stableSlots)
{
- _player->RemovePet(_player->GetPet(), PetSaveMode(free_slot));
+ _player->RemovePet(_player->GetPet(), PetSaveMode(freeSlot));
SendStableResult(STABLE_SUCCESS_STABLE);
}
else
@@ -878,19 +882,18 @@ void WorldSession::HandleRepairItemOpcode(WorldPacket & recv_data)
// reputation discount
float discountMod = _player->GetReputationPriceDiscount(unit);
- uint32 TotalCost = 0;
if (itemGUID)
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "ITEM: Repair item, itemGUID = %u, npcGUID = %u", GUID_LOPART(itemGUID), GUID_LOPART(npcGUID));
Item* item = _player->GetItemByGuid(itemGUID);
if (item)
- TotalCost = _player->DurabilityRepair(item->GetPos(), true, discountMod, guildBank);
+ _player->DurabilityRepair(item->GetPos(), true, discountMod, guildBank);
}
else
{
sLog->outDebug(LOG_FILTER_NETWORKIO, "ITEM: Repair all items, npcGUID = %u", GUID_LOPART(npcGUID));
- TotalCost = _player->DurabilityRepairAll(true, discountMod, guildBank);
+ _player->DurabilityRepairAll(true, discountMod, guildBank);
}
}
diff --git a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp
index a931d8a5b3d..2e9b88bd3f0 100755
--- a/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp
+++ b/src/server/game/Server/Protocol/Handlers/PetitionsHandler.cpp
@@ -311,21 +311,17 @@ void WorldSession::SendPetitionQueryOpcode(uint64 petitionguid)
uint64 ownerguid = 0;
uint32 type;
std::string name = "NO_NAME_FOR_GUID";
- uint8 signs = 0;
- QueryResult result = CharacterDatabase.PQuery(
- "SELECT ownerguid, name, "
- " (SELECT COUNT(playerguid) FROM petition_sign WHERE petition_sign.petitionguid = '%u') AS signs, "
- " type "
- "FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionguid), GUID_LOPART(petitionguid));
+ // TODO: Use CHAR_LOAD_PETITION PS
+ QueryResult result = CharacterDatabase.PQuery("SELECT ownerguid, name, type "
+ "FROM petition WHERE petitionguid = '%u'", GUID_LOPART(petitionguid));
if (result)
{
Field* fields = result->Fetch();
ownerguid = MAKE_NEW_GUID(fields[0].GetUInt32(), 0, HIGHGUID_PLAYER);
name = fields[1].GetString();
- signs = fields[2].GetUInt8();
- type = fields[3].GetUInt32();
+ type = fields[2].GetUInt32();
}
else
{
diff --git a/src/server/game/Server/WorldSession.cpp b/src/server/game/Server/WorldSession.cpp
index ceb3c5acc0f..be6f152d891 100755
--- a/src/server/game/Server/WorldSession.cpp
+++ b/src/server/game/Server/WorldSession.cpp
@@ -998,12 +998,13 @@ void WorldSession::InitializeQueryCallbackParameters()
void WorldSession::ProcessQueryCallbacks()
{
QueryResult result;
+ PreparedQueryResult result2;
//! HandleCharEnumOpcode
if (_charEnumCallback.ready())
{
- _charEnumCallback.get(result);
- HandleCharEnum(result);
+ _charEnumCallback.get(result2);
+ HandleCharEnum(result2);
_charEnumCallback.cancel();
}
@@ -1037,16 +1038,16 @@ void WorldSession::ProcessQueryCallbacks()
if (_charRenameCallback.IsReady())
{
std::string param = _charRenameCallback.GetParam();
- _charRenameCallback.GetResult(result);
- HandleChangePlayerNameOpcodeCallBack(result, param);
+ _charRenameCallback.GetResult(result2);
+ HandleChangePlayerNameOpcodeCallBack(result2, param);
_charRenameCallback.FreeResult();
}
//- HandleCharAddIgnoreOpcode
if (_addIgnoreCallback.ready())
{
- _addIgnoreCallback.get(result);
- HandleAddIgnoreOpcodeCallBack(result);
+ _addIgnoreCallback.get(result2);
+ HandleAddIgnoreOpcodeCallBack(result2);
_addIgnoreCallback.cancel();
}
@@ -1062,8 +1063,8 @@ void WorldSession::ProcessQueryCallbacks()
//- HandleStablePet
if (_stablePetCallback.ready())
{
- _stablePetCallback.get(result);
- HandleStablePetCallback(result);
+ _stablePetCallback.get(result2);
+ HandleStablePetCallback(result2);
_stablePetCallback.cancel();
}
diff --git a/src/server/game/Server/WorldSession.h b/src/server/game/Server/WorldSession.h
index 4a83c2d4092..0763602e9c1 100755
--- a/src/server/game/Server/WorldSession.h
+++ b/src/server/game/Server/WorldSession.h
@@ -400,7 +400,7 @@ class WorldSession
void HandleCharCreateOpcode(WorldPacket& recvPacket);
void HandleCharCreateCallback(PreparedQueryResult result, CharacterCreateInfo* createInfo);
void HandlePlayerLoginOpcode(WorldPacket& recvPacket);
- void HandleCharEnum(QueryResult result);
+ void HandleCharEnum(PreparedQueryResult result);
void HandlePlayerLogin(LoginQueryHolder * holder);
void HandleCharFactionOrRaceChange(WorldPacket& recv_data);
@@ -472,7 +472,7 @@ class WorldSession
void HandleAddFriendOpcodeCallBack(QueryResult result, std::string friendNote);
void HandleDelFriendOpcode(WorldPacket& recvPacket);
void HandleAddIgnoreOpcode(WorldPacket& recvPacket);
- void HandleAddIgnoreOpcodeCallBack(QueryResult result);
+ void HandleAddIgnoreOpcodeCallBack(PreparedQueryResult result);
void HandleDelIgnoreOpcode(WorldPacket& recvPacket);
void HandleSetContactNotesOpcode(WorldPacket& recvPacket);
void HandleBugOpcode(WorldPacket& recvPacket);
@@ -588,7 +588,7 @@ class WorldSession
void HandleBinderActivateOpcode(WorldPacket& recvPacket);
void HandleListStabledPetsOpcode(WorldPacket& recvPacket);
void HandleStablePet(WorldPacket& recvPacket);
- void HandleStablePetCallback(QueryResult result);
+ void HandleStablePetCallback(PreparedQueryResult result);
void HandleUnstablePet(WorldPacket& recvPacket);
void HandleUnstablePetCallback(QueryResult result, uint32 petnumber);
void HandleBuyStableSlot(WorldPacket& recvPacket);
@@ -747,7 +747,7 @@ class WorldSession
void HandleSetActionBarToggles(WorldPacket& recv_data);
void HandleCharRenameOpcode(WorldPacket& recv_data);
- void HandleChangePlayerNameOpcodeCallBack(QueryResult result, std::string newname);
+ void HandleChangePlayerNameOpcodeCallBack(PreparedQueryResult result, std::string newName);
void HandleSetPlayerDeclinedNames(WorldPacket& recv_data);
void HandleTotemDestroyed(WorldPacket& recv_data);
@@ -896,11 +896,10 @@ class WorldSession
void InitializeQueryCallbackParameters();
void ProcessQueryCallbacks();
- ACE_Future_Set<QueryResult> _nameQueryCallbacks;
- QueryResultFuture _charEnumCallback;
- QueryResultFuture _addIgnoreCallback;
- QueryResultFuture _stablePetCallback;
- QueryCallback<QueryResult, std::string> _charRenameCallback;
+ PreparedQueryResultFuture _charEnumCallback;
+ PreparedQueryResultFuture _addIgnoreCallback;
+ PreparedQueryResultFuture _stablePetCallback;
+ QueryCallback<PreparedQueryResult, std::string> _charRenameCallback;
QueryCallback<QueryResult, std::string> _addFriendCallback;
QueryCallback<QueryResult, uint32> _unstablePetCallback;
QueryCallback<QueryResult, uint32> _stableSwapCallback;
diff --git a/src/server/game/Spells/Auras/SpellAuraEffects.cpp b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
index b690a811fbb..71122775492 100755
--- a/src/server/game/Spells/Auras/SpellAuraEffects.cpp
+++ b/src/server/game/Spells/Auras/SpellAuraEffects.cpp
@@ -1518,7 +1518,7 @@ void AuraEffect::HandleShapeshiftBoosts(Unit* target, bool apply) const
spellId3 = 47180;
break;
}
- target->CastSpell(target, spellId, true, NULL, this);
+ target->CastSpell(target, spellId3, true, NULL, this);
}
// Master Shapeshifter - Cat
if (AuraEffect const* aurEff = target->GetDummyAuraEffect(SPELLFAMILY_GENERIC, 2851, 0))
@@ -4804,8 +4804,10 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
if (Aura* newAura = target->AddAura(71564, target))
newAura->SetStackAmount(newAura->GetSpellInfo()->StackAmount);
break;
- case 59628: // Tricks of the Trade
- target->SetReducedThreatPercent(100,caster->GetGUID());
+ case 59628: // Tricks of the Trade
+ if (!caster->GetMisdirectionTarget())
+ break;
+ target->SetReducedThreatPercent(100,caster->GetMisdirectionTarget()->GetGUID());
break;
}
}
@@ -4958,9 +4960,14 @@ void AuraEffect::HandleAuraDummy(AuraApplication const* aurApp, uint8 mode, bool
// Tricks of the trade
switch(GetId())
{
- case 59628:
- case 57934:
+ case 59628: //Tricks of the trade buff on rogue (6sec duration)
target->SetReducedThreatPercent(0,0);
+ break;
+ case 57934: //Tricks of the trade buff on rogue (30sec duration)
+ if (aurApp->GetRemoveMode() == AURA_REMOVE_BY_EXPIRE || !caster->GetMisdirectionTarget())
+ target->SetReducedThreatPercent(0,0);
+ else
+ target->SetReducedThreatPercent(0,caster->GetMisdirectionTarget()->GetGUID());
break;
}
default:
diff --git a/src/server/game/Spells/SpellEffects.cpp b/src/server/game/Spells/SpellEffects.cpp
index 839a466f0f0..97332436f09 100755
--- a/src/server/game/Spells/SpellEffects.cpp
+++ b/src/server/game/Spells/SpellEffects.cpp
@@ -606,57 +606,67 @@ void Spell::EffectSchoolDMG(SpellEffIndex effIndex)
case SPELLFAMILY_ROGUE:
{
// Envenom
- if (m_caster->GetTypeId() == TYPEID_PLAYER && (m_spellInfo->SpellFamilyFlags[1] & 0x8))
+ if (m_spellInfo->SpellFamilyFlags[1] & 0x00000008)
{
- // consume from stack dozes not more that have combo-points
- if (uint32 combo = m_caster->ToPlayer()->GetComboPoints())
+ if (Player* player = m_caster->ToPlayer())
{
- // Lookup for Deadly poison (only attacker applied)
- if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_ROGUE, 0x10000, 0, 0, m_caster->GetGUID()))
+ // consume from stack dozes not more that have combo-points
+ if (uint32 combo = player->GetComboPoints())
{
- // count consumed deadly poison doses at target
- bool needConsume = true;
- uint32 spellId = aurEff->GetId();
- uint32 doses = aurEff->GetBase()->GetStackAmount();
- if (doses > combo)
- doses = combo;
- // Master Poisoner
- Unit::AuraEffectList const& auraList = m_caster->ToPlayer()->GetAuraEffectsByType(SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK);
- for (Unit::AuraEffectList::const_iterator iter = auraList.begin(); iter != auraList.end(); ++iter)
+ // Lookup for Deadly poison (only attacker applied)
+ if (AuraEffect const* aurEff = unitTarget->GetAuraEffect(SPELL_AURA_PERIODIC_DAMAGE, SPELLFAMILY_ROGUE, 0x00010000, 0, 0, m_caster->GetGUID()))
{
- if ((*iter)->GetSpellInfo()->SpellFamilyName == SPELLFAMILY_ROGUE && (*iter)->GetSpellInfo()->SpellIconID == 1960)
+ // count consumed deadly poison doses at target
+ bool needConsume = true;
+ uint32 spellId = aurEff->GetId();
+
+ uint32 doses = aurEff->GetBase()->GetStackAmount();
+ if (doses > combo)
+ doses = combo;
+
+ // Master Poisoner
+ Unit::AuraEffectList const& auraList = player->GetAuraEffectsByType(SPELL_AURA_MOD_AURA_DURATION_BY_DISPEL_NOT_STACK);
+ for (Unit::AuraEffectList::const_iterator iter = auraList.begin(); iter != auraList.end(); ++iter)
{
- uint32 chance = (*iter)->GetSpellInfo()->Effects[EFFECT_2].CalcValue(m_caster);
+ if ((*iter)->GetSpellInfo()->SpellFamilyName == SPELLFAMILY_ROGUE && (*iter)->GetSpellInfo()->SpellIconID == 1960)
+ {
+ uint32 chance = (*iter)->GetSpellInfo()->Effects[EFFECT_2].CalcValue(m_caster);
- if (chance && roll_chance_i(chance))
- needConsume = false;
+ if (chance && roll_chance_i(chance))
+ needConsume = false;
- break;
+ break;
+ }
}
+
+ if (needConsume)
+ for (uint32 i = 0; i < doses; ++i)
+ unitTarget->RemoveAuraFromStack(spellId);
+
+ damage *= doses;
+ damage += int32(player->GetTotalAttackPowerValue(BASE_ATTACK) * 0.09f * combo);
}
- if (needConsume)
- for (uint32 i = 0; i < doses; ++i)
- unitTarget->RemoveAuraFromStack(spellId);
- damage *= doses;
- damage += int32(((Player*)m_caster)->GetTotalAttackPowerValue(BASE_ATTACK) * 0.09f * doses);
+ // Eviscerate and Envenom Bonus Damage (item set effect)
+ if (m_caster->HasAura(37169))
+ damage += combo * 40;
}
- // Eviscerate and Envenom Bonus Damage (item set effect)
- if (m_caster->HasAura(37169))
- damage += ((Player*)m_caster)->GetComboPoints()*40;
}
}
// Eviscerate
- else if ((m_spellInfo->SpellFamilyFlags[0] & 0x00020000) && m_caster->GetTypeId() == TYPEID_PLAYER)
+ else if (m_spellInfo->SpellFamilyFlags[0] & 0x00020000)
{
- if (uint32 combo = ((Player*)m_caster)->GetComboPoints())
+ if (m_caster->GetTypeId() == TYPEID_PLAYER)
{
- float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
- damage += irand(int32(ap * combo * 0.03f), int32(ap * combo * 0.07f));
+ if (uint32 combo = ((Player*)m_caster)->GetComboPoints())
+ {
+ float ap = m_caster->GetTotalAttackPowerValue(BASE_ATTACK);
+ damage += irand(int32(ap * combo * 0.03f), int32(ap * combo * 0.07f));
- // Eviscerate and Envenom Bonus Damage (item set effect)
- if (m_caster->HasAura(37169))
- damage += combo*40;
+ // Eviscerate and Envenom Bonus Damage (item set effect)
+ if (m_caster->HasAura(37169))
+ damage += combo*40;
+ }
}
}
break;
@@ -6234,9 +6244,13 @@ void Spell::EffectCharge(SpellEffIndex /*effIndex*/)
if (!unitTarget)
return;
- float x, y, z;
- unitTarget->GetContactPoint(m_caster, x, y, z);
- m_caster->GetMotionMaster()->MoveCharge(x, y, z);
+ float angle = unitTarget->GetRelativeAngle(m_caster);
+ Position pos;
+
+ unitTarget->GetContactPoint(m_caster, pos.m_positionX, pos.m_positionY, pos.m_positionZ);
+ unitTarget->GetFirstCollisionPosition(pos, unitTarget->GetObjectSize(), angle);
+
+ m_caster->GetMotionMaster()->MoveCharge(pos.m_positionX, pos.m_positionY, pos.m_positionZ + unitTarget->GetObjectSize());
}
if (effectHandleMode == SPELL_EFFECT_HANDLE_HIT_TARGET)
@@ -6257,9 +6271,13 @@ void Spell::EffectChargeDest(SpellEffIndex /*effIndex*/)
if (m_targets.HasDst())
{
- float x, y, z;
- m_targets.GetDst()->GetPosition(x, y, z);
- m_caster->GetMotionMaster()->MoveCharge(x, y, z);
+ Position pos;
+ m_targets.GetDst()->GetPosition(&pos);
+ float angle = m_caster->GetRelativeAngle(pos.GetPositionX(), pos.GetPositionY());
+ float dist = m_caster->GetDistance(pos);
+ m_caster->GetFirstCollisionPosition(pos, dist, angle);
+
+ m_caster->GetMotionMaster()->MoveCharge(pos.m_positionX, pos.m_positionY, pos.m_positionZ);
}
}
diff --git a/src/server/game/Spells/SpellInfo.cpp b/src/server/game/Spells/SpellInfo.cpp
index 972276c7d26..463b46972fa 100644
--- a/src/server/game/Spells/SpellInfo.cpp
+++ b/src/server/game/Spells/SpellInfo.cpp
@@ -2304,6 +2304,19 @@ bool SpellInfo::_IsPositiveEffect(uint8 effIndex, bool deep) const
if (Id == 30708)
return false;
break;
+ case SPELLFAMILY_ROGUE:
+ switch (Id)
+ {
+ // Envenom must be considered as a positive effect even though it deals damage
+ case 32645: // Envenom (Rank 1)
+ case 32684: // Envenom (Rank 2)
+ case 57992: // Envenom (Rank 3)
+ case 57993: // Envenom (Rank 4)
+ return true;
+ default:
+ break;
+ }
+ break;
default:
break;
}
diff --git a/src/server/game/Spells/SpellMgr.cpp b/src/server/game/Spells/SpellMgr.cpp
index 058ddf7d269..7170aa818b5 100755
--- a/src/server/game/Spells/SpellMgr.cpp
+++ b/src/server/game/Spells/SpellMgr.cpp
@@ -3227,6 +3227,10 @@ void SpellMgr::LoadDbcDataCorrections()
// this needs research on modifier applying rules, does not seem to be in Attributes fields
spellInfo->EffectSpellClassMask[0] = flag96(0x00000040, 0x00000000, 0x00000000);
break;
+ case 63163: // Apply Enchanted Bridle (Argent Tournament)
+ spellInfo->EffectDieSides[0] = 0; // was 1, that should probably mean seat 0, but instead it's treated as spell 1
+ spellInfo->EffectBasePoints[0] = 52391; // Ride Vehicle (forces seat 0)
+ break;
case 19970: // Entangling Roots (Rank 6) -- Nature's Grasp Proc
case 19971: // Entangling Roots (Rank 5) -- Nature's Grasp Proc
case 19972: // Entangling Roots (Rank 4) -- Nature's Grasp Proc
diff --git a/src/server/game/World/World.h b/src/server/game/World/World.h
index 4c5c2596fa0..9354c14f51c 100755
--- a/src/server/game/World/World.h
+++ b/src/server/game/World/World.h
@@ -635,7 +635,7 @@ class World
/// Are we in the middle of a shutdown?
bool IsShuttingDown() const { return m_ShutdownTimer > 0; }
- uint32 const GetShutDownTimeLeft() { return m_ShutdownTimer; }
+ uint32 GetShutDownTimeLeft() const { return m_ShutdownTimer; }
void ShutdownServ(uint32 time, uint32 options, uint8 exitcode);
void ShutdownCancel();
void ShutdownMsg(bool show = false, Player* player = NULL);
diff --git a/src/server/scripts/Commands/cs_npc.cpp b/src/server/scripts/Commands/cs_npc.cpp
index b9ac21cc040..a5aa2a516f3 100644
--- a/src/server/scripts/Commands/cs_npc.cpp
+++ b/src/server/scripts/Commands/cs_npc.cpp
@@ -552,15 +552,13 @@ public:
handler->PSendSysMessage(LANG_NPCINFO_PHASEMASK, target->GetPhaseMask());
handler->PSendSysMessage(LANG_NPCINFO_ARMOR, target->GetArmor());
handler->PSendSysMessage(LANG_NPCINFO_POSITION, float(target->GetPositionX()), float(target->GetPositionY()), float(target->GetPositionZ()));
+ handler->PSendSysMessage(LANG_NPCINFO_AIINFO, target->GetAIName().c_str(), target->GetScriptName().c_str());
- if ((npcflags & UNIT_NPC_FLAG_VENDOR))
- {
+ if (npcflags & UNIT_NPC_FLAG_VENDOR)
handler->SendSysMessage(LANG_NPCINFO_VENDOR);
- }
- if ((npcflags & UNIT_NPC_FLAG_TRAINER))
- {
+
+ if (npcflags & UNIT_NPC_FLAG_TRAINER)
handler->SendSysMessage(LANG_NPCINFO_TRAINER);
- }
return true;
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
index 1a43472365a..798ea3925dc 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/boss_mal_ganis.cpp
@@ -34,7 +34,8 @@ enum Spells
H_SPELL_MIND_BLAST = 58850,
SPELL_SLEEP = 52721, //Puts an enemy to sleep for up to 10 sec. Any damage caused will awaken the target.
H_SPELL_SLEEP = 58849,
- SPELL_VAMPIRIC_TOUCH = 52723 //Heals the caster for half the damage dealt by a melee attack.
+ SPELL_VAMPIRIC_TOUCH = 52723, //Heals the caster for half the damage dealt by a melee attack.
+ SPELL_KILL_CREDIT = 58630 // Non-existing spell as encounter credit, created in spell_dbc
};
enum Yells
@@ -237,9 +238,8 @@ public:
{
instance->SetData(DATA_MAL_GANIS_EVENT, DONE);
- // give achievement credit to players. criteria use spell 58630 which doesn't exist.
- if (instance)
- instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET, 58630);
+ // give achievement credit and LFG rewards to players. criteria use spell 58630 which doesn't exist, but it was created in spell_dbc
+ DoCast(me, SPELL_KILL_CREDIT);
}
}
diff --git a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
index 82f16dd7784..7cbb1b91755 100644
--- a/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
+++ b/src/server/scripts/Kalimdor/CavernsOfTime/CullingOfStratholme/culling_of_stratholme.cpp
@@ -582,7 +582,7 @@ public:
{
Unit* pJaina = GetClosestCreatureWithEntry(me, NPC_JAINA, 50.0f);
if (!pJaina)
- pJaina = pJaina = me->SummonCreature(NPC_JAINA, 1895.48f, 1292.66f, 143.706f, 0.023475f, TEMPSUMMON_DEAD_DESPAWN, 180000);
+ pJaina = me->SummonCreature(NPC_JAINA, 1895.48f, 1292.66f, 143.706f, 0.023475f, TEMPSUMMON_DEAD_DESPAWN, 180000);
if (pJaina)
uiJainaGUID = pJaina->GetGUID();
bStepping = false;
diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
index fd84c1eec8a..f73e9779248 100644
--- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
+++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheChampion/boss_black_knight.cpp
@@ -54,8 +54,10 @@ enum eSpells
SPELL_BLACK_KNIGHT_RES = 67693,
- SPELL_LEAP = 67749,
- SPELL_LEAP_H = 67880
+ SPELL_LEAP = 67749,
+ SPELL_LEAP_H = 67880,
+
+ SPELL_KILL_CREDIT = 68663
};
enum eModels
@@ -288,6 +290,8 @@ public:
void JustDied(Unit* /*killer*/)
{
+ DoCast(me, SPELL_KILL_CREDIT);
+
if (instance)
instance->SetData(BOSS_BLACK_KNIGHT, DONE);
}
diff --git a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
index e552341fd1e..d877bbd0842 100644
--- a/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
+++ b/src/server/scripts/Northrend/DraktharonKeep/boss_tharon_ja.cpp
@@ -237,7 +237,8 @@ public:
for (Map::PlayerList::const_iterator i = PlayerList.begin(); i != PlayerList.end(); ++i)
if (Player* player = i->getSource())
player->DeMorph();
- instance->DoUpdateAchievementCriteria(ACHIEVEMENT_CRITERIA_TYPE_BE_SPELL_TARGET2, SPELL_ACHIEVEMENT_CHECK);
+
+ DoCast(me, SPELL_ACHIEVEMENT_CHECK);
instance->SetData(DATA_THARON_JA_EVENT, DONE);
}
diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
index 877971aa502..13c174a9607 100644
--- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
+++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_freya.cpp
@@ -590,7 +590,7 @@ class boss_freya : public CreatureScript
waveCount++;
}
- void JustDied(Unit* who)
+ void JustDied(Unit* /*who*/)
{
//! Freya's chest is dynamically spawned on death by different spells.
const uint32 summonSpell[2][4] =
diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
index dc2d34326a7..3712bd748a5 100644
--- a/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
+++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardeKeep/boss_ingvar_the_plunderer.cpp
@@ -173,7 +173,11 @@ public:
DoScriptText(YELL_DEAD_2, me);
if (instance)
+ {
+ // Ingvar has MOB_INGVAR_UNDEAD id in this moment, so we have to update encounter state for his original id
+ instance->UpdateEncounterState(ENCOUNTER_CREDIT_KILL_CREATURE, MOB_INGVAR_HUMAN, me);
instance->SetData(DATA_INGVAR_EVENT, DONE);
+ }
}
void KilledUnit(Unit* /*victim*/)
diff --git a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
index 4f837870612..5965c352975 100644
--- a/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
+++ b/src/server/scripts/Outland/HellfireCitadel/ShatteredHalls/boss_warchief_kargath_bladefist.cpp
@@ -303,9 +303,7 @@ class boss_warchief_kargath_bladefist : public CreatureScript
if (resetcheck_timer <= diff)
{
- uint32 tempx, tempy;
- tempx = uint32(me->GetPositionX());
- tempy = uint32(me->GetPositionY());
+ uint32 tempx = uint32(me->GetPositionX());
if (tempx > 255 || tempx < 205)
{
EnterEvadeMode();
diff --git a/src/server/scripts/Outland/nagrand.cpp b/src/server/scripts/Outland/nagrand.cpp
index c556253ecf1..bae3aa65b98 100644
--- a/src/server/scripts/Outland/nagrand.cpp
+++ b/src/server/scripts/Outland/nagrand.cpp
@@ -573,7 +573,7 @@ public:
{
Talk(SAY_KUR_MORE);
- if (Creature* temp = me->SummonCreature(NPC_KUR_MURK_PUTRIFIER, kurenaiAmbushB[0], kurenaiAmbushB[1], kurenaiAmbushB[2], 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000))
+ if (me->SummonCreature(NPC_KUR_MURK_PUTRIFIER, kurenaiAmbushB[0], kurenaiAmbushB[1], kurenaiAmbushB[2], 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000))
Talk(SAY_KUR_MORE_TWO);
me->SummonCreature(NPC_KUR_MURK_PUTRIFIER, kurenaiAmbushB[0]-2.5f, kurenaiAmbushB[1]-2.5f, kurenaiAmbushB[2], 0.0f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 25000);
diff --git a/src/server/scripts/Spells/spell_generic.cpp b/src/server/scripts/Spells/spell_generic.cpp
index 260b0c57563..af558d479a5 100644
--- a/src/server/scripts/Spells/spell_generic.cpp
+++ b/src/server/scripts/Spells/spell_generic.cpp
@@ -26,6 +26,8 @@
#include "SpellAuraEffects.h"
#include "SkillDiscovery.h"
#include "GridNotifiers.h"
+#include "Group.h"
+#include "LFGMgr.h"
class spell_gen_absorb0_hitlimit1 : public SpellScriptLoader
{
@@ -1419,6 +1421,53 @@ public:
}
};
+class spell_gen_luck_of_the_draw : public SpellScriptLoader
+{
+ public:
+ spell_gen_luck_of_the_draw() : SpellScriptLoader("spell_gen_luck_of_the_draw") { }
+
+ class spell_gen_luck_of_the_draw_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_gen_luck_of_the_draw_AuraScript);
+
+ // cheap hax to make it have update calls
+ void CalcPeriodic(AuraEffect const* /*effect*/, bool& isPeriodic, int32& amplitude)
+ {
+ isPeriodic = true;
+ amplitude = 5 * IN_MILLISECONDS;
+ }
+
+ void Update(AuraEffect* /*effect*/)
+ {
+ if (GetUnitOwner()->GetTypeId() != TYPEID_PLAYER)
+ return;
+
+ LFGDungeonEntry const* randomDungeon = sLFGDungeonStore.LookupEntry(*(sLFGMgr->GetSelectedDungeons(GetUnitOwner()->GetGUID()).begin()));
+ Group* group = GetUnitOwner()->ToPlayer()->GetGroup();
+ Map const* map = GetUnitOwner()->GetMap();
+ if (group && group->isLFGGroup())
+ if (uint32 dungeonId = sLFGMgr->GetDungeon(group->GetGUID(), true))
+ if (LFGDungeonEntry const* dungeon = sLFGDungeonStore.LookupEntry(dungeonId))
+ if (dungeon->map == map->GetId() && dungeon->difficulty == map->GetDifficulty())
+ if (randomDungeon && randomDungeon->type == LFG_TYPE_RANDOM)
+ return; // in correct dungeon
+
+ Remove(AURA_REMOVE_BY_DEFAULT);
+ }
+
+ void Register()
+ {
+ DoEffectCalcPeriodic += AuraEffectCalcPeriodicFn(spell_gen_luck_of_the_draw_AuraScript::CalcPeriodic, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);
+ OnEffectUpdatePeriodic += AuraEffectUpdatePeriodicFn(spell_gen_luck_of_the_draw_AuraScript::Update, EFFECT_0, SPELL_AURA_MOD_DAMAGE_PERCENT_DONE);
+ }
+ };
+
+ AuraScript* GetAuraScript() const
+ {
+ return new spell_gen_luck_of_the_draw_AuraScript();
+ }
+};
+
void AddSC_generic_spell_scripts()
{
new spell_gen_absorb0_hitlimit1();
@@ -1451,4 +1500,5 @@ void AddSC_generic_spell_scripts()
new spell_gen_vehicle_scaling();
new spell_gen_oracle_wolvar_reputation();
new spell_gen_damage_reduction_aura();
+ new spell_gen_luck_of_the_draw();
}
diff --git a/src/server/scripts/World/go_scripts.cpp b/src/server/scripts/World/go_scripts.cpp
index 3bb969977b6..44c3ab9bdc9 100644
--- a/src/server/scripts/World/go_scripts.cpp
+++ b/src/server/scripts/World/go_scripts.cpp
@@ -47,6 +47,7 @@ go_jotunheim_cage
go_table_theka
go_soulwell
go_bashir_crystalforge
+go_ethereal_teleport_pad
EndContentData */
#include "ScriptPCH.h"
@@ -922,6 +923,32 @@ public:
};
/*######
+## go_ethereal_teleport_pad
+######*/
+
+enum eEtherealTeleportPad
+{
+ NPC_IMAGE_WIND_TRADER = 20518,
+ ITEM_TELEPORTER_POWER_PACK = 28969,
+};
+
+class go_ethereal_teleport_pad : public GameObjectScript
+{
+public:
+ go_ethereal_teleport_pad() : GameObjectScript("go_ethereal_teleport_pad") { }
+
+ bool OnGossipHello(Player* player, GameObject* pGO)
+ {
+ if (!player->HasItemCount(ITEM_TELEPORTER_POWER_PACK, 1))
+ return false;
+
+ pGO->SummonCreature(NPC_IMAGE_WIND_TRADER, pGO->GetPositionX(), pGO->GetPositionY(), pGO->GetPositionZ(), pGO->GetAngle(player), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 60000);
+
+ return true;
+ }
+};
+
+/*######
## go_soulwell
######*/
@@ -1282,6 +1309,7 @@ void AddSC_go_scripts()
new go_jotunheim_cage;
new go_table_theka;
new go_inconspicuous_landmark;
+ new go_ethereal_teleport_pad;
new go_soulwell;
new go_tadpole_cage;
new go_dragonflayer_cage;
diff --git a/src/server/scripts/World/npcs_special.cpp b/src/server/scripts/World/npcs_special.cpp
index a5e5b467fc7..38a56f7b64a 100644
--- a/src/server/scripts/World/npcs_special.cpp
+++ b/src/server/scripts/World/npcs_special.cpp
@@ -1623,46 +1623,44 @@ public:
## npc_winter_reveler
####*/
+enum WinterReveler
+{
+ SPELL_MISTLETOE_DEBUFF = 26218,
+ SPELL_CREATE_MISTLETOE = 26206,
+ SPELL_CREATE_HOLLY = 26207,
+ SPELL_CREATE_SNOWFLAKES = 45036,
+};
+
class npc_winter_reveler : public CreatureScript
{
-public:
- npc_winter_reveler() : CreatureScript("npc_winter_reveler") { }
+ public:
+ npc_winter_reveler() : CreatureScript("npc_winter_reveler") { }
- struct npc_winter_revelerAI : public ScriptedAI
- {
- npc_winter_revelerAI(Creature* c) : ScriptedAI(c) {}
- void ReceiveEmote(Player* player, uint32 emote)
+ struct npc_winter_revelerAI : public ScriptedAI
{
- if (!IsHolidayActive(HOLIDAY_FEAST_OF_WINTER_VEIL))
- return;
- //TODO: check auralist.
- if (player->HasAura(26218))
- return;
+ npc_winter_revelerAI(Creature* c) : ScriptedAI(c) {}
- if (emote == TEXT_EMOTE_KISS)
+ void ReceiveEmote(Player* player, uint32 emote)
{
- me->CastSpell(me, 26218, false);
- player->CastSpell(player, 26218, false);
- switch (urand(0, 2))
+ if (player->HasAura(SPELL_MISTLETOE_DEBUFF))
+ return;
+
+ if (!IsHolidayActive(HOLIDAY_FEAST_OF_WINTER_VEIL))
+ return;
+
+ if (emote == TEXT_EMOTE_KISS)
{
- case 0:
- me->CastSpell(player, 26207, false);
- break;
- case 1:
- me->CastSpell(player, 26206, false);
- break;
- case 2:
- me->CastSpell(player, 45036, false);
- break;
+ uint32 spellId = RAND<uint32>(SPELL_CREATE_MISTLETOE, SPELL_CREATE_HOLLY, SPELL_CREATE_SNOWFLAKES);
+ me->CastSpell(player, spellId, false);
+ me->CastSpell(player, SPELL_MISTLETOE_DEBUFF, false);
}
}
- }
- };
+ };
- CreatureAI* GetAI(Creature* creature) const
- {
- return new npc_winter_revelerAI(creature);
- }
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_winter_revelerAI(creature);
+ }
};
/*####
@@ -1678,8 +1676,6 @@ public:
#define C_VIPER 19921
-#define RAND 5
-
class npc_snake_trap : public CreatureScript
{
public:
@@ -1726,7 +1722,7 @@ public:
float attackRadius = me->GetAttackDistance(who);
if (me->IsWithinDistInMap(who, attackRadius) && me->IsWithinLOSInMap(who))
{
- if (!(rand() % RAND))
+ if (!(rand() % 5))
{
me->setAttackTimer(BASE_ATTACK, (rand() % 10) * 100);
SpellTimer = (rand() % 10) * 100;
@@ -2164,6 +2160,121 @@ public:
};
/*######
+# npc_fire_elemental
+######*/
+#define SPELL_FIRENOVA 12470
+#define SPELL_FIRESHIELD 13376
+#define SPELL_FIREBLAST 57984
+
+class npc_fire_elemental : public CreatureScript
+{
+public:
+ npc_fire_elemental() : CreatureScript("npc_fire_elemental") { }
+
+ struct npc_fire_elementalAI : public ScriptedAI
+ {
+ npc_fire_elementalAI(Creature* creature) : ScriptedAI(creature) {}
+
+ uint32 FireNova_Timer;
+ uint32 FireShield_Timer;
+ uint32 FireBlast_Timer;
+
+ void Reset()
+ {
+ FireNova_Timer = 5000 + rand() % 15000; // 5-20 sec cd
+ FireBlast_Timer = 5000 + rand() % 15000; // 5-20 sec cd
+ FireShield_Timer = 0;
+ me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_FIRE, true);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (me->HasUnitState(UNIT_STAT_CASTING))
+ return;
+
+ if (FireShield_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FIRESHIELD);
+ FireShield_Timer = 2 * IN_MILLISECONDS;
+ }
+ else
+ FireShield_Timer -= diff;
+
+ if (FireBlast_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FIREBLAST);
+ FireBlast_Timer = 5000 + rand() % 15000; // 5-20 sec cd
+ }
+ else
+ FireBlast_Timer -= diff;
+
+ if (FireNova_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_FIRENOVA);
+ FireNova_Timer = 5000 + rand() % 15000; // 5-20 sec cd
+ }
+ else
+ FireNova_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ };
+
+ CreatureAI *GetAI(Creature* creature) const
+ {
+ return new npc_fire_elementalAI(creature);
+ }
+};
+
+/*######
+# npc_earth_elemental
+######*/
+#define SPELL_ANGEREDEARTH 36213
+
+class npc_earth_elemental : public CreatureScript
+{
+public:
+ npc_earth_elemental() : CreatureScript("npc_earth_elemental") { }
+
+ struct npc_earth_elementalAI : public ScriptedAI
+ {
+ npc_earth_elementalAI(Creature* creature) : ScriptedAI(creature) {}
+
+ uint32 AngeredEarth_Timer;
+
+ void Reset()
+ {
+ AngeredEarth_Timer = 0;
+ me->ApplySpellImmune(0, IMMUNITY_SCHOOL, SPELL_SCHOOL_MASK_NATURE, true);
+ }
+
+ void UpdateAI(const uint32 diff)
+ {
+ if (!UpdateVictim())
+ return;
+
+ if (AngeredEarth_Timer <= diff)
+ {
+ DoCast(me->getVictim(), SPELL_ANGEREDEARTH);
+ AngeredEarth_Timer = 5000 + rand() % 15000; // 5-20 sec cd
+ }
+ else
+ AngeredEarth_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ };
+
+ CreatureAI *GetAI(Creature* creature) const
+ {
+ return new npc_earth_elementalAI(creature);
+ }
+};
+
+/*######
# npc_wormhole
######*/
@@ -2673,5 +2784,7 @@ void AddSC_npcs_special()
new npc_locksmith;
new npc_tabard_vendor;
new npc_experience;
+ new npc_fire_elemental;
+ new npc_earth_elemental;
}
diff --git a/src/server/shared/Database/DatabaseWorkerPool.h b/src/server/shared/Database/DatabaseWorkerPool.h
index adf5902a591..f1d01661210 100755
--- a/src/server/shared/Database/DatabaseWorkerPool.h
+++ b/src/server/shared/Database/DatabaseWorkerPool.h
@@ -158,6 +158,7 @@ class DatabaseWorkerPool
}
//! Enqueues a one-way SQL operation in prepared statement format that will be executed asynchronously.
+ //! Statement must be prepared with CONNECTION_ASYNC flag.
void Execute(PreparedStatement* stmt)
{
PreparedStatementTask* task = new PreparedStatementTask(stmt);
@@ -195,6 +196,7 @@ class DatabaseWorkerPool
}
//! Directly executes a one-way SQL operation in prepared statement format, that will block the calling thread until finished.
+ //! Statement must be prepared with the CONNECTION_SYNCH flag.
void DirectExecute(PreparedStatement* stmt)
{
T* t = GetFreeConnection();
@@ -203,7 +205,7 @@ class DatabaseWorkerPool
}
/**
- Syncrhonous query (with resultset) methods.
+ Synchronous query (with resultset) methods.
*/
//! Directly executes an SQL query in string format that will block the calling thread until finished.
@@ -256,6 +258,7 @@ class DatabaseWorkerPool
//! Directly executes an SQL query in prepared format that will block the calling thread until finished.
//! Returns reference counted auto pointer, no need for manual memory management in upper level code.
+ //! Statement must be prepared with CONNECTION_SYNCH flag.
PreparedQueryResult Query(PreparedStatement* stmt)
{
T* t = GetFreeConnection();
@@ -297,6 +300,7 @@ class DatabaseWorkerPool
//! Enqueues a query in prepared format that will set the value of the PreparedQueryResultFuture return object as soon as the query is executed.
//! The return value is then processed in ProcessQueryCallback methods.
+ //! Statement must be prepared with CONNECTION_ASYNC flag.
PreparedQueryResultFuture AsyncQuery(PreparedStatement* stmt)
{
PreparedQueryResultFuture res;
@@ -308,6 +312,7 @@ class DatabaseWorkerPool
//! Enqueues a vector of SQL operations (can be both adhoc and prepared) that will set the value of the QueryResultHolderFuture
//! return object as soon as the query is executed.
//! The return value is then processed in ProcessQueryCallback methods.
+ //! Any prepared statements added to this holder need to be prepared with the CONNECTION_ASYNC flag.
QueryResultHolderFuture DelayQueryHolder(SQLQueryHolder* holder)
{
QueryResultHolderFuture res;
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.cpp b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
index f93c4a70d7c..248c39018b2 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.cpp
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.cpp
@@ -26,7 +26,7 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_ADD_QUEST_POOL_SAVE, "INSERT INTO pool_quest_save (pool_id, quest_id) VALUES (?, ?)", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_NONEXISTENT_GUILD_BANK_ITEM, "DELETE FROM guild_bank_item WHERE guildid = ? AND TabId = ? AND SlotId = ?", CONNECTION_ASYNC)
PREPARE_STATEMENT(CHAR_DEL_EXPIRED_BANS, "UPDATE character_banned SET active = 0 WHERE unbandate <= UNIX_TIMESTAMP() AND unbandate <> bandate", CONNECTION_ASYNC)
- PREPARE_STATEMENT(CHAR_GET_GUID_BY_NAME, "SELECT guid FROM characters WHERE name = ?", CONNECTION_SYNCH);
+ PREPARE_STATEMENT(CHAR_GET_GUID_BY_NAME, "SELECT guid FROM characters WHERE name = ?", CONNECTION_SYNCH | CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_GET_CHECK_NAME, "SELECT 1 FROM characters WHERE name = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_GET_SUM_CHARS, "SELECT COUNT(guid) FROM characters WHERE account = ?", CONNECTION_ASYNC);
PREPARE_STATEMENT(CHAR_GET_CHAR_CREATE_INFO, "SELECT level, race, class FROM characters WHERE account = ? LIMIT 0, ?", CONNECTION_ASYNC);
@@ -36,6 +36,10 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_GET_GUID_BY_NAME_FILTER, "SELECT guid, name FROM characters WHERE name LIKE CONCAT('%', ?, '%')", CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_GET_BANINFO_LIST, "SELECT bandate, unbandate, bannedby, banreason FROM character_banned WHERE guid = ? ORDER BY unbandate", CONNECTION_SYNCH)
PREPARE_STATEMENT(CHAR_GET_BANNED_NAME, "SELECT characters.name FROM characters, character_banned WHERE character_banned.guid = ? AND character_banned.guid = characters.guid", CONNECTION_SYNCH)
+ PREPARE_STATEMENT(CHAR_GET_ENUM, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN guild_member AS gm ON c.guid = gm.guid LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_GET_ENUM_DECLINED_NAME, "SELECT c.guid, c.name, c.race, c.class, c.gender, c.playerBytes, c.playerBytes2, c.level, c.zone, c.map, c.position_x, c.position_y, c.position_z, gm.guildid, c.playerFlags, c.at_login, cp.entry, cp.modelid, cp.level, c.equipmentCache, cb.guid, cd.genitive FROM characters AS c LEFT JOIN character_pet AS cp ON c.guid = cp.owner AND cp.slot = ? LEFT JOIN character_declinedname AS cd ON c.guid = cd.guid LEFT JOIN guild_member AS gm ON c.guid = gm.guid LEFT JOIN character_banned AS cb ON c.guid = cb.guid AND cb.active = 1 WHERE c.account = ? ORDER BY c.guid", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_GET_PET_SLOTS, "SELECT owner, slot FROM character_pet WHERE owner = ? AND slot >= ? AND slot <= ? ORDER BY slot", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_GET_FREE_NAME, "SELECT guid, name FROM characters WHERE guid = ? AND account = ? AND (at_login & ?) = ? AND NOT EXISTS (SELECT NULL FROM characters WHERE name = ?)", CONNECTION_ASYNC);
// Start LoginQueryHolder content
PREPARE_STATEMENT(CHAR_LOAD_PLAYER, "SELECT guid, account, name, race, class, gender, level, xp, money, playerBytes, playerBytes2, playerFlags, "
@@ -111,6 +115,8 @@ void CharacterDatabaseConnection::DoPrepareStatements()
PREPARE_STATEMENT(CHAR_LOAD_PLAYER_NAME_CLASS, "SELECT name, class FROM characters WHERE guid = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_LOAD_MATCH_MAKER_RATING, "SELECT matchMakerRating FROM character_arena_stats WHERE guid = ? AND slot = ?", CONNECTION_SYNCH);
PREPARE_STATEMENT(CHAR_GET_CHARACTER_COUNT, "SELECT account, COUNT(guid) FROM characters WHERE account = ? GROUP BY account", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_UPDATE_NAME, "UPDATE characters set name = ?, at_login = at_login & ~ ? WHERE guid = ?", CONNECTION_ASYNC);
+ PREPARE_STATEMENT(CHAR_DEL_DECLINED_NAME, "DELETE FROM character_declinedname WHERE guid = ?", CONNECTION_ASYNC);
// Guild handling
// 0: uint32, 1: string, 2: uint32, 3: string, 4: string, 5: uint64, 6-10: uint32, 11: uint64
diff --git a/src/server/shared/Database/Implementation/CharacterDatabase.h b/src/server/shared/Database/Implementation/CharacterDatabase.h
index f06a17aa924..adaa9d2709c 100755
--- a/src/server/shared/Database/Implementation/CharacterDatabase.h
+++ b/src/server/shared/Database/Implementation/CharacterDatabase.h
@@ -56,6 +56,10 @@ enum CharacterDatabaseStatements
CHAR_GET_GUID_BY_NAME_FILTER,
CHAR_GET_BANINFO_LIST,
CHAR_GET_BANNED_NAME,
+ CHAR_GET_ENUM,
+ CHAR_GET_ENUM_DECLINED_NAME,
+ CHAR_GET_PET_SLOTS,
+ CHAR_GET_FREE_NAME,
CHAR_LOAD_PLAYER,
CHAR_LOAD_PLAYER_GROUP,
CHAR_LOAD_PLAYER_BOUNDINSTANCES,
@@ -120,6 +124,8 @@ enum CharacterDatabaseStatements
CHAR_LOAD_PLAYER_NAME_CLASS,
CHAR_LOAD_MATCH_MAKER_RATING,
CHAR_GET_CHARACTER_COUNT,
+ CHAR_UPDATE_NAME,
+ CHAR_DEL_DECLINED_NAME,
CHAR_ADD_GUILD,
CHAR_DEL_GUILD,
diff --git a/src/server/worldserver/CommandLine/CliRunnable.cpp b/src/server/worldserver/CommandLine/CliRunnable.cpp
index 564f6028eca..61352521d9f 100755
--- a/src/server/worldserver/CommandLine/CliRunnable.cpp
+++ b/src/server/worldserver/CommandLine/CliRunnable.cpp
@@ -104,7 +104,7 @@ void utf8print(void* /*arg*/, const char* str)
printf(temp_buf);
#else
{
- printf(str);
+ printf("%s", str);
fflush(stdout);
}
#endif
diff --git a/src/server/worldserver/RemoteAccess/RASocket.cpp b/src/server/worldserver/RemoteAccess/RASocket.cpp
index 71d4d1df035..82238ee54bc 100755
--- a/src/server/worldserver/RemoteAccess/RASocket.cpp
+++ b/src/server/worldserver/RemoteAccess/RASocket.cpp
@@ -286,7 +286,7 @@ int RASocket::subnegotiate()
if (n >= 1024)
{
- sLog->outRemote("RASocket::subnegotiate: allocated buffer 1024 bytes was too small for negotiation packet, size: %u", n);
+ sLog->outRemote("RASocket::subnegotiate: allocated buffer 1024 bytes was too small for negotiation packet, size: %u", uint32(n));
return -1;
}