1
0
mirror of https://github.com/OpenRCT2/OpenRCT2 synced 2025-12-10 17:42:29 +01:00

Add a cheat so guests ignore intensity and nausea ratings

This commit is contained in:
xperia64
2015-08-15 14:42:53 -04:00
parent 3efb74e1c4
commit 4733ea28c0
6 changed files with 33 additions and 23 deletions

View File

@@ -3837,4 +3837,4 @@ STR_5493 :Send Message
STR_5494 :Enter the message you would like to send.
STR_5495 :Player List
STR_5496 :Player:
STR_5497 :Ping:
STR_5497 :Ping:

View File

@@ -220,6 +220,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[] = {

View File

@@ -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 {

View File

@@ -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,

View File

@@ -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:;

View File

@@ -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 ?