From ebf62629b553fa1051bcd25bc1021c09ffb86889 Mon Sep 17 00:00:00 2001 From: Anewbe Date: Wed, 5 Dec 2018 16:15:52 -0600 Subject: [PATCH] Adds ability to selectively disable submap rotation. --- code/controllers/configuration.dm | 5 +++++ code/modules/maps/tg/map_template.dm | 9 ++++++++- config/example/config.txt | 15 +++++++++++++++ maps/submaps/surface_submaps/plains/plains.dm | 1 + 4 files changed, 29 insertions(+), 1 deletion(-) diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm index 1cdc7e2717..9781a68adc 100644 --- a/code/controllers/configuration.dm +++ b/code/controllers/configuration.dm @@ -228,6 +228,8 @@ var/list/gamemode_cache = list() var/radiation_resistance_multiplier = 8.5 //VOREstation edit var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it. + var/random_submap_orientation = FALSE // If true, submaps loaded automatically can be rotated. + /datum/configuration/New() var/list/L = typesof(/datum/game_mode) - /datum/game_mode for (var/T in L) @@ -748,6 +750,9 @@ var/list/gamemode_cache = list() if ("paranoia_logging") config.paranoia_logging = 1 + if("random_submap_orientation") + config.random_submap_orientation = 1 + else log_misc("Unknown setting in configuration: '[name]'") diff --git a/code/modules/maps/tg/map_template.dm b/code/modules/maps/tg/map_template.dm index 27105b0701..6606072c55 100644 --- a/code/modules/maps/tg/map_template.dm +++ b/code/modules/maps/tg/map_template.dm @@ -19,6 +19,7 @@ var/list/global/map_templates = list() var/mappath = null var/loaded = 0 // Times loaded this round var/annihilate = FALSE // If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. + var/fixed_orientation = FALSE // If true, the submap will not be rotated randomly when loaded. var/cost = null // The map generator has a set 'budget' it spends to place down different submaps. It will pick available submaps randomly until \ it runs out. The cost of a submap should roughly corrispond with several factors such as size, loot, difficulty, desired scarcity, etc. \ @@ -226,7 +227,13 @@ var/list/global/map_templates = list() var/specific_sanity = 100 // A hundred chances to place the chosen submap. while(specific_sanity > 0) specific_sanity-- - var/orientation = pick(cardinal) + + var/orientation + if(chosen_template.fixed_orientation || !config.random_submap_orientation) + orientation = SOUTH + else + orientation = pick(cardinal) + chosen_template.preload_size(chosen_template.mappath, orientation) var/width_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.width : chosen_template.height) / 2) var/height_border = TRANSITIONEDGE + SUBMAP_MAP_EDGE_PAD + round(((orientation & NORTH|SOUTH) ? chosen_template.height : chosen_template.width) / 2) diff --git a/config/example/config.txt b/config/example/config.txt index 8f5362c01a..6d16a0f384 100644 --- a/config/example/config.txt +++ b/config/example/config.txt @@ -94,6 +94,10 @@ SHOW_MODS ##Show mentors on staffwho SHOW_EVENT +<<<<<<< HEAD +======= + +>>>>>>> ec57465... Merge pull request #5748 from Neerti/submap_orientation_config ## Chooses whether mods have the ability to tempban or not MODS_CAN_TEMPBAN @@ -383,6 +387,10 @@ STARLIGHT 0 ## Defines how Law Zero is phrased. Primarily used in the Malfunction gamemode. # LAW_ZERO ERROR ER0RR $R0RRO$!R41.%%!!(%$^^__+ @#F0E4'STATION OVERRUN, ASSUME CONTROL TO CONTAIN OUTBREAK, ALL LAWS OVERRIDDEN#*?&110010 +<<<<<<< HEAD +======= + +>>>>>>> ec57465... Merge pull request #5748 from Neerti/submap_orientation_config ## Enables specific procedural map generation, generally for mining, however it is specific to the loaded map. Uncomment to enable it, however it can ## worth it to keep it disabled if you are not hosting an actual server, to speed up start-up time for testing code. @@ -416,3 +424,10 @@ ENGINE_MAP Supermatter Engine,Edison's Bane ## Uncomment to enable Paranoia Logging. This will notify admins and write to a file any time a new player (byond or your server) connects. # PARANOIA_LOGGING +<<<<<<< HEAD +======= +## Uncomment to enable submaps to have their orientation rotated randomly during map generation. +## Submap rotation is an experimental feature and can cause bugs and weirdness if certain objects inside the submap are coded poorly. +## Submaps can still be rotated when loading manually with the admin verbs, if desired. +# RANDOM_SUBMAP_ORIENTATION +>>>>>>> ec57465... Merge pull request #5748 from Neerti/submap_orientation_config diff --git a/maps/submaps/surface_submaps/plains/plains.dm b/maps/submaps/surface_submaps/plains/plains.dm index c4e97e37d6..77ab822ed9 100644 --- a/maps/submaps/surface_submaps/plains/plains.dm +++ b/maps/submaps/surface_submaps/plains/plains.dm @@ -68,6 +68,7 @@ desc = "A bunch of marker beacons, scattered in a strange pattern." mappath = 'maps/submaps/surface_submaps/plains/beacons.dmm' cost = 5 + fixed_orientation = TRUE /datum/map_template/surface/plains/Epod name = "Emergency Pod"