aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql77
-rw-r--r--sql/updates/world/2012_12_24_01_world_sai.sql42
-rw-r--r--sql/updates/world/2012_12_24_02_world_sai.sql64
-rw-r--r--sql/updates/world/2012_12_24_03_world_sai.sql6
-rw-r--r--sql/updates/world/2012_12_24_04_world_creature.sql3
-rw-r--r--sql/updates/world/2012_12_24_05_world_object.sql61
-rw-r--r--sql/updates/world/2012_12_24_06_world_reputation.sql2
-rw-r--r--sql/updates/world/2012_12_24_07_world_sai.sql31
-rw-r--r--sql/updates/world/2012_12_24_08_world_conditions.sql4
-rw-r--r--src/server/collision/PrecompiledHeaders/collisionPCH.h3
-rw-r--r--src/server/scripts/Northrend/dragonblight.cpp93
-rw-r--r--src/server/scripts/Spells/spell_quest.cpp32
12 files changed, 413 insertions, 5 deletions
diff --git a/sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql b/sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql
new file mode 100644
index 00000000000..edf1f887d1c
--- /dev/null
+++ b/sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql
@@ -0,0 +1,77 @@
+-- Add support for quest Defending Wyrmrest Temple ID: 12372 and support for achievement Rapid Defence
+-- Based on nelegalno and Nay updates
+-- Indexes
+-- NPCs
+SET @Defender := 27629;
+SET @AzureDrake := 27682;
+SET @AzureDragon := 27608;
+-- Spells
+SET @SPELL_AZURE_ON_DEATH_FORCE_WHISPER := 50287;
+
+-- Update Defender template from sniffs
+UPDATE `creature_template` SET `HoverHeight`=4,`npcflag`=1,`unit_flags`=unit_flags|0x00000200|0x00000300,`spell1`=49161,`spell2`=49243,`spell3`=49263,`spell4`=49264,`spell5`=49367,`InhabitType`=4 WHERE `entry`=@Defender;
+
+-- Conditions
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (49367,49370);
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=17 AND `SourceEntry` IN (49161,49243,49367);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ScriptName`,`Comment`) VALUES
+(13,1,49367,0,0,31,0,3,27698,0,0,0,'','Spell can hit only Defending Wyrmrest Temple Kill Credit Bunny'),
+(13,1,49370,0,0,31,0,3,27698,0,0,0,'','Spell can hit only Defending Wyrmrest Temple Kill Credit Bunny'),
+(17,0,49367,0,0,29,0,27698,80,0,0,0,'','Temple Kill Credit Bunny must be in 80 yards to be able to cast Destibilize and less for smth to happen'),
+(17,0,49161,0,0,31,1,3,27608,0,0,0,'','Spell Flame Breath target Azure Dragon'),
+(17,0,49161,0,1,31,1,3,27682,0,0,0,'','Spell Flame Breath target Azure Drake'),
+(17,0,49161,0,2,31,1,3,27629,0,0,0,'','Spell Flame Breath can target mounted by enemey faction player Defender'),
+(17,0,49243,0,0,31,1,3,27608,0,0,0,'','Spell Immolation can target Azure Dragon'),
+(17,0,49243,0,1,31,1,3,27682,0,0,0,'','Spell Immolation can target Azure Drake'),
+(17,0,49243,0,1,31,1,3,27629,0,0,0,'','Spell Immolation can target mounted by enemey faction player Defender');
+
+-- Remove unblizzlike npc_spell_sclick that is handled by spell now
+DELETE FROM `npc_spellclick_spells` WHERE `npc_entry`=27629;
+
+-- Addon data
+DELETE FROM `creature_template_addon` WHERE `entry`=27629;
+INSERT INTO `creature_template_addon` (`entry`,`path_id`,`mount`,`bytes1`,`bytes2`,`emote`,`auras`) VALUES
+(27629,0,0,33554432,1,0,50069);
+
+-- Convert EAI to SAI and fix some timings
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry` IN (@AzureDragon,@AzureDrake);
+DELETE FROM `creature_ai_scripts` WHERE `creature_id` IN (@AzureDragon,@AzureDrake);
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@AzureDragon,@AzureDrake) 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
+(@AzureDragon,0,0,0,0,0,100,0,500,4000,3700,4500,11,49111,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Azure Dragon - IC - Cast Frost Breath'),
+(@AzureDragon,0,1,0,6,0,100,0,0,0,0,0,11,@SPELL_AZURE_ON_DEATH_FORCE_WHISPER,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Azure Dragon - On death - Cast force whisper spell on invoker (hack need to be replaced by 11'),
+(@AzureDrake,0,0,0,0,0,100,0,500,4000,3700,4500,11,49317,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Azure Drake - IC - Cast Frost Breath'),
+(@AzureDrake,0,1,0,6,0,100,0,0,0,0,0,11,@SPELL_AZURE_ON_DEATH_FORCE_WHISPER,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Azure Drake - On death - Cast force whisper spell on invoker');
+-- No need to condition them, stuff will happen only if send to drake otherwise would be plain result
+
+-- Texts
+DELETE FROM `creature_text` WHERE `entry`=@Defender;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+-- On player mounted or creature hit by mounting spell
+(@Defender,0,0,'Are you ready for battle, $c?',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,1,'Take us into battle, $n!',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,2,'Shall we destabilize the shrine first or disable the enemy?',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,3,'We''ve been expecting you, $n. Now we have the upper hand.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,4,'I can''t believe the blues would attack us. Let''s give some of it back!',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,5,'Let''s defend the temple!',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,6,'Where to first?',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,0,7,'Your reputation precedes you, $n. This should be interesting.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+-- On Azure Drake/Dragon kill
+(@Defender,1,0,'I never thought that I''d be riding into battle with a $r on my back.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,1,'Another blue down. We make a great team!',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,2,'With you and I working together, this battle will be over in no time.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,3,'Malygos has clearly gone insane.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,4,'Nice one, kid.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,5,'I''ve never seen anything like this before. I''m glad that you''re here.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,6,'I''m glad you saw that one!',15,0,100,0,0,0, 'Wyrmrest Defender'),
+(@Defender,1,7,'Just hang on. We''ll get through this.',15,0,100,0,0,0, 'Wyrmrest Defender'),
+-- Below 30% HP
+(@Defender,2,0,'We should get out of here. I need to heal!',42,0,100,0,3000,0, 'Wyrmrest Defender');
+
+-- Remove achievement "Rapid Defence" out of disables
+DELETE FROM `disables` WHERE `sourceType`=4 AND `entry`=3924;
+
+-- Insert spell_script_name
+DELETE FROM `spell_script_names` WHERE `spell_id`=@SPELL_AZURE_ON_DEATH_FORCE_WHISPER;
+INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
+(@SPELL_AZURE_ON_DEATH_FORCE_WHISPER, 'spell_q12372_azure_on_death_force_whisper');
diff --git a/sql/updates/world/2012_12_24_01_world_sai.sql b/sql/updates/world/2012_12_24_01_world_sai.sql
new file mode 100644
index 00000000000..d151ee4aa2c
--- /dev/null
+++ b/sql/updates/world/2012_12_24_01_world_sai.sql
@@ -0,0 +1,42 @@
+-- Fix quest: "Words of Power" - http://www.wowhead.com/item=35354
+-- Indexes
+SET @TALETKHA := 26073;
+SET @SCRIPT := @TALETKHA * 100;
+
+-- Fix the previous SAIs for High Priest Talet-Kha
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@TALETKHA,-85118,-85098,-85176,-85175) AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@SCRIPT AND `source_type`=9;
+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
+(@TALETKHA,0,0,1,1,0,100,1,0,0,0,0,70,0,0,0,0,0,0,10,85098,25422,0,0,0,0,0, 'High Priest Talet-Kha - On OOC (1 time per reset/respawn) - Respawn Mystical Webbing'),
+(@TALETKHA,0,1,2,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,10,85098,25422,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Set data 0 1 to Mystical Webbing'),
+(@TALETKHA,0,2,3,61,0,100,0,0,0,0,0,70,0,0,0,0,0,0,10,85118,25422,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Respawn Mystical Webbing'),
+(@TALETKHA,0,3,4,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,10,85118,25422,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Set data 0 1 to Mystical Webbing'),
+(@TALETKHA,0,4,5,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,10,85175,23033,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Set data 0 1 to Invisible Stalker'),
+(@TALETKHA,0,5,6,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,10,85176,23033,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Set data 0 1 to Invisible Stalker'),
+(@TALETKHA,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, 'High Priest Talet-Kha - Linked with previous event - Set phase 1'),
+(@TALETKHA,0,7,0,38,0,100,0,0,1,0,0,23,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - On data set 0 1 - Increment phase by 1'),
+(@TALETKHA,0,8,0,23,4,100,1,45497,0,0,0,80,@SCRIPT,2,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - On Aura missing - Run Script'),
+(@TALETKHA,0,9,0,2,8,100,0,1,45,0,0,11,11640,1,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - Health 45% - Cast Renew on self'),
+(@TALETKHA,0,10,0,0,8,100,0,4000,6000,5000,8000,11,15587,0,0,0,0,0,2,0,0,0,0,0,0,0, 'High Priest Talet-Kha - IC - Cast Mind Blast on victim'),
+(@TALETKHA,0,11,12,25,8,100,0,0,0,0,0,18,33555200,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - On reset - Restore unit flags'),
+(@TALETKHA,0,12,0,61,8,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - Linked with previous event - Set phase back to 0'),
+(@SCRIPT,9,0,0,0,0,100,0,3000,3000,0,0,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Text 0'),
+(@SCRIPT,9,1,0,0,0,100,0,500,500,0,0,69,0,0,0,0,0,0,8,0,0,0,3788.44,3418.25,85.0562,0, 'High Priest Talet-Kha - script - Move to point'),
+(@SCRIPT,9,2,0,0,0,100,0,500,500,0,0,66,0,0,0,0,0,0,8,0,0,0,0,0,0,1.1672, 'High Priest Talet-Kha - script - Set Orientation'),
+(@SCRIPT,9,3,0,0,0,100,0,1500,1500,0,0,91,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Bytes1 set to 0'),
+(@SCRIPT,9,4,0,0,0,100,0,100,100,0,0,19,33555200,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Remove unitflags'),
+(@SCRIPT,9,5,0,0,0,100,0,100,100,0,0,11,45492,1,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Aura self'),
+(@SCRIPT,9,6,0,0,0,100,0,0,0,0,0,22,4,0,0,0,0,0,1,0,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Set phase 4'),
+(@SCRIPT,9,7,0,0,0,100,0,0,0,0,0,49,0,0,0,0,0,0,21,40,0,0,0,0,0,0, 'High Priest Talet-Kha - script - Start attack on closest player in 40 yards'),
+(-85118,0,0,1,38,0,100,0,0,1,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Mystical Webbing - On data set 0 1 - Set React State passive'),
+(-85118,0,1,0,61,0,100,0,0,0,0,0,11,45497,2,0,0,0,0,11,26073,40,0,0,0,0,0,'Mystical Webbing - Linked with previous event - Web Beam'),
+(-85118,0,2,3,6,0,100,0,0,0,0,0,45,0,2,0,0,0,0,10,85175,23033,0,0,0,0,0,'Mystical Webbing - On death - set data 0 2 Invisible Stalker'),
+(-85118,0,3,0,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,11,26073,40,0,0,0,0,0,'Mystical Webbing - Linked with previous event - Set data 0 1 on Talet-Kha'),
+(-85098,0,0,1,38,0,100,0,0,1,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,'Mystical Webbing - On data set 0 1 - Set React State passive'),
+(-85098,0,1,0,61,0,100,0,0,0,0,0,11,45497,2,0,0,0,0,11,26073,40,0,0,0,0,0,'Mystical Webbing - Linked with previous event - Web Beam'),
+(-85098,0,2,3,6,0,100,0,0,0,0,0,45,0,2,0,0,0,0,10,85176,23033,0,0,0,0,0,'Mystical Webbing - On death - set data 0 2 Invisible Stalker'),
+(-85098,0,3,0,61,0,100,0,0,0,0,0,45,0,1,0,0,0,0,11,26073,40,0,0,0,0,0,'Mystical Webbing - Linked with previous event - Set data 0 1 on Talet-Kha'),
+(-85175,0,0,0,38,0,100,0,0,1,0,0,11,45497,2,0,0,0,0,11,26073,40,0,0,0,0,0, 'Invisible Stalker (Floating) - On data set 0 1 - Cast Web Beam on target'),
+(-85175,0,1,0,38,0,100,0,0,2,0,0,92,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Invisible Stalker (Floating) - On data set 0 2 - Stop casting'),
+(-85176,0,0,0,38,0,100,0,0,1,0,0,11,45497,2,0,0,0,0,11,26073,40,0,0,0,0,0, 'Invisible Stalker (Floating) - On data set 0 1 - Cast Web Beam on target'),
+(-85176,0,1,0,38,0,100,0,0,2,0,0,92,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Invisible Stalker (Floating) - On data set 0 2 - Stop casting');
diff --git a/sql/updates/world/2012_12_24_02_world_sai.sql b/sql/updates/world/2012_12_24_02_world_sai.sql
new file mode 100644
index 00000000000..03d0a9ef5c6
--- /dev/null
+++ b/sql/updates/world/2012_12_24_02_world_sai.sql
@@ -0,0 +1,64 @@
+-- [Q] Gambling Debt - http://www.wowhead.com/quest=11464
+-- Discover's work, thanks to Vincent-Michael for helping with gossips and Pitcrawler for advices
+-- Indexes
+SET @ENTRY := 24539;
+SET @SCRIPT := @ENTRY * 100;
+SET @SCRIPT1 := (@ENTRY * 100) + 1;
+SET @GOSSIP_1 := 9010;
+SET @GOSSIP_2 := 9011;
+SET @QUEST := 11464;
+SET @SPELL_SCORCH := 50183;
+SET @SPELL_BLAST_WAVE := 15091;
+
+-- SAI support - "Silvermoon" Harry
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=@ENTRY AND `source_type`=0;
+DELETE FROM `smart_scripts` WHERE `entryorguid` IN (@SCRIPT,@SCRIPT1) AND `source_type`=9;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,1,62,0,100,0,@GOSSIP_1,0,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary - On Gossip Select option 2 - Set Faction Aggressive'),
+(@ENTRY,0,1,2,61,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Silvermoon Hary - On Gossip Select - Close Gossip'),
+(@ENTRY,0,2,3,61,0,100,0,0,0,0,0,1,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Silvermoon Hary - Linked with previous event - Say Line 0'),
+(@ENTRY,0,3,0,61,0,100,0,0,0,0,0,2,14,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary - Linked with previous event - Set faction aggressive'),
+(@ENTRY,0,4,0,2,0,100,1,1,50,60000,60000,80,@SCRIPT,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary - On hp % between 1/50 - Start acitonlist'),
+(@ENTRY,0,5,0,64,1,100,0,0,0,0,0,98,@GOSSIP_2,12175,0,0,0,0,7,0,0,0,0,0,0,0, 'Silvermoon Hary - On gossip hello in phase 1 - Send gossip menu 2'),
+(@ENTRY,0,6,0,62,1,100,0,@GOSSIP_2,0,0,0,80,@SCRIPT1,2,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary - On gossip select - Start actionlist 1'),
+(@ENTRY,0,7,0,0,0,100,0,3000,6000,15000,22000,11,@SPELL_BLAST_WAVE,1,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary - IC - Cast Blast Wave'),
+(@ENTRY,0,8,0,0,0,100,0,2500,4000,4000,5000,11,@SPELL_SCORCH,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Silvermoon Hary - IC - Cast Scorch'),
+(@SCRIPT,9,0,0,0,0,100,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 0 - Say line 1'),
+(@SCRIPT,9,1,0,0,0,100,0,0,0,0,0,102,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 1 - Set hp reg disabled'),
+(@SCRIPT,9,2,0,0,0,100,0,0,0,0,0,101,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 2 - Set home position'),
+(@SCRIPT,9,3,0,0,0,100,0,0,0,0,0,2,1080,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 3 - Change faction to friendly'),
+(@SCRIPT,9,4,0,0,0,100,0,0,0,0,0,24,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 4 - Evade (to stop attack)'),
+(@SCRIPT,9,5,0,0,0,100,0,0,0,0,0,22,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 0) - Action 6 - Set event phase 1'),
+(@SCRIPT1,9,0,0,0,0,100,0,0,0,0,0,72,0,0,0,0,0,0,7,0,0,0,0,0,0,0, 'Silvermoon Hary (script 1) - Action 0 - Close gossip window'),
+(@SCRIPT1,9,1,0,0,0,100,0,0,0,0,0,56,34115,1,0,0,0,0,7,0,0,0,0,0,0,0, 'Silvermoon Hary (script 1) - Action 1 - Give item to invoker'),
+(@SCRIPT1,9,2,0,0,0,100,0,0,0,0,0,102,1,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 1) - Action 2 - Set hp reg enabled'),
+(@SCRIPT1,9,3,0,0,0,100,0,0,0,0,0,41,10000,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 1) - Action 3 - Despawn in 10 sec'),
+(@SCRIPT1,9,4,0,0,0,100,0,0,0,0,0,22,0,0,0,0,0,0,1,0,0,0,0,0,0,0, 'Silvermoon Hary (script 1) - Action 4 - Set event phase 0');
+
+-- Texts
+DELETE FROM `creature_text` WHERE `entry`=@ENTRY;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`emote`,`duration`,`sound`,`comment`) VALUES
+(@ENTRY,0,0,'Do not test me, scurvy dog! I''m trained in the way of Blood Knights!',12,0,100,0,0,0, 'Silvermoon Hary - start to fight'),
+(@ENTRY,1,0,"I'll pay! I'll pay! Eeeek! Please don't hurt me!",12,0,100,0,0,0, 'Silvermoon Hary - second gossip');
+
+-- Gossip menu
+DELETE FROM `gossip_menu` WHERE `entry` IN (@GOSSIP_1,@GOSSIP_2);
+INSERT INTO `gossip_menu` (`entry`,`text_id`) VALUES
+(@GOSSIP_1,12174),
+(@GOSSIP_2,12175);
+
+-- Gossip option menu
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP_1;
+DELETE FROM `gossip_menu_option` WHERE `menu_id`=@GOSSIP_2;
+INSERT INTO `gossip_menu_option` (`menu_id`,`id`,`option_id`,`npc_option_npcflag`,`option_icon`,`option_text`,`box_coded`,`box_money`,`box_text`) VALUES
+(@GOSSIP_1,0,1,1,0, 'Taruk sent me to collect what you owe.',0,0, ''),
+(@GOSSIP_1,1,3,128,1, 'Do you sell any of this stuff?',0,0, ''),
+(@GOSSIP_2,0,1,1,0, 'Pay up, Harry!',0,0, ''),
+(@GOSSIP_2,1,3,128,1, 'Do you sell any of this stuff?',0,0, '');
+
+-- Condition
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup` IN (@GOSSIP_1,@GOSSIP_2);
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
+(15,@GOSSIP_1,0,0,9,0,@QUEST,0,0,0,'','Only show first gossip (option 0) if player is on quest Gambling Debt'),
+(15,@GOSSIP_2,0,0,9,0,@QUEST,0,0,0,'','Only show second gossip (option 0) if player is on quest Gambling Debt');
diff --git a/sql/updates/world/2012_12_24_03_world_sai.sql b/sql/updates/world/2012_12_24_03_world_sai.sql
new file mode 100644
index 00000000000..f89f3c968aa
--- /dev/null
+++ b/sql/updates/world/2012_12_24_03_world_sai.sql
@@ -0,0 +1,6 @@
+-- SAI for Val'kyr Taskmistress
+SET @ENTRY := 31396;
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=@ENTRY;
+DELETE FROM `smart_scripts` WHERE `source_type`=0 AND `entryorguid`=@ENTRY;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`id`,`link`,`event_type`,`event_phase_mask`,`event_chance`,`event_flags`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
+(@ENTRY,0,0,0,0,0,100,0,0,0,5000,10000,11,57547,0,0,0,0,0,2,0,0,0,0,0,0,0, 'Val''kyr Taskmistress - Combat - Cast Touch of the Val''kyr');
diff --git a/sql/updates/world/2012_12_24_04_world_creature.sql b/sql/updates/world/2012_12_24_04_world_creature.sql
new file mode 100644
index 00000000000..42f69d97a9e
--- /dev/null
+++ b/sql/updates/world/2012_12_24_04_world_creature.sql
@@ -0,0 +1,3 @@
+-- Malygos 25 mode
+UPDATE `creature_template` SET `difficulty_entry_1`=31734 WHERE `entry`=28859;
+UPDATE `creature_template` SET `speed_walk`=4, `speed_run`=2.85714, `unit_class`=2, `InhabitType`=5, `flags_extra`=`flags_extra`|1 WHERE `entry`=31734;
diff --git a/sql/updates/world/2012_12_24_05_world_object.sql b/sql/updates/world/2012_12_24_05_world_object.sql
new file mode 100644
index 00000000000..2b9947a6bd5
--- /dev/null
+++ b/sql/updates/world/2012_12_24_05_world_object.sql
@@ -0,0 +1,61 @@
+-- Add Warpwood Pod Spawns to Dire Maul
+SET @OGUID := 73440;
+DELETE FROM `gameobject` WHERE `id` IN (179526,179528,179532,179533);
+INSERT INTO `gameobject` (`guid`,`id`,`map`,`spawnMask`,`phaseMask`,`position_x`,`position_y`,`position_z`,`orientation`,`rotation0`,`rotation1`,`rotation2`,`rotation3`,`spawntimesecs`,`animprogress`,`state`) VALUES
+(@OGUID+0,179526,429,1,1,-7.834836,-199.9826,-4.128791,-0.453785,0,0,0,1,7200,255,1),
+(@OGUID+1,179526,429,1,1,102.549,-246.0106,-56.36471,0.7853968,0,0,0,1,7200,255,1),
+(@OGUID+2,179526,429,1,1,134.7673,-262.4596,-4.146387,-0.4886912,0,0,0,1,7200,255,1),
+(@OGUID+3,179526,429,1,1,-114.7361,-199.6528,-4.124403,0,0,0,0,1,7200,255,1),
+(@OGUID+4,179526,429,1,1,-112.0205,-258.8872,-56.25008,0,0,0,0,1,7200,255,1),
+(@OGUID+5,179526,429,1,1,-61.58608,-306.3115,-55.70668,2.33874,0,0,0,1,7200,255,1),
+(@OGUID+6,179526,429,1,1,-5.549646,-393.1982,-58.6137,-0.2094394,0,0,0,1,7200,255,1),
+(@OGUID+7,179526,429,1,1,21.93265,-409.7953,-58.61424,0,0,0,0,1,7200,255,1),
+(@OGUID+8,179526,429,1,1,117.1476,-408.4612,-3.273566,2.321287,0,0,0,1,7200,255,1),
+(@OGUID+9,179526,429,1,1,36.71517,-467.0078,-4.248763,1.588249,0,0,0,1,7200,255,1),
+(@OGUID+10,179526,429,1,1,353.1051,-447.0046,-90.05774,0,0,0,0,1,7200,255,1),
+(@OGUID+11,179526,429,1,1,66.23579,-633.7577,-25.16297,3.054327,0,0,0,1,7200,255,1),
+(@OGUID+12,179528,429,1,1,-22.3061047,-349.882477,-4.07224,-2.02457881,0,0,0,0,120,0,1),
+(@OGUID+13,179528,429,1,1,423.64917,-94.0369,-3.88739,-0.453785032,0,0,0,0,120,0,1),
+(@OGUID+14,179528,429,1,1,509.7253,523.926636,-25.4027348,-2.80997539,0,0,0,0,120,0,1),
+(@OGUID+15,179528,429,1,1,101.961,-247.7268,-4.019775,2.844883,0,0,0,1,7200,255,1),
+(@OGUID+16,179528,429,1,1,127.1986,-272.8009,-4.146389,-1.937316,0,0,0,1,7200,255,1),
+(@OGUID+17,179528,429,1,1,-168.6555,-271.9116,-4.120819,-0.7504908,0,0,0,1,7200,255,1),
+(@OGUID+18,179528,429,1,1,-156.2992,-321.1005,-4.147167,1.256636,0,0,0,1,7200,255,1),
+(@OGUID+19,179528,429,1,1,-99.59648,-395.8656,-4.220698,-2.862335,0,0,0,1,7200,255,1),
+(@OGUID+20,179528,429,1,1,-109.8883,-404.5494,-4.217863,-2.076939,0,0,0,1,7200,255,1),
+(@OGUID+21,179528,429,1,1,-42.64843,-341.5002,-52.65472,0.2443456,0,0,0,1,7200,255,1),
+(@OGUID+22,179528,429,1,1,-27.00356,-404.2832,-58.61398,0.2268925,0,0,0,1,7200,255,1),
+(@OGUID+23,179528,429,1,1,-10.21506,-349.2668,-53.86317,2.059488,0,0,0,1,7200,255,1),
+(@OGUID+24,179528,429,1,1,34.9096,-365.0786,-4.14052,0.3141584,0,0,0,1,7200,255,1),
+(@OGUID+25,179528,429,1,1,34.50692,-391.2106,-58.61125,-2.164206,0,0,0,1,7200,255,1),
+(@OGUID+26,179528,429,1,1,47.81252,-334.275,-52.05532,-0.5061446,0,0,0,1,7200,255,1),
+(@OGUID+27,179528,429,1,1,71.72086,-409.7454,-4.216564,3.124123,0,0,0,1,7200,255,1),
+(@OGUID+28,179528,429,1,1,64.80739,-400.4481,-58.60443,-0.6283169,0,0,0,1,7200,255,1),
+(@OGUID+29,179528,429,1,1,71.7946,-437.2612,-58.59562,0.8726639,0,0,0,1,7200,255,1),
+(@OGUID+30,179528,429,1,1,263.3927,-568.4359,-111.9757,-2.670348,0,0,0,1,7200,255,1),
+(@OGUID+31,179528,429,1,1,59.03925,-760.0275,-25.0955,-1.239183,0,0,0,1,7200,255,1),
+(@OGUID+32,179528,429,1,1,32.75761,-775.2361,-25.14155,-1.308995,0,0,0,1,7200,255,1),
+(@OGUID+33,179532,429,1,1,2.649451,-210.379,-52.38449,-0.95993,0,0,0,1,7200,255,1),
+(@OGUID+34,179532,429,1,1,50.44844,-241.8849,-53.2931,1.867502,0,0,0,1,7200,255,1),
+(@OGUID+35,179532,429,1,1,-148.6606,-210.0094,-4.151401,0.4188786,0,0,0,1,7200,255,1),
+(@OGUID+36,179532,429,1,1,-131.8512,-319.4141,-56.79062,0.2443456,0,0,0,1,7200,255,1),
+(@OGUID+37,179532,429,1,1,-22.3061,-349.8825,-4.07224,-2.024579,0,0,0,1,7200,255,1),
+(@OGUID+38,179532,429,1,1,-6.160945,-433.4026,-4.222117,0,0,0,0,1,7200,255,1),
+(@OGUID+39,179532,429,1,1,55.87771,-438.4343,-58.5981,-0.8552105,0,0,0,1,7200,255,1),
+(@OGUID+40,179532,429,1,1,126.7584,-296.2785,-4.146393,-1.954766,0,0,0,1,7200,255,1),
+(@OGUID+41,179532,429,1,1,4.900836,-450.306,-58.62945,0,0,0,0,1,7200,255,1),
+(@OGUID+42,179532,429,1,1,189.4837,-482.115,-100.6014,1.937312,0,0,0,1,7200,255,1),
+(@OGUID+43,179532,429,1,1,44.91409,-626.4767,-25.10615,-2.478367,0,0,0,1,7200,255,1),
+(@OGUID+44,179532,429,1,1,31.07356,-681.5841,-25.1616,0,0,0,0,1,7200,255,1),
+(@OGUID+45,179533,429,1,1,-124.6218,-234.0719,-55.11328,-0.3141584,0,0,0,1,7200,255,1),
+(@OGUID+46,179533,429,1,1,-75.92295,-358.8933,-4.144806,2.879789,0,0,0,1,7200,255,1),
+(@OGUID+47,179533,429,1,1,-51.46621,-358.168,-4.138225,1.815142,0,0,0,1,7200,255,1),
+(@OGUID+48,179533,429,1,1,-94.23655,-406.7082,-58.60732,0,0,0,0,1,7200,255,1),
+(@OGUID+49,179533,429,1,1,-14.43997,-309.9112,-52.14577,0,0,0,0,1,7200,255,1),
+(@OGUID+50,179533,429,1,1,36.78513,-402.629,-4.218495,-2.495818,0,0,0,1,7200,255,1),
+(@OGUID+51,179533,429,1,1,119.3601,-336.64,-4.149863,-1.448622,0,0,0,1,7200,255,1),
+(@OGUID+52,179533,429,1,1,66.18261,-315.4163,-54.25176,0,0,0,0,1,7200,255,1),
+(@OGUID+53,179533,429,1,1,-32.82641,-463.1706,-58.61764,0.4886912,0,0,0,1,7200,255,1),
+(@OGUID+54,179533,429,1,1,242.1778,-420.7876,-119.9618,-0.06981169,0,0,0,1,7200,255,1),
+(@OGUID+55,179533,429,1,1,17.33344,-704.1918,-12.64264,-2.199115,0,0,0,1,7200,255,1),
+(@OGUID+56,179533,429,1,1,41.87117,-744.9308,-25.13386,0.1047193,0,0,0,1,7200,255,1);
diff --git a/sql/updates/world/2012_12_24_06_world_reputation.sql b/sql/updates/world/2012_12_24_06_world_reputation.sql
new file mode 100644
index 00000000000..9320d76365d
--- /dev/null
+++ b/sql/updates/world/2012_12_24_06_world_reputation.sql
@@ -0,0 +1,2 @@
+-- Set correct daily quest reputation gain for faction: The Kalu'ak
+UPDATE `reputation_reward_rate` SET `quest_daily_rate`=2 WHERE `faction`=1073;
diff --git a/sql/updates/world/2012_12_24_07_world_sai.sql b/sql/updates/world/2012_12_24_07_world_sai.sql
new file mode 100644
index 00000000000..3cce37295fd
--- /dev/null
+++ b/sql/updates/world/2012_12_24_07_world_sai.sql
@@ -0,0 +1,31 @@
+-- SmartGameobjectAI to spawn Eliza
+DELETE FROM `smart_scripts` WHERE `entryorguid`=51708 AND `source_type`=1;
+INSERT INTO `smart_scripts` (`entryorguid`,`source_type`,`event_type`,`event_param1`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`target_type`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUE
+(51708,1,20,254,12,314,1,300000,0,1,8,-10267,52.52,42.54,2.5,'Eliza Grave Dirt - On Quest Complete - Spawn Eliza');
+-- SmartAI for Eliza
+UPDATE `creature_template` SET `AIName`='SmartAI' WHERE `entry`=314;
+DELETE FROM `creature_ai_scripts` WHERE `creature_id`=314;
+DELETE FROM `smart_scripts` WHERE `entryorguid`=314 AND `source_type`=0;
+INSERT INTO `smart_scripts`(`entryorguid`,`id`,`link`,`event_type`,`event_phase_mask`,`event_param1`,`event_param2`,`event_param3`,`event_param4`,`action_type`,`action_param1`,`target_type`,`comment`) VALUES
+(314,1,0,11,0,0,0,0,0,21,0,1,'Eliza - Phase 0 - On spawn - Prevent combat movement'),
+(314,2,3,4,0,0,0,0,0,1,0,1,'Eliza - Phase 0 - On aggro - Say'),
+(314,4,0,61,0,0,0,0,0,22,1,1,'Eliza - Phase 0 - On aggro - Set phase 1'),
+(314,5,0,9,1,0,40,0,0,11,20819,5,'Eliza - Phase 1 - In combat - Cast Frostbolt'),
+(314,6,0,9,1,0,5,0,0,21,1,1,'Eliza - Phase 1 - 0 to 5 yards - Activate combat movement'),
+(314,7,0,9,1,5,35,0,0,21,0,1,'Eliza - Phase 1 - 5 to 35 yards - Deactivate combat movement'),
+(314,8,0,9,1,35,80,0,0,21,1,1,'Eliza - Phase 1 - 35 to 80 yards - Activate combat movement'),
+(314,9,0,0,1,4100,6400,72300,72300,11, 3107,1,'Eliza - Phase 1 - In combat - Summon Elizas Guard'),
+(314,10,0,0,1,2100,2900,12500,36300,11,11831,5,'Eliza - Phase 1 - In combat - Cast Frost Nova'),
+(314,11,12,3,1,0,7,0,0,21,1,1,'Eliza - Phase 1 - At 7% mana - Start combat movement'),
+(314,12,0,61,1,0,0,0,0,22,2,1,'Eliza - Phase 1 - At 7% mana - Set phase 2'),
+(314,13,0,3,2,100,15,100,100,22,1,1,'Eliza - Phase 2 - At 15% mana - Set phase 1');
+-- Birth aura
+DELETE FROM `creature_template_addon` WHERE `entry`=314;
+INSERT INTO `creature_template_addon`(`entry`,`auras`) VALUE
+(314,'26047');
+-- Texts used in the SmartAI
+DELETE FROM `creature_ai_texts` WHERE `entry`IN (-460,-461);
+DELETE FROM `creature_text` WHERE `entry`=314;
+INSERT INTO `creature_text` (`entry`,`groupid`,`id`,`text`,`type`,`language`,`probability`,`comment`) VALUES
+(314,0,0,'Wait...you are not my husband. But he must have sent you. And you... look... delicious!',12,0,100,'Eliza'),
+(314,0,1,'Aber? Is that you...? Oh...I''m so hungry, Aber! SO HUNGRY!!',12,0,100,'Eliza');
diff --git a/sql/updates/world/2012_12_24_08_world_conditions.sql b/sql/updates/world/2012_12_24_08_world_conditions.sql
new file mode 100644
index 00000000000..ad641203453
--- /dev/null
+++ b/sql/updates/world/2012_12_24_08_world_conditions.sql
@@ -0,0 +1,4 @@
+-- Add missing condition for Attunement to the core for horde
+DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=15 AND `SourceGroup`=5750 AND `ConditionValue1`=7487;
+INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionValue1`,`Comment`) VALUES
+(15,5750,1,8,7487, 'Show gossip option if player has quest 7487 completed');
diff --git a/src/server/collision/PrecompiledHeaders/collisionPCH.h b/src/server/collision/PrecompiledHeaders/collisionPCH.h
index 636eaa1bef8..ece2ef1b8ef 100644
--- a/src/server/collision/PrecompiledHeaders/collisionPCH.h
+++ b/src/server/collision/PrecompiledHeaders/collisionPCH.h
@@ -4,3 +4,6 @@
#include "WorldModel.h"
#include "ModelInstance.h"
#include "BoundingIntervalHierarchy.h"
+#include "RegularGrid.h"
+#include "BoundingIntervalHierarchyWrapper.h"
+#include "GameObjectModel.h"
diff --git a/src/server/scripts/Northrend/dragonblight.cpp b/src/server/scripts/Northrend/dragonblight.cpp
index 13a8370690e..698daba99e3 100644
--- a/src/server/scripts/Northrend/dragonblight.cpp
+++ b/src/server/scripts/Northrend/dragonblight.cpp
@@ -33,6 +33,8 @@ EndContentData */
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "ScriptedEscortAI.h"
+#include "Vehicle.h"
+#include "CombatAI.h"
#include "Player.h"
enum eEnums
@@ -172,15 +174,27 @@ public:
};
/*######
-## wyrmrest_defender
+## Quest: Defending Wyrmrest Temple ID: 12372
######*/
enum WyrmDefenderEnum
{
- QUEST_DEFENDING_WYRMREST_TEMPLE = 12372,
- GOSSIP_TEXTID_DEF1 = 12899,
- GOSSIP_TEXTID_DEF2 = 12900,
- SPELL_CHARACTER_SCRIPT = 49213
+ // Quest data
+ QUEST_DEFENDING_WYRMREST_TEMPLE = 12372,
+ GOSSIP_TEXTID_DEF1 = 12899,
+
+ // Gossip data
+ GOSSIP_TEXTID_DEF2 = 12900,
+
+ // Spells data
+ SPELL_CHARACTER_SCRIPT = 49213,
+ SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE = 52421, // ID - 52421 Wyrmrest Defender: On Low Health Boss Emote to Controller - Random /self/
+ SPELL_RENEW = 49263, // casted to heal drakes
+ SPELL_WYRMREST_DEFENDER_MOUNT = 49256,
+
+ // Texts data
+ WHISPER_MOUNTED = 0,
+ BOSS_EMOTE_ON_LOW_HEALTH = 2
};
#define GOSSIP_ITEM_1 "We need to get into the fight. Are you ready?"
@@ -211,10 +225,79 @@ class npc_wyrmrest_defender : public CreatureScript
player->SEND_GOSSIP_MENU(GOSSIP_TEXTID_DEF2, creature->GetGUID());
// Makes player cast trigger spell for 49207 on self
player->CastSpell(player, SPELL_CHARACTER_SCRIPT, true);
+ // The gossip should not auto close
}
return true;
}
+
+ struct npc_wyrmrest_defenderAI : public VehicleAI
+ {
+ npc_wyrmrest_defenderAI(Creature* creature) : VehicleAI(creature) { }
+
+ bool hpWarningReady;
+ bool renewRecoveryCanCheck;
+
+ uint32 RenewRecoveryChecker;
+
+ void Reset()
+ {
+ hpWarningReady = true;
+ renewRecoveryCanCheck = false;
+
+ RenewRecoveryChecker = 0;
+ }
+
+ void UpdateAI(uint32 const diff)
+ {
+ // Check system for Health Warning should happen first time whenever get under 30%,
+ // after it should be able to happen only after recovery of last renew is fully done (20 sec),
+ // next one used won't interfere
+ if (hpWarningReady && me->GetHealthPct() <= 30.0f)
+ {
+ me->CastSpell(me, SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE);
+ hpWarningReady = false;
+ }
+
+ if (renewRecoveryCanCheck)
+ {
+ if (RenewRecoveryChecker <= diff)
+ {
+ renewRecoveryCanCheck = false;
+ hpWarningReady = true;
+ }
+ else RenewRecoveryChecker -= diff;
+ }
+ }
+
+ void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
+ {
+ switch (spell->Id)
+ {
+ case SPELL_WYRMREST_DEFENDER_MOUNT:
+ Talk(WHISPER_MOUNTED, me->GetCharmerOrOwnerGUID());
+ me->RemoveFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_IMMUNE_TO_PC | UNIT_FLAG_IMMUNE_TO_NPC);
+ me->SetFlag(UNIT_FIELD_FLAGS, UNIT_FLAG_PVP_ATTACKABLE);
+ break;
+ // Both below are for checking low hp warning
+ case SPELL_DEFENDER_ON_LOW_HEALTH_EMOTE:
+ Talk(BOSS_EMOTE_ON_LOW_HEALTH, me->GetCharmerOrOwnerGUID());
+ break;
+ case SPELL_RENEW:
+ if (!hpWarningReady && RenewRecoveryChecker <= 100)
+ {
+ RenewRecoveryChecker = 20000;
+ }
+ renewRecoveryCanCheck = true;
+ break;
+ }
+ }
+ };
+
+ CreatureAI* GetAI(Creature* creature) const
+ {
+ return new npc_wyrmrest_defenderAI(creature);
+ }
};
void AddSC_dragonblight()
diff --git a/src/server/scripts/Spells/spell_quest.cpp b/src/server/scripts/Spells/spell_quest.cpp
index 58b6fca8a81..b6497c048c8 100644
--- a/src/server/scripts/Spells/spell_quest.cpp
+++ b/src/server/scripts/Spells/spell_quest.cpp
@@ -1284,7 +1284,10 @@ class spell_q12372_cast_from_gossip_trigger : public SpellScriptLoader
// 49370 - Wyrmrest Defender: Destabilize Azure Dragonshrine Effect
enum Quest12372Data
{
+ // NPCs
NPC_WYRMREST_TEMPLE_CREDIT = 27698,
+ // Spells
+ WHISPER_ON_HIT_BY_FORCE_WHISPER = 1
};
class spell_q12372_destabilize_azure_dragonshrine_dummy : public SpellScriptLoader
@@ -1318,6 +1321,34 @@ class spell_q12372_destabilize_azure_dragonshrine_dummy : public SpellScriptLoad
}
};
+// ID - 50287 Azure Dragon: On Death Force Cast Wyrmrest Defender to Whisper to Controller - Random (casted from Azure Dragons and Azure Drakes on death)
+class spell_q12372_azure_on_death_force_whisper : public SpellScriptLoader
+{
+ public:
+ spell_q12372_azure_on_death_force_whisper() : SpellScriptLoader("spell_q12372_azure_on_death_force_whisper") { }
+
+ class spell_q12372_azure_on_death_force_whisper_SpellScript : public SpellScript
+ {
+ PrepareSpellScript(spell_q12372_azure_on_death_force_whisper_SpellScript);
+
+ void HandleScript(SpellEffIndex /*effIndex*/)
+ {
+ if (Creature* defender = GetHitCreature())
+ defender->AI()->Talk(WHISPER_ON_HIT_BY_FORCE_WHISPER, defender->GetCharmerOrOwnerGUID());
+ }
+
+ void Register()
+ {
+ OnEffectHitTarget += SpellEffectFn(spell_q12372_azure_on_death_force_whisper_SpellScript::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
+ }
+ };
+
+ SpellScript* GetSpellScript() const
+ {
+ return new spell_q12372_azure_on_death_force_whisper_SpellScript();
+ }
+};
+
// "Bombing Run" and "Bomb Them Again!"
enum Quest11010_11102_11023Data
{
@@ -1522,4 +1553,5 @@ void AddSC_quest_spell_scripts()
new spell_q11010_q11102_q11023_aggro_burst();
new spell_q11010_q11102_q11023_choose_loc();
new spell_q11010_q11102_q11023_q11008_check_fly_mount();
+ new spell_q12372_azure_on_death_force_whisper();
}