Scripts/Quest: Rework Mystery of the Infinite & Mystery of the Infinite, Redux (#27677)

(cherry picked from commit f205e25b33)
This commit is contained in:
offl
2022-02-01 16:01:34 +02:00
committed by Shauren
parent c60c5455d2
commit a2236616cc
4 changed files with 333 additions and 37 deletions

View File

@@ -0,0 +1,233 @@
-- Generic
-- Spells with random texts
DELETE FROM `spell_script_names` WHERE `spell_id` = 50287 AND `ScriptName` = 'spell_q12372_azure_on_death_force_whisper';
DELETE FROM `spell_script_names` WHERE (
`spell_id` = 50037 AND `ScriptName` = 'spell_future_you_whisper_to_controller_random' OR
`spell_id` = 50287 AND `ScriptName` = 'spell_wyrmrest_defender_whisper_to_controller_random' OR
`spell_id` = 60709 AND `ScriptName` = 'spell_past_you_whisper_to_controller_random');
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(50037,'spell_future_you_whisper_to_controller_random'),
(50287,'spell_wyrmrest_defender_whisper_to_controller_random'),
(60709,'spell_past_you_whisper_to_controller_random');
-- Condition for Hourglass summon spell
-- "Places the Hourglass of Eternity on the ground at the Bronze Dragonshrine. Cannot be placed within 40 yards of another hourglass."
-- It casts Hourglass of Eternity Nearby which is SPELL_EFFECT_APPLY_AREA_AURA_FRIEND with radius 40 yards
-- So in condition we simply check if player has aura
DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId` = 17 AND `SourceEntry` IN (49890,60808);
INSERT INTO `conditions` (`SourceTypeOrReferenceId`,`SourceGroup`,`SourceEntry`,`SourceId`,`ElseGroup`,`ConditionTypeOrReference`,`ConditionTarget`,`ConditionValue1`,`ConditionValue2`,`ConditionValue3`,`NegativeCondition`,`ErrorType`,`ErrorTextId`,`ScriptName`,`Comment`) VALUES
(17,0,49890,0,0,1,0,50867,0,0,1,0,0,"","Group 0: Spell 'Hourglass of Eternity' can be used if caster does not have aura 'Hourglass of Eternity Nearby'"),
(17,0,60808,0,0,1,0,50867,0,0,1,0,0,"","Group 0: Spell 'Hourglass of Eternity' can be used if caster does not have aura 'Hourglass of Eternity Nearby'");
-- Other generic spells
DELETE FROM `spell_script_names` WHERE (
`spell_id` = 49686 AND `ScriptName` = 'spell_moti_mirror_image_script_effect' OR
`spell_id` = 50020 AND `ScriptName` = 'spell_moti_hourglass_cast_see_invis_on_master');
INSERT INTO `spell_script_names` (`spell_id`,`ScriptName`) VALUES
(49686,'spell_moti_mirror_image_script_effect'),
(50020,'spell_moti_hourglass_cast_see_invis_on_master');
-- Summoned creatures
UPDATE `creature_template` SET `AIName` = 'SmartAI' WHERE `entry` IN (27896,27897,27898,27900,32352);
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (27896,27897,27898,27900,32352) 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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(27896,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Assailant - On AI Initialize - Set Corpse Delay"),
(27896,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Infinite Assailant - On Spawn - Start Attack Summoner"),
(27896,0,2,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Assailant - On Evade - Despawn"),
(27897,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Destroyer - On AI Initialize - Set Corpse Delay"),
(27897,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Infinite Destroyer - On Spawn - Start Attack Summoner"),
(27897,0,2,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Destroyer - On Evade - Despawn"),
(27898,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Chrono-Magus - On AI Initialize - Set Corpse Delay"),
(27898,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Infinite Chrono-Magus - On Spawn - Start Attack Summoner"),
(27898,0,2,0,0,0,50,0,0,3000,10000,20000,0,11,38085,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Infinite Chrono-Magus - In Combat - Cast 'Shadow Blast'"),
(27898,0,3,0,0,0,50,0,0,3000,10000,20000,0,11,9613,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Infinite Chrono-Magus - In Combat - Cast 'Shadow Bolt'"),
(27898,0,4,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Chrono-Magus - On Evade - Despawn"),
(27900,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Timerender - On AI Initialize - Set Corpse Delay"),
(27900,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Infinite Timerender - On Spawn - Start Attack Summoner"),
(27900,0,2,0,0,0,100,0,5000,10000,10000,15000,0,11,51020,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Infinite Timerender - In Combat - Cast 'Time Lapse'"),
(27900,0,3,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Timerender - On Evade - Despawn"),
(32352,0,0,0,37,0,100,0,0,0,0,0,0,116,5,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Timerender - On AI Initialize - Set Corpse Delay"),
(32352,0,1,0,11,0,100,0,0,0,0,0,0,49,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Infinite Timerender - On Spawn - Start Attack Summoner"),
(32352,0,2,0,0,0,100,0,5000,10000,10000,15000,0,11,51020,0,0,0,0,0,2,0,0,0,0,0,0,0,0,"Infinite Timerender - In Combat - Cast 'Time Lapse'"),
(32352,0,3,0,7,0,100,0,0,0,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Infinite Timerender - On Evade - Despawn");
-- Mystery of the Infinite
-- Hourglass of Eternity
UPDATE `creature_template` SET `unit_flags2` = 0 WHERE `entry` = 27840;
DELETE FROM `smart_scripts` WHERE `entryorguid` = 27840 AND `source_type` = 0;
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (2784000,2784001) 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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(27840,0,0,0,37,0,100,0,0,0,0,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On AI Initialize - Set Reactstate Passive"),
(27840,0,1,0,11,0,100,0,0,0,0,0,0,80,2784000,2,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Spawn - Run Script"),
-- Probably handled by spells, not sure how. Maybe first spell is casted by Hourglass and spell script forces
-- Hourglass' owner to cast second spell on self (like in 50020 > 50012 or other spell scripts for similar quests),
-- then spell script of second spell fails quest and maybe does something else (... despawns Future / Past You?)
-- 4330 > 4293 (Hourglass of Eternity Dies > Hourglass of Eternity Dies - Quest Fails)
-- 60839 > 60840 (Hourglass of Eternity Dies > Hourglass of Eternity Dies - Quest Fails)
(27840,0,2,0,6,0,100,0,0,0,0,0,0,6,12470,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Death - Fail Quest 'Mystery of the Infinite'"),
(2784000,9,0,0,0,0,100,0,0,0,0,0,0,11,49942,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Mystery of the Infinite: Force Cast to Player of Summon Future You'"),
(2784000,9,1,0,0,0,100,0,0,0,0,0,0,11,50057,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Mystery of the Infinite: Hourglass of Eternity Visual/Sound Aura'"),
(2784000,9,2,0,0,0,100,0,0,0,0,0,0,11,50867,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Hourglass of Eternity Nearby'"),
(2784000,9,3,0,0,0,100,0,0,0,0,0,0,11,23235,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Battle Standard Spawn'"),
-- Those summon spells are randomized, haven't found any spell which does that, unfortunately
(2784000,9,4,0,0,0,100,0,10000,10000,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(2784000,9,5,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(2784000,9,6,0,0,0,100,0,30000,30000,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(2784000,9,7,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(2784000,9,8,0,0,0,100,0,30000,30000,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(2784000,9,9,0,0,0,100,0,0,0,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(2784000,9,10,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(2784000,9,11,0,0,0,100,0,30000,30000,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(2784000,9,12,0,0,0,100,0,0,0,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(2784000,9,13,0,0,0,100,0,0,0,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(2784000,9,14,0,0,0,100,0,40000,40000,0,0,0,11,49905,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Timerender'"),
-- Only in this version
(2784000,9,15,0,0,0,100,0,30000,30000,0,0,0,11,50020,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Mystery of the Infinite: Hourglass cast See Invis on Master'"),
(2784000,9,16,0,0,0,100,0,0,0,0,0,0,15,12470,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Quest Credit 'Mystery of the Infinite'"),
(2784000,9,17,0,0,0,100,0,10000,10000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Despawn");
-- Future You
DELETE FROM `creature_text` WHERE `CreatureID` = 27899;
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
(27899,0,0,"Hey there, $n, don't be alarmed. It's me... you... from the future. I'm here to help.",15,0,100,396,0,0,27239,0,"Future You"),
(27899,1,0,"Heads up... here they come. I'll help as much as I can. Let's just keep them off of the hourglass!",15,0,100,396,0,0,27251,0,"Future You"),
(27899,2,0,"I can't believe that I used to wear that.",15,0,100,0,0,0,27301,0,"Future You"),
(27899,2,1,"Look at you fight; no wonder I turned to drinking.",15,0,100,0,0,0,27304,0,"Future You"),
(27899,2,2,"What? Am I here alone. We both have a stake in this, you know!",15,0,100,0,0,0,27305,0,"Future You"),
(27899,2,3,"No matter what, you can't die, because that would mean that I would cease to exist, right? But, I was here before when I was you. I'm so confused!",15,0,100,0,0,0,27306,0,"Future You"),
(27899,2,4,"Wow, I'd forgotten how inexperienced I used to be.",15,0,100,0,0,0,27307,0,"Future You"),
(27899,2,5,"Sorry, but Chromie said that I couldn't reveal anything about your future to you. She said that if I did, I would cease to exist.",15,0,100,0,0,0,27311,0,"Future You"),
(27899,2,6,"Wish I could remember how many of the Infinite Dragonflight were going to try to stop you. This fight was so long ago.",15,0,100,0,0,0,27312,0,"Future You"),
(27899,2,7,"Listen. I'm not supposed to tell you this, but there's going to be this party that you're invited to. Whatever you do, DO NOT DRINK THE PUNCH!",15,0,100,0,0,0,27313,0,"Future You");
DELETE FROM `smart_scripts` WHERE `entryorguid` = 27899 AND `source_type` = 0;
DELETE FROM `smart_scripts` WHERE `entryorguid` = 2789900 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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(27899,0,0,0,11,0,100,0,0,0,0,0,0,80,2789900,2,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Spawn - Run Script"),
-- Stops casting that spell in outro event
-- Do not reset, always casted each 10 sec (AI works differently currently, cast may be delayed)
(27899,0,1,0,60,0,100,256,10000,10000,10000,10000,0,11,50037,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Update - Cast 'Mystery of the Infinite: Future You's Whisper to Controller - Random' (No Reset)"),
(2789900,9,0,0,0,0,100,0,0,0,0,0,0,11,49686,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Script Effect Player Cast Mirror Image'"),
(2789900,9,1,0,0,0,100,0,0,0,0,0,0,11,49925,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Future You's Mirror Class Aura'"),
-- I guess both 49951 and 60806 periodically triggers 49953. Probably 49951 and 60806 has different periodic time.
-- Something like in 36504 & 36505 or another similar spells
-- Any way currently summons for some reason usually engage with Past\Future You and not with Hourglass,
-- ignoring on-spawn attack action (but only if Past\Future You is alive), weird
(2789900,9,2,0,0,0,100,0,0,0,0,0,0,11,49951,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Future You's Periodic Threat'"),
(2789900,9,3,0,0,0,100,0,1000,1000,0,0,0,66,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Future You - On Script - Set Orientation Owner"),
(2789900,9,4,0,0,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Future You - On Script - Say Line 0"),
(2789900,9,5,0,0,0,100,0,6000,6000,0,0,0,66,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Future You - On Script - Set Orientation Owner"),
(2789900,9,6,0,0,0,100,0,0,0,0,0,0,1,1,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Future You - On Script - Say Line 1"),
-- This outro event is weird. Despawn Timer aura has exactly 15 sec duration but doesn't simply despawn creature but executes the second
-- part after aura fades. Maybe first part is handled in AI by OnAuraApplied and part after 15 sec in OnAuraRemoved which
-- were implemented in WotLK.
-- It looks wrong to force creature execute this script in Hourglass' script because this script actually is executed slighly before
-- Hourglass awards quest credit. Something makes Hourglass' timers grow a little after each summon, making both scripts asunchronous,
-- makes me believe they are just two completely separate scripts. Hourglass' timers looks correct and too good to break them, quite smooth
-- values a designer wants to add when creating a script. Past / Future You timers are completely different:
-- 01:50:58.538 (summon) > 01:53:48.532 (outro). We'll simply execute this part right here after 160 sec. It can be executed
-- in combat (verified)
(2789900,9,7,0,0,0,100,0,160000,160000,0,0,0,11,50014,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Future You's Whisper to Controller - Nozdormu'"),
(2789900,9,8,0,0,0,100,0,0,0,0,0,0,11,50022,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Future You's Despawn Timer'"),
(2789900,9,9,0,0,0,100,0,0,0,0,0,0,66,0,0,0,0,0,0,19,27925,0,0,0,0,0,0,0,"Future You - On Script - Set Orientation Closest Creature 'Nozdormu'"),
(2789900,9,10,0,0,0,100,0,0,0,0,0,0,5,25,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Play Emote 25"),
(2789900,9,11,0,0,0,100,0,15000,15000,0,0,0,11,50023,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Cast 'Mystery of the Infinite: Future You's Whisper to Controller - Farewell'"),
(2789900,9,12,0,0,0,100,0,2000,2000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Future You - On Script - Despawn");
-- Mystery of the Infinite, Redux
-- Hourglass of Eternity
UPDATE `creature_template` SET `unit_flags2` = 0 WHERE `entry` = 32327;
DELETE FROM `smart_scripts` WHERE `entryorguid` = 32327 AND `source_type` = 0;
DELETE FROM `smart_scripts` WHERE `entryorguid` IN (3232700,3232701) 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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(32327,0,0,0,37,0,100,0,0,0,0,0,0,8,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On AI Initialize - Set Reactstate Passive"),
(32327,0,1,0,11,0,100,0,0,0,0,0,0,80,3232700,2,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Spawn - Run Script"),
-- Probably handled by spells, not sure how. Maybe first spell is casted by Hourglass and spell script forces
-- Hourglass' owner to cast second spell on self (like in 50020 > 50012 or other spell scripts for similar quests),
-- then spell script of second spell fails quest and maybe does something else (... despawns Future / Past You?)
-- 4330 > 4293 (Hourglass of Eternity Dies > Hourglass of Eternity Dies - Quest Fails)
-- 60839 > 60840 (Hourglass of Eternity Dies > Hourglass of Eternity Dies - Quest Fails)
(32327,0,2,0,6,0,100,0,0,0,0,0,0,6,13343,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Death - Fail Quest 'Mystery of the Infinite, Redux'"),
(3232700,9,0,0,0,0,100,0,0,0,0,0,0,11,60790,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'MOTI, Redux: Force Cast to Player of Summon Past You'"),
(3232700,9,1,0,0,0,100,0,0,0,0,0,0,11,50057,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Mystery of the Infinite: Hourglass of Eternity Visual/Sound Aura'"),
(3232700,9,2,0,0,0,100,0,0,0,0,0,0,11,50867,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Hourglass of Eternity Nearby'"),
(3232700,9,3,0,0,0,100,0,0,0,0,0,0,11,23235,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Battle Standard Spawn'"),
-- Those summon spells are randomized, haven't found any spell which does that, unfortunately
(3232700,9,4,0,0,0,100,0,10000,10000,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(3232700,9,5,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(3232700,9,6,0,0,0,100,0,30000,30000,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(3232700,9,7,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(3232700,9,8,0,0,0,100,0,30000,30000,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(3232700,9,9,0,0,0,100,0,0,0,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(3232700,9,10,0,0,0,100,0,0,0,0,0,0,11,49901,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Destroyer'"),
(3232700,9,11,0,0,0,100,0,30000,30000,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(3232700,9,12,0,0,0,100,0,0,0,0,0,0,11,49902,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Chrono-Magus'"),
(3232700,9,13,0,0,0,100,0,0,0,0,0,0,11,49900,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Assailant'"),
(3232700,9,14,0,0,0,100,0,40000,40000,0,0,0,11,60887,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Cast 'Summon Infinite Timerender'"),
(3232700,9,15,0,0,0,100,0,30000,30000,0,0,0,15,13343,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Quest Credit 'Mystery of the Infinite, Redux'"),
(3232700,9,16,0,0,0,100,0,10000,10000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Hourglass of Eternity - On Script - Despawn");
-- Past You
DELETE FROM `creature_text` WHERE `CreatureID` = 32331;
INSERT INTO `creature_text` (`CreatureID`,`GroupID`,`ID`,`Text`,`Type`,`Language`,`Probability`,`Emote`,`Duration`,`Sound`,`BroadcastTextId`,`TextRange`,`comment`) VALUES
(32331,0,0,"Whoa! You're me, but from the future! Hey, my equipment got an upgrade. Cool!",15,0,100,25,0,0,32764,0,"Past You"),
(32331,1,0,"Here come the Infinites! I've got to keep the hourglass safe. Can you help?",15,0,100,6,0,0,32769,0,"Past You"),
(32331,2,0,"This equipment looks cool and all, but couldn't we have done a little better? Are you even raiding?",15,0,100,0,0,0,32770,0,"Past You"),
(32331,2,1,"So, how does it all turn out in Icecrown?",15,0,100,0,0,0,32771,0,"Past You"),
(32331,2,2,"Chromie said that if I don't do this just right, I might wink out of existence. If I go, then you go!",15,0,100,0,0,0,32772,0,"Past You"),
(32331,2,3,"Looks like I'm an underachiever.",15,0,100,0,0,0,32773,0,"Past You"),
(32331,2,4,"I think I'm going to turn to drinking after this.",15,0,100,0,0,0,32774,0,"Past You"),
(32331,2,5,"It might help if you could tell me how many of these guys we're going to fight. You can remember that, right, grandpa?",15,0,100,0,0,0,32775,0,"Past You"),
(32331,2,6,"I just want you to know that if we get through this alive, I'm making sure that we turn out better than you. No offense.",15,0,100,0,0,0,32776,0,"Past You"),
(32331,2,7,"Wait a minute! If you're here, then that means that in the not-so-distant future I'm going to be you helping me? Are we stuck in a time loop?!",15,0,100,0,0,0,32777,0,"Past You");
DELETE FROM `smart_scripts` WHERE `entryorguid` = 32331 AND `source_type` = 0;
DELETE FROM `smart_scripts` WHERE `entryorguid` = 3233100 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`,`event_param5`,`action_type`,`action_param1`,`action_param2`,`action_param3`,`action_param4`,`action_param5`,`action_param6`,`target_type`,`target_param1`,`target_param2`,`target_param3`,`target_param4`,`target_x`,`target_y`,`target_z`,`target_o`,`comment`) VALUES
(32331,0,0,0,11,0,100,0,0,0,0,0,0,80,3233100,2,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Spawn - Run Script"),
-- Stops casting that spell in outro event
-- Do not reset, always casted each 10 sec (AI works differently currently, cast may be delayed)
(32331,0,1,0,60,0,100,256,10000,10000,10000,10000,0,11,60709,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Update - Cast 'MOTI, Redux: Past You's Whisper to Controller - Random' (No Reset)"),
(3233100,9,0,0,0,0,100,0,0,0,0,0,0,11,49686,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'Mystery of the Infinite: Script Effect Player Cast Mirror Image'"),
(3233100,9,1,0,0,0,100,0,0,0,0,0,0,11,49925,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'Mystery of the Infinite: Future You's Mirror Class Aura'"),
-- I guess both 49951 and 60806 periodically triggers 49953. Probably 49951 and 60806 has different periodic time.
-- Something like in 36504 & 36505 or another similar spells
-- Any way currently summons for some reason usually engage with Past\Future You and not with Hourglass,
-- ignoring on-spawn attack action (but only if Past\Future You is alive), weird
(3233100,9,2,0,0,0,100,0,0,0,0,0,0,11,60806,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'MOTI, Redux: Past You's Periodic Threat'"),
(3233100,9,3,0,0,0,100,0,1000,1000,0,0,0,66,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Past You - On Script - Set Orientation Owner"),
(3233100,9,4,0,0,0,100,0,0,0,0,0,0,1,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Past You - On Script - Say Line 0"),
(3233100,9,5,0,0,0,100,0,6000,6000,0,0,0,66,0,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Past You - On Script - Set Orientation Owner"),
(3233100,9,6,0,0,0,100,0,0,0,0,0,0,1,1,0,0,0,0,0,23,0,0,0,0,0,0,0,0,"Past You - On Script - Say Line 1"),
-- This outro event is weird. Despawn Timer aura has exactly 15 sec duration but doesn't simply despawn creature but executes the second
-- part after aura fades. Maybe first part is handled in AI by OnAuraApplied and part after 15 sec in OnAuraRemoved which
-- were implemented in WotLK.
-- It looks wrong to force creature execute this script in Hourglass' script because this script actually is executed slighly before
-- Hourglass awards quest credit. Something makes Hourglass' timers grow a little after each summon, making both scripts asunchronous,
-- makes me believe they are just two completely separate scripts. Hourglass' timers looks correct and too good to break them, quite smooth
-- values a designer wants to add when creating a script. Past / Future You timers are completely different:
-- 01:50:58.538 (summon) > 01:53:48.532 (outro). We'll simply execute this part right here after 160 sec. It can be executed
-- in combat (verified)
(3233100,9,7,0,0,0,100,0,160000,160000,0,0,0,11,60807,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'MOTI, Redux: Past You's Whisper to Controller - Nozdormu'"),
(3233100,9,8,0,0,0,100,0,0,0,0,0,0,11,60812,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'MOTI, Redux: Past You's Despawn Timer'"),
(3233100,9,9,0,0,0,100,0,0,0,0,0,0,66,0,0,0,0,0,0,19,27925,0,0,0,0,0,0,0,"Past You - On Script - Set Orientation Closest Creature 'Nozdormu'"),
(3233100,9,10,0,0,0,100,0,0,0,0,0,0,5,25,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Play Emote 25"),
(3233100,9,11,0,0,0,100,0,15000,15000,0,0,0,11,60811,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Cast 'MOTI, Redux: Past You's Whisper to Controller - Farewell'"),
(3233100,9,12,0,0,0,100,0,2000,2000,0,0,0,41,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,"Past You - On Script - Despawn");

View File

@@ -15,16 +15,6 @@
* with this program. If not, see <http://www.gnu.org/licenses/>.
*/
/* ScriptData
SDName: Dragonblight
SD%Complete: 100
SDComment:
SDCategory: Dragonblight
EndScriptData */
/* ContentData
EndContentData */
#include "ScriptMgr.h"
#include "CombatAI.h"
#include "CreatureAIImpl.h"
@@ -36,6 +26,7 @@ EndContentData */
#include "ScriptedGossip.h"
#include "SpellInfo.h"
#include "SpellScript.h"
#include "TemporarySummon.h"
#include "Vehicle.h"
/*#####
@@ -732,6 +723,60 @@ class spell_warsong_battle_standard : public SpellScript
}
};
/*######
## Quest 12470 & 13343: Mystery of the Infinite & Mystery of the Infinite, Redux
######*/
enum MysteryOfTheInfinite
{
SPELL_MIRROR_IMAGE_AURA = 49889
};
// 49686 - Mystery of the Infinite: Script Effect Player Cast Mirror Image
class spell_moti_mirror_image_script_effect : public SpellScript
{
PrepareSpellScript(spell_moti_mirror_image_script_effect);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_MIRROR_IMAGE_AURA });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_MIRROR_IMAGE_AURA);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_moti_mirror_image_script_effect::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
// 50020 - Mystery of the Infinite: Hourglass cast See Invis on Master
class spell_moti_hourglass_cast_see_invis_on_master : public SpellScript
{
PrepareSpellScript(spell_moti_hourglass_cast_see_invis_on_master);
bool Validate(SpellInfo const* spellInfo) override
{
return ValidateSpellInfo({ uint32(spellInfo->GetEffect(EFFECT_0).CalcValue()) });
}
void HandleScript(SpellEffIndex /*effIndex*/)
{
if (Unit* caster = GetCaster())
if (TempSummon* casterSummon = caster->ToTempSummon())
if (Unit* summoner = casterSummon->GetSummonerUnit())
summoner->CastSpell(summoner, uint32(GetEffectValue()));
}
void Register() override
{
OnEffectHit += SpellEffectFn(spell_moti_hourglass_cast_see_invis_on_master::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
void AddSC_dragonblight()
{
new npc_commander_eligor_dawnbringer();
@@ -740,4 +785,6 @@ void AddSC_dragonblight()
new npc_wyrmrest_defender();
new npc_torturer_lecraft();
RegisterSpellScript(spell_warsong_battle_standard);
RegisterSpellScript(spell_moti_mirror_image_script_effect);
RegisterSpellScript(spell_moti_hourglass_cast_see_invis_on_master);
}

View File

@@ -3678,6 +3678,45 @@ class spell_gen_whisper_to_controller : public SpellScript
}
};
enum WhisperToControllerTexts
{
WHISPER_FUTURE_YOU = 2,
WHISPER_DEFENDER = 1,
WHISPER_PAST_YOU = 2
};
// BasePoints of spells is ID of npc_text used to group texts, it's not implemented so texts are grouped the old way
// 50037 - Mystery of the Infinite: Future You's Whisper to Controller - Random
// 50287 - Azure Dragon: On Death Force Cast Wyrmrest Defender to Whisper to Controller - Random
// 60709 - MOTI, Redux: Past You's Whisper to Controller - Random
class spell_gen_whisper_to_controller_random : public SpellScript
{
PrepareSpellScript(spell_gen_whisper_to_controller_random);
public:
spell_gen_whisper_to_controller_random(uint32 text) : SpellScript(), _text(text) { }
private:
void HandleScript(SpellEffIndex /*effIndex*/)
{
// Same for all spells
if (!roll_chance_i(20))
return;
if (Creature* target = GetHitCreature())
if (TempSummon* targetSummon = target->ToTempSummon())
if (Player* player = targetSummon->GetSummonerUnit()->ToPlayer())
targetSummon->AI()->Talk(_text, player);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_gen_whisper_to_controller_random::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
uint32 _text;
};
class spell_gen_eject_all_passengers : public SpellScript
{
PrepareSpellScript(spell_gen_eject_all_passengers);
@@ -4911,6 +4950,9 @@ void AddSC_generic_spell_scripts()
RegisterSpellScript(spell_gen_wg_water);
RegisterSpellScript(spell_gen_whisper_gulch_yogg_saron_whisper);
RegisterSpellScript(spell_gen_whisper_to_controller);
RegisterSpellScriptWithArgs(spell_gen_whisper_to_controller_random, "spell_future_you_whisper_to_controller_random", WHISPER_FUTURE_YOU);
RegisterSpellScriptWithArgs(spell_gen_whisper_to_controller_random, "spell_wyrmrest_defender_whisper_to_controller_random", WHISPER_DEFENDER);
RegisterSpellScriptWithArgs(spell_gen_whisper_to_controller_random, "spell_past_you_whisper_to_controller_random", WHISPER_PAST_YOU);
RegisterSpellScript(spell_gen_eject_all_passengers);
RegisterSpellScript(spell_gen_eject_passenger);
RegisterSpellScriptWithArgs(spell_gen_eject_passenger_with_seatId, "spell_gen_eject_passenger_1", 0);

View File

@@ -1071,9 +1071,7 @@ class spell_q12372_cast_from_gossip_trigger : public SpellScript
enum Quest12372Data
{
// NPCs
NPC_WYRMREST_TEMPLE_CREDIT = 27698,
// Spells
WHISPER_ON_HIT_BY_FORCE_WHISPER = 1
NPC_WYRMREST_TEMPLE_CREDIT = 27698
};
// 49370 - Wyrmrest Defender: Destabilize Azure Dragonshrine Effect
@@ -1097,29 +1095,6 @@ class spell_q12372_destabilize_azure_dragonshrine_dummy : public SpellScript
}
};
enum q12372Creatures
{
NPC_WYRMREST_DEFENDER = 27629
};
// 50287 - Azure Dragon: On Death Force Cast Wyrmrest Defender to Whisper to Controller - Random (cast from Azure Dragons and Azure Drakes on death)
class spell_q12372_azure_on_death_force_whisper : public SpellScript
{
PrepareSpellScript(spell_q12372_azure_on_death_force_whisper);
void HandleScript(SpellEffIndex /*effIndex*/)
{
Creature* defender = GetHitCreature();
if (defender && defender->GetEntry() == NPC_WYRMREST_DEFENDER)
defender->AI()->Talk(WHISPER_ON_HIT_BY_FORCE_WHISPER, defender->GetCharmerOrOwner());
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_q12372_azure_on_death_force_whisper::HandleScript, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
// "Bombing Run" and "Bomb Them Again!"
enum Quest11010_11102_11023Data
{
@@ -2493,7 +2468,6 @@ void AddSC_quest_spell_scripts()
RegisterSpellScript(spell_q11010_q11102_q11023_choose_loc);
RegisterSpellScript(spell_q11010_q11102_q11023_q11008_check_fly_mount);
RegisterSpellScript(spell_q11140salvage_wreckage);
RegisterSpellScript(spell_q12372_azure_on_death_force_whisper);
RegisterSpellScript(spell_q12527_zuldrak_rat);
RegisterSpellScript(spell_q12661_q12669_q12676_q12677_q12713_summon_stefan);
RegisterSpellScript(spell_q12730_quenching_mist);