diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/violet_hold.cpp | 23 |
1 files changed, 15 insertions, 8 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 2ad0bf636aa..9ca70a97cc9 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -831,7 +831,8 @@ struct violet_hold_trashAI : public EscortAI void Reset() override { - _scheduler.CancelAll(); + if (!me->HasReactState(REACT_DEFENSIVE)) + _scheduler.CancelAll(); } template <size_t N> @@ -894,11 +895,23 @@ struct violet_hold_trashAI : public EscortAI void WaypointReached(uint32 waypointId, uint32 /*pathId*/) override { if (waypointId == _lastWaypointId) - CreatureStartAttackDoor(); + { + me->SetReactState(REACT_DEFENSIVE); + DoCastAOE(SPELL_DESTROY_DOOR_SEAL); + _scheduler.Schedule(Seconds(2), [this](TaskContext destroyDoorCheck) + { + if (!me->HasAura(SPELL_DESTROY_DOOR_SEAL)) + DoCastAOE(SPELL_DESTROY_DOOR_SEAL); + destroyDoorCheck.Repeat(); + }); + } } void JustEngagedWith(Unit* who) override { + if (me->HasReactState(REACT_DEFENSIVE)) + return; + EscortAI::JustEngagedWith(who); ScheduledTasks(); } @@ -917,12 +930,6 @@ struct violet_hold_trashAI : public EscortAI virtual void ScheduledTasks() { } - void CreatureStartAttackDoor() - { - me->SetReactState(REACT_DEFENSIVE); - DoCastAOE(SPELL_DESTROY_DOOR_SEAL); - } - protected: InstanceScript* _instance; TaskScheduler _scheduler; |