aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDDuarte <dnpd.dd@gmail.com>2014-01-10 03:16:59 +0000
committerDDuarte <dnpd.dd@gmail.com>2014-01-10 03:16:59 +0000
commit86107a0296eedaa783fc8b8f7a2892c606626d0b (patch)
treeaa91d7be5b298465556ec24e1ef676bad77a4d13
parent52a5213e462b754079475bad1f4d4edb22b04a2a (diff)
parent6402fa02ac4a4f1d731ed0b6d744328527e2a857 (diff)
Merge branch 'master' into 4.3.4
-rw-r--r--sql/updates/world/2013_12_20_02_world_sai.sql (renamed from sql/updates/world/2013_12_20_00_world_sai.sql)0
-rw-r--r--sql/updates/world/2013_12_21_00_world_sai.sql1
-rw-r--r--sql/updates/world/2013_12_22_00_world_sai.sql137
-rw-r--r--sql/updates/world/2013_12_22_01_world_misc.sql21
-rw-r--r--sql/updates/world/2013_12_22_02_world_misc.sql24
-rw-r--r--sql/updates/world/2013_12_22_03_world_quest_template.sql2
-rw-r--r--sql/updates/world/2013_12_22_04_world_creature.sql3
-rw-r--r--sql/updates/world/2013_12_22_05_world_misc.sql5
-rw-r--r--sql/updates/world/2013_12_22_06_world_misc.sql27
-rw-r--r--sql/updates/world/2013_12_22_07_world_creature_text.sql14
-rw-r--r--sql/updates/world/2013_12_22_08_world_creature_text.sql22
-rw-r--r--sql/updates/world/2013_12_22_09_world_sai.sql4
-rw-r--r--sql/updates/world/2013_12_23_00_world_misc.sql44
-rw-r--r--src/server/authserver/Server/AuthSocket.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp3
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp15
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp12
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp4
-rw-r--r--src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp2
-rw-r--r--src/server/scripts/Northrend/zone_storm_peaks.cpp306
-rw-r--r--src/server/scripts/Northrend/zone_wintergrasp.cpp36
-rw-r--r--src/server/scripts/Outland/zone_blades_edge_mountains.cpp344
-rw-r--r--src/server/scripts/World/npc_taxi.cpp20
-rw-r--r--src/server/shared/Database/Implementation/LoginDatabase.cpp2
24 files changed, 784 insertions, 266 deletions
diff --git a/sql/updates/world/2013_12_20_00_world_sai.sql b/sql/updates/world/2013_12_20_02_world_sai.sql
index 953efcc7c9c..953efcc7c9c 100644
--- a/sql/updates/world/2013_12_20_00_world_sai.sql
+++ b/sql/updates/world/2013_12_20_02_world_sai.sql
diff --git a/sql/updates/world/2013_12_21_00_world_sai.sql b/sql/updates/world/2013_12_21_00_world_sai.sql
new file mode 100644
index 00000000000..7a3d2f46c0d
--- /dev/null
+++ b/sql/updates/world/2013_12_21_00_world_sai.sql
@@ -0,0 +1 @@
+UPDATE `smart_scripts` SET `comment` = REPLACE(`comment`, 'Increment Phase By 0', CONCAT('Increment Phase By ', `action_param1`)) WHERE `comment` LIKE '%Increment Phase By 0%';
diff --git a/sql/updates/world/2013_12_22_00_world_sai.sql b/sql/updates/world/2013_12_22_00_world_sai.sql
new file mode 100644
index 00000000000..4a4d0f7edb1
--- /dev/null
+++ b/sql/updates/world/2013_12_22_00_world_sai.sql
@@ -0,0 +1,137 @@
+-- Firehawk Mariner SAI
+SET @ENTRY := 35070;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,"Firehawk Mariner - In Combat CMC - Cast 'Shoot'"),
+(@ENTRY,0,1,0,0,0,100,0,8000,10000,7000,9000,11,17174,1,0,0,0,0,5,0,0,0,0,0,0,0,"Firehawk Mariner - In Combat - Cast 'Concussive Shot'"),
+(@ENTRY,0,2,0,9,0,100,0,5,30,8000,11000,11,14443,0,0,0,0,0,2,0,0,0,0,0,0,0,"Firehawk Mariner - Within 5-30 Range - Cast 'Multi-Shot'");
+
+-- Captain Aerthas Firehawk SAI
+SET @ENTRY := 35090;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Aerthas Firehawk - In Combat CMC - Cast 'Shoot'"),
+(@ENTRY,0,1,0,9,0,100,0,5,30,8000,11000,11,14443,0,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Aerthas Firehawk - Within 5-30 Range - Cast 'Multi-Shot'"),
+(@ENTRY,0,2,0,9,0,100,0,0,5,4000,7000,11,29426,0,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Aerthas Firehawk - Within 0-5 Range - Cast 'Heroic Strike'");
+
+-- Wavecrest Mariner SAI
+SET @ENTRY := 35098;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,"Wavecrest Mariner - In Combat CMC - Cast 'Shoot'"),
+(@ENTRY,0,1,0,0,0,100,0,8000,10000,7000,9000,11,17174,1,0,0,0,0,5,0,0,0,0,0,0,0,"Wavecrest Mariner - In Combat - Cast 'Concussive Shot' (Phase 1)"),
+(@ENTRY,0,2,0,9,0,100,0,5,30,8000,11000,11,14443,0,0,0,0,0,2,0,0,0,0,0,0,0,"Wavecrest Mariner - Within 5-30 Range - Cast 'Multi-Shot' (Phase 1)");
+
+-- Captain Elleane Wavecrest SAI
+SET @ENTRY := 35102;
+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,0,0,100,0,0,0,2300,3900,11,6660,64,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Elleane Wavecrest - In Combat CMC - Cast 'Shoot'"),
+(@ENTRY,0,1,0,9,0,100,0,5,30,8000,11000,11,14443,0,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Elleane Wavecrest - Within 5-30 Range - Cast 'Multi-Shot'"),
+(@ENTRY,0,2,0,9,0,100,0,0,5,4000,7000,11,29426,0,0,0,0,0,2,0,0,0,0,0,0,0,"Captain Elleane Wavecrest - Within 0-5 Range - Cast 'Heroic Strike'");
+
+-- Defias Smuggler SAI
+SET @ENTRY := 95;
+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,4,0,15,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Smuggler - On Aggro - Say Line 0"),
+(@ENTRY,0,1,0,0,0,100,0,0,0,3500,4100,11,10277,64,0,0,0,0,2,0,0,0,0,0,0,0,"Defias Smuggler - In Combat CMC - Cast 'Throw'"),
+(@ENTRY,0,2,0,67,0,100,0,1300,7300,4800,4900,11,53,0,0,0,0,0,2,0,0,0,0,0,0,0,"Defias Smuggler - Behind Target - Cast 'Backstab'"),
+(@ENTRY,0,3,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Smuggler - Between 0-15% Health - Flee For Assist (No Repeat)");
+
+-- Defias Rogue Wizard SAI
+SET @ENTRY := 474;
+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,1000,1000,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Rogue Wizard - Out of Combat - Cast 'Frost Armor'"),
+(@ENTRY,0,1,0,4,0,15,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Rogue Wizard - On Aggro - Say Line 0"),
+(@ENTRY,0,2,0,0,0,100,0,0,0,2300,3900,11,13322,64,0,0,0,0,2,0,0,0,0,0,0,0,"Defias Rogue Wizard - In Combat CMC - Cast 'Frostbolt'");
+
+-- Kobold Geomancer SAI
+SET @ENTRY := 476;
+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,1000,1000,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kobold Geomancer - Out of Combat - Cast 'Frost Armor'"),
+(@ENTRY,0,1,0,4,0,15,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kobold Geomancer - On Aggro - Say Line 0"),
+(@ENTRY,0,2,0,0,0,100,0,0,0,2300,3900,11,20793,64,0,0,0,0,2,0,0,0,0,0,0,0,"Kobold Geomancer - In Combat CMC - Cast 'Fireball'");
+
+-- Defias Pillager SAI
+SET @ENTRY := 589;
+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,1000,1000,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Pillager - Out of Combat - Cast 'Frost Armor'"),
+(@ENTRY,0,1,0,4,0,15,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Pillager - On Aggro - Say Line 0"),
+(@ENTRY,0,2,0,0,0,100,0,0,0,3400,5400,11,20793,64,0,0,0,0,2,0,0,0,0,0,0,0,"Defias Pillager - In Combat CMC - Cast 'Fireball'"),
+(@ENTRY,0,3,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Defias Pillager - Between 0-15% Health - Flee For Assist (No Repeat)");
+
+-- Surena Caledon SAI
+SET @ENTRY := 881;
+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,1000,1000,1800000,1800000,11,12544,0,0,0,0,0,1,0,0,0,0,0,0,0,"Surena Caledon - Out of Combat - Cast 'Frost Armor'"),
+(@ENTRY,0,1,0,4,0,40,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Surena Caledon - On Aggro - Say Line 0"),
+(@ENTRY,0,2,0,0,0,100,0,0,0,2300,3900,11,20793,64,0,0,0,0,2,0,0,0,0,0,0,0,"Surena Caledon - In Combat CMC - Cast 'Fireball'");
+
+-- Blackhand Dreadweaver SAI
+SET @ENTRY := 9817;
+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,25,0,100,0,0,0,0,0,11,12380,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - On Reset - Cast 'Shadow Channeling' (Normal Dungeon)"),
+(@ENTRY,0,1,0,4,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - On Aggro - Call For Help (Normal Dungeon)"),
+(@ENTRY,0,2,0,0,0,100,2,0,0,3600,6300,11,12739,64,0,0,0,0,2,0,0,0,0,0,0,0,"Blackhand Dreadweaver - In Combat - Cast 'Shadow Bolt' (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,100,2,9400,21400,22000,28800,11,7068,3,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - In Combat - Cast 'Veil of Shadow' (Normal Dungeon)"),
+(@ENTRY,0,4,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Between 0-15% Health - Flee For Assist (Normal Dungeon)"),
+(@ENTRY,0,5,7,1,0,100,2,0,8000,12000,14000,92,0,0,1,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Out of Combat - Interrupt Spell (Normal Dungeon)"),
+(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Out of Combat - Set Event Phase 1 (Normal Dungeon)"),
+(@ENTRY,0,7,0,1,1,100,2,0,0,0,0,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Out of Combat - Play Emote 1 (Normal Dungeon)"),
+(@ENTRY,0,8,10,1,1,100,2,4000,4000,4000,4000,11,12380,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Out of Combat - Cast 'Shadow Channeling' (Phase 1) (Normal Dungeon)"),
+(@ENTRY,0,9,0,61,1,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Dreadweaver - Out of Combat - Set Event Phase 0 (Phase 1) (Normal Dungeon)");
+
+-- Blackhand Summoner SAI
+SET @ENTRY := 9818;
+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,0,0,100,2,0,0,3600,6300,11,12466,64,0,0,0,0,2,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Cast 'Fireball' (Normal Dungeon)"),
+(@ENTRY,0,1,0,25,0,100,0,0,0,0,0,11,12380,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - On Reset - Cast 'Shadow Channeling' (Phase 1) (Normal Dungeon)"),
+(@ENTRY,0,2,0,4,0,100,2,0,0,0,0,39,10,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - On Aggro - Call For Help (Normal Dungeon)"),
+(@ENTRY,0,3,0,0,0,100,2,11400,11400,12700,16700,11,15532,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Cast 'Frost Nova' (Normal Dungeon)"),
+(@ENTRY,0,4,6,0,0,100,3,30000,35000,0,0,11,15792,1,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Cast 'Summon Blackhand Veteran' (No Repeat) (Normal Dungeon)"),
+(@ENTRY,0,5,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Say Line 0 (No Repeat) (Normal Dungeon)"),
+(@ENTRY,0,6,8,0,0,100,3,40000,45000,0,0,11,15794,1,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Cast 'Summon Blackhand Dreadweaver' (No Repeat) (Normal Dungeon)"),
+(@ENTRY,0,7,0,61,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - In Combat - Say Line 1 (No Repeat) (Normal Dungeon)"),
+(@ENTRY,0,8,0,2,0,100,3,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - Between 0-15% Health - Flee For Assist (No Repeat) (Normal Dungeon)"),
+(@ENTRY,0,9,0,1,0,100,2,0,8000,12000,14000,5,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Blackhand Summoner - Out of Combat - Play Emote 1 (No Repeat) (Normal Dungeon)");
+
+-- Shadowy Initiate SAI
+SET @ENTRY := 18716;
+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,62,0,100,0,7759,0,0,0,11,47068,0,0,0,0,0,7,0,0,0,0,0,0,0,"Shadowy Initiate - On Gossip Option 0 Selected - Cast 'Who Are They: Shadowy Initiate Kill Credit' (Phase 1) (No Repeat)"),
+(@ENTRY,0,1,0,0,0,100,0,0,0,2400,3800,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,"Shadowy Initiate - In Combat CMC - Cast 'Shadow Bolt'");
+
+-- Shadowy Advisor SAI
+SET @ENTRY := 18719;
+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,62,0,100,0,7760,0,0,0,11,47070,0,0,0,0,0,7,0,0,0,0,0,0,0,"Shadowy Advisor - On Gossip Option 0 Selected - Cast 'Who Are They: Shadowy Advisor Kill Credit' (Phase 1) (No Repeat)"),
+(@ENTRY,0,1,0,0,0,100,0,0,0,2400,3800,11,9613,64,0,0,0,0,2,0,0,0,0,0,0,0,"Shadowy Advisor - In Combat CMC - Cast 'Shadow Bolt'");
+
+-- Surge Needle Sorcerer SAI
+SET @ENTRY := 26257;
+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,0,0,100,0,0,0,3400,4800,11,51797,64,0,0,0,0,2,0,0,0,0,0,0,0,"Surge Needle Sorcerer - In Combat CMC - Cast 'Arcane Blast'");
diff --git a/sql/updates/world/2013_12_22_01_world_misc.sql b/sql/updates/world/2013_12_22_01_world_misc.sql
new file mode 100644
index 00000000000..2acc4754157
--- /dev/null
+++ b/sql/updates/world/2013_12_22_01_world_misc.sql
@@ -0,0 +1,21 @@
+-- Kara Thricestar SAI
+SET @ENTRY := 26602;
+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,4,0,100,0,0,0,0,0,12,9526,4,4,0,0,0,1,0,0,0,0,0,0,0,"Kara Thricestar - On Aggro - Summon Enraged Gryphon"),
+(@ENTRY,0,1,2,61,0,100,0,0,0,0,0,12,9526,4,4,0,0,0,1,0,0,0,0,0,0,0,"Kara Thricestar - On Aggro - Summon Enraged Gryphon"),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,"Kara Thricestar - On Aggro - Say Line 0"),
+(@ENTRY,0,3,0,62,0,100,0,9683,1,0,0,11,51446,0,0,0,0,0,7,0,0,0,0,0,0,0,"Kara Thricestar - On gossip Option select - Cast Fizzcrank Airstrip to Dens of Dying Taxi");
+-- Add Gossip Options
+DELETE FROM `gossip_menu_option` WHERE `menu_id` IN (9683);
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_icon`,`option_text`,`option_id`,`npc_option_npcflag`,`action_menu_id`) VALUES
+(9683,1,0, 'Kara, I need to be flown out the Dens of Dying to find Bixie.',1,1,0);
+-- Add Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9683 AND `SourceEntry`=1;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15,9683,1,0,0,28,0,11692,0,0,0,0,0, '', 'Gossip Option - Show Option if Player has completed quest 11692');
+
+-- Update Wintergrasp Battle-Mage cpp to remove SmartAI
+UPDATE `creature_template` SET `AIName`='' WHERE `entry` IN (32169,32170,35596,35597,35598,35599,35600,35601,35602,35603,35611,35612);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (32169,32170,35596,35597,35598,35599,35600,35601,35602,35603,35611,35612) AND `source_type`=0;
diff --git a/sql/updates/world/2013_12_22_02_world_misc.sql b/sql/updates/world/2013_12_22_02_world_misc.sql
new file mode 100644
index 00000000000..e025832ba6b
--- /dev/null
+++ b/sql/updates/world/2013_12_22_02_world_misc.sql
@@ -0,0 +1,24 @@
+-- Axle SAI
+SET @ENTRY := 23995;
+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,11,0,100,0,0,0,0,0,53,0,23995,1,0,0,0,1,0,0,0,0,0,0,0,"Axle - On Respawn - Start Waypoint"),
+(@ENTRY,0,1,2,40,0,100,0,4,23995,0,0,54,24000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Axle - On Waypoint 4 Reached - Pause Waypoint"),
+(@ENTRY,0,2,0,61,0,100,0,0,0,0,0,80,2399500,0,0,0,0,0,1,0,0,0,0,0,0,0,"Axle - On Waypoint 4 Reached - Run Script"),
+(@ENTRY,0,3,4,40,0,100,0,8,23995,0,0,54,140000,0,0,0,0,0,1,0,0,0,0,0,0,0,"Axle - On Waypoint 8 Reached - Pause Waypoint"),
+(@ENTRY,0,4,0,61,0,100,0,0,0,0,0,66,23995,0,0,0,0,0,1,0,0,0,0,0,0,0,"Axle - On Waypoint 8 Reached - Set Orientation Home Position"),
+(@ENTRY,0,5,6,62,0,100,0,9123,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0,"Axle - On Gossip Option 0 Selected - Close Gossip"),
+(@ENTRY,0,6,0,61,0,100,0,0,0,0,0,85,24751,0,0,0,0,0,7,0,0,0,0,0,0,0,"Axle - On Gossip Option 0 Selected - Invoker Cast 'Trick or Treat'");
+
+DELETE FROM `gossip_menu_option` WHERE (`menu_id`=9123);
+INSERT INTO `gossip_menu_option` (menu_id, id, option_icon, option_text, option_id, npc_option_npcflag, action_menu_id, action_poi_id, box_coded, box_money, box_text) VALUES
+(9123,0,0, 'Trick or Treat!',1,1,0,0,0,0, ''),
+(9123,2,5, 'Make this inn your home.',8,65536,0,0,0,0, ''),
+(9123,3,1, 'Let me browse your goods.',3,128,0,0,0,0, '');
+
+-- Add condition for Gossip Option
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=9123;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES
+(15, 9123, 0, 0, 0, 1, 0, 24755, 0, 0, 1, 0, 0, '', 'Gossip Option - Player must not have aura Tricked or Treated'),
+(15, 9123, 0, 0, 0, 12, 0, 12, 0, 0, 0, 0, 0, '', 'Gossip Option - Hallow''s End event must be active');
diff --git a/sql/updates/world/2013_12_22_03_world_quest_template.sql b/sql/updates/world/2013_12_22_03_world_quest_template.sql
new file mode 100644
index 00000000000..c6d4b2d5c09
--- /dev/null
+++ b/sql/updates/world/2013_12_22_03_world_quest_template.sql
@@ -0,0 +1,2 @@
+-- [FIX] Wrong Previous quest for 12836 Expression of Gratitude
+UPDATE `quest_template` SET `PrevQuestId`=12822 WHERE `Id`=12836;
diff --git a/sql/updates/world/2013_12_22_04_world_creature.sql b/sql/updates/world/2013_12_22_04_world_creature.sql
new file mode 100644
index 00000000000..404911643cd
--- /dev/null
+++ b/sql/updates/world/2013_12_22_04_world_creature.sql
@@ -0,0 +1,3 @@
+-- Talonpriest Skizzik
+DELETE FROM `creature` WHERE `guid`=132573;
+DELETE FROM `creature_addon` WHERE `guid`=132573;
diff --git a/sql/updates/world/2013_12_22_05_world_misc.sql b/sql/updates/world/2013_12_22_05_world_misc.sql
new file mode 100644
index 00000000000..cf0734f0d6d
--- /dev/null
+++ b/sql/updates/world/2013_12_22_05_world_misc.sql
@@ -0,0 +1,5 @@
+-- Bloodmaul Brute
+SET @ENTRY := 19991;
+UPDATE `creature_template` SET `AIName`='',`ScriptName`= 'npc_bloodmaul_brute' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=22 AND `SourceEntry`=@ENTRY;
diff --git a/sql/updates/world/2013_12_22_06_world_misc.sql b/sql/updates/world/2013_12_22_06_world_misc.sql
new file mode 100644
index 00000000000..800669bca26
--- /dev/null
+++ b/sql/updates/world/2013_12_22_06_world_misc.sql
@@ -0,0 +1,27 @@
+-- Val'kyr Battle-maiden
+SET @ENTRY := 31095;
+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,50331648,1,0, '');
+
+-- Scourge Necromancer
+SET @ENTRY := 31096;
+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,1,0, '');
+
+-- Scourge Necromancer SAI
+SET @ENTRY := 31096;
+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,0,0,100,0,0,0,3400,4800,11,20298,64,0,0,0,0,2,0,0,0,0,0,0,0,"Scourge Necromancer - In Combat CMC - Cast Shadow Bolt"),
+(@ENTRY,0,1,0,0,0,100,0,12000,15000,16000,19000,11,51337,1,0,0,0,0,1,0,0,0,0,0,0,0,"Scourge Necromancer - In Combat - Cast Shadowflame"),
+(@ENTRY,0,2,0,2,0,100,1,0,15,0,0,25,1,0,0,0,0,0,1,0,0,0,0,0,0,0,"Scourge Necromancer - Between 0-15% Health - Flee For Assist (No Repeat)");
+
+-- Terrifying Abomination
+SET @ENTRY := 31098;
+DELETE FROM `creature_addon` WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id`=@ENTRY) AND `auras`<> '29266';
+DELETE FROM `creature_addon` WHERE `guid` IN (SELECT `guid` FROM `creature` WHERE `id`=@ENTRY) AND `auras` IS NULL;
+DELETE FROM `creature_template_addon` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES (@ENTRY,0,1,0, '');
diff --git a/sql/updates/world/2013_12_22_07_world_creature_text.sql b/sql/updates/world/2013_12_22_07_world_creature_text.sql
new file mode 100644
index 00000000000..83e273b3a16
--- /dev/null
+++ b/sql/updates/world/2013_12_22_07_world_creature_text.sql
@@ -0,0 +1,14 @@
+-- NPC talk text insert from sniff
+UPDATE `creature_text` SET `text`= 'What is this? Mok-thorin ka! Kill them!' WHERE `entry`=26798 AND `groupid`=0;
+UPDATE `creature_text` SET `text`= 'Gaagh...' WHERE `entry`=26798 AND `groupid`=2;
+UPDATE `creature_text` SET `text`= 'You know what they say about curiosity....' WHERE `entry`=26731 AND `groupid`=0;
+DELETE FROM `creature_text` WHERE `entry`=26763 AND `groupid` IN (4,5);
+DELETE FROM `creature_text` WHERE `entry`=26794 AND `groupid`=6;
+DELETE FROM `creature_text` WHERE `entry`=26723 AND `groupid`=5;
+DELETE FROM `creature_text` WHERE `entry`=34716 AND `id`=4;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(26763,4,0, '%s opens a Chaotic Rift!',41,0,100,0,0,0, 'Anomalus'),
+(26763,5,0, '%s shields himself and diverts his power to the rifts!',41,0,100,0,0,0, 'Anomalus'),
+(26794,6,0, '%s goes into a frenzy!',41,0,100,0,0,0, 'Ormorok the Tree-Shaper'),
+(26723,5,0, '%s goes into a frenzy!',16,0,100,0,0,0, 'Keristrasza'),
+(34716,0,4, 'I thought I''d never make it out of here alive.',12,0,100,5,0,0, 'Captive Aspirant');
diff --git a/sql/updates/world/2013_12_22_08_world_creature_text.sql b/sql/updates/world/2013_12_22_08_world_creature_text.sql
new file mode 100644
index 00000000000..dabf26f8e5f
--- /dev/null
+++ b/sql/updates/world/2013_12_22_08_world_creature_text.sql
@@ -0,0 +1,22 @@
+-- NPC talk text insert from sniff
+DELETE FROM `creature_text` WHERE `entry`=30452 AND `groupid` IN (6,7);
+DELETE FROM `creature_text` WHERE `entry`=30449 AND `groupid` IN (6,7);
+DELETE FROM `creature_text` WHERE `entry`=30451 AND `groupid` IN (6,7);
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(30452,6,0, '%s begins to open a Twilight Portal!',41,0,100,0,0,0, 'Tenebron WHISPER_OPEN_PORTAL'),
+(30452,7,0, 'Tenebron begins to hatch eggs in the Twilight!',41,0,100,0,0,0, 'Tenebron WHISPER_OPENED_PORTAL'),
+(30449,6,0, '%s begins to open a Twilight Portal!',41,0,100,0,0,0, 'Vesperon WHISPER_OPEN_PORTAL'),
+(30449,7,0, 'A Vesperon Disciple appears in the Twilight!',41,0,100,0,0,0, 'Vesperon - WHISPER_OPENED_PORTAL'),
+(30451,6,0, '%s begins to open a Twilight Portal!',41,0,100,0,0,0, 'Shadron WHISPER_OPEN_PORTAL'),
+(30451,7,0, 'A Shadron Disciple appears in the Twilight!',41,0,100,0,0,0, 'Shadron - WHISPER_OPENED_PORTAL');
+
+UPDATE `creature_text` SET `text`= 'Right. Let''s see if we can finish this keystone.' WHERE `entry`=31810 AND `groupid`=0;
+UPDATE `creature_text` SET `text`= 'We... are superior! How could this... be?' WHERE `entry`=30451 AND `groupid`=2;
+UPDATE `creature_text` SET `text`= 'You have no place here! Your place... is among the departed!' WHERE `entry`=30452 AND `groupid`=2;
+UPDATE `creature_text` SET `text`= 'To darkness I condemn you.' WHERE `entry`=30452 AND `groupid`=3;
+UPDATE `creature_text` SET `text`= 'Tenebron begins to hatch eggs in the Twilight!' WHERE `entry`=30452 AND `groupid`=6;
+UPDATE `creature_text` SET `text`= 'I am no mere dragon. You will find that I am much, much more.' WHERE `entry`=30452 AND `groupid`=5 AND `id`=1;
+UPDATE `creature_text` SET `text`= 'You pose no threat, lesser beings! Give me your worst!' WHERE `entry`=30449 AND `groupid`=6;
+UPDATE `creature_text` SET `text`= 'I still have some... fight... in me-e-e...' WHERE `entry`=30449 AND `groupid`=2;
+UPDATE `creature_text` SET `text`= 'Such is the price... of failure....' WHERE `entry`=28860 AND `groupid`=6;
+UPDATE `creature_text` SET `text`= 'I should not... have held back...' WHERE `entry`=30452 AND `groupid`=2;
diff --git a/sql/updates/world/2013_12_22_09_world_sai.sql b/sql/updates/world/2013_12_22_09_world_sai.sql
new file mode 100644
index 00000000000..0a90197cc47
--- /dev/null
+++ b/sql/updates/world/2013_12_22_09_world_sai.sql
@@ -0,0 +1,4 @@
+UPDATE `smart_scripts` SET `link`=6 WHERE `entryorguid`=9817 AND `source_type`=0 AND `id`=5;
+UPDATE `smart_scripts` SET `link`=9 WHERE `entryorguid`=9817 AND `source_type`=0 AND `id`=8;
+UPDATE `smart_scripts` SET `link`=5 WHERE `entryorguid`=9818 AND `source_type`=0 AND `id`=4;
+UPDATE `smart_scripts` SET `link`=7 WHERE `entryorguid`=9818 AND `source_type`=0 AND `id`=6;
diff --git a/sql/updates/world/2013_12_23_00_world_misc.sql b/sql/updates/world/2013_12_23_00_world_misc.sql
new file mode 100644
index 00000000000..7b6207eb791
--- /dev/null
+++ b/sql/updates/world/2013_12_23_00_world_misc.sql
@@ -0,0 +1,44 @@
+DELETE FROM `spell_target_position` WHERE `id`=56649;
+INSERT INTO `spell_target_position` (`id`,`effIndex`,`target_map`,`target_position_x`,`target_position_y`,`target_position_z`,`target_orientation`) VALUES
+(56649,0,571,7989.938,-3195.042,922.6224,3.572167);
+
+DELETE FROM `spell_script_names` WHERE `spell_id`=50630;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(50630, 'spell_jokkum_eject_all');
+
+DELETE FROM `spell_script_names` WHERE `spell_id`=56650;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(56650, 'spell_veranus_summon');
+
+-- Pathing for King Jokkum Entry: 30331
+-- by malcrom
+SET @PATH := 2072200;
+DELETE FROM `waypoint_data` WHERE `id` IN (@PATH, @PATH+1);
+INSERT INTO `waypoint_data` (`id`,`point`,`position_x`,`position_y`,`position_z`,`orientation`,`delay`,`move_flag`,`action`,`action_chance`,`wpguid`) VALUES
+-- Path to event
+(@PATH,1,7357.088,-2865.398,803.5008,0,0,1,0,100,0),
+(@PATH,2,7355.184,-2904.322,821.0084,0,0,1,0,100,0),
+(@PATH,3,7355.473,-2946.654,833.0916,0,0,1,0,100,0),
+(@PATH,4,7358.789,-2974.211,845.01801,0,0,1,0,100,0),
+(@PATH,5,7360.866,-2994.785,845.9886,0,0,1,0,100,0),
+(@PATH,6,7378.764,-3035.887,840.6003,0,0,1,0,100,0),
+(@PATH,7,7411.658,-3072.211,837.5768,0,0,1,0,100,0),
+(@PATH,8,7453.996,-3088.695,837.5768,0,0,1,0,100,0),
+(@PATH,9,7496.08,-3113.922,837.5829,0,0,1,0,100,0),
+(@PATH,10,7536.843,-3136.489,837.5808,0,0,1,0,100,0),
+(@PATH,11,7564.738,-3145.144,844.8308,0,0,1,0,100,0),
+(@PATH,12,7604.358,-3171.258,850.8867,0,0,1,0,100,0),
+(@PATH,13,7635.467,-3207.211,857.19,0,0,1,0,100,0),
+(@PATH,14,7657.858,-3219.258,863.19,0,0,1,0,100,0),
+(@PATH,15,7685.416,-3218.983,867.14136,0,0,1,0,100,0),
+(@PATH,16,7706.542,-3219.742,864.3326,0,0,1,0,100,0),
+(@PATH,17,7747.335,-3226.993,862.4576,0,0,1,0,100,0),
+(@PATH,18,7796.658,-3221.782,860.6461,0,0,1,0,100,0),
+(@PATH,19,7827.596,-3229.273,856.4147,0,0,1,0,100,0),
+(@PATH,20,7846.174,-3253.239,852.1281,0,0,1,0,100,0),
+-- Path after event and despawn
+(@PATH+1,1,7837.094,-3235.536,853.8781,0,0,1,0,100,0),
+(@PATH+1,2,7828.622,-3230.38,855.9147,0,0,1,0,100,0),
+(@PATH+1,3,7793.782,-3219.743,861.1461,0,0,1,0,100,0),
+(@PATH+1,4,7765.224,-3225.374,864.0826,0,0,1,0,100,0),
+(@PATH+1,5,7736.733,-3226.5,861.4576,0,0,1,0,100,0);
diff --git a/src/server/authserver/Server/AuthSocket.cpp b/src/server/authserver/Server/AuthSocket.cpp
index 6595b6238b2..41bc9089987 100644
--- a/src/server/authserver/Server/AuthSocket.cpp
+++ b/src/server/authserver/Server/AuthSocket.cpp
@@ -443,7 +443,7 @@ bool AuthSocket::_HandleLogonChallenge()
if (!locked)
{
//set expired bans to inactive
- LoginDatabase.Execute(LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS));
+ LoginDatabase.DirectExecute(LoginDatabase.GetPreparedStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS));
// If the account is banned, reject the logon attempt
stmt = LoginDatabase.GetPreparedStatement(LOGIN_SEL_ACCOUNT_BANNED);
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
index a212a74df86..bcb68ae5ce3 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/boss_sartharion.cpp
@@ -37,9 +37,6 @@ enum Enums
SAY_SARTHARION_SLAY = 8,
WHISPER_LAVA_CHURN = 9,
- WHISPER_SHADRON_DICIPLE = 7,
- WHISPER_VESPERON_DICIPLE = 7,
-
//Sartharion Spells
SPELL_BERSERK = 61632, // Increases the caster's attack speed by 150% and all damage it deals by 500% for 5 min.
SPELL_CLEAVE = 56909, // Inflicts 35% weapon damage to an enemy and its nearest allies, affecting up to 10 targets.
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
index 5fc4869c4af..be1c83e185f 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/ObsidianSanctum/obsidian_sanctum.cpp
@@ -25,9 +25,6 @@
enum Enums
{
- WHISPER_HATCH_EGGS = 6,
- WHISPER_OPEN_PORTAL = 6, // whisper, shared by two dragons
-
//Mini bosses common spells
SPELL_TWILIGHT_RESIDUE = 61885, // makes immune to shadow damage, applied when leave phase
@@ -155,7 +152,9 @@ enum SharedTextIDs
SAY_DEATH = 2,
SAY_BREATH = 3,
SAY_RESPOND = 4,
- SAY_SPECIAL = 5
+ SAY_SPECIAL = 5,
+ WHISPER_OPEN_PORTAL = 6,
+ WHISPER_OPENED_PORTAL = 7
};
enum DummyDragonEvents
@@ -256,8 +255,6 @@ struct dummy_dragonAI : public ScriptedAI
// "opens" the portal and does the "opening" whisper
void OpenPortal()
{
- int32 textId = 0;
-
// there are 4 portal spawn locations, each are expected to be spawned with negative spawntimesecs in database
// using a grid search here seem to be more efficient than caching all four guids
@@ -268,7 +265,6 @@ struct dummy_dragonAI : public ScriptedAI
{
case NPC_TENEBRON:
{
- textId = WHISPER_HATCH_EGGS;
if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
{
for (uint32 i = 0; i < 6; ++i)
@@ -283,7 +279,6 @@ struct dummy_dragonAI : public ScriptedAI
}
case NPC_SHADRON:
{
- textId = WHISPER_OPEN_PORTAL;
if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
me->SummonCreature(NPC_ACOLYTE_OF_SHADRON, AcolyteofShadron.x, AcolyteofShadron.y, AcolyteofShadron.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 28000);
else
@@ -293,7 +288,6 @@ struct dummy_dragonAI : public ScriptedAI
}
case NPC_VESPERON:
{
- textId = WHISPER_OPEN_PORTAL;
if (instance && !instance->GetBossState(DATA_SARTHARION) == IN_PROGRESS)
{
if (Creature* acolyte = me->SummonCreature(NPC_ACOLYTE_OF_VESPERON, AcolyteofVesperon.x, AcolyteofVesperon.y, AcolyteofVesperon.z, 0, TEMPSUMMON_CORPSE_TIMED_DESPAWN, 20000))
@@ -317,7 +311,8 @@ struct dummy_dragonAI : public ScriptedAI
}
}
- DoRaidWhisper(textId);
+ DoRaidWhisper(WHISPER_OPEN_PORTAL);
+ DoRaidWhisper(WHISPER_OPENED_PORTAL);
// By using SetRespawnTime() we will actually "spawn" the object with our defined time.
// Once time is up, portal will disappear again.
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
index fdc4927763e..f05d065ab34 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_anomalus.cpp
@@ -25,9 +25,9 @@ enum Spells
SPELL_SPARK = 47751,
H_SPELL_SPARK = 57062,
SPELL_RIFT_SHIELD = 47748,
- SPELL_CHARGE_RIFT = 47747, //Works wrong (affect players, not rifts)
- SPELL_CREATE_RIFT = 47743, //Don't work, using WA
- SPELL_ARCANE_ATTRACTION = 57063, //No idea, when it's used
+ SPELL_CHARGE_RIFT = 47747, // Works wrong (affect players, not rifts)
+ SPELL_CREATE_RIFT = 47743, // Don't work, using WA
+ SPELL_ARCANE_ATTRACTION = 57063, // No idea, when it's used
};
enum Adds
@@ -41,14 +41,16 @@ enum Yells
SAY_AGGRO = 0,
SAY_DEATH = 1,
SAY_RIFT = 2,
- SAY_SHIELD = 3
+ SAY_SHIELD = 3,
+ SAY_RIFT_EMOTE = 4, // Needs to be added to script
+ SAY_SHIELD_EMOTE = 5 // Needs to be added to script
};
enum RiftSpells
{
SPELL_CHAOTIC_ENERGY_BURST = 47688,
SPELL_CHARGED_CHAOTIC_ENERGY_BURST = 47737,
- SPELL_ARCANEFORM = 48019, //Chaotic Rift visual
+ SPELL_ARCANEFORM = 48019, // Chaotic Rift visual
};
Position const RiftLocation[6] =
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
index ef8f5c2d3c4..455653a136e 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_keristrasza.cpp
@@ -44,7 +44,8 @@ enum Yells
SAY_SLAY = 1,
SAY_ENRAGE = 2,
SAY_DEATH = 3,
- SAY_CRYSTAL_NOVA = 4
+ SAY_CRYSTAL_NOVA = 4,
+ SAY_FRENZY = 5
};
enum Misc
@@ -175,6 +176,7 @@ public:
if (!bEnrage && HealthBelowPct(25))
{
Talk(SAY_ENRAGE);
+ Talk(SAY_FRENZY);
DoCast(me, SPELL_ENRAGE);
bEnrage = true;
}
diff --git a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
index 423937303b5..e2789995ec7 100644
--- a/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
+++ b/src/server/scripts/Northrend/Nexus/Nexus/boss_ormorok.cpp
@@ -36,6 +36,7 @@ enum Yells
SAY_REFLECT = 3,
SAY_CRYSTAL_SPIKES = 4,
SAY_KILL = 5,
+ SAY_FRENZY = 6
};
enum Events
@@ -89,6 +90,7 @@ public:
{
if (!frenzy && HealthBelowPct(25))
{
+ Talk(SAY_FRENZY);
DoCast(me, SPELL_FRENZY);
frenzy = true;
}
diff --git a/src/server/scripts/Northrend/zone_storm_peaks.cpp b/src/server/scripts/Northrend/zone_storm_peaks.cpp
index c09c817a2bf..b1ece9b1aec 100644
--- a/src/server/scripts/Northrend/zone_storm_peaks.cpp
+++ b/src/server/scripts/Northrend/zone_storm_peaks.cpp
@@ -339,17 +339,9 @@ public:
}
}
- void WaypointReached(uint32 /*waypointId*/) OVERRIDE
- {
- }
-
- void JustDied(Unit* /*killer*/) OVERRIDE
- {
- }
-
- void OnCharmed(bool /*apply*/) OVERRIDE
- {
- }
+ void WaypointReached(uint32 /*waypointId*/) OVERRIDE { }
+ void JustDied(Unit* /*killer*/) OVERRIDE { }
+ void OnCharmed(bool /*apply*/) OVERRIDE { }
void UpdateAI(uint32 diff) OVERRIDE
{
@@ -414,7 +406,6 @@ class npc_hyldsmeet_protodrake : public CreatureScript
}
};
-
/*#####
# npc_brann_bronzebeard for Quest 13285 "Forging the Keystone"
#####*/
@@ -438,19 +429,19 @@ enum BrannBronzebeard
SAY_VOICE_4 = 3,
SAY_VOICE_5 = 4,
- EVENT_SCRIPT_1 = 1,
- EVENT_SCRIPT_2 = 2,
- EVENT_SCRIPT_3 = 3,
- EVENT_SCRIPT_4 = 4,
- EVENT_SCRIPT_5 = 5,
- EVENT_SCRIPT_6 = 6,
- EVENT_SCRIPT_7 = 7,
- EVENT_SCRIPT_8 = 8,
- EVENT_SCRIPT_9 = 9,
- EVENT_SCRIPT_10 = 10,
- EVENT_SCRIPT_11 = 11,
- EVENT_SCRIPT_12 = 12,
- EVENT_SCRIPT_13 = 13
+ EVENT_SCRIPT_1 = 3,
+ EVENT_SCRIPT_2 = 4,
+ EVENT_SCRIPT_3 = 5,
+ EVENT_SCRIPT_4 = 6,
+ EVENT_SCRIPT_5 = 7,
+ EVENT_SCRIPT_6 = 8,
+ EVENT_SCRIPT_7 = 9,
+ EVENT_SCRIPT_8 = 10,
+ EVENT_SCRIPT_9 = 11,
+ EVENT_SCRIPT_10 = 12,
+ EVENT_SCRIPT_11 = 13,
+ EVENT_SCRIPT_12 = 14,
+ EVENT_SCRIPT_13 = 15
};
class npc_brann_bronzebeard_keystone : public CreatureScript
@@ -588,64 +579,131 @@ public:
}
};
-enum CloseRift
+/*#####
+# Quest 13010 Krolmir, Hammer of Storms
+#####*/
+
+enum JokkumScriptcast
{
- SPELL_DESPAWN_RIFT = 61665
+ NPC_KINGJOKKUM = 30331,
+ NPC_THORIM = 30390,
+ PATH_JOKKUM = 2072200,
+ PATH_JOKKUM_END = 2072201,
+ SAY_HOLD_ON = 0,
+ SAY_JOKKUM_1 = 1,
+ SAY_JOKKUM_2 = 2,
+ SAY_JOKKUM_3 = 3,
+ SAY_JOKKUM_4 = 4,
+ SAY_JOKKUM_5 = 5,
+ SAY_JOKKUM_6 = 6,
+ SAY_JOKKUM_7 = 7,
+ SAY_JOKKUM_8 = 8,
+ SAY_THORIM_1 = 0,
+ SAY_THORIM_2 = 1,
+ SAY_THORIM_3 = 2,
+ SAY_THORIM_4 = 3,
+ SPELL_JOKKUM_SUMMON = 56541,
+ SPELL_JOKKUM_KILL_CREDIT = 56545,
+ SPELL_EJECT_ALL_PASSENGERS = 50630,
+ SPELL_PLAYER_CAST_VERANUS_SUMMON = 56650,
+ SPELL_SUMMON_VERANUS_AND_THORIM = 56649,
+ EVENT_KROLMIR_1 = 16,
+ EVENT_KROLMIR_2 = 17,
+ EVENT_KROLMIR_3 = 18,
+ EVENT_KROLMIR_4 = 19,
+ EVENT_KROLMIR_5 = 20,
+ EVENT_KROLMIR_6 = 21,
+ EVENT_KROLMIR_7 = 22,
+ EVENT_KROLMIR_8 = 23,
+ EVENT_KROLMIR_9 = 24,
};
-class spell_close_rift : public SpellScriptLoader
+class npc_king_jokkum_vehicle : public CreatureScript
{
- public:
- spell_close_rift() : SpellScriptLoader("spell_close_rift") { }
+public:
+ npc_king_jokkum_vehicle() : CreatureScript("npc_king_jokkum_vehicle") { }
- class spell_close_rift_AuraScript : public AuraScript
+ struct npc_king_jokkum_vehicleAI : public VehicleAI
+ {
+ npc_king_jokkum_vehicleAI(Creature* creature) : VehicleAI(creature) { }
+
+ void Reset() OVERRIDE
{
- PrepareAuraScript(spell_close_rift_AuraScript);
+ playerGUID = 0;
+ pathEnd = false;
+ }
- bool Load() OVERRIDE
- {
- _counter = 0;
- return true;
- }
+ void OnCharmed(bool /*apply*/) OVERRIDE { }
- bool Validate(SpellInfo const* /*spell*/) OVERRIDE
+ void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) OVERRIDE
+ {
+ if (apply)
{
- return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT);
+ playerGUID = who->GetGUID();
+ Talk(SAY_HOLD_ON, playerGUID);
+ me->CastSpell(who, SPELL_JOKKUM_KILL_CREDIT, true);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
+ me->GetMotionMaster()->MovePath(PATH_JOKKUM, false);
}
+ }
- void HandlePeriodic(AuraEffect const* /* aurEff */)
+ void MovementInform(uint32 type, uint32 id) OVERRIDE
+ {
+ if (type != WAYPOINT_MOTION_TYPE)
+ return;
+
+ if (pathEnd)
{
- if (++_counter == 5)
- GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true);
- }
+ if (id == 4)
+ {
- void Register() OVERRIDE
+ }
+ }
+ else
{
- OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
+ if (id == 19)
+ {
+ pathEnd = true;
+ me->SetFacingTo(0.418879f);
+ Talk(SAY_JOKKUM_1);
+ if (Player* player = ObjectAccessor::GetPlayer(*me, playerGUID))
+ me->CastSpell(player, SPELL_PLAYER_CAST_VERANUS_SUMMON);
+ me->CastSpell(me, SPELL_EJECT_ALL_PASSENGERS);
+
+ }
}
+ }
- private:
- uint8 _counter;
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ if (!pathEnd)
+ return;
- };
+ events.Update(diff);
- AuraScript* GetAuraScript() const OVERRIDE
- {
- return new spell_close_rift_AuraScript();
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_KROLMIR_1:
+ Talk(SAY_JOKKUM_2);
+ events.ScheduleEvent(EVENT_KROLMIR_2, 4000);
+ break;
+ }
+ }
}
-};
-/*#####
-# Krolmir, Hammer of Storms
-#####*/
+ private:
+ EventMap events;
+ uint64 playerGUID;
+ bool pathEnd;
-enum JokkumScriptcast
-{
- SPELL_JOKKUM_KILL_CREDIT = 56545,
- SPELL_JOKKUM_SUMMON = 56541,
- NPC_KINGJOKKUM = 30331,
- SAY_HOLD_ON = 0,
- PATH_JOKKUM = 2072200
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_king_jokkum_vehicleAI(creature);
+ }
};
class spell_jokkum_scriptcast : public SpellScriptLoader
@@ -665,8 +723,8 @@ class spell_jokkum_scriptcast : public SpellScriptLoader
void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
{
- Unit* target = GetTarget();
- target->CastSpell(target, SPELL_JOKKUM_SUMMON, true);
+ if (Unit* target = GetTarget())
+ target->CastSpell(target, SPELL_JOKKUM_SUMMON, true);
}
void Register() OVERRIDE
@@ -681,42 +739,114 @@ class spell_jokkum_scriptcast : public SpellScriptLoader
}
};
-class npc_king_jokkum_vehicle : public CreatureScript
+class spell_veranus_summon : public SpellScriptLoader
+{
+ public: spell_veranus_summon() : SpellScriptLoader("spell_veranus_summon") { }
+
+ class spell_veranus_summon_AuraScript : public AuraScript
+ {
+ PrepareAuraScript(spell_veranus_summon_AuraScript);
+
+ bool Validate(SpellInfo const* /*spellInfo*/) OVERRIDE
+ {
+ if (!sSpellMgr->GetSpellInfo(SPELL_SUMMON_VERANUS_AND_THORIM))
+ return false;
+ return true;
+ }
+
+ void OnApply(AuraEffect const* /*aurEff*/, AuraEffectHandleModes /*mode*/)
+ {
+ if (Unit* target = GetTarget())
+ target->CastSpell(target, SPELL_SUMMON_VERANUS_AND_THORIM, true);
+ }
+
+ void Register() OVERRIDE
+ {
+ OnEffectApply += AuraEffectApplyFn(spell_veranus_summon_AuraScript::OnApply, EFFECT_0, SPELL_AURA_DUMMY, AURA_EFFECT_HANDLE_REAL);
+ }
+ };
+
+ AuraScript* GetAuraScript() const OVERRIDE
+ {
+ return new spell_veranus_summon_AuraScript();
+ }
+};
+
+/*#####
+# spell_jokkum_eject_all
+#####*/
+
+class spell_jokkum_eject_all : public SpellScriptLoader
+{
+ public: spell_jokkum_eject_all() : SpellScriptLoader("spell_jokkum_eject_all") { }
+
+ class spell_jokkum_eject_all_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_jokkum_eject_all_SpellScript);
+
+ void HandleScriptEffect(SpellEffIndex /* effIndex */)
+ {
+ if (Unit* caster = GetCaster())
+ if (caster->IsVehicle())
+ caster->GetVehicleKit()->RemoveAllPassengers();
+ }
+
+ void Register() OVERRIDE
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_jokkum_eject_all_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const OVERRIDE
+ {
+ return new spell_jokkum_eject_all_SpellScript();
+ }
+};
+
+enum CloseRift
+{
+ SPELL_DESPAWN_RIFT = 61665
+};
+
+class spell_close_rift : public SpellScriptLoader
{
public:
- npc_king_jokkum_vehicle() : CreatureScript("npc_king_jokkum_vehicle") { }
+ spell_close_rift() : SpellScriptLoader("spell_close_rift") { }
- struct npc_king_jokkum_vehicleAI : public VehicleAI
+ class spell_close_rift_AuraScript : public AuraScript
{
- npc_king_jokkum_vehicleAI(Creature* creature) : VehicleAI(creature) { }
+ PrepareAuraScript(spell_close_rift_AuraScript);
- void OnCharmed(bool /*apply*/) OVERRIDE { }
+ bool Load() OVERRIDE
+ {
+ _counter = 0;
+ return true;
+ }
- void PassengerBoarded(Unit* who, int8 /*seat*/, bool apply) OVERRIDE
+ bool Validate(SpellInfo const* /*spell*/) OVERRIDE
{
- if (apply)
- {
- Talk(SAY_HOLD_ON, who->GetGUID());
- me->CastSpell(who, SPELL_JOKKUM_KILL_CREDIT, true);
- me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_NPC);
- me->GetMotionMaster()->MovePath(PATH_JOKKUM, false);
- }
+ return sSpellMgr->GetSpellInfo(SPELL_DESPAWN_RIFT);
}
- void MovementInform(uint32 type, uint32 id) OVERRIDE
+ void HandlePeriodic(AuraEffect const* /* aurEff */)
{
- if (type != WAYPOINT_MOTION_TYPE)
- return;
+ if (++_counter == 5)
+ GetTarget()->CastSpell((Unit*)NULL, SPELL_DESPAWN_RIFT, true);
+ }
- // PointId in WaypointMovementGenerator doesn't match with PointId in DB
- if (id == 19)
- me->GetVehicleKit()->RemoveAllPassengers();
+ void Register() OVERRIDE
+ {
+ OnEffectPeriodic += AuraEffectPeriodicFn(spell_close_rift_AuraScript::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
+
+ private:
+ uint8 _counter;
+
};
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ AuraScript* GetAuraScript() const OVERRIDE
{
- return new npc_king_jokkum_vehicleAI(creature);
+ return new spell_close_rift_AuraScript();
}
};
@@ -729,7 +859,9 @@ void AddSC_storm_peaks()
new npc_icefang();
new npc_hyldsmeet_protodrake();
new npc_brann_bronzebeard_keystone();
- new spell_close_rift();
- new spell_jokkum_scriptcast();
new npc_king_jokkum_vehicle();
+ new spell_jokkum_scriptcast();
+ new spell_veranus_summon();
+ new spell_jokkum_eject_all();
+ new spell_close_rift();
}
diff --git a/src/server/scripts/Northrend/zone_wintergrasp.cpp b/src/server/scripts/Northrend/zone_wintergrasp.cpp
index a27ce0324ff..311b18524b2 100644
--- a/src/server/scripts/Northrend/zone_wintergrasp.cpp
+++ b/src/server/scripts/Northrend/zone_wintergrasp.cpp
@@ -237,11 +237,47 @@ class npc_wg_spirit_guide : public CreatureScript
}
};
+enum WGQueue
+{
+ SPELL_FROST_ARMOR = 12544
+};
+
class npc_wg_queue : public CreatureScript
{
public:
npc_wg_queue() : CreatureScript("npc_wg_queue") { }
+ struct npc_wg_queueAI : public ScriptedAI
+ {
+ npc_wg_queueAI(Creature* creature) : ScriptedAI(creature) { }
+
+ uint32 FrostArmor_Timer;
+
+ void Reset() OVERRIDE
+ {
+ FrostArmor_Timer = 0;
+ }
+
+ void EnterCombat(Unit* /*who*/) OVERRIDE { }
+
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ if (FrostArmor_Timer <= diff)
+ {
+ DoCast(me, SPELL_FROST_ARMOR);
+ FrostArmor_Timer = 180000;
+ }
+ else FrostArmor_Timer -= diff;
+
+ DoMeleeAttackIfReady();
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_wg_queueAI(creature);
+ }
+
bool OnGossipHello(Player* player, Creature* creature) OVERRIDE
{
if (creature->IsQuestGiver())
diff --git a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
index acc3317d7bd..31e4fd88cb5 100644
--- a/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
+++ b/src/server/scripts/Outland/zone_blades_edge_mountains.cpp
@@ -24,7 +24,8 @@ SDCategory: Blade's Edge Mountains
EndScriptData */
/* ContentData
-npc_bladespire_ogre
+npc_bloodmaul_brutebane
+npc_bloodmaul_brute
npc_nether_drake
npc_daranelle
npc_overseer_nuaar
@@ -45,14 +46,173 @@ EndContentData */
#include "SpellAuras.h"
#include "SpellAuraEffects.h"
-//Support for quest: You're Fired! (10821)
-bool obelisk_one, obelisk_two, obelisk_three, obelisk_four, obelisk_five;
+/*######
+## npc_bloodmaul_brutebane
+######*/
+
+enum Bloodmaul
+{
+ NPC_OGRE_BRUTE = 19995,
+ NPC_QUEST_CREDIT = 21241,
+ GO_KEG = 184315,
+ QUEST_GETTING_THE_BLADESPIRE_TANKED = 10512,
+ QUEST_BLADESPIRE_KEGGER = 10545
+};
+
+class npc_bloodmaul_brutebane : public CreatureScript
+{
+public:
+ npc_bloodmaul_brutebane() : CreatureScript("npc_bloodmaul_brutebane") { }
+
+ struct npc_bloodmaul_brutebaneAI : public ScriptedAI
+ {
+ npc_bloodmaul_brutebaneAI(Creature* creature) : ScriptedAI(creature)
+ {
+ if (Creature* Ogre = me->FindNearestCreature(NPC_OGRE_BRUTE, 50, true))
+ {
+ Ogre->SetReactState(REACT_DEFENSIVE);
+ Ogre->GetMotionMaster()->MovePoint(1, me->GetPositionX()-1, me->GetPositionY()+1, me->GetPositionZ());
+ }
+ }
+
+ uint64 OgreGUID;
+
+ void Reset() OVERRIDE
+ {
+ OgreGUID = 0;
+ }
-#define LEGION_OBELISK_ONE 185193
-#define LEGION_OBELISK_TWO 185195
-#define LEGION_OBELISK_THREE 185196
-#define LEGION_OBELISK_FOUR 185197
-#define LEGION_OBELISK_FIVE 185198
+ void UpdateAI(uint32 /*diff*/) OVERRIDE { }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_bloodmaul_brutebaneAI(creature);
+ }
+};
+
+/*######
+## npc_bloodmaul_brute
+######*/
+
+enum BloodmaulBrute
+{
+ EVENT_CLEAVE = 1,
+ EVENT_DEBILITATING_STRIKE = 2,
+ SAY_AGGRO = 0,
+ SAY_DEATH = 1,
+ SAY_ENRAGE = 2,
+ SPELL_CLEAVE = 15496,
+ SPELL_DEBILITATING_STRIKE = 37577,
+ SPELL_ENRAGE = 8599,
+ QUEST_INTO_THE_SOULGRINDER = 11000
+};
+
+class npc_bloodmaul_brute : public CreatureScript
+{
+public:
+ npc_bloodmaul_brute() : CreatureScript("npc_bloodmaul_brute") { }
+
+ struct npc_bloodmaul_bruteAI : public ScriptedAI
+ {
+ npc_bloodmaul_bruteAI(Creature* creature) : ScriptedAI(creature) { }
+
+ void Reset() OVERRIDE
+ {
+ PlayerGUID = 0;
+ hp30 = false;
+ }
+
+ void EnterCombat(Unit* /*who*/) OVERRIDE
+ {
+ if (urand (0, 100) < 35)
+ Talk(SAY_AGGRO);
+
+ events.ScheduleEvent(EVENT_CLEAVE, urand(9000,12000));
+ events.ScheduleEvent(EVENT_DEBILITATING_STRIKE, 15000);
+ }
+
+ void JustDied(Unit* killer) OVERRIDE
+ {
+ if (killer->ToPlayer()->GetQuestRewardStatus(QUEST_INTO_THE_SOULGRINDER))
+ Talk(SAY_DEATH);
+ }
+
+ void MoveInLineOfSight(Unit* who) OVERRIDE
+ {
+ if (!who || (!who->IsAlive()))
+ return;
+
+ if (me->IsWithinDistInMap(who, 50.0f))
+ {
+ if (who->GetTypeId() == TYPEID_PLAYER)
+ if (who->ToPlayer()->GetQuestStatus(QUEST_GETTING_THE_BLADESPIRE_TANKED) == QUEST_STATUS_INCOMPLETE
+ || who->ToPlayer()->GetQuestStatus(QUEST_BLADESPIRE_KEGGER) == QUEST_STATUS_INCOMPLETE)
+ PlayerGUID = who->GetGUID();
+ }
+ }
+
+ void MovementInform(uint32 /*type*/, uint32 id) OVERRIDE
+ {
+ if (id == 1)
+ {
+ if (GameObject* Keg = me->FindNearestGameObject(GO_KEG, 20))
+ Keg->Delete();
+
+ me->HandleEmoteCommand(7);
+ me->SetReactState(REACT_AGGRESSIVE);
+ me->GetMotionMaster()->MoveTargetedHome();
+
+ Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
+ Creature* Credit = me->FindNearestCreature(NPC_QUEST_CREDIT, 50, true);
+ if (player && Credit)
+ player->KilledMonster(Credit->GetCreatureTemplate(), Credit->GetGUID());
+ }
+ }
+
+ void UpdateAI(uint32 diff) OVERRIDE
+ {
+ if (!UpdateVictim())
+ return;
+
+ events.Update(diff);
+
+ while (uint32 eventId = events.ExecuteEvent())
+ {
+ switch (eventId)
+ {
+ case EVENT_CLEAVE:
+ DoCast(me, SPELL_CLEAVE);
+ events.ScheduleEvent(EVENT_CLEAVE, urand(9000,12000));
+ break;
+ case EVENT_DEBILITATING_STRIKE:
+ DoCastVictim(SPELL_DEBILITATING_STRIKE);
+ events.ScheduleEvent(EVENT_DEBILITATING_STRIKE, urand(18000,22000));
+ break;
+ }
+ }
+
+ if (!hp30 && HealthBelowPct(30))
+ {
+ hp30 = true;
+ Talk(SAY_ENRAGE);
+ DoCast(me, SPELL_ENRAGE);
+ }
+
+ DoMeleeAttackIfReady();
+ }
+
+ private:
+ EventMap events;
+ uint64 PlayerGUID;
+ bool hp30;
+ };
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_bloodmaul_bruteAI(creature);
+ }
+};
/*######
## npc_nether_drake
@@ -85,11 +245,6 @@ class npc_nether_drake : public CreatureScript
public:
npc_nether_drake() : CreatureScript("npc_nether_drake") { }
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_nether_drakeAI(creature);
- }
-
struct npc_nether_drakeAI : public ScriptedAI
{
npc_nether_drakeAI(Creature* creature) : ScriptedAI(creature) { }
@@ -233,6 +388,11 @@ public:
DoMeleeAttackIfReady();
}
};
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_nether_drakeAI(creature);
+ }
};
/*######
@@ -250,11 +410,6 @@ class npc_daranelle : public CreatureScript
public:
npc_daranelle() : CreatureScript("npc_daranelle") { }
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_daranelleAI(creature);
- }
-
struct npc_daranelleAI : public ScriptedAI
{
npc_daranelleAI(Creature* creature) : ScriptedAI(creature) { }
@@ -279,6 +434,11 @@ public:
ScriptedAI::MoveInLineOfSight(who);
}
};
+
+ CreatureAI* GetAI(Creature* creature) const OVERRIDE
+ {
+ return new npc_daranelleAI(creature);
+ }
};
/*######
@@ -354,6 +514,20 @@ public:
}
};
+//Support for quest: You're Fired! (10821)
+bool obelisk_one, obelisk_two, obelisk_three, obelisk_four, obelisk_five;
+
+enum LegionObelisk
+{
+ GO_LEGION_OBELISK_ONE = 185193,
+ GO_LEGION_OBELISK_TWO = 185195,
+ GO_LEGION_OBELISK_THREE = 185196,
+ GO_LEGION_OBELISK_FOUR = 185197,
+ GO_LEGION_OBELISK_FIVE = 185198,
+ NPC_DOOMCRYER = 19963,
+ QUEST_YOURE_FIRED = 10821
+};
+
/*######
## go_legion_obelisk
######*/
@@ -365,30 +539,30 @@ public:
bool OnGossipHello(Player* player, GameObject* go) OVERRIDE
{
- if (player->GetQuestStatus(10821) == QUEST_STATUS_INCOMPLETE)
+ if (player->GetQuestStatus(QUEST_YOURE_FIRED) == QUEST_STATUS_INCOMPLETE)
{
switch (go->GetEntry())
{
- case LEGION_OBELISK_ONE:
+ case GO_LEGION_OBELISK_ONE:
obelisk_one = true;
break;
- case LEGION_OBELISK_TWO:
+ case GO_LEGION_OBELISK_TWO:
obelisk_two = true;
break;
- case LEGION_OBELISK_THREE:
+ case GO_LEGION_OBELISK_THREE:
obelisk_three = true;
break;
- case LEGION_OBELISK_FOUR:
+ case GO_LEGION_OBELISK_FOUR:
obelisk_four = true;
break;
- case LEGION_OBELISK_FIVE:
+ case GO_LEGION_OBELISK_FIVE:
obelisk_five = true;
break;
}
if (obelisk_one == true && obelisk_two == true && obelisk_three == true && obelisk_four == true && obelisk_five == true)
{
- go->SummonCreature(19963, 2943.40f, 4778.20f, 284.49f, 0.94f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
+ go->SummonCreature(NPC_DOOMCRYER, 2943.40f, 4778.20f, 284.49f, 0.94f, TEMPSUMMON_TIMED_DESPAWN_OUT_OF_COMBAT, 120000);
//reset global var
obelisk_one = false;
obelisk_two = false;
@@ -403,117 +577,6 @@ public:
};
/*######
-## npc_bloodmaul_brutebane
-######*/
-
-enum Bloodmaul
-{
- NPC_OGRE_BRUTE = 19995,
- NPC_QUEST_CREDIT = 21241,
- GO_KEG = 184315,
- QUEST_GETTING_THE_BLADESPIRE_TANKED = 10512,
- QUEST_BLADESPIRE_KEGGER = 10545,
-};
-
-class npc_bloodmaul_brutebane : public CreatureScript
-{
-public:
- npc_bloodmaul_brutebane() : CreatureScript("npc_bloodmaul_brutebane") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_bloodmaul_brutebaneAI(creature);
- }
-
- struct npc_bloodmaul_brutebaneAI : public ScriptedAI
- {
- npc_bloodmaul_brutebaneAI(Creature* creature) : ScriptedAI(creature)
- {
- if (Creature* Ogre = me->FindNearestCreature(NPC_OGRE_BRUTE, 50, true))
- {
- Ogre->SetReactState(REACT_DEFENSIVE);
- Ogre->GetMotionMaster()->MovePoint(1, me->GetPositionX()-1, me->GetPositionY()+1, me->GetPositionZ());
- }
- }
-
- uint64 OgreGUID;
-
- void Reset() OVERRIDE
- {
- OgreGUID = 0;
- }
-
- void UpdateAI(uint32 /*uiDiff*/) OVERRIDE { }
- };
-};
-
-/*######
-## npc_ogre_brute
-######*/
-
-class npc_ogre_brute : public CreatureScript
-{
-public:
- npc_ogre_brute() : CreatureScript("npc_ogre_brute") { }
-
- CreatureAI* GetAI(Creature* creature) const OVERRIDE
- {
- return new npc_ogre_bruteAI(creature);
- }
-
- struct npc_ogre_bruteAI : public ScriptedAI
- {
- npc_ogre_bruteAI(Creature* creature) : ScriptedAI(creature) { }
-
- uint64 PlayerGUID;
-
- void Reset() OVERRIDE
- {
- PlayerGUID = 0;
- }
-
- void MoveInLineOfSight(Unit* who) OVERRIDE
- {
- if (!who || (!who->IsAlive()))
- return;
-
- if (me->IsWithinDistInMap(who, 50.0f))
- {
- if (who->GetTypeId() == TYPEID_PLAYER)
- if (who->ToPlayer()->GetQuestStatus(QUEST_GETTING_THE_BLADESPIRE_TANKED) == QUEST_STATUS_INCOMPLETE
- || who->ToPlayer()->GetQuestStatus(QUEST_BLADESPIRE_KEGGER) == QUEST_STATUS_INCOMPLETE)
- PlayerGUID = who->GetGUID();
- }
- }
-
- void MovementInform(uint32 /*type*/, uint32 id) OVERRIDE
- {
- if (id == 1)
- {
- if (GameObject* Keg = me->FindNearestGameObject(GO_KEG, 20))
- Keg->Delete();
-
- me->HandleEmoteCommand(7);
- me->SetReactState(REACT_AGGRESSIVE);
- me->GetMotionMaster()->MoveTargetedHome();
-
- Player* player = ObjectAccessor::GetPlayer(*me, PlayerGUID);
- Creature* Credit = me->FindNearestCreature(NPC_QUEST_CREDIT, 50, true);
- if (player && Credit)
- player->KilledMonster(Credit->GetCreatureTemplate(), Credit->GetGUID());
- }
- }
-
- void UpdateAI(uint32 /*diff*/) OVERRIDE
- {
- if (!UpdateVictim())
- return;
- DoMeleeAttackIfReady();
- }
- };
-};
-
-/*######
## go_thunderspike
######*/
@@ -1123,6 +1186,7 @@ class go_apexis_relic : public GameObjectScript
enum ScannerMasterBunny
{
NPC_OSCILLATING_FREQUENCY_SCANNER_TOP_BUNNY = 21759,
+ GO_OSCILLATING_FREQUENCY_SCANNER = 184926,
SPELL_OSCILLATION_FIELD = 37408,
QUEST_GAUGING_THE_RESONANT_FREQUENCY = 10594
};
@@ -1143,8 +1207,8 @@ public:
else
{
// Spell 37392 does not exist in dbc, manually spawning
- me->SummonCreature(21759, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 0.5f, me->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 50000);
- me->SummonGameObject(184926, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), 0, 0, 0, 0, 50000);
+ me->SummonCreature(NPC_OSCILLATING_FREQUENCY_SCANNER_TOP_BUNNY, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ() + 0.5f, me->GetOrientation(), TEMPSUMMON_TIMED_OR_DEAD_DESPAWN, 50000);
+ me->SummonGameObject(GO_OSCILLATING_FREQUENCY_SCANNER, me->GetPositionX(), me->GetPositionY(), me->GetPositionZ(), me->GetOrientation(), 0, 0, 0, 0, 50000);
me->DespawnOrUnsummon(50000);
}
@@ -1211,13 +1275,13 @@ class spell_oscillating_field : public SpellScriptLoader
void AddSC_blades_edge_mountains()
{
+ new npc_bloodmaul_brutebane();
+ new npc_bloodmaul_brute();
new npc_nether_drake();
new npc_daranelle();
new npc_overseer_nuaar();
new npc_saikkal_the_elder();
new go_legion_obelisk();
- new npc_bloodmaul_brutebane();
- new npc_ogre_brute();
new go_thunderspike();
new npc_simon_bunny();
new go_simon_cluster();
diff --git a/src/server/scripts/World/npc_taxi.cpp b/src/server/scripts/World/npc_taxi.cpp
index bf742d606f2..08be2595c0e 100644
--- a/src/server/scripts/World/npc_taxi.cpp
+++ b/src/server/scripts/World/npc_taxi.cpp
@@ -54,8 +54,6 @@ EndScriptData
#define GOSSIP_TORASTRASZA1 "I would like to see Lord Of Afrasastrasz, in the middle of the temple."
#define GOSSIP_TORASTRASZA2 "Yes, Please. I would like to return to the ground floor of the temple."
#define GOSSIP_CRIMSONWING "<Ride the gryphons to Survey Alcaz Island>"
-#define GOSSIP_THRICESTAR1 "Do you think I could take a ride on one of those flying machines?"
-#define GOSSIP_THRICESTAR2 "Kara, I need to be flown out the Dens of Dying to find Bixie."
#define GOSSIP_WILLIAMKEILAR1 "Take me to Northpass Tower."
#define GOSSIP_WILLIAMKEILAR2 "Take me to Eastwall Tower."
#define GOSSIP_WILLIAMKEILAR3 "Take me to Crown Guard Tower."
@@ -163,13 +161,6 @@ public:
if (player->GetQuestStatus(11142) == QUEST_STATUS_INCOMPLETE)
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_CRIMSONWING, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF+25);
break;
- case 26602:
- if (creature->IsTaxi())
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_TAXI, GOSSIP_THRICESTAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 26);
-
- if (player->GetQuestStatus(11692) == QUEST_STATUS_COMPLETE)
- player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_THRICESTAR2, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 27);
- break;
case 17209:
player->SetTaxiCheater(true);
player->ADD_GOSSIP_ITEM(GOSSIP_ICON_CHAT, GOSSIP_WILLIAMKEILAR1, GOSSIP_SENDER_MAIN, GOSSIP_ACTION_INFO_DEF + 28);
@@ -299,21 +290,14 @@ public:
player->CastSpell(player, 42295, true);
break;
case GOSSIP_ACTION_INFO_DEF + 26:
- player->GetSession()->SendTaxiMenu(creature);
- break;
- case GOSSIP_ACTION_INFO_DEF + 27:
- player->CLOSE_GOSSIP_MENU();
- player->CastSpell(player, 51446, false);
- break;
- case GOSSIP_ACTION_INFO_DEF + 28:
player->CLOSE_GOSSIP_MENU();
player->ActivateTaxiPathTo(494);
break;
- case GOSSIP_ACTION_INFO_DEF + 29:
+ case GOSSIP_ACTION_INFO_DEF + 27:
player->CLOSE_GOSSIP_MENU();
player->ActivateTaxiPathTo(495);
break;
- case GOSSIP_ACTION_INFO_DEF + 30:
+ case GOSSIP_ACTION_INFO_DEF + 28:
player->CLOSE_GOSSIP_MENU();
player->ActivateTaxiPathTo(496);
break;
diff --git a/src/server/shared/Database/Implementation/LoginDatabase.cpp b/src/server/shared/Database/Implementation/LoginDatabase.cpp
index f6754629e38..4e876a8567b 100644
--- a/src/server/shared/Database/Implementation/LoginDatabase.cpp
+++ b/src/server/shared/Database/Implementation/LoginDatabase.cpp
@@ -24,7 +24,7 @@ void LoginDatabaseConnection::DoPrepareStatements()
PrepareStatement(LOGIN_SEL_REALMLIST, "SELECT id, name, address, localAddress, localSubnetMask, port, icon, flag, timezone, allowedSecurityLevel, population, gamebuild FROM realmlist WHERE flag <> 3 ORDER BY name", CONNECTION_SYNCH);
PrepareStatement(LOGIN_DEL_EXPIRED_IP_BANS, "DELETE FROM ip_banned WHERE unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()", CONNECTION_ASYNC);
- PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS, "UPDATE account_banned SET active = 0 WHERE active = 1 AND unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()", CONNECTION_ASYNC);
+ PrepareStatement(LOGIN_UPD_EXPIRED_ACCOUNT_BANS, "UPDATE account_banned SET active = 0 WHERE active = 1 AND unbandate<>bandate AND unbandate<=UNIX_TIMESTAMP()", CONNECTION_SYNCH);
PrepareStatement(LOGIN_SEL_IP_BANNED, "SELECT * FROM ip_banned WHERE ip = ?", CONNECTION_SYNCH);
PrepareStatement(LOGIN_INS_IP_AUTO_BANNED, "INSERT INTO ip_banned (ip, bandate, unbandate, bannedby, banreason) VALUES (?, UNIX_TIMESTAMP(), UNIX_TIMESTAMP()+?, 'Trinity realmd', 'Failed login autoban')", CONNECTION_ASYNC);
PrepareStatement(LOGIN_SEL_IP_BANNED_ALL, "SELECT ip, bandate, unbandate, bannedby, banreason FROM ip_banned WHERE (bandate = unbandate OR unbandate > UNIX_TIMESTAMP()) ORDER BY unbandate", CONNECTION_SYNCH);