diff options
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp | 35 | ||||
-rw-r--r-- | src/server/scripts/Northrend/VioletHold/violet_hold.cpp | 6 |
2 files changed, 29 insertions, 12 deletions
diff --git a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp index 233b3d7f301..fdf81936765 100644 --- a/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/instance_violet_hold.cpp @@ -413,6 +413,12 @@ class instance_violet_hold : public InstanceMapScript for (uint8 i = 0; i < ActivationCrystalCount; ++i) if (GameObject* crystal = instance->GetGameObject(ActivationCrystalGUIDs[i])) crystal->RemoveFlag(GO_FLAG_NOT_SELECTABLE); + + Scheduler.Schedule(Seconds(3), [this](TaskContext task) + { + CheckEventState(); + task.Repeat(Seconds(3)); + }); } else if (data == NOT_STARTED) { @@ -855,9 +861,29 @@ class instance_violet_hold : public InstanceMapScript void Update(uint32 diff) override { + // if we don't have any player in the instance if (!instance->HavePlayers()) + { + if (EventState == IN_PROGRESS) // if event is in progress, mark as fail + { + EventState = FAIL; + CheckEventState(); + } return; + } + + Scheduler.Update(diff); + + if (EventState == IN_PROGRESS) + { + // if door is destroyed, event is failed + if (!GetData(DATA_DOOR_INTEGRITY)) + EventState = FAIL; + } + } + void CheckEventState() + { // if main event is in progress and players have wiped then reset instance if ((EventState == IN_PROGRESS && CheckWipe()) || EventState == FAIL) { @@ -875,15 +901,6 @@ class instance_violet_hold : public InstanceMapScript if (Creature* sinclari = GetCreature(DATA_SINCLARI)) sinclari->AI()->EnterEvadeMode(); } - - Scheduler.Update(diff); - - if (EventState == IN_PROGRESS) - { - // if door is destroyed, event is failed - if (!GetData(DATA_DOOR_INTEGRITY)) - EventState = FAIL; - } } void ScheduleCyanigosaIntro() diff --git a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp index 7e705934f96..9dc0526a8dd 100644 --- a/src/server/scripts/Northrend/VioletHold/violet_hold.cpp +++ b/src/server/scripts/Northrend/VioletHold/violet_hold.cpp @@ -473,12 +473,12 @@ class npc_sinclari_vh : public CreatureScript task.Repeat(Seconds(5)); break; case 8: - me->SetVisible(false); + _instance->SetData(DATA_MAIN_EVENT_STATE, IN_PROGRESS); task.Repeat(Seconds(1)); break; case 9: - _instance->SetData(DATA_MAIN_EVENT_STATE, IN_PROGRESS); - // [1] GUID: Full: 0xF1300077C202E6DD Type: Creature Entry: 30658 Low: 190173 + // We should teleport inside if event is in progress with GOSSIP_MENU_SEND_ME_IN + me->AddNpcFlag(UNIT_NPC_FLAG_GOSSIP); break; default: break; |