From fdfb4f7bd3f976d154310e2f7162f12381b7af35 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20=C4=8Cern=C3=A1=C4=8D?= Date: Mon, 15 Feb 2016 15:55:36 +0100 Subject: [PATCH] Add "neverending marketing" cheat This cheat allows the player to have never-ending marketing campaigns --- data/language/english_uk.txt | 3 +++ src/cheats.c | 2 ++ src/cheats.h | 4 +++- src/localisation/string_ids.h | 3 +++ src/management/marketing.c | 4 ++++ src/management/marketing.h | 1 + src/windows/cheats.c | 13 ++++++++++--- 7 files changed, 26 insertions(+), 4 deletions(-) diff --git a/data/language/english_uk.txt b/data/language/english_uk.txt index aad5d24826..67d2cde94c 100644 --- a/data/language/english_uk.txt +++ b/data/language/english_uk.txt @@ -4044,6 +4044,9 @@ STR_5736 :Player STR_5737 :Closed, {COMMA16} person still on ride STR_5738 :Closed, {COMMA16} people still on ride STR_5739 :{WINDOW_COLOUR_2}Customers on ride: {BLACK}{COMMA16} +STR_5740 :Never-ending marketing campaigns +STR_5741 :{SMALLFONT}{BLACK}Marketing campaigns never end + ############# # Scenarios # diff --git a/src/cheats.c b/src/cheats.c index 4f4a0afe16..4c0de9e44f 100644 --- a/src/cheats.c +++ b/src/cheats.c @@ -19,6 +19,7 @@ bool gCheatsUnlockAllPrices = false; bool gCheatsBuildInPauseMode = false; bool gCheatsIgnoreRideIntensity = false; bool gCheatsDisableVandalism = false; +bool gCheatsNeverendingMarketing = false; int park_rating_spinner_value; @@ -383,6 +384,7 @@ void game_command_cheat(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* e case CHEAT_WINSCENARIO: scenario_success(); break; case CHEAT_FORCEWEATHER: climate_force_weather(*edx); break; case CHEAT_FREEZECLIMATE: toggle_climate_lock(); break; + case CHEAT_NEVERENDINGMARKETING: gCheatsNeverendingMarketing = !gCheatsNeverendingMarketing; break; case CHEAT_OPENCLOSEPARK: park_set_open(park_is_open() ? 0 : 1); break; case CHEAT_HAVEFUN: RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8) = OBJECTIVE_HAVE_FUN; break; case CHEAT_SETFORCEDPARKRATING: if(*edx > -1) { park_rating_spinner_value = *edx; } set_forced_park_rating(*edx); break; diff --git a/src/cheats.h b/src/cheats.h index 923e6ca99a..b65f21d4f3 100644 --- a/src/cheats.h +++ b/src/cheats.h @@ -35,6 +35,7 @@ extern bool gCheatsUnlockAllPrices; extern bool gCheatsBuildInPauseMode; extern bool gCheatsIgnoreRideIntensity; extern bool gCheatsDisableVandalism; +extern bool gCheatsNeverendingMarketing; enum { CHEAT_SANDBOXMODE, @@ -71,7 +72,8 @@ enum { CHEAT_FREEZECLIMATE, CHEAT_OPENCLOSEPARK, CHEAT_HAVEFUN, - CHEAT_SETFORCEDPARKRATING + CHEAT_SETFORCEDPARKRATING, + CHEAT_NEVERENDINGMARKETING, }; enum { diff --git a/src/localisation/string_ids.h b/src/localisation/string_ids.h index 39a88fa6d7..8fae2140c5 100644 --- a/src/localisation/string_ids.h +++ b/src/localisation/string_ids.h @@ -2344,6 +2344,9 @@ enum { STR_CUSTOMERS_ON_RIDE = 5739, + STR_CHEAT_NEVERENDING_MARKETING = 5740, + STR_CHEAT_TIP_NEVERENDING_MARKETING = 5741, + // 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/management/marketing.c b/src/management/marketing.c index d32e5b09bb..32569ab7ea 100644 --- a/src/management/marketing.c +++ b/src/management/marketing.c @@ -26,6 +26,7 @@ #include "../management/finance.h" #include "../ride/ride.h" #include "../ride/ride_data.h" +#include "../cheats.h" #include "marketing.h" #include "news_item.h" @@ -75,6 +76,9 @@ int marketing_get_campaign_guest_generation_probability(int campaign) void marketing_update() { for (int campaign = 0; campaign < ADVERTISING_CAMPAIGN_COUNT; campaign++) { + if (gCheatsNeverendingMarketing) + continue; + int active = (gMarketingCampaignDaysLeft[campaign] & CAMPAIGN_ACTIVE_FLAG) != 0; if (gMarketingCampaignDaysLeft[campaign] == 0) continue; diff --git a/src/management/marketing.h b/src/management/marketing.h index f620d4fc4b..0a7bc65fd2 100644 --- a/src/management/marketing.h +++ b/src/management/marketing.h @@ -22,6 +22,7 @@ #define _MARKETING_H_ #include "../common.h" +#include "../cheats.h" #include "../peep/peep.h" enum { diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 6800a8492a..4a61d181c1 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -35,6 +35,7 @@ #include "../interface/themes.h" #include "../cheats.h" #include "../network/network.h" +#include "../management/marketing.h" #include "error.h" #include "dropdown.h" @@ -96,6 +97,7 @@ enum WINDOW_CHEATS_WIDGET_IDX { WIDX_DECREASE_PARK_RATING, WIDX_WIN_SCENARIO, WIDX_HAVE_FUN, + WIDX_NEVERENDING_MARKETING, WIDX_CLIMATE_GROUP, WIDX_FREEZE_CLIMATE, WIDX_WEATHER, @@ -203,7 +205,7 @@ static rct_widget window_cheats_guests_widgets[] = { //Strings for following moved to window_cheats_paint() static rct_widget window_cheats_misc_widgets[] = { MAIN_CHEATS_WIDGETS, - { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(0), HPL(5.5), STR_CHEAT_GENERAL_GROUP, STR_NONE }, // General group + { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(0), HPL(6.25), STR_CHEAT_GENERAL_GROUP, STR_NONE }, // General group { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(1), HPL(1), STR_CHEAT_OPEN_PARK, STR_NONE}, // open / close park { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(1), HPL(1), STR_CHEAT_PARK_PARAMETERS, STR_CHEAT_TIP_PARK_PARAMETERS}, // Park parameters { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(2), HPL(2), STR_CHEAT_SANDBOX_MODE, STR_CHEAT_SANDBOX_MODE_TIP}, // Sandbox mode (edit land ownership in-game) @@ -214,7 +216,8 @@ static rct_widget window_cheats_misc_widgets[] = { { WWT_DROPDOWN_BUTTON, 1, WPL(1) - 10, WPL(1), YPL(4) + 8, YPL(4) + 12, STR_NUMERIC_DOWN, STR_NONE }, // decrease rating { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(5), HPL(5), STR_CHEAT_WIN_SCENARIO, STR_NONE}, // Win scenario { WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_HAVE_FUN, STR_NONE}, // Have fun! - { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(7), HPL(9.5), STR_CHEAT_CLIMATE_GROUP, STR_NONE }, // Climate group + { WWT_CHECKBOX, 1, XPL(0), WPL(0), YPL(6), HPL(6), STR_CHEAT_NEVERENDING_MARKETING, STR_CHEAT_TIP_NEVERENDING_MARKETING }, // neverending marketing campaigns + { WWT_GROUPBOX, 1, XPL(0) - GROUP_SPACE, WPL(1) + GROUP_SPACE, YPL(7.25), HPL(9.5), STR_CHEAT_CLIMATE_GROUP, STR_NONE }, // Climate group { WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(8), HPL(8), STR_CHEAT_FREEZE_CLIMATE, STR_NONE}, // Freeze climate { WWT_DROPDOWN, 1, XPL(1), WPL(1), YPL(9) + 2, YPL(9) + 13, STR_NONE, STR_FORCE_WEATHER_TOOLTIP }, // Force weather { WWT_DROPDOWN_BUTTON, 1, WPL(1) - 11, WPL(1) - 1, YPL(9) + 3, YPL(9) + 12, STR_DROPDOWN_GLYPH, STR_FORCE_WEATHER_TOOLTIP }, // Force weather @@ -399,7 +402,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_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_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_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) }; @@ -617,6 +620,9 @@ static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex) case WIDX_HAVE_FUN: game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_HAVEFUN, 0, GAME_COMMAND_CHEAT, 0, 0); break; + case WIDX_NEVERENDING_MARKETING: + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_NEVERENDINGMARKETING, 0, GAME_COMMAND_CHEAT, 0, 0); + break; case WIDX_UNLOCK_ALL_PRICES: game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_UNLOCKALLPRICES, 0, GAME_COMMAND_CHEAT, 0, 0); break; @@ -765,6 +771,7 @@ static void window_cheats_invalidate(rct_window *w) widget_set_checkbox_value(w, WIDX_FORCE_PARK_RATING, get_forced_park_rating() >= 0); w->widgets[WIDX_SANDBOX_MODE].image = gCheatsSandboxMode ? STR_CHEAT_SANDBOX_MODE_DISABLE : STR_CHEAT_SANDBOX_MODE; w->widgets[WIDX_FREEZE_CLIMATE].image = g_climate_locked ? STR_CHEAT_UNFREEZE_CLIMATE : STR_CHEAT_FREEZE_CLIMATE; + widget_set_checkbox_value(w, WIDX_NEVERENDING_MARKETING, gCheatsNeverendingMarketing); break; case WINDOW_CHEATS_PAGE_RIDES: RCT2_GLOBAL(RCT2_ADDRESS_COMMON_FORMAT_ARGS + 0, uint16) = 255;