diff options
11 files changed, 1815 insertions, 0 deletions
diff --git a/sql/updates/world/2014_09_21_04_world_misc.sql b/sql/updates/world/2014_09_21_04_world_misc.sql new file mode 100644 index 00000000000..800a4f4d9dc --- /dev/null +++ b/sql/updates/world/2014_09_21_04_world_misc.sql @@ -0,0 +1,216 @@ +-- Add script to Fire Cyclone +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_fire_cyclone' WHERE `entry`=40164; +-- Add script to Twilight Flame Caller +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_twilight_flame_caller' WHERE `entry`=39708; +-- Add script to Twilight Torturer +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_twilight_torturer' WHERE `entry`=39978; +-- Add script to Twilight Sadist +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_twilight_sadist' WHERE `entry`=39980; +-- Add script to Mad Prisoner +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_mad_prisoner' WHERE `entry`=39985; +-- Add script to Crazed Mage +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_crazed_mage' WHERE `entry`=39982; +-- Add script to Raz The Crazed +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_raz_the_crazed' WHERE `entry`=39670; +-- Add script to Rom'ogg Bonecrusher +UPDATE `creature_template` SET `AIName`='',`ScriptName`='boss_romogg_bonecrusher' WHERE `entry`=39665; +-- Add script to Chains of Woe +UPDATE `creature_template` SET `AIName`='',`ScriptName`='npc_chains_of_woe' WHERE `entry`=40447; + +-- Add Teleport location for Blackrock Caverns +DELETE FROM `game_tele` WHERE `name`= 'BlackrockCaverns'; +INSERT INTO `game_tele` (`id`,`position_x`,`position_y`,`position_z`,`orientation`,`map`,`name`) VALUES +(1523, -7570.9165, -1326.4373, 245.537216, 4.827146, 0, 'BlackrockCaverns'); + +-- Add Instance Template for Blackrock Caverns +DELETE FROM `instance_template` WHERE `map`=645; +INSERT INTO `instance_template` (`map`,`parent`,`script`,`allowMount`) VALUES +(645,0, 'instance_blackrock_caverns',0); + +-- Spell Script Names +DELETE FROM `spell_script_names` WHERE `spell_id` IN (75437, 82189, 75649, 75650, 75653, 75654); +INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES +(75437, 'spell_chains_of_woe_1'), +(82189, 'spell_chains_of_woe_4'), +(75649, 'spell_nether_dragon_essence_1'), +(75650, 'spell_nether_dragon_essence_2'), +(75653, 'spell_nether_dragon_essence_2'), +(75654, 'spell_nether_dragon_essence_2'); + +-- Add spell condition for Inflict Pain +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry`=75590; +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 75590, 0, 0, 31, 3, 39982, 0, 0, '', 'Inflict Pain targets Crazed Mage'), +(13, 1, 75590, 0, 1, 31, 3, 39985, 0, 0, '', 'Inflict Pain targets Mad Prisoner'); + +-- Add spell condition for Chains of Woe +DELETE FROM `conditions` WHERE `SourceTypeOrReferenceId`=13 AND `SourceEntry` IN (75437, 75464, 82189, 82192); +INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `ErrorTextId`, `ScriptName`, `Comment`) VALUES +(13, 1, 75437, 0, 0, 31, 4, 0, 0, 0, '', 'Chains of Woe targets Player'), +(13, 1, 75464, 0, 0, 31, 4, 0, 0, 0, '', 'Chains of Woe targets Player'), +(13, 1, 82189, 0, 0, 31, 4, 0, 0, 0, '', 'Chains of Woe targets Player'), +(13, 1, 82192, 0, 0, 31, 4, 0, 0, 0, '', 'Chains of Woe targets Player'); + +-- Creature Template Updates +UPDATE `creature_template` SET `InhabitType`=4, flags_extra=128 WHERE `entry`=39842; +UPDATE `creature_template` SET `InhabitType`=4 WHERE `entry`=40164; +UPDATE `creature_template` SET `InhabitType`=4, flags_extra=128 WHERE `entry`=40343; +UPDATE `creature_template` SET `difficulty_entry_1`=39706 WHERE `entry`=39705; -- Ascendant Lord Obsidius +UPDATE `creature_template` SET `difficulty_entry_1`=39701 WHERE `entry`=39700; -- Beauty +UPDATE `creature_template` SET `difficulty_entry_1`=39680 WHERE `entry`=39679; -- Corla, Herald of Twilight +UPDATE `creature_template` SET `difficulty_entry_1`=39699 WHERE `entry`=39698; -- Karsh Steelbender <Twilight Armorer> +UPDATE `creature_template` SET `difficulty_entry_1`=39666 WHERE `entry`=39665; -- Rom'ogg Bonecrusher +UPDATE `creature_template` SET `difficulty_entry_1`=40085 WHERE `entry`=40084; -- Bellows Slave +UPDATE `creature_template` SET `difficulty_entry_1`=40014 WHERE `entry`=40013; -- Buster +UPDATE `creature_template` SET `difficulty_entry_1`=50379 WHERE `entry`=40447; -- Chains of Woe (No spawn data) (Summoned by 39665 using spell 75539) +UPDATE `creature_template` SET `difficulty_entry_1`=39995 WHERE `entry`=39994; -- Conflagration (No spawn data) +UPDATE `creature_template` SET `difficulty_entry_1`=39983 WHERE `entry`=39982; -- Crazed Mage +UPDATE `creature_template` SET `difficulty_entry_1`=39988 WHERE `entry`=39987; -- Evolved Twilight Zealot +UPDATE `creature_template` SET `difficulty_entry_1`=40022 WHERE `entry`=40021; -- Incendiary Spark +UPDATE `creature_template` SET `difficulty_entry_1`=40009 WHERE `entry`=40008; -- Lucky +UPDATE `creature_template` SET `difficulty_entry_1`=39986 WHERE `entry`=39985; -- Mad Prisoner +UPDATE `creature_template` SET `difficulty_entry_1`=40016 WHERE `entry`=40015; -- Runty +UPDATE `creature_template` SET `difficulty_entry_1`=40818 WHERE `entry`=40817; -- Shadow of Obsidius +UPDATE `creature_template` SET `difficulty_entry_1`=40018 WHERE `entry`=40017; -- Twilight Element Warden +UPDATE `creature_template` SET `difficulty_entry_1`=39709 WHERE `entry`=39708; -- Twilight Flame Caller +UPDATE `creature_template` SET `difficulty_entry_1`=40020 WHERE `entry`=40019; -- Twilight Obsidian Borer +UPDATE `creature_template` SET `difficulty_entry_1`=39981 WHERE `entry`=39980; -- Twilight Sadist +UPDATE `creature_template` SET `difficulty_entry_1`=39979 WHERE `entry`=39978; -- Twilight Torturer +UPDATE `creature_template` SET `difficulty_entry_1`=39991 WHERE `entry`=39990; -- Twilight Zealot +UPDATE `creature_template` SET `difficulty_entry_1`=40005 WHERE `entry`=40004; -- Quicksilver +UPDATE `creature_template` SET `difficulty_entry_1`=50285 WHERE `entry`=50284; -- Twilight Zealot +-- Update stats for Blackrock Caverna +UPDATE `creature_template` SET `npcflag`=0, `maxlevel`=82, `flags_extra`=0 WHERE `entry`=39705; +UPDATE `creature_template` SET `npcflag`=0, `minlevel`=87, `maxlevel`=87, `faction`=16, `speed_walk`=1.6, `speed_run`=1.71429, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=295744, `flags_extra`=1 WHERE `entry`=39706; +UPDATE `creature_template` SET `npcflag`=0, `maxlevel`=82, `flags_extra`=0 WHERE `entry`=39700; +UPDATE `creature_template` SET `npcflag`=0, `minlevel`=87, `maxlevel`=87, `faction`=16, `speed_walk`=1.6, `speed_run`=1.71429, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832, `flags_extra`=1 WHERE `entry`=39701; +UPDATE `creature_template` SET `npcflag`=0, `maxlevel`=82, `flags_extra`=0 WHERE `entry`=39679; +UPDATE `creature_template` SET `npcflag`=0, `minlevel`=87, `maxlevel`=87, `faction`=16, `speed_walk`=1.6, `unit_class`=2, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832, `flags_extra`=1 WHERE `entry`=39680; +UPDATE `creature_template` SET `npcflag`=0, `maxlevel`=82, `flags_extra`=0 WHERE `entry`=39698; +UPDATE `creature_template` SET `npcflag`=0, `minlevel`=87, `maxlevel`=87, `faction`=16, `speed_walk`=1.6, `speed_run`=1.71429, `unit_class`=2, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832, `flags_extra`=1 WHERE `entry`=39699; +UPDATE `creature_template` SET `npcflag`=0, `maxlevel`=82, `flags_extra`=0 WHERE `entry`=39665; +UPDATE `creature_template` SET `npcflag`=0, `minlevel`=87, `maxlevel`=87,`faction`=16, `speed_walk`=1.6, `speed_run`=1.71429, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39666; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=40084; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832, `flags_extra`=1 WHERE `entry`=40085; +UPDATE `creature_template` SET `maxlevel`=81 WHERE `entry`=40013; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_walk`=1.6, `speed_run`=1.28571, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=40014; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=39982; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `unit_class`=2, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39983; +UPDATE `creature_template` SET `maxlevel`=81 WHERE `entry`=39987; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_walk`=1.6, `speed_run`=1.42857, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39988; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=40021; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=40022; +UPDATE `creature_template` SET `maxlevel`=81 WHERE `entry`=40008; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_walk`=1.6, `speed_run`=1.28571, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=40009; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=39985; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=294976 WHERE `entry`=39986; +UPDATE `creature_template` SET `maxlevel`=81 WHERE `entry`=40015; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_walk`=1.6, `speed_run`=1, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=40016; +UPDATE `creature_template` SET `maxlevel`=82 WHERE `entry`=40817; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_walk`=2.4, `speed_run`=0.857143, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=295680 WHERE `entry`=40818; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=40017; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_class`=2, `unit_flags`=32832 WHERE `entry`=40018; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=39708; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39709; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=40019; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=40020; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=39980; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39980; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=39978; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=32832 WHERE `entry`=39979; +UPDATE `creature_template` SET `maxlevel`=80, `unit_flags`=32832, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=39990; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_class`=2, `unit_flags`=32832, `unit_flags2`=2048, `dynamicflags`=0 WHERE `entry`=39991; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=40004; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `speed_run`=1.14286, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_class`=2, `unit_flags`=33587520, `unit_flags2`=0 WHERE `entry`=40005; +UPDATE `creature_template` SET `maxlevel`=80 WHERE `entry`=50284; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=16, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_class`=2, `unit_flags`=294912 WHERE `entry`=50285; +UPDATE `creature_template` SET `minlevel`=81, `maxlevel`=81,`faction`=14, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=524288, flags_extra=0 WHERE `entry`=40447; +UPDATE `creature_template` SET `minlevel`=85, `maxlevel`=85,`faction`=14, `baseattacktime`=2000, `rangeattacktime`=2000, `unit_flags`=524288, flags_extra=0 WHERE `entry`=50379; + +DELETE FROM `creature_template_addon` WHERE `entry`=39705; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (39705,1, '75054'); +DELETE FROM `creature_template_addon` WHERE `entry`=40817; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (40817,1, '76190 76164 76167 75054'); +DELETE FROM `creature_template_addon` WHERE `entry`=51340; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (51340,1, '95014'); +DELETE FROM `creature_template_addon` WHERE `entry`=40164; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (40164,1, '74851'); +DELETE FROM `creature_template_addon` WHERE `entry`=46476; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (46476,1, '92292'); +DELETE FROM `creature_template_addon` WHERE `entry`=53488; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (53488,1, '99201'); +DELETE FROM `creature_template_addon` WHERE `entry`=39708; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (39708,1, '74911'); +DELETE FROM `creature_template_addon` WHERE `entry`=49526; +INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`auras`) VALUES (49526,65536,1, '92282 92284'); +DELETE FROM `creature_template_addon` WHERE `entry`=49476; +INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`auras`) VALUES (49476,65536,1, '92292'); +DELETE FROM `creature_template_addon` WHERE `entry`=50284; +INSERT INTO `creature_template_addon` (`entry`,`bytes1`,`bytes2`,`auras`) VALUES (50284,8,1, '75608'); +DELETE FROM `creature_template_addon` WHERE `entry`=39987; +INSERT INTO `creature_template_addon` (`entry`,`bytes2`,`auras`) VALUES (39987,1, '18950'); + +-- Equipment +DELETE FROM `creature_equip_template` WHERE `entry` IN (39665, 39666, 39698, 39699, 39708, 39709, 39679, 39680, 39705, 39980, 39985, 39986, 39978, 39979, 39987, 39988, 39990, 39991, 50284, 50285, 40084, 40085, 40017, 40018, 40019, 40020); +INSERT INTO `creature_equip_template` (`entry`, `id`, `itemEntry1`, `itemEntry2`, `itemEntry3`) VALUES +(39665, 1, 54780, 54780, 0), +(39666, 1, 54780, 54780, 0), +(39698, 1, 58176, 0, 0), +(39699, 1, 58176, 0, 0), +(39708, 1, 49653, 0, 0), +(39709, 1, 49653, 0, 0), +(39679, 1, 52838, 0, 0), +(39680, 1, 52838, 0, 0), +(39705, 1, 60969, 0, 0), +(39980, 1, 52517, 52517, 6886), +(39985, 1, 54827, 0, 0), +(39986, 1, 54827, 0, 0), +(39978, 1, 52520, 0, 0), +(39979, 1, 52520, 0, 0), +(39987, 1, 58176, 0, 0), +(39988, 1, 58176, 0, 0), +(39990, 1, 52517, 0, 0), +(39990, 2, 57007, 58941, 0), +(39990, 3, 57036, 0, 0), +(39990, 4, 58803, 0, 0), +(39991, 1, 52517, 0, 0), +(39991, 2, 57007, 58941, 0), +(39991, 3, 57036, 0, 0), +(39991, 4, 58803, 0, 0), +(50284, 1, 41889, 0, 0), +(50285, 1, 41889, 0, 0), +(40084, 1, 1910, 0, 0), +(40085, 1, 1910, 0, 0), +(40017, 1, 49724, 0, 0), +(40018, 1, 54815, 0, 0), +(40019, 1, 49724, 0, 0), +(40020, 1, 54815, 0, 0); + +-- Creature text +DELETE FROM `creature_text` WHERE `entry` IN (39665,39679,39698,39705,39670,39985,49476); +INSERT INTO `creature_text` (`entry`, `groupid`, `id`, `text`, `type`, `language`, `probability`, `emote`, `duration`, `sound`, `comment`) VALUES +(39665, 0, 0, 'Boss Cho''gall not gonna be happy ''bout dis!', 14, 0, 100, 0, 0, 18925, 'Rom''ogg Bonecrusher - Aggro'), +(39665, 1, 0, 'Dat''s what you get! Noting!', 14, 0, 100, 0, 0, 18926, 'Rom''ogg Bonecrusher - Killing a player'), +(39665, 2, 0, 'Stand still! Rom''ogg crack your skulls!', 14, 0, 100, 0, 0, 18927, 'Rom''ogg Bonecrusher - Skullcracker'), +(39665, 3, 0, 'Rom''ogg sorry...', 14, 0, 100, 0, 0, 18928, 'Rom''ogg Bonecrusher - Death'), +(39665, 4, 0, '%s calls for help!', 16, 0, 100, 0, 0, 0, 'Rom''ogg Bonecrusher - Emote call for help'), +(39665, 5, 0, '%s prepares to unleash The Skullcracker on nearby enemies!', 41, 0, 100, 0, 0, 0, 'Rom''ogg Bonecrusher - Skullcracker emote'), +(39679, 0, 0, 'HERETICS! You will suffer for this interruption!', 14, 0, 100, 0, 0, 18589, 'Corla, Herald of Twilight - Aggro'), +(39679, 1, 0, 'There is only one true path of enlightenment! DEATH!', 14, 0, 100, 0, 0, 18590, 'Corla, Herald of Twilight - - Killing a player'), +(39679, 2, 0, 'Bask in his power! Rise as an agent of the master''s rage!', 14, 0, 100, 0, 0, 18592, 'Corla, Herald of Twilight - Evolved Zealot'), +(39679, 3, 0, 'For the master I''d die a thousand times... A thousan...', 14, 0, 100, 0, 0, 18594, 'Corla, Herald of Twilight - Death'), +(39679, 4, 0, 'A Twilight Zealot has evolved!', 41, 0, 100, 0, 0, 0, 'Corla, Herald of Twilight - Evolved Zealot emote'), +(39698, 0, 0, 'Bodies to test my armaments upon!', 14, 0, 100, 0, 0, 18852, 'Karsh Steelbender - Aggro'), +(39698, 1, 0, 'Merely an impurity in the compound!', 14, 0, 100, 0, 0, 18853, 'Karsh Steelbender - Killing a player'), +(39698, 2, 0, 'Feel the burn!', 14, 0, 100, 0, 0, 18854, 'Karsh Steelbender to Karsh Steelbender - Superheated Quicksilver Armor'), +(39698, 3, 0, 'We number in the millions! Your efforts are wasted...', 14, 0, 100, 0, 0, 18855, 'Karsh Steelbender - Death'), +(39698, 4, 0, '%s''s armor shimmers with heat. Strike now!', 41, 0, 100, 0, 0, 0, 'Karsh Steelbender to Karsh Steelbender - Aura Emote'), +(39705, 0, 0, 'You come seeking answers? Then have them! Look upon your answer to living!', 14, 0, 100, 0, 0, 18899, 'Ascendant Lord Obsidius - Aggro'), +(39705, 1, 0, 'Your kind has no place in the master''s world!', 14, 0, 100, 0, 0, 18900, 'Ascendant Lord Obsidius - Killing a player'), +(39705, 2, 0, 'Earth can be shaped, molded... You cannot! You are useless!', 14, 0, 100, 0, 0, 18901, 'Ascendant Lord Obsidius - Switching shadows'), +(39705, 3, 0, 'I cannot be destroyed... Only... de... layed...', 14, 0, 100, 0, 0, 18902, 'Ascendant Lord Obsidius - Death'), +(39705, 4, 0, '%s prepares to trade places with one of his shadows!', 41, 0, 100, 0, 0, 0, 'Ascendant Lord Obsidius - Switching shadows emote'), +(39670, 0, 0, 'RAZ SMASH!', 14, 0, 100, 0, 0, 18919, 'Raz the Crazed'), +(39670, 1, 0, 'Raz... Tired...', 14, 0, 100, 0, 0, 18920, 'Raz the Crazed'), +(39985, 0, 0, '%s becomes enraged!', 16, 0, 100, 0, 0, 0, 'Mad Prisoner'), +(49476, 0, 0, 'RAZ, NOOOOOOOOOOO!!!!', 14, 0, 100, 0, 0, 0, 'Finkle Einhorn'); diff --git a/src/server/game/Scripting/ScriptLoader.cpp b/src/server/game/Scripting/ScriptLoader.cpp index 4b68aa6648b..bff413d73f4 100644 --- a/src/server/game/Scripting/ScriptLoader.cpp +++ b/src/server/game/Scripting/ScriptLoader.cpp @@ -112,6 +112,13 @@ void AddSC_boss_alizabal(); //Baradin Hold void AddSC_boss_occuthar(); void AddSC_boss_pit_lord_argaloth(); void AddSC_instance_baradin_hold(); +void AddSC_boss_romogg_bonecrusher(); //Blackrock Caverns +void AddSC_boss_corla(); +void AddSC_boss_karsh_steelbender(); +void AddSC_boss_beauty(); +void AddSC_boss_ascendant_lord_obsidius(); +void AddSC_blackrock_caverns(); +void AddSC_instance_blackrock_caverns(); void AddSC_blackrock_depths(); //Blackrock Depths void AddSC_boss_ambassador_flamelash(); void AddSC_boss_anubshiah(); @@ -832,6 +839,13 @@ void AddEasternKingdomsScripts() AddSC_boss_occuthar(); AddSC_boss_pit_lord_argaloth(); AddSC_instance_baradin_hold(); + AddSC_boss_romogg_bonecrusher(); //Blackrock Caverns + AddSC_boss_corla(); + AddSC_boss_karsh_steelbender(); + AddSC_boss_beauty(); + AddSC_boss_ascendant_lord_obsidius(); + AddSC_blackrock_caverns(); + AddSC_instance_blackrock_caverns(); AddSC_blackrock_depths(); //Blackrock Depths AddSC_boss_ambassador_flamelash(); AddSC_boss_anubshiah(); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp new file mode 100644 index 00000000000..9261eb85ba7 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp @@ -0,0 +1,864 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" +#include "SpellScript.h" +#include "SpellAuras.h" +#include "player.h" + +/*##### +# npc_fire_cyclone +#####*/ + +enum FireCycloneSpells +{ + SPELL_FIRE_CYCLONE_AURA = 74851 +}; + +enum FireCycloneEvents +{ + EVENT_FIRE_CYCLONE_AURA = 1 +}; + +class npc_fire_cyclone : public CreatureScript +{ + public: npc_fire_cyclone() : CreatureScript("npc_fire_cyclone") {} + + struct npc_fire_cycloneAI : public ScriptedAI + { + npc_fire_cycloneAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + me->AddUnitState(UNIT_STATE_ROOT); + _events.ScheduleEvent(EVENT_FIRE_CYCLONE_AURA, 100); + } + + void UpdateAI(uint32 diff) override + { + _events.Update(diff); + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_FIRE_CYCLONE_AURA: + DoCast(me, SPELL_FIRE_CYCLONE_AURA, true); + _events.ScheduleEvent(EVENT_FIRE_CYCLONE_AURA, 4000); + break; + default: + break; + } + } + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_fire_cycloneAI>(creature); + } +}; + +/*##### +# npc_twilight_flame_caller +#####*/ + +enum TwilightFlameCallerSpells +{ + SPELL_FIRE_CHANNELING_1 = 74911, + SPELL_FIRE_CHANNELING_2 = 74912, + SPELL_BLAST_WAVE = 76473, + SPELL_CALL_FLAMES = 76325 + +}; + +enum TwilightFlameCallerEvents +{ + EVENT_CHANNEL = 2, + EVENT_BLAST_WAVE = 3, + EVENT_CALL_FLAMES = 4 +}; + +class npc_twilight_flame_caller : public CreatureScript +{ + public: npc_twilight_flame_caller() : CreatureScript("npc_twilight_flame_caller") {} + + struct npc_twilight_flame_callerAI : public ScriptedAI + { + npc_twilight_flame_callerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + _flamecaller1GUID = 0; + _flamecaller2GUID = 0; + if (me->GetPositionX() > 172 && me->GetPositionX() < 173 && me->GetPositionY() > 1086 && me->GetPositionY() < 1087) + _flamecaller1GUID = me->GetGUID(); + if (me->GetPositionX() > 247 && me->GetPositionX() < 248 && me->GetPositionY() > 1081 && me->GetPositionY() < 1082) + _flamecaller2GUID = me->GetGUID(); + _events.ScheduleEvent(EVENT_CHANNEL, 100); + } + + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_BLAST_WAVE, urand(8000, 10000)); + _events.ScheduleEvent(EVENT_CALL_FLAMES, urand(10000, 14000)); + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + { + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_CHANNEL: + if (me->GetGUID() == _flamecaller1GUID) + DoCast(me, SPELL_FIRE_CHANNELING_1); + if (me->GetGUID() == _flamecaller2GUID) + DoCast(me, SPELL_FIRE_CHANNELING_2); + _events.ScheduleEvent(EVENT_CHANNEL, 12000); + break; + default: + break; + } + } + return; + } + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_BLAST_WAVE: + DoCast(me, SPELL_BLAST_WAVE); + _events.ScheduleEvent(EVENT_BLAST_WAVE, 16000, 20000); + break; + case EVENT_CALL_FLAMES: + DoCast(me, SPELL_CALL_FLAMES); + _events.ScheduleEvent(EVENT_CALL_FLAMES, 12000, 15000); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + uint64 _flamecaller1GUID; + uint64 _flamecaller2GUID; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_twilight_flame_callerAI>(creature); + } +}; + +/*##### +# npc_twilight_torturer +#####*/ + +enum TwilightTorturerSpells +{ + SPELL_INFLICT_PAIN = 75590, + SPELL_RED_HOT_POKER = 76478, + SPELL_SHACKLES = 76484, + SPELL_WILD_BEATDOWN = 76487 +}; + +enum TwilightTorturerEvents +{ + EVENT_INFLICT_PAIN_TT = 5, + EVENT_RED_HOT_POKER = 6, + EVENT_SHACKLES = 7, + EVENT_WILD_BEATDOWN = 8 +}; + +class npc_twilight_torturer : public CreatureScript +{ + public: npc_twilight_torturer() : CreatureScript("npc_twilight_torturer") {} + + struct npc_twilight_torturerAI : public ScriptedAI + { + npc_twilight_torturerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + } + + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_RED_HOT_POKER, 9000); + _events.ScheduleEvent(EVENT_SHACKLES, 13000); + _events.ScheduleEvent(EVENT_WILD_BEATDOWN, 17000); + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + { + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_INFLICT_PAIN_TT: + DoCast(me, SPELL_INFLICT_PAIN); + _events.ScheduleEvent(EVENT_INFLICT_PAIN_TT, urand(25000, 32000)); + break; + default: + break; + } + } + return; + } + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_RED_HOT_POKER: + DoCast(me, SPELL_RED_HOT_POKER); + _events.ScheduleEvent(EVENT_RED_HOT_POKER, 16000, 20000); + break; + case EVENT_SHACKLES: + DoCast(me, SPELL_SHACKLES); + _events.ScheduleEvent(EVENT_SHACKLES, 12000, 15000); + break; + case EVENT_WILD_BEATDOWN: + DoCast(me, SPELL_WILD_BEATDOWN); + _events.ScheduleEvent(EVENT_WILD_BEATDOWN, 12000, 15000); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_twilight_torturerAI>(creature); + } +}; + +/*##### +# npc_twilight_sadist +#####*/ + +enum TwilightSadistSpells +{ + SPELL_INFLICT_PAIN_1 = 76497, + SPELL_HEAT_SEEKER_BLADE = 76502, + SPELL_SHORT_THROW = 76572, + SPELL_SINISTER_STRIKE = 76500 +}; + +enum TwilightSadistEvents +{ + EVENT_INFLICT_PAIN_TS = 9, + EVENT_HEAT_SEEKER_BLADE = 10, + EVENT_SHORT_THROW = 11, + EVENT_SINISTER_STRIKE = 12 +}; + +class npc_twilight_sadist : public CreatureScript +{ + public: npc_twilight_sadist() : CreatureScript("npc_twilight_sadist") {} + + struct npc_twilight_sadistAI : public ScriptedAI + { + npc_twilight_sadistAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + if(!me->GetWaypointPath()) + _events.ScheduleEvent(EVENT_INFLICT_PAIN_TS, urand(6000, 18000)); + } + + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_INFLICT_PAIN_TS, 9000); + _events.ScheduleEvent(EVENT_HEAT_SEEKER_BLADE, 13000); + _events.ScheduleEvent(EVENT_SHORT_THROW, 17000); + _events.ScheduleEvent(EVENT_SINISTER_STRIKE, 17000); + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + { + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_INFLICT_PAIN_TS: + DoCast(me, SPELL_INFLICT_PAIN); + _events.ScheduleEvent(EVENT_INFLICT_PAIN_TS, urand(25000, 32000)); + break; + default: + break; + } + } + return; + } + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_RED_HOT_POKER: + DoCast(me, SPELL_RED_HOT_POKER); + _events.ScheduleEvent(EVENT_RED_HOT_POKER, 16000, 20000); + break; + case EVENT_SHACKLES: + DoCast(me, SPELL_SHACKLES); + _events.ScheduleEvent(EVENT_SHACKLES, 12000, 15000); + break; + case EVENT_WILD_BEATDOWN: + DoCast(me, SPELL_WILD_BEATDOWN); + _events.ScheduleEvent(EVENT_WILD_BEATDOWN, 12000, 15000); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_twilight_sadistAI>(creature); + } +}; + +/*##### +# npc_mad_prisoner +#####*/ + +enum MadPrisonerSpells +{ + SPELL_HEAD_CRACK = 77568, + SPELL_INFECTED_WOUND = 76512, + SPELL_ENRAGE = 8599 +}; + +enum MadPrisonerEvents +{ + EVENT_INFLICT_PAIN_MP1 = 13, + EVENT_HEAD_CRACK = 14, + EVENT_INFECTED_WOUND = 15, + EVENT_ENRAGE = 16 +}; + +class npc_mad_prisoner : public CreatureScript +{ + public: npc_mad_prisoner() : CreatureScript("npc_mad_prisoner") {} + + struct npc_mad_prisonerAI : public ScriptedAI + { + npc_mad_prisonerAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + _events.ScheduleEvent(EVENT_INFLICT_PAIN_MP1, urand(6000, 18000)); + } + + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_HEAD_CRACK, 9000); + _events.ScheduleEvent(EVENT_INFECTED_WOUND, 13000); + _events.ScheduleEvent(EVENT_ENRAGE, 17000); + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + { + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_INFLICT_PAIN_MP1: + DoCast(me, SPELL_INFLICT_PAIN); + _events.ScheduleEvent(EVENT_INFLICT_PAIN_MP1, urand(25000, 32000)); + break; + default: + break; + } + } + return; + } + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_HEAD_CRACK: + DoCast(me, SPELL_HEAD_CRACK); + _events.ScheduleEvent(EVENT_HEAD_CRACK, 16000, 20000); + break; + case EVENT_INFECTED_WOUND: + DoCast(me, SPELL_INFECTED_WOUND); + _events.ScheduleEvent(EVENT_INFECTED_WOUND, 12000, 15000); + break; + case EVENT_ENRAGE: + DoCast(me, SPELL_ENRAGE); + _events.ScheduleEvent(EVENT_ENRAGE, 12000, 15000); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_mad_prisonerAI>(creature); + } +}; + +/*##### +# npc_crazed_mage +#####*/ + +enum CrazedMageEvents +{ + EVENT_INFLICT_PAIN_MP2 = 17, + EVENT_HEAD_CRACK2 = 18, + EVENT_INFECTED_WOUND2 = 19, + EVENT_ENRAGE2 = 20 +}; + +class npc_crazed_mage : public CreatureScript +{ + public: npc_crazed_mage() : CreatureScript("npc_crazed_mage") {} + + struct npc_crazed_mageAI : public ScriptedAI + { + npc_crazed_mageAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + _events.ScheduleEvent(EVENT_INFLICT_PAIN_MP2, urand(6000, 18000)); + } + + void EnterCombat(Unit* /*who*/) override + { + _events.ScheduleEvent(EVENT_HEAD_CRACK2, 9000); + _events.ScheduleEvent(EVENT_INFECTED_WOUND2, 13000); + _events.ScheduleEvent(EVENT_ENRAGE2, 17000); + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + { + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_INFLICT_PAIN_MP2: + DoCast(me, SPELL_INFLICT_PAIN); + _events.ScheduleEvent(EVENT_INFLICT_PAIN_MP2, urand(25000, 32000)); + break; + default: + break; + } + } + return; + } + + while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_HEAD_CRACK2: + DoCast(me, SPELL_HEAD_CRACK); + _events.ScheduleEvent(EVENT_HEAD_CRACK2, 16000, 20000); + break; + case EVENT_INFECTED_WOUND2: + DoCast(me, SPELL_INFECTED_WOUND); + _events.ScheduleEvent(EVENT_INFECTED_WOUND2, 12000, 15000); + break; + case EVENT_ENRAGE2: + DoCast(me, SPELL_ENRAGE); + _events.ScheduleEvent(EVENT_ENRAGE2, 12000, 15000); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_crazed_mageAI>(creature); + } +}; + +/*##### +# npc_raz_the_crazed +#####*/ + +enum RazTheCrazedSpells +{ + SPELL_AGGRO_NEARBY_TARGETS = 80196, + SPELL_SHADOW_PRISON = 79725 +}; + +enum RazTheCrazedEvents +{ +}; + +class npc_raz_the_crazed : public CreatureScript +{ + public: npc_raz_the_crazed() : CreatureScript("npc_raz_the_crazed") {} + + struct npc_raz_the_crazedAI : public ScriptedAI + { + npc_raz_the_crazedAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void Reset() override + { + } + + void EnterCombat(Unit* /*who*/) override + { + } + + void IsSummonedBy(Unit* summoner) override + { + if (summoner->GetEntry() == NPC_ROMOGG_BONECRUSHER) + { + me->SetDisableGravity(true); + DoCast(me, SPELL_AGGRO_NEARBY_TARGETS); + DoCast(me, SPELL_SHADOW_PRISON); + } + } + + void UpdateAI(uint32 diff) override + { + + _events.Update(diff); + + if (!UpdateVictim()) + return; + + /*while (uint32 eventId = _events.ExecuteEvent()) + { + switch (eventId) + { + default: + break; + } + }*/ + DoMeleeAttackIfReady(); + } + + private: + EventMap _events; + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_raz_the_crazedAI>(creature); + } +}; + +/*##### +# npc_chains_of_woe +#####*/ + +enum ChainsOfWoeSpells +{ + SPELL_CHAINS_OF_WOE_1 = 75437, + SPELL_CHAINS_OF_WOE_2 = 75441, + SPELL_CHAINS_OF_WOE_3 = 75464, + SPELL_CHAINS_OF_WOE_4 = 82189, + SPELL_CHAINS_OF_WOE_5 = 82192 +}; + +enum ChainsOfWoeModel +{ + MODEL_INVISIBLE = 38330 +}; + +class npc_chains_of_woe : public CreatureScript +{ + public: npc_chains_of_woe() : CreatureScript("npc_chains_of_woe") {} + + struct npc_chains_of_woeAI : public ScriptedAI + { + npc_chains_of_woeAI(Creature* creature) : ScriptedAI(creature), _instance(creature->GetInstanceScript()) { } + + void IsSummonedBy(Unit* /*summoner*/) + { + me->SetDisplayId(MODEL_INVISIBLE); + DoCast(me, SPELL_CHAINS_OF_WOE_1, true); + DoCast(me, SPELL_CHAINS_OF_WOE_2, true); + } + + private: + InstanceScript* _instance; + }; + + CreatureAI* GetAI(Creature* creature) const + { + return GetBlackrockCavernsAI<npc_chains_of_woeAI>(creature); + } +}; + + +/*##### +# spell_chains_of_woe_1 +#####*/ + +class spell_chains_of_woe_1 : public SpellScriptLoader +{ + public: spell_chains_of_woe_1() : SpellScriptLoader("spell_chains_of_woe_1") { } + + class spell_chains_of_woe_1_SpellScript : public SpellScript + { + PrepareSpellScript(spell_chains_of_woe_1_SpellScript); + + bool Validate(SpellInfo const* /*spellEntry*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_CHAINS_OF_WOE_1)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (Player* playerTarget = GetHitPlayer()) + { + Unit* caster = GetCaster(); + playerTarget->CastSpell(caster, SPELL_CHAINS_OF_WOE_3, true, NULL); + } + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_chains_of_woe_1_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_chains_of_woe_1_SpellScript(); + } +}; + +/*##### +# spell_chains_of_woe_4 +#####*/ + +class spell_chains_of_woe_4 : public SpellScriptLoader +{ + public: spell_chains_of_woe_4() : SpellScriptLoader("spell_chains_of_woe_4") { } + + class spell_chains_of_woe_4_SpellScript : public SpellScript + { + PrepareSpellScript(spell_chains_of_woe_4_SpellScript); + + bool Validate(SpellInfo const* /*spellEntry*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_CHAINS_OF_WOE_4)) + return false; + return true; + } + + void HandleScriptEffect(SpellEffIndex /* effIndex */) + { + if (Player* playerTarget = GetHitPlayer()) + { + playerTarget->CastSpell(playerTarget, SPELL_CHAINS_OF_WOE_5, true, NULL); + } + } + + void Register() + { + OnEffectHitTarget += SpellEffectFn(spell_chains_of_woe_4_SpellScript::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_chains_of_woe_4_SpellScript(); + } +}; + +/*##### +# spell_nether_dragon_essence_1 +#####*/ + +enum NetherDragonEssence +{ + SPELL_NETHER_DRAGON_ESSENCE_1 = 75649, + SPELL_NETHER_DRAGON_ESSENCE_2 = 75650, + SPELL_NETHER_DRAGON_ESSENCE_3 = 75653, + SPELL_NETHER_DRAGON_ESSENCE_4 = 75654 +}; + +class spell_nether_dragon_essence_1 : public SpellScriptLoader +{ +public: spell_nether_dragon_essence_1() : SpellScriptLoader("spell_nether_dragon_essence_1") { } + + class spell_nether_dragon_essence_1_AuraScript : public AuraScript + { + PrepareAuraScript(spell_nether_dragon_essence_1_AuraScript); + + bool Validate(SpellInfo const* /*spellEntry*/) + { + if (!sSpellMgr->GetSpellInfo(SPELL_NETHER_DRAGON_ESSENCE_2) || !sSpellMgr->GetSpellInfo(SPELL_NETHER_DRAGON_ESSENCE_3) || !sSpellMgr->GetSpellInfo(SPELL_NETHER_DRAGON_ESSENCE_4)) + return false; + return true; + } + + void HandleTriggerSpell(AuraEffect const* /*aurEff*/) + { + if (Unit* caster = GetCaster()) + caster->CastSpell(caster, RAND(SPELL_NETHER_DRAGON_ESSENCE_2, SPELL_NETHER_DRAGON_ESSENCE_3, SPELL_NETHER_DRAGON_ESSENCE_4)); + } + + void Register() + { + OnEffectPeriodic += AuraEffectPeriodicFn(spell_nether_dragon_essence_1_AuraScript::HandleTriggerSpell, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL); + } + }; + + AuraScript* GetAuraScript() const + { + return new spell_nether_dragon_essence_1_AuraScript(); + } +}; + +/*##### +# spell_nether_dragon_essence_2 +#####*/ + +class spell_nether_dragon_essence_2 : public SpellScriptLoader +{ + public: spell_nether_dragon_essence_2() : SpellScriptLoader("spell_nether_dragon_essence_2") { } + + class spell_nether_dragon_essence_2_SpellScript : public SpellScript + { + PrepareSpellScript(spell_nether_dragon_essence_2_SpellScript); + + void ModDestHeight(SpellEffIndex /*effIndex*/) + { + if (Unit* caster = GetCaster()) + { + float posZ = 0; + + switch (GetSpellInfo()->Id) + { + case SPELL_NETHER_DRAGON_ESSENCE_2: + posZ = 25.0f; + break; + case SPELL_NETHER_DRAGON_ESSENCE_3: + posZ = 17.0f; + break; + case SPELL_NETHER_DRAGON_ESSENCE_4: + posZ = 33.0f; + break; + } + + float posX = frand(-35.0f, 35.0f); + float posY = frand(-25.0f, 25.0f); + Position offset = {posX, posY, posZ, 0.0f}; + const_cast<WorldLocation*>(GetExplTargetDest())->RelocateOffset(offset); + } + } + + void Register() + { + OnEffectLaunch += SpellEffectFn(spell_nether_dragon_essence_2_SpellScript::ModDestHeight, EFFECT_0, SPELL_EFFECT_DUMMY); + } + }; + + SpellScript* GetSpellScript() const + { + return new spell_nether_dragon_essence_2_SpellScript(); + } +}; + +void AddSC_blackrock_caverns() +{ + // Creature Scripts + new npc_fire_cyclone(); + new npc_twilight_flame_caller(); + new npc_twilight_torturer(); + new npc_twilight_sadist(); + new npc_mad_prisoner(); + new npc_crazed_mage(); + new npc_raz_the_crazed(); + new npc_chains_of_woe(); + // Spell Scripts + new spell_chains_of_woe_1(); + new spell_chains_of_woe_4(); + new spell_nether_dragon_essence_1(); + new spell_nether_dragon_essence_2(); +} diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h new file mode 100644 index 00000000000..bdfdda87736 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h @@ -0,0 +1,51 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#ifndef DEF_BLACKROCKCAVERNS_H +#define DEF_BLACKROCKCAVERNS_H + +#define BCScriptName "instance_blackrock_caverns" + +uint32 const EncounterCount = 5; + +enum DataTypes +{ + DATA_ROMOGG_BONECRUSHER = 0, + DATA_CORLA = 1, + DATA_KARSH_STEELBENDER = 2, + DATA_BEAUTY = 3, + DATA_ASCENDANT_LORD_OBSIDIUS = 4 +}; + +enum CreatureIds +{ + NPC_TWILIGHT_FLAME_CALLER = 39708, + NPC_RAZ_THE_CRAZED = 39670, + NPC_ROMOGG_BONECRUSHER = 39665 +}; + +template<class AI> +CreatureAI* GetBlackrockCavernsAI(Creature* creature) +{ + if (InstanceMap* instance = creature->GetMap()->ToInstanceMap()) + if (instance->GetInstanceScript()) + if (instance->GetScriptId() == sObjectMgr->GetScriptId(BCScriptName)) + return new AI(creature); + return NULL; +} + +#endif diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp new file mode 100644 index 00000000000..fc64a1a65d9 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp @@ -0,0 +1,112 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" + +enum Text +{ + YELL_AGGRO = 0, + YELL_KILL = 1, + YELL_SWITCHING_SHADOWS = 2, + YELL_DEATH = 3, + EMOTE_SWITCHING_SHADOWS = 4 +}; + +enum Spells +{ + SPELL_MANA_TAP = 36021, + SPELL_ARCANE_TORRENT = 36022, + SPELL_DOMINATION = 35280, +}; + +enum Events +{ + EVENT_MANA_TAP = 0, + EVENT_ARCANE_TORRENT = 1, + EVENT_DOMINATION = 2 +}; + +class boss_ascendant_lord_obsidius : public CreatureScript +{ + public: + boss_ascendant_lord_obsidius(): CreatureScript("boss_ascendant_lord_obsidius") {} + + struct boss_ascendant_lord_obsidiusAI : public BossAI + { + boss_ascendant_lord_obsidiusAI(Creature* creature) : BossAI(creature, DATA_ASCENDANT_LORD_OBSIDIUS) { } + + void Reset() override + { + + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + events.ScheduleEvent(EVENT_MANA_TAP, 30000); + Talk(YELL_AGGRO); + } + + void KilledUnit(Unit* /*victim*/) override + { + Talk(YELL_KILL); + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(YELL_DEATH); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_MANA_TAP: + DoCastVictim(SPELL_MANA_TAP, true); + events.ScheduleEvent(EVENT_MANA_TAP, urand(14000, 22000)); + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_ascendant_lord_obsidiusAI (creature); + } +}; + +void AddSC_boss_ascendant_lord_obsidius() +{ + new boss_ascendant_lord_obsidius(); +} + diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp new file mode 100644 index 00000000000..bc6a8ffbc20 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp @@ -0,0 +1,118 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" + +enum Sounds +{ + SOUND_AGGRO = 18559, + SOUND_DEATH = 18563 +}; + +enum Spells +{ + SPELL_TERRIFYING_ROAR = 76028, // Not yet Implemented + SPELL_BERSERKER_CHARGE = 76030, + SPELL_MAGMA_SPIT = 76031, + SPELL_FLAMEBREAK = 76032, + SPELL_BERSERK = 82395 // Not yet Implemented +}; + +enum Events +{ + EVENT_TERRIFYING_ROAR = 0, + EVENT_BERSERKER_CHARGE = 1, + EVENT_MAGMA_SPIT = 2, + EVENT_FLAMEBREAK = 3, + EVENT_BERSERK = 4, +}; + +class boss_beauty : public CreatureScript +{ + public: boss_beauty(): CreatureScript("boss_beauty") {} + + struct boss_beautyAI : public BossAI + { + boss_beautyAI(Creature* creature) : BossAI(creature, DATA_BEAUTY) {} + + void Reset() override + { + + } + + void EnterCombat(Unit* who) override + { + _EnterCombat(); + events.ScheduleEvent(SPELL_MAGMA_SPIT, urand(7000, 10000)); + events.ScheduleEvent(EVENT_BERSERKER_CHARGE, urand(16000, 19000)); + events.ScheduleEvent(EVENT_FLAMEBREAK, urand(18000, 22000)); + DoPlaySoundToSet(me, SOUND_AGGRO); + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + DoPlaySoundToSet(me, SOUND_DEATH); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case SPELL_MAGMA_SPIT: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_MAGMA_SPIT, true); + events.ScheduleEvent(SPELL_MAGMA_SPIT, urand(7000, 10000)); + break; + case EVENT_BERSERKER_CHARGE: + DoCast(SelectTarget(SELECT_TARGET_RANDOM, 0, 100, true), SPELL_BERSERKER_CHARGE, true); + events.ScheduleEvent(EVENT_BERSERKER_CHARGE, urand(16000, 19000)); + break; + case EVENT_FLAMEBREAK: + DoCast(me, SPELL_FLAMEBREAK); + events.ScheduleEvent(EVENT_FLAMEBREAK, urand(18000, 22000)); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_beautyAI(creature); + } +}; + +void AddSC_boss_beauty() +{ + new boss_beauty(); +} diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp new file mode 100644 index 00000000000..c51316812ff --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp @@ -0,0 +1,92 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" + +enum Text +{ + YELL_AGGRO = 0, + YELL_KILL = 1, + YELL_EVOLVED_ZEALOT = 2, + YELL_DEATH = 3, + EMOTE_EVOLVED_ZEALOT = 4 +}; + +enum Spells +{ + SPELL_SHADOW_POWER = 35322, + H_SPELL_SHADOW_POWER = 39193 +}; + +enum Events +{ + +}; + +class boss_corla : public CreatureScript +{ + public: + boss_corla(): CreatureScript("boss_corla") {} + + struct boss_corlaAI : public BossAI + { + boss_corlaAI(Creature* creature) : BossAI(creature, DATA_CORLA) {} + + void Reset() override + { + + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + Talk(YELL_AGGRO); + } + + void KilledUnit(Unit* /*victim*/) override + { + Talk(YELL_KILL); + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(YELL_DEATH); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_corlaAI(creature); + } +}; + +void AddSC_boss_corla() +{ + new boss_corla(); +} + diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp new file mode 100644 index 00000000000..89b518992aa --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp @@ -0,0 +1,113 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" + +enum Text +{ + YELL_AGGRO = 0, + YELL_KILL = 1, + YELL_QUICKSILVER_ARMOR = 2, + YELL_DEATH = 3, + EMOTE_QUICKSILVER_ARMOR = 4 +}; + +enum Spells +{ + SPELL_CLEAVE = 15284, + SPELL_QUICKSILVER_ARMOR = 75842, + SPELL_SUPERHEATED_QUICKSILVER_ARMOR = 75846 +}; + +enum Events +{ + EVENT_CLEAVE = 0, + EVENT_QUICKSILVER_ARMOR = 1, + EVENT_SUPERHEATED_QUICKSILVER_ARMOR = 2 +}; + +class boss_karsh_steelbender : public CreatureScript +{ + public: + boss_karsh_steelbender() : CreatureScript("boss_karsh_steelbender") { } + + struct boss_karsh_steelbenderAI : public BossAI + { + boss_karsh_steelbenderAI(Creature* creature) : BossAI(creature, DATA_KARSH_STEELBENDER) { } + + void Reset() override + { + + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + Talk(YELL_AGGRO); + events.ScheduleEvent(EVENT_CLEAVE, 10000); + } + + void KilledUnit(Unit* /*victim*/) override + { + Talk(YELL_KILL); + } + + void JustDied(Unit* /*victim*/) override + { + _JustDied(); + Talk(YELL_DEATH); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_CLEAVE: + DoCastVictim(SPELL_CLEAVE); + events.ScheduleEvent(EVENT_CLEAVE, 10000); + break; + default: + break; + } + } + + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_karsh_steelbenderAI(creature); + } +}; + +void AddSC_boss_karsh_steelbender() +{ + new boss_karsh_steelbender(); +} diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp new file mode 100644 index 00000000000..240d1f661b7 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp @@ -0,0 +1,140 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "ScriptedCreature.h" +#include "blackrock_caverns.h" + +enum Say +{ + YELL_AGGRO = 0, + YELL_KILL = 1, + YELL_SKULLCRACKER = 2, + YELL_DEATH = 3, + EMOTE_CALL_FOR_HELP = 4, + EMOTE_SKULLCRACKER = 5 +}; + +enum Spells +{ + SPELL_CALL_FOR_HELP = 82137, // Needs Scripting + SPELL_CHAINS_OF_WOE = 75539, + SPELL_QUAKE = 75272, + SPELL_SKULLCRACKER = 75543, + SPELL_WOUNDING_STRIKE = 75571 +}; + +enum Events +{ + EVENT_CHAINS_OF_WOE = 1, + EVENT_QUAKE = 2, // Not yet sure of timing + EVENT_SKULLCRACKER = 3, + EVENT_WOUNDING_STRIKE = 4 +}; + +Position const SummonPos[1] = +{ + { 249.2639f, 949.1614f, 191.7866f, 3.141593f } +}; + +class boss_romogg_bonecrusher : public CreatureScript +{ + public: + boss_romogg_bonecrusher() : CreatureScript("boss_romogg_bonecrusher") {} + + struct boss_romogg_bonecrusherAI : public BossAI + { + boss_romogg_bonecrusherAI(Creature* creature) : BossAI(creature, DATA_ROMOGG_BONECRUSHER) {} + + void Reset() override + { + if(instance) + me->SummonCreature(NPC_RAZ_THE_CRAZED, SummonPos[0], TEMPSUMMON_MANUAL_DESPAWN, 200000); + } + + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + Talk(YELL_DEATH); + } + + void KilledUnit(Unit* /*victim*/) override + { + Talk(YELL_KILL); + } + + void EnterCombat(Unit* /*who*/) override + { + _EnterCombat(); + events.ScheduleEvent(EVENT_CHAINS_OF_WOE, urand(22000, 32000)); + events.ScheduleEvent(EVENT_WOUNDING_STRIKE, urand(26000, 32000)); + events.ScheduleEvent(EVENT_QUAKE, 45000); + Talk(YELL_AGGRO); + Talk(EMOTE_CALL_FOR_HELP); + DoCast(me, SPELL_CALL_FOR_HELP); + } + + void UpdateAI(uint32 diff) override + { + if (!UpdateVictim()) + return; + + events.Update(diff); + + if (me->HasUnitState(UNIT_STATE_CASTING)) + return; + + while (uint32 eventId = events.ExecuteEvent()) + { + switch (eventId) + { + case EVENT_CHAINS_OF_WOE: + Talk(YELL_SKULLCRACKER); + DoCast(me, SPELL_CHAINS_OF_WOE); + events.ScheduleEvent(EVENT_CHAINS_OF_WOE, urand(22000, 32000)); + events.ScheduleEvent(EVENT_SKULLCRACKER, 3000); + break; + case EVENT_SKULLCRACKER: + Talk(EMOTE_SKULLCRACKER); + DoCast(me, SPELL_SKULLCRACKER); + break; + case EVENT_QUAKE: + DoCast(me, SPELL_QUAKE); + events.ScheduleEvent(EVENT_QUAKE, urand(32000, 40000)); + break; + case EVENT_WOUNDING_STRIKE: + DoCastVictim(SPELL_WOUNDING_STRIKE, true); + events.ScheduleEvent(EVENT_WOUNDING_STRIKE, urand(26000, 32000)); + break; + default: + break; + } + } + DoMeleeAttackIfReady(); + } + }; + + CreatureAI* GetAI(Creature* creature) const + { + return new boss_romogg_bonecrusherAI (creature); + } +}; + +void AddSC_boss_romogg_bonecrusher() +{ + new boss_romogg_bonecrusher(); +} diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp new file mode 100644 index 00000000000..0279ee268d6 --- /dev/null +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp @@ -0,0 +1,87 @@ +/* + * Copyright (C) 2008-2013 TrinityCore <http://www.trinitycore.org/> + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License as published by the + * Free Software Foundation; either version 2 of the License, or (at your + * option) any later version. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see <http://www.gnu.org/licenses/>. + */ + +#include "ScriptMgr.h" +#include "InstanceScript.h" +#include "blackrock_caverns.h" + +class instance_blackrock_caverns : public InstanceMapScript +{ + public: + instance_blackrock_caverns(): InstanceMapScript(BCScriptName, 645) { } + + struct instance_blackrock_caverns_InstanceMapScript : public InstanceScript + { + instance_blackrock_caverns_InstanceMapScript(Map* map) : InstanceScript(map) + { + SetBossNumber(EncounterCount); + } + + void OnCreatureCreate(Creature* creature) + { + switch (creature->GetEntry()) + { + case NPC_TWILIGHT_FLAME_CALLER: + break; + default: + break; + } + } + + uint64 GetData64(uint32 type) const + { + switch (type) + { + case NPC_TWILIGHT_FLAME_CALLER: + default: + break; + } + + return 0; + } + + bool SetBossState(uint32 type, EncounterState state) + { + if (!InstanceScript::SetBossState(type, state)) + return false; + + switch (type) + { + case DATA_ROMOGG_BONECRUSHER: + case DATA_CORLA: + case DATA_KARSH_STEELBENDER: + case DATA_BEAUTY: + case DATA_ASCENDANT_LORD_OBSIDIUS: + break; + default: + break; + } + + return true; + } + }; + + InstanceScript* GetInstanceScript(InstanceMap* map) const + { + return new instance_blackrock_caverns_InstanceMapScript(map); + } +}; + +void AddSC_instance_blackrock_caverns() +{ + new instance_blackrock_caverns(); +} diff --git a/src/server/scripts/EasternKingdoms/CMakeLists.txt b/src/server/scripts/EasternKingdoms/CMakeLists.txt index 7f3ca8c6b3f..83fdf513f01 100644 --- a/src/server/scripts/EasternKingdoms/CMakeLists.txt +++ b/src/server/scripts/EasternKingdoms/CMakeLists.txt @@ -20,6 +20,14 @@ set(scripts_STAT_SRCS EasternKingdoms/BaradinHold/boss_occuthar.cpp EasternKingdoms/BaradinHold/boss_pit_lord_argaloth.cpp EasternKingdoms/BaradinHold/instance_baradin_hold.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_romogg_bonecrusher.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_corla.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_karsh_steelbender.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_beauty.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/boss_ascendant_lord_obsidius.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/instance_blackrock_caverns.cpp + EasternKingdoms/BlackrockMountain/BlackrockCaverns/blackrock_caverns.h EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_high_interrogator_gerstahn.cpp EasternKingdoms/BlackrockMountain/BlackrockDepths/boss_gorosh_the_dervish.cpp EasternKingdoms/BlackrockMountain/BlackrockDepths/blackrock_depths.cpp |
