From a18dc9dc61cdf0d063900640c3e108083d31913b Mon Sep 17 00:00:00 2001 From: xperia64 Date: Sat, 15 Aug 2015 14:42:53 -0400 Subject: [PATCH 1/2] Add a cheat so guests ignore intensity and nausea ratings --- data/language/english_us.txt | 1 + src/config.c | 1 + src/config.h | 1 + src/localisation/string_ids.h | 2 +- src/peep/peep.c | 22 +++++++++++----------- src/windows/cheats.c | 28 ++++++++++++++++++---------- 6 files changed, 33 insertions(+), 22 deletions(-) diff --git a/data/language/english_us.txt b/data/language/english_us.txt index 147eaac8dd..d7770a5fd7 100644 --- a/data/language/english_us.txt +++ b/data/language/english_us.txt @@ -3833,3 +3833,4 @@ STR_5489 :{SMALLFONT}{BLACK}Show only tracked guests STR_5490 :Disable audio on focus loss STR_5491 :Inventions list STR_5492 :Scenario options +STR_5493 :Guests ignore intensities diff --git a/src/config.c b/src/config.c index ea8dfefc7e..6d37e1da0d 100644 --- a/src/config.c +++ b/src/config.c @@ -219,6 +219,7 @@ config_property_definition _cheatDefinitions[] = { { offsetof(cheat_configuration, disable_all_breakdowns), "disable_all_breakdowns", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(cheat_configuration, unlock_all_prices), "unlock_all_prices", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, { offsetof(cheat_configuration, build_in_pause_mode), "build_in_pause_mode", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, + { offsetof(cheat_configuration, ignore_ride_intensity), "ignore_ride_intensity", CONFIG_VALUE_TYPE_BOOLEAN, false, NULL }, }; config_property_definition _twitchDefinitions[] = { diff --git a/src/config.h b/src/config.h index 46a23acb30..083ba9861a 100644 --- a/src/config.h +++ b/src/config.h @@ -193,6 +193,7 @@ typedef struct { uint8 disable_all_breakdowns; uint8 unlock_all_prices; uint8 build_in_pause_mode; + uint8 ignore_ride_intensity; } cheat_configuration; typedef struct { diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 8fbbc0d93e..de9436ff44 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -1414,7 +1414,7 @@ enum { STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362, STR_CHEAT_MORE_THAN_1 = 5363, STR_CHEAT_LESS_THAN_15 = 5364, - + STR_CHEAT_IGNORE_INTENSITY = 5493, // Misc. STR_CHEAT_FREEZE_CLIMATE = 2767, STR_CHEAT_UNFREEZE_CLIMATE = 2768, diff --git a/src/peep/peep.c b/src/peep/peep.c index 8fac10960e..08cfbf1149 100644 --- a/src/peep/peep.c +++ b/src/peep/peep.c @@ -7665,7 +7665,7 @@ static bool peep_should_go_on_ride_again(rct_peep *peep, rct_ride *ride) { if (!(RCT2_GLOBAL(0x0097CF40 + (ride->type * 8), uint32) & 0x100000)) return false; if (ride->excitement == (ride_rating)0xFFFF) return false; - if (ride->intensity > RIDE_RATING(10,00)) return false; + if (ride->intensity > RIDE_RATING(10,00) && !gConfigCheat.ignore_ride_intensity) return false; if (peep->happiness < 180) return false; if (peep->energy < 100) return false; if (peep->nausea > 160) return false; @@ -7694,9 +7694,9 @@ static bool peep_really_liked_ride(rct_peep *peep, rct_ride *ride) { return peep->happiness >= 215 && - peep->nausea <= 120 && + ((peep->nausea <= 120 && ride->excitement != (ride_rating)0xFFFF && - ride->intensity <= RIDE_RATING(10,00); + ride->intensity <= RIDE_RATING(10,00))||gConfigCheat.ignore_ride_intensity); } /** @@ -7992,7 +7992,7 @@ static bool sub_6960AB(rct_peep *peep, int rideIndex, int dh, int bp) } if (ride->excitement != 0xFFFF) { if (rideIndex == peep->guest_heading_to_ride_id) { - if (ride->intensity > RIDE_RATING(10, 00)) goto loc_6965F1; + if (ride->intensity > RIDE_RATING(10, 00) && !gConfigCheat.ignore_ride_intensity) goto loc_6965F1; goto loc_696387; } if (RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_RAIN_LEVEL, uint8) != 0) { @@ -8008,7 +8008,7 @@ static bool sub_6960AB(rct_peep *peep, int rideIndex, int dh, int bp) } ride_rating maxIntensity = min((peep->intensity >> 4) * 100, 1000) + peep->happiness; ride_rating minIntensity = ((peep->intensity & 0x0F) * 100) - peep->happiness; - if (ride->intensity < minIntensity) { + if (ride->intensity < minIntensity && !gConfigCheat.ignore_ride_intensity) { if (!(bp & 4)) { peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_MORE_THRILLING, rideIndex); if (peep->happiness_growth_rate >= 64) { @@ -8018,11 +8018,11 @@ static bool sub_6960AB(rct_peep *peep, int rideIndex, int dh, int bp) } goto loc_696658; } - if (ride->intensity > maxIntensity) goto loc_6965F1; + if (ride->intensity > maxIntensity && !gConfigCheat.ignore_ride_intensity) goto loc_6965F1; ride_rating minNausea = RCT2_ADDRESS(0x00982390, uint16)[(peep->nausea_tolerance & 3) * 2] - peep->happiness; ride_rating maxNausea = RCT2_ADDRESS(0x00982392, uint16)[(peep->nausea_tolerance & 3) * 2] + peep->happiness; - if (ride->nausea > maxNausea) { + if (ride->nausea > maxNausea && !gConfigCheat.ignore_ride_intensity) { if (!(bp & 4)) { peep_insert_new_thought(peep, PEEP_THOUGHT_TYPE_SICKENING, rideIndex); if (peep->happiness_growth_rate >= 64) { @@ -8032,15 +8032,15 @@ static bool sub_6960AB(rct_peep *peep, int rideIndex, int dh, int bp) } goto loc_696658; } - if (ride->nausea >= 140 && peep->nausea > 160) goto loc_69666E; + if (ride->nausea >= 140 && peep->nausea > 160 && !gConfigCheat.ignore_ride_intensity) goto loc_69666E; goto loc_696387; } if (RCT2_ADDRESS(0x0097D4F2, uint16)[ride->type * 8] & 0x10) { if (scenario_rand() > 0x1999U) goto loc_69666E; - if (ride->max_positive_vertical_g > 500) goto loc_69666E; - if (ride->max_negative_vertical_g < -400) goto loc_69666E; - if (ride->max_lateral_g > 400) goto loc_69666E; + if (ride->max_positive_vertical_g > 500 && !gConfigCheat.ignore_ride_intensity) goto loc_69666E; + if (ride->max_negative_vertical_g < -400 && !gConfigCheat.ignore_ride_intensity) goto loc_69666E; + if (ride->max_lateral_g > 400 && !gConfigCheat.ignore_ride_intensity) goto loc_69666E; } loc_696387:; diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 93710be4c6..c1385b4ca1 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -77,6 +77,7 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_GUEST_BATHROOM_MIN, WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1, WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15, + WIDX_GUEST_IGNORE_RIDE_INTENSITY, WIDX_GIVE_ALL_GUESTS_GROUP, WIDX_GIVE_GUESTS_MONEY, WIDX_GIVE_GUESTS_PARK_MAPS, @@ -185,7 +186,7 @@ static rct_widget window_cheats_money_widgets[] = { static rct_widget window_cheats_guests_widgets[] = { MAIN_CHEATS_WIDGETS, - { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(0), HPL(9.5), STR_CHEAT_SET_GUESTS_PARAMETERS, STR_NONE }, // Guests parameters group frame + { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(0), HPL(10.5), STR_CHEAT_SET_GUESTS_PARAMETERS, STR_NONE }, // Guests parameters group frame { WWT_CLOSEBOX, 1, MAX_BTN_LEFT, MAX_BTN_RIGHT, YPL(1), HPL(1), STR_MAX, STR_NONE }, // happiness max { WWT_CLOSEBOX, 1, MIN_BTN_LEFT, MIN_BTN_RIGHT, YPL(1), HPL(1), STR_MIN, STR_NONE }, // happiness min { WWT_CLOSEBOX, 1, MAX_BTN_LEFT, MAX_BTN_RIGHT, YPL(2), HPL(2), STR_MAX, STR_NONE }, // energy max @@ -202,14 +203,15 @@ static rct_widget window_cheats_guests_widgets[] = { { WWT_CLOSEBOX, 1, MIN_BTN_LEFT, MIN_BTN_RIGHT, YPL(7), HPL(7), STR_MIN, STR_NONE }, // bathroom min { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(9), HPL(9), STR_CHEAT_MORE_THAN_1, STR_NONE }, // ride intensity > 1 { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(9), HPL(9), STR_CHEAT_LESS_THAN_15, STR_NONE }, // ride intensity < 15 - { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(11), HPL(13.5), STR_CHEAT_GIVE_ALL_GUESTS, STR_NONE }, // Guests parameters group frame - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(12), HPL(12), STR_CHEAT_CURRENCY_FORMAT, STR_NONE }, // give guests money - { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(12), HPL(12), 2018, STR_NONE }, // give guests park maps - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(13), HPL(13), 2016, STR_NONE }, // give guests balloons - { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(13), HPL(13), 2020, STR_NONE }, // give guests umbrellas - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(15), HPL(15), STR_CHEAT_LARGE_TRAM_GUESTS, STR_CHEAT_TIP_LARGE_TRAM_GUESTS }, // large tram - { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(15), HPL(15), STR_CHEAT_REMOVE_ALL_GUESTS, STR_CHEAT_TIP_REMOVE_ALL_GUESTS }, // remove all guests - { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(16), HPL(16), STR_CHEAT_EXPLODE, STR_CHEAT_TIP_EXPLODE }, // explode guests + { WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(10), OHPL(10), STR_CHEAT_IGNORE_INTENSITY, STR_NONE }, // don't care about intensity + { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(12), HPL(14.5), STR_CHEAT_GIVE_ALL_GUESTS, STR_NONE }, // Guests parameters group frame + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(13), HPL(13), STR_CHEAT_CURRENCY_FORMAT, STR_NONE }, // give guests money + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(13), HPL(13), 2018, STR_NONE }, // give guests park maps + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(14), HPL(14), 2016, STR_NONE }, // give guests balloons + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(14), HPL(14), 2020, STR_NONE }, // give guests umbrellas + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(16), HPL(16), STR_CHEAT_LARGE_TRAM_GUESTS, STR_CHEAT_TIP_LARGE_TRAM_GUESTS }, // large tram + { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(16), HPL(16), STR_CHEAT_REMOVE_ALL_GUESTS, STR_CHEAT_TIP_REMOVE_ALL_GUESTS }, // remove all guests + { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(17), HPL(17), STR_CHEAT_EXPLODE, STR_CHEAT_TIP_EXPLODE }, // explode guests { WIDGETS_END }, }; @@ -406,7 +408,7 @@ static rct_window_event_list *window_cheats_page_events[] = { static uint64 window_cheats_page_enabled_widgets[] = { (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_HIGH_MONEY) | (1ULL << WIDX_CLEAR_LOAN), - (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_GUEST_PARAMETERS_GROUP) | (1ULL << WIDX_GUEST_HAPPINESS_MAX) | (1ULL << WIDX_GUEST_HAPPINESS_MIN) | (1ULL << WIDX_GUEST_ENERGY_MAX) | (1ULL << WIDX_GUEST_ENERGY_MIN) | (1ULL << WIDX_GUEST_HUNGER_MAX) | (1ULL << WIDX_GUEST_HUNGER_MIN) | (1ULL << WIDX_GUEST_THIRST_MAX) | (1ULL << WIDX_GUEST_THIRST_MIN) | (1ULL << WIDX_GUEST_NAUSEA_MAX) | (1ULL << WIDX_GUEST_NAUSEA_MIN) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1ULL << WIDX_GUEST_BATHROOM_MAX) | (1ULL << WIDX_GUEST_BATHROOM_MIN) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1ULL << WIDX_GIVE_ALL_GUESTS_GROUP) | (1ULL << WIDX_GIVE_GUESTS_MONEY) | (1ULL << WIDX_GIVE_GUESTS_PARK_MAPS) | (1ULL << WIDX_GIVE_GUESTS_BALLOONS) | (1ULL << WIDX_GIVE_GUESTS_UMBRELLAS) | (1ULL << WIDX_TRAM_GUESTS) | (1ULL << WIDX_REMOVE_ALL_GUESTS) | (1ULL << WIDX_EXPLODE_GUESTS), + (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_GUEST_PARAMETERS_GROUP) | (1ULL << WIDX_GUEST_HAPPINESS_MAX) | (1ULL << WIDX_GUEST_HAPPINESS_MIN) | (1ULL << WIDX_GUEST_ENERGY_MAX) | (1ULL << WIDX_GUEST_ENERGY_MIN) | (1ULL << WIDX_GUEST_HUNGER_MAX) | (1ULL << WIDX_GUEST_HUNGER_MIN) | (1ULL << WIDX_GUEST_THIRST_MAX) | (1ULL << WIDX_GUEST_THIRST_MIN) | (1ULL << WIDX_GUEST_NAUSEA_MAX) | (1ULL << WIDX_GUEST_NAUSEA_MIN) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MAX) | (1ULL << WIDX_GUEST_NAUSEA_TOLERANCE_MIN) | (1ULL << WIDX_GUEST_BATHROOM_MAX) | (1ULL << WIDX_GUEST_BATHROOM_MIN) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_MORE_THAN_1) | (1ULL << WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15) | (1ULL << WIDX_GUEST_IGNORE_RIDE_INTENSITY) | (1ULL << WIDX_GIVE_ALL_GUESTS_GROUP) | (1ULL << WIDX_GIVE_GUESTS_MONEY) | (1ULL << WIDX_GIVE_GUESTS_PARK_MAPS) | (1ULL << WIDX_GIVE_GUESTS_BALLOONS) | (1ULL << WIDX_GIVE_GUESTS_UMBRELLAS) | (1ULL << WIDX_TRAM_GUESTS) | (1ULL << WIDX_REMOVE_ALL_GUESTS) | (1ULL << WIDX_EXPLODE_GUESTS), (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_FREEZE_CLIMATE) | (1ULL << WIDX_OPEN_CLOSE_PARK) | (1ULL << WIDX_WEATHER_SUN) | (1ULL << WIDX_WEATHER_THUNDER) | (1ULL << WIDX_CLEAR_GRASS) | (1ULL << WIDX_MOWED_GRASS) | (1ULL << WIDX_WATER_PLANTS) | (1ULL << WIDX_FIX_VANDALISM) | (1ULL << WIDX_REMOVE_LITTER) | (1ULL << WIDX_WIN_SCENARIO) | (1ULL << WIDX_HAVE_FUN) | (1ULL << WIDX_UNLOCK_ALL_PRICES) | (1ULL << WIDX_SANDBOX_MODE) | (1ULL << WIDX_FAST_STAFF) | (1ULL << WIDX_NORMAL_STAFF) | (1ULL << WIDX_PARK_PARAMETERS) | (1ULL << WIDX_FORCE_PARK_RATING) | (1ULL << WIDX_INCREASE_PARK_RATING) | (1ULL << WIDX_DECREASE_PARK_RATING), (1ULL << WIDX_CLOSE) | (1ULL << WIDX_TAB_1) | (1ULL << WIDX_TAB_2) | (1ULL << WIDX_TAB_3) | (1ULL << WIDX_TAB_4) | (1ULL << WIDX_RENEW_RIDES) | (1ULL << WIDX_MAKE_DESTRUCTIBLE) | (1ULL << WIDX_FIX_ALL) | (1ULL << WIDX_FAST_LIFT_HILL) | (1ULL << WIDX_DISABLE_BRAKES_FAILURE) | (1ULL << WIDX_DISABLE_ALL_BREAKDOWNS) | (1ULL << WIDX_BUILD_IN_PAUSE_MODE) | (1ULL << WIDX_RESET_CRASH_STATUS) }; @@ -853,6 +855,11 @@ static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex) case WIDX_GIVE_GUESTS_UMBRELLAS: cheat_give_all_guests(OBJECT_UMBRELLA); break; + case WIDX_GUEST_IGNORE_RIDE_INTENSITY: + gConfigCheat.ignore_ride_intensity ^= 1; + config_save_default(); + window_invalidate(w); + break; } } @@ -1040,6 +1047,7 @@ static void window_cheats_invalidate(rct_window *w) break; case WINDOW_CHEATS_PAGE_GUESTS: RCT2_GLOBAL(0x013CE952, int) = 10000; + widget_set_checkbox_value(w, WIDX_GUEST_IGNORE_RIDE_INTENSITY, gConfigCheat.ignore_ride_intensity); break; case WINDOW_CHEATS_PAGE_MISC: w->widgets[WIDX_OPEN_CLOSE_PARK].image = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_OPEN ? From 7a30f614a142519404616c187cbc71693afd74b3 Mon Sep 17 00:00:00 2001 From: xperia64 Date: Sun, 16 Aug 2015 14:16:45 -0400 Subject: [PATCH 2/2] Correct String IDs --- data/language/english_uk.txt | 1 + data/language/english_us.txt | 1 - src/localisation/string_ids.h | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index 144bf8a857..aea71e1df9 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -3836,3 +3836,4 @@ STR_5494 :Type the message you would like to send. STR_5495 :Player List STR_5496 :Player: STR_5497 :Ping: +STR_5498 :Guests ignore intensities diff --git a/data/language/english_us.txt b/data/language/english_us.txt index d7770a5fd7..147eaac8dd 100644 --- a/data/language/english_us.txt +++ b/data/language/english_us.txt @@ -3833,4 +3833,3 @@ STR_5489 :{SMALLFONT}{BLACK}Show only tracked guests STR_5490 :Disable audio on focus loss STR_5491 :Inventions list STR_5492 :Scenario options -STR_5493 :Guests ignore intensities diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index de9436ff44..b967849bcf 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -1414,7 +1414,7 @@ enum { STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362, STR_CHEAT_MORE_THAN_1 = 5363, STR_CHEAT_LESS_THAN_15 = 5364, - STR_CHEAT_IGNORE_INTENSITY = 5493, + STR_CHEAT_IGNORE_INTENSITY = 5498, // Misc. STR_CHEAT_FREEZE_CLIMATE = 2767, STR_CHEAT_UNFREEZE_CLIMATE = 2768,