diff options
author | ccrs <ccrs@users.noreply.github.com> | 2021-08-29 13:33:45 +0200 |
---|---|---|
committer | ccrs <ccrs@users.noreply.github.com> | 2021-08-29 13:33:45 +0200 |
commit | 4c0ff0917194516f8f734fd2b627e5cf5a8a5db8 (patch) | |
tree | 1c91a2bb2b605940514f37bc7b8de792f4655404 | |
parent | 4c59532865a2e26b7aa06e6dd3c462d3397a36ce (diff) |
Scripts/VioletHold: corrections to violet_hold_trashAI to prevent trash npcs being stuck in place forever if SPELL_DESTROY_DOOR_SEAL is no longer being casted for w/e reason
-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 27eb570c436..782399313ec 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; |