diff options
author | DDuarte <dnpd.dd@gmail.com> | 2014-01-10 03:16:59 +0000 |
---|---|---|
committer | DDuarte <dnpd.dd@gmail.com> | 2014-01-10 03:16:59 +0000 |
commit | 86107a0296eedaa783fc8b8f7a2892c606626d0b (patch) | |
tree | aa91d7be5b298465556ec24e1ef676bad77a4d13 | |
parent | 52a5213e462b754079475bad1f4d4edb22b04a2a (diff) | |
parent | 6402fa02ac4a4f1d731ed0b6d744328527e2a857 (diff) |
Merge branch 'master' into 4.3.4
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); |