Scripts/BWD: implement heroic mechanics for Omnotron Defense System encounter and finish implementation

This commit is contained in:
Ovahlord committed 2019-05-17 01:20:01 +02:00
1 parent 6c4d1486c3
commit 0312146ace
4 files changed
+614 -69

No files matched your search

@@ -0,0 +1,250 @@
-- Template Updates
-- Omnotron
UPDATE `creature_template` SET `flags_extra`= 130, `unit_flags`= 0x02000000, `ScriptName`= 'boss_omnotron_defense_system' WHERE `entry`= 42186;
-- Electron
UPDATE `creature_template` SET `ScriptName`= 'npc_omnotron_electron' WHERE `entry`= 42179;
UPDATE `creature_template` SET `unit_flags2`= 0, `unit_flags`= 0x02000000 | 0x80000000, `DamageModifier`= 120, `mechanic_immune_mask`= 650854271 WHERE `entry` IN (42179, 49047, 49048, 49040);
-- Magmatron
UPDATE `creature_template` SET `ScriptName`= 'npc_omnotron_magmatron' WHERE `entry`= 42178;
UPDATE `creature_template` SET `unit_flags2`= 0, `unit_flags`= 0x02000000 | 0x80000000, `DamageModifier`= 120, `mechanic_immune_mask`= 650854271 WHERE `entry` IN (42178, 49053, 49054, 49055);
-- Toxitron
UPDATE `creature_template` SET `ScriptName`= 'npc_omnotron_toxitron' WHERE `entry`= 42180;
UPDATE `creature_template` SET `unit_flags2`= 0, `unit_flags`= 0x02000000 | 0x80000000, `DamageModifier`= 120, `mechanic_immune_mask`= 650854271 WHERE `entry` IN (42180, 49050, 49051, 49052);
-- Arcanotron
UPDATE `creature_template` SET `ScriptName`= 'npc_omnotron_arcanotron' WHERE `entry`= 42166;
UPDATE `creature_template` SET `unit_flags2`= 0, `unit_flags`= 0x02000000 | 0x80000000, `DamageModifier`= 120, `mechanic_immune_mask`= 617299839 WHERE `entry` IN (42166, 49056, 49057, 49058);
-- Chemical Cloud
UPDATE `creature_template` SET `difficulty_entry_1`= 49118, `difficulty_entry_2`= 49119, `difficulty_entry_3`= 49120 WHERE `entry`= 42934;
UPDATE `creature_template` SET `minlevel`= 85, `maxlevel`= 85, `exp`= 3, `faction`= 14, `unit_flags` = 33554432, `flags_extra`= 130 WHERE `entry` IN (42934, 49118, 49119, 49120);
-- Poison Bomb
UPDATE `creature_template` SET `difficulty_entry_1`= 49121, `difficulty_entry_2`= 49122, `difficulty_entry_3`= 49123, `ScriptName`= 'npc_omnotron_poison_bomb' WHERE `entry`= 42897;
UPDATE `creature_template` SET `minlevel`= 85, `maxlevel`= 85, `exp`= 3, `faction`= 14, `baseattacktime`= 1000, `speed_run`= 0.7142 WHERE `entry` IN (42897, 49121, 49122, 49123);
-- Poison Puddle
UPDATE `creature_template` SET `unit_flags` = 33554432, `flags_extra`= 130 WHERE `entry`= 42920;
-- Power Generator
UPDATE `creature_template` SET `unit_flags` = 33554432, `flags_extra`= 130 WHERE `entry`= 42733;
-- Lord Victor Nefarius
UPDATE `creature_template` SET `unit_flags`= 33554496, `flags_extra`= 2, `ScriptName`= 'npc_lord_victor_nefarius_omnotron' WHERE `entry`= 49226;
-- Model Info
UPDATE `creature_model_info` SET `BoundingRadius`= 3.56457, `CombatReach`= 3.45 WHERE `DisplayID`= 32684;
UPDATE `creature_model_info` SET `BoundingRadius`= 3.56457, `CombatReach`= 3.45 WHERE `DisplayID`= 32685;
UPDATE `creature_model_info` SET `BoundingRadius`= 3.56457, `CombatReach`= 3.45 WHERE `DisplayID`= 32688;
UPDATE `creature_model_info` SET `BoundingRadius`= 3.56457, `CombatReach`= 3.45 WHERE `DisplayID`= 32687;
UPDATE `creature_model_info` SET `BoundingRadius`= 0.3, `CombatReach`= 1.5 WHERE `DisplayID`= 37556;
-- Texts
DELETE FROM `creature_text` WHERE `CreatureID` IN (42166, 42178, 42179, 42180, 42186, 49226);
INSERT INTO `creature_text` (`CreatureID`, `GroupID`, `ID`, `Text`, `Type`, `Language`, `Probability`, `Emote`, `Duration`, `Sound`, `BroadcastTextId`, `comment`) VALUES
-- Omnotron
(42186, 0, 0, 'Electron unit activated.', 14, 0, 100, 0, 0, 21865, 47924, 'Omnotron - Activate Electron'),
(42186, 1, 0, 'Toxitron unit activated.', 14, 0, 100, 0, 0, 21867, 47926, 'Omnotron - Activate Toxitron'),
(42186, 2, 0, 'Magmatron unit activated.', 14, 0, 100, 0, 0, 21866, 47925, 'Omnotron - Activate Magmatron'),
(42186, 3, 0, 'Arcanotron unit activated.', 14, 0, 100, 0, 0, 23378, 47927, 'Omnotron - Activate Arcanotron'),
(42186, 4, 0, 'Electron unit shield systems online.', 14, 0, 100, 0, 0, 21869, 47928, 'Omnotron - Shield Electron'),
(42186, 5, 0, 'Toxitron unit shield systems online.', 14, 0, 100, 0, 0, 21871, 47956, 'Omnotron - Shield Toxitron'),
(42186, 6, 0, 'Arcanotron unit shield systems online.', 14, 0, 100, 0, 0, 21872, 47930, 'Omnotron - Shield Arcanotron'),
(42186, 7, 0, 'Magmatron unit shield systems online.', 14, 0, 100, 0, 0, 21870, 47929, 'Omnotron - Shield Magmatron'),
(42186, 8, 0, 'Rerouting excess energy to Magmatron unit. Engage flamethrower device.', 14, 0, 100, 0, 0, 21873, 47931, 'Omnotron - Magmatron Flamethrower'),
(42186, 9, 0, 'Defense systems obliterated. Powering down...', 14, 0, 100, 0, 0, 21864, 47934, 'Omnotron - Defeat'),
-- Arcanotron
(42166, 0, 0, '|TInterface\\Icons\\spell_arcane_arcaneresilience.blp:20|t%s begins to cast|cFFFE1CF7|Hspell:79729|h [Power Conversion]!|r', 41, 0, 100, 0, 0, 0, 46354, 'Arcanotron'),
-- Magmatron
(42178, 0, 0, '|TInterface\\Icons\\ability_hunter_mastermarksman.blp:20|t%s sets his eye on |cFFFF0000$n|r and begins to cast|cFFFF0000|Hspell:79501|h [Acquiring Target]!|r', 41, 0, 100, 0, 0, 0, 46359, 'Magmatron to Player'),
-- Electron
(42179, 0, 0, '|TInterface\\Icons\\spell_shaman_staticshock.blp:20|t%s casts|cFF1CF2FE|Hspell:79888|h [Lightning Conductor]|h|r at |cFF1CF2FE$n|r!', 41, 0, 100, 0, 0, 0, 47759, 'Electron to Player'),
(42179, 1, 0, '|TInterface\\Icons\\spell_nature_lightningshield.blp:20|t%s begins to cast|cFF1CF2FE|Hspell:79900|h [Unstable Shield]!|r', 41, 0, 100, 0, 0, 0, 46355, 'Electron'),
-- Toxitron
(42180, 0, 0, '|TInterface\\Icons\\spell_nature_nullifydisease.blp:20|t%s begins to cast|cFF1CFE1C|Hspell:79835|h [Poison Soaked Shell]!|r', 41, 0, 100, 0, 0, 0, 46356, 'Toxitron'),
-- Lord Victor Nefarius
(49226, 0, 0, 'Hmm... the Omnotron Defense System. Centuries ago these constructs were considered the Dwarves\' greatest technical achievements. With so many counters to each construct\'s attacks, I\'ll have to rectify these designs for them to provide me any entertainment.', 14, 0, 100, 0, 0, 23374, 49054, 'Lord Victor Nefarius to Player'),
(49226, 1, 0, 'Lightning Conductor works much better in a crowd, yes?', 14, 0, 100, 0, 0, 23377, 49057, 'Lord Victor Nefarius to Player'),
(49226, 2, 0, 'Were you planning on using Toxitron\'s chemicals to damage the other constructs? Clever plan, let me ruin that for you.', 14, 0, 100, 0, 0, 23378, 49058, 'Lord Victor Nefarius to Toxitron'),
(49226, 3, 0, 'You would like to move away from that, wouldn\'t you? Too bad.', 14, 0, 100, 0, 0, 23375, 49055, 'Lord Victor Nefarius to Toxitron'),
(49226, 4, 0, 'Stupid Dwarves and your fascination with runes! Why would you create something that would help your enemy?', 14, 0, 100, 0, 0, 23376, 49056, 'Lord Victor Nefarius to Toxitron');
-- Spells
DELETE FROM `spell_script_names` WHERE `ScriptName` IN
('spell_omnotron_controller_recharge',
'spell_omnotron_recharging',
'spell_omnotron_activated',
'spell_omnotron_inactive',
'spell_omnotron_electrical_discharge',
'spell_omnotron_electrical_discharge_trigger',
'spell_omnotron_unstable_shield',
'spell_omnotron_aquiring_target',
'spell_omnotron_acquiring_target_periodic',
'spell_omnotron_barrier',
'spell_omnotron_shadow_infusion',
'spell_omnotron_shadow_conductor',
'spell_omnotron_overcharge',
'spell_omnotron_overcharged_power_generator');
INSERT INTO `spell_script_names` (`spell_id`, `ScriptName`) VALUES
(78696, 'spell_omnotron_controller_recharge'),
(78697, 'spell_omnotron_recharging'),
(95019, 'spell_omnotron_recharging'),
(95020, 'spell_omnotron_recharging'),
(95021, 'spell_omnotron_recharging'),
(78698, 'spell_omnotron_recharging'),
(95025, 'spell_omnotron_recharging'),
(95026, 'spell_omnotron_recharging'),
(95027, 'spell_omnotron_recharging'),
(78700, 'spell_omnotron_recharging'),
(95022, 'spell_omnotron_recharging'),
(95023, 'spell_omnotron_recharging'),
(95024, 'spell_omnotron_recharging'),
(78699, 'spell_omnotron_recharging'),
(95028, 'spell_omnotron_recharging'),
(95029, 'spell_omnotron_recharging'),
(95030, 'spell_omnotron_recharging'),
(78740, 'spell_omnotron_activated'),
(95016, 'spell_omnotron_activated'),
(95017, 'spell_omnotron_activated'),
(95018, 'spell_omnotron_activated'),
(78726, 'spell_omnotron_inactive'),
(79879, 'spell_omnotron_electrical_discharge'),
(91465, 'spell_omnotron_electrical_discharge'),
(91466, 'spell_omnotron_electrical_discharge'),
(91467, 'spell_omnotron_electrical_discharge'),
(95499, 'spell_omnotron_electrical_discharge_trigger'),
(79900, 'spell_omnotron_unstable_shield'),
(91447, 'spell_omnotron_unstable_shield'),
(91448, 'spell_omnotron_unstable_shield'),
(91449, 'spell_omnotron_unstable_shield'),
(79499, 'spell_omnotron_aquiring_target'),
(79501, 'spell_omnotron_acquiring_target_periodic'),
(92035, 'spell_omnotron_acquiring_target_periodic'),
(92036, 'spell_omnotron_acquiring_target_periodic'),
(92037, 'spell_omnotron_acquiring_target_periodic'),
(79582, 'spell_omnotron_barrier'),
(91516, 'spell_omnotron_barrier'),
(91517, 'spell_omnotron_barrier'),
(91518, 'spell_omnotron_barrier'),
(92050, 'spell_omnotron_shadow_infusion'),
(92051, 'spell_omnotron_shadow_conductor'),
(92135, 'spell_omnotron_shadow_conductor'),
(91881, 'spell_omnotron_overcharge'),
(91857, 'spell_omnotron_overcharged_power_generator');
-- Conditions
DELETE FROM `conditions` WHERE `SourceEntry` IN (79920, 78696, 78697, 95019, 95020, 95021, 78698, 95025, 95026, 95027, 78699, 78700, 95022, 95023, 95024, 95028, 95029, 95030, 80164, 91478, 91479, 91480, 91823, 91881) AND `SourceTypeOrReferenceId`= 13;
INSERT INTO `conditions` (`SourceTypeOrReferenceId`, `SourceGroup`, `SourceEntry`, `SourceId`, `ElseGroup`, `ConditionTypeOrReference`, `ConditionTarget`, `ConditionValue1`, `ConditionValue2`, `ConditionValue3`, `NegativeCondition`, `ErrorType`, `ScriptName`, `Comment`) VALUES
(13, 1, 79920, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Shared Health - Target Electron'),
(13, 1, 79920, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Shared Health - Target Magmatron'),
(13, 1, 79920, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Shared Health - Target Toxitron'),
(13, 1, 79920, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Shared Health - Target Arcanotron'),
(13, 1, 78696, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Controller Recharge - Target Electron'),
(13, 1, 78696, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Controller Recharge - Target Magmatron'),
(13, 1, 78696, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Controller Recharge - Target Toxitron'),
(13, 1, 78696, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Controller Recharge - Target Arcanotron'),
(13, 1, 78697, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Recharging - Target Electron'),
(13, 1, 95019, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Recharging - Target Electron'),
(13, 1, 95020, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Recharging - Target Electron'),
(13, 1, 95021, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Recharging - Target Electron'),
(13, 1, 78698, 0, 0, 31, 0, 3, 42178, 0, 0, 0, '', 'Recharging - Target Magmatron'),
(13, 1, 95025, 0, 0, 31, 0, 3, 42178, 0, 0, 0, '', 'Recharging - Target Magmatron'),
(13, 1, 95026, 0, 0, 31, 0, 3, 42178, 0, 0, 0, '', 'Recharging - Target Magmatron'),
(13, 1, 95027, 0, 0, 31, 0, 3, 42178, 0, 0, 0, '', 'Recharging - Target Magmatron'),
(13, 1, 78700, 0, 0, 31, 0, 3, 42180, 0, 0, 0, '', 'Recharging - Target Toxitron'),
(13, 1, 95022, 0, 0, 31, 0, 3, 42180, 0, 0, 0, '', 'Recharging - Target Toxitron'),
(13, 1, 95023, 0, 0, 31, 0, 3, 42180, 0, 0, 0, '', 'Recharging - Target Toxitron'),
(13, 1, 95024, 0, 0, 31, 0, 3, 42180, 0, 0, 0, '', 'Recharging - Target Toxitron'),
(13, 1, 78699, 0, 0, 31, 0, 3, 42166, 0, 0, 0, '', 'Recharging - Target Arcanotron'),
(13, 1, 95028, 0, 0, 31, 0, 3, 42166, 0, 0, 0, '', 'Recharging - Target Arcanotron'),
(13, 1, 95029, 0, 0, 31, 0, 3, 42166, 0, 0, 0, '', 'Recharging - Target Arcanotron'),
(13, 1, 95030, 0, 0, 31, 0, 3, 42166, 0, 0, 0, '', 'Recharging - Target Arcanotron'),
(13, 1, 80164, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Chemical Cloud - Target Electron'),
(13, 1, 80164, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Chemical Cloud - Target Magmatron'),
(13, 1, 80164, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Chemical Cloud - Target Toxitron'),
(13, 1, 80164, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Chemical Cloud - Target Arcanotron'),
(13, 1, 91478, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Chemical Cloud - Target Electron'),
(13, 1, 91478, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Chemical Cloud - Target Magmatron'),
(13, 1, 91478, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Chemical Cloud - Target Toxitron'),
(13, 1, 91478, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Chemical Cloud - Target Arcanotron'),
(13, 1, 91479, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Chemical Cloud - Target Electron'),
(13, 1, 91479, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Chemical Cloud - Target Magmatron'),
(13, 1, 91479, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Chemical Cloud - Target Toxitron'),
(13, 1, 91479, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Chemical Cloud - Target Arcanotron'),
(13, 1, 91480, 0, 0, 31, 0, 3, 42179, 0, 0, 0, '', 'Chemical Cloud - Target Electron'),
(13, 1, 91480, 0, 1, 31, 0, 3, 42178, 0, 0, 0, '', 'Chemical Cloud - Target Magmatron'),
(13, 1, 91480, 0, 2, 31, 0, 3, 42180, 0, 0, 0, '', 'Chemical Cloud - Target Toxitron'),
(13, 1, 91480, 0, 3, 31, 0, 3, 42166, 0, 0, 0, '', 'Chemical Cloud - Target Arcanotron'),
(13, 1, 91823, 0, 3, 31, 0, 3, 42934, 0, 0, 0, '', 'Shadow Teleport - Target Chemical Cloud'),
(13, 1, 91881, 0, 3, 31, 0, 3, 42733, 0, 0, 0, '', 'Overcharge - Target Power Generator');
-- Procs
DELETE FROM `spell_proc` WHERE `SpellId` IN (79900, 91447, 91448, 91449, 79835, 91501, 91502, 91503, 80086);
INSERT INTO `spell_proc` (`SpellId`, `SpellFamilyName`, `SpellFamilyMask0`, `SpellFamilyMask1`, `SpellFamilyMask2`, `ProcFlags`, `SpellTypeMask`, `SpellPhaseMask`, `HitMask`, `AttributesMask`, `Chance`) VALUES
(79900, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91447, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91448, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91449, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(79835, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91501, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91502, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(91503, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0),
(80086, 0, 0, 0, 0, 0, 0, 0, 12287, 0, 0);
-- Summon Groups
DELETE FROM `creature_summon_groups` WHERE `summonerId`= 42186 AND `summonerType`= 0;
INSERT INTO `creature_summon_groups` (`summonerId`, `summonerType`, `groupId`, `entry`, `position_x`, `position_y`, `position_z`, `orientation`, `summonType`, `summonTime`) VALUES
(42186, 0, 0, 42179, -342.519, -405.134, 214.0583, 0.9424778, 8, 0),
(42186, 0, 0, 42178, -308.807, -405.278, 214.0873, 2.111848, 8, 0),
(42186, 0, 0, 42180, -333.632, -411.866, 214.1353, 1.291544, 8, 0),
(42186, 0, 0, 42166, -315.415, -412.474, 214.0963, 1.832596, 8, 0);
-- Waypoints
DELETE FROM `waypoint_data` WHERE `id`= 4218600;
INSERT INTO `waypoint_data`(`id`, `point`, `position_x`, `position_y`, `position_z`) VALUES
(4218600, 1, -309.7726, -392.9861, 213.9485),
(4218600, 2, -324.7795, -399.0781, 213.8248),
(4218600, 3, -342.2674, -392.6615, 213.9369),
(4218600, 4, -324.7795, -399.0781, 213.8248);
-- Addons
DELETE FROM `creature_template_addon` WHERE `entry` IN (42179, 42178, 42180, 42166, 42934, 42920, 42897, 42733, 49047, 49048, 49053, 49054, 49050, 49051, 49052, 49055, 49056, 49057, 49058, 49049, 49118, 49119, 49120, 49121, 49122, 49123, 49226);
INSERT INTO `creature_template_addon` (`entry`, `bytes1`, `bytes2`, `auras`) VALUES
-- Golems
(42179, 0, 1, '78726 82265 78725 73059'),
(42178, 0, 1, '78726 82265 78725 73059'),
(42180, 0, 1, '78726 82265 78725 73059'),
(42166, 0, 1, '78726 82265 78725 73059'),
(49047, 0, 1, '78726 82265 78725 73059'),
(49048, 0, 1, '78726 82265 78725 73059'),
(49049, 0, 1, '78726 82265 78725 73059'),
(49053, 0, 1, '78726 82265 78725 73059'),
(49054, 0, 1, '78726 82265 78725 73059'),
(49055, 0, 1, '78726 82265 78725 73059'),
(49050, 0, 1, '78726 82265 78725 73059'),
(49051, 0, 1, '78726 82265 78725 73059'),
(49052, 0, 1, '78726 82265 78725 73059'),
(49056, 0, 1, '78726 82265 78725 73059'),
(49057, 0, 1, '78726 82265 78725 73059'),
(49058, 0, 1, '78726 82265 78725 73059'),
-- Chemical Cloud
(42934, 0, 1, '80162 80163'),
(49118, 0, 1, '80162 80163'),
(49119, 0, 1, '80162 80163'),
(49120, 0, 1, '80162 80163'),
-- Poison Puddle
(42920, 0, 1, '80095'),
-- Poison Bomb
(42897, 0, 1, '80086'),
(49121, 0, 1, '80086'),
(49122, 0, 1, '80086'),
(49123, 0, 1, '80086'),
-- Power Generator
(42733, 0, 1, '79628'),
-- Lord Victor Nefarius
(49226, 0, 1, '78494');
-- Spell target positions
DELETE FROM `spell_target_position` WHERE `ID`= 91854;
INSERT INTO `spell_target_position` (`ID`, `EffectIndex`, `MapID`, `PositionX`, `PositionY`, `PositionZ`, `Orientation`) VALUES
(91854, 0, 669, -302.386, -350.7, 220.482, 4.509913);
-- Delete encounter related creature
DELETE FROM `creature` WHERE `guid` IN (250043, 250044, 250045, 250046);
DELETE FROM `creature_addon` WHERE `guid` IN (250043, 250044, 250045, 250046);
@@ -44,44 +44,46 @@ enum BWDDataTypes
DATA_ELECTRON,
DATA_MAGMATRON,
DATA_TOXITRON,
DATA_ARCANOTRON,
DATA_ARCANOTRON,
DATA_LORD_VICTOR_NEFARIUS_OMNOTRON
};
enum BWDCreatureIds
{
// Bosses
BOSS_MAGMAW = 41570,
BOSS_OMNOTRON = 42186,
BOSS_CHIMAERON = 43296,
BOSS_ATRAMEDES = 41442,
BOSS_MALORIAK = 41378,
BOSS_NEFARIAN = 41376,
BOSS_MAGMAW = 41570,
BOSS_OMNOTRON = 42186,
BOSS_CHIMAERON = 43296,
BOSS_ATRAMEDES = 41442,
BOSS_MALORIAK = 41378,
BOSS_NEFARIAN = 41376,
// Encounter related creatures
/*Magmaw*/
NPC_MAGMAWS_PINCER_1 = 41620,
NPC_MAGMAWS_PINCER_2 = 41789,
NPC_EXPOSED_HEAD_OF_MAGMAW = 42347,
NPC_EXPOSED_HEAD_OF_MAGMAW_2 = 48270,
NPC_PILLAR_OF_FLAME = 41843,
NPC_LAVA_PARASITE_1 = 41806,
NPC_LAVA_PARASITE_2 = 42321,
NPC_MASSIVE_CRASH = 47330,
NPC_ROOM_STALKER = 47196,
NPC_MAGMAW_SPIKE_STALKER = 41767,
NPC_NEFARIAN_MAGMAW = 49427,
NPC_BLAZING_BONE_CONSTRUCT = 49416,
NPC_IGNITION = 49447,
NPC_MAGMAWS_PINCER_1 = 41620,
NPC_MAGMAWS_PINCER_2 = 41789,
NPC_EXPOSED_HEAD_OF_MAGMAW = 42347,
NPC_EXPOSED_HEAD_OF_MAGMAW_2 = 48270,
NPC_PILLAR_OF_FLAME = 41843,
NPC_LAVA_PARASITE_1 = 41806,
NPC_LAVA_PARASITE_2 = 42321,
NPC_MASSIVE_CRASH = 47330,
NPC_ROOM_STALKER = 47196,
NPC_MAGMAW_SPIKE_STALKER = 41767,
NPC_NEFARIAN_MAGMAW = 49427,
NPC_BLAZING_BONE_CONSTRUCT = 49416,
NPC_IGNITION = 49447,
/*Omnotron Defense System*/
NPC_MAGMATRON = 42178,
NPC_ARCANOTRON = 42166,
NPC_TOXITRON = 42180,
NPC_ELECTRON = 42179,
NPC_CHEMICAL_CLOUD = 42934,
NPC_POISON_BOMB = 42897,
NPC_POISON_PUDDLE = 42920,
NPC_POWER_GENERATOR = 42733,
NPC_MAGMATRON = 42178,
NPC_ARCANOTRON = 42166,
NPC_TOXITRON = 42180,
NPC_ELECTRON = 42179,
NPC_CHEMICAL_CLOUD = 42934,
NPC_POISON_BOMB = 42897,
NPC_POISON_PUDDLE = 42920,
NPC_POWER_GENERATOR = 42733,
NPC_LORD_VICTOR_NEFARIUS_OMNOTRON = 49226
};
enum BWDGameObjectIds
@@ -20,7 +20,9 @@
#include "ScriptedCreature.h"
#include "SpellScript.h"
#include "SpellAuraEffects.h"
#include "PassiveAI.h"
#include "Player.h"
#include "SpellMgr.h"
#include "blackwing_descent.h"
enum Spells
@@ -36,7 +38,6 @@ enum Spells
SPELL_INACTIVE = 78726,
SPELL_POWERED_DOWN = 82265,
SPELL_SHARED_HEALTH = 79920,
SPELL_ACTIVATED = 78740,
SPELL_SHUTTING_DOWN = 78746,
SPELL_INVISIBILITY_AND_STEALTH_DETECTION = 67236,
@@ -65,31 +66,53 @@ enum Spells
SPELL_FIXATE_DUMMY = 80094,
SPELL_QUIETE_SUICIDE = 3617,
SPELL_POISON_BOMB_DAMAGE = 80092,
SPELL_POISON_BOMB_SUMMON_PUDDLE = 80089
SPELL_POISON_BOMB_SUMMON_PUDDLE = 80089,
// Power Generator
SPELL_OVERCHARGED_POWER_GENERATOR = 91857,
SPELL_GROW_STACKER = 91861,
SPELL_ARCANE_BLOWBACK = 91880,
SPELL_POWER_GENERATOR_NORMAL = 79628,
// Lord Victor Nefarius
SPELL_SHADOW_INFUSION = 92048,
SPELL_SHADOW_TELEPORT = 91823,
SPELL_SHADOW_TELEPORT_BACK = 91854,
SPELL_GRIP_OF_DEATH = 91849,
SPELL_SHADOW_CONDUCTOR = 92053,
SPELL_ENCASING_SHADOWS = 92023,
SPELL_OVERCHARGE = 91881
};
#define SPELL_LIGHTNING_CONDUCTOR RAID_MODE<uint32>(79888, 91431, 91432, 91433)
#define SPELL_SOAKED_IN_POISON RAID_MODE<uint32>(80011, 91504, 91505, 91506)
#define SPELL_ARCANE_ANNIHILATION RAID_MODE<uint32>(79710, 91540, 91541, 91542)
#define SPELL_ACTIVATED RAID_MODE<uint32>(78740, 95016, 95017, 95018)
enum Texts
{
// Omnotron
SAY_ACTIVATE_ELECTRON = 0,
SAY_ACTIVATE_TOXITRON = 1,
SAY_ACTIVATE_MAGMATRON = 2,
SAY_ACTIVATE_ARCANOTRON = 3,
SAY_SHIELD_ELECTRON = 4,
SAY_SHIELD_TOXITRON = 5,
SAY_SHIELD_ARCANOTRON = 6,
SAY_SHIELD_MAGMATRON = 7,
SAY_ACQUIRING_TARGET = 8,
SAY_POWERING_DOWN = 9,
SAY_ACTIVATE_ELECTRON = 0,
SAY_ACTIVATE_TOXITRON = 1,
SAY_ACTIVATE_MAGMATRON = 2,
SAY_ACTIVATE_ARCANOTRON = 3,
SAY_SHIELD_ELECTRON = 4,
SAY_SHIELD_TOXITRON = 5,
SAY_SHIELD_ARCANOTRON = 6,
SAY_SHIELD_MAGMATRON = 7,
SAY_ACQUIRING_TARGET = 8,
SAY_POWERING_DOWN = 9,
// Omnotron Defense System
SAY_ANNOUNCE_ABILITY_1 = 0,
SAY_ANNOUNCE_ABILITY_2 = 1,
SAY_ANNOUNCE_ABILITY_1 = 0,
SAY_ANNOUNCE_ABILITY_2 = 1,
// Lord Victor Nefarius
SAY_INTRO_HEROIC = 0,
SAY_MANIPULATE_LIGHTNING_CONDUCTOR = 1,
SAY_PULL_INTO_CHEMICAL_CLOUD = 2,
SAY_ROOT_PLAYER_IN_PLACE = 3,
SAY_OVERCHARGE_POWER_GENERATOR = 4
};
enum Events
@@ -119,30 +142,48 @@ enum Events
// Arcanotron
EVENT_POWER_GENERATOR,
EVENT_ARCANE_ANNIHILATION,
EVENT_POWER_CONVERSION
EVENT_POWER_CONVERSION,
// Lord Victor Nefarius
EVENT_TALK_INTRO,
EVENT_TELEPORT_INTO_CHEMICAL_CLOUD,
EVENT_GRIP_OF_DEATH,
EVENT_TALK_PULL_PLAYERS_INTO_CHEMICAL_CLOUD,
EVENT_TELEPORT_BACK,
EVENT_TALK_MANIPULATE_LIGHTNING_CONDUCTOR,
EVENT_ENCASING_SHADOWS,
EVENT_TALK_ROOT_PLAYER,
EVENT_OVERCHARGE,
EVENT_TALK_OVERCHARGE_POWER_GENERATOR
};
enum Actions
{
// Omnotron
ACTION_GOLEM_ACTIVATED = 0,
ACTION_START_ENCOUNTER = 1,
ACTION_STOP_ENCOUNTER = 2,
ACTION_FINISH_ENCOUNTER = 3,
ACTION_SAY_ACQUIRING_TARGET = 4,
ACTION_GOLEM_ACTIVATED = 0,
ACTION_START_ENCOUNTER = 1,
ACTION_STOP_ENCOUNTER = 2,
ACTION_FINISH_ENCOUNTER = 3,
ACTION_SAY_ACQUIRING_TARGET = 4,
// Omnotron Defense System
ACTION_ACTIVATE_GOLEM = 0,
ACTION_DEACTIVATE_GOLEM = 1
ACTION_ACTIVATE_GOLEM = 0,
ACTION_DEACTIVATE_GOLEM = 1,
// Lord Victor Nefarius
ACTION_CAST_SHADOW_INFUSION = 0,
ACTION_CAST_ENCASING_SHADOWS = 1
};
enum Data
{
// Omnotron
DATA_NEXT_GOLEM_IN_QUEUE = 0,
DATA_SAY_GOLEM_SHIELD = 0
DATA_SAY_GOLEM_SHIELD = 0,
};
Position const FirstGolemPatrolStartPoint = { -324.665f, -398.085f, 213.8214f };
Position const FirstGolemPatrolStartPoint = { -324.665f, -398.085f, 213.8214f };
Position const LordVictorNefariusSummonPosition = { -302.9167f, -350.4167f, 220.5673f, 4.537856f };
enum MovePoints
{
@@ -256,6 +297,8 @@ struct boss_omnotron_defense_system : public BossAI
break;
case ACTION_START_ENCOUNTER:
instance->SetBossState(DATA_OMNOTRON_DEFENSE_SYSTEM, IN_PROGRESS);
if (IsHeroic())
DoSummon(NPC_LORD_VICTOR_NEFARIUS_OMNOTRON, LordVictorNefariusSummonPosition, 0, TEMPSUMMON_MANUAL_DESPAWN);
for (ObjectGuid guid : _golemGuidVector)
if (Creature* golem = ObjectAccessor::GetCreature(*me, guid))
@@ -287,6 +330,7 @@ struct boss_omnotron_defense_system : public BossAI
for (ObjectGuid guid : _golemGuidVector)
if (Creature* golem = ObjectAccessor::GetCreature(*me, guid))
instance->SendEncounterUnit(ENCOUNTER_FRAME_DISENGAGE, golem);
RemoveDebuffsFromRaid();
}
break;
@@ -343,6 +387,7 @@ private:
{
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_LIGHTNING_CONDUCTOR);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SOAKED_IN_POISON);
instance->DoRemoveAurasDueToSpellOnPlayers(SPELL_SHADOW_CONDUCTOR);
}
};
@@ -356,7 +401,6 @@ struct npc_omnotron_electron : public ScriptedAI
void Initialize()
{
me->SetReactState(REACT_PASSIVE);
me->SetNoCallAssistance(true);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -427,7 +471,7 @@ struct npc_omnotron_electron : public ScriptedAI
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_ACTIVATED)
{
@@ -437,6 +481,14 @@ struct npc_omnotron_electron : public ScriptedAI
}
}
void SpellHitTarget(Unit* /*target*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_LIGHTNING_CONDUCTOR)
if (IsHeroic())
if (Creature* nefarius = _instance->GetCreature(DATA_LORD_VICTOR_NEFARIUS_OMNOTRON))
nefarius->AI()->DoAction(ACTION_CAST_SHADOW_INFUSION);
}
void UpdateAI(uint32 diff) override
{
if (!UpdateVictim())
@@ -492,7 +544,6 @@ struct npc_omnotron_magmatron : public ScriptedAI
void Initialize()
{
me->SetReactState(REACT_PASSIVE);
me->SetNoCallAssistance(true);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -563,7 +614,7 @@ struct npc_omnotron_magmatron : public ScriptedAI
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_ACTIVATED)
{
@@ -580,6 +631,9 @@ struct npc_omnotron_magmatron : public ScriptedAI
Talk(SAY_ANNOUNCE_ABILITY_1, target);
if (Creature* omnotron = _instance->GetCreature(DATA_OMNOTRON_DEFENSE_SYSTEM))
omnotron->AI()->DoAction(ACTION_SAY_ACQUIRING_TARGET);
if (Creature* nefarius = _instance->GetCreature(DATA_LORD_VICTOR_NEFARIUS_OMNOTRON))
nefarius->AI()->DoAction(ACTION_CAST_ENCASING_SHADOWS);
}
}
@@ -633,7 +687,6 @@ struct npc_omnotron_toxitron : public ScriptedAI
void Initialize()
{
me->SetReactState(REACT_PASSIVE);
me->SetNoCallAssistance(true);
}
void JustEngagedWith(Unit* /*who*/) override
@@ -704,7 +757,7 @@ struct npc_omnotron_toxitron : public ScriptedAI
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_ACTIVATED)
{
@@ -766,7 +819,6 @@ struct npc_omnotron_arcanotron : public ScriptedAI
void Initialize()
{
me->SetReactState(REACT_PASSIVE);
me->SetNoCallAssistance(true);
me->MakeInterruptable(false);
}
@@ -839,7 +891,7 @@ struct npc_omnotron_arcanotron : public ScriptedAI
}
}
void SpellHit(Unit* /*caster*/, SpellInfo const* spell)
void SpellHit(Unit* /*caster*/, SpellInfo const* spell) override
{
if (spell->Id == SPELL_ACTIVATED)
{
@@ -909,6 +961,137 @@ private:
InstanceScript* _instance;
};
struct npc_lord_victor_nefarius_omnotron : public PassiveAI
{
npc_lord_victor_nefarius_omnotron(Creature* creature) : PassiveAI(creature), _instance(me->GetInstanceScript()) { }
void IsSummonedBy(Unit* /*summoner*/) override
{
_events.ScheduleEvent(EVENT_TALK_INTRO, 4s + 700ms);
}
void JustSummoned(Creature* summon) override
{
if (summon->GetEntry() != NPC_POWER_GENERATOR && summon->GetEntry() != NPC_CHEMICAL_CLOUD)
return;
TempSummon* summoned = summon->ToTempSummon();
if (!summoned)
return;
// Lord Victor Nefarius only manipulates the abilities of longest active golem at a time
if (IsPreferedGolem(summoned->GetSummonerGUID()))
{
switch (summon->GetEntry())
{
case NPC_CHEMICAL_CLOUD:
_events.ScheduleEvent(EVENT_TELEPORT_INTO_CHEMICAL_CLOUD, 2s);
break;
case NPC_POWER_GENERATOR:
_events.ScheduleEvent(EVENT_OVERCHARGE, 10s);
break;
default:
break;
}
}
}
void DoAction(int32 action) override
{
switch (action)
{
case ACTION_CAST_SHADOW_INFUSION:
if (Creature* electron = _instance->GetCreature(DATA_ELECTRON))
{
if (IsPreferedGolem(electron->GetGUID()))
{
DoCastAOE(SPELL_SHADOW_INFUSION);
_events.ScheduleEvent(EVENT_TALK_MANIPULATE_LIGHTNING_CONDUCTOR, 6s);
}
}
break;
case ACTION_CAST_ENCASING_SHADOWS:
if (Creature* magmatron = _instance->GetCreature(DATA_MAGMATRON))
if (IsPreferedGolem(magmatron->GetGUID()))
_events.ScheduleEvent(EVENT_ENCASING_SHADOWS, 300ms);
break;
default:
break;
}
}
void UpdateAI(uint32 diff) override
{
_events.Update(diff);
while (uint32 eventId = _events.ExecuteEvent())
{
switch (eventId)
{
case EVENT_TALK_INTRO:
Talk(SAY_INTRO_HEROIC);
break;
case EVENT_TELEPORT_INTO_CHEMICAL_CLOUD:
DoCastSelf(SPELL_SHADOW_TELEPORT);
_events.ScheduleEvent(EVENT_GRIP_OF_DEATH, 100ms);
break;
case EVENT_GRIP_OF_DEATH:
DoCastAOE(SPELL_GRIP_OF_DEATH);
_events.ScheduleEvent(EVENT_TALK_PULL_PLAYERS_INTO_CHEMICAL_CLOUD, 2s);
break;
case EVENT_TALK_PULL_PLAYERS_INTO_CHEMICAL_CLOUD:
Talk(SAY_PULL_INTO_CHEMICAL_CLOUD);
_events.ScheduleEvent(EVENT_TELEPORT_BACK, 1s + 300ms);
break;
case EVENT_TELEPORT_BACK:
DoCastSelf(SPELL_SHADOW_TELEPORT_BACK);
break;
case EVENT_TALK_MANIPULATE_LIGHTNING_CONDUCTOR:
Talk(SAY_MANIPULATE_LIGHTNING_CONDUCTOR);
break;
case EVENT_ENCASING_SHADOWS:
DoCastAOE(SPELL_ENCASING_SHADOWS);
_events.ScheduleEvent(EVENT_TALK_ROOT_PLAYER, 5s);
break;
case EVENT_TALK_ROOT_PLAYER:
Talk(SAY_ROOT_PLAYER_IN_PLACE);
break;
case EVENT_OVERCHARGE:
DoCastAOE(SPELL_OVERCHARGE);
_events.ScheduleEvent(EVENT_TALK_OVERCHARGE_POWER_GENERATOR, 5s + 400ms);
break;
case EVENT_TALK_OVERCHARGE_POWER_GENERATOR:
Talk(SAY_OVERCHARGE_POWER_GENERATOR);
break;
default:
break;
}
}
}
private:
EventMap _events;
InstanceScript* _instance;
bool IsPreferedGolem(ObjectGuid guid) const
{
Unit* preferedGolem = nullptr;
for (uint8 i = DATA_ELECTRON; i < DATA_ELECTRON + 4; i++)
{
if (Creature* golem = _instance->GetCreature(i))
if (!golem->HasAura(SPELL_INACTIVE))
if (!preferedGolem || golem->GetPower(POWER_ENERGY) && golem->GetPower(POWER_ENERGY) <= preferedGolem->GetPower(POWER_ENERGY))
preferedGolem = golem;
}
if (preferedGolem && preferedGolem->GetGUID() == guid)
return true;
return false;
}
};
class DistanceCheck
{
public:
@@ -1275,6 +1458,107 @@ class spell_omnotron_barrier : public AuraScript
}
};
class spell_omnotron_shadow_infusion : public SpellScript
{
PrepareSpellScript(spell_omnotron_shadow_infusion);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo({ SPELL_SHADOW_CONDUCTOR });
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
GetHitUnit()->CastSpell(GetHitUnit(), SPELL_SHADOW_CONDUCTOR, true);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_omnotron_shadow_infusion::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
class spell_omnotron_shadow_conductor : public SpellScript
{
PrepareSpellScript(spell_omnotron_shadow_conductor);
void ChangeDamage(SpellEffIndex /*effIndex*/)
{
Unit* caster = GetCaster();
Unit* target = GetHitUnit();
if (!caster || !target)
return;
float distanceMultiplier = std::max(caster->GetExactDist2d(target) * 0.5f, 1.0f);
SetHitDamage(int32(6000 * distanceMultiplier));
}
void Register() override
{
OnEffectLaunchTarget += SpellEffectFn(spell_omnotron_shadow_conductor::ChangeDamage, EFFECT_0, SPELL_EFFECT_SCHOOL_DAMAGE);
}
};
class spell_omnotron_overcharge : public SpellScript
{
PrepareSpellScript(spell_omnotron_overcharge);
bool Validate(SpellInfo const* /*spellInfo*/) override
{
return ValidateSpellInfo(
{
SPELL_POWER_GENERATOR_NORMAL,
SPELL_OVERCHARGED_POWER_GENERATOR,
SPELL_GROW_STACKER,
SPELL_ARCANE_BLOWBACK
});
}
void HandleScriptEffect(SpellEffIndex /*effIndex*/)
{
Creature* target = GetHitCreature();
if (!target)
return;
target->RemoveAurasDueToSpell(sSpellMgr->GetSpellIdForDifficulty(SPELL_POWER_GENERATOR_NORMAL, target));
target->CastSpell(target, SPELL_OVERCHARGED_POWER_GENERATOR, true);
target->CastSpell(target, SPELL_GROW_STACKER);
target->m_Events.AddEventAtOffset([target]()
{
target->RemoveAllAuras();
target->CastSpell(target, SPELL_ARCANE_BLOWBACK);
target->DespawnOrUnsummon(1s);
}, 8s);
}
void Register() override
{
OnEffectHitTarget += SpellEffectFn(spell_omnotron_overcharge::HandleScriptEffect, EFFECT_0, SPELL_EFFECT_SCRIPT_EFFECT);
}
};
class spell_omnotron_overcharged_power_generator : public AuraScript
{
PrepareAuraScript(spell_omnotron_overcharged_power_generator);
void HandlePeriodic(AuraEffect const* aurEff)
{
PreventDefaultAction();
if (Unit* target = GetTarget())
{
uint32 triggerSpell = GetSpellInfo()->Effects[EFFECT_0].TriggerSpell;
int32 radius = target->GetObjectScale() * 10000;
target->CastCustomSpell(triggerSpell, SPELLVALUE_RADIUS_MOD, radius, nullptr, true, nullptr, aurEff, target->GetGUID());
}
}
void Register() override
{
OnEffectPeriodic += AuraEffectPeriodicFn(spell_omnotron_overcharged_power_generator::HandlePeriodic, EFFECT_0, SPELL_AURA_PERIODIC_TRIGGER_SPELL);
}
};
void AddSC_boss_omnotron_defense_system()
{
RegisterBlackwingDescentCreatureAI(boss_omnotron_defense_system);
@@ -1282,6 +1566,7 @@ void AddSC_boss_omnotron_defense_system()
RegisterBlackwingDescentCreatureAI(npc_omnotron_magmatron);
RegisterBlackwingDescentCreatureAI(npc_omnotron_toxitron);
RegisterBlackwingDescentCreatureAI(npc_omnotron_arcanotron);
RegisterBlackwingDescentCreatureAI(npc_lord_victor_nefarius_omnotron);
RegisterBlackwingDescentCreatureAI(npc_omnotron_poison_bomb);
RegisterSpellScript(spell_omnotron_controller_recharge);
RegisterAuraScript(spell_omnotron_recharging);
@@ -1293,4 +1578,8 @@ void AddSC_boss_omnotron_defense_system()
RegisterSpellScript(spell_omnotron_aquiring_target);
RegisterAuraScript(spell_omnotron_acquiring_target_periodic);
RegisterAuraScript(spell_omnotron_barrier);
RegisterSpellScript(spell_omnotron_shadow_infusion);
RegisterSpellScript(spell_omnotron_shadow_conductor);
RegisterSpellScript(spell_omnotron_overcharge);
RegisterAuraScript(spell_omnotron_overcharged_power_generator);
}
@@ -23,14 +23,15 @@
ObjectData const creatureData[] =
{
{ BOSS_MAGMAW, DATA_MAGMAW },
{ BOSS_OMNOTRON, DATA_OMNOTRON_DEFENSE_SYSTEM },
{ NPC_ELECTRON, DATA_ELECTRON },
{ NPC_MAGMATRON, DATA_MAGMATRON },
{ NPC_TOXITRON, DATA_TOXITRON },
{ NPC_ARCANOTRON, DATA_ARCANOTRON },
{ NPC_NEFARIAN_MAGMAW, DATA_NEFARIAN_MAGMAW },
{ 0, 0 } // END
{ BOSS_MAGMAW, DATA_MAGMAW },
{ BOSS_OMNOTRON, DATA_OMNOTRON_DEFENSE_SYSTEM },
{ NPC_ELECTRON, DATA_ELECTRON },
{ NPC_MAGMATRON, DATA_MAGMATRON },
{ NPC_TOXITRON, DATA_TOXITRON },
{ NPC_ARCANOTRON, DATA_ARCANOTRON },
{ NPC_NEFARIAN_MAGMAW, DATA_NEFARIAN_MAGMAW },
{ NPC_LORD_VICTOR_NEFARIUS_OMNOTRON, DATA_LORD_VICTOR_NEFARIUS_OMNOTRON },
{ 0, 0 } // END
};
ObjectData const gameobjectData[] =
@@ -102,6 +103,9 @@ class instance_blackwing_descent : public InstanceMapScript
case NPC_POWER_GENERATOR:
if (Creature* omnotron = GetCreature(DATA_OMNOTRON_DEFENSE_SYSTEM))
omnotron->AI()->JustSummoned(creature);
if (Creature* nefarius = GetCreature(DATA_LORD_VICTOR_NEFARIUS_OMNOTRON))
nefarius->AI()->JustSummoned(creature);
break;
default:
break;