Add cheat to disable littering

Add cheat and increment NETWORK_STREAM_VERSION
This commit is contained in:
Derek Lee 2016-03-19 21:25:19 -07:00
parent 6c505025f5
commit c4226235e3
10 changed files with 45 additions and 32 deletions

View File

@ -4106,6 +4106,8 @@ STR_5797 :{SMALLFONT}{BLACK}Disables weather changes and{NEWLINE}freezes the
STR_5798 :{SMALLFONT}{BLACK}Allows building actions in pause mode
STR_5799 :{SMALLFONT}{BLACK}Disables ride breakdowns and crashes due to brake failure
STR_5800 :{SMALLFONT}{BLACK}Prevents rides from breaking down
STR_5801 :Disable littering
STR_5802 :{SMALLFONT}{BLACK}Stops guests from littering and vomiting
#############
# Scenarios #

View File

@ -19,6 +19,7 @@ bool gCheatsUnlockAllPrices = false;
bool gCheatsBuildInPauseMode = false;
bool gCheatsIgnoreRideIntensity = false;
bool gCheatsDisableVandalism = false;
bool gCheatsDisableLittering = false;
bool gCheatsNeverendingMarketing = false;
bool gCheatsFreezeClimate = false;
@ -365,6 +366,7 @@ void game_command_cheat(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* e
case CHEAT_BUILDINPAUSEMODE: gCheatsBuildInPauseMode = !gCheatsBuildInPauseMode; break;
case CHEAT_IGNORERIDEINTENSITY: gCheatsIgnoreRideIntensity = !gCheatsIgnoreRideIntensity; break;
case CHEAT_DISABLEVANDALISM: gCheatsDisableVandalism = !gCheatsDisableVandalism; break;
case CHEAT_DISABLELITTERING: gCheatsDisableLittering = !gCheatsDisableLittering; break;
case CHEAT_INCREASEMONEY: cheat_increase_money(*edx); break;
case CHEAT_CLEARLOAN: cheat_clear_loan(); break;
case CHEAT_SETGUESTPARAMETER: cheat_set_guest_parameter(*edx, *edi); break;
@ -412,6 +414,7 @@ void cheats_reset()
gCheatsBuildInPauseMode = false;
gCheatsIgnoreRideIntensity = false;
gCheatsDisableVandalism = false;
gCheatsDisableLittering = false;
gCheatsNeverendingMarketing = false;
gCheatsFreezeClimate = false;
}

View File

@ -35,6 +35,7 @@ extern bool gCheatsUnlockAllPrices;
extern bool gCheatsBuildInPauseMode;
extern bool gCheatsIgnoreRideIntensity;
extern bool gCheatsDisableVandalism;
extern bool gCheatsDisableLittering;
extern bool gCheatsNeverendingMarketing;
extern bool gCheatsFreezeClimate;
@ -51,6 +52,7 @@ enum {
CHEAT_BUILDINPAUSEMODE,
CHEAT_IGNORERIDEINTENSITY,
CHEAT_DISABLEVANDALISM,
CHEAT_DISABLELITTERING,
CHEAT_INCREASEMONEY,
CHEAT_CLEARLOAN,
CHEAT_SETGUESTPARAMETER,

View File

@ -872,6 +872,7 @@ int game_load_network(SDL_RWops* rw)
gCheatsBuildInPauseMode = SDL_ReadU8(rw);
gCheatsIgnoreRideIntensity = SDL_ReadU8(rw);
gCheatsDisableVandalism = SDL_ReadU8(rw);
gCheatsDisableLittering = SDL_ReadU8(rw);
gCheatsNeverendingMarketing = SDL_ReadU8(rw);
gCheatsFreezeClimate = SDL_ReadU8(rw);

View File

@ -2431,6 +2431,9 @@ enum {
STR_CHEAT_TIP_DISABLE_BRAKES_FAILURE = 5799,
STR_CHEAT_TIP_DISABLE_BREAKDOWNS = 5800,
STR_CHEAT_DISABLE_LITTERING = 5801,
STR_CHEAT_DISABLE_LITTERING_TIP = 5802,
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
STR_COUNT = 32768
};

View File

@ -68,7 +68,7 @@ extern "C" {
// This define specifies which version of network stream current build uses.
// It is used for making sure only compatible builds get connected, even within
// single OpenRCT2 version.
#define NETWORK_STREAM_VERSION "5"
#define NETWORK_STREAM_VERSION "6"
#define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION
#define NETWORK_DISCONNECT_REASON_BUFFER_SIZE 256

View File

@ -262,37 +262,28 @@ static uint8 peep_assess_surroundings(sint16 center_x, sint16 center_y, sint16 c
}
}
short num_litter;
num_litter = 0;
rct_litter* litter;
for (uint16 sprite_idx = RCT2_GLOBAL(RCT2_ADDRESS_SPRITES_START_LITTER, uint16); sprite_idx != SPRITE_INDEX_NULL; sprite_idx = litter->next) {
litter = &(g_sprite_list[sprite_idx].litter);
sint16 dist_x = abs(litter->x - center_x);
sint16 dist_y = abs(litter->y - center_y);
if (max(dist_x, dist_y) <= 160){
if (max(dist_x, dist_y) <= 160) {
num_rubbish++;
}
}
if (num_fountains >= 5){
if (num_rubbish < 20)
return 3;
}
if (num_fountains >= 5 && num_rubbish < 20)
return 3;
if (num_scenery >= 40){
if (num_rubbish < 8)
return 1;
}
if (num_scenery >= 40 && num_rubbish < 8)
return 1;
if (nearby_music == 1){
if (num_rubbish < 20)
return 4;
}
if (nearby_music == 1 && num_rubbish < 20)
return 4;
if (num_rubbish < 2)
if (num_rubbish < 2 && !gCheatsDisableLittering)
// if disable littering cheat is enabled, peeps will not have the "clean and tidy park" thought
return 2;
return 0;

View File

@ -1115,6 +1115,7 @@ int scenario_save_network(SDL_RWops* rw)
SDL_WriteU8(rw, gCheatsBuildInPauseMode);
SDL_WriteU8(rw, gCheatsIgnoreRideIntensity);
SDL_WriteU8(rw, gCheatsDisableVandalism);
SDL_WriteU8(rw, gCheatsDisableLittering);
SDL_WriteU8(rw, gCheatsNeverendingMarketing);
SDL_WriteU8(rw, gCheatsFreezeClimate);

View File

@ -78,6 +78,7 @@ enum WINDOW_CHEATS_WIDGET_IDX {
WIDX_GUEST_RIDE_INTENSITY_LESS_THAN_15,
WIDX_GUEST_IGNORE_RIDE_INTENSITY,
WIDX_DISABLE_VANDALISM,
WIDX_DISABLE_LITTERING,
WIDX_GIVE_ALL_GUESTS_GROUP,
WIDX_GIVE_GUESTS_MONEY,
WIDX_GIVE_GUESTS_PARK_MAPS,
@ -172,7 +173,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(11.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(12.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
@ -191,14 +192,15 @@ static rct_widget window_cheats_guests_widgets[] = {
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(9), HPL(9), STR_CHEAT_LESS_THAN_15, STR_NONE }, // ride intensity < 15
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(10), OHPL(10), STR_CHEAT_IGNORE_INTENSITY, STR_CHEAT_TIP_IGNORE_INTENSITY }, // guests ignore intensity
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(11), OHPL(11), STR_CHEAT_DISABLE_VANDALISM, STR_CHEAT_DISABLE_VANDALISM_TIP }, // disable vandalism
{ WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(13), HPL(15.5), STR_CHEAT_GIVE_ALL_GUESTS, STR_NONE }, // Guests parameters group frame
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(14), HPL(14), STR_CHEAT_CURRENCY_FORMAT, STR_NONE }, // give guests money
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(14), HPL(14), STR_SHOP_ITEM_PLURAL_PARK_MAP, STR_NONE }, // give guests park maps
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(15), HPL(15), STR_SHOP_ITEM_PLURAL_BALLOON, STR_NONE }, // give guests balloons
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(15), HPL(15), STR_SHOP_ITEM_PLURAL_UMBRELLA, STR_NONE }, // give guests umbrellas
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(17), HPL(17), STR_CHEAT_LARGE_TRAM_GUESTS, STR_CHEAT_TIP_LARGE_TRAM_GUESTS }, // large tram
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(17), HPL(17), STR_CHEAT_REMOVE_ALL_GUESTS, STR_CHEAT_TIP_REMOVE_ALL_GUESTS }, // remove all guests
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(18), HPL(18), STR_CHEAT_EXPLODE, STR_CHEAT_TIP_EXPLODE }, // explode guests
{ WWT_CHECKBOX, 2, XPL(0), OWPL, YPL(12), OHPL(12), STR_CHEAT_DISABLE_LITTERING, STR_CHEAT_DISABLE_LITTERING_TIP }, // disable littering
{ WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(14), HPL(16.5), STR_CHEAT_GIVE_ALL_GUESTS, STR_NONE }, // Guests parameters group frame
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(15), HPL(15), STR_CHEAT_CURRENCY_FORMAT, STR_NONE }, // give guests money
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(15), HPL(15), STR_SHOP_ITEM_PLURAL_PARK_MAP, STR_NONE }, // give guests park maps
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(16), HPL(16), STR_SHOP_ITEM_PLURAL_BALLOON, STR_NONE }, // give guests balloons
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(16), HPL(16), STR_SHOP_ITEM_PLURAL_UMBRELLA, STR_NONE }, // give guests umbrellas
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(18), HPL(18), STR_CHEAT_LARGE_TRAM_GUESTS, STR_CHEAT_TIP_LARGE_TRAM_GUESTS }, // large tram
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(18), HPL(18), STR_CHEAT_REMOVE_ALL_GUESTS, STR_CHEAT_TIP_REMOVE_ALL_GUESTS }, // remove all guests
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(19), HPL(19), STR_CHEAT_EXPLODE, STR_CHEAT_TIP_EXPLODE }, // explode guests
{ WIDGETS_END },
};
@ -401,7 +403,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_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_DISABLE_VANDALISM),
(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_DISABLE_VANDALISM) | (1ULL << WIDX_DISABLE_LITTERING),
(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) | (1ULL << WIDX_WEATHER_DROPDOWN_BUTTON) | (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_NEVERENDING_MARKETING) | (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) | (1ULL << WIDX_10_MINUTE_INSPECTIONS) | (1ULL << WIDX_SHOW_ALL_OPERATING_MODES) | (1ULL << WIDX_SHOW_VEHICLES_FROM_OTHER_TRACK_TYPES)
};
@ -578,6 +580,9 @@ static void window_cheats_guests_mouseup(rct_window *w, int widgetIndex)
case WIDX_DISABLE_VANDALISM:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLEVANDALISM, 0, GAME_COMMAND_CHEAT, 0, 0);
break;
case WIDX_DISABLE_LITTERING:
game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLELITTERING, 0, GAME_COMMAND_CHEAT, 0, 0);
break;
}
}
@ -763,6 +768,7 @@ static void window_cheats_invalidate(rct_window *w)
RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS, int) = 10000;
widget_set_checkbox_value(w, WIDX_GUEST_IGNORE_RIDE_INTENSITY, gCheatsIgnoreRideIntensity);
widget_set_checkbox_value(w, WIDX_DISABLE_VANDALISM, gCheatsDisableVandalism);
widget_set_checkbox_value(w, WIDX_DISABLE_LITTERING, gCheatsDisableLittering);
break;
case WINDOW_CHEATS_PAGE_MISC:
w->widgets[WIDX_OPEN_CLOSE_PARK].image = RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_OPEN ?

View File

@ -20,6 +20,7 @@
#include "../addresses.h"
#include "../audio/audio.h"
#include "../cheats.h"
#include "../interface/viewport.h"
#include "../localisation/date.h"
#include "../localisation/localisation.h"
@ -546,9 +547,8 @@ static bool litter_can_be_at(int x, int y, int z)
*/
void litter_create(int x, int y, int z, int direction, int type)
{
rct_litter *litter, *newestLitter;
uint16 spriteIndex, nextSpriteIndex;
uint32 newestLitterCreationTick;
if (gCheatsDisableLittering)
return;
x += TileDirectionDelta[direction >> 3].x / 8;
y += TileDirectionDelta[direction >> 3].y / 8;
@ -556,6 +556,10 @@ void litter_create(int x, int y, int z, int direction, int type)
if (!litter_can_be_at(x, y, z))
return;
rct_litter *litter, *newestLitter;
uint16 spriteIndex, nextSpriteIndex;
uint32 newestLitterCreationTick;
if (RCT2_GLOBAL(RCT2_ADDRESS_SPRITES_COUNT_LITTER, uint16) >= 500) {
newestLitter = NULL;
newestLitterCreationTick = 0;