aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scenarios/Scenario.cpp
diff options
context:
space:
mode:
authorShauren <shauren.trinity@gmail.com>2023-09-25 00:53:56 +0200
committerShauren <shauren.trinity@gmail.com>2023-09-25 00:53:56 +0200
commit41a20b1e4008d450d075847ef1fe367f0e3a240f (patch)
tree4e202edb0d037a4a406926e6cacd686c7afcbca1 /src/server/game/Scenarios/Scenario.cpp
parente1f345756ba34ccf4d4dd07b90c254097a240b51 (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.cpp7
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;