diff --git a/sql/updates/world/custom/custom_2019_05_17_00_world.sql b/sql/updates/world/custom/custom_2019_05_17_00_world.sql new file mode 100644 index 0000000000..eaef1111c8 --- /dev/null +++ b/sql/updates/world/custom/custom_2019_05_17_00_world.sql @@ -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); diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h index 94546a5521..9b8c850bb4 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/blackwing_descent.h @@ -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 diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_omnotron_defense_system.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_omnotron_defense_system.cpp index be73cb806a..2fbf1a79b6 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_omnotron_defense_system.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/boss_omnotron_defense_system.cpp @@ -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(79888, 91431, 91432, 91433) #define SPELL_SOAKED_IN_POISON RAID_MODE(80011, 91504, 91505, 91506) #define SPELL_ARCANE_ANNIHILATION RAID_MODE(79710, 91540, 91541, 91542) +#define SPELL_ACTIVATED RAID_MODE(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); } diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp index 569dcba6b2..715b98a925 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingDescent/instance_blackwing_descent.cpp @@ -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;