aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/server/scripts/Northrend/VioletHold/violet_hold.cpp23
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;