diff options
18 files changed, 4 insertions, 37 deletions
diff --git a/src/server/game/Achievements/CriteriaHandler.cpp b/src/server/game/Achievements/CriteriaHandler.cpp index 172f96b48a1..46ed90359ee 100644 --- a/src/server/game/Achievements/CriteriaHandler.cpp +++ b/src/server/game/Achievements/CriteriaHandler.cpp @@ -892,7 +892,7 @@ void CriteriaHandler::StartCriteriaTimer(CriteriaStartEvent startEvent, uint32 e bool canStart = false; for (CriteriaTree const* tree : *trees) { - if (_timeCriteriaTrees.find(tree->ID) == _timeCriteriaTrees.end() && !IsCompletedCriteriaTree(tree)) + if ((_timeCriteriaTrees.find(tree->ID) == _timeCriteriaTrees.end() || criteria->Entry->GetFlags().HasFlag(CriteriaFlags::ResetOnStart)) && !IsCompletedCriteriaTree(tree)) { // Start the timer if (criteria->Entry->StartTimer * uint32(IN_MILLISECONDS) > timeLost) diff --git a/src/server/game/DataStores/DB2Structure.h b/src/server/game/DataStores/DB2Structure.h index 6067641b938..c60da2139c8 100644 --- a/src/server/game/DataStores/DB2Structure.h +++ b/src/server/game/DataStores/DB2Structure.h @@ -1227,6 +1227,8 @@ struct CriteriaEntry uint8 Flags; int16 EligibilityWorldStateID; int8 EligibilityWorldStateValue; + + EnumFlag<CriteriaFlags> GetFlags() const { return static_cast<CriteriaFlags>(Flags); } }; struct CriteriaTreeEntry diff --git a/src/server/game/Instances/InstanceScript.cpp b/src/server/game/Instances/InstanceScript.cpp index 04ac053231e..918a9561634 100644 --- a/src/server/game/Instances/InstanceScript.cpp +++ b/src/server/game/Instances/InstanceScript.cpp @@ -631,15 +631,6 @@ void InstanceScript::DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 }); } -// Stop timed achievement for all players in instance -void InstanceScript::DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry) -{ - instance->DoOnPlayers([startEvent, entry](Player* player) - { - player->RemoveCriteriaTimer(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 c93f22645c5..60f0aa6da6b 100644 --- a/src/server/game/Instances/InstanceScript.h +++ b/src/server/game/Instances/InstanceScript.h @@ -220,9 +220,8 @@ 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/Stop Timed Achievement Criteria for all players in instance + // Start Timed Achievement Criteria for all players in instance void DoStartCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); - void DoStopCriteriaTimer(CriteriaStartEvent startEvent, uint32 entry); // Remove Auras due to Spell on all players in instance void DoRemoveAurasDueToSpellOnPlayers(uint32 spell, bool includePets = false, bool includeControlled = false); diff --git a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp index ba57c41e0a0..1c76b135ed3 100644 --- a/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp +++ b/src/server/scripts/Kalimdor/OnyxiasLair/boss_onyxia.cpp @@ -152,7 +152,6 @@ struct boss_onyxia : public BossAI _Reset(); me->SetReactState(REACT_AGGRESSIVE); instance->SetData(DATA_ONYXIA_PHASE, Phase); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); } void JustEngagedWith(Unit* who) 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 542ccb8d697..e1f0eeb6620 100644 --- a/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/Ahnkahet/boss_herald_volazj.cpp @@ -144,8 +144,6 @@ struct boss_volazj : public BossAI Initialize(); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_QUICK_DEMISE_START_EVENT); - // Visible for all players in insanity for (uint32 i = 173; i <= 177; ++i) PhasingHandler::AddPhase(me, i, false); diff --git a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp index ffd3f8b58f5..3193ab5f126 100644 --- a/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp +++ b/src/server/scripts/Northrend/AzjolNerub/AzjolNerub/boss_anubarak.cpp @@ -118,7 +118,6 @@ struct boss_anub_arak : public BossAI { BossAI::Reset(); me->RemoveUnitFlag(UNIT_FLAG_NON_ATTACKABLE | UNIT_FLAG_UNINTERACTIBLE); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOTTA_GO_START_EVENT); _nextSubmerge = 75; _petCount = 0; } 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 16ee193658e..f6603d2cf7b 100644 --- a/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp +++ b/src/server/scripts/Northrend/CrusadersColiseum/TrialOfTheCrusader/boss_twin_valkyr.cpp @@ -398,7 +398,6 @@ struct boss_fjola : public boss_twin_baseAI TouchSpellId = SPELL_LIGHT_TOUCH; SpikeSpellId = SPELL_LIGHT_TWIN_SPIKE; - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, EVENT_START_TWINS_FIGHT); boss_twin_baseAI::Reset(); } 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 922fa9c9384..540c09de29d 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/halls_of_reflection.cpp @@ -836,7 +836,6 @@ class npc_jaina_or_sylvanas_escape_hor : public CreatureScript _events.Reset(); _icewall = 0; _events.ScheduleEvent(EVENT_ESCAPE, 1s); - _instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT); } void JustDied(Unit* /*killer*/) override diff --git a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp index 15b13cb6353..b4c055fb5ac 100644 --- a/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp +++ b/src/server/scripts/Northrend/FrozenHalls/HallsOfReflection/instance_halls_of_reflection.cpp @@ -355,8 +355,6 @@ class instance_halls_of_reflection : public InstanceMapScript } break; case FAIL: - DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_NOT_RETREATING_EVENT); - if (Creature* jainaOrSylvanas = instance->GetCreature(JainaOrSylvanasEscapeGUID)) jainaOrSylvanas->DespawnOrUnsummon(10s); diff --git a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp index 178b33c0b09..b3437fb514d 100644 --- a/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp +++ b/src/server/scripts/Northrend/Naxxramas/boss_patchwerk.cpp @@ -69,8 +69,6 @@ struct boss_patchwerk : public BossAI { _Reset(); _enraged = false; - - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MAKE_QUICK_WERK_OF_HIM_STARTING_EVENT); } void KilledUnit(Unit* /*Victim*/) override diff --git a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp index 8d1478e32e2..a4be111fc6d 100644 --- a/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp +++ b/src/server/scripts/Northrend/Nexus/EyeOfEternity/boss_malygos.cpp @@ -376,7 +376,6 @@ struct boss_malygos : public BossAI SetPhase(PHASE_NOT_STARTED, true); me->SetReactState(REACT_PASSIVE); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); instance->SetBossState(DATA_MALYGOS_EVENT, NOT_STARTED); } diff --git a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp index 48e42e8665d..6bf2d43f0b8 100644 --- a/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp +++ b/src/server/scripts/Northrend/Ulduar/HallsOfLightning/boss_loken.cpp @@ -93,7 +93,6 @@ struct boss_loken : public BossAI { Initialize(); _Reset(); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMELY_DEATH_START_EVENT); } void JustEngagedWith(Unit* who) 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 a92c7845153..6f995710ce0 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 @@ -56,13 +56,6 @@ struct boss_maiden_of_grief : public BossAI { boss_maiden_of_grief(Creature* creature) : BossAI(creature, DATA_MAIDEN_OF_GRIEF) { } - void Reset() override - { - _Reset(); - - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_GOOD_GRIEF_START_EVENT); - } - void JustEngagedWith(Unit* who) override { BossAI::JustEngagedWith(who); diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp index 2a5e48e15cf..a221384c9f2 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_ignis.cpp @@ -138,8 +138,6 @@ class boss_ignis : public CreatureScript _Reset(); if (Vehicle* _vehicle = me->GetVehicleKit()) _vehicle->RemoveAllPassengers(); - - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEVEMENT_IGNIS_START_EVENT); } void JustEngagedWith(Unit* who) override diff --git a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp index 94e3493c504..a81f64d4a1e 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_xt002.cpp @@ -171,7 +171,6 @@ struct boss_xt002 : public BossAI events.SetPhase(PHASE_1); me->SetReactState(REACT_DEFENSIVE); Initialize(); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_MUST_DECONSTRUCT_FASTER); } void EnterEvadeMode(EvadeReason /*why*/) 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 849f6ce7533..d0aa44604c7 100644 --- a/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp +++ b/src/server/scripts/Northrend/Ulduar/Ulduar/boss_yogg_saron.cpp @@ -492,7 +492,6 @@ class boss_voice_of_yogg_saron : public CreatureScript events.SetPhase(PHASE_ONE); instance->SetData(DATA_DRIVE_ME_CRAZY, uint32(true)); - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_TIMED_START_EVENT); Initialize(); diff --git a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp index 84a20182e5b..c62e41564d2 100644 --- a/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp +++ b/src/server/scripts/Northrend/UtgardeKeep/UtgardePinnacle/boss_skadi.cpp @@ -166,8 +166,6 @@ struct boss_skadi : public BossAI me->SetReactState(REACT_PASSIVE); if (!instance->GetCreature(DATA_GRAUF)) me->SummonCreature(NPC_GRAUF, GraufLoc); - - instance->DoStopCriteriaTimer(CriteriaStartEvent::SendEvent, ACHIEV_LODI_DODI_WE_LOVES_THE_SKADI); } void EnterEvadeMode(EvadeReason /*why*/) override |