mirror of https://github.com/OpenRCT2/OpenRCT2.git
Rework land ownership cheat into sandbox mode
This commit is contained in:
parent
72de8ad103
commit
7ed434a804
|
@ -3611,9 +3611,9 @@ STR_5274 :{SMALLFONT}{BLACK}Footpath
|
|||
STR_5275 :Search for Objects
|
||||
STR_5276 :Enter the name of an object to search for
|
||||
STR_5277 :Clear
|
||||
STR_5278 :Editable land rights
|
||||
STR_5279 :Normal map window
|
||||
STR_5280 :{SMALLFONT}{BLACK}Allow editing land ownership settings through the Map window
|
||||
STR_5278 :Sandbox mode
|
||||
STR_5279 :Sandbox mode off
|
||||
STR_5280 :{SMALLFONT}{BLACK}Allow editing land ownership settings through the Map window{NEWLINE}and other options that are normally restricted to the Scenario Editor
|
||||
STR_5281 :{SMALLFONT}{BLACK}Features
|
||||
STR_5282 :RCT1 Ride Open/Close Lights
|
||||
STR_5283 :RCT1 Park Open/Close Lights
|
||||
|
|
|
@ -0,0 +1,25 @@
|
|||
/*****************************************************************************
|
||||
* Copyright (c) 2015 Michael Steenbeek
|
||||
* OpenRCT2, an open source clone of Roller Coaster Tycoon 2.
|
||||
*
|
||||
* This file is part of OpenRCT2.
|
||||
*
|
||||
* OpenRCT2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
|
||||
* This program is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
*****************************************************************************/
|
||||
|
||||
#ifndef _CHEATS_H_
|
||||
#define _CHEATS_H_
|
||||
|
||||
int gSandboxMode;
|
||||
#endif
|
|
@ -31,6 +31,7 @@
|
|||
#include "../world/sprite.h"
|
||||
#include "../input.h"
|
||||
#include "viewport.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
static void viewport_interaction_remove_scenery(rct_map_element *mapElement, int x, int y);
|
||||
static void viewport_interaction_remove_footpath(rct_map_element *mapElement, int x, int y);
|
||||
|
@ -301,7 +302,7 @@ int viewport_interaction_get_item_right(int x, int y, viewport_interaction_info
|
|||
return info->type;
|
||||
|
||||
case VIEWPORT_INTERACTION_ITEM_PARK:
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR))
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode)
|
||||
break;
|
||||
|
||||
if (map_element_get_type(mapElement) != MAP_ELEMENT_TYPE_ENTRANCE)
|
||||
|
@ -633,4 +634,4 @@ void sub_68A15E(int screenX, int screenY, short *x, short *y, int *direction, rc
|
|||
*y = map_pos.y & ~0x1F;
|
||||
if (direction != NULL) *direction = myDirection;
|
||||
if (mapElement != NULL) *mapElement = myMapElement;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1482,9 +1482,9 @@ enum {
|
|||
|
||||
STR_GIANT_SCREENSHOT = 5260,
|
||||
|
||||
STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR = 5278,
|
||||
STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR_DISABLE = 5279,
|
||||
STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR_TIP = 5280,
|
||||
STR_CHEAT_SANDBOX_MODE = 5278,
|
||||
STR_CHEAT_SANDBOX_MODE_DISABLE = 5279,
|
||||
STR_CHEAT_SANDBOX_MODE_TIP = 5280,
|
||||
|
||||
// Have to include resource strings (from scenarios and objects) for the time being now that language is partially working
|
||||
STR_COUNT = 32768
|
||||
|
|
|
@ -34,6 +34,7 @@
|
|||
#include "../world/park.h"
|
||||
#include "../world/sprite.h"
|
||||
#include "../interface/themes.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
//#define WW 200
|
||||
//#define WH 128
|
||||
|
@ -72,7 +73,7 @@ enum WINDOW_CHEATS_WIDGET_IDX {
|
|||
WIDX_REMOVE_LITTER,
|
||||
WIDX_WIN_SCENARIO,
|
||||
WIDX_UNLOCK_ALL_PRICES,
|
||||
WIDX_INGAME_LAND_OWNERSHIP_EDITOR,
|
||||
WIDX_SANDBOX_MODE,
|
||||
WIDX_RENEW_RIDES = 8,
|
||||
WIDX_REMOVE_SIX_FLAGS,
|
||||
WIDX_MAKE_DESTRUCTIBLE,
|
||||
|
@ -155,7 +156,7 @@ static rct_widget window_cheats_misc_widgets[] = {
|
|||
{ WWT_CLOSEBOX, 1, XPL(0), WPL(0), YPL(5), HPL(5), STR_CHEAT_REMOVE_LITTER, STR_NONE}, // Remove litter
|
||||
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(0), HPL(0), STR_CHEAT_WIN_SCENARIO, STR_NONE}, // Win scenario
|
||||
{ WWT_CHECKBOX, 1, XPL(0), OWPL, YPL(8),OHPL(8), STR_CHEAT_UNLOCK_PRICES, STR_NONE}, // Unlock all prices
|
||||
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR,STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR_TIP},// In-game land ownership editor
|
||||
{ WWT_CLOSEBOX, 1, XPL(1), WPL(1), YPL(5), HPL(5), STR_CHEAT_SANDBOX_MODE, STR_CHEAT_SANDBOX_MODE_TIP},// Sandbox mode (edit land ownership in-game)
|
||||
{ WIDGETS_END },
|
||||
};
|
||||
static rct_widget window_cheats_rides_widgets[] = {
|
||||
|
@ -331,7 +332,7 @@ static void* window_cheats_page_events[] = {
|
|||
static uint32 window_cheats_page_enabled_widgets[] = {
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HIGH_MONEY) | (1 << WIDX_PARK_ENTRANCE_FEE),
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_HAPPY_GUESTS) | (1 << WIDX_TRAM_GUESTS) | (1 << WIDX_NAUSEA_GUESTS),
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_FREEZE_CLIMATE) | (1 << WIDX_OPEN_CLOSE_PARK) | (1 << WIDX_ZERO_CLEARANCE) | (1 << WIDX_WEATHER_SUN) | (1 << WIDX_WEATHER_THUNDER) | (1 << WIDX_CLEAR_GRASS) | (1 << WIDX_MOWED_GRASS) | (1 << WIDX_WATER_PLANTS) | (1 << WIDX_FIX_VANDALISM) | (1 << WIDX_REMOVE_LITTER) | (1 << WIDX_WIN_SCENARIO) | (1 << WIDX_UNLOCK_ALL_PRICES) | (1 << WIDX_INGAME_LAND_OWNERSHIP_EDITOR),
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_FREEZE_CLIMATE) | (1 << WIDX_OPEN_CLOSE_PARK) | (1 << WIDX_ZERO_CLEARANCE) | (1 << WIDX_WEATHER_SUN) | (1 << WIDX_WEATHER_THUNDER) | (1 << WIDX_CLEAR_GRASS) | (1 << WIDX_MOWED_GRASS) | (1 << WIDX_WATER_PLANTS) | (1 << WIDX_FIX_VANDALISM) | (1 << WIDX_REMOVE_LITTER) | (1 << WIDX_WIN_SCENARIO) | (1 << WIDX_UNLOCK_ALL_PRICES) | (1 << WIDX_SANDBOX_MODE),
|
||||
(1 << WIDX_CLOSE) | (1 << WIDX_TAB_1) | (1 << WIDX_TAB_2) | (1 << WIDX_TAB_3) | (1 << WIDX_TAB_4) | (1 << WIDX_RENEW_RIDES) | (1 << WIDX_REMOVE_SIX_FLAGS) | (1 << WIDX_MAKE_DESTRUCTIBLE) | (1 << WIDX_FIX_ALL) | (1 << WIDX_FAST_LIFT_HILL) | (1 << WIDX_DISABLE_BRAKES_FAILURE) | (1 << WIDX_DISABLE_ALL_BREAKDOWNS)
|
||||
};
|
||||
|
||||
|
@ -656,11 +657,13 @@ static void window_cheats_misc_mouseup()
|
|||
window_invalidate_by_class(WC_RIDE);
|
||||
window_invalidate_by_class(WC_PARK_INFORMATION);
|
||||
break;
|
||||
case WIDX_INGAME_LAND_OWNERSHIP_EDITOR:
|
||||
toggle_ingame_land_ownership_editor();
|
||||
w->widgets[widgetIndex].image = w->widgets[widgetIndex].image == STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR ? STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR_DISABLE : STR_CHEAT_INGAME_LAND_OWNERSHIP_EDITOR;
|
||||
case WIDX_SANDBOX_MODE:
|
||||
gSandboxMode = !gSandboxMode;
|
||||
w->widgets[widgetIndex].image = w->widgets[widgetIndex].image == STR_CHEAT_SANDBOX_MODE ? STR_CHEAT_SANDBOX_MODE_DISABLE : STR_CHEAT_SANDBOX_MODE;
|
||||
// To prevent tools from staying active after disabling cheat
|
||||
window_close_by_class(WC_MAP);
|
||||
tool_cancel();
|
||||
window_invalidate_by_class(WC_MAP);
|
||||
window_invalidate_by_class(WC_FOOTPATH);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,6 +31,7 @@
|
|||
#include "../world/map.h"
|
||||
#include "dropdown.h"
|
||||
#include "../interface/themes.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
enum {
|
||||
PATH_CONSTRUCTION_MODE_LAND,
|
||||
|
@ -168,6 +169,8 @@ static void footpath_get_next_path_info(int *type, int *x, int *y, int *z, int *
|
|||
void window_footpath_open()
|
||||
{
|
||||
rct_window* window;
|
||||
sint16 pathId;
|
||||
rct_path_type *pathType;
|
||||
|
||||
// Check if window is already open
|
||||
window = window_bring_to_front_by_class(WC_FOOTPATH);
|
||||
|
@ -204,6 +207,13 @@ void window_footpath_open()
|
|||
window_push_others_right(window);
|
||||
show_gridlines();
|
||||
|
||||
// If a restricted path was selected when the game is no longer in Sandbox mode, reset it
|
||||
pathId = RCT2_GLOBAL(RCT2_ADDRESS_SELECTED_PATH_ID, sint16);
|
||||
pathType = g_pathTypeEntries[pathId];
|
||||
if((pathType->flags & 4) && !gSandboxMode) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_SELECTED_PATH_ID, sint16) = 0;
|
||||
}
|
||||
|
||||
tool_cancel();
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_PATH_CONSTRUCTION_MODE, uint8) = PATH_CONSTRUCTION_MODE_LAND;
|
||||
tool_set(window, WIDX_CONSTRUCT_ON_LAND, 17);
|
||||
|
@ -348,7 +358,7 @@ static void window_footpath_dropdown()
|
|||
pathId = RCT2_GLOBAL(RCT2_ADDRESS_SELECTED_PATH_ID, sint16);
|
||||
} else {
|
||||
int flags = 4;
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2)
|
||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || gSandboxMode)
|
||||
flags = 0;
|
||||
|
||||
j = 0;
|
||||
|
@ -358,6 +368,9 @@ static void window_footpath_dropdown()
|
|||
continue;
|
||||
if (pathType->flags & flags)
|
||||
continue;
|
||||
// Skip queue lines of scenario editor-only paths (only applicable when the game is in sandbox mode)
|
||||
if(widgetIndex == WIDX_QUEUELINE_TYPE && pathType->flags & 4)
|
||||
continue;
|
||||
|
||||
if (j == pathId)
|
||||
break;
|
||||
|
@ -538,11 +551,17 @@ static void window_footpath_invalidate()
|
|||
|
||||
int pathImage = 71 + pathType->image;
|
||||
window_footpath_widgets[WIDX_FOOTPATH_TYPE].image = pathImage;
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].image = pathImage + 1;
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].type = WWT_FLATBTN;
|
||||
|
||||
// Disable queue in if in editor
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2)
|
||||
// Disable queue line button when the path is scenario editor-only (and therefore usually shouldn't have one)
|
||||
if(!(pathType->flags & 4)) {
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].image = pathImage + 1;
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].type = WWT_FLATBTN;
|
||||
} else {
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].type = WWT_EMPTY;
|
||||
}
|
||||
|
||||
// Disable queue line button if in Scenario Editor
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)
|
||||
window_footpath_widgets[WIDX_QUEUELINE_TYPE].type = WWT_EMPTY;
|
||||
}
|
||||
|
||||
|
@ -606,7 +625,8 @@ static void window_footpath_show_footpath_types_dialog(rct_window *w, rct_widget
|
|||
|
||||
numPathTypes = 0;
|
||||
flags = 4;
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & 2)
|
||||
// If the game is in sandbox mode, also show paths that are normally restricted to the scenario editor, but not their queues (since these usually shouldn't have one)
|
||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || (gSandboxMode && !showQueues))
|
||||
flags = 0;
|
||||
|
||||
for (i = 0; i < 16; i++) {
|
||||
|
@ -1106,4 +1126,4 @@ static void footpath_get_next_path_info(int *type, int *x, int *y, int *z, int *
|
|||
*slope ^= 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,6 +27,7 @@
|
|||
#include "../sprites.h"
|
||||
#include "../world/scenery.h"
|
||||
#include "../interface/themes.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
|
||||
enum WINDOW_MAP_WIDGET_IDX {
|
||||
|
@ -136,10 +137,6 @@ static void* window_map_events[] = {
|
|||
window_map_scrollpaint
|
||||
};
|
||||
|
||||
// Cheat: in-game land ownership editor
|
||||
int g_ingame_land_ownership_editor;
|
||||
extern void toggle_ingame_land_ownership_editor();
|
||||
|
||||
/**
|
||||
*
|
||||
* rct2: 0x0068C88A
|
||||
|
@ -546,7 +543,7 @@ static void window_map_invalidate()
|
|||
w->widgets[WIDX_MAP].right = w->width - 4;
|
||||
|
||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) ||
|
||||
g_ingame_land_ownership_editor)
|
||||
gSandboxMode)
|
||||
w->widgets[WIDX_MAP].bottom = w->height - 1 - 72;
|
||||
else if (w->selected_tab == 1)
|
||||
w->widgets[WIDX_MAP].bottom = w->height - 1 - 44;
|
||||
|
@ -593,7 +590,7 @@ static void window_map_invalidate()
|
|||
|
||||
|
||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) ||
|
||||
g_ingame_land_ownership_editor) {
|
||||
gSandboxMode) {
|
||||
// scenario editor: build park entrance selected, show rotate button
|
||||
if ((RCT2_GLOBAL(RCT2_ADDRESS_INPUT_FLAGS, uint32) & INPUT_FLAG_TOOL_ACTIVE) &&
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_TOOL_WINDOWCLASS, uint8) == WC_MAP &&
|
||||
|
@ -684,7 +681,7 @@ static void window_map_paint()
|
|||
}
|
||||
|
||||
if (!((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)
|
||||
|| g_ingame_land_ownership_editor)) {
|
||||
|| gSandboxMode)) {
|
||||
// render the map legend
|
||||
if (w->selected_tab != 0) {
|
||||
x = w->x + 4;
|
||||
|
@ -973,9 +970,3 @@ static void window_map_center_on_view_point()
|
|||
w_map->scrolls[0].v_top = dx;
|
||||
widget_scroll_update_thumbs(w_map, WIDX_MAP);
|
||||
}
|
||||
|
||||
// In-game land ownership editor cheat
|
||||
void toggle_ingame_land_ownership_editor()
|
||||
{
|
||||
g_ingame_land_ownership_editor = !g_ingame_land_ownership_editor;
|
||||
}
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "footpath.h"
|
||||
#include "map.h"
|
||||
#include "scenery.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
void footpath_interrupt_peeps(int x, int y, int z);
|
||||
|
||||
|
@ -312,7 +313,7 @@ static money32 footpath_place_real(int type, int x, int y, int z, int slope, int
|
|||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, z * 8))
|
||||
if (!((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || gSandboxMode) && !map_is_location_owned(x, y, z * 8))
|
||||
return MONEY32_UNDEFINED;
|
||||
|
||||
if (slope & 8) {
|
||||
|
@ -366,7 +367,7 @@ money32 footpath_remove_real(int x, int y, int z, int flags)
|
|||
footpath_remove_litter(x, y, z * 8);
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, z * 8))
|
||||
if (!((RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) || gSandboxMode) && !map_is_location_owned(x, y, z * 8))
|
||||
return MONEY32_UNDEFINED;
|
||||
|
||||
mapElement = map_get_footpath_element(x / 32, y / 32, z);
|
||||
|
@ -727,4 +728,4 @@ void sub_6A759F()
|
|||
} while (!map_element_is_last_for_tile(mapElement++));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -33,6 +33,7 @@
|
|||
#include "map_animation.h"
|
||||
#include "park.h"
|
||||
#include "scenery.h"
|
||||
#include "../cheats.h"
|
||||
|
||||
const rct_xy16 TileDirectionDelta[] = {
|
||||
{ -32, 0 },
|
||||
|
@ -656,7 +657,7 @@ void game_command_remove_scenery(int* eax, int* ebx, int* ecx, int* edx, int* es
|
|||
return;
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !(*ebx & 0x40)) {
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !(*ebx & 0x40) && !gSandboxMode) {
|
||||
// Check if allowed to remove item
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_TREE_REMOVAL) {
|
||||
if (entry->small_scenery.height > 64) {
|
||||
|
@ -782,7 +783,7 @@ void game_command_remove_large_scenery(int* eax, int* ebx, int* ecx, int* edx, i
|
|||
currentTile.y += firstTile.y;
|
||||
currentTile.z += firstTile.z;
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if (!map_is_location_owned(currentTile.x, currentTile.y, currentTile.z)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
|
@ -847,7 +848,7 @@ void game_command_remove_banner(int* eax, int* ebx, int* ecx, int* edx, int* esi
|
|||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, z - 16)){
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode && !map_is_location_owned(x, y, z - 16)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
|
@ -894,7 +895,7 @@ void game_command_set_scenery_colour(int* eax, int* ebx, int* ecx, int* edx, int
|
|||
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
|
||||
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
|
||||
RCT2_GLOBAL(0x009DEA62, uint16) = z;
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if (!map_is_location_owned(x, y, z)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
|
@ -944,7 +945,7 @@ void game_command_set_fence_colour(int* eax, int* ebx, int* ecx, int* edx, int*
|
|||
RCT2_GLOBAL(0x009DEA5E, uint16) = x + 16;
|
||||
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
|
||||
RCT2_GLOBAL(0x009DEA62, uint16) = z;
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if(!map_is_location_in_park(x, y)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
|
@ -1071,7 +1072,7 @@ void game_command_set_large_scenery_colour(int* eax, int* ebx, int* ecx, int* ed
|
|||
x3 += x2;
|
||||
y3 += y2;
|
||||
z3 += z2;
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if (!map_is_location_owned(x3, y3, z3)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
|
@ -1115,7 +1116,7 @@ void game_command_set_banner_colour(int* eax, int* ebx, int* ecx, int* edx, int*
|
|||
RCT2_GLOBAL(0x009DEA60, uint16) = y + 16;
|
||||
RCT2_GLOBAL(0x009DEA62, uint16) = z;
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if (!map_is_location_owned(x, y, z - 16)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
|
@ -1322,7 +1323,7 @@ money32 map_change_surface_style(int x0, int y0, int x1, int y1, uint8 surface_s
|
|||
return cur_cost;
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode && RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES){
|
||||
cur_cost += RCT2_GLOBAL(0x9E32B4, uint32);
|
||||
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_NO_MONEY){
|
||||
|
@ -1336,7 +1337,7 @@ money32 map_change_surface_style(int x0, int y0, int x1, int y1, uint8 surface_s
|
|||
if (x > 0x1FFF)continue;
|
||||
if (y > 0x1FFF)continue;
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)){
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode){
|
||||
if (!map_is_location_in_park(x, y))continue;
|
||||
}
|
||||
|
||||
|
@ -1438,7 +1439,7 @@ static money32 sub_66397F(int flags, int x, int y, int height, int style, int se
|
|||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)) {
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode) {
|
||||
if (RCT2_GLOBAL(RCT2_ADDRESS_PARK_FLAGS, uint32) & PARK_FLAGS_FORBID_LANDSCAPE_CHANGES) {
|
||||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_FORBIDDEN_BY_THE_LOCAL_AUTHORITY;
|
||||
return MONEY32_UNDEFINED;
|
||||
|
@ -1468,7 +1469,7 @@ static money32 sub_66397F(int flags, int x, int y, int height, int style, int se
|
|||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR)) {
|
||||
if (!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode) {
|
||||
if (!map_is_location_in_park(x, y)) {
|
||||
return MONEY32_UNDEFINED;
|
||||
}
|
||||
|
@ -1812,7 +1813,7 @@ void game_command_remove_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
|
|||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
if(!(*ebx & 0x40) && !(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, base_height * 8)){
|
||||
if(!(*ebx & 0x40) && !(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode && !map_is_location_owned(x, y, base_height * 8)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
|
@ -1878,7 +1879,7 @@ void game_command_place_banner(int* eax, int* ebx, int* ecx, int* edx, int* esi,
|
|||
return;
|
||||
}
|
||||
}
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, base_height * 16)){
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode && !map_is_location_owned(x, y, base_height * 16)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
|
@ -1987,7 +1988,7 @@ void game_command_place_scenery(int* eax, int* ebx, int* ecx, int* edx, int* esi
|
|||
if(F64EC8 == 0){
|
||||
F64EC8 = base_height2;
|
||||
}
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !map_is_location_owned(x, y, F64EC8)){
|
||||
if(!(RCT2_GLOBAL(RCT2_ADDRESS_SCREEN_FLAGS, uint8) & SCREEN_FLAGS_SCENARIO_EDITOR) && !gSandboxMode && !map_is_location_owned(x, y, F64EC8)){
|
||||
*ebx = MONEY32_UNDEFINED;
|
||||
return;
|
||||
}
|
||||
|
@ -2472,3 +2473,4 @@ void sub_6A7594()
|
|||
{
|
||||
RCT2_GLOBAL(0x00F3EFF4, uint32) = 0x00F3EFF8;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue