aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVincent_Michael <Vincent_Michael@gmx.de>2013-12-20 17:26:27 +0100
committerVincent_Michael <Vincent_Michael@gmx.de>2013-12-20 17:26:27 +0100
commit736093e91b2efee9cb7df37d32fd6705018a6eb5 (patch)
treed76ca2cf1b4f5a65bf460ddeadebc7634da264af
parent2ded11354de44d6dd7ce6bd222ac188f8fbc3c9c (diff)
parent06d42afba09c7048ed42f3e1d923a2a5b6dca93c (diff)
Merge branch 'master' of github.com:TrinityCore/TrinityCore into 4.3.4
Conflicts: src/server/game/DungeonFinding/LFGMgr.cpp src/server/scripts/Kalimdor/zone_silithus.cpp
-rw-r--r--sql/updates/world/2013_12_18_02_world_misc.sql4
-rw-r--r--sql/updates/world/2013_12_19_00_world_misc.sql71
-rw-r--r--sql/updates/world/2013_12_19_01_world_sai.sql525
-rw-r--r--sql/updates/world/2013_12_19_02_world_sai.sql49
-rw-r--r--sql/updates/world/2013_12_19_03_world_misc.sql30
-rw-r--r--sql/updates/world/2013_12_19_04_world_misc.sql28
-rw-r--r--sql/updates/world/2013_12_20_00_world_misc.sql112
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp4
-rw-r--r--src/server/game/DungeonFinding/LFGMgr.cpp149
-rw-r--r--src/server/game/DungeonFinding/LFGQueue.cpp42
-rw-r--r--src/server/scripts/Kalimdor/zone_silithus.cpp79
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp32
-rw-r--r--src/server/scripts/Outland/zone_shadowmoon_valley.cpp72
-rw-r--r--src/server/shared/Logging/Log.cpp3
-rw-r--r--src/server/shared/Logging/Log.h52
15 files changed, 954 insertions, 298 deletions
diff --git a/sql/updates/world/2013_12_18_02_world_misc.sql b/sql/updates/world/2013_12_18_02_world_misc.sql
index a52a71948b2..ea7276481d7 100644
--- a/sql/updates/world/2013_12_18_02_world_misc.sql
+++ b/sql/updates/world/2013_12_18_02_world_misc.sql
@@ -61,9 +61,9 @@ INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`
UPDATE `creature` SET `spawndist`=5,`MovementType`=1 WHERE `guid`=74216;
UPDATE `creature` SET `spawndist`=10,`MovementType`=1 WHERE `id`=21423;
UPDATE `creature` SET `spawndist`=0,`MovementType`=0 WHERE `guid` IN (74147,74148,74149,74151,74152,74153,74154,74156);
-UPDATE `Creature_template` SET InhabitType=4 WHERE `entry`=21757;
+UPDATE `creature_template` SET InhabitType=4 WHERE `entry`=21757;
UPDATE `creature_template` SET `InhabitType`=4, `flags_extra`=`flags_extra`|128 WHERE `entry` IN (21393,21413,21819);
-UPDATE `Creature_template_addon` SET bytes2=258 WHERE `entry`=21115;
+UPDATE `creature_template_addon` SET bytes2=258 WHERE `entry`=21115;
DELETE FROM `creature_template_addon` WHERE `entry`=21441;
INSERT INTO `creature_template_addon` (`entry`,`path_id`,`bytes2`,`emote`,`auras`) VALUES (21441,0,258,214, '');
diff --git a/sql/updates/world/2013_12_19_00_world_misc.sql b/sql/updates/world/2013_12_19_00_world_misc.sql
new file mode 100644
index 00000000000..a3d83ad2a3a
--- /dev/null
+++ b/sql/updates/world/2013_12_19_00_world_misc.sql
@@ -0,0 +1,71 @@
+-- Grovestalker Lynx SAI "Missing AI"
+SET @ENTRY := 21022;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+UPDATE `creature` SET `curhealth`=1 WHERE `id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,4,0,100,0,0,0,0,0,11,36589,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grovestalker Lynx - On Aggro - Cast Dash");
+
+-- Fey Drake SAI "Missing AI"
+SET @ENTRY := 20713;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+UPDATE `creature` SET `curhealth`=1, `curmana`=0 WHERE `id`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,0,12000,12000,12000,15000,11,11981,0,0,0,0,0,2,0,0,0,0,0,0,0,"Fey Drake - In Combat - Cast Mana Burn"),
+(@ENTRY,0,1,0,0,0,100,0,5000,6000,5000,7000,11,36718,0,0,0,0,0,1,0,0,0,0,0,0,0,"Fey Drake - In Combat - Cast Blink");
+
+-- Pathing for High Commander Halford Wyrmbane Entry: 27136
+SET @NPC := 131105;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=3767.499,`position_y`=-775.0477,`position_z`=196.087 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,3767.499,-775.0477,196.087,0,0,0,100,0),
+(@PATH,2,3776.538,-783.3422,196.087,0,0,0,100,0);
+
+-- Pathing for Stronglimb Deeproot Entry: 21023
+SET @NPC := 73833;
+SET @PATH := @NPC * 10;
+UPDATE `creature` SET `spawndist`=0,`MovementType`=2,`position_x`=1562.740,`position_y`=6815.711,`position_z`=126.20748 WHERE `guid`=@NPC;
+UPDATE `creature_template_addon` SET `path_id`=@PATH WHERE `entry`=21023;
+DELETE FROM `waypoint_data` WHERE `id`=@PATH;
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+(@PATH,1,1562.740,6815.711,126.20748,0,0,0,0,100,0),
+(@PATH,2,1579.44,6823.31,128.221,0,0,0,0,100,0),
+(@PATH,3,1596.410,6824.691,129.57422,0,0,0,0,100,0),
+(@PATH,4,1613.536,6820.844,130.43893,0,0,0,0,100,0),
+(@PATH,5,1626.575,6815.952,131.11913,0,0,0,0,100,0),
+(@PATH,6,1647.335,6811.267,132.32887,0,0,0,0,100,0),
+(@PATH,7,1666.315,6811.949,134.0304,0,0,0,0,100,0),
+(@PATH,8,1682.469,6819.250,135.48557,0,0,0,0,100,0),
+(@PATH,9,1704.364,6826.659,135.97731,0,0,0,0,100,0),
+(@PATH,10,1723.946,6822.768,136.24043,0,0,0,0,100,0),
+(@PATH,11,1744.097,6815.729,136.71513,0,0,0,0,100,0),
+(@PATH,12,1767.085,6807.892,137.25296,0,0,0,0,100,0),
+(@PATH,13,1794.797,6805.661,137.31673,0,0,0,0,100,0),
+(@PATH,14,1824.876,6814.818,138.48926,0,0,0,0,100,0),
+(@PATH,15,1851.305,6823.799,141.24908,0,0,0,0,100,0),
+(@PATH,16,1877.366,6829.852,144.43327,0,0,0,0,100,0),
+(@PATH,17,1897.890,6833.999,146.215,0,0,0,0,100,0),
+(@PATH,18,1907.787,6835.113,147.04056,3.015979,30000,0,0,100,0),
+(@PATH,19,1897.890,6833.999,146.215,0,0,0,0,100,0),
+(@PATH,20,1877.366,6829.852,144.43327,0,0,0,0,100,0),
+(@PATH,21,1851.305,6823.799,141.24908,0,0,0,0,100,0),
+(@PATH,22,1824.876,6814.818,138.48926,0,0,0,0,100,0),
+(@PATH,23,1794.797,6805.661,137.31673,0,0,0,0,100,0),
+(@PATH,24,1767.085,6807.892,137.25296,0,0,0,0,100,0),
+(@PATH,25,1744.097,6815.729,136.71513,0,0,0,0,100,0),
+(@PATH,26,1723.946,6822.768,136.24043,0,0,0,0,100,0),
+(@PATH,27,1704.364,6826.659,135.97731,0,0,0,0,100,0),
+(@PATH,28,1682.469,6819.250,135.48557,0,0,0,0,100,0),
+(@PATH,29,1666.315,6811.949,134.03040,0,0,0,0,100,0),
+(@PATH,30,1647.335,6811.267,132.32887,0,0,0,0,100,0),
+(@PATH,31,1626.575,6815.952,131.11913,0,0,0,0,100,0),
+(@PATH,32,1613.536,6820.844,130.43893,0,0,0,0,100,0),
+(@PATH,33,1596.410,6824.691,129.57422,0,0,0,0,100,0),
+(@PATH,34,1579.440,6823.310,128.22100,0,0,0,0,100,0),
+(@PATH,35,1562.740,6815.711,126.20748,0,0,0,0,100,0),
+(@PATH,36,1548.781,6810.126,124.27861,2.58955,30000,0,0,100,0);
diff --git a/sql/updates/world/2013_12_19_01_world_sai.sql b/sql/updates/world/2013_12_19_01_world_sai.sql
new file mode 100644
index 00000000000..e282faa7a23
--- /dev/null
+++ b/sql/updates/world/2013_12_19_01_world_sai.sql
@@ -0,0 +1,525 @@
+-- Bloodmaul Skirmisher SAI
+SET @ENTRY := 19948;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Skirmisher - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Skirmisher - On Aggro - Say text 0"),
+(@ENTRY,0,2,0,2,0,100,0,10000,12000,10000,12000,11,37786,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Skirmisher - In Combat - Cast Bloodmaul Rage");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Skirmisher on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Skirmisher on Aggro Text'),
+(@ENTRY,0,2, 'Me angered. Raaah!',12,0,100,0,0,0, 'Bloodmaul Skirmisher on Aggro Text'),
+(@ENTRY,0,3, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Skirmisher on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Skirmisher on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Skirmisher says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Mauler SAI
+SET @ENTRY := 19993;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Mauler - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Mauler - On Aggro - Say text 0"),
+(@ENTRY,0,2,0,2,0,100,0,10000,12000,10000,12000,11,37786,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Mauler - In Combat - Cast Bloodmaul Rage");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Mauler on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Mauler on Aggro Text'),
+(@ENTRY,0,2, 'Me angered. Raaah!',12,0,100,0,0,0, 'Bloodmaul Mauler on Aggro Text'),
+(@ENTRY,0,3, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Mauler on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Mauler on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Mauler says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Warlock SAI
+SET @ENTRY := 19994;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Warlock - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,1,0,100,0,1000,1000,1800000,1800000,11,13787,1,1,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Warlock - Out Of Combat - Cast Demon Armor"),
+(@ENTRY,0,2,0,1,0,100,0,3000,3000,0,0,11,11939,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Warlock - Out Of Combat - Cast Summon Imp"),
+(@ENTRY,0,3,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Warlock - On Aggro - Say text 0"),
+(@ENTRY,0,4,0,0,0,100,0,0,0,2400,3800,11,20825,64,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Warlock - In Combat - Cast Shadow Bolt"),
+(@ENTRY,0,5,0,2,0,100,1,0,20,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Warlock - Between 0-20% Health - Flee for assist");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bloodmaul Warlock on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Warlock on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Warlock on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Warlock on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Warlock says text on death if quest 11000 is rewarded');
+
+-- Bladespire Crusher SAI
+SET @ENTRY := 20765;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Crusher - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Crusher - on Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,3000,5000,10000,20000,11,15496,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Crusher - In Combat - Cast Cleave'),
+(@ENTRY,0,3,4,2,0,100,0,0,30,35000,45000,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Crusher - HP below 30% - Cast Enrage'),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Crusher - HP below 30% - Say text 2");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Crusher on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Crusher on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Crusher on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Crusher on death Quest 11000 complete'),
+(@ENTRY,2,0, '%s becomes enraged!',16,0,100,0,0,0, 'Bladespire Crusher on enrage');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Crusher says text on death if quest 11000 is rewarded');
+
+-- Bladespire Mystic SAI
+SET @ENTRY := 20766;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Mystic - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Mystic - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,1,0,100,0,500,1000,600000,600000,11,12550,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Mystic - Out of Combat - Cast Lightning Shield'),
+(@ENTRY,0,3,0,0,0,100,0,6000,9000,17000,17000,11,37599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Mystic - In Combat - Cast Bloodlust'),
+(@ENTRY,0,4,0,14,0,100,0,3000,40,15000,18000,11,11986,0,0,0,0,0,7,0,0,0,0,0,0,0,'Bladespire Mystic - Friendly HP below 60% - Cast Healing Wave');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Mystic on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Mystic on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Mystic on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Mystic on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Mystic says text on death if quest 11000 is rewarded');
+
+-- Gnosh Brognat SAI
+SET @ENTRY := 20768;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Gnosh Brognat - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Gnosh Brognat - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,15000,20000,15000,20000,11,37597,0,0,0,0,0,2,0,0,0,0,0,0,0,'Gnosh Brognat - In Combat - Cast Meat Slap'),
+(@ENTRY,0,3,0,0,0,100,0,15000,20000,15000,20000,11,37596,32,0,0,0,0,2,0,0,0,0,0,0,0,'Gnosh Brognat - In Combat - Cast Tenderize');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Gnosh Brognat on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Gnosh Brognat on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Gnosh Brognat on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Gnosh Brognat on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Gnosh Brognat says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Drudger SAI
+SET @ENTRY := 21238;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Drudger - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Drudger - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,9000,9000,30000,30000,11,35918,0,0,0,0,0,2,0,0,0,0,0,0,0,'Bloodmaul Drudger - In Combat - Cast Puncture Armor'),
+(@ENTRY,0,3,4,2,0,100,0,0,30,35000,45000,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Drudger - HP below 30% - Cast Enrage'),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Drudger - HP below 30% - Say text 2");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Drudger on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Drudger on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Drudger on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Drudger on death Quest 11000 complete'),
+(@ENTRY,2,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Bloodmaul Drudger on enrage');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Drudger says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Brute SAI
+SET @ENTRY := 19991;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Brute - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Brute - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,9000,12000,9000,12000,11,15496,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Brute - In Combat - Cast Cleave'),
+(@ENTRY,0,3,0,0,0,100,0,15000,15000,18000,22000,11,37577,0,0,0,0,0,2,0,0,0,0,0,0,0,'Bloodmaul Brute - In Combat - Cast Debilitating Strike'),
+(@ENTRY,0,4,5,2,0,100,0,0,30,35000,45000,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Brute - HP below 30% - Cast Enrage'),
+(@ENTRY,0,5,0,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Brute - HP below 30% - Say text 2");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Brute on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Brute on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Brute on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Brute on death Quest 11000 complete'),
+(@ENTRY,2,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Bloodmaul Brute on enrage');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Brute says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Shaman SAI
+SET @ENTRY := 19992;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Shaman - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,1,0,100,0,0,0,60000,60000,11,12550,1,1,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Shaman - Out Of Combat - Cast Lightning Shield"),
+(@ENTRY,0,2,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Shaman - On Aggro - Say text 0"),
+(@ENTRY,0,3,0,0,0,50,0,6000,6000,50000,50000,11,15038,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Shaman - In Combat - Cast Scorching Totem"),
+(@ENTRY,0,4,0,0,0,100,0,12000,12000,45000,45000,11,15869,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Shaman - In Combat - Cast Superior Healing Ward");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bloodmaul Shaman on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Shaman on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Shaman on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Shaman on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Shaman says text on death if quest 11000 is rewarded');
+
+-- Grimnok Battleborn SAI
+SET @ENTRY := 20095;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Grimnok Battleborn - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,0,0,100,0,6000,10000,6000,10000,11,15496,0,0,0,0,0,1,0,0,0,0,0,0,0,'Grimnok Battleborn - In Combat - Cast Cleave'),
+(@ENTRY,0,2,3,0,0,100,0,10000,12000,10000,12000,11,37786,0,0,0,0,0,1,0,0,0,0,0,0,0,'Grimnok Battleborn - In Combat - Cast Bloodmaul Rage'),
+(@ENTRY,0,3,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Grimnok Battleborn - In Combat - Say text 0 when cast Cast Bloodmaul Rage"),
+(@ENTRY,0,4,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Grimnok Battleborn - On Aggro - Say text 0"),
+(@ENTRY,0,5,0,1,0,100,0,120000,120000,180000,180000,1,2,0,0,0,0,0,1,0,0,0,0,0,0,0,"Grimnok Battleborn - Out of Combat - Say text 2");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Grimnok Battleborn on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Grimnok Battleborn on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Grimnok Battleborn on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Grimnok Battleborn on death Quest 11000 complete'),
+(@ENTRY,2,0, 'You! I see you! One of you, kill them!',14,0,100,0,0,0, 'Grimnok Battleborn OOC'),
+(@ENTRY,2,1, 'Don''t let any escape, you dogs!',14,0,100,0,0,0, 'Grimnok Battleborn OOC'),
+(@ENTRY,2,2, 'I want these Alliance and Horde pigs dead!',14,0,100,0,0,0, 'Grimnok Battleborn OOC'),
+(@ENTRY,2,3, 'Get up there. March on Bladespire Hold. I want to adorn my tower with Gorr''Dim''s head!',14,0,100,0,0,0, 'Grimnok Battleborn OOC');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Grimnok Battleborn says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Brewmaster SAI
+SET @ENTRY := 19957;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Brewmaster - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Brewmaster - On Aggro - Say text 0"),
+(@ENTRY,0,2,0,0,0,85,0,6000,6000,30000,35000,11,37591,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Brewmaster - In Combat - Cast Drunken Haze");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Brewmaster on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Brewmaster on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Brewmaster on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Brewmaster on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Brewmaster says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Geomancer SAI
+SET @ENTRY := 19952;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Geomancer - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Geomancer - On Aggro - Say text 0"),
+(@ENTRY,0,2,0,1,0,100,0,0,0,1800000,1800000,11,12544,33,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Geomancer - Out Of Combat - Cast Frost Armor"),
+(@ENTRY,0,3,0,4,0,50,0,0,0,0,0,11,6136,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Geomancer - On Aggro - Cast Chilled"),
+(@ENTRY,0,4,0,0,0,100,0,0,0,2400,3800,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Geomancer - In Combat CMC - Cast Fireball");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bloodmaul Geomancer on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Geomancer on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Geomancer on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Geomancer on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Geomancer says text on death if quest 11000 is rewarded');
+
+-- Bladespire Brute SAI
+SET @ENTRY := 19995;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Brute - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Brute - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,9000,12000,8000,18000,11,15496,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Brute - In Combat - Cast Cleave');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Brute on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Brute on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Brute on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Brute on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Brute says text on death if quest 11000 is rewarded');
+
+-- Bladespire Shaman SAI
+SET @ENTRY := 19998;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Shaman - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,1,0,100,0,0,0,60000,60000,11,12550,1,1,0,0,0,1,0,0,0,0,0,0,0,"Bladespire Shaman - Out Of Combat - Cast Lightning Shield"),
+(@ENTRY,0,2,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Shaman - On Aggro - Say text 0"),
+(@ENTRY,0,3,0,0,0,100,0,2000,4000,8000,12000,11,26098,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Shaman - In Combat - Cast Lightning Bolt");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bladespire Shaman on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Shaman on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bladespire Shaman on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Shaman on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Shaman says text on death if quest 11000 is rewarded');
+
+-- Bladespire Cook SAI
+SET @ENTRY := 20334;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' 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,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Cook - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Cook - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,15000,20000,15000,20000,11,37597,0,0,0,0,0,2,0,0,0,0,0,0,0,'Bladespire Cook - In Combat - Cast Meat Slap'),
+(@ENTRY,0,3,0,0,0,100,0,15000,20000,15000,20000,11,37596,32,0,0,0,0,2,0,0,0,0,0,0,0,'Bladespire Cook - In Combat - Cast Tenderize');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Cook on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Cook on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Cook on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Cook on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Cook says text on death if quest 11000 is rewarded');
+
+-- Bladespire Champion SAI
+SET @ENTRY := 21296;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Champion - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Champion - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,10000,14000,11000,22000,11,8078,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Champion - In Combat - Cast Thunderclap'),
+(@ENTRY,0,3,0,9,0,100,0,5,10,2000,2000,11,37777,0,0,0,0,0,2,0,0,0,0,0,0,0,'Bladespire Champion - Range 5 - 10 yards - Cast Mighty Charge');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Champion on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Champion on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Champion on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Champion on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Champion says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Taskmaster SAI
+SET @ENTRY := 22160;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Taskmaster - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Taskmaster - On Aggro - Say Text 0'),
+(@ENTRY,0,2,3,0,0,100,0,10000,12000,10000,12000,11,37786,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bloodmaul Taskmaster - In Combat - Cast Bloodmaul Rage'),
+(@ENTRY,0,3,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Taskmaster - In Combat - Say text 0 when cast Cast Bloodmaul Rage");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bloodmaul Taskmaster on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bloodmaul Taskmaster on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Taskmaster on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Taskmaster on death Quest 11000 complete'),
+(@ENTRY,2,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Bloodmaul Taskmaster on enrage');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Taskmaster says text on death if quest 11000 is rewarded');
+
+-- Bloodmaul Soothsayer SAI
+SET @ENTRY := 22384;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,1,0,100,0,1000,1000,1800000,1800000,11,13787,1,1,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - Out Of Combat - Cast Demon Armor"),
+(@ENTRY,0,2,0,1,0,100,0,3000,3000,0,0,11,11939,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - Out Of Combat - Cast Summon Imp"),
+(@ENTRY,0,3,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - On Aggro - Say text 0"),
+(@ENTRY,0,4,0,0,0,100,0,0,0,2400,3800,11,20825,64,0,0,0,0,2,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - In Combat - Cast Shadow Bolt"),
+(@ENTRY,0,5,0,2,0,100,1,0,20,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Bloodmaul Soothsayer - Between 0-20% Health - Flee for assist");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bloodmaul Soothsayer on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bloodmaul Soothsayer on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bloodmaul Soothsayer on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bloodmaul Soothsayer on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bloodmaul Soothsayer says text on death if quest 11000 is rewarded');
+
+-- Bladespire Battlemage SAI
+SET @ENTRY := 19996;
+UPDATE `creature_template` SET `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Battlemage - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,1,0,100,0,0,0,60000,60000,11,12550,1,1,0,0,0,1,0,0,0,0,0,0,0,"Bladespire Battlemage - Out Of Combat - Cast Lightning Shield"),
+(@ENTRY,0,2,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Battlemage - On Aggro - Say text 0"),
+(@ENTRY,0,3,0,0,0,100,0,8000,16000,8000,16000,11,16102,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Battlemage - In Combat - Cast Flamestrike"),
+(@ENTRY,0,4,0,0,0,100,0,6000,9000,17000,17000,11,37599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Battlemage - In Combat - Cast Bloodlust');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Me smash! You die!',12,0,100,0,0,0, 'Bladespire Battlemage on Aggro Text'),
+(@ENTRY,0,1, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Battlemage on Aggro Text'),
+(@ENTRY,0,2, 'I''ll crush you!',12,0,100,0,0,0, 'Bladespire Battlemage on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Battlemage on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Battlemage says text on death if quest 11000 is rewarded');
+
+-- Bladespire Enforcer SAI
+SET @ENTRY := 19997;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Enforcer - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Enforcer - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,10000,14000,11000,22000,11,8078,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Enforcer - In Combat - Cast Thunderclap'),
+(@ENTRY,0,3,4,2,0,100,0,0,30,35000,45000,11,8599,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Enforcer - HP below 30% - Cast Enrage'),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,1,2,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Enforcer - HP below 30% - Say text 2");
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Enforcer on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Enforcer on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Enforcer on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Enforcer on death Quest 11000 complete'),
+(@ENTRY,2,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Bladespire Enforcer on enrage');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Enforcer says text on death if quest 11000 is rewarded');
+
+-- Bladespire Chef SAI
+SET @ENTRY := 20756;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,6,0,100,0,0,0,0,0,1,1,0,0,0,0,0,2,0,0,0,0,0,0,0,"Bladespire Chef - On Death - Say text 1 CONDITIONED"),
+(@ENTRY,0,1,0,4,0,35,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Bladespire Chef - On Aggro - Say Text 0'),
+(@ENTRY,0,2,0,0,0,100,0,15000,20000,15000,20000,11,37597,0,0,0,0,0,2,0,0,0,0,0,0,0,'Bladespire Chef - In Combat - Cast Meat Slap'),
+(@ENTRY,0,3,0,0,0,100,0,15000,20000,15000,20000,11,37596,32,0,0,0,0,2,0,0,0,0,0,0,0,'Bladespire Chef - In Combat - Cast Tenderize');
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0, 'Stupid puny thing. Me smash!',12,0,100,0,0,0, 'Bladespire Chef on Aggro Text'),
+(@ENTRY,0,1, 'Me mad. You get smash in face!',12,0,100,0,0,0, 'Bladespire Chef on Aggro Text'),
+(@ENTRY,0,2, 'Raaar!!! Me smash $r!',12,0,100,0,0,0, 'Bladespire Chef on Aggro Text'),
+(@ENTRY,1,0, 'Puny $r... you were a... horrible king.',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete'),
+(@ENTRY,1,1, 'Agh... me am...dead.',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete'),
+(@ENTRY,1,2, 'Me go to Ogri''la.',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete'),
+(@ENTRY,1,3, 'King think... there really is... an Ogri''la',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete'),
+(@ENTRY,1,4, 'Me honored... king kill me.',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete'),
+(@ENTRY,1,5, 'King $n, me die now.',12,0,100,0,0,0, 'Bladespire Chef on death Quest 11000 complete');
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(22,1,@ENTRY,0,0,8,0,11000,0,0,0,0,0, '', 'SAI - Bladespire Chef says text on death if quest 11000 is rewarded');
diff --git a/sql/updates/world/2013_12_19_02_world_sai.sql b/sql/updates/world/2013_12_19_02_world_sai.sql
new file mode 100644
index 00000000000..49e676bca06
--- /dev/null
+++ b/sql/updates/world/2013_12_19_02_world_sai.sql
@@ -0,0 +1,49 @@
+-- Bloodscalp Shaman
+SET @ENTRY := 697;
+DELETE FROM `creature_addon` WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id`=@ENTRY);
+DELETE FROM `creature_template_addon` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@ENTRY,0,4097,0, '');
+
+-- Defias Conjurer SAI
+SET @ENTRY := 619;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+UPDATE `creature_template_addon` SET `auras`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,1000,1000,1800000,1800000,11,12544,1,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Conjurer - Out Of Combat - Cast Frost Armor"),
+(@ENTRY,0,1,0,0,0,100,0,0,0,2400,3800,11,9053,64,0,0,0,0,2,0,0,0,0,0,0,0,"Defias Conjurer - In Combat - Cast Fireball"),
+(@ENTRY,0,2,0,2,0,100,0,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Conjurer - Between 0-15% Health - Flee For Assist");
+
+-- Razormane Stalker SAI
+SET @ENTRY := 3457;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+UPDATE `creature` SET `modelid`=0, `curhealth`=1 WHERE `id`=3457;
+UPDATE `creature_template_addon` SET `auras`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1000,1000,11,22766,32,0,0,0,0,1,0,0,0,0,0,0,0,"Razormane Stalker - In Combat - Cast Sneak"),
+(@ENTRY,0,1,0,0,0,100,0,6000,6000,1000,1000,11,1758,0,0,0,0,0,2,0,0,0,0,0,0,0,"Razormane Stalker - In Combat - Cast Sinister Strike");
+
+-- Dark Rune Elementalist SAI
+SET @ENTRY := 27962;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `creature_addon` WHERE `guid` IN (126700,126702,126704);
+DELETE FROM `creature_template_addon` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@ENTRY,0,4097,0, '');
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,6,0,0,0,0,11,51475,0,0,0,0,0,1,0,0,0,0,0,0,0,"Dark Rune Elementalist - Out Of Combat - Cast Summon Air Elemental (Dungeon Only)"),
+(@ENTRY,0,1,0,1,0,100,2,1000,1000,600000,600000,11,51776,1,0,0,0,0,1,0,0,0,0,0,0,0,"Dark Rune Elementalist - Out Of Combat - Cast Lightning Shield (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,0,0,4000,6000,11,53314,64,0,0,0,0,2,0,0,0,0,0,0,0,"Dark Rune Elementalist - In Combat - Cast Lightning Bolt (Normal Dungeon)"),
+(@ENTRY,0,3,0,1,0,100,4,1000,1000,600000,600000,11,59025,1,0,0,0,0,1,0,0,0,0,0,0,0,"Dark Rune Elementalist - Out Of Combat - Cast Lightning Shield (Heroic Dungeon)"),
+(@ENTRY,0,4,0,0,0,100,4,0,0,4000,6000,11,59024,64,0,0,0,0,2,0,0,0,0,0,0,0,"Dark Rune Elementalist - In Combat - Cast Lightning Bolt (Heroic Dungeon)"),
+(@ENTRY,0,5,0,2,0,100,7,0,30,0,0,11,32693,1,0,0,0,0,1,0,0,0,0,0,0,0,"Dark Rune Elementalist - Between 0-30% Health - Cast Arcane Haste (Dungeon Only)");
+
+-- Felboar SAI
+SET @ENTRY := 21878;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+UPDATE `creature_template_addon` SET `auras`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,25,0,100,0,0,0,0,0,11,33908,32,0,0,0,0,1,0,0,0,0,0,0,0,"Felboar - On Spawn - Cast Burning Spikes"),
+(@ENTRY,0,1,0,0,0,100,0,100,100,30000,55000,11,35570,0,0,0,0,0,2,0,0,0,0,0,0,0,"Felboar - In Combat - Cast Charge");
diff --git a/sql/updates/world/2013_12_19_03_world_misc.sql b/sql/updates/world/2013_12_19_03_world_misc.sql
new file mode 100644
index 00000000000..ae6b7bb07e2
--- /dev/null
+++ b/sql/updates/world/2013_12_19_03_world_misc.sql
@@ -0,0 +1,30 @@
+-- Highlord Demitrian SAI
+SET @ENTRY := 14347;
+UPDATE `creature_template` SET `gossip_menu_id`=5689, `AIName`='SmartAI',`ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,62,0,100,0,5704,0,0,0,56,19016,1,0,0,0,0,7,0,0,0,0,0,0,0,"Highlord Demitrian - On Gossip Select - Add item Vessel of Rebirth to player"),
+(@ENTRY,0,1,0,20,0,100,0,7786,0,0,0,12,14435,2,0,0,0,0,7,0,0,0,0,0,0,0,"Highlord Demitrian - On Quest Thunderaan the Windseeker rewarded - Summon creature");
+-- Add Gossip
+DELETE FROM `gossip_menu` WHERE `entry` IN (5675,5687,5688,5689,5701,5702,5703,5704);
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(5675,6812),(5687,6844),(5688,6843),(5689,6842),(5701,6868),(5702,6867),(5703,6870),(5704,6869);
+-- Add Gossip Options
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (5675,5687,5688,5689,5701,5702,5704);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`) VALUES
+(5675,0,0, 'What do you know of it?',1,1,5689),
+(5689,0,0, 'I am listening, Demitrian.',1,1,5688),
+(5688,0,0, 'Continue, please.',1,1,5687),
+(5687,0,0, 'A battle?',1,1,5702),
+(5702,0,0, '<Nod>',1,1,5701),
+(5701,0,0, 'Caught unaware? How?',1,1,5704),
+(5704,0,0, 'So what did Ragnaros do next?',1,1,5703);
+-- Add Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=5675;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+-- Both of these must be true
+(15,5675,0,0,0,14,0,7785,0,0,0,0,0, '', 'Gossip Option - Show Option if Quest 7785 is not taken'),
+(15,5675,0,1,0,2,0,19016,1,0,1,0,0, '', 'Gossip Option - Show Option if player does not have Vessel of Rebirth'),
+-- One of these must be true
+(15,5675,0,2,0,2,0,18563,0,0,1,0,0, '', 'Gossip Option - Show Option if player has Bindings of the Windseeker'),
+(15,5675,0,2,0,2,0,18564,0,0,1,0,0, '', 'Gossip Option - Show Option if player has Bindings of the Windseeker');
diff --git a/sql/updates/world/2013_12_19_04_world_misc.sql b/sql/updates/world/2013_12_19_04_world_misc.sql
new file mode 100644
index 00000000000..4c395accd53
--- /dev/null
+++ b/sql/updates/world/2013_12_19_04_world_misc.sql
@@ -0,0 +1,28 @@
+-- Caelyb <Pet Trainer>
+UPDATE `creature_template` SET AIName='' WHERE `entry`=4320;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=4320 AND `source_type`=0;
+
+-- Milli Featherwhistle <Mechanostrider Merchant>
+UPDATE `creature_template` SET ScriptName='' WHERE `entry`=7955;
+-- Add Gossip Options
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (3186);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`) VALUES
+(3186,0,1, 'I would like to buy from you.',3,128,0);
+-- Add Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=3186;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+-- Both of these must be true
+(15,3186,0,0,0,16,0,8,0,0,0,0,0, '', 'Gossip Option - Show Option if Player is Gnome'),
+(15,3186,0,0,0,5,0,54,128,0,1,0,0, '', 'Gossip Option - Show Option if player is Exalted with Gnomeregan');
+
+-- Murkblood Overseer SAI
+SET @ENTRY := 23309;
+UPDATE `creature_template` SET `AIName`='SmartAI', `ScriptName`= '' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,62,0,100,0,8697,0,0,0,11,41121,0,0,0,0,0,7,0,0,0,0,0,0,0,"Murkblood Overseer - On gossip Option select - cast spell"),
+(@ENTRY,0,1,0,61,0,100,0,0,0,0,0,15,11082,0,0,0,0,0,7,0,0,0,0,0,0,0,"Murkblood Overseer - On gossip Option select - Complete quest");
+-- Add Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=8697;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15,8697,0,0,0,9,0,11082,0,0,0,0,0, '', 'Gossip Option - Show Option if Quest 11082 taken');
diff --git a/sql/updates/world/2013_12_20_00_world_misc.sql b/sql/updates/world/2013_12_20_00_world_misc.sql
new file mode 100644
index 00000000000..f75973db91a
--- /dev/null
+++ b/sql/updates/world/2013_12_20_00_world_misc.sql
@@ -0,0 +1,112 @@
+-- Missing Wintergrasp Battle-Mage spawns
+SET @GUID := 63451;
+DELETE FROM `creature` WHERE `guid` BETWEEN @GUID AND @GUID+2;
+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
+(@GUID,35597,530,1,1,0,1,-1977.80212,5267.618,-41.65557,4.3982296,300,0,0,1,1,0),
+(@GUID+1,35611,0,1,1,0,1,1333.57642,320.9896,-63.6309357,2.8972466,300,0,0,1,1,0),
+(@GUID+2,35612,530,1,1,0,1,9855.403,-7578.021,20.61899,1.78023577,300,0,0,1,1,0);
+
+-- Fix up Wintergrasp Battle-Mages
+UPDATE `creature` SET `modelid`=0,`equipment_id`=1,`spawntimesecs`=300,`curhealth`=1,`curmana`=1 WHERE `id` IN (SELECT `entry` FROM `creature_template` WHERE `subname`='Wintergrasp Battle-Mage');
+UPDATE `creature_template` SET `gossip_menu_id`=10662 WHERE `entry` IN (35597,35602,35612);
+UPDATE `creature_template` SET `gossip_menu_id`=10666 WHERE `entry` IN (35596,35598);
+UPDATE `creature_template` SET `faction_A`=2123, `faction_H`=2123 WHERE `entry` IN (35603,35611,35612);
+UPDATE `creature_template` SET `baseattacktime`=2000 WHERE `entry` IN (35600,35601,35602,35603,35611,35612);
+UPDATE `creature_template` SET `npcflag`=1, `unit_flags`=8040, `flags_extra`=0 WHERE `subname`= 'Wintergrasp Battle-Mage';
+UPDATE `creature_template` SET `unit_flags`=8340 WHERE `entry` IN (35597,35596,32170,32169);
+DELETE FROM `creature_equip_template` WHERE `entry`=35603 AND `id`=2;
+DELETE FROM `creature_equip_template` WHERE `entry`=35601;
+INSERT INTO `creature_equip_template` (`entry`,`id`,`itemEntry1`,`itemEntry2`,`itemEntry3`) VALUES (35601,1,30423,0,0);
+-- Add Gossip
+DELETE FROM `gossip_menu` WHERE `entry` IN (10662,10666);
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(10662,14775),(10662,14777),(10662,14781),(10662,14782),(10662,14790),(10662,14791),
+(10666,14775),(10666,14777),(10666,14781),(10666,14782),(10666,14790),(10666,14791);
+-- Add Gossip Options
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (10662);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`) VALUES
+(10662,0,19, 'Queue for Wintergrasp.',12,1,1048576);
+
+-- Arcanist Braedin SAI
+SET @ENTRY := 32169;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Braedin - Out of Combat - Cast Frost Armor");
+
+-- Magister Surdiel SAI
+SET @ENTRY := 32170;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magister Surdiel - Out of Combat - Cast Frost Armor");
+
+-- Arcanist Iramhir SAI
+SET @ENTRY := 35596;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Iramhir - Out of Combat - Cast Frost Armor");
+
+-- Magistrix Aldessia SAI
+SET @ENTRY := 35597;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magistrix Aldessia - Out of Combat - Cast Frost Armor");
+
+-- Arcanist Paharin SAI
+SET @ENTRY := 35598;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Paharin - Out of Combat - Cast Frost Armor");
+
+-- Arcanist Dulial SAI
+SET @ENTRY := 35599;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Dulial - Out of Combat - Cast Frost Armor");
+
+-- Arcanist Laniria SAI
+SET @ENTRY := 35600;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Laniria - Out of Combat - Cast Frost Armor");
+
+-- Arcanist Nazalia SAI
+SET @ENTRY := 35601;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Arcanist Nazalia - Out of Combat - Cast Frost Armor");
+
+-- Magister Savarin SAI
+SET @ENTRY := 35602;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magister Savarin - Out of Combat - Cast Frost Armor");
+
+-- Magister Dalhyr SAI
+SET @ENTRY := 35603;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magister Dalhyr - Out of Combat - Cast Frost Armor");
+
+-- Magistrix Erembria SAI
+SET @ENTRY := 35611;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magistrix Erembria - Out of Combat - Cast Frost Armor");
+
+-- Magistrix Caradess SAI
+SET @ENTRY := 35612;
+UPDATE `creature_template` SET `AIName`="SmartAI" WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,1,0,100,0,0,0,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Magistrix Caradess - Out of Combat - Cast Frost Armor");
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 6af09f3bb2b..0f11f407e0f 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -394,6 +394,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
(*itr)->ToCreature()->SetReactState(ReactStates(e.action.react.state));
}
+ delete targets;
break;
}
case SMART_ACTION_RANDOM_EMOTE:
@@ -1059,6 +1060,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
(*itr)->ToCreature()->DespawnOrUnsummon(e.action.forceDespawn.delay);
}
+ delete targets;
break;
}
case SMART_ACTION_SET_INGAME_PHASE_MASK:
@@ -1076,6 +1078,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
(*itr)->ToGameObject()->SetPhaseMask(e.action.ingamePhaseMask.mask, true);
}
+ delete targets;
break;
}
case SMART_ACTION_MOUNT_TO_ENTRY_OR_MODEL:
@@ -1120,6 +1123,7 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u
ai->SetInvincibilityHpLevel(me->CountPctFromMaxHealth(e.action.invincHP.percent));
else
ai->SetInvincibilityHpLevel(e.action.invincHP.minHP);
+
break;
}
case SMART_ACTION_SET_DATA:
diff --git a/src/server/game/DungeonFinding/LFGMgr.cpp b/src/server/game/DungeonFinding/LFGMgr.cpp
index 501501b0ffc..5f514bddb44 100644
--- a/src/server/game/DungeonFinding/LFGMgr.cpp
+++ b/src/server/game/DungeonFinding/LFGMgr.cpp
@@ -237,7 +237,7 @@ void LFGMgr::LoadLFGDungeons(bool reload /* = false */)
AreaTriggerStruct const* at = sObjectMgr->GetMapEntranceTrigger(dungeon.map);
if (!at)
{
- TC_LOG_ERROR("lfg", "LFGMgr::LoadLFGDungeons: Failed to load dungeon %s (Id: %u), cant find areatrigger for map %u", dungeon.name.c_str(), dungeon.id, dungeon.map);
+ TC_LOG_ERROR("sql.sql", "Failed to load dungeon %s (Id: %u), cant find areatrigger for map %u", dungeon.name.c_str(), dungeon.id, dungeon.map);
continue;
}
@@ -324,7 +324,7 @@ void LFGMgr::Update(uint32 diff)
// Check if a proposal can be formed with the new groups being added
for (LfgQueueContainer::iterator it = QueuesStore.begin(); it != QueuesStore.end(); ++it)
if (uint8 newProposals = it->second.FindGroups())
- TC_LOG_DEBUG("lfg", "LFGMgr::Update: Found %u new groups in queue %u", newProposals, it->first);
+ TC_LOG_DEBUG("lfg.update", "Found %u new groups in queue %u", newProposals, it->first);
if (lastProposalId != m_lfgProposalId)
{
@@ -541,7 +541,6 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
isRaid = true;
break;
default:
- TC_LOG_ERROR("lfg", "Wrong dungeon type %u for dungeon %u", type, *it);
joinData.result = LFG_JOIN_DUNGEON_INVALID;
break;
}
@@ -564,7 +563,9 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
// Can't join. Send result
if (joinData.result != LFG_JOIN_OK)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::Join: [" UI64FMTD "] joining with %u members. result: %u", guid, grp ? grp->GetMembersCount() : 1, joinData.result);
+ TC_LOG_DEBUG("lfg.join", "%u joining with %u members. Result: %u, Dungeons: %s",
+ GUID_LOPART(guid), grp ? grp->GetMembersCount() : 1, joinData.result, ConcatenateDungeons(dungeons).c_str());
+
if (!dungeons.empty()) // Only should show lockmap when have no dungeons available
joinData.lockmap.clear();
player->GetSession()->SendLfgJoinResult(joinData);
@@ -575,7 +576,7 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
if (isRaid)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::Join: [" UI64FMTD "] trying to join raid browser and it's disabled.", guid);
+ TC_LOG_DEBUG("lfg.join", "%u trying to join raid browser and it's disabled.", GUID_LOPART(guid));
return;
}
@@ -641,13 +642,8 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
debugNames.append(player->GetName());
}
- if (sLog->ShouldLog("lfg", LOG_LEVEL_DEBUG))
- {
- std::ostringstream o;
- o << "LFGMgr::Join: [" << guid << "] joined (" << (grp ? "group" : "player") << ") Members: " << debugNames.c_str()
- << ". Dungeons (" << uint32(dungeons.size()) << "): " << ConcatenateDungeons(dungeons);
- TC_LOG_DEBUG("lfg", "%s", o.str().c_str());
- }
+ TC_LOG_DEBUG("lfg.join", "%u joined (%s), Members: %s. Dungeons (%u): %s", GUID_LOPART(guid),
+ grp ? "group" : "player", debugNames.c_str(), uint32(dungeons.size()), ConcatenateDungeons(dungeons).c_str());
}
/**
@@ -658,9 +654,10 @@ void LFGMgr::JoinLfg(Player* player, uint8 roles, LfgDungeonSet& dungeons, const
*/
void LFGMgr::LeaveLfg(uint64 guid)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::LeaveLfg: [" UI64FMTD "]", guid);
-
uint64 gguid = IS_GROUP_GUID(guid) ? guid : GetGroup(guid);
+
+ TC_LOG_DEBUG("lfg.leave", "%u left (%s)", GUID_LOPART(guid), guid == gguid ? "group" : "player");
+
LfgState state = GetState(guid);
switch (state)
{
@@ -1020,7 +1017,7 @@ void LFGMgr::UpdateProposal(uint32 proposalId, uint64 guid, bool accept)
LfgProposalPlayer& player = itProposalPlayer->second;
player.accept = LfgAnswer(accept);
- TC_LOG_DEBUG("lfg", "LFGMgr::UpdateProposal: Player [" UI64FMTD "] of proposal %u selected: %u", guid, proposalId, accept);
+ TC_LOG_DEBUG("lfg.proposal.update", "Player %u, Proposal %u, Selection: %u", GUID_LOPART(guid), proposalId, accept);
if (!accept)
{
RemoveProposal(itProposal, LFG_UPDATETYPE_PROPOSAL_DECLINED);
@@ -1111,7 +1108,7 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate
LfgProposal& proposal = itProposal->second;
proposal.state = LFG_PROPOSAL_FAILED;
- TC_LOG_DEBUG("lfg", "LFGMgr::RemoveProposal: Proposal %u, state FAILED, UpdateType %u", itProposal->first, type);
+ TC_LOG_DEBUG("lfg.proposal.remove", "Proposal %u, state FAILED, UpdateType %u", itProposal->first, type);
// Mark all people that didn't answered as no accept
if (type == LFG_UPDATETYPE_PROPOSAL_FAILED)
for (LfgProposalPlayerContainer::iterator it = proposal.players.begin(); it != proposal.players.end(); ++it)
@@ -1148,12 +1145,12 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate
if (it->second.accept == LFG_ANSWER_DENY)
{
updateData.updateType = type;
- TC_LOG_DEBUG("lfg", "LFGMgr::RemoveProposal: [" UI64FMTD "] didn't accept. Removing from queue and compatible cache", guid);
+ TC_LOG_DEBUG("lfg.proposal.remove", "%u didn't accept. Removing from queue and compatible cache", GUID_LOPART(guid));
}
else
{
updateData.updateType = LFG_UPDATETYPE_REMOVED_FROM_QUEUE;
- TC_LOG_DEBUG("lfg", "LFGMgr::RemoveProposal: [" UI64FMTD "] in same group that someone that didn't accept. Removing from queue and compatible cache", guid);
+ TC_LOG_DEBUG("lfg.proposal.remove", "%u in same group that someone that didn't accept. Removing from queue and compatible cache", GUID_LOPART(guid));
}
RestoreState(guid, "Proposal Fail (didn't accepted or in group with someone that didn't accept");
@@ -1167,7 +1164,7 @@ void LFGMgr::RemoveProposal(LfgProposalContainer::iterator itProposal, LfgUpdate
}
else
{
- TC_LOG_DEBUG("lfg", "LFGMgr::RemoveProposal: Readding [" UI64FMTD "] to queue.", guid);
+ TC_LOG_DEBUG("lfg.proposal.remove", "Readding %u to queue.", GUID_LOPART(guid));
SetState(guid, LFG_STATE_QUEUED);
if (gguid != guid)
{
@@ -1312,7 +1309,7 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
if (!dungeon)
{
- TC_LOG_DEBUG("lfg", "TeleportPlayer: Player %s not in group/lfggroup or dungeon not found!",
+ TC_LOG_DEBUG("lfg.teleport", "Player %s not in group/lfggroup or dungeon not found!",
player->GetName().c_str());
player->GetSession()->SendLfgTeleportError(uint8(LFG_TELEPORTERROR_INVALID_LOCATION));
return;
@@ -1320,7 +1317,7 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
if (out)
{
- TC_LOG_DEBUG("lfg", "TeleportPlayer: Player %s is being teleported out. Current Map %u - Expected Map %u",
+ TC_LOG_DEBUG("lfg.teleport", "Player %s is being teleported out. Current Map %u - Expected Map %u",
player->GetName().c_str(), player->GetMapId(), uint32(dungeon->map));
if (player->GetMapId() == uint32(dungeon->map))
player->TeleportToBGEntryPoint();
@@ -1384,7 +1381,7 @@ void LFGMgr::TeleportPlayer(Player* player, bool out, bool fromOpcode /*= false*
if (error != LFG_TELEPORTERROR_OK)
player->GetSession()->SendLfgTeleportError(uint8(error));
- TC_LOG_DEBUG("lfg", "TeleportPlayer: Player %s is being teleported in to map %u "
+ TC_LOG_DEBUG("lfg.teleport", "Player %s is being teleported in to map %u "
"(x: %f, y: %f, z: %f) Result: %u", player->GetName().c_str(), dungeon->map,
dungeon->x, dungeon->y, dungeon->z, error);
}
@@ -1400,13 +1397,13 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId)
uint32 gDungeonId = GetDungeon(gguid);
if (gDungeonId != dungeonId)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] Finished dungeon %u but group queued for %u. Ignoring", gguid, dungeonId, gDungeonId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group %u finished dungeon %u but queued for %u", GUID_LOPART(gguid), dungeonId, gDungeonId);
return;
}
if (GetState(gguid) == LFG_STATE_FINISHED_DUNGEON) // Shouldn't happen. Do not reward multiple times
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] Already rewarded group. Ignoring", gguid);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u already rewarded", GUID_LOPART(gguid));
return;
}
@@ -1418,7 +1415,7 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId)
uint64 guid = (*it);
if (GetState(guid) == LFG_STATE_FINISHED_DUNGEON)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] Already rewarded player. Ignoring", guid);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u already rewarded", GUID_LOPART(gguid), GUID_LOPART(guid));
continue;
}
@@ -1434,14 +1431,14 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId)
if (!dungeon || (dungeon->type != LFG_TYPE_RANDOM && !dungeon->seasonal))
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] dungeon %u is not random or seasonal", guid, rDungeonId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u dungeon %u is not random or seasonal", GUID_LOPART(gguid), GUID_LOPART(guid), rDungeonId);
continue;
}
Player* player = ObjectAccessor::FindPlayer(guid);
if (!player || !player->IsInWorld())
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] not found in world", guid);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u not found in world", GUID_LOPART(gguid), GUID_LOPART(guid));
continue;
}
@@ -1450,7 +1447,7 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId)
if (player->GetMapId() != mapId)
{
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] is in map %u and should be in %u to get reward", guid, player->GetMapId(), mapId);
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u is in map %u and should be in %u to get reward", GUID_LOPART(gguid), GUID_LOPART(guid), player->GetMapId(), mapId);
continue;
}
@@ -1481,7 +1478,7 @@ void LFGMgr::FinishDungeon(uint64 gguid, const uint32 dungeonId)
}
// Give rewards
- TC_LOG_DEBUG("lfg", "LFGMgr::FinishDungeon: [" UI64FMTD "] done dungeon %u, %s previously done.", player->GetGUID(), GetDungeon(gguid), done? " " : " not");
+ TC_LOG_DEBUG("lfg.dungeon.finish", "Group: %u, Player: %u done dungeon %u, %s previously done.", GUID_LOPART(gguid), GUID_LOPART(guid), GetDungeon(gguid), done? " " : " not");
LfgPlayerRewardData data = LfgPlayerRewardData(dungeon->Entry(), GetDungeon(gguid, false), done, quest);
player->GetSession()->SendLfgPlayerReward(data);
}
@@ -1545,11 +1542,16 @@ LfgState LFGMgr::GetState(uint64 guid)
{
LfgState state;
if (IS_GROUP_GUID(guid))
+ {
state = GroupsStore[guid].GetState();
+ TC_LOG_TRACE("lfg.data.group.state.get", "Group: %u, State: %u", GUID_LOPART(guid), state);
+ }
else
+ {
state = PlayersStore[guid].GetState();
+ TC_LOG_TRACE("lfg.data.player.state.get", "Player: %u, State: %u", GUID_LOPART(guid), state);
+ }
- TC_LOG_TRACE("lfg", "LFGMgr::GetState: [" UI64FMTD "] = %u", guid, state);
return state;
}
@@ -1557,18 +1559,23 @@ LfgState LFGMgr::GetOldState(uint64 guid)
{
LfgState state;
if (IS_GROUP_GUID(guid))
+ {
state = GroupsStore[guid].GetOldState();
+ TC_LOG_TRACE("lfg.data.group.oldstate.get", "Group: %u, Old state: %u", GUID_LOPART(guid), state);
+ }
else
+ {
state = PlayersStore[guid].GetOldState();
+ TC_LOG_TRACE("lfg.data.player.oldstate.get", "Player: %u, Old state: %u", GUID_LOPART(guid), state);
+ }
- TC_LOG_TRACE("lfg", "LFGMgr::GetOldState: [" UI64FMTD "] = %u", guid, state);
return state;
}
uint32 LFGMgr::GetDungeon(uint64 guid, bool asId /*= true */)
{
uint32 dungeon = GroupsStore[guid].GetDungeon(asId);
- TC_LOG_TRACE("lfg", "LFGMgr::GetDungeon: [" UI64FMTD "] asId: %u = %u", guid, asId, dungeon);
+ TC_LOG_TRACE("lfg.data.group.dungeon.get", "Group: %u, asId: %u, Dungeon: %u", GUID_LOPART(guid), asId, dungeon);
return dungeon;
}
@@ -1580,39 +1587,40 @@ uint32 LFGMgr::GetDungeonMapId(uint64 guid)
if (LFGDungeonData const* dungeon = GetLFGDungeon(dungeonId))
mapId = dungeon->map;
- TC_LOG_TRACE("lfg", "LFGMgr::GetDungeonMapId: [" UI64FMTD "] = %u (DungeonId = %u)", guid, mapId, dungeonId);
+ TC_LOG_TRACE("lfg.data.group.dungeon.map", "Group: %u, MapId: %u (DungeonId: %u)", GUID_LOPART(guid), mapId, dungeonId);
+
return mapId;
}
uint8 LFGMgr::GetRoles(uint64 guid)
{
uint8 roles = PlayersStore[guid].GetRoles();
- TC_LOG_TRACE("lfg", "LFGMgr::GetRoles: [" UI64FMTD "] = %u", guid, roles);
+ TC_LOG_TRACE("lfg.data.player.role.get", "Player: %u, Role: %u", GUID_LOPART(guid), roles);
return roles;
}
const std::string& LFGMgr::GetComment(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::GetComment: [" UI64FMTD "] = %s", guid, PlayersStore[guid].GetComment().c_str());
+ TC_LOG_TRACE("lfg.data.player.comment.get", "Player: %u, Comment: %s", GUID_LOPART(guid), PlayersStore[guid].GetComment().c_str());
return PlayersStore[guid].GetComment();
}
LfgDungeonSet const& LFGMgr::GetSelectedDungeons(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::GetSelectedDungeons: [" UI64FMTD "]", guid);
+ TC_LOG_TRACE("lfg.data.player.dungeons.selected.get", "Player: %u, Selected Dungeons: %s", GUID_LOPART(guid), ConcatenateDungeons(PlayersStore[guid].GetSelectedDungeons()).c_str());
return PlayersStore[guid].GetSelectedDungeons();
}
LfgLockMap const& LFGMgr::GetLockedDungeons(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::GetLockedDungeons: [" UI64FMTD "]", guid);
+ TC_LOG_TRACE("lfg.data.player.dungeons.locked.get", "Player: %u, LockedDungeons.", GUID_LOPART(guid));
return PlayersStore[guid].GetLockedDungeons();
}
uint8 LFGMgr::GetKicksLeft(uint64 guid)
{
uint8 kicks = GroupsStore[guid].GetKicksLeft();
- TC_LOG_TRACE("lfg", "LFGMgr::GetKicksLeft: [" UI64FMTD "] = %u", guid, kicks);
+ TC_LOG_TRACE("lfg.data.group.kickleft.get", "Group: %u, Kicks left: %u", GUID_LOPART(guid), kicks);
return kicks;
}
@@ -1621,26 +1629,19 @@ void LFGMgr::RestoreState(uint64 guid, char const* debugMsg)
if (IS_GROUP_GUID(guid))
{
LfgGroupData& data = GroupsStore[guid];
- if (sLog->ShouldLog("lfg", LOG_LEVEL_DEBUG))
- {
- std::string const& ps = GetStateString(data.GetState());
- std::string const& os = GetStateString(data.GetOldState());
- TC_LOG_TRACE("lfg", "LFGMgr::RestoreState: Group: [" UI64FMTD "] (%s) State: %s, oldState: %s",
- guid, debugMsg, ps.c_str(), os.c_str());
- }
+ TC_LOG_TRACE("lfg.data.group.state.restore", "Group: %u (%s), State: %s, Old state: %s",
+ GUID_LOPART(guid), debugMsg, GetStateString(data.GetState()).c_str(),
+ GetStateString(data.GetOldState()).c_str());
data.RestoreState();
}
else
{
LfgPlayerData& data = PlayersStore[guid];
- if (sLog->ShouldLog("lfg", LOG_LEVEL_DEBUG))
- {
- std::string const& ps = GetStateString(data.GetState());
- std::string const& os = GetStateString(data.GetOldState());
- TC_LOG_TRACE("lfg", "LFGMgr::RestoreState: Player: [" UI64FMTD "] (%s) State: %s, oldState: %s",
- guid, debugMsg, ps.c_str(), os.c_str());
- }
+ TC_LOG_TRACE("lfg.data.player.state.restore", "Player: %u (%s), State: %s, Old state: %s",
+ GUID_LOPART(guid), debugMsg, GetStateString(data.GetState()).c_str(),
+ GetStateString(data.GetOldState()).c_str());
+
data.RestoreState();
}
}
@@ -1650,70 +1651,62 @@ void LFGMgr::SetState(uint64 guid, LfgState state)
if (IS_GROUP_GUID(guid))
{
LfgGroupData& data = GroupsStore[guid];
- if (sLog->ShouldLog("lfg", LOG_LEVEL_TRACE))
- {
- std::string const& ns = GetStateString(state);
- std::string const& ps = GetStateString(data.GetState());
- std::string const& os = GetStateString(data.GetOldState());
- TC_LOG_TRACE("lfg", "LFGMgr::SetState: Group: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s",
- guid, ns.c_str(), ps.c_str(), os.c_str());
- }
+ TC_LOG_TRACE("lfg.data.group.state.set", "Group: %u, New state: %s, Previous: %s, Old state: %s",
+ GUID_LOPART(guid), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
+ GetStateString(data.GetOldState()).c_str());
+
data.SetState(state);
}
else
{
LfgPlayerData& data = PlayersStore[guid];
- if (sLog->ShouldLog("lfg", LOG_LEVEL_TRACE))
- {
- std::string const& ns = GetStateString(state);
- std::string const& ps = GetStateString(data.GetState());
- std::string const& os = GetStateString(data.GetOldState());
- TC_LOG_TRACE("lfg", "LFGMgr::SetState: Player: [" UI64FMTD "] newState: %s, previous: %s, oldState: %s",
- guid, ns.c_str(), ps.c_str(), os.c_str());
- }
+ TC_LOG_TRACE("lfg.data.player.state.set", "Player: %u, New state: %s, Previous: %s, OldState: %s",
+ GUID_LOPART(guid), GetStateString(state).c_str(), GetStateString(data.GetState()).c_str(),
+ GetStateString(data.GetOldState()).c_str());
+
data.SetState(state);
}
}
void LFGMgr::SetDungeon(uint64 guid, uint32 dungeon)
{
- TC_LOG_TRACE("lfg", "LFGMgr::SetDungeon: [" UI64FMTD "] dungeon %u", guid, dungeon);
+ TC_LOG_TRACE("lfg.data.group.dungeon.set", "Group: %u, Dungeon: %u", GUID_LOPART(guid), dungeon);
GroupsStore[guid].SetDungeon(dungeon);
}
void LFGMgr::SetRoles(uint64 guid, uint8 roles)
{
- TC_LOG_TRACE("lfg", "LFGMgr::SetRoles: [" UI64FMTD "] roles: %u", guid, roles);
+ TC_LOG_TRACE("lfg.data.player.role.set", "Player: %u, Roles: %u", GUID_LOPART(guid), roles);
PlayersStore[guid].SetRoles(roles);
}
void LFGMgr::SetComment(uint64 guid, std::string const& comment)
{
- TC_LOG_TRACE("lfg", "LFGMgr::SetComment: [" UI64FMTD "] comment: %s", guid, comment.c_str());
+ TC_LOG_TRACE("lfg.data.player.comment.set", "Player: %u, Comment: %s", GUID_LOPART(guid), comment.c_str());
PlayersStore[guid].SetComment(comment);
}
void LFGMgr::SetSelectedDungeons(uint64 guid, LfgDungeonSet const& dungeons)
{
- TC_LOG_TRACE("lfg", "LFGMgr::SetSelectedDungeons: [" UI64FMTD "] Dungeons: %s", guid, ConcatenateDungeons(dungeons).c_str());
+ TC_LOG_TRACE("lfg.data.player.dungeon.selected.set", "Player: %u, Dungeons: %s", GUID_LOPART(guid), ConcatenateDungeons(dungeons).c_str());
PlayersStore[guid].SetSelectedDungeons(dungeons);
}
void LFGMgr::SetLockedDungeons(uint64 guid, LfgLockMap const& lock)
{
- TC_LOG_TRACE("lfg", "LFGMgr::SetLockedDungeons: [" UI64FMTD "]", guid);
+ TC_LOG_TRACE("lfg.data.player.dungeon.locked.set", "Player: %u, LockedDungeons", GUID_LOPART(guid));
PlayersStore[guid].SetLockedDungeons(lock);
}
void LFGMgr::DecreaseKicksLeft(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::DecreaseKicksLeft: [" UI64FMTD "]", guid);
GroupsStore[guid].DecreaseKicksLeft();
+ TC_LOG_TRACE("lfg.data.group.kicksleft.decrease", "Group: %u, Kicks: %u", GUID_LOPART(guid), GroupsStore[guid].GetKicksLeft());
}
void LFGMgr::RemovePlayerData(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::RemovePlayerData: [" UI64FMTD "]", guid);
+ TC_LOG_TRACE("lfg.data.player.remove", "Player: %u", GUID_LOPART(guid));
LfgPlayerDataContainer::iterator it = PlayersStore.find(guid);
if (it != PlayersStore.end())
PlayersStore.erase(it);
@@ -1721,7 +1714,7 @@ void LFGMgr::RemovePlayerData(uint64 guid)
void LFGMgr::RemoveGroupData(uint64 guid)
{
- TC_LOG_TRACE("lfg", "LFGMgr::RemoveGroupData: [" UI64FMTD "]", guid);
+ TC_LOG_TRACE("lfg.data.group.remove", "Group: %u", GUID_LOPART(guid));
LfgGroupDataContainer::iterator it = GroupsStore.find(guid);
if (it == GroupsStore.end())
return;
@@ -1744,7 +1737,9 @@ void LFGMgr::RemoveGroupData(uint64 guid)
uint8 LFGMgr::GetTeam(uint64 guid)
{
- return PlayersStore[guid].GetTeam();
+ uint8 team = PlayersStore[guid].GetTeam();
+ TC_LOG_TRACE("lfg.data.player.team.get", "Player: %u, Team: %u", GUID_LOPART(guid), team);
+ return team;
}
uint8 LFGMgr::RemovePlayerFromGroup(uint64 gguid, uint64 guid)
diff --git a/src/server/game/DungeonFinding/LFGQueue.cpp b/src/server/game/DungeonFinding/LFGQueue.cpp
index a3ab4ceab03..06bd67cbd78 100644
--- a/src/server/game/DungeonFinding/LFGQueue.cpp
+++ b/src/server/game/DungeonFinding/LFGQueue.cpp
@@ -88,7 +88,7 @@ void LFGQueue::AddToQueue(uint64 guid)
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
if (itQueue == QueueDataStore.end())
{
- TC_LOG_ERROR("lfg", "LFGQueue::AddToQueue: Queue data not found for [" UI64FMTD "]", guid);
+ TC_LOG_ERROR("lfg.queue.add", "Queue data not found for [" UI64FMTD "]", guid);
return;
}
@@ -194,7 +194,7 @@ void LFGQueue::RemoveFromCompatibles(uint64 guid)
out << guid;
std::string strGuid = out.str();
- TC_LOG_DEBUG("lfg", "LFGQueue::RemoveFromCompatibles: Removing [" UI64FMTD "]", guid);
+ TC_LOG_DEBUG("lfg.queue.data.compatibles.remove", "Removing [" UI64FMTD "]", guid);
for (LfgCompatibleContainer::iterator itNext = CompatibleMapStore.begin(); itNext != CompatibleMapStore.end();)
{
LfgCompatibleContainer::iterator it = itNext++;
@@ -251,7 +251,7 @@ uint8 LFGQueue::FindGroups()
while (!newToQueueStore.empty())
{
uint64 frontguid = newToQueueStore.front();
- TC_LOG_DEBUG("lfg", "LFGQueue::FindGroups: checking [" UI64FMTD "] newToQueue(%u), currentQueue(%u)", frontguid, uint32(newToQueueStore.size()), uint32(currentQueueStore.size()));
+ TC_LOG_DEBUG("lfg.queue.match.check.new", "Checking [" UI64FMTD "] newToQueue(%u), currentQueue(%u)", frontguid, uint32(newToQueueStore.size()), uint32(currentQueueStore.size()));
firstNew.clear();
firstNew.push_back(frontguid);
RemoveFromNewQueue(frontguid);
@@ -279,13 +279,13 @@ LfgCompatibility LFGQueue::FindNewGroups(LfgGuidList& check, LfgGuidList& all)
std::string strGuids = ConcatenateGuids(check);
LfgCompatibility compatibles = GetCompatibles(strGuids);
- TC_LOG_DEBUG("lfg", "LFGQueue::FindNewGroup: (%s): %s - all(%s)", strGuids.c_str(), GetCompatibleString(compatibles), ConcatenateGuids(all).c_str());
+ TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s): %s - all(%s)", strGuids.c_str(), GetCompatibleString(compatibles), ConcatenateGuids(all).c_str());
if (compatibles == LFG_COMPATIBILITY_PENDING) // Not previously cached, calculate
compatibles = CheckCompatibility(check);
if (compatibles == LFG_COMPATIBLES_BAD_STATES && sLFGMgr->AllQueued(check))
{
- TC_LOG_DEBUG("lfg", "LFGQueue::FindNewGroup: (%s) compatibles (cached) changed from bad states to match", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.check", "Guids: (%s) compatibles (cached) changed from bad states to match", strGuids.c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_MATCH);
return LFG_COMPATIBLES_MATCH;
}
@@ -323,7 +323,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
// Check for correct size
if (check.size() > MAXGROUPSIZE || check.empty())
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s): Size wrong - Not compatibles", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s): Size wrong - Not compatibles", strGuids.c_str());
return LFG_INCOMPATIBLES_WRONG_GROUP_SIZE;
}
@@ -337,7 +337,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
LfgCompatibility child_compatibles = CheckCompatibility(check);
if (child_compatibles < LFG_COMPATIBLES_WITH_LESS_PLAYERS) // Group not compatible
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) child %s not compatibles", strGuids.c_str(), ConcatenateGuids(check).c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) child %s not compatibles", strGuids.c_str(), ConcatenateGuids(check).c_str());
SetCompatibles(strGuids, child_compatibles);
return child_compatibles;
}
@@ -353,7 +353,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(guid);
if (itQueue == QueueDataStore.end())
{
- TC_LOG_ERROR("lfg", "LFGQueue::CheckCompatibility: [" UI64FMTD "] is not queued but listed as queued!", guid);
+ TC_LOG_ERROR("lfg.queue.match.compatibility.check", "Guid: [" UI64FMTD "] is not queued but listed as queued!", guid);
RemoveFromQueue(guid);
return LFG_COMPATIBILITY_PENDING;
}
@@ -375,7 +375,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
// Group with less that MAXGROUPSIZE members always compatible
if (check.size() == 1 && numPlayers != MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) sigle group. Compatibles", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) sigle group. Compatibles", strGuids.c_str());
LfgQueueDataContainer::iterator itQueue = QueueDataStore.find(check.front());
LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
@@ -389,14 +389,14 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
if (numLfgGroups > 1)
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) More than one Lfggroup (%u)", strGuids.c_str(), numLfgGroups);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) More than one Lfggroup (%u)", strGuids.c_str(), numLfgGroups);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS);
return LFG_INCOMPATIBLES_MULTIPLE_LFG_GROUPS;
}
if (numPlayers > MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) Too much players (%u)", strGuids.c_str(), numPlayers);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Too much players (%u)", strGuids.c_str(), numPlayers);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS);
return LFG_INCOMPATIBLES_TOO_MUCH_PLAYERS;
}
@@ -413,7 +413,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
for (itPlayer = proposalRoles.begin(); itPlayer != proposalRoles.end(); ++itPlayer)
{
if (itRoles->first == itPlayer->first)
- TC_LOG_ERROR("lfg", "LFGQueue::CheckCompatibility: ERROR! Player multiple times in queue! [" UI64FMTD "]", itRoles->first);
+ TC_LOG_ERROR("lfg.queue.match.compatibility.check", "Guids: ERROR! Player multiple times in queue! [" UI64FMTD "]", itRoles->first);
else if (sLFGMgr->HasIgnore(itRoles->first, itPlayer->first))
break;
}
@@ -424,7 +424,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
if (uint8 playersize = numPlayers - proposalRoles.size())
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) not compatible, %u players are ignoring each other", strGuids.c_str(), playersize);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) not compatible, %u players are ignoring each other", strGuids.c_str(), playersize);
SetCompatibles(strGuids, LFG_INCOMPATIBLES_HAS_IGNORES);
return LFG_INCOMPATIBLES_HAS_IGNORES;
}
@@ -436,7 +436,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
for (LfgRolesMap::const_iterator it = debugRoles.begin(); it != debugRoles.end(); ++it)
o << ", " << it->first << ": " << GetRolesString(it->second);
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) Roles not compatible%s", strGuids.c_str(), o.str().c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Roles not compatible%s", strGuids.c_str(), o.str().c_str());
SetCompatibles(strGuids, LFG_INCOMPATIBLES_NO_ROLES);
return LFG_INCOMPATIBLES_NO_ROLES;
}
@@ -456,7 +456,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
if (proposalDungeons.empty())
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) No compatible dungeons%s", strGuids.c_str(), o.str().c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) No compatible dungeons%s", strGuids.c_str(), o.str().c_str());
SetCompatibles(strGuids, LFG_INCOMPATIBLES_NO_DUNGEONS);
return LFG_INCOMPATIBLES_NO_DUNGEONS;
}
@@ -473,7 +473,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
// Enough players?
if (numPlayers != MAXGROUPSIZE)
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) Compatibles but not enough players(%u)", strGuids.c_str(), numPlayers);
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Compatibles but not enough players(%u)", strGuids.c_str(), numPlayers);
LfgCompatibilityData data(LFG_COMPATIBLES_WITH_LESS_PLAYERS);
data.roles = proposalRoles;
@@ -490,7 +490,7 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
if (!sLFGMgr->AllQueued(check))
{
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) Group MATCH but can't create proposal!", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) Group MATCH but can't create proposal!", strGuids.c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_BAD_STATES);
return LFG_COMPATIBLES_BAD_STATES;
}
@@ -532,14 +532,14 @@ LfgCompatibility LFGQueue::CheckCompatibility(LfgGuidList check)
sLFGMgr->AddProposal(proposal);
- TC_LOG_DEBUG("lfg", "LFGQueue::CheckCompatibility: (%s) MATCH! Group formed", strGuids.c_str());
+ TC_LOG_DEBUG("lfg.queue.match.compatibility.check", "Guids: (%s) MATCH! Group formed", strGuids.c_str());
SetCompatibles(strGuids, LFG_COMPATIBLES_MATCH);
return LFG_COMPATIBLES_MATCH;
}
void LFGQueue::UpdateQueueTimers(uint8 queueId, time_t currTime)
{
- TC_LOG_TRACE("lfg", "Updating queue timers...");
+ TC_LOG_TRACE("lfg.queue.timers.update", "Updating queue timers...");
for (LfgQueueDataContainer::iterator itQueue = QueueDataStore.begin(); itQueue != QueueDataStore.end(); ++itQueue)
{
LfgQueueData& queueinfo = itQueue->second;
@@ -635,7 +635,7 @@ std::string LFGQueue::DumpCompatibleInfo(bool full /* = false */) const
void LFGQueue::FindBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQueue)
{
- TC_LOG_DEBUG("lfg", "LFGQueue::FindBestCompatibleInQueue: " UI64FMTD, itrQueue->first);
+ TC_LOG_DEBUG("lfg.queue.compatibles.find", "Guid: " UI64FMTD, itrQueue->first);
std::ostringstream o;
o << itrQueue->first;
std::string sguid = o.str();
@@ -660,7 +660,7 @@ void LFGQueue::UpdateBestCompatibleInQueue(LfgQueueDataContainer::iterator itrQu
if (size <= storedSize)
return;
- TC_LOG_DEBUG("lfg", "LFGQueue::UpdateBestCompatibleInQueue: Changed (%s) to (%s) as best compatible group for " UI64FMTD,
+ TC_LOG_DEBUG("lfg.queue.compatibles.update", "Changed (%s) to (%s) as best compatible group for " UI64FMTD,
queueData.bestCompatible.c_str(), key.c_str(), itrQueue->first);
queueData.bestCompatible = key;
diff --git a/src/server/scripts/Kalimdor/zone_silithus.cpp b/src/server/scripts/Kalimdor/zone_silithus.cpp
index ff2eaaa9789..1fdeacb6183 100644
--- a/src/server/scripts/Kalimdor/zone_silithus.cpp
+++ b/src/server/scripts/Kalimdor/zone_silithus.cpp
@@ -24,7 +24,6 @@ SDCategory: Silithus
EndScriptData */
/* ContentData
-npc_highlord_demitrian
npcs_rutgar_and_frankal
go_wind_stone
EndContentData */
@@ -36,79 +35,6 @@ EndContentData */
#include "Player.h"
/*###
-## npc_highlord_demitrian
-###*/
-
-#define GOSSIP_DEMITRIAN1 "What do you know of it?"
-#define GOSSIP_DEMITRIAN2 "I am listening, Demitrian."
-#define GOSSIP_DEMITRIAN3 "Continue, please."
-#define GOSSIP_DEMITRIAN4 "A battle?"
-#define GOSSIP_DEMITRIAN5 "<Nod>"
-#define GOSSIP_DEMITRIAN6 "Caught unaware? How?"
-#define GOSSIP_DEMITRIAN7 "So what did Ragnaros do next?"
-
-class npc_highlord_demitrian : public CreatureScript
-{
-public:
- npc_highlord_demitrian() : CreatureScript("npc_highlord_demitrian") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
- player->SEND_GOSSIP_MENU(6842, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
- player->SEND_GOSSIP_MENU(6843, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
- player->SEND_GOSSIP_MENU(6844, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
- player->SEND_GOSSIP_MENU(6867, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+4:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN6, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
- player->SEND_GOSSIP_MENU(6868, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+5:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN7, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
- player->SEND_GOSSIP_MENU(6869, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+6:
- player->SEND_GOSSIP_MENU(6870, creature->GetGUID());
-
- ItemPosCountVec dest;
- uint8 msg = player->CanStoreNewItem(NULL_BAG, NULL_SLOT, dest, 19016, 1);
- if (msg == EQUIP_ERR_OK)
- player->StoreNewItem(dest, 19016, true);
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
- {
- if (creature->IsQuestGiver())
- player->PrepareQuestMenu(creature->GetGUID());
-
- if (player->GetQuestStatus(7785) == QUEST_STATUS_NONE &&
- (player->HasItemCount(18563, 1, false) || player->HasItemCount(18564, 1, false)))
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_DEMITRIAN1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF);
-
- player->SEND_GOSSIP_MENU(6812, creature->GetGUID());
- return true;
- }
-
-};
-
-/*###
## npcs_rutgar_and_frankal
###*/
@@ -1504,7 +1430,10 @@ class go_wind_stone : public GameObjectScript
void AddSC_silithus()
{
- new npc_highlord_demitrian();
+ new go_crystalline_tear();
+ new npc_anachronos_quest_trigger();
+ new npc_anachronos_the_ancient();
+ new npc_qiraj_war_spawn();
new npcs_rutgar_and_frankal();
new go_wind_stone();
}
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index 167fd7f2074..acc3317d7bd 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -55,37 +55,6 @@ bool obelisk_one, obelisk_two, obelisk_three, obelisk_four, obelisk_five;
#define LEGION_OBELISK_FIVE 185198
/*######
-## npc_bladespire_ogre
-######*/
-
-/// @todo add support for quest 10512 + Creature abilities
-class npc_bladespire_ogre : public CreatureScript
-{
-public:
- npc_bladespire_ogre() : CreatureScript("npc_bladespire_ogre") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_bladespire_ogreAI(creature);
- }
-
- struct npc_bladespire_ogreAI : public ScriptedAI
- {
- npc_bladespire_ogreAI(Creature* creature) : ScriptedAI(creature) { }
-
- void Reset() OVERRIDE { }
-
- void UpdateAI(uint32 /*uiDiff*/) OVERRIDE
- {
- if (!UpdateVictim())
- return;
-
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
## npc_nether_drake
######*/
@@ -1242,7 +1211,6 @@ class spell_oscillating_field : public SpellScriptLoader
void AddSC_blades_edge_mountains()
{
- new npc_bladespire_ogre();
new npc_nether_drake();
new npc_daranelle();
new npc_overseer_nuaar();
diff --git a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
index 41abc490d2b..c8a2dfe03cd 100644
--- a/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
+++ b/src/server/scripts/Outland/zone_shadowmoon_valley.cpp
@@ -19,7 +19,7 @@
/* ScriptData
SDName: Shadowmoon_Valley
SD%Complete: 100
-SDComment: Quest support: 10519, 10583, 10601, 10804, 10854, 10458, 10481, 10480, 11082, 10781, 10451. Vendor Drake Dealer Hurlunk.
+SDComment: Quest support: 10519, 10583, 10601, 10804, 10854, 10458, 10481, 10480, 10781, 10451. Vendor Drake Dealer Hurlunk.
SDCategory: Shadowmoon Valley
EndScriptData */
@@ -28,7 +28,6 @@ npc_mature_netherwing_drake
npc_enslaved_netherwing_drake
npc_drake_dealer_hurlunk
npcs_flanis_swiftwing_and_kagrosh
-npc_murkblood_overseer
npc_karynaku
npc_oronok_tornheart
npc_overlord_morghor
@@ -493,74 +492,6 @@ public:
};
/*######
-## npc_murkblood_overseer
-######*/
-
-#define QUEST_11082 11082
-
-#define GOSSIP_HMO "I am here for you, overseer."
-#define GOSSIP_SMO1 "How dare you question an overseer of the Dragonmaw!"
-#define GOSSIP_SMO2 "Who speaks of me? What are you talking about, broken?"
-#define GOSSIP_SMO3 "Continue please."
-#define GOSSIP_SMO4 "Who are these bidders?"
-#define GOSSIP_SMO5 "Well... yes."
-
-class npc_murkblood_overseer : public CreatureScript
-{
-public:
- npc_murkblood_overseer() : CreatureScript("npc_murkblood_overseer") { }
-
- bool OnGossipSelect(Player* player, Creature* creature, uint32 /*sender*/, uint32 action) OVERRIDE
- {
- player->PlayerTalkClass->ClearMenus();
- switch (action)
- {
- case GOSSIP_ACTION_INFO_DEF+1:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SMO1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+2);
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+2:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SMO2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+3);
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+3:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SMO3, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+4);
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+4:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SMO4, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+5);
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+5:
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_SMO5, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+6);
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- break;
- case GOSSIP_ACTION_INFO_DEF+6:
- //correct id not known
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- creature->CastSpell(player, 41121, false);
- player->AreaExploredOrEventHappens(QUEST_11082);
- break;
- }
- return true;
- }
-
- bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
- {
- if (player->GetQuestStatus(QUEST_11082) == QUEST_STATUS_INCOMPLETE)
- player->ADD_GOSSIP_ITEM(0, GOSSIP_HMO, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+1);
-
- player->SEND_GOSSIP_MENU(10940, creature->GetGUID());
- return true;
- }
-};
-
-/*######
## npc_oronok
######*/
@@ -2011,7 +1942,6 @@ void AddSC_shadowmoon_valley()
new npc_dragonmaw_peon();
new npc_drake_dealer_hurlunk();
new npcs_flanis_swiftwing_and_kagrosh();
- new npc_murkblood_overseer();
new npc_karynaku();
new npc_oronok_tornheart();
new npc_overlord_morghor();
diff --git a/src/server/shared/Logging/Log.cpp b/src/server/shared/Logging/Log.cpp
index bca150b7059..08200af3c19 100644
--- a/src/server/shared/Logging/Log.cpp
+++ b/src/server/shared/Logging/Log.cpp
@@ -267,7 +267,7 @@ void Log::vlog(std::string const& filter, LogLevel level, char const* str, va_li
write(new LogMessage(level, filter, text));
}
-void Log::write(LogMessage* msg) const
+void Log::write(LogMessage* msg)
{
Logger const* logger = GetLoggerByType(msg->type);
msg->text.append("\n");
@@ -376,6 +376,7 @@ void Log::Close()
delete worker;
worker = NULL;
loggers.clear();
+ cachedLoggers.clear();
for (AppenderMap::iterator it = appenders.begin(); it != appenders.end(); ++it)
{
delete it->second;
diff --git a/src/server/shared/Logging/Log.h b/src/server/shared/Logging/Log.h
index af522a6745f..0eb54546aab 100644
--- a/src/server/shared/Logging/Log.h
+++ b/src/server/shared/Logging/Log.h
@@ -35,6 +35,7 @@ class Log
friend class ACE_Singleton<Log, ACE_Thread_Mutex>;
typedef UNORDERED_MAP<std::string, Logger> LoggerMap;
+ typedef UNORDERED_MAP<std::string, Logger const*> CachedLoggerContainer;
private:
Log();
@@ -43,7 +44,7 @@ class Log
public:
void LoadFromConfig();
void Close();
- bool ShouldLog(std::string const& type, LogLevel level) const;
+ bool ShouldLog(std::string const& type, LogLevel level);
bool SetLogLevel(std::string const& name, char const* level, bool isLogger = true);
void outMessage(std::string const& f, LogLevel level, char const* str, ...) ATTR_PRINTF(4, 5);
@@ -56,9 +57,9 @@ class Log
private:
static std::string GetTimestampStr();
void vlog(std::string const& f, LogLevel level, char const* str, va_list argptr);
- void write(LogMessage* msg) const;
+ void write(LogMessage* msg);
- Logger const* GetLoggerByType(std::string const& type) const;
+ Logger const* GetLoggerByType(std::string const& type);
Appender* GetAppenderByName(std::string const& name);
uint8 NextAppenderId();
void CreateAppenderFromConfig(std::string const& name);
@@ -68,6 +69,7 @@ class Log
AppenderMap appenders;
LoggerMap loggers;
+ CachedLoggerContainer cachedLoggers;
uint8 AppenderId;
std::string m_logsDir;
@@ -76,24 +78,36 @@ class Log
LogWorker* worker;
};
-inline Logger const* Log::GetLoggerByType(std::string const& type) const
+inline Logger const* Log::GetLoggerByType(std::string const& originalType)
{
- LoggerMap::const_iterator it = loggers.find(type);
- if (it != loggers.end())
- return &(it->second);
-
- if (type == LOGGER_ROOT)
- return NULL;
-
- std::string parentLogger = LOGGER_ROOT;
- size_t found = type.find_last_of(".");
- if (found != std::string::npos)
- parentLogger = type.substr(0,found);
-
- return GetLoggerByType(parentLogger);
+ // Check if already cached
+ CachedLoggerContainer::const_iterator itCached = cachedLoggers.find(originalType);
+ if (itCached != cachedLoggers.end())
+ return itCached->second;
+
+ Logger const* logger = NULL;
+ std::string type(originalType);
+
+ do
+ {
+ // Search for the logger "type.subtype"
+ LoggerMap::const_iterator it = loggers.find(type);
+ if (it == loggers.end())
+ {
+ // Search for the logger "type", if our logger contains '.', otherwise search for LOGGER_ROOT
+ size_t found = type.find_last_of(".");
+ type = found != std::string::npos ? type.substr(0, found) : LOGGER_ROOT;
+ }
+ else
+ logger = &(it->second);
+ }
+ while (!logger);
+
+ cachedLoggers[type] = logger;
+ return logger;
}
-inline bool Log::ShouldLog(std::string const& type, LogLevel level) const
+inline bool Log::ShouldLog(std::string const& type, LogLevel level)
{
// TODO: Use cache to store "Type.sub1.sub2": "Type" equivalence, should
// Speed up in cases where requesting "Type.sub1.sub2" but only configured
@@ -119,7 +133,7 @@ inline void Log::outMessage(std::string const& filter, LogLevel level, const cha
#define sLog ACE_Singleton<Log, ACE_Thread_Mutex>::instance()
-#if COMPILER != COMPILER_MICROSOFT
+#if PLATFORM != PLATFORM_WINDOWS
#define TC_LOG_MESSAGE_BODY(filterType__, level__, ...) \
do { \
if (sLog->ShouldLog(filterType__, level__)) \