diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 1da3f3d858..f8d1c578f1 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3465,3 +3465,4 @@ STR_5128 :Selection size STR_5129 :Enter selection size between {COMMA16} and {COMMA16} STR_5130 :Map size STR_5131 :Enter map size between {COMMA16} and {COMMA16} +STR_5132 :Fix all rides diff --git a/data/language/english_us.txt b/data/language/english_us.txt index fadb3bbd7c..538a701065 100644 --- a/data/language/english_us.txt +++ b/data/language/english_us.txt @@ -3467,4 +3467,4 @@ STR_5127 :{SMALLFONT}{BLACK}Disable land elevation STR_5128 :Selection size STR_5129 :Enter selection size between {COMMA16} and {COMMA16} STR_5130 :Map size -STR_5131 :Enter map size between {COMMA16} and {COMMA16} +STR_5131 :Enter map size between {COMMA16} and {COMMA16} \ No newline at end of file diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 1c8a1a2abe..1dd89339a8 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -72,7 +72,8 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_WIN_SCENARIO, WIDX_RENEW_RIDES = 8, WIDX_REMOVE_SIX_FLAGS, - WIDX_MAKE_DESTRUCTIBLE + WIDX_MAKE_DESTRUCTIBLE, + WIDX_FIX_ALL }; #pragma region MEASUREMENTS @@ -160,6 +161,7 @@ static rct_widget window_cheats_rides_widgets[] = { { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(0), HPL(0), 5123, STR_NONE}, // Renew rides { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(0), HPL(0), 5124, STR_NONE}, // Remove flags { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(1), HPL(1), 5125, STR_NONE}, // Make destructable + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(1), HPL(1), 5132, STR_NONE }, // Fix all rides { WIDGETS_END }, }; @@ -318,7 +320,7 @@ static uint32 window_cheats_page_enabled_widgets[] = { (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HIGH_MONEY) | (1 << WIDX_PARK_ENTRANCE_FEE), (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HAPPY_GUESTS) | (1 << WIDX_TRAM_GUESTS), (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_FREEZE_CLIMATE) | (1 << WIDX_OPEN_CLOSE_PARK) | (1 << WIDX_DECREASE_GAME_SPEED) | (1 << WIDX_INCREASE_GAME_SPEED) | (1 << WIDX_ZERO_CLEARANCE) | (1 << WIDX_WEATHER_SUN) | (1 << WIDX_WEATHER_THUNDER) | (1 << WIDX_CLEAR_GRASS) | (1 << WIDX_MOWED_GRASS) | (1 << WIDX_WATER_PLANTS) | (1 << WIDX_FIX_VANDALISM) | (1 << WIDX_REMOVE_LITTER) | (1 << WIDX_WIN_SCENARIO), - (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_RENEW_RIDES) | (1 << WIDX_REMOVE_SIX_FLAGS) | (1 << WIDX_MAKE_DESTRUCTIBLE) + (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_RENEW_RIDES) | (1 << WIDX_REMOVE_SIX_FLAGS) | (1 << WIDX_MAKE_DESTRUCTIBLE) | (1 << WIDX_FIX_ALL) }; static void window_cheats_draw_tab_images(rct_drawpixelinfo *dpi, rct_window *w); @@ -395,13 +397,22 @@ static void cheat_remove_litter() static void cheat_fix_rides() { - int i; + int rideIndex; rct_ride *ride; + rct_peep *mechanic; - // TODO doesn't quite work, probably need to call the correct fix ride function - FOR_ALL_RIDES(i, ride) { - if (ride->lifecycle_flags & (RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN)) { - ride->lifecycle_flags &= ~(RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN); + FOR_ALL_RIDES(rideIndex, ride) + { + if ((ride->mechanic_status != RIDE_MECHANIC_STATUS_FIXING) && (ride->lifecycle_flags & (RIDE_LIFECYCLE_BREAKDOWN_PENDING | RIDE_LIFECYCLE_BROKEN_DOWN))) + { + mechanic = ride_get_assigned_mechanic(ride); + + if (mechanic != NULL){ + remove_peep_from_ride(mechanic); + } + + RCT2_CALLPROC_X(0x006B7481, 0, 0, 0, rideIndex, 0, 0, 0); + ride->window_invalidate_flags |= RIDE_INVALIDATE_RIDE_MAIN | RIDE_INVALIDATE_RIDE_LIST; } } } @@ -649,6 +660,9 @@ static void window_cheats_rides_mouseup() case WIDX_MAKE_DESTRUCTIBLE: cheat_make_destructible(); break; + case WIDX_FIX_ALL: + cheat_fix_rides(); + break; } }