diff options
-rw-r--r-- | sql/updates/world/2012_12_24_00_world_defending_wyrmrest_temple.sql | 77 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_01_world_sai.sql | 42 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_02_world_sai.sql | 64 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_03_world_sai.sql | 6 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_04_world_creature.sql | 3 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_05_world_object.sql | 61 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_06_world_reputation.sql | 2 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_07_world_sai.sql | 31 | ||||
-rw-r--r-- | sql/updates/world/2012_12_24_08_world_conditions.sql | 4 | ||||
-rw-r--r-- | src/server/collision/PrecompiledHeaders/collisionPCH.h | 3 | ||||
-rw-r--r-- | src/server/scripts/Northrend/dragonblight.cpp | 93 | ||||
-rw-r--r-- | src/server/scripts/Spells/spell_quest.cpp | 32 |
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(); } |