Name some addresses, clean up strings ids and usage

This commit is contained in:
Gymnasiast 2015-08-27 16:19:17 +02:00
parent 3375f3d43b
commit 308b086c55
12 changed files with 257 additions and 239 deletions

View File

@ -287,6 +287,8 @@
#define RCT2_ADDRESS_UNCOMPLETED_RESEARCH_TYPES 0x00EE787C
#define RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER 0x00F1AD60
#define RCT2_ADDRESS_MAP_IMAGE_DATA 0x00F1AD68
// No longer used
@ -347,6 +349,7 @@
#define RCT2_ADDRESS_TRACK_DESIGN_SCENERY_TOGGLE 0x00F44152
#define RCT2_ADDRESS_ABOVE_GROUND_FLAGS 0x00F441D4
#define RCT2_ADDRESS_TRACK_LIST 0x00F441EC
#define RCT2_ADDRESS_SCENERY_COST 0x00F64EB4

View File

@ -85,9 +85,6 @@ enum {
STR_RESOLUTION_X_BY_Y = 840,
STR_ROTATE_CLOCKWISE = 5458,
STR_ROTATE_ANTI_CLOCKWISE = 5459,
STR_ABOUT = 847,
STR_ROLLERCOASTER_TYCOON_2 = 848,
STR_VERSION_X = 849,
@ -258,6 +255,8 @@ enum {
STR_CLOSE_PARK = 1013,
STR_OPEN_PARK = 1014,
STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE = 1015,
STR_UNABLE_TO_OPERATE_WITH_LESS_THAN_TWO_STATIONS_IN_THIS_MODE = 1016,
STR_CANT_CHANGE_OPERATING_MODE = 1017,
STR_RIDE_SET_VEHICLE_TYPE_FAIL = 1018,
STR_RIDE_SET_VEHICLE_SET_NUM_CARS_PER_TRAIN_FAIL = 1019,
@ -283,6 +282,7 @@ enum {
STR_RCT2_SAVED_GAME = 1043,
STR_RCT2_SCENARIO_FILE = 1044,
STR_RCT2_LANDSCAPE_FILE = 1045,
STR_SCENARIO_SAVE_FAILED = 1048,
STR_INVISIBLE_SUPPORTS = 1051,
@ -397,6 +397,7 @@ enum {
STR_PLACE_SCENERY_TIP = 1159,
STR_ADJUST_WATER_TIP = 1160,
STR_CANT_POSITION_THIS_HERE = 1161,
STR_CANT_LOWER_WATER_LEVEL_HERE = 1166,
STR_CANT_RAISE_WATER_LEVEL_HERE = 1167,
@ -906,25 +907,6 @@ enum {
STR_SHOP_ITEM_SINGULAR_LEMONADE = 2013,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOX = 2014,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOTTLE = 2015,
STR_SHOP_ITEM_SINGULAR_PRETZEL = 2125,
STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE = 2126,
STR_SHOP_ITEM_SINGULAR_ICED_TEA = 2127,
STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE = 2128,
STR_SHOP_ITEM_SINGULAR_SUNGLASSES = 2129,
STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES = 2130,
STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES = 2131,
STR_SHOP_ITEM_SINGULAR_WONTON_SOUP = 2132,
STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP = 2133,
STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE = 2134,
STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK = 2135,
STR_SHOP_ITEM_SINGULAR_SUJONGKWA = 2136,
STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH = 2137,
STR_SHOP_ITEM_SINGULAR_COOKIE = 2138,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED = 2139,
STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON = 2140,
STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP = 2141,
STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE = 2142,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE = 2143,
STR_SHOP_ITEM_PLURAL_BALLOON = 2016,
STR_SHOP_ITEM_PLURAL_CUDDLY_TOY = 2017,
@ -954,25 +936,6 @@ enum {
STR_SHOP_ITEM_PLURAL_LEMONADE = 2041,
STR_SHOP_ITEM_PLURAL_EMPTY_BOX = 2042,
STR_SHOP_ITEM_PLURAL_EMPTY_BOTTLE = 2043,
STR_SHOP_ITEM_PLURAL_PRETZEL = 2147,
STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE = 2148,
STR_SHOP_ITEM_PLURAL_ICED_TEA = 2149,
STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE = 2150,
STR_SHOP_ITEM_PLURAL_SUNGLASSES = 2151,
STR_SHOP_ITEM_PLURAL_BEEF_NOODLES = 2152,
STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES = 2153,
STR_SHOP_ITEM_PLURAL_WONTON_SOUP = 2154,
STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP = 2155,
STR_SHOP_ITEM_PLURAL_FRUIT_JUICE = 2156,
STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK = 2157,
STR_SHOP_ITEM_PLURAL_SUJONGKWA = 2158,
STR_SHOP_ITEM_PLURAL_SUB_SANDWICH = 2159,
STR_SHOP_ITEM_PLURAL_COOKIE = 2160,
STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED = 2161,
STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON = 2162,
STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP = 2163,
STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE = 2164,
STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE = 2165,
STR_SHOP_ITEM_INDEFINITE_BALLOON = 2044,
STR_SHOP_ITEM_INDEFINITE_CUDDLY_TOY = 2045,
@ -1002,25 +965,6 @@ enum {
STR_SHOP_ITEM_INDEFINITE_LEMONADE = 2069,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOX = 2070,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOTTLE = 2071,
STR_SHOP_ITEM_INDEFINITE_PRETZEL = 2169,
STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE = 2170,
STR_SHOP_ITEM_INDEFINITE_ICED_TEA = 2171,
STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE = 2172,
STR_SHOP_ITEM_INDEFINITE_SUNGLASSES = 2173,
STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES = 2174,
STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES = 2175,
STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP = 2176,
STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP = 2177,
STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE = 2178,
STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK = 2179,
STR_SHOP_ITEM_INDEFINITE_SUJONGKWA = 2180,
STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH = 2181,
STR_SHOP_ITEM_INDEFINITE_COOKIE = 2182,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED = 2183,
STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON = 2184,
STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP = 2185,
STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE = 2186,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE = 2187,
STR_SHOP_ITEM_DISPLAY_BALLOON = 2072,
STR_SHOP_ITEM_DISPLAY_CUDDLY_TOY = 2073,
@ -1050,6 +994,67 @@ enum {
STR_SHOP_ITEM_DISPLAY_LEMONADE = 2097,
STR_SHOP_ITEM_DISPLAY_EMPTY_BOX = 2098,
STR_SHOP_ITEM_DISPLAY_EMPTY_BOTTLE = 2099,
STR_SHOP_ITEM_SINGULAR_PRETZEL = 2125,
STR_SHOP_ITEM_SINGULAR_HOT_CHOCOLATE = 2126,
STR_SHOP_ITEM_SINGULAR_ICED_TEA = 2127,
STR_SHOP_ITEM_SINGULAR_FUNNEL_CAKE = 2128,
STR_SHOP_ITEM_SINGULAR_SUNGLASSES = 2129,
STR_SHOP_ITEM_SINGULAR_BEEF_NOODLES = 2130,
STR_SHOP_ITEM_SINGULAR_FRIED_RICE_NOODLES = 2131,
STR_SHOP_ITEM_SINGULAR_WONTON_SOUP = 2132,
STR_SHOP_ITEM_SINGULAR_MEATBALL_SOUP = 2133,
STR_SHOP_ITEM_SINGULAR_FRUIT_JUICE = 2134,
STR_SHOP_ITEM_SINGULAR_SOYBEAN_MILK = 2135,
STR_SHOP_ITEM_SINGULAR_SUJONGKWA = 2136,
STR_SHOP_ITEM_SINGULAR_SUB_SANDWICH = 2137,
STR_SHOP_ITEM_SINGULAR_COOKIE = 2138,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_RED = 2139,
STR_SHOP_ITEM_SINGULAR_EMPTY_DRINK_CARTON = 2140,
STR_SHOP_ITEM_SINGULAR_EMPTY_JUICE_CUP = 2141,
STR_SHOP_ITEM_SINGULAR_ROAST_SAUSAGE = 2142,
STR_SHOP_ITEM_SINGULAR_EMPTY_BOWL_BLUE = 2143,
STR_SHOP_ITEM_PLURAL_PRETZEL = 2147,
STR_SHOP_ITEM_PLURAL_HOT_CHOCOLATE = 2148,
STR_SHOP_ITEM_PLURAL_ICED_TEA = 2149,
STR_SHOP_ITEM_PLURAL_FUNNEL_CAKE = 2150,
STR_SHOP_ITEM_PLURAL_SUNGLASSES = 2151,
STR_SHOP_ITEM_PLURAL_BEEF_NOODLES = 2152,
STR_SHOP_ITEM_PLURAL_FRIED_RICE_NOODLES = 2153,
STR_SHOP_ITEM_PLURAL_WONTON_SOUP = 2154,
STR_SHOP_ITEM_PLURAL_MEATBALL_SOUP = 2155,
STR_SHOP_ITEM_PLURAL_FRUIT_JUICE = 2156,
STR_SHOP_ITEM_PLURAL_SOYBEAN_MILK = 2157,
STR_SHOP_ITEM_PLURAL_SUJONGKWA = 2158,
STR_SHOP_ITEM_PLURAL_SUB_SANDWICH = 2159,
STR_SHOP_ITEM_PLURAL_COOKIE = 2160,
STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_RED = 2161,
STR_SHOP_ITEM_PLURAL_EMPTY_DRINK_CARTON = 2162,
STR_SHOP_ITEM_PLURAL_EMPTY_JUICE_CUP = 2163,
STR_SHOP_ITEM_PLURAL_ROAST_SAUSAGE = 2164,
STR_SHOP_ITEM_PLURAL_EMPTY_BOWL_BLUE = 2165,
STR_SHOP_ITEM_INDEFINITE_PRETZEL = 2169,
STR_SHOP_ITEM_INDEFINITE_HOT_CHOCOLATE = 2170,
STR_SHOP_ITEM_INDEFINITE_ICED_TEA = 2171,
STR_SHOP_ITEM_INDEFINITE_FUNNEL_CAKE = 2172,
STR_SHOP_ITEM_INDEFINITE_SUNGLASSES = 2173,
STR_SHOP_ITEM_INDEFINITE_BEEF_NOODLES = 2174,
STR_SHOP_ITEM_INDEFINITE_FRIED_RICE_NOODLES = 2175,
STR_SHOP_ITEM_INDEFINITE_WONTON_SOUP = 2176,
STR_SHOP_ITEM_INDEFINITE_MEATBALL_SOUP = 2177,
STR_SHOP_ITEM_INDEFINITE_FRUIT_JUICE = 2178,
STR_SHOP_ITEM_INDEFINITE_SOYBEAN_MILK = 2179,
STR_SHOP_ITEM_INDEFINITE_SUJONGKWA = 2180,
STR_SHOP_ITEM_INDEFINITE_SUB_SANDWICH = 2181,
STR_SHOP_ITEM_INDEFINITE_COOKIE = 2182,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_RED = 2183,
STR_SHOP_ITEM_INDEFINITE_EMPTY_DRINK_CARTON = 2184,
STR_SHOP_ITEM_INDEFINITE_EMPTY_JUICE_CUP = 2185,
STR_SHOP_ITEM_INDEFINITE_ROAST_SAUSAGE = 2186,
STR_SHOP_ITEM_INDEFINITE_EMPTY_BOWL_BLUE = 2187,
STR_SHOP_ITEM_DISPLAY_PRETZEL = 2191,
STR_SHOP_ITEM_DISPLAY_HOT_CHOCOLATE = 2192,
STR_SHOP_ITEM_DISPLAY_ICED_TEA = 2193,
@ -1070,7 +1075,6 @@ enum {
STR_SHOP_ITEM_DISPLAY_ROAST_SAUSAGE = 2208,
STR_SHOP_ITEM_DISPLAY_EMPTY_BOWL_BLUE = 2209,
STR_STAFF_HANDYMEN_TAB_TIP = 2210,
STR_STAFF_MECHANICS_TAB_TIP = 2211,
STR_STAFF_SECURITY_TAB_TIP = 2212,
@ -1374,87 +1378,27 @@ enum {
STR_SHORTCUT_SHOW_RECENT_MESSAGES = 2522,
STR_SHORTCUT_SHOW_MAP = 2523,
STR_SHORTCUT_SCREENSHOT = 2524,
STR_INDIVIDUAL_KEYS_BASE = 2525,
STR_GOLF_HOLE_A = 3049,
STR_GOLF_HOLE_B = 3050,
STR_GOLF_HOLE_C = 3051,
STR_GOLF_HOLE_D = 3052,
STR_GOLF_HOLE_E = 3053,
STR_CHEAT_TIP_5K_MONEY = 2681,
STR_TOP_SECTION = 3069,
STR_SLOPE_TO_LEVEL = 3070,
STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684,
STR_NOT_ALLOWED_TO_MODIFY_STATION = 3092,
// Cheats
STR_CHEAT_TITLE = 5217,
STR_CHEAT_TITLE_FINANCIAL = 5345,
STR_CHEAT_TITLE_GUEST = 5346,
STR_CHEAT_TITLE_RIDE = 5347,
STR_CHEAT_TITLE_PARK = 5348,
// Money
STR_CHEAT_5K_MONEY = 2760,
STR_CHEAT_CLEAR_LOAN = 5302,
// Guests
STR_CHEAT_LARGE_TRAM_GUESTS = 2765,
STR_CHEAT_EXPLODE = 5285,
STR_CHEAT_REMOVE_ALL_GUESTS = 5359,
STR_CHEAT_GUEST_HAPPINESS = 5352,
STR_CHEAT_GUEST_ENERGY = 5353,
STR_CHEAT_GUEST_HUNGER = 5354,
STR_CHEAT_GUEST_THIRST = 5355,
STR_CHEAT_GUEST_NAUSEA = 5356,
STR_CHEAT_GUEST_NAUSEA_TOLERANCE = 5357,
STR_CHEAT_GUEST_BATHROOM = 5358,
STR_CHEAT_GIVE_ALL_GUESTS = 5361,
STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362,
STR_CHEAT_MORE_THAN_1 = 5363,
STR_CHEAT_LESS_THAN_15 = 5364,
STR_CHEAT_IGNORE_INTENSITY = 5506,
// Misc.
STR_CHEAT_FREEZE_CLIMATE = 2767,
STR_CHEAT_UNFREEZE_CLIMATE = 2768,
STR_CHEAT_OPEN_PARK = 2769,
STR_CHEAT_CLOSE_PARK = 2770,
STR_CHEAT_ZERO_CLEARANCE = 2759,
STR_CHEAT_FORCE_SUN = 2757,
STR_CHEAT_FORCE_THUNDER = 2758,
STR_CHEAT_CLEAR_GRASS = 2752,
STR_CHEAT_MOWED_GRASS = 2753,
STR_CHEAT_WATER_PLANTS = 2754,
STR_CHEAT_FIX_VANDALISM = 2755,
STR_CHEAT_REMOVE_LITTER = 2756,
STR_CHEAT_FORCE_SUN = 2757,
STR_CHEAT_FORCE_THUNDER = 2758,
STR_CHEAT_ZERO_CLEARANCE = 2759,
STR_CHEAT_5K_MONEY = 2760,
STR_CHEAT_LARGE_TRAM_GUESTS = 2765,
STR_CHEAT_WIN_SCENARIO = 2766,
STR_CHEAT_UNLOCK_PRICES = 5157,
STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303,
STR_CHEAT_PARK_PARAMETERS = 5369,
// Rides
STR_CHEAT_RENEW_RIDES = 5123,
STR_CHEAT_MAKE_DESTRUCTABLE = 5125,
STR_CHEAT_FIX_ALL_RIDES = 5132,
STR_CHEAT_410_HILL_LIFT = 5137,
STR_CHEAT_DISABLE_BRAKES_FAILURE = 5140,
STR_CHEAT_DISABLE_BREAKDOWNS = 5141,
// Cheat tips
STR_CHEAT_TIP_5K_MONEY = 2681,
STR_CHEAT_TIP_CLEAR_LOAN = 5301,
STR_CHEAT_TIP_LARGE_TRAM_GUESTS = 2684,
STR_CHEAT_TIP_EXPLODE = 5286,
STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360,
STR_CHEAT_TIP_PARK_PARAMETERS = 5370,
// Cheat tab tips
STR_FINANCIAL_CHEATS_TIP = 5178,
STR_GUEST_CHEATS_TIP = 5179,
STR_PARK_CHEATS_TIP = 5180,
STR_RIDE_CHEATS_TIP = 5181,
STR_CHEAT_FREEZE_CLIMATE = 2767,
STR_CHEAT_UNFREEZE_CLIMATE = 2768,
STR_CHEAT_OPEN_PARK = 2769,
STR_CHEAT_CLOSE_PARK = 2770,
STR_SHORTCUT_ENTRY_FORMAT = 2781,
STR_SHIFT_PLUS = 2782,
@ -1571,7 +1515,7 @@ enum {
STR_JUNGLE_DRUMS_STYLE = STR_MUSIC_STYLE_START + 5,
STR_EGYPTIAN_STYLE = STR_MUSIC_STYLE_START + 6,
STR_TOYLAND_STYLE = STR_MUSIC_STYLE_START + 7,
// STR_??? = STR_MUSIC_STYLE_START + 8,
// STR_??? = STR_MUSIC_STYLE_START + 8, // Circus show; never displayed as a string
STR_SPACE_STYLE = STR_MUSIC_STYLE_START + 9,
STR_HORROR_STYLE = STR_MUSIC_STYLE_START + 10,
STR_TECHNO_STYLE = STR_MUSIC_STYLE_START + 11,
@ -1602,6 +1546,12 @@ enum {
STR_THIS_RIDE_CANNOT_BE_MODIFIED = 3046,
STR_LOCAL_AUTHORITY_FORBIDS_DEMOLITION_OR_MODIFICATIONS_TO_THIS_RIDE = 3047,
STR_GOLF_HOLE_A = 3049,
STR_GOLF_HOLE_B = 3050,
STR_GOLF_HOLE_C = 3051,
STR_GOLF_HOLE_D = 3052,
STR_GOLF_HOLE_E = 3053,
STR_WHITE = 3055,
STR_TRANSLUCENT = 3056,
STR_CONSTRUCTION_MARKER = 3057,
@ -1614,11 +1564,8 @@ enum {
STR_RIDE_CONSTRUCTION_STANDARD_RC_TRACK_TIP = 3062,
STR_RIDE_CONSTRUCTION_WATER_CHANNEL_TIP = 3063,
STR_BEGINNER_PARKS = 3064,
STR_CHALLENGING_PARKS = STR_BEGINNER_PARKS + 1,
STR_EXPERT_PARKS = STR_BEGINNER_PARKS + 2,
STR_REAL_PARKS = STR_BEGINNER_PARKS + 3,
STR_OTHER_PARKS = STR_BEGINNER_PARKS + 4,
STR_TOP_SECTION = 3069,
STR_SLOPE_TO_LEVEL = 3070,
STR_SAME_PRICE_THROUGHOUT_PARK = 3071,
STR_SAME_PRICE_THROUGHOUT_PARK_TIP = 3072,
@ -1643,12 +1590,23 @@ enum {
STR_SPACE_ENTRANCE = 3089,
STR_SELECT_STYLE_OF_ENTRANCE_EXIT_STATION_TIP = 3090,
STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION = 3091,
STR_SELECT_LIFT_HILL_CHAIN_SPEED_TIP = 3097,
STR_SELECT_COLOUR = 3099,
STR_SELECT_SECONDARY_COLOUR = 3100,
STR_SELECT_TERNARY_COLOUR = 3101,
STR_BEGINNER_PARKS = 3064,
STR_CHALLENGING_PARKS = STR_BEGINNER_PARKS + 1,
STR_EXPERT_PARKS = STR_BEGINNER_PARKS + 2,
STR_REAL_PARKS = STR_BEGINNER_PARKS + 3,
STR_OTHER_PARKS = STR_BEGINNER_PARKS + 4,
STR_NOT_ALLOWED_TO_MODIFY_STATION = 3092,
STR_LIST_RIDES_TIP = 3104,
STR_LIST_SHOPS_AND_STALLS_TIP = 3105,
STR_LIST_KIOSKS_AND_FACILITIES_TIP = 3106,
@ -1685,6 +1643,8 @@ enum {
STR_SELECT_NEARBY_SCENERY = 3137,
STR_RESET_SELECTION = 3138,
STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL = 3141,
STR_SHOW_PEOPLE_ON_MAP_TIP = 3143,
STR_SHOW_RIDES_STALLS_ON_MAP_TIP = 3144,
@ -1807,7 +1767,6 @@ enum {
STR_CHANGE_NAME_OF_SCENARIO_TIP = 3296,
STR_CHANGE_DETAIL_NOTES_ABOUT_PARK_SCENARIO_TIP = 3297,
STR_NO_DETAILS_YET = 3317,
STR_SELECT_WHICH_GROUP_THIS_SCENARIO_APPEARS_IN = 3318,
@ -1832,10 +1791,15 @@ enum {
STR_ROLLER_COASTER_DESIGNER = 3344,
STR_TRACK_DESIGNS_MANAGER = 3345,
STR_CANT_SAVE_TRACK_DESIGN = 3346,
STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY = 3347,
STR_TRACK_MANAGE_RENAME = 3348,
STR_TRACK_MANAGE_DELETE = 3349,
STR_CANT_RENAME_TRACK_DESIGN = 3352,
STR_NEW_NAME_CONTAINS_INVALID_CHARACTERS = 3353,
STR_ANOTHER_FILE_EXISTS_WITH_NAME_OR_FILE_IS_WRITE_PROTECTED = 3354,
STR_FILE_IS_WRITE_PROTECTED_OR_LOCKED = 3355,
STR_ARE_YOU_SURE_YOU_WANT_TO_PERMANENTLY_DELETE_TRACK = 3357,
STR_CANT_DELETE_TRACK_DESIGN = 3358,
@ -1860,19 +1824,6 @@ enum {
STR_SAVE_TRACK_SCENERY_UNABLE_TO_SELECT_ADDITIONAL_ITEM_OF_SCENERY = 3389,
STR_SAVE_TRACK_SCENERY_TOO_MANY_ITEMS_SELECTED = 3390,
STR_OBJECTIVE_2_NONE = 2397,
STR_OBJECTIVE_2_NUMBER_OF_GUESTS_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 1,
STR_OBJECTIVE_2_PARK_VALUE_AT_A_GIVEN_DATE = STR_OBJECTIVE_2_NONE + 2,
STR_OBJECTIVE_2_HAVE_FUN = STR_OBJECTIVE_2_NONE + 3,
STR_OBJECTIVE_2_BUILD_THE_BEST_RIDE_YOU_CAN = STR_OBJECTIVE_2_NONE + 4,
STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 5,
STR_OBJECTIVE_2_NUMBER_OF_GUESTS_IN_PARK = STR_OBJECTIVE_2_NONE + 6,
STR_OBJECTIVE_2_MONTHLY_INCOME_FROM_RIDE_TICKETS = STR_OBJECTIVE_2_NONE + 7,
STR_OBJECTIVE_2_BUILD_10_ROLLER_COASTERS_OF_A_GIVEN_LENGTH = STR_OBJECTIVE_2_NONE + 8,
STR_OBJECTIVE_2_FINISH_BUILDING_5_ROLLER_COASTERS = STR_OBJECTIVE_2_NONE + 9,
STR_OBJECTIVE_2_REPAY_LOAN_AND_ACHIEVE_A_GIVEN_PARK_VALUE = STR_OBJECTIVE_2_NONE + 10,
STR_OBJECTIVE_2_MONTHLY_PROFIT_FROM_FOOD_MERCHANDISE = STR_OBJECTIVE_2_NONE + 11,
STR_CLEAR_SCENERY_TIP = 3437,
STR_CLEAR_SCENERY = 3439,
@ -1890,6 +1841,13 @@ enum {
STR_FINANCES_BUTTON_ON_TOOLBAR = 5120,
STR_RESEARCH_BUTTON_ON_TOOLBAR = 5121,
STR_SELECT_BY_TRACK_TYPE = 5122,
STR_CHEAT_RENEW_RIDES = 5123,
STR_CHEAT_MAKE_DESTRUCTABLE = 5125,
STR_CHEAT_FIX_ALL_RIDES = 5132,
STR_CHEAT_410_HILL_LIFT = 5137,
STR_CHEAT_DISABLE_BRAKES_FAILURE = 5140,
STR_CHEAT_DISABLE_BREAKDOWNS = 5141,
STR_CHEATS_BUTTON_ON_TOOLBAR = 5147,
STR_GAME_SPEED_TIP = 5148,
STR_CHEATS_TIP = 5149,
@ -1900,6 +1858,8 @@ enum {
STR_TEST_UNFINISHED_TRACKS = 5155,
STR_TEST_UNFINISHED_TRACKS_TIP = 5156,
STR_CHEAT_UNLOCK_PRICES = 5157,
STR_TWITCH_NAME = 5164,
STR_TWITCH_PEEP_FOLLOWERS = 5165,
STR_TWITCH_PEEP_FOLLOWERS_TIP = 5166,
@ -1916,6 +1876,14 @@ enum {
STR_FULLSCREEN_MODE = 5177,
// Cheat tab tips
STR_FINANCIAL_CHEATS_TIP = 5178,
STR_GUEST_CHEATS_TIP = 5179,
STR_PARK_CHEATS_TIP = 5180,
STR_RIDE_CHEATS_TIP = 5181,
STR_CHEAT_TITLE = 5217,
STR_GIANT_SCREENSHOT = 5260,
STR_OPTIONS_DISPLAY_TIP = 5266,
@ -1927,6 +1895,13 @@ enum {
STR_CHEAT_SANDBOX_MODE = 5278,
STR_CHEAT_SANDBOX_MODE_DISABLE = 5279,
STR_CHEAT_SANDBOX_MODE_TIP = 5280,
STR_CHEAT_TIP_EXPLODE = 5286,
STR_CHEAT_EXPLODE = 5285,
STR_CHEAT_TIP_CLEAR_LOAN = 5301,
STR_CHEAT_CLEAR_LOAN = 5302,
STR_CHEAT_BUILD_IN_PAUSE_MODE = 5303,
STR_TITLE_SEQUENCE = 5304,
STR_TITLE_SEQUENCE_RCT1 = 5305,
@ -1939,10 +1914,10 @@ enum {
STR_DEBUG_TIP = 5311,
STR_DEBUG_DROPDOWN_CONSOLE = 5312,
STR_DEBUG_DROPDOWN_TILE_INSPECTOR = 5313,
STR_DEBUG_DROPDOWN_OBJECT_SELECTION = 5371,
STR_TILE_INSPECTOR_TITLE = 5314,
STR_TILE_INSPECTOR_TERRAIN_START = 5315,
STR_TILE_INSPECTOR_TERRAIN_EDGE_START = 5331,
STR_TILE_INSPECTOR_ENTRANCE_START = 5335,
STR_TILE_INSPECTOR_ELEMENT_TYPE = 5338,
@ -1955,12 +1930,35 @@ enum {
STR_CHANGELOG_TITLE = 5344,
STR_CHEAT_TITLE_FINANCIAL = 5345,
STR_CHEAT_TITLE_GUEST = 5346,
STR_CHEAT_TITLE_RIDE = 5347,
STR_CHEAT_TITLE_PARK = 5348,
STR_MAX = 5350,
STR_MIN = 5351,
STR_CHEAT_GUEST_HAPPINESS = 5352,
STR_CHEAT_GUEST_ENERGY = 5353,
STR_CHEAT_GUEST_HUNGER = 5354,
STR_CHEAT_GUEST_THIRST = 5355,
STR_CHEAT_GUEST_NAUSEA = 5356,
STR_CHEAT_GUEST_NAUSEA_TOLERANCE = 5357,
STR_CHEAT_GUEST_BATHROOM = 5358,
STR_CHEAT_REMOVE_ALL_GUESTS = 5359,
STR_CHEAT_TIP_REMOVE_ALL_GUESTS = 5360,
STR_CHEAT_GIVE_ALL_GUESTS = 5361,
STR_CHEAT_GUEST_PREFERRED_INTENSITY = 5362,
STR_CHEAT_MORE_THAN_1 = 5363,
STR_CHEAT_LESS_THAN_15 = 5364,
STR_CHEAT_STAFF_SPEED = 5365,
STR_NORMAL = 5366,
STR_FAST = 5367,
STR_CHEAT_RESET_CRASH_STATUS = 5368,
STR_CHEAT_PARK_PARAMETERS = 5369,
STR_CHEAT_TIP_PARK_PARAMETERS = 5370,
STR_DEBUG_DROPDOWN_OBJECT_SELECTION = 5371,
STR_INVERT_RIGHT_MOUSE_DRAG = 5372,
@ -1969,6 +1967,7 @@ enum {
STR_UP = 5375,
STR_DOWN = 5376,
STR_EDIT_TITLE_SEQUENCES_BUTTON = 5436,
STR_MININISE_FULL_SCREEN_ON_FOCUS_LOSS = 5440,
@ -1993,6 +1992,8 @@ enum {
STR_DISABLE_CLEARANCE_CHECKS = 5456,
STR_DISABLE_SUPPORT_LIMITS = 5457,
STR_ROTATE_CLOCKWISE = 5458,
STR_ROTATE_ANTI_CLOCKWISE = 5459,
STR_SHORTCUT_ROTATE_VIEW_ANTICLOCKWISE = 5460,
STR_CHEAT_SET_GUESTS_PARAMETERS = 5461,
@ -2050,11 +2051,13 @@ enum {
STR_START_SERVER = 5501,
STR_MULTIPLAYER = 5502,
STR_ENTER_HOSTNAME_OR_IP_ADDRESS = 5503,
STR_SHOW_MULTIPLAYER_STATUS_TIP = 5504,
STR_UNABLE_TO_CONNECT_TO_SERVER = 5505,
STR_CHEAT_IGNORE_INTENSITY = 5506,
STR_HANDYMEN_MOW_BY_DEFAULT = 5507,
STR_ALLOW_LOADING_WITH_INCORRECT_CHECKSUM = 5508,
STR_ALLOW_LOADING_WITH_INCORRECT_CHECKSUM_TIP = 5509,

View File

@ -3586,13 +3586,13 @@ void game_command_set_ride_setting(int *eax, int *ebx, int *ecx, int *edx, int *
if (setting == 0){
if (ride->lifecycle_flags & RIDE_LIFECYCLE_BROKEN_DOWN){
RCT2_GLOBAL(0x141E9AC, uint16) = 1796;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_HAS_BROKEN_DOWN_AND_REQUIRES_FIXING;
*ebx = MONEY32_UNDEFINED;
return;
}
if (ride->status != RIDE_STATUS_CLOSED){
RCT2_GLOBAL(0x141E9AC, uint16) = 1006;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_MUST_BE_CLOSED_FIRST;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -3601,7 +3601,7 @@ void game_command_set_ride_setting(int *eax, int *ebx, int *ecx, int *edx, int *
if (setting == 9 &&
ride->lifecycle_flags & RIDE_LIFECYCLE_CABLE_LIFT &&
new_value > 1){
RCT2_GLOBAL(0x141E9AC, uint16) = 3141;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_MULTICIRCUIT_NOT_POSSIBLE_WITH_CABLE_LIFT_HILL;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -3708,17 +3708,17 @@ int ride_mode_check_valid_station_numbers(rct_ride *ride)
case RIDE_MODE_POWERED_LAUNCH:
case RIDE_MODE_LIM_POWERED_LAUNCH:
if (no_stations <= 1) return 1;
RCT2_GLOBAL(0x141E9AC, uint16) = 1015;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE;
return 0;
case RIDE_MODE_SHUTTLE:
if (no_stations >= 2) return 1;
RCT2_GLOBAL(0x141E9AC, uint16) = 1016;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_LESS_THAN_TWO_STATIONS_IN_THIS_MODE;
return 0;
}
if (ride->type == RIDE_TYPE_GO_KARTS || ride->type == RIDE_TYPE_MINI_GOLF){
if (no_stations <= 1) return 1;
RCT2_GLOBAL(0x141E9AC, uint16) = 1015;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_UNABLE_TO_OPERATE_WITH_MORE_THAN_ONE_STATION_IN_THIS_MODE;
return 0;
}
@ -3787,12 +3787,12 @@ int ride_check_for_entrance_exit(int rideIndex)
}
if (entrance == 0){
RCT2_GLOBAL(0x141E9AC, uint16) = 1146;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_ENTRANCE_NOT_YET_BUILT;
return 0;
}
if (exit == 0){
RCT2_GLOBAL(0x141E9AC, uint16) = 1147;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_EXIT_NOT_YET_BUILT;
return 0;
}
@ -6315,7 +6315,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
}
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
return MONEY32_UNDEFINED;
}
@ -6339,13 +6339,13 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
return MONEY32_UNDEFINED;
}
if (RCT2_GLOBAL(0x00F1AD60, uint8) & (1 << 2)){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1031;
if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & (1 << 2)){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
if (z > 1952){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 878;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH;
return MONEY32_UNDEFINED;
}
@ -6353,12 +6353,12 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
else{
rct_ride* ride = GET_RIDE(rideIndex);
if (ride->status != RIDE_STATUS_CLOSED){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1006;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_MUST_BE_CLOSED_FIRST;
return MONEY32_UNDEFINED;
}
if (ride->lifecycle_flags & RIDE_LIFECYCLE_INDESTRUCTIBLE_TRACK){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3092;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_NOT_ALLOWED_TO_MODIFY_STATION;
return MONEY32_UNDEFINED;
}
@ -6372,7 +6372,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
if (is_exit){
if (ride->exits[station_num] != 0xFFFF){
if (flags & (1 << 6)){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 0;
return MONEY32_UNDEFINED;
}
@ -6384,7 +6384,7 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
else{
if (ride->entrances[station_num] != 0xFFFF){
if (flags & (1 << 6)){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 0;
return MONEY32_UNDEFINED;
}
@ -6433,13 +6433,13 @@ money32 place_ride_entrance_or_exit(sint16 x, sint16 y, sint16 z, uint8 directio
return MONEY32_UNDEFINED;
}
if (RCT2_GLOBAL(0x00F1AD60, uint8) & (1 << 2)){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1031;
if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
if (z / 8 > 244){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 878;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_TOO_HIGH;
return MONEY32_UNDEFINED;
}
@ -6501,13 +6501,13 @@ money32 remove_ride_entrance_or_exit(sint16 x, sint16 y, uint8 rideIndex, uint8
if (!(flags & (1 << 6))){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
return MONEY32_UNDEFINED;
}
}
if (ride->status != RIDE_STATUS_CLOSED){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1006;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_MUST_BE_CLOSED_FIRST;
return MONEY32_UNDEFINED;
}

View File

@ -2256,7 +2256,7 @@ int track_rename(const char *text)
case '*':
case '?':
// Invalid characters
RCT2_GLOBAL(0x141E9AC, uint16) = 3353;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_NEW_NAME_CONTAINS_INVALID_CHARACTERS;
return 0;
}
txt_chr++;
@ -2272,7 +2272,7 @@ int track_rename(const char *text)
subsitute_path(old_path, RCT2_ADDRESS(RCT2_ADDRESS_TRACKS_PATH, char), &RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char)[128 * w->track_list.var_482]);
if (!platform_file_move(old_path, new_path)) {
RCT2_GLOBAL(0x141E9AC, uint16) = 3354;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_ANOTHER_FILE_EXISTS_WITH_NAME_OR_FILE_IS_WRITE_PROTECTED;
return 0;
}
@ -2301,7 +2301,7 @@ int track_delete()
subsitute_path(path, RCT2_ADDRESS(RCT2_ADDRESS_TRACKS_PATH, char), &RCT2_ADDRESS(RCT2_ADDRESS_TRACK_LIST, char)[128 * w->track_list.var_482]);
if (!platform_file_delete(path)) {
RCT2_GLOBAL(0x141E9AC, uint16) = 3355;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_FILE_IS_WRITE_PROTECTED_OR_LOCKED;
return 0;
}
@ -2431,7 +2431,7 @@ int copy_scenery_to_track(uint8** track_pointer){
y /= 32;
if (x > 127 || y > 127 || x < -126 || y < -126){
window_error_open(3346, 3347);
window_error_open(3346, STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY);
return 0;
}
@ -2443,7 +2443,7 @@ int copy_scenery_to_track(uint8** track_pointer){
z /= 8;
if (z > 127 || z < -126){
window_error_open(3346, 3347);
window_error_open(3346, STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY);
return 0;
}
@ -2487,7 +2487,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_
}
if (map_found == 0){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2516,7 +2516,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_
maze++;
if (maze >= RCT2_ADDRESS(0x009DA151, rct_maze_element)){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
} while (!map_element_is_last_for_tile(map_element++));
@ -2529,7 +2529,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_
uint16 location = ride->entrances[0];
if (location == 0xFFFF){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2560,7 +2560,7 @@ int maze_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* track_
location = ride->exits[0];
if (location == 0xFFFF){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2628,7 +2628,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra
track_begin_end trackBeginEnd;
if (sub_6CAF80(rideIndex, &trackElement) == 0){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2649,7 +2649,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra
RCT2_GLOBAL(0x00F4414D, uint8) = direction;
if (sub_6C683D(&trackElement.x, &trackElement.y, &z, direction, track_type, 0, &trackElement.element, 0)){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2818,7 +2818,7 @@ int tracked_ride_to_td6(uint8 rideIndex, rct_track_td6* track_design, uint8* tra
z /= 8;
if (z > 127 || z < -126){
RCT2_GLOBAL(0x00141E9AC, uint16) = 3347;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_TRACK_TOO_LARGE_OR_TOO_MUCH_SCENERY;
return 0;
}
@ -2973,22 +2973,22 @@ int save_track_design(uint8 rideIndex){
rct_ride* ride = GET_RIDE(rideIndex);
if (!(ride->lifecycle_flags & RIDE_LIFECYCLE_TESTED)){
window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id));
window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id));
return 0;
}
if (ride->ratings.excitement == 0xFFFF){
window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id));
window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id));
return 0;
}
if (!ride_type_has_flag(ride->type, RIDE_TYPE_FLAG_HAS_TRACK)) {
window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id));
window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id));
return 0;
}
if (!ride_to_td6(rideIndex)){
window_error_open(3346, RCT2_GLOBAL(0x141E9AC, rct_string_id));
window_error_open(STR_CANT_SAVE_TRACK_DESIGN, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id));
return 0;
}
@ -3187,7 +3187,7 @@ void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int
if (!(flags & GAME_COMMAND_FLAG_ALLOW_DURING_PAUSED)){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -3244,10 +3244,10 @@ void game_command_place_track_design(int* eax, int* ebx, int* ecx, int* edx, int
if (cost == MONEY32_UNDEFINED ||
!(flags & GAME_COMMAND_FLAG_APPLY)){
rct_string_id error_reason = RCT2_GLOBAL(0x00141E9AC, rct_string_id);
rct_string_id error_reason = RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id);
game_do_command(0, GAME_COMMAND_FLAG_APPLY, 0, rideIndex, GAME_COMMAND_DEMOLISH_RIDE, 0, 0);
*ebx = cost;
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = error_reason;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = error_reason;
RCT2_GLOBAL(RCT2_ADDRESS_NEXT_EXPENDITURE_TYPE, uint8) = RCT_EXPENDITURE_TYPE_RIDE_CONSTRUCTION * 4;
RCT2_GLOBAL(0x00F44121, money32) = cost;
return;
@ -3490,7 +3490,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
RCT2_GLOBAL(0x00F441D5, uint32) = properties_1;
RCT2_GLOBAL(0x00F441D9, uint32) = properties_2;
RCT2_GLOBAL(0x00F441DD, uint32) = properties_3;
RCT2_GLOBAL(0x00F441D4, uint8) = 0;
RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = 0;
uint64 enabledTrackPieces = 0;
enabledTrackPieces |= rideEntry->enabledTrackPiecesB & RCT2_ADDRESS(0x01357644, uint32)[ride->type];
@ -3670,16 +3670,16 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
return MONEY32_UNDEFINED;
}
bh = RCT2_GLOBAL(0x00F1AD60, uint8) & 3;
if (RCT2_GLOBAL(0x00F441D4, uint8) != 0 && (RCT2_GLOBAL(0x00F441D4, uint8) & bh) == 0) {
bh = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 3;
if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) != 0 && (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & bh) == 0) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND;
return MONEY32_UNDEFINED;
}
RCT2_GLOBAL(0x00F441D4, uint8) = bh;
RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) = bh;
if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) {
if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 0x200) {
if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) {
if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
return MONEY32_UNDEFINED;
}
@ -3687,7 +3687,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
else {
if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 0x200) {
if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) {
if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
return MONEY32_UNDEFINED;
}
@ -3696,7 +3696,7 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
if (rideTypeFlags & RIDE_TYPE_FLAG_FLAT_RIDE) {
if (RCT2_ADDRESS(0x0099443C, uint16)[type] & 1) {
if (!(RCT2_GLOBAL(0x00F1AD60, uint8) & 4)) {
if (!(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER)) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
@ -3704,14 +3704,14 @@ static money32 track_place(int rideIndex, int type, int originX, int originY, in
}
else {
if (RCT2_ADDRESS(0x0099423C, uint16)[type] & 1) {
if (RCT2_GLOBAL(0x00F1AD60, uint8) & 4) {
if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
}
}
if (RCT2_GLOBAL(0x00F1AD60, uint8) & 4) {
if (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_RIDE_CANT_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}
@ -3978,7 +3978,7 @@ money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 originY,
}
if (!(flags & (1 << 3)) && RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
return MONEY32_UNDEFINED;
}
@ -4019,7 +4019,7 @@ money32 track_remove(uint8 type, uint8 sequence, sint16 originX, sint16 originY,
}
if (mapElement->flags & (1 << 6)){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3091;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_YOU_ARE_NOT_ALLOWED_TO_REMOVE_THIS_SECTION;
return MONEY32_UNDEFINED;
}

View File

@ -484,6 +484,10 @@ enum {
TRACK_ELEM_LEFT_LARGE_HALF_LOOP_DOWN
};
enum {
TRACK_ELEMENT_LOCATION_IS_UNDERGROUND = 2,
};
typedef struct {
rct_xy_element last;
rct_xy_element current;

View File

@ -986,7 +986,7 @@ static void window_editor_object_selection_scroll_mousedown(rct_window *w, int s
STR_UNABLE_TO_SELECT_THIS_OBJECT :
STR_UNABLE_TO_DE_SELECT_THIS_OBJECT;
window_error_open(error_title, RCT2_GLOBAL(0x141E9AC, uint16));
window_error_open(error_title, RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16));
return;
}
@ -1664,7 +1664,7 @@ void reset_required_object_flags(){
* object.
*/
void set_object_selection_error(uint8 is_master_object, rct_string_id error_msg){
RCT2_GLOBAL(0x141E9AC, rct_string_id) = error_msg;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = error_msg;
if (!is_master_object){
reset_selected_object_count_and_size();
}

View File

@ -888,7 +888,7 @@ static void window_editor_objective_options_main_paint(rct_window *w, rct_drawpi
// Objective value
x = w->x + w->widgets[WIDX_OBJECTIVE].left + 1;
y = w->y + w->widgets[WIDX_OBJECTIVE].top;
stringId = STR_OBJECTIVE_2_NONE + RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8);
stringId = STR_OBJECTIVE_DROPDOWN_NONE + RCT2_GLOBAL(RCT2_ADDRESS_OBJECTIVE_TYPE, uint8);
gfx_draw_string_left(dpi, 1193, &stringId, 0, x, y);
if (w->widgets[WIDX_OBJECTIVE_ARG_1].type != WWT_EMPTY) {

View File

@ -1579,7 +1579,7 @@ static void window_ride_construction_construct(rct_window *w)
sound_play_panned(SOUND_PLACE_ITEM, 0x8001, x, y, z);
if (RCT2_GLOBAL(0x00F441D4, uint8) & 2) {
if (RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND) {
viewport_set_visibility(1);
}
@ -2382,7 +2382,7 @@ money32 sub_6CA162(int rideIndex, int trackType, int trackDirection, int edxRS16
RCT2_GLOBAL(0x00F440C9, uint16) = z;
RCT2_GLOBAL(0x00F440CB, uint8) = trackDirection;
_currentTrackSelectionFlags |= 2;
viewport_set_visibility(RCT2_GLOBAL(0x00F441D4, uint8) & 2 ? 1 : 3);
viewport_set_visibility(RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND ? 1 : 3);
if (_currentTrackSlopeEnd != 0)
viewport_set_visibility(2);
@ -2401,7 +2401,7 @@ money32 sub_6CA162(int rideIndex, int trackType, int trackDirection, int edxRS16
RCT2_GLOBAL(0x00F440C9, uint16) = z;
RCT2_GLOBAL(0x00F440CB, uint8) = trackDirection;
_currentTrackSelectionFlags |= 2;
viewport_set_visibility(RCT2_GLOBAL(0x00F441D4, uint8) & 2 ? 1 : 3);
viewport_set_visibility(RCT2_GLOBAL(RCT2_ADDRESS_ABOVE_GROUND_FLAGS, uint8) & TRACK_ELEMENT_LOCATION_IS_UNDERGROUND ? 1 : 3);
if (_currentTrackSlopeEnd != 0)
viewport_set_visibility(2);

View File

@ -1471,7 +1471,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
ebx |= GAME_COMMAND_FLAG_APPLY;
}
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE;
int cost = game_do_command(cur_grid_x, ebx, cur_grid_y, parameter_2, GAME_COMMAND_PLACE_SCENERY, RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_ROTATION, uint8) | (parameter_3 & 0xFFFF0000), RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_Z_COORDINATE, sint16));
@ -1485,8 +1485,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
break;
}
if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 ||
RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES ||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){
break;
}
@ -1509,7 +1509,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
ebx &= 0xFF00;
ebx |= 0x81;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE;
int cost = game_do_command(grid_x, ebx, grid_y, parameter_2, GAME_COMMAND_PLACE_PATH, parameter_3, 0);
@ -1546,8 +1546,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
return;
}
if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 ||
RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES ||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){
break;
}
@ -1569,7 +1569,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
for (; bl != 0; bl--){
RCT2_GLOBAL(0x009A8C29, uint8) |= 1;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE;
int ebx = (parameter_1 & 0xFF00) | 1;
@ -1584,8 +1584,8 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
return;
}
if (RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 827 ||
RCT2_GLOBAL(0x00141E9AC, rct_string_id) == 1032){
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_NOT_ENOUGH_CASH_REQUIRES ||
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) == STR_CAN_ONLY_BUILD_THIS_ON_WATER){
break;
}
@ -1598,7 +1598,7 @@ static void window_top_toolbar_scenery_tool_down(short x, short y, rct_window* w
case 4:
{
// Banners
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = 1161;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_STRING_ID, rct_string_id) = STR_CANT_POSITION_THIS_HERE;
// The return value will be banner id but the input is colour (param 3)
int banner_id = parameter_3;
@ -2110,9 +2110,11 @@ money32 try_place_ghost_scenery(rct_xy16 map_tile, uint32 parameter_1, uint32 pa
RCT2_GLOBAL(RCT2_ADDRESS_GHOST_SCENERY_Z, uint8) = mapElement->base_height;
RCT2_GLOBAL(RCT2_ADDRESS_SCENERY_MAP_ELEMENT_TYPE, uint8) = mapElement->type;
if (RCT2_GLOBAL(0x00F64F14, uint8) & (1 << 1)){
//Set underground on
viewport_set_visibility(4);
}
else{
//Set underground off
viewport_set_visibility(5);
}
@ -2189,9 +2191,11 @@ money32 try_place_ghost_scenery(rct_xy16 map_tile, uint32 parameter_1, uint32 pa
RCT2_GLOBAL(RCT2_ADDRESS_GHOST_SCENERY_Z, uint8) = mapElement->base_height;
if (RCT2_GLOBAL(0x00F64F14, uint8) & (1 << 1)){
//Set underground on
viewport_set_visibility(4);
}
else{
//Set underground off
viewport_set_visibility(5);
}

View File

@ -167,8 +167,8 @@ static money32 footpath_element_insert(int type, int x, int y, int z, int slope,
if (!gCheatsDisableClearanceChecks && !map_can_construct_with_clear_at(x, y, z, zHigh, (void*)0x006A6733, bl))
return MONEY32_UNDEFINED;
RCT2_GLOBAL(0x00F3EFA4, uint8) = RCT2_GLOBAL(0x00F1AD60, uint8);
if (!gCheatsDisableClearanceChecks && (RCT2_GLOBAL(0x00F1AD60, uint8) & 4)) {
RCT2_GLOBAL(0x00F3EFA4, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8);
if (!gCheatsDisableClearanceChecks && (RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER)) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_THIS_UNDERWATER;
return MONEY32_UNDEFINED;
}

View File

@ -2380,7 +2380,7 @@ void game_command_place_scenery(int* eax, int* ebx, int* ecx, int* edx, int* esi
RCT2_GLOBAL(0x00F64F24, uint16) = y;
RCT2_GLOBAL(0x00F64F1E, uint32) = (uint32)(ebx - 1); //0x006E0D6E uses [F64F1E+4] to read ebx value
if(gCheatsDisableClearanceChecks || map_can_construct_with_clear_at(x, y, zLow, zHigh, (void*)0x006E0D6E, bl)){
RCT2_GLOBAL(0x00F64F14, uint8) = RCT2_GLOBAL(0x00F1AD60, uint8) & 0x3;
RCT2_GLOBAL(0x00F64F14, uint8) = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 0x3;
if(*ebx & GAME_COMMAND_FLAG_APPLY){
int flags = (bl & 0xf);
rct_map_element* new_map_element = map_element_insert(x / 32, y / 32, zLow, flags);
@ -2484,7 +2484,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
}
if (RCT2_GLOBAL(RCT2_ADDRESS_GAME_PAUSED, uint8) != 0 && !gConfigCheat.build_in_pause_mode){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 2214;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CONSTRUCTION_NOT_POSSIBLE_WHILE_GAME_IS_PAUSED;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2536,14 +2536,14 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
water_height *= 16;
if (position.z < water_height){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1180;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CANT_BUILD_THIS_UNDERWATER;
*ebx = MONEY32_UNDEFINED;
return;
}
}
if (position.z / 8 < map_element->base_height){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2553,7 +2553,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
bp += 2;
if (map_element->properties.surface.slope & (1 << new_edge)){
if (position.z / 8 < bp){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2566,7 +2566,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
if (map_element->properties.surface.slope & (1 << new_edge)){
bp += 2;
if (position.z / 8 < bp){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2579,7 +2579,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
new_edge = (edge + 3) & 3;
if (map_element->properties.surface.slope & (1 << new_edge)){
if (position.z / 8 < bp){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2592,7 +2592,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
if (map_element->properties.surface.slope & (1 << new_edge)){
bp += 2;
if (position.z / 8 < bp){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 1033;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_CAN_ONLY_BUILD_THIS_ABOVE_GROUND;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2632,7 +2632,7 @@ void game_command_place_fence(int* eax, int* ebx, int* ecx, int* edx, int* esi,
RCT2_GLOBAL(0x00141F722, uint8) = position.z / 8;
if (bp & 0xC0){
if (fence->wall.flags & WALL_SCENERY_FLAG3){
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 3133;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 3133;
*ebx = MONEY32_UNDEFINED;
return;
}
@ -2846,8 +2846,8 @@ void game_command_place_large_scenery(int* eax, int* ebx, int* ecx, int* edx, in
RCT2_GLOBAL(0x00F43894, sint16) = y2;
RCT2_GLOBAL(0x00F43896, uint32) = (uint32)(ebx - 3); // this is how ebx flags var is passed to 0x006B8D88
if(gCheatsDisableClearanceChecks || map_can_construct_with_clear_at(x2, y2, zLow, zHigh, (void*)0x006B8D88, bl)){
if(!(RCT2_GLOBAL(0x00F1AD60, uint8) & 4) && !(RCT2_GLOBAL(0x00F1AD60, uint8) & 2)){
int b = RCT2_GLOBAL(0x00F1AD60, uint8) & 0x3;
if(!(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & ELEMENT_IS_UNDERWATER) && !(RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 2)){
int b = RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) & 0x3;
if (!gCheatsDisableClearanceChecks) {
if (RCT2_GLOBAL(0x00F64F14, uint8) && !(RCT2_GLOBAL(0x00F64F14, uint8) & b)){
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, uint16) = STR_CANT_BUILD_PARTLY_ABOVE_AND_PARTLY_BELOW_GROUND;
@ -3121,7 +3121,7 @@ int sub_68B044()
if (RCT2_GLOBAL(0x00140E9A4, rct_map_element*) <= RCT2_ADDRESS(RCT2_ADDRESS_MAP_ELEMENTS_END, rct_map_element))
return 1;
else{
RCT2_GLOBAL(0x00141E9AC, rct_string_id) = 894;
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = 894;
return 0;
}
}
@ -3189,7 +3189,7 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle
{
//return (RCT2_CALLPROC_X(0x0068B932, x, bl, y, (zHigh << 8) | zLow, 0, 0, (int)clearFunc) & 0x100) == 0;
RCT2_GLOBAL(0x00F1AD40, void*) = clearFunc;
RCT2_GLOBAL(0x00F1AD60, uint8) = 1;
RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) = 1;
if (x >= RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, sint16) || y >= RCT2_GLOBAL(RCT2_ADDRESS_MAP_SIZE_UNITS, sint16) || x < 32 || y < 32) {
RCT2_GLOBAL(RCT2_ADDRESS_GAME_COMMAND_ERROR_TEXT, rct_string_id) = STR_OFF_EDGE_OF_MAP;
return false;
@ -3206,7 +3206,7 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle
}
int water_height = ((map_element->properties.surface.terrain & MAP_ELEMENT_WATER_HEIGHT_MASK) * 2);
if (water_height && water_height > zLow && map_element->base_height < zHigh) {
RCT2_GLOBAL(0x00F1AD60, uint8) |= 4;
RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) |= 4;
if (water_height < zHigh) {
goto loc_68BAE6;
}
@ -3224,8 +3224,8 @@ int map_can_construct_with_clear_at(int x, int y, int zLow, int zHigh, void *cle
if ((bl & 0xF0) != 0xF0) {
if (map_element->base_height >= zHigh) {
// loc_68BA81
RCT2_GLOBAL(0x00F1AD60, uint8) |= 2;
RCT2_GLOBAL(0x00F1AD60, uint8) &= 0xFE;
RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) |= 2;
RCT2_GLOBAL(RCT2_ADDRESS_ELEMENT_LOCATION_COMPARED_TO_GROUND_AND_WATER, uint8) &= 0xFE;
} else {
int al = map_element->base_height;
int ah = al;

View File

@ -203,6 +203,10 @@ enum {
ENTRANCE_TYPE_PARK_ENTRANCE
};
enum {
ELEMENT_IS_UNDERWATER = 4,
};
#define MAP_ELEMENT_QUADRANT_MASK 0xC0
#define MAP_ELEMENT_TYPE_MASK 0x3C
#define MAP_ELEMENT_DIRECTION_MASK 0x03