diff --git a/distribution/changelog.txt b/distribution/changelog.txt index cd625079cd..1db6f007a3 100644 --- a/distribution/changelog.txt +++ b/distribution/changelog.txt @@ -60,6 +60,7 @@ - Fix: [#13961] Animation for Guests sliding down Spiral Slide is missing on close zoom levels. - Fix: [#14012] 'Finish 5 roller coasters' goal is listed incorrectly in scenario selector. - Fix: [#14095] Holding down [-][+] buttons does not decrease/increase number of circuits. +- Fix: [#14225] Desync when “allow early scenario completion” is enabled. - Fix: [#14247] Scenarios from RCT1 allow hiring too many staff. - Improved: [#6022] Allow up to 128 ride objects to be selected in track designer. - Improved: [#12917] Changed peep movement so that they stay more spread out over the full width of single tile paths. diff --git a/src/openrct2/scenario/Scenario.cpp b/src/openrct2/scenario/Scenario.cpp index 3728741ca5..a4b845ea9a 100644 --- a/src/openrct2/scenario/Scenario.cpp +++ b/src/openrct2/scenario/Scenario.cpp @@ -288,6 +288,7 @@ static void scenario_day_update() { finance_update_daily_profit(); peep_update_days_in_queue(); + bool allowEarlyCompletion = gConfigGeneral.allow_early_completion && (network_get_mode() == NETWORK_MODE_NONE); switch (gScenarioObjective.Type) { case OBJECTIVE_10_ROLLERCOASTERS: @@ -298,7 +299,7 @@ static void scenario_day_update() scenario_objective_check(); break; default: - if (gConfigGeneral.allow_early_completion) + if (allowEarlyCompletion) scenario_objective_check(); break; } @@ -712,8 +713,9 @@ ObjectiveStatus Objective::CheckGuestsBy() const { int16_t parkRating = gParkRating; int32_t currentMonthYear = gDateMonthsElapsed; + bool allowEarlyCompletion = gConfigGeneral.allow_early_completion && (network_get_mode() == NETWORK_MODE_NONE); - if (currentMonthYear == MONTH_COUNT * Year || gConfigGeneral.allow_early_completion) + if (currentMonthYear == MONTH_COUNT * Year || allowEarlyCompletion) { if (parkRating >= 600 && gNumGuestsInPark >= NumGuests) { @@ -733,8 +735,9 @@ ObjectiveStatus Objective::CheckParkValueBy() const int32_t currentMonthYear = gDateMonthsElapsed; money32 objectiveParkValue = Currency; money32 parkValue = gParkValue; + bool allowEarlyCompletion = gConfigGeneral.allow_early_completion && (network_get_mode() == NETWORK_MODE_NONE); - if (currentMonthYear == MONTH_COUNT * Year || gConfigGeneral.allow_early_completion) + if (currentMonthYear == MONTH_COUNT * Year || allowEarlyCompletion) { if (parkValue >= objectiveParkValue) {