diff options
author | ccrs <ccrs@users.noreply.github.com> | 2021-08-29 13:33:45 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-03-13 22:40:13 +0100 |
commit | 4387c8ab134244c76ef27babd3d92e7b635a6a3b (patch) | |
tree | c5129cea7e5725b9ce0a50ca1d6e1fe62cde015e /src | |
parent | ff80b5ad6798f662a5bf5e63a441b9170be0fc61 (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
(cherry picked from commit 4c0ff0917194516f8f734fd2b627e5cf5a8a5db8)
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; |