From 79a6a989f06d45b181d8704ec37eeac42134b3b2 Mon Sep 17 00:00:00 2001 From: Gymnasiast Date: Tue, 16 Jun 2015 18:25:37 +0200 Subject: [PATCH] Introduce a truckload of guest cheats. --- data/language/english_uk.txt | 21 ++- src/localisation/string_ids.h | 24 +++- src/peep/peep.c | 2 +- src/peep/peep.h | 1 + src/ride/ride.c | 6 +- src/ride/ride.h | 2 +- src/windows/cheats.c | 247 ++++++++++++++++++++++++++++++---- 7 files changed, 266 insertions(+), 37 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 8ba1fcb4cb..59b30e526e 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -2686,7 +2686,7 @@ STR_2680 :All research complete STR_2681 :{MEDIUMFONT}{BLACK}Increases your money by 5,000 STR_2682 :{MEDIUMFONT}{BLACK}Toggle between Free and Paid Entry STR_2683 :{MEDIUMFONT}{BLACK}Increases every peeps happiness to max -STR_2684 :{MEDIUMFONT}{BLACK}Large group of peeps arrive +STR_2684 :{SMALLFONT}{BLACK}Large group of peeps arrive STR_2685 :Simplex Noise Parameters STR_2686 :{WINDOW_COLOUR_2}Low: STR_2687 :{WINDOW_COLOUR_2}High: @@ -3619,7 +3619,7 @@ STR_5282 :RCT1 Ride Open/Close Lights STR_5283 :RCT1 Park Open/Close Lights STR_5284 :RCT1 Scenario Selection Font STR_5285 :EXPLODE!!! -STR_5286 :{MEDIUMFONT}{BLACK}Makes some guests explode +STR_5286 :{SMALLFONT}{BLACK}Makes some guests explode STR_5287 :Ride is already broken down STR_5288 :Ride is closed STR_5289 :No breakdowns available for this ride @@ -3682,4 +3682,19 @@ STR_5345 :Financial cheats STR_5346 :Guest cheats STR_5347 :Ride cheats STR_5348 :Park cheats -STR_5349 :{SMALLFONT}{BLACK}All Rides \ No newline at end of file +STR_5349 :{SMALLFONT}{BLACK}All Rides +STR_5350 :Max +STR_5351 :Min +STR_5352 :{BLACK}Happiness: +STR_5353 :{BLACK}Energy: +STR_5354 :{BLACK}Hunger: +STR_5355 :{BLACK}Thirst: +STR_5356 :{BLACK}Nausea: +STR_5357 :{BLACK}Nausea tolerance: +STR_5358 :{BLACK}Bathroom: +STR_5359 :Remove guests +STR_5360 :{SMALLFONT}{BLACK}Removes all guests from the map +STR_5361 :{BLACK}Give all guests: +STR_5362 :{BLACK}Preferred intensity: +STR_5363 :> 1 +STR_5364 :< 15 diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index b1170543fe..fdec4392a6 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -1004,10 +1004,22 @@ enum { STR_CHEAT_PAY_RIDES = 2762, // Guests - STR_CHEAT_HAPPY_GUESTS = 2764, + //STR_CHEAT_HAPPY_GUESTS = 2764, STR_CHEAT_LARGE_TRAM_GUESTS = 2765, - STR_CHEAT_NAUSEA = 5254, + //STR_CHEAT_NAUSEA = 5254, STR_CHEAT_EXPLODE = 5285, + STR_CHEAT_REMOVE_ALL_GUESTS = 5359, + STR_CHEAT_GUEST_HAPPINESS = 5352, + STR_CHEAT_GUEST_ENERGY = 5353, + STR_CHEAT_GUEST_HUNGER = 5354, + STR_CHEAT_GUEST_THIRST = 5355, + STR_CHEAT_GUEST_NAUSEA = 5356, + STR_CHEAT_GUEST_NAUSEA_TOLERANCE = 5357, + STR_CHEAT_GUEST_BATHROOM = 5358, + STR_CHEAT_GIVE_ALL_GUESTS = 5361, + STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362, + STR_CHEAT_MORE_THAN_1 = 5363, + STR_CHEAT_LESS_THAN_15 = 5364, // Misc. STR_CHEAT_FREEZE_CLIMATE = 2767, @@ -1039,10 +1051,11 @@ enum { STR_CHEAT_TIP_5K_MONEY = 2681, STR_CHEAT_TIP_PAY_ENTRY = 2682, STR_CHEAT_TIP_CLEAR_LOAN = 5301, - STR_CHEAT_TIP_HAPPY_GUESTS = 2683, + //STR_CHEAT_TIP_HAPPY_GUESTS = 2683, STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684, - STR_CHEAT_TIP_NAUSEA = 5255, + //STR_CHEAT_TIP_NAUSEA = 5255, STR_CHEAT_TIP_EXPLODE = 5286, + STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360, // Cheat tab tips STR_FINANCIAL_CHEATS_TIP = 5178, @@ -1520,6 +1533,9 @@ enum { STR_TITLE_SEQUENCE_OPENRCT2 = 5309, STR_TITLE_SEQUENCE_RANDOM = 5310, + STR_MAX = 5350, + STR_MIN = 5351, + // Have to include resource strings (from scenarios and objects) for the time being now that language is partially working STR_COUNT = 32768 }; diff --git a/src/peep/peep.c b/src/peep/peep.c index 0f6a976b9a..c2b1a396ee 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -1592,7 +1592,7 @@ static void peep_update_ride_sub_state_5(rct_peep* peep){ } /* rct2: 0x00693028*/ -static void peep_update_ride_sub_state_7(rct_peep* peep){ +void peep_update_ride_sub_state_7(rct_peep* peep){ rct_ride* ride = GET_RIDE(peep->current_ride); rct_vehicle* vehicle = GET_VEHICLE(ride->vehicles[peep->current_train]); diff --git a/src/peep/peep.h b/src/peep/peep.h index 837590b826..704914342e 100644 --- a/src/peep/peep.h +++ b/src/peep/peep.h @@ -574,6 +574,7 @@ int peep_is_mechanic(rct_peep *peep); int peep_has_food(rct_peep* peep); void peep_sprite_remove(rct_peep* peep); void peep_remove(rct_peep* peep); +void peep_update_sprite_type(rct_peep* peep); void peep_window_state_update(rct_peep* peep); void peep_decrement_num_riders(rct_peep* peep); diff --git a/src/ride/ride.c b/src/ride/ride.c index 519fd72bd4..336770ad74 100644 --- a/src/ride/ride.c +++ b/src/ride/ride.c @@ -669,7 +669,7 @@ static void ride_remove_vehicles(rct_ride *ride) * * rct2: 0x006DD4AC */ -static void ride_clear_for_construction(int rideIndex) +void ride_clear_for_construction(int rideIndex) { rct_ride *ride; rct_window *w; @@ -693,7 +693,7 @@ static void ride_clear_for_construction(int rideIndex) * * rct2: 0x006664DF */ -static void ride_remove_peeps(int rideIndex) +void ride_remove_peeps(int rideIndex) { int i, stationIndex, x, y, z, exitX, exitY, exitZ, exitDirection; uint16 xy, spriteIndex; @@ -4507,4 +4507,4 @@ void ride_all_has_any_track_elements(bool *rideIndexArray) rideIndexArray[it.element->properties.track.ride_index] = true; } -} \ No newline at end of file +} diff --git a/src/ride/ride.h b/src/ride/ride.h index 1916962a35..d93d439f1a 100644 --- a/src/ride/ride.h +++ b/src/ride/ride.h @@ -814,7 +814,7 @@ int ride_get_refund_price(int ride_id); void game_command_demolish_ride(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp); void game_command_set_ride_appearance(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp); void game_command_set_ride_price(int *eax, int *ebx, int *ecx, int *edx, int *esi, int *edi, int *ebp); - +void ride_clear_for_construction(int rideIndex); int get_var_10E_unk_1(rct_ride* ride); int get_var_10E_unk_2(rct_ride* ride); diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 81b81c514d..1b5af25faa 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -33,11 +33,10 @@ #include "../world/footpath.h" #include "../world/park.h" #include "../world/sprite.h" +#include "../world/scenery.h" #include "../interface/themes.h" #include "../cheats.h" -//#define WW 200 -//#define WH 128 #define CHEATS_MONEY_INCREMENT MONEY(5000,00) #define CHEATS_TRAM_INCREMENT 250 enum { @@ -59,10 +58,28 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_HIGH_MONEY, WIDX_PARK_ENTRANCE_FEE, WIDX_CLEAR_LOAN, - WIDX_HAPPY_GUESTS = 8, //Same as HIGH_MONEY as it is also the 8th widget but on a different page + WIDX_GUEST_HAPPINESS_MAX = 8, //Same as HIGH_MONEY as it is also the 8th widget but on a different page + WIDX_GUEST_HAPPINESS_MIN, + WIDX_GUEST_ENERGY_MAX, + WIDX_GUEST_ENERGY_MIN, + WIDX_GUEST_HUNGER_MAX, + WIDX_GUEST_HUNGER_MIN, + WIDX_GUEST_THIRST_MAX, + WIDX_GUEST_THIRST_MIN, + WIDX_GUEST_NAUSEA_MAX, + WIDX_GUEST_NAUSEA_MIN, + WIDX_GUEST_NAUSEA_TOLERANCE_MAX, + WIDX_GUEST_NAUSEA_TOLERANCE_MIN, + WIDX_GUEST_BATHROOM_MAX, + WIDX_GUEST_BATHROOM_MIN, + WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1, + WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15, WIDX_TRAM_GUESTS, - WIDX_NAUSEA_GUESTS, + WIDX_REMOVE_ALL_GUESTS, WIDX_EXPLODE_GUESTS, + WIDX_GIVE_GUESTS_PARK_MAPS, + WIDX_GIVE_GUESTS_BALLOONS, + WIDX_GIVE_GUESTS_UMBRELLAS, WIDX_FREEZE_CLIMATE = 8, WIDX_OPEN_CLOSE_PARK, WIDX_ZERO_CLEARANCE, @@ -86,9 +103,26 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_BUILD_IN_PAUSE_MODE }; +enum { + GUEST_PARAMETER_HAPPINESS, + GUEST_PARAMETER_ENERGY, + GUEST_PARAMETER_HUNGER, + GUEST_PARAMETER_THIRST, + GUEST_PARAMETER_NAUSEA, + GUEST_PARAMETER_NAUSEA_TOLERANCE, + GUEST_PARAMETER_BATHROOM, + GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY +}; + +enum { + OBJECT_PARK_MAP, + OBJECT_BALLOON, + OBJECT_UMBRELLA +}; + #pragma region MEASUREMENTS #define WW 240 -#define WH 240 +#define WH 300 #define TAB_HEIGHT 43 #define XSPA 5 //X spacing #define YSPA 5 //Y spacing @@ -132,10 +166,28 @@ static rct_widget window_cheats_guests_widgets[] = { { WWT_TAB, 1, 34, 64, 17, 43, 0x2000144E, STR_GUEST_CHEATS_TIP }, // tab 2 { WWT_TAB, 1, 65, 95, 17, 43, 0x2000144E, STR_PARK_CHEATS_TIP }, // tab 3 { WWT_TAB, 1, 96, 126, 17, 43, 0x2000144E, STR_RIDE_CHEATS_TIP }, // tab 4 - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(1), HPL(1), STR_CHEAT_HAPPY_GUESTS, STR_NONE}, // happy guests - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(3), HPL(3), STR_CHEAT_LARGE_TRAM_GUESTS, STR_NONE}, // large tram - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(5), HPL(5), STR_CHEAT_NAUSEA, STR_NONE}, // nausea - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(7), HPL(7), STR_CHEAT_EXPLODE, STR_NONE}, // explode guests + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(0), HPL(0), STR_MAX, STR_NONE}, // happiness max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(0), HPL(0), STR_MIN, STR_NONE}, // happiness min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(1), HPL(1), STR_MAX, STR_NONE}, // energy max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(1), HPL(1), STR_MIN, STR_NONE}, // energy min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(2), HPL(2), STR_MAX, STR_NONE}, // hunger max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(2), HPL(2), STR_MIN, STR_NONE}, // hunger min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(3), HPL(3), STR_MAX, STR_NONE}, // thirst max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(3), HPL(3), STR_MIN, STR_NONE}, // thirst min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(4), HPL(4), STR_MAX, STR_NONE}, // nausea max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(4), HPL(4), STR_MIN, STR_NONE}, // nausea min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(5), HPL(5), STR_MAX, STR_NONE}, // nausea tolerance max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(5), HPL(5), STR_MIN, STR_NONE}, // nausea tolerance min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(6), HPL(6), STR_MAX, STR_NONE}, // bathroom max + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(6), HPL(6), STR_MIN, STR_NONE}, // bathroom min + { WWT_CLOSEBOX, 1, XPL(1.5),WPL(1.5)/2,YPL(7), HPL(7), STR_CHEAT_MORE_THAN_1, STR_NONE}, // ride intensity > 1 + { WWT_CLOSEBOX, 1, XPL(1), WPL(1)/2, YPL(7), HPL(7), STR_CHEAT_LESS_THAN_15, STR_NONE}, // ride intensity < 15 + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(10), HPL(10), STR_CHEAT_LARGE_TRAM_GUESTS, STR_CHEAT_TIP_LARGE_TRAM_GUESTS},// large tram + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(11), HPL(11), STR_CHEAT_REMOVE_ALL_GUESTS, STR_CHEAT_TIP_REMOVE_ALL_GUESTS},// explode guests + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(11), HPL(11), STR_CHEAT_EXPLODE, STR_CHEAT_TIP_EXPLODE}, // explode guests + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(9), HPL(9), 2018, STR_NONE}, // give guests park maps + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(9), HPL(9), 2016, STR_NONE}, // give guests balloons + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(8), HPL(8), 2020, STR_NONE}, // give guests umbrellas { WIDGETS_END }, }; @@ -337,7 +389,7 @@ static void* window_cheats_page_events[] = { 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_CLEAR_LOAN), - (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_NAUSEA_GUESTS) | (1 << WIDX_EXPLODE_GUESTS), + (1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_GUEST_HAPPINESS_MAX) | (1 << WIDX_GUEST_HAPPINESS_MIN) | (1 << WIDX_GUEST_ENERGY_MAX) | (1 << WIDX_GUEST_ENERGY_MIN) | (1 << WIDX_GUEST_HUNGER_MAX) | (1 << WIDX_GUEST_HUNGER_MIN) | (1 << WIDX_GUEST_THIRST_MAX) | (1 << WIDX_GUEST_THIRST_MIN) | (1 << WIDX_GUEST_NAUSEA_MAX) | (1 << WIDX_GUEST_NAUSEA_MIN) | (1 << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1 << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1 << WIDX_GUEST_BATHROOM_MAX) | (1 << WIDX_GUEST_BATHROOM_MIN) | (1 << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1 << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1 << WIDX_TRAM_GUESTS) | (1 << WIDX_REMOVE_ALL_GUESTS) | (1 << WIDX_EXPLODE_GUESTS) | (1 << WIDX_GIVE_GUESTS_PARK_MAPS) | (1 << WIDX_GIVE_GUESTS_BALLOONS) | (1 << WIDX_GIVE_GUESTS_UMBRELLAS), (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_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_UNLOCK_ALL_PRICES) | (1 << WIDX_SANDBOX_MODE), (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) | (1 << WIDX_FAST_LIFT_HILL) | (1 << WIDX_DISABLE_BRAKES_FAILURE) | (1 << WIDX_DISABLE_ALL_BREAKDOWNS) | (1 << WIDX_BUILD_IN_PAUSE_MODE) }; @@ -413,6 +465,23 @@ static void cheat_remove_litter() sprite_remove((rct_sprite*)litter); } + map_element_iterator it; + rct_scenery_entry *sceneryEntry; + + map_element_iterator_begin(&it); + do { + if (map_element_get_type(it.element) != MAP_ELEMENT_TYPE_PATH) + continue; + + if ((it.element->properties.path.additions & 0x0F) == 0) + continue; + + sceneryEntry = g_pathBitSceneryEntries[(it.element->properties.path.additions & 0xF) - 1]; + if(sceneryEntry->path_bit.var_06 & (1 << 0)) + it.element->properties.path.addition_status = 0xFF; + + } while (map_element_iterator_next(&it)); + gfx_invalidate_screen(); } @@ -513,23 +582,92 @@ static void cheat_generate_guests(int count) window_invalidate_by_class(WC_BOTTOM_TOOLBAR); } -static void cheat_make_guests_happy() +static void cheat_set_guest_parameter(int parameter, int value) { int spriteIndex; rct_peep *peep; - FOR_ALL_GUESTS(spriteIndex, peep) - if (peep->var_2A == 0) - peep->happiness = 255; + FOR_ALL_GUESTS(spriteIndex, peep) { + switch(parameter) { + case GUEST_PARAMETER_HAPPINESS: + peep->happiness = value; + break; + case GUEST_PARAMETER_ENERGY: + peep->energy = value; + break; + case GUEST_PARAMETER_HUNGER: + peep->hunger = value; + break; + case GUEST_PARAMETER_THIRST: + peep->thirst = value; + break; + case GUEST_PARAMETER_NAUSEA: + peep->nausea = value; + break; + case GUEST_PARAMETER_NAUSEA_TOLERANCE: + peep->nausea_tolerance = value; + break; + case GUEST_PARAMETER_BATHROOM: + peep->bathroom = value; + break; + case GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY: + peep->intensity = (15 << 4) | value; + break; + } + peep_update_sprite_type(peep); + } + } -static void cheat_make_guests_nauseous() +static void cheat_give_all_guests(int object) { int spriteIndex; rct_peep *peep; - FOR_ALL_GUESTS(spriteIndex, peep) - peep->flags |= PEEP_FLAGS_NAUSEA; + FOR_ALL_GUESTS(spriteIndex, peep) { + switch(object) + { + case OBJECT_PARK_MAP: + peep->item_standard_flags |= PEEP_ITEM_MAP; + break; + case OBJECT_BALLOON: + peep->item_standard_flags |= PEEP_ITEM_BALLOON; + peep->balloon_colour=scenario_rand_max(31); + break; + case OBJECT_UMBRELLA: + peep->item_standard_flags |= PEEP_ITEM_UMBRELLA; + peep->umbrella_colour=scenario_rand_max(31); + break; + } + peep_update_sprite_type(peep); + } + window_invalidate_by_class(WC_PEEP); +} + +static void cheat_remove_all_guests() +{ + int i; + rct_ride *ride; + + FOR_ALL_RIDES(i, ride) + { + ride_clear_for_construction(i); + ride_set_status(i, RIDE_STATUS_CLOSED); + } + window_invalidate_by_class(WC_RIDE); + + rct_peep *peep; + uint16 spriteIndex, nextSpriteIndex; + + for (spriteIndex = RCT2_GLOBAL(RCT2_ADDRESS_SPRITES_START_PEEP, uint16); spriteIndex != SPRITE_INDEX_NULL; spriteIndex = nextSpriteIndex) { + peep = &(g_sprite_list[spriteIndex].peep); + nextSpriteIndex = peep->next; + if (peep->type == PEEP_TYPE_GUEST) { + peep_remove(peep); + } + } + + gfx_invalidate_screen(); } static void cheat_explode_guests() @@ -611,18 +749,72 @@ static void window_cheats_guests_mouseup() case WIDX_TAB_4: window_cheats_set_page(w, widgetIndex - WIDX_TAB_1); break; - case WIDX_HAPPY_GUESTS: - cheat_make_guests_happy(); + case WIDX_GUEST_HAPPINESS_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_HAPPINESS,255); + break; + case WIDX_GUEST_HAPPINESS_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_HAPPINESS,0); + break; + case WIDX_GUEST_ENERGY_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_ENERGY,127); + break; + case WIDX_GUEST_ENERGY_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_ENERGY,0); + break; + case WIDX_GUEST_HUNGER_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_HUNGER,0); + break; + case WIDX_GUEST_HUNGER_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_HUNGER,255); + break; + case WIDX_GUEST_THIRST_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_THIRST,0); + break; + case WIDX_GUEST_THIRST_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_THIRST,255); + break; + case WIDX_GUEST_NAUSEA_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_NAUSEA,255); + break; + case WIDX_GUEST_NAUSEA_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_NAUSEA,0); + break; + case WIDX_GUEST_NAUSEA_TOLERANCE_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_NAUSEA_TOLERANCE,PEEP_NAUSEA_TOLERANCE_HIGH); + break; + case WIDX_GUEST_NAUSEA_TOLERANCE_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_NAUSEA_TOLERANCE,PEEP_NAUSEA_TOLERANCE_NONE); + break; + case WIDX_GUEST_BATHROOM_MAX: + cheat_set_guest_parameter(GUEST_PARAMETER_BATHROOM,255); + break; + case WIDX_GUEST_BATHROOM_MIN: + cheat_set_guest_parameter(GUEST_PARAMETER_BATHROOM,0); + break; + case WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1: + cheat_set_guest_parameter(GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY,1); + break; + case WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15: + cheat_set_guest_parameter(GUEST_PARAMETER_PREFERRED_RIDE_INTENSITY,0); break; case WIDX_TRAM_GUESTS: cheat_generate_guests(CHEATS_TRAM_INCREMENT); break; - case WIDX_NAUSEA_GUESTS: - cheat_make_guests_nauseous(); + case WIDX_REMOVE_ALL_GUESTS: + cheat_remove_all_guests(); break; case WIDX_EXPLODE_GUESTS: cheat_explode_guests(); break; + case WIDX_GIVE_GUESTS_PARK_MAPS: + cheat_give_all_guests(OBJECT_PARK_MAP); + break; + case WIDX_GIVE_GUESTS_BALLOONS: + cheat_give_all_guests(OBJECT_BALLOON); + break; + case WIDX_GIVE_GUESTS_UMBRELLAS: + cheat_give_all_guests(OBJECT_UMBRELLA); + break; } } @@ -811,10 +1003,15 @@ static void window_cheats_paint() gfx_draw_string_left(dpi, STR_CHEAT_TIP_CLEAR_LOAN, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO); } else if (w->page == WINDOW_CHEATS_PAGE_GUESTS){ - gfx_draw_string_left(dpi, STR_CHEAT_TIP_HAPPY_GUESTS, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(0) + TXTO); - gfx_draw_string_left(dpi, STR_CHEAT_TIP_LARGE_TRAM_GUESTS, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO); - gfx_draw_string_left(dpi, STR_CHEAT_TIP_NAUSEA, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO); - gfx_draw_string_left(dpi, STR_CHEAT_TIP_EXPLODE, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(6) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_HAPPINESS, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(0) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_ENERGY, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(1) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_HUNGER, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(2) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_THIRST, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(3) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_NAUSEA, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(4) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_NAUSEA_TOLERANCE, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(5) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_BATHROOM, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(6) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GUEST_PREFERRED_INTENSITY,NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(7) + TXTO); + gfx_draw_string_left(dpi, STR_CHEAT_GIVE_ALL_GUESTS, NULL, 0, w->x + XPL(0) + TXTO, w->y + YPL(8) + TXTO); } }