static void window_cheats_money_mouseup() { int i; short widgetIndex; rct_window *w; __asm mov widgetIndex, dx __asm mov w, esi switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_TAB_1: case WIDX_TAB_2: window_cheats_set_page(w, widgetIndex - WIDX_TAB_1); break; case WIDX_HIGH_MONEY: i = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32)); if (i < INT_MAX - CHEATS_MONEY_INCREMENT) { i += CHEATS_MONEY_INCREMENT; } else { i = INT_MAX; } RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(i); window_invalidate_by_id(0x40 | WC_BOTTOM_TOOLBAR, 0); break; } }
/** * * rct2: 0x0066A498 */ int calculate_company_value() { int result; result = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32)); result += RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_VALUE, sint32); result -= RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, sint32); return result; }
/** * Pay an amount of money. * rct2: 0x069C674 * @param amount (eax) * @param type passed via global var 0x0141F56C, our type is that var/4. **/ void finance_payment(money32 amount, rct_expenditure_type type) { money32 cur_money = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32)); money32 new_money = cur_money - amount; //overflow check RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(new_money); RCT2_ADDRESS(RCT2_ADDRESS_EXPENDITURE_TABLE, money32)[type] -= amount; if (RCT2_ADDRESS(0x00988E60, uint32)[type] & 1) RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_EXPENDITURE, money32) -= amount; // Cumulative amount of money spent this day RCT2_GLOBAL(0x009A9804, uint32) |= 1; // money diry flag window_invalidate_by_id(WC_FINANCES, 0); window_invalidate_by_id(0x40 | WC_BOTTOM_TOOLBAR, 0); }
static void window_cheats_mouseup() { int i; short widgetIndex; rct_window *w; __asm mov widgetIndex, dx __asm mov w, esi switch (widgetIndex) { case WIDX_CLOSE: window_close(w); break; case WIDX_HIGH_MONEY: i = DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32)); i += 100000; RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, sint32) = ENCRYPT_MONEY(i); window_invalidate_by_id(0x40 | WC_BOTTOM_TOOLBAR, 0); break; } }
static int cc_get(const char **argv, int argc) { if (argc > 0) { if (strcmp(argv[0], "park_rating") == 0) { console_printf("park_rating %d", RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_PARK_RATING, sint16)); } else if (strcmp(argv[0], "money") == 0) { console_printf("money %d.%d0", DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32)) / 10, DECRYPT_MONEY(RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_MONEY_ENCRYPTED, money32)) % 10); } else if (strcmp(argv[0], "current_loan") == 0) { console_printf("current_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_CURRENT_LOAN, money32) / 10); } else if (strcmp(argv[0], "max_loan") == 0) { console_printf("max_loan %d", RCT2_GLOBAL(RCT2_ADDRESS_MAXIMUM_LOAN, money32) / 10); } else if (strcmp(argv[0], "guest_initial_cash") == 0) { console_printf("guest_initial_cash %d.%d0", RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) / 10, RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_CASH, money16) % 10); } else if (strcmp(argv[0], "guest_initial_happiness") == 0) { uint32 current_happiness = RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8); for (int i = 15; i <= 99; i++) { if (i == 99) { console_printf("guest_initial_happiness %d%% (%d)", 15, RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8)); } else if (current_happiness == calculate_guest_initial_happiness(i)) { console_printf("guest_initial_happiness %d%% (%d)", i, RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HAPPINESS, uint8)); break; } } } else if (strcmp(argv[0], "guest_initial_hunger") == 0) { console_printf("guest_initial_hunger %d%% (%d)", ((255 - RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8)) * 100) / 255, RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_HUNGER, uint8)); } else if (strcmp(argv[0], "guest_initial_thirst") == 0) { console_printf("guest_initial_thirst %d%% (%d)", ((255 - RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8)) * 100) / 255, RCT2_GLOBAL(RCT2_ADDRESS_GUEST_INITIAL_THIRST, uint8)); } else if (strcmp(argv[0], "guest_prefer_less_intense_rides") == 0) { console_printf("guest_prefer_less_intense_rides %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PREF_LESS_INTENSE_RIDES) != 0); } else if (strcmp(argv[0], "guest_prefer_more_intense_rides") == 0) { console_printf("guest_prefer_more_intense_rides %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PREF_MORE_INTENSE_RIDES) != 0); } else if (strcmp(argv[0], "forbid_marketing_campagns") == 0) { console_printf("forbid_marketing_campagns %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_MARKETING_CAMPAIGN) != 0); } else if (strcmp(argv[0], "forbid_landscape_changes") == 0) { console_printf("forbid_landscape_changes %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES) != 0); } else if (strcmp(argv[0], "forbid_tree_removal") == 0) { console_printf("forbid_tree_removal %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_TREE_REMOVAL) != 0); } else if (strcmp(argv[0], "forbid_high_construction") == 0) { console_printf("forbid_high_construction %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_HIGH_CONSTRUCTION) != 0); } else if (strcmp(argv[0], "pay_for_rides") == 0) { console_printf("pay_for_rides %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_FREE_ENTRY) != 0); } else if (strcmp(argv[0], "no_money") == 0) { console_printf("no_money %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_NO_MONEY) != 0); } else if (strcmp(argv[0], "difficult_park_rating") == 0) { console_printf("difficult_park_rating %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_DIFFICULT_PARK_RATING) != 0); } else if (strcmp(argv[0], "difficult_guest_generation") == 0) { console_printf("difficult_guest_generation %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_DIFFICULT_GUEST_GENERATION) != 0); } else if (strcmp(argv[0], "park_open") == 0) { console_printf("park_open %d", (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_PARK_OPEN) != 0); } else if (strcmp(argv[0], "land_rights_cost") == 0) { console_printf("land_rights_cost %d.%d0", RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) / 10, RCT2_GLOBAL(RCT2_ADDRESS_LAND_COST, money16) % 10); } else if (strcmp(argv[0], "construction_rights_cost") == 0) { console_printf("construction_rights_cost %d.%d0", RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money32) / 10, RCT2_GLOBAL(RCT2_ADDRESS_CONSTRUCTION_RIGHTS_COST, money32) % 10); } else if (strcmp(argv[0], "climate") == 0) { const char* climate_names[] = { "cool_and_wet", "warm", "hot_and_dry", "cold" }; console_printf("climate %s (%d)", climate_names[RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, sint8)], RCT2_GLOBAL(RCT2_ADDRESS_CLIMATE, sint8)); } else if (strcmp(argv[0], "game_speed") == 0) { console_printf("game_speed %d", gGameSpeed); } else if (strcmp(argv[0], "console_small_font") == 0) { console_printf("console_small_font %d", gConfigInterface.console_small_font); } else if (strcmp(argv[0], "test_unfinished_tracks") == 0) { console_printf("test_unfinished_tracks %d", gConfigGeneral.test_unfinished_tracks); } else if (strcmp(argv[0], "no_test_crashes") == 0) { console_printf("no_test_crashes %d", gConfigGeneral.no_test_crashes); } else { console_writeline_warning("Invalid variable."); } } return 0; }