From 2ddf2303ea566baac7cce3928718e49121b3ab5e Mon Sep 17 00:00:00 2001 From: UltraNix <80540499+UltraNix@users.noreply.github.com> Date: Sun, 27 Mar 2022 03:58:10 +0200 Subject: [PATCH] fix(Scripts/Blackwing Lair): Supression traps should not be disarmed... (#11082) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit …after Broodlord defeat. --- .../boss_broodlord_lashlayer.cpp | 27 ++++++++++++++++--- 1 file changed, 24 insertions(+), 3 deletions(-) diff --git a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp index 1152b769c..21095dd73 100644 --- a/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp +++ b/src/server/scripts/EasternKingdoms/BlackrockMountain/BlackwingLair/boss_broodlord_lashlayer.cpp @@ -51,7 +51,8 @@ enum Events enum Actions { - ACTION_DISARMED = 0 + ACTION_DEACTIVATE = 0, + ACTION_DISARMED = 1 }; class boss_broodlord : public CreatureScript @@ -75,6 +76,18 @@ public: events.ScheduleEvent(EVENT_CHECK, 1000); } + void JustDied(Unit* /*killer*/) override + { + _JustDied(); + + std::list _goList; + GetGameObjectListWithEntryInGrid(_goList, me, GO_SUPPRESSION_DEVICE, 200.0f); + for (std::list::const_iterator itr = _goList.begin(); itr != _goList.end(); itr++) + { + ((*itr)->AI()->DoAction(ACTION_DEACTIVATE)); + } + } + void UpdateAI(uint32 diff) override { if (!UpdateVictim()) @@ -183,11 +196,19 @@ class go_suppression_device : public GameObjectScript void DoAction(int32 action) override { - if (action == ACTION_DISARMED) + if (action == ACTION_DEACTIVATE) + { + _events.CancelEvent(EVENT_SUPPRESSION_RESET); + } + else if (action == ACTION_DISARMED) { Deactivate(); _events.CancelEvent(EVENT_SUPPRESSION_CAST); - _events.ScheduleEvent(EVENT_SUPPRESSION_RESET, urand(30000, 120000)); + + if (_instance->GetBossState(DATA_BROODLORD_LASHLAYER) != DONE) + { + _events.ScheduleEvent(EVENT_SUPPRESSION_RESET, urand(30000, 120000)); + } } }