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)); + } } }