diff options
author | Shauren <shauren.trinity@gmail.com> | 2022-04-24 13:58:18 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2022-04-24 13:58:18 +0200 |
commit | 1c62b0b90f879e5df6c6785c12e9a5bddd65cb48 (patch) | |
tree | 685fae412c39a62e7c789e05329637afda19e4be /src | |
parent | e1abd8256be38c299156264424999c0108613198 (diff) |
Scripts/Instances: Replace manual criteria timer starts in instances with new GameEvents api
Diffstat (limited to 'src')
23 files changed, 52 insertions, 32 deletions
diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 918a9561634..64fda3b3c81 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -21,6 +21,7 @@ #include "CreatureAI.h" #include "CreatureAIImpl.h" #include "DatabaseEnv.h" +#include "GameEventSender.h" #include "GameObject.h" #include "Group.h" #include "InstancePackets.h" @@ -129,6 +130,23 @@ ObjectGuid InstanceScript::GetGuidData(uint32 type) const return GetObjectGuid(type); } +void InstanceScript::TriggerGameEvent(uint32 gameEventId, WorldObject* source /*= nullptr*/, WorldObject* target /*= nullptr*/) +{ + if (source) + { + ZoneScript::TriggerGameEvent(gameEventId, source, target); + return; + } + + ProcessEvent(target, gameEventId, source); + instance->DoOnPlayers([gameEventId](Player* player) + { + GameEvents::TriggerForPlayer(gameEventId, player); + }); + + GameEvents::TriggerForMap(gameEventId, instance); +} + Creature* InstanceScript::GetCreature(uint32 type) { return instance->GetCreature(GetObjectGuid(type)); @@ -622,15 +640,6 @@ void InstanceScript::DoUpdateCriteria(CriteriaType type, uint32 miscValue1 /*= 0 }); } -// Start timed achievement for all players in instance -void InstanceScript::DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry) -{ - instance->DoOnPlayers([startEvent, entry](Player* player) - { - player->StartCriteriaTimer(startEvent, entry); - }); -} - void InstanceScript::DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets /*= false*/, bool includeControlled /*= false*/) { instance->DoOnPlayers([this, spell, includePets, includeControlled](Player* player) diff --git a/src/server/game/Instances/InstanceScript.h b/src/server/game/Instances/InstanceScript.h index 60f0aa6da6b..353f363174c 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -191,6 +191,10 @@ class TC_GAME_API InstanceScript : public ZoneScript ObjectGuid GetObjectGuid(uint32 type) const; virtual ObjectGuid GetGuidData(uint32 type) const override; + // Triggers a GameEvent + // * If source is nullptr then event is triggered for each player in the instance as "source" + void TriggerGameEvent(uint32 gameEventId, WorldObject* source = nullptr, WorldObject* target = nullptr) override; + Creature* GetCreature(uint32 type); GameObject* GetGameObject(uint32 type); @@ -220,9 +224,6 @@ class TC_GAME_API InstanceScript : public ZoneScript // Update Achievement Criteria for all players in instance void DoUpdateCriteria(CriteriaType type, uint32 miscValue1 = 0, uint32 miscValue2 = 0, Unit* unit = nullptr); - // Start Timed Achievement Criteria for all players in instance - void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); - // Remove Auras due to Spell on all players in instance void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets = false, bool includeControlled = false); void DoRemoveAurasDueToSpellOnPlayer(Player* player, uint32 spell, bool includePets = false, bool includeControlled = false); diff --git a/src/server/game/Maps/ZoneScript.cpp b/src/server/game/Maps/ZoneScript.cpp index 974a6c7661f..9dce551910c 100644 --- a/src/server/game/Maps/ZoneScript.cpp +++ b/src/server/game/Maps/ZoneScript.cpp @@ -17,6 +17,7 @@ #include "ZoneScript.h" #include "Creature.h" +#include "GameEventSender.h" ZoneScript::ZoneScript() { @@ -30,3 +31,11 @@ uint32 ZoneScript::GetCreatureEntry(ObjectGuid::LowType /*guidLow*/, CreatureDat { return data->id; } + +void ZoneScript::TriggerGameEvent(uint32 gameEventId, WorldObject* source /*= nullptr*/, WorldObject* target /*= nullptr*/) +{ + if (source) + GameEvents::Trigger(gameEventId, source, target); + else + ProcessEvent(nullptr, gameEventId, nullptr); +} diff --git a/src/server/game/Maps/ZoneScript.h b/src/server/game/Maps/ZoneScript.h index 8d3bb397a07..d9bb1b417d9 100644 --- a/src/server/game/Maps/ZoneScript.h +++ b/src/server/game/Maps/ZoneScript.h @@ -61,6 +61,7 @@ class TC_GAME_API ZoneScript virtual uint32 GetData(uint32 /*DataId*/) const { return 0; } virtual void SetData(uint32 /*DataId*/, uint32 /*Value*/) { } + virtual void TriggerGameEvent(uint32 gameEventId, WorldObject* source = nullptr, WorldObject* target = nullptr); virtual void ProcessEvent(WorldObject* /*obj*/, uint32 /*eventId*/, WorldObject* /*invoker*/) { } }; diff --git a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp index 29e843fe1eb..d49869ed791 100644 --- a/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp +++ b/src/server/scripts/Kalimdor/HallsOfOrigination/boss_anraphet.cpp @@ -386,7 +386,7 @@ class npc_brann_bronzebeard_anraphet : public CreatureScript case EVENT_BRANN_UNLOCK_DOOR: Talk(BRANN_SAY_UNLOCK_DOOR); _instance->SetBossState(DATA_VAULT_OF_LIGHTS, DONE); - _instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_VAULT_OF_LIGHTS_EVENT); + _instance->TriggerGameEvent(ACHIEV_VAULT_OF_LIGHTS_EVENT); events.ScheduleEvent(EVENT_BRANN_MOVE_INTRO, 3500ms); break; case EVENT_BRANN_THINK: diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index 1c76b135ed3..0721a5c95d8 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -162,7 +162,7 @@ struct boss_onyxia : public BossAI events.ScheduleEvent(EVENT_TAIL_SWEEP, 15s, 20s); events.ScheduleEvent(EVENT_CLEAVE, 2s, 5s); events.ScheduleEvent(EVENT_WING_BUFFET, 10s, 20s); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMED_START_EVENT); } void JustSummoned(Creature* summoned) override diff --git a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp index e1f0eeb6620..b2ed77e4a89 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -269,7 +269,7 @@ struct boss_volazj : public BossAI Talk(SAY_AGGRO); DoCastSelf(SPELL_WHISPER_AGGRO); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_QUICK_DEMISE_START_EVENT); + instance->TriggerGameEvent(ACHIEV_QUICK_DEMISE_START_EVENT); } uint32 GetSpellForPhaseMask(uint32 phase) diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index 3193ab5f126..d7acf4fe45b 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -134,7 +134,7 @@ struct boss_anub_arak : public BossAI door2->SetGoState(GO_STATE_ACTIVE); Talk(SAY_AGGRO); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOTTA_GO_START_EVENT); + instance->TriggerGameEvent(ACHIEV_GOTTA_GO_START_EVENT); events.SetPhase(PHASE_EMERGE); events.ScheduleEvent(EVENT_CLOSE_DOOR, 5s); diff --git a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp index f6603d2cf7b..e0f697c5536 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -436,7 +436,7 @@ struct boss_fjola : public boss_twin_baseAI void JustEngagedWith(Unit* who) override { - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_START_TWINS_FIGHT); + instance->TriggerGameEvent(EVENT_START_TWINS_FIGHT); events.ScheduleEvent(EVENT_SPECIAL_ABILITY, 45s); me->SummonCreature(NPC_BULLET_CONTROLLER, ToCCommonLoc[1].GetPositionX(), ToCCommonLoc[1].GetPositionY(), ToCCommonLoc[1].GetPositionZ(), 0.0f, TEMPSUMMON_MANUAL_DESPAWN); boss_twin_baseAI::JustEngagedWith(who); diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp index 540c09de29d..96025b629b1 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -1084,7 +1084,7 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript } } _invincibility = false; - _instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT); + _instance->TriggerGameEvent(ACHIEV_NOT_RETREATING_EVENT); _events.ScheduleEvent(EVENT_ESCAPE_7, 1s); break; case EVENT_ESCAPE_7: diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp index a90c17c5b47..13ef5bc2fc9 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp @@ -144,7 +144,7 @@ struct boss_anubrekhan : public BossAI _JustDied(); // start achievement timer (kill Maexna within 20 min) - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMED_START_EVENT); } void JustEngagedWith(Unit* who) override diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index b3437fb514d..c476ba65995 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -91,7 +91,7 @@ struct boss_patchwerk : public BossAI events.ScheduleEvent(EVENT_HATEFUL, 3600ms); events.ScheduleEvent(EVENT_BERSERK, 6min); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); + instance->TriggerGameEvent(ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); } void UpdateAI(uint32 diff) override diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index a4be111fc6d..c67fdd426da 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -567,7 +567,7 @@ struct boss_malygos : public BossAI Talk(SAY_START_P_ONE); DoCast(SPELL_BERSERK); // periodic aura, first tick in 10 minutes - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMED_START_EVENT); } void EnterEvadeMode(EvadeReason /*why*/) override diff --git a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp index a3b9b5d0917..7ec6267c4d5 100644 --- a/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp +++ b/src/server/scripts/Northrend/Nexus/Oculus/boss_drakos.cpp @@ -133,7 +133,7 @@ struct boss_drakos : public BossAI Talk(SAY_DEATH); // start achievement timer (kill Eregos within 20 min) - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMED_START_EVENT); } void KilledUnit(Unit* /*victim*/) override diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 6bf2d43f0b8..0b4eeef3f4f 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -103,7 +103,7 @@ struct boss_loken : public BossAI events.ScheduleEvent(EVENT_ARC_LIGHTNING, 15s); events.ScheduleEvent(EVENT_LIGHTNING_NOVA, 20s); events.ScheduleEvent(EVENT_RESUME_PULSING_SHOCKWAVE, 1s); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMELY_DEATH_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMELY_DEATH_START_EVENT); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp index 6f995710ce0..d8bdf29bfc8 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfStone/boss_maiden_of_grief.cpp @@ -67,7 +67,7 @@ struct boss_maiden_of_grief : public BossAI events.ScheduleEvent(EVENT_SHOCK_OF_SORROW, 15s, 25s); events.ScheduleEvent(EVENT_PILLAR_OF_WOE, 5s, 15s); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOOD_GRIEF_START_EVENT); + instance->TriggerGameEvent(ACHIEV_GOOD_GRIEF_START_EVENT); } void KilledUnit(Unit* /*who*/) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp index ec5e8e161d7..163db8cfb4a 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_algalon_the_observer.cpp @@ -773,7 +773,7 @@ struct npc_living_constellation : public CreatureAI if (spellInfo->Id != SPELL_CONSTELLATION_PHASE_EFFECT) return; - _instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_ID_SUPERMASSIVE_START); + _instance->TriggerGameEvent(EVENT_ID_SUPERMASSIVE_START); creatureCaster->CastSpell(nullptr, SPELL_BLACK_HOLE_CREDIT, TRIGGERED_FULL_MASK); DoCast(creatureCaster, SPELL_DESPAWN_BLACK_HOLE, TRIGGERED_FULL_MASK); me->DespawnOrUnsummon(500ms); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index a221384c9f2..f8ae3b65c0e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -151,7 +151,7 @@ class boss_ignis : public CreatureScript events.ScheduleEvent(EVENT_END_POT, 40s); events.ScheduleEvent(EVENT_BERSERK, 480s); Initialize(); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEVEMENT_IGNIS_START_EVENT); + instance->TriggerGameEvent(ACHIEVEMENT_IGNIS_START_EVENT); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp index 5d39db1e50c..b6e0a91fd12 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_kologarn.cpp @@ -199,7 +199,7 @@ class boss_kologarn : public CreatureScript if (!right && !left) events.ScheduleEvent(EVENT_STONE_SHOUT, 5s); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_DISARMED); + instance->TriggerGameEvent(CRITERIA_DISARMED); } else { diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index a81f64d4a1e..ad298455f27 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -188,7 +188,7 @@ struct boss_xt002 : public BossAI events.ScheduleEvent(EVENT_ENRAGE, 10min); events.ScheduleEvent(EVENT_TYMPANIC_TANTRUM, 60s, 0, PHASE_1); events.ScheduleEvent(EVENT_PHASE_CHECK, 1s, 0, PHASE_1); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MUST_DECONSTRUCT_FASTER); + instance->TriggerGameEvent(ACHIEV_MUST_DECONSTRUCT_FASTER); } void DoAction(int32 action) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp index d0aa44604c7..c2c22702231 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -515,7 +515,7 @@ class boss_voice_of_yogg_saron : public CreatureScript if (Creature* keeper = ObjectAccessor::GetCreature(*me, instance->GetGuidData(i))) keeper->SetInCombatWith(me); - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); + instance->TriggerGameEvent(ACHIEV_TIMED_START_EVENT); DoCastAOE(SPELL_SUMMON_GUARDIAN_2, { SPELLVALUE_MAX_TARGETS, 1 }); DoCast(me, SPELL_SANITY_PERIODIC); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp index 74e3098192c..15ab74477b5 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/instance_ulduar.cpp @@ -559,7 +559,7 @@ class instance_ulduar : public InstanceMapScript case NPC_GUARDIAN_OF_LIFE: if (!conSpeedAtory) { - DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_CON_SPEED_ATORY); + TriggerGameEvent(CRITERIA_CON_SPEED_ATORY); conSpeedAtory = true; } break; @@ -568,7 +568,7 @@ class instance_ulduar : public InstanceMapScript case NPC_BRIGHTLEAF: if (!lumberjacked) { - DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, CRITERIA_LUMBERJACKED); + TriggerGameEvent(CRITERIA_LUMBERJACKED); lumberjacked = true; } break; diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index c62e41564d2..727b8397bd5 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -229,7 +229,7 @@ struct boss_skadi : public BossAI SpawnFirstWave(); Talk(SAY_AGGRO); _phase = PHASE_FLYING; - instance->DoStartCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI); + instance->TriggerGameEvent(ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI); scheduler .Schedule(Seconds(6), [this](TaskContext resetCheck) |