diff options
author | Shauren <shauren.trinity@gmail.com> | 2023-09-25 00:53:56 +0200 |
---|---|---|
committer | Shauren <shauren.trinity@gmail.com> | 2023-09-25 00:53:56 +0200 |
commit | 41a20b1e4008d450d075847ef1fe367f0e3a240f (patch) | |
tree | 4e202edb0d037a4a406926e6cacd686c7afcbca1 /src/server/game/Scenarios/Scenario.cpp | |
parent | e1f345756ba34ccf4d4dd07b90c254097a240b51 (diff) |
Core/Achievements: Fixed achievement criteria StartEvent and FailEvent
* Criteria using StartEvent cannot be updated without that event triggering first (not only for timed achievements)
* Implemented most StartEvent and FailEvent types
* Fixed saving criteria removed by RemoveCriteriaProgress
Diffstat (limited to 'src/server/game/Scenarios/Scenario.cpp')
-rw-r--r-- | src/server/game/Scenarios/Scenario.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/src/server/game/Scenarios/Scenario.cpp b/src/server/game/Scenarios/Scenario.cpp index 6d8fd3c1c62..3366781ba39 100644 --- a/src/server/game/Scenarios/Scenario.cpp +++ b/src/server/game/Scenarios/Scenario.cpp @@ -93,7 +93,12 @@ void Scenario::SetStep(ScenarioStepEntry const* step) { _currentstep = step; if (step) + { SetStepState(step, SCENARIO_STEP_IN_PROGRESS); + for (ObjectGuid const& guid : _players) + if (Player* player = ObjectAccessor::GetPlayer(_map, guid)) + player->StartCriteria(CriteriaStartEvent::BeginScenarioStep, step->ID); + } WorldPackets::Scenario::ScenarioState scenarioState; BuildScenarioState(&scenarioState); @@ -133,7 +138,7 @@ ScenarioEntry const* Scenario::GetEntry() const ScenarioStepState Scenario::GetStepState(ScenarioStepEntry const* step) { - std::map<ScenarioStepEntry const*, ScenarioStepState>::const_iterator itr = _stepStates.find(step); + auto itr = _stepStates.find(step); if (itr == _stepStates.end()) return SCENARIO_STEP_INVALID; |