aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorccrs <ccrs@users.noreply.github.com>2021-08-29 13:33:45 +0200
committerShauren <shauren.trinity@gmail.com>2022-03-13 22:40:13 +0100
commit4387c8ab134244c76ef27babd3d92e7b635a6a3b (patch)
treec5129cea7e5725b9ce0a50ca1d6e1fe62cde015e /src
parentff80b5ad6798f662a5bf5e63a441b9170be0fc61 (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.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;