From 1582c61e73f1e1f187dac68e8aacb8b0190e8080 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 7 Jun 2026 13:02:33 -0700 Subject: [PATCH 01/44] preset --- code/modules/mapping/map_helpers/gear_marker.dm | 12 ++++++++++++ code/modules/mapping/map_injection/starting_gear.dm | 12 ++++++++++++ 2 files changed, 24 insertions(+) diff --git a/code/modules/mapping/map_helpers/gear_marker.dm b/code/modules/mapping/map_helpers/gear_marker.dm index d16ab0d6158f..601fcd52220d 100644 --- a/code/modules/mapping/map_helpers/gear_marker.dm +++ b/code/modules/mapping/map_helpers/gear_marker.dm @@ -234,3 +234,15 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( /obj/map_helper/gear_marker/role/make_locker/ignite() return new locker_type(loc, locker_appearance) + +/obj/map_helper/gear_marker/role/make_locker/security + role_tag = "security" + +/obj/map_helper/gear_marker/role/make_locker/medical + role_tag = "medical" + +/obj/map_helper/gear_marker/role/make_locker/engineer + role_tag = "engineer" + +/obj/map_helper/gear_marker/role/make_locker/captain + role_tag = "captain" diff --git a/code/modules/mapping/map_injection/starting_gear.dm b/code/modules/mapping/map_injection/starting_gear.dm index 591fb081a350..5b2037a0dfee 100644 --- a/code/modules/mapping/map_injection/starting_gear.dm +++ b/code/modules/mapping/map_injection/starting_gear.dm @@ -196,3 +196,15 @@ // spawn at those for(var/obj/map_helper/gear_marker/role/marker in overflow_markers) marker.inject(gear) + +/datum/map_starting_gear/role/security + role_tag = "security" + +/datum/map_starting_gear/role/engineer + role_tag = "engineer" + +/datum/map_starting_gear/role/captain + role_tag = "captain" + +/datum/map_starting_gear/role/medical + role_tag = "medical" From f2ee5de67112a0da5fba8315f4ef901d07f63734 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:42:55 -0700 Subject: [PATCH 02/44] hm --- citadel.dme | 1 + code/modules/mapping/dmm_suite/dmm_context.dm | 69 +-------- .../mapping/map_helpers/engine_loader.dm | 1 - .../mapping/map_helpers/template_loader.dm | 71 ++++++++++ .../map_injection/fixed_template_seeding.dm | 27 ++++ .../mapping/map_injection/map_injection.dm | 13 +- .../modules/mapping/map_system/map_context.dm | 134 ++++++++++++++++++ .../mapping/map_system/map_template.dm | 64 +++++---- 8 files changed, 289 insertions(+), 91 deletions(-) create mode 100644 code/modules/mapping/map_helpers/template_loader.dm create mode 100644 code/modules/mapping/map_injection/fixed_template_seeding.dm create mode 100644 code/modules/mapping/map_system/map_context.dm diff --git a/citadel.dme b/citadel.dme index a2a60b2f8eb3..0c3c07ed41c4 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3654,6 +3654,7 @@ #include "code\modules\mapping\map_helpers\paint.dm" #include "code\modules\mapping\map_helpers\paint_stripe.dm" #include "code\modules\mapping\map_helpers\role_marker.dm" +#include "code\modules\mapping\map_helpers\template_loader.dm" #include "code\modules\mapping\map_helpers\access_helper\access_helper.dm" #include "code\modules\mapping\map_helpers\access_helper\airlock.dm" #include "code\modules\mapping\map_helpers\network_builder\_network_builder.dm" diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index e840fc575484..7db05ac6244b 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -22,20 +22,16 @@ var/used = FALSE /// was the loading successful? var/success = FALSE - /// were map_initialization() hooks on /obj/map_helpers already fired? - var/map_initializations_fired = FALSE - /// were /datum/map_injection's fired - var/map_injections_fired = FALSE //* set these before loading *// - /// mangling id - if non-null, atoms under this context should - /// use this to mangle their obfuscation IDs appropriately - /// if they're meant to link to other devices on the same map - var/mangling_id - - /// injected middleware - var/list/datum/map_injection/injections + #warn hook + /** + * Our map context. + */ + var/datum/map_context/map + /// set to map_context's value for speed + var/map_mangling_id //* set by load cycle *// @@ -58,18 +54,6 @@ /// * This can be null. var/datum/dmm_parsed/loaded_dmm - //* injected by things in load cycle *// - - /// collected map_helpers asking to have map_initialization's called - var/list/obj/map_helper/map_initialization_hooked = list() - - /// collected gear markers - var/list/obj/map_helper/gear_marker/distributed_gear_markers - /// collected gear markers - var/list/obj/map_helper/gear_marker/stamped_gear_markers_by_role - /// collected role markers - var/list/obj/map_helper/role_marker/role_markers_by_tag - /datum/dmm_context/proc/mark_used() if(used) stack_trace("a dmm_context was reused; this is not allowed and will result in bugs.") @@ -86,45 +70,6 @@ var/datum/dmm_orientation/orientation_data = GLOB.dmm_orientations["[SOUTH]"] orientation_data.populate_context(src) -/** - * fire off initializations - * - * 1. injections - * 2. initializations - * - * * this is executed - */ -/datum/dmm_context/proc/execute_postload() - fire_map_injections() - fire_map_initializations() - -/datum/dmm_context/proc/fire_map_initializations() - if(map_initializations_fired) - CRASH("initializations already were fired") - map_initializations_fired = TRUE - // so SSatoms doesn't init the atoms we make - SSatoms.map_loader_begin("dmm-context") - Master.StartLoadingMap() - for(var/obj/map_helper/helper in map_initialization_hooked) - helper.map_initializations(src) - Master.StopLoadingMap() - SSatoms.map_loader_stop("dmm-context") - -/datum/dmm_context/proc/fire_map_injections() - if(map_injections_fired) - CRASH("injections already were fired") - map_injections_fired = TRUE - // so SSatoms doesn't init the atoms we make - SSatoms.map_loader_begin("dmm-context") - Master.StartLoadingMap() - for(var/datum/map_injection/injection in injections) - injection.injection(src) - Master.StopLoadingMap() - SSatoms.map_loader_stop("dmm-context") - -/datum/dmm_context/proc/register_injection(datum/map_injection/injection) - injections |= injection - /datum/dmm_context/proc/loaded() return success diff --git a/code/modules/mapping/map_helpers/engine_loader.dm b/code/modules/mapping/map_helpers/engine_loader.dm index 1dc4d35494f3..e8c4de21e68f 100644 --- a/code/modules/mapping/map_helpers/engine_loader.dm +++ b/code/modules/mapping/map_helpers/engine_loader.dm @@ -72,7 +72,6 @@ qdel(src) - /obj/map_helper/engine_loader/proc/get_turfs_to_clean(lx, ly, lz, ldir) . = list() if(clean_turfs) diff --git a/code/modules/mapping/map_helpers/template_loader.dm b/code/modules/mapping/map_helpers/template_loader.dm new file mode 100644 index 000000000000..e75344ef1680 --- /dev/null +++ b/code/modules/mapping/map_helpers/template_loader.dm @@ -0,0 +1,71 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * A map helper that immediately loads a template, before + * atom initialization. + */ +/obj/map_helper/template_loader + name = "Template Loader" + early = TRUE + + /// use an isolated map context for the template + /// + /// TODO: a way to pass in map injections and stuff from mapping tools would be nice. + var/detach_from_map = FALSE + +/obj/map_helper/template_loader/map_initializations(datum/dmm_context/context) + . = ..() + + var/list/resolved = resolve_aligned_load_target() + if(!resolved) + return + + var/datum/map_template/template = resolved[1] + var/x = resolved[2] + var/y = resolved[3] + var/z = resolved[4] + var/orientation = resolved[5] + + if(!template) + return + + var/turf/T = locate(x, y, z) + if(!T) + CRASH("template loader failed to locate turf at specified coordinates ([x], [y], [z])") + + log_game("Chainloading template [template] at ([x], [y], [z]) with orientation [orientation] via [src] ([REF(src)]).") + template.load(T, centered = FALSE, orientation = orientation) + +/** + * * This may return null to cancel + * @return null or list(template datum, x, y, z, orientation); x/y/z is for the lower left corner. + */ +/obj/map_helper/template_loader/proc/resolve_aligned_load_target() + return + +/** + * Loads a template aligned at a specific corner of the template. + */ +/obj/map_helper/template_loader/corner_aligned + +#warn impl; do dirs too + icons + +/** + * For /datum/map_injection/fixed_template_seeding. + * + * * This allows specific tags to be spawned here. + * * As of right now, this has no checks on maximum size. Make your tags accordingly. + */ +/obj/map_helper/template_loader/corner_aligned/fixed_template_seeding_target + /** + * Target tags for the template seeding. + * * Optionally associate a tag to a number to weight it. + * Injection gets final say. + */ + var/list/allow_tags = list() + +/obj/map_helper/template_loader/corner_aligned/fixed_template_seeding_target/default + allow_tags = list( + "default" = 1, + ) diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm new file mode 100644 index 000000000000..aadbe9064d77 --- /dev/null +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -0,0 +1,27 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Seeds a specific set of templates into + * `fixed_template_seeding_target` helpers. + */ +/datum/map_injection/fixed_template_seeding + /** + * Required templates by tag. + */ + var/list/require = list() + /** + * Spawn this many templates, by tag. + * * Second priority after 'require'. + */ + var/list/push = list() + /** + * Fill unused targets. + * * This is a weight based system rather than count. + * * Total weight is counted per tag. This may be slow if there's too many + * matching tags, so be careful. + * * Example: fill = list("science" = list(/datum/map_template/my_map_template/anomaly_store = 1, ...)) + */ + var/list/fill = list() + +#warn impl diff --git a/code/modules/mapping/map_injection/map_injection.dm b/code/modules/mapping/map_injection/map_injection.dm index 7ced3b521387..a7ddc2c52d57 100644 --- a/code/modules/mapping/map_injection/map_injection.dm +++ b/code/modules/mapping/map_injection/map_injection.dm @@ -25,5 +25,16 @@ */ /datum/map_injection -/datum/map_injection/proc/injection(datum/dmm_context/context) +/** + * Called when the entire map is done loading but before atom init. + * * This is called with SSatoms in mapload mode. + */ +/datum/map_injection/proc/on_map_pre_init(datum/map_context/context) + return + +/** + * Called when the entire map is done loading and atom-initializing. + * * This is called with SSatoms in normal mode. + */ +/datum/map_injection/proc/on_map_post_init(datum/map_context/context) return diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm new file mode 100644 index 000000000000..9a068452b98c --- /dev/null +++ b/code/modules/mapping/map_system/map_context.dm @@ -0,0 +1,134 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * context for mapload operations + * + * * unlike dmm_context, this is for the whole map. + * * what the 'whole map' means depends on the load methodology + * * as an example, a shuttle is its own map by default + * * a map template when loaded by an admin manually is its own map + * * a map helper that loads a template may or may not pass the context through + */ +/datum/map_context + /** + * Mangling ID. Used to separate instances on different maps. + * * Used by most things that expect to only auto-link across a 'logical map'. + * * Generally, shuttles are not part of the same 'logical map', and templates + * are optionally part of it. + */ + var/mangling_id + /** + * Injections to fire + * * Injections are stateless and generally are not automatically + * transferred down if a template / shuttle is considered 'not part of the map'. + */ + VAR_PRIVATE/list/datum/map_injection/injections + VAR_PRIVATE/injections_pre_init_fired = FALSE + VAR_PRIVATE/injections_post_init_fired = FALSE + + /** + * Callbacks to call post-load but pre-init. Called with (src). + * * These callbacks are fired with SSatoms under 'map_loader_begin'. + * * These have priority over injections. + */ + VAR_PRIVATE/list/datum/callback/pre_init_callbacks = list() + VAR_PRIVATE/pre_init_callbacks_fired = FALSE + + /** + * Callbacks to call post-load, post-atom-init. Called with (src). + * * These callbacks are fired with SSatoms in normal mode. + * * These have priority over injections. + */ + VAR_PRIVATE/list/datum/callback/post_init_callbacks = list() + VAR_PRIVATE/post_init_callbacks_fired = FALSE + + //* Added during load *// + + /// All dmm_context's loaded + var/list/datum/dmm_context/loaded_dmm_contexts = list() + + //* Bespoke 'collected' values. *// + + /// collected gear markers + var/list/obj/map_helper/gear_marker/collected_distributed_gear_markers + /// collected gear markers + var/list/obj/map_helper/gear_marker/collected_stamped_gear_markers_by_role + /// collected role markers + var/list/obj/map_helper/role_marker/collected_role_markers_by_tag + +#warn hook all + +/datum/map_context/Destroy() + injections = null + pre_init_callbacks = null + post_init_callbacks = null + loaded_dmm_contexts = null + return ..() + +/datum/map_context/proc/register_injection(datum/map_injection/injection) + if(injection in injections) + CRASH("injection already registered") + injections |= injection + +/datum/map_context/proc/register_pre_init_callback(datum/callback/cb) + if(pre_init_callbacks_fired) + CRASH("pre-init callbacks already were fired") + pre_init_callbacks |= cb + +/datum/map_context/proc/register_post_init_callback(datum/callback/cb) + if(post_init_callbacks_fired) + CRASH("post-init callbacks already were fired") + post_init_callbacks |= cb + +/datum/map_context/proc/execute_pre_init() + fire_pre_init_callbacks() + fire_pre_init_injections() + +/datum/map_context/proc/execute_post_init() + fire_post_init_callbacks() + fire_post_init_injections() + +/datum/map_context/proc/fire_pre_init_callbacks() + if(pre_init_callbacks_fired) + CRASH("pre-init callbacks already were fired") + pre_init_callbacks_fired = TRUE + + SSatoms.map_loader_begin("map-context-callbacks") + Master.StartLoadingMap() + + for(var/datum/callback/callback as anything in pre_init_callbacks) + callback.invoke_no_sleep(src) + + Master.StopLoadingMap() + SSatoms.map_loader_stop("map-context-callbacks") + +/datum/map_context/proc/fire_post_init_callbacks() + if(post_init_callbacks_fired) + CRASH("post-init callbacks already were fired") + post_init_callbacks_fired = TRUE + + for(var/datum/callback/callback as anything in post_init_callbacks) + callback.invoke_no_sleep(src) + +/datum/map_context/proc/fire_pre_init_injections() + if(injections_pre_init_fired) + CRASH("pre-init injections already were fired") + injections_pre_init_fired = TRUE + + SSatoms.map_loader_begin("map-context-injections") + Master.StartLoadingMap() + + for(var/datum/map_injection/injection in injections) + injection.on_map_pre_init(src) + + Master.StopLoadingMap() + SSatoms.map_loader_stop("map-context-injections") + +/datum/map_context/proc/fire_post_init_injections() + if(injections_post_init_fired) + CRASH("post-init injections already were fired") + injections_post_init_fired = TRUE + + for(var/datum/map_injection/injection in injections) + injection.on_map_post_init(src) diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index 6fc2db5a84f3..ef3d8c96db52 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -1,13 +1,13 @@ /datum/map_template abstract_type = /datum/map_template - //* description + //* description *// /// template name var/name = "Default Template Name" /// template description var/desc = "Some text should go here. Maybe." - //* file + //* file *// /// path to the map var/map_path /// prefix of path including last / @@ -15,7 +15,7 @@ /// suffix of path (usually just the filename) var/suffix - //* cached data + //* cached data *// /// cached map var/datum/dmm_parsed/parsed /// keep cached map @@ -25,13 +25,13 @@ /// cached height var/height = 0 - //* loading + //* loading *// /// times loaded this round var/tmp/loaded = 0 /// If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. var/annihilate = FALSE - //* loading as its own level + //* loading as its own level *// /// traits to have if loaded as standalone level var/list/level_traits /// attributes to have if loaded as standalone level @@ -39,6 +39,12 @@ /// id to have if loaded as standalone level var/level_id + //* global state (yes i said global state too bad) *// + /** + * Increased every time recursively_load is called. This is used to prevent infinite recursion when templates load other templates. + */ + var/static/recursive_load_level = 0 + //* legacy below *// /// If this is set, no more than one template in the same group will be spawned, per submap seeding. @@ -143,8 +149,8 @@ * loads a map template * * @params - * * T - turf. center or lower left, depending on centered param. - * * centered - is T the center, or lower left? + * * where - turf. center or lower left, depending on centered param. + * * centered - is 'where' the center, or lower left? * * orientation - the orientation to load in. default is SOUTH. * * deferred_callbacks - if specified, generation callbacks are deferred and added to this list, instead of fired immediately. * * context - dmm_context to use @@ -152,10 +158,22 @@ * * @return null if failed, or /datum/dmm_context context */ -/datum/map_template/proc/load(turf/T, centered = FALSE, orientation = SOUTH, list/datum/callback/deferred_callbacks, datum/dmm_context/context, defer_context) - var/ll_x = T.x - var/ll_y = T.y - var/ll_z = T.z +#warn audit calls for callbacks? +/datum/map_template/proc/load(turf/where, centered = FALSE, orientation = SOUTH, list/datum/callback/deferred_callbacks, datum/dmm_context/context, defer_context) + if(recursive_load_level >= 10) + CRASH("trying to recursively load more than 10 templates deep. this probably \ + means you have an infinite loop somewhere in your map template / loader logic.") + + recursive_load_level++ + . = load_impl(where, centered, orientation, deferred_callbacks, context, defer_context) + recursive_load_level-- + +#warn lower left? +/datum/map_template/proc/load_impl(turf/lower_left, orientation, annihilate_bounds, datum/dmm_context/context) + + var/ll_x = where.x + var/ll_y = where.y + var/ll_z = where.z var/sideways = orientation & (EAST|WEST) var/real_width = sideways? height : width var/real_height = sideways? width : height @@ -237,10 +255,10 @@ ++cleaned SSmapping.subsystem_log("Deleted [cleaned] atoms.") -/datum/map_template/proc/get_affecting_turfs(turf/T, centered = FALSE, orientation = SOUTH) - var/ll_x = T.x - var/ll_y = T.y - var/ll_z = T.z +/datum/map_template/proc/get_affecting_turfs(turf/where, centered = FALSE, orientation = SOUTH) + var/ll_x = where.x + var/ll_y = where.y + var/ll_z = where.z var/sideways = orientation & (EAST|WEST) var/real_width = sideways? height : width var/real_height = sideways? width : height @@ -263,20 +281,12 @@ SSatoms.init_map_bounds(bounds) /** - * called when normally loaded + * Called post-load, pre-init. * - * @params - * * context - load context - * * late_generation - callbacks to fire after ruin seeding. if this is being spawned standalone, it fires immediately. - */ -/datum/map_template/proc/on_normal_load(datum/dmm_context/context, list/datum/callback/late_generation) - return - -/** - * called when loaded as a new zlevel + * * Use the context reference to pass in callbacks as needed to map init pre/post load lists. * * @params - * * z_index - zlevel we loaded onto + * * context - load context */ -/datum/map_template/proc/on_z_load(z_index) +/datum/map_template/proc/on_load(datum/dmm_context/context) return From 241a33f421e99b8391bf6fbeb9281255a59e37aa Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 7 Jun 2026 22:46:11 -0700 Subject: [PATCH 03/44] sigh --- citadel.dme | 2 ++ code/modules/mapping/map_system/map.dm | 7 +++++++ code/modules/mapping/templates/shuttle.dm | 5 +++++ 3 files changed, 14 insertions(+) diff --git a/citadel.dme b/citadel.dme index 0c3c07ed41c4..df9afbc63d56 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3659,11 +3659,13 @@ #include "code\modules\mapping\map_helpers\access_helper\airlock.dm" #include "code\modules\mapping\map_helpers\network_builder\_network_builder.dm" #include "code\modules\mapping\map_helpers\network_builder\power_cable.dm" +#include "code\modules\mapping\map_injection\fixed_template_seeding.dm" #include "code\modules\mapping\map_injection\map_injection.dm" #include "code\modules\mapping\map_injection\starting_gear.dm" #include "code\modules\mapping\map_system\map-legacy-station.dm" #include "code\modules\mapping\map_system\map-load.dm" #include "code\modules\mapping\map_system\map.dm" +#include "code\modules\mapping\map_system\map_context.dm" #include "code\modules\mapping\map_system\map_level-cmp.dm" #include "code\modules\mapping\map_system\map_level-legacy.dm" #include "code\modules\mapping\map_system\map_level-load.dm" diff --git a/code/modules/mapping/map_system/map.dm b/code/modules/mapping/map_system/map.dm index 549eb5a625a1..0e3c864f7fd9 100644 --- a/code/modules/mapping/map_system/map.dm +++ b/code/modules/mapping/map_system/map.dm @@ -94,6 +94,13 @@ /// * don't touch this unless you know what you're doing. var/load_shared_area_cache = TRUE + //* Injections *// + /** + * Injections to push into the `map_context` by default. + */ + var/list/datum/map_injection/injections = list() + #warn impl + //* Simulation *// /// Ceiling heights for levels that don't specify it, as well as the blank space between levels var/ceiling_height_default = 5 diff --git a/code/modules/mapping/templates/shuttle.dm b/code/modules/mapping/templates/shuttle.dm index e78e1cd84e74..2005c2e61c35 100644 --- a/code/modules/mapping/templates/shuttle.dm +++ b/code/modules/mapping/templates/shuttle.dm @@ -1,5 +1,10 @@ /datum/map_template/shuttle abstract_type = /datum/map_template/shuttle + /** + * Injections to push into the `map_context` by default. + */ + // TODO: just here so shuttle branch doesn't forget about it when it's merged with this! + // var/list/datum/map_injection/injections = list() /datum/map_template/shuttle/overmap abstract_type = /datum/map_template/shuttle/overmap From b89d521f958e675530736c063eeb12e0b90f4ce1 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 7 Jun 2026 23:02:36 -0700 Subject: [PATCH 04/44] nightmare --- citadel.dme | 3 ++ .../fixed_template_seeding_target.dm | 23 ++++++++ .../mapping/map_helpers/template_loader.dm | 53 +++++++++++++------ .../map_injection/fixed_template_seeding.dm | 14 ++++- .../mapping/map_system/map_template.dm | 10 ++++ .../mapping/map_system/map_template_random.dm | 12 +++++ .../modules/mapping/templates/map_specific.dm | 9 ++++ 7 files changed, 108 insertions(+), 16 deletions(-) create mode 100644 code/modules/mapping/map_helpers/fixed_template_seeding_target.dm create mode 100644 code/modules/mapping/map_system/map_template_random.dm create mode 100644 code/modules/mapping/templates/map_specific.dm diff --git a/citadel.dme b/citadel.dme index df9afbc63d56..024d06d96f00 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3649,6 +3649,7 @@ #include "code\modules\mapping\map_helpers\component_injector.dm" #include "code\modules\mapping\map_helpers\electrochromatic_linker.dm" #include "code\modules\mapping\map_helpers\engine_loader.dm" +#include "code\modules\mapping\map_helpers\fixed_template_seeding_target.dm" #include "code\modules\mapping\map_helpers\gear_marker.dm" #include "code\modules\mapping\map_helpers\map_helper.dm" #include "code\modules\mapping\map_helpers\paint.dm" @@ -3674,6 +3675,7 @@ #include "code\modules\mapping\map_system\map_level_trait.dm" #include "code\modules\mapping\map_system\map_reservation.dm" #include "code\modules\mapping\map_system\map_template.dm" +#include "code\modules\mapping\map_system\map_template_random.dm" #include "code\modules\mapping\map_system\map\custom.dm" #include "code\modules\mapping\map_system\map\gateway.dm" #include "code\modules\mapping\map_system\map\sector.dm" @@ -3688,6 +3690,7 @@ #include "code\modules\mapping\spawner\tcomms_relay.dm" #include "code\modules\mapping\spawner\window.dm" #include "code\modules\mapping\templates\engine.dm" +#include "code\modules\mapping\templates\map_specific.dm" #include "code\modules\mapping\templates\shuttle.dm" #include "code\modules\mapping\templates\submap.dm" #include "code\modules\mapping\templates\submaps_legacy.dm" diff --git a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm new file mode 100644 index 000000000000..1418b337c38e --- /dev/null +++ b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm @@ -0,0 +1,23 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * For /datum/map_injection/fixed_template_seeding. + * + * * This allows specific tags to be spawned here. + * * As of right now, this has no checks on maximum size. Make your tags accordingly. + */ +/obj/map_helper/fixed_template_seeding_target + /** + * Target tags for the template seeding. + * * Optionally associate a tag to a number to weight it. + * Injection gets final say. + */ + var/list/allow_tags = list( + "default" = 1, + ) + +#warn impl + +/obj/map_helper/fixed_template_seeding_target/corner_aligned +#warn impl; do dirs too + icons diff --git a/code/modules/mapping/map_helpers/template_loader.dm b/code/modules/mapping/map_helpers/template_loader.dm index e75344ef1680..e6d0049f63dd 100644 --- a/code/modules/mapping/map_helpers/template_loader.dm +++ b/code/modules/mapping/map_helpers/template_loader.dm @@ -51,21 +51,44 @@ #warn impl; do dirs too + icons -/** - * For /datum/map_injection/fixed_template_seeding. - * - * * This allows specific tags to be spawned here. - * * As of right now, this has no checks on maximum size. Make your tags accordingly. - */ -/obj/map_helper/template_loader/corner_aligned/fixed_template_seeding_target +/obj/map_helper/template_loader/corner_aligned/proc/resolve_template() + return null + +/obj/map_helper/template_loader/corner_aligned/resolve_aligned_load_target() + var/datum/map_template/template = resolve_template() + if(!template) + return + + #warn impl / measure + var/x = get_turf(src).x + var/y = get_turf(src).y + var/z = get_turf(src).z + var/orientation = SOUTH + + // adjust x/y based on orientation and template size + var/width = template.width + var/height = template.height + + if(orientation == SOUTH) + // no adjustment + pass + else if(orientation == EAST) + x -= width - 1 + else if(orientation == NORTH) + x -= width - 1 + y -= height - 1 + else if(orientation == WEST) + y -= height - 1 + + return list(template, x, y, z, orientation) + #warn impl + + +/obj/map_helper/template_loader/corner_aligned/static_load /** - * Target tags for the template seeding. - * * Optionally associate a tag to a number to weight it. - * Injection gets final say. + * May be an ID, path, or instance. */ - var/list/allow_tags = list() + var/load_template -/obj/map_helper/template_loader/corner_aligned/fixed_template_seeding_target/default - allow_tags = list( - "default" = 1, - ) +/obj/map_helper/template_loader/corner_aligned/resolve_template() + #warn impl diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm index aadbe9064d77..40eb30dc1899 100644 --- a/code/modules/mapping/map_injection/fixed_template_seeding.dm +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -8,11 +8,17 @@ /datum/map_injection/fixed_template_seeding /** * Required templates by tag. + * * [tag] = list(templates = counts...) + * * templates may be a /datum/map_template path or instance. + * * templates may also be a /datum/map_template_random path or instance. */ var/list/require = list() /** * Spawn this many templates, by tag. * * Second priority after 'require'. + * * [tag] = list(templates = counts...) + * * templates may be a /datum/map_template path or instance. + * * templates may also be a /datum/map_template_random path or instance. */ var/list/push = list() /** @@ -20,8 +26,14 @@ * * This is a weight based system rather than count. * * Total weight is counted per tag. This may be slow if there's too many * matching tags, so be careful. - * * Example: fill = list("science" = list(/datum/map_template/my_map_template/anomaly_store = 1, ...)) + * * [tag] = list(templates = counts...) + * * templates may be a /datum/map_template path or instance. + * * templates may also be a /datum/map_template_random path or instance. */ var/list/fill = list() #warn impl + +/datum/map_injection/fixed_template_seeding/on_map_pre_init(datum/map_context/context) + . = ..() +#warn impl diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index ef3d8c96db52..88f115656779 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -1,6 +1,16 @@ /datum/map_template abstract_type = /datum/map_template + /** + * ID. + * * Map templates that are registered proper have IDs. + * * ID is currently optional, because 'ephemeral' map templates + * do exist. + * * Please still fill it in when you can. + */ + var/id + #warn impl + //* description *// /// template name var/name = "Default Template Name" diff --git a/code/modules/mapping/map_system/map_template_random.dm b/code/modules/mapping/map_system/map_template_random.dm new file mode 100644 index 000000000000..cb363adb6d7c --- /dev/null +++ b/code/modules/mapping/map_system/map_template_random.dm @@ -0,0 +1,12 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/map_template_random + /** + * A list of templates with associated weights. + * * The system will pick one of these templates to load, based on the weights. + */ + var/list/weighted_templates = list() + +/datum/map_template_random/proc/get_template() + return pickweightAllowZero(weighted_templates) diff --git a/code/modules/mapping/templates/map_specific.dm b/code/modules/mapping/templates/map_specific.dm new file mode 100644 index 000000000000..9715bad6d23f --- /dev/null +++ b/code/modules/mapping/templates/map_specific.dm @@ -0,0 +1,9 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Just used for map specific templates. + * * Format: `/datum/map_template/map_specific/[map name]` + */ +/datum/map_template/map_specific + abstract_type = /datum/map_template/map_specific From 4da05437506c02e9463b66d49b7b5a499763c7be Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 7 Jun 2026 23:18:50 -0700 Subject: [PATCH 05/44] that --- citadel.dme | 1 - .../map_injection/fixed_template_seeding.dm | 23 ++++++++++--------- .../mapping/map_system/map_template.dm | 7 ++++++ .../mapping/map_system/map_template_random.dm | 7 ++++++ .../modules/mapping/templates/map_specific.dm | 9 -------- 5 files changed, 26 insertions(+), 21 deletions(-) delete mode 100644 code/modules/mapping/templates/map_specific.dm diff --git a/citadel.dme b/citadel.dme index 024d06d96f00..a85cf19e5854 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3690,7 +3690,6 @@ #include "code\modules\mapping\spawner\tcomms_relay.dm" #include "code\modules\mapping\spawner\window.dm" #include "code\modules\mapping\templates\engine.dm" -#include "code\modules\mapping\templates\map_specific.dm" #include "code\modules\mapping\templates\shuttle.dm" #include "code\modules\mapping\templates\submap.dm" #include "code\modules\mapping\templates\submaps_legacy.dm" diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm index 40eb30dc1899..0bac14bd6b6a 100644 --- a/code/modules/mapping/map_injection/fixed_template_seeding.dm +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -1,31 +1,32 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// +/datum/fixed_template_seeding_single + /// template-like associated to tag + /// * /datum/map_template_random accepted as well. + var/list/templates = list() + /** * Seeds a specific set of templates into * `fixed_template_seeding_target` helpers. */ /datum/map_injection/fixed_template_seeding /** - * Required templates by tag. - * * [tag] = list(templates = counts...) - * * templates may be a /datum/map_template path or instance. - * * templates may also be a /datum/map_template_random path or instance. + * Required templates. Highest priority. + * * list(/datum/fixed_template_seeding_single = count, ...) */ var/list/require = list() /** - * Spawn this many templates, by tag. - * * Second priority after 'require'. - * * [tag] = list(templates = counts...) - * * templates may be a /datum/map_template path or instance. - * * templates may also be a /datum/map_template_random path or instance. + * Push these templates. Second priority. + * * list(/datum/fixed_template_seeding_single = count, ...) */ var/list/push = list() /** * Fill unused targets. * * This is a weight based system rather than count. - * * Total weight is counted per tag. This may be slow if there's too many - * matching tags, so be careful. + * * Total weight is counted per tag on an unused target. + * This may be slow if there's too many + * matching tags or targets, so be careful. * * [tag] = list(templates = counts...) * * templates may be a /datum/map_template path or instance. * * templates may also be a /datum/map_template_random path or instance. diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index 88f115656779..6e9dbc83ca53 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -300,3 +300,10 @@ */ /datum/map_template/proc/on_load(datum/dmm_context/context) return + +/** + * Just used for map specific templates. + * * Format: `/datum/map_template/map_specific/[map name]` + */ +/datum/map_template/map_specific + abstract_type = /datum/map_template/map_specific diff --git a/code/modules/mapping/map_system/map_template_random.dm b/code/modules/mapping/map_system/map_template_random.dm index cb363adb6d7c..a8deca3d5909 100644 --- a/code/modules/mapping/map_system/map_template_random.dm +++ b/code/modules/mapping/map_system/map_template_random.dm @@ -10,3 +10,10 @@ /datum/map_template_random/proc/get_template() return pickweightAllowZero(weighted_templates) + +/** + * Just used for map specific templates. + * * Format: `/datum/map_template_random/map_specific/[map name]` + */ +/datum/map_template_random/map_specific + abstract_type = /datum/map_template_random/map_specific diff --git a/code/modules/mapping/templates/map_specific.dm b/code/modules/mapping/templates/map_specific.dm deleted file mode 100644 index 9715bad6d23f..000000000000 --- a/code/modules/mapping/templates/map_specific.dm +++ /dev/null @@ -1,9 +0,0 @@ -//* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2026 Citadel Station Developers *// - -/** - * Just used for map specific templates. - * * Format: `/datum/map_template/map_specific/[map name]` - */ -/datum/map_template/map_specific - abstract_type = /datum/map_template/map_specific From b03098f6ce096b9790bfe149e916c007ee0b4465 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 9 Jun 2026 19:51:44 -0700 Subject: [PATCH 06/44] sigh --- code/game/objects/item.dm | 14 +++++++------- .../map_injection/fixed_template_seeding.dm | 15 ++++++++++----- 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/code/game/objects/item.dm b/code/game/objects/item.dm index 748260d7391a..a343b3fe4562 100644 --- a/code/game/objects/item.dm +++ b/code/game/objects/item.dm @@ -59,31 +59,31 @@ //* Flags *// /// Item flags. - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/item_flags = ITEM_ENCUMBERS_WHILE_HELD /// Miscellaneous flags pertaining to equippable objects. - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/clothing_flags = NONE /// Flags for items (or in some cases mutant parts) hidden by this item when worn. /// As of right now, some flags only work in some slots. - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/inv_hide_flags = NONE /// Flags for the bodyparts this item covers when worn. - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. /// /// * Do not set these directly, use set_body_cover_flags()! var/body_cover_flags = NONE /// Flags which determine which body parts are protected from heat. Use the HEAD, UPPER_TORSO, LOWER_TORSO, etc. flags. See setup.dm - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/heat_protection_cover = NONE /// Flags which determine which body parts are protected from cold. Use the HEAD, UPPER_TORSO, LOWER_TORSO, etc. flags. See setup.dm - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/cold_protection_cover = NONE /// This is used to determine on which slots an item can fit, for inventory slots that use flags to determine this. /// These flags are listed in [code/__DEFINES/inventory/slots.dm]. var/slot_flags = NONE /// This is used to determine how we persist, in addition to potentially atom_persist_flags and obj_persist_flags (not yet made) - /// These flags are listed in [code/__DEFINES/inventory/item_flags.dm]. + /// These flags are listed in [code/__DEFINES/_flags/item_flags.dm]. var/item_persist_flags = NONE /// This is used to determine how default item-level interaction hooks are handled. /// These flags are listed in [code/__DEFINES/_flags/interaction_flags.dm] diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm index 0bac14bd6b6a..b71d81c001c5 100644 --- a/code/modules/mapping/map_injection/fixed_template_seeding.dm +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -1,11 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/fixed_template_seeding_single - /// template-like associated to tag - /// * /datum/map_template_random accepted as well. - var/list/templates = list() - /** * Seeds a specific set of templates into * `fixed_template_seeding_target` helpers. @@ -38,3 +33,13 @@ /datum/map_injection/fixed_template_seeding/on_map_pre_init(datum/map_context/context) . = ..() #warn impl + +/datum/fixed_template_seeding_single + /// template-like associated to tag + /// * /datum/map_template_random accepted as well. + var/list/templates = list() + +/** + * Just to namespace map-specific from polluting types. + */ +/datum/fixed_template_seeding_single/map_specific From bc25ca7a3de4e6b08cb03ef4b04f65e660de72e4 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 12 Jun 2026 00:55:18 -0700 Subject: [PATCH 07/44] wip --- citadel.dme | 5 ++ code/game/turfs/misc/auto_marker.dm | 46 +++++++++++++++- code/game/turfs/turf.dm | 6 ++- code/modules/jigsaw/README.md | 7 +++ code/modules/jigsaw/jigsaw_connector.dm | 54 +++++++++++++++++++ code/modules/jigsaw/jigsaw_generation.dm | 10 ++++ code/modules/jigsaw/jigsaw_generator.dm | 32 +++++++++++ code/modules/jigsaw/jigsaw_template.dm | 41 ++++++++++++++ code/modules/mapping/dmm_suite/dmm_context.dm | 2 + code/modules/mapping/map_generation.dm | 25 +++++++++ code/modules/mapping/map_system/map.dm | 2 + .../modules/mapping/map_system/map_context.dm | 14 +++++ 12 files changed, 241 insertions(+), 3 deletions(-) create mode 100644 code/modules/jigsaw/README.md create mode 100644 code/modules/jigsaw/jigsaw_connector.dm create mode 100644 code/modules/jigsaw/jigsaw_generation.dm create mode 100644 code/modules/jigsaw/jigsaw_generator.dm create mode 100644 code/modules/jigsaw/jigsaw_template.dm create mode 100644 code/modules/mapping/map_generation.dm diff --git a/citadel.dme b/citadel.dme index a85cf19e5854..d59b3cfe2860 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3468,6 +3468,10 @@ #include "code\modules\integrated_electronics\tools\debugger.dm" #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" +#include "code\modules\jigsaw\jigsaw_connector.dm" +#include "code\modules\jigsaw\jigsaw_generation.dm" +#include "code\modules\jigsaw\jigsaw_generator.dm" +#include "code\modules\jigsaw\jigsaw_template.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" @@ -3639,6 +3643,7 @@ #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\culture.dm" #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\origin.dm" #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\religion.dm" +#include "code\modules\mapping\map_generation.dm" #include "code\modules\mapping\dmm_suite\dmm_context.dm" #include "code\modules\mapping\dmm_suite\dmm_orientation.dm" #include "code\modules\mapping\dmm_suite\dmm_parsed.dm" diff --git a/code/game/turfs/misc/auto_marker.dm b/code/game/turfs/misc/auto_marker.dm index 1e2774833303..d531e8fe8e34 100644 --- a/code/game/turfs/misc/auto_marker.dm +++ b/code/game/turfs/misc/auto_marker.dm @@ -1,5 +1,14 @@ //* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2025 Citadel Station Developers *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/turf_auto_marker_config + var/outdoors_floor_type = /turf/simulated/floor/tiled + var/outdoors_floor_stripped_type = /turf/simulated/floor/plating + var/outdoors_floor_very_stripped_type = /turf/simulated/floor/plating + var/outdoors_rock_type = /turf/simulated/mineral + var/outdoors_rock_dense_type = /turf/simulated/mineral + var/outdoors_rock_very_dense_type = /turf/simulated/mineral + var/outdoors_liquid_type = /turf/simulated/floor/water /** * automatic markers that replace themselves on mapload @@ -9,7 +18,12 @@ icon = 'icons/turf/auto_marker.dmi' abstract_type = /turf/auto_marker -// TODO: implement + var/change_to + +/turf/auto_marker/Initialize(mapload) + if(change_to) + ChangeTurf(change_to) + return ..() /** * floor; cavern floor, sand, etc @@ -17,38 +31,66 @@ /turf/auto_marker/use_outdoors_floor icon_state = "floor-1" +/turf/auto_marker/use_outdoors_floor/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_floor_type + ..() + /** * strip lower */ /turf/auto_marker/use_outdoors_floor/stripped icon_state = "floor-2" +/turf/auto_marker/use_outdoors_floor/stripped/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_floor_stripped_type + ..() + /** * strip to base */ /turf/auto_marker/use_outdoors_floor/very_stripped icon_state = "floor-3" +/turf/auto_marker/use_outdoors_floor/very_stripped/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_floor_very_stripped_type + ..() + /** * use rock type */ /turf/auto_marker/use_outdoors_rock icon_state = "rock-1" +/turf/auto_marker/use_outdoors_rock/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_rock_type + ..() + /** * denser rock */ /turf/auto_marker/use_outdoors_rock/dense icon_state = "rock-2" +/turf/auto_marker/use_outdoors_rock/dense/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_rock_dense_type + ..() + /** * densest rock */ /turf/auto_marker/use_outdoors_rock/very_dense icon_state = "rock-3" +/turf/auto_marker/use_outdoors_rock/very_dense/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_rock_very_dense_type + ..() + /** * adapts to water most places, lava on lava worlds, blood in freakshow cult planets, etc */ /turf/auto_marker/use_outdoors_liquid icon_state = "liquid" + +/turf/auto_marker/use_outdoors_liquid/preloading_from_mapload(datum/dmm_context/context) + change_to = context.auto_marker_config.outdoors_liquid_type + ..() diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index fcf71e321c3a..f04d9974618b 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -50,7 +50,7 @@ /// are we mid changeturf? var/changing_turf = FALSE - //* Flags + //* Flags *// /// turf flags var/turf_flags = NONE /// turf spawning flags @@ -58,6 +58,10 @@ /// multiz flags var/mz_flags = MZ_ATMOS_UP | MZ_OPEN_UP + //* Map Generation *// + /// map generation cycle; used to not allow overwrites + var/tmp/map_generation_cycle + //* Movement / Pathfinding /// How much the turf slows down movement, if any. var/slowdown = 0 diff --git a/code/modules/jigsaw/README.md b/code/modules/jigsaw/README.md new file mode 100644 index 000000000000..0def4c0e6f8b --- /dev/null +++ b/code/modules/jigsaw/README.md @@ -0,0 +1,7 @@ +# Jigsaw Dungeon Generation + +One of the multiple types of procedural generation tooling. + +Fits pieces together. Kinda like a jigsaw. + +Uses a two-phase generator. diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm new file mode 100644 index 000000000000..dd09b80b7a47 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_connector.dm @@ -0,0 +1,54 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Only set during a load cycle that wants to use connectors. + */ +GLOBAL_LIST(jigsaw_connectors_pending) + +/** + * Denotes a **possible** connection point for jigsaw pieces. + * + * Connectors are matched ontop of each other by reversing the direction + * and checking if they can fit in. + * + * # Matching + * Section WIP. + */ +/obj/jigsaw_connector + #warn sprite + icon = 'icons/modules/jigsaw/jigsaw_connector_3x3.dmi' + icon_state = "connector-1-1" + pixel_x = -32 + pixel_y = -32 + + var/is_registered = FALSE + + // Inner width. + // * If this is even, the connector is left-biased in its real direction, facing in + // its direction; so if it's NORTH width 2, the connector is its tile and one to the east. + var/width = 1 + // Outer width. (Margin) + // * This is the tiles in both left and right directions that are presumed safe / sealed. + var/margin = 1 + +/obj/jigsaw_connector/New() + if(GLOB.jigsaw_connectors_pending) + GLOB.jigsaw_connectors_pending += src + is_registered = TRUE + return ..() + +/obj/jigsaw_connector/Initialize() + if(!is_registered) + return INITIALIZE_HINT_QDEL + return ..() + +#warn impl + +/obj/jigsaw_connector/two_wide + icon_state = "connector-2-1" + width = 2 + +/obj/jigsaw_connector/three_wide + icon_state = "connector-3-1" + width = 3 diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm new file mode 100644 index 000000000000..9ee01a8b22a8 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -0,0 +1,10 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Datum used to hold current state for a jigsaw dungeon generation. + */ +/datum/jigsaw_generation + + +#warn impl diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm new file mode 100644 index 000000000000..2b8115b17167 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -0,0 +1,32 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Datum used to generate jigsaw dungeons. + */ +/datum/jigsaw_generator + /** + * Set to override auto-marker settings. Otherwise, this uses + * the map's auto-marker config. + */ + var/datum/turf_auto_marker_config/auto_marker_config + +/datum/jigsaw_generator/proc/get_available_templates() + return list() + + +#warn impl + +/datum/jigsaw_generator/proc/generate_from_initial_piece(datum/jigsaw_template/initial_piece, turf/lower_left, orientation) + +/datum/jigsaw_generator/proc/generate_at_turf_centered(turf/target) + +/datum/jigsaw_generator/proc/generate_impl() + + var/datum/turf_auto_marker_config/config = auto_marker_config + if(!config) + #warn impl + +/datum/jigsaw_generator/proc/generate_impl_convex_broadphase(datum/jigsaw_generation/generation) + + diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm new file mode 100644 index 000000000000..4b2674c31aa8 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -0,0 +1,41 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Detected / specified connector. + */ +/datum/jigsaw_template_connector + /// x offset from lower left + var/x_offset + /// y offset from lower left + var/y_offset + /// Direction facing + /// * Connectors can only connect to other connectors facing the opposite direction. + var/direction + var/width + var/margin + +/datum/jigsaw_template + /// the name of this template, used for debugging and referencing in other templates. + var/name = "Dungeon Fragment" + /// path on disk + var/path + + /// parsed map if held + var/datum/dmm_parsed/parsed + + /** + * Are we fully convex? + * * Fully convex means there are no non-skipover turfs more 'outside' + * on any side than a connector. + * * Fully convex templates can be planned out without actually loading, + * and are the only things allowed in the first phase of jigsaw generation. + */ + var/convex = FALSE + + /** + * Connectors with locations. + */ + var/list/datum/jigsaw_template_connector/connectors = list() + +#warn impl diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 7db05ac6244b..36e8d8cda6a7 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -32,6 +32,8 @@ var/datum/map_context/map /// set to map_context's value for speed var/map_mangling_id + /// set to map_context's value for speed + var/datum/turf_auto_marker_config/auto_marker_config //* set by load cycle *// diff --git a/code/modules/mapping/map_generation.dm b/code/modules/mapping/map_generation.dm new file mode 100644 index 000000000000..4185c6935df2 --- /dev/null +++ b/code/modules/mapping/map_generation.dm @@ -0,0 +1,25 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2025 Citadel Station Developers *// + +GLOBAL_VAR_INIT(map_generation_mutex, FALSE) + +/proc/is_map_generation_mutex_locked() + return map_generation_mutex + +/proc/try_with_map_generation_mutex(datum/callback/callback) + if(map_generation_mutex) + return null + return with_map_generation_mutex(callback) + +/proc/with_map_generation_mutex(datum/callback/callback) + UNTIL(!map_generation_mutex) + map_generation_mutex = TRUE + . = callback.Invoke() + map_generation_mutex = FALSE + +GLOBAL_VAR_INIT(map_generation_cycle, 0) + +/proc/next_map_generation_cycle() + . = ++map_generation_cycle + if(map_generation_cycle > SHORT_REAL_LIMIT) + map_generation_cycle = -(SHORT_REAL_LIMIT - 1) diff --git a/code/modules/mapping/map_system/map.dm b/code/modules/mapping/map_system/map.dm index 0e3c864f7fd9..335012d4b264 100644 --- a/code/modules/mapping/map_system/map.dm +++ b/code/modules/mapping/map_system/map.dm @@ -93,6 +93,8 @@ /// use map-wide area cache instead of individual level area caches; has no effect on submap loading, only level loading. /// * don't touch this unless you know what you're doing. var/load_shared_area_cache = TRUE + /// Default auto-marker options. + var/datum/turf_auto_marker_config/load_auto_marker_config = new //* Injections *// /** diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 9a068452b98c..a766fc4ecf29 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -18,6 +18,12 @@ * are optionally part of it. */ var/mangling_id + + /** + * Turf auto_marker configuration. + */ + var/datum/turf_auto_marker_config/auto_marker_config + /** * Injections to fire * * Injections are stateless and generally are not automatically @@ -66,6 +72,14 @@ loaded_dmm_contexts = null return ..() +/datum/map_context/proc/create_blank_dmm_context() + RETURN_TYPE(/datum/dmm_context) + var/datum/dmm_context/context = new + context.map = src + context.map_mangling_id = mangling_id + context.auto_marker_config = auto_marker_config + return context + /datum/map_context/proc/register_injection(datum/map_injection/injection) if(injection in injections) CRASH("injection already registered") From 1919be85450f47c627048c495348a35d945bf051 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 13 Jun 2026 00:21:42 -0700 Subject: [PATCH 08/44] hm --- citadel.dme | 2 + code/modules/jigsaw/jigsaw_connector.dm | 22 ++++--- code/modules/jigsaw/jigsaw_generation.dm | 20 +++++++ code/modules/jigsaw/jigsaw_generator.dm | 29 +++++++++- code/modules/jigsaw/jigsaw_spawner.dm | 47 +++++++++++++++ code/modules/jigsaw/jigsaw_template.dm | 24 ++++++++ code/modules/jigsaw/jigsaw_template_config.dm | 58 +++++++++++++++++++ 7 files changed, 192 insertions(+), 10 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_spawner.dm create mode 100644 code/modules/jigsaw/jigsaw_template_config.dm diff --git a/citadel.dme b/citadel.dme index d59b3cfe2860..afcf45ba5e9b 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3471,7 +3471,9 @@ #include "code\modules\jigsaw\jigsaw_connector.dm" #include "code\modules\jigsaw\jigsaw_generation.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" +#include "code\modules\jigsaw\jigsaw_spawner.dm" #include "code\modules\jigsaw\jigsaw_template.dm" +#include "code\modules\jigsaw\jigsaw_template_config.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm index dd09b80b7a47..0fbfe5e13752 100644 --- a/code/modules/jigsaw/jigsaw_connector.dm +++ b/code/modules/jigsaw/jigsaw_connector.dm @@ -6,6 +6,13 @@ */ GLOBAL_LIST(jigsaw_connectors_pending) +/datum/jigsaw_pending_connector + var/x + var/y + var/width + var/margin + var/direction + /** * Denotes a **possible** connection point for jigsaw pieces. * @@ -22,8 +29,6 @@ GLOBAL_LIST(jigsaw_connectors_pending) pixel_x = -32 pixel_y = -32 - var/is_registered = FALSE - // Inner width. // * If this is even, the connector is left-biased in its real direction, facing in // its direction; so if it's NORTH width 2, the connector is its tile and one to the east. @@ -34,14 +39,17 @@ GLOBAL_LIST(jigsaw_connectors_pending) /obj/jigsaw_connector/New() if(GLOB.jigsaw_connectors_pending) - GLOB.jigsaw_connectors_pending += src - is_registered = TRUE + var/datum/jigsaw_pending_connector/pending = new + pending.x = src.x + pending.y = src.y + pending.width = src.width + pending.margin = src.margin + pending.direction = src.dir + GLOB.jigsaw_connectors_pending += pending return ..() /obj/jigsaw_connector/Initialize() - if(!is_registered) - return INITIALIZE_HINT_QDEL - return ..() + return INITIALIZE_HINT_QDEL #warn impl diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm index 9ee01a8b22a8..9cd6ee0e0e1f 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -1,10 +1,30 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// +/datum/jigsaw_generation_enqueued_placement + var/lower_left_x + var/lower_left_y + var/orietnation + var/datum/jigsaw_template/template + /** * Datum used to hold current state for a jigsaw dungeon generation. */ /datum/jigsaw_generation + /** + * Broadphase emplacements. + */ + var/list/datum/jigsaw_generation_enqueued_placement/broadphase_enqueued = list() + var/broadphase_emplaced = FALSE + + /** + * Yet to be assigned / consumed. + * * This is both pre- and post- convex broadphase. This allows + * pending connectors to be emplaced even after the broadphase. + * * When the broadphase finishes, all connectors are checked for overlap, + * and are removed from the list if needed. The rest are used for the 'live run'. + */ + var/list/datum/jigsaw_pending_connector/pending_connectors = list() #warn impl diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 2b8115b17167..c1f549ac9ee7 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -10,6 +10,10 @@ * the map's auto-marker config. */ var/datum/turf_auto_marker_config/auto_marker_config + /** + * Configuration for templates. + */ + var/datum/jigsaw_template_config/template_config /datum/jigsaw_generator/proc/get_available_templates() return list() @@ -21,12 +25,31 @@ /datum/jigsaw_generator/proc/generate_at_turf_centered(turf/target) -/datum/jigsaw_generator/proc/generate_impl() +/datum/jigsaw_generator/proc/generate_impl(turf/contextual_center, datum/jigsaw_generation/generation = new) + var/contextual_zlev = get_z(contextual_center) + if(!contextual_zlev) + CRASH("Invalid contextual center.") + + var/datum/turf_auto_marker_config/auto_marker_config = auto_marker_config + if(!auto_marker_config) + var/datum/map/map = SSmapping.level_get_map(contextual_zlev) + if(map) + auto_marker_config = map.auto_marker_config + else + stack_trace("Could not autodetect turf auto-marker configuration, and it was not provided. Defaulting.") + auto_marker_config = new + + // first, check if it has at least one valid template already emplaced + // if it doesn't, we have to put one so the broadphase can act on something at all. - var/datum/turf_auto_marker_config/config = auto_marker_config - if(!config) + + + // perform broadphase + generate_impl_convex_broadphase(generation) #warn impl +/datum/jigsaw_generator/proc/generate_impl_place_initial_piece(datum/jigsaw_generation/generation, turf/contextual_center) + /datum/jigsaw_generator/proc/generate_impl_convex_broadphase(datum/jigsaw_generation/generation) diff --git a/code/modules/jigsaw/jigsaw_spawner.dm b/code/modules/jigsaw/jigsaw_spawner.dm new file mode 100644 index 000000000000..8fa1d7f79230 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_spawner.dm @@ -0,0 +1,47 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/obj/map_helper/jigsaw_spawner + name = "Jigsaw Dungeon Spawner" + desc = "Automatically emplaces a jigsaw dungeon on mapload." + #warn sprite + + early = TRUE + + var/datum/jigsaw_template_config/template_config = /datum/jigsaw_template_config/everything + var/datum/turf_auto_marker_config/auto_marker_config + + var/datum/jigsaw_template/spawn_template_centered + var/spawn_template_centered_orientation = SOUTH + +/obj/map_helper/jigsaw_spawner/New() + if(ispath(template_config)) + template_config = new(template_config) + if(ispath(auto_marker_config)) + auto_marker_config = new(auto_marker_config) + ..() + +/obj/map_helper/jigsaw_spawner/map_initializations(datum/dmm_context/context) + ..() + generate(context) + +/obj/map_helper/jigsaw_spawner/proc/generate(datum/dmm_context/context) + var/datum/jigsaw_generator/generator = new + + generator.auto_marker_config = auto_marker_config + generator.template_config = template_config + + var/datum/jigsaw_generation/generation = new + + if(spawn_template_centered) + var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(spawn_template_centered) + + if(!template) + CRASH("Invalid initial template detected; skipping generation.") + + var/datum/jigsaw_generation_enqueued_placement/initial_placement = new + #warn impl + + generation.broadphase_enqueued += initial_placement + + generator.generate_at_turf_centered(get_turf(src), generation) diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 4b2674c31aa8..6497be1f4175 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -15,6 +15,27 @@ var/width var/margin +GLOBAL_LIST_EMPTY(jigsaw_template_cache) + +/proc/fetch_cached_jigsaw_template(datum/jigsaw_template/path) + if(istype(path)) + return path + else if(isnull(path)) + return null + + if(GLOB.jigsaw_template_cache[path]) + return GLOB.jigsaw_template_cache[path] + + var/datum/jigsaw_template/template = new path + GLOB.jigsaw_template_cache[path] = template + + return template + +/proc/unload_cached_jigsaw_templates() + for(var/path in GLOB.jigsaw_template_cache) + var/datum/jigsaw_template/template = GLOB.jigsaw_template_cache[path] + template.unload_cache() + /datum/jigsaw_template /// the name of this template, used for debugging and referencing in other templates. var/name = "Dungeon Fragment" @@ -39,3 +60,6 @@ var/list/datum/jigsaw_template_connector/connectors = list() #warn impl + +/datum/jigsaw_template/proc/unload_cache() + parsed = null diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_template_config.dm new file mode 100644 index 000000000000..986a3d40d77e --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template_config.dm @@ -0,0 +1,58 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_template_resultant_config + /// always start with these templates, if exists + /// * may be typepaths or instances + var/list/datum/jigsaw_template/initial_templates = list() + /// templates to use, weighted. + /// * may be typepaths or instances + var/list/datum/jigsaw_template/weighted_templates = list() + /// ***attempt*** to place these templates, associate to count + /// * these are given priority during broadphase and narrowphase but it still isn't guaranteed + var/list/datum/jigsaw_template/priority_templates = list() + /// require placement of these templates, associate to count + /// * if any of these fail to place, the generation fails + /// * only convex templates are allowed in here because only broadphase can + /// actually backtrack here. + var/list/datum/jigsaw_template/required_templates = list() + +/datum/jigsaw_template_config + +/datum/jigsaw_template_config/proc/get_resultant_config() as /datum/jigsaw_template_resultant_config + return new /datum/jigsaw_template_resultant_config + +/datum/jigsaw_template_config/everything + +/datum/jigsaw_template_config/everything/get_resultant_config() + var/datum/jigsaw_template_resultant_config/result = new + for(var/datum/jigsaw_template/path as anything in subtypesof(/datum/jigsaw_template)) + if(path.abstract_type == path) + continue + var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(path) + result.weighted_templates[template] = 1 + return result + +/datum/jigsaw_template_config/specific + /// always start with these templates, if exists + /// * may be typepaths or instances + var/list/datum/jigsaw_template/initial_templates = list() + /// templates to use, weighted. + /// * may be typepaths or instances + var/list/datum/jigsaw_template/weighted_templates = list() + /// ***attempt*** to place these templates, associate to count + /// * these are given priority during broadphase and narrowphase but it still isn't guaranteed + var/list/datum/jigsaw_template/priority_templates = list() + /// require placement of these templates, associate to count + /// * if any of these fail to place, the generation fails + /// * only convex templates are allowed in here because only broadphase can + /// actually backtrack here. + var/list/datum/jigsaw_template/required_templates = list() + +/datum/jigsaw_template_config/specific/get_resultant_config() + var/datum/jigsaw_template_resultant_config/result = new + result.initial_templates = initial_templates.Copy() + result.weighted_templates = weighted_templates.Copy() + result.priority_templates = priority_templates.Copy() + result.required_templates = required_templates.Copy() + return result From 9431f477251969fc53a8c936e3f28cddea2bef03 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 13 Jun 2026 00:54:00 -0700 Subject: [PATCH 09/44] update --- code/modules/jigsaw/jigsaw_connector.dm | 23 ++++++++ code/modules/jigsaw/jigsaw_generation.dm | 6 +- code/modules/jigsaw/jigsaw_generator.dm | 75 +++++++++++++++++++----- code/modules/jigsaw/jigsaw_template.dm | 3 + 4 files changed, 92 insertions(+), 15 deletions(-) diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm index 0fbfe5e13752..5789aefcdd58 100644 --- a/code/modules/jigsaw/jigsaw_connector.dm +++ b/code/modules/jigsaw/jigsaw_connector.dm @@ -9,10 +9,13 @@ GLOBAL_LIST(jigsaw_connectors_pending) /datum/jigsaw_pending_connector var/x var/y + var/z var/width var/margin var/direction + var/spent = FALSE + /** * Denotes a **possible** connection point for jigsaw pieces. * @@ -37,20 +40,40 @@ GLOBAL_LIST(jigsaw_connectors_pending) // * This is the tiles in both left and right directions that are presumed safe / sealed. var/margin = 1 + /// set if we detect another jigsaw connector spawning onto us + var/matched = FALSE + + /// our pending connector. + /// * we un-reference this on destroy, but when we match, we mark it as 'spent' for disposal. + var/datum/jigsaw_pending_connector/pending + + /obj/jigsaw_connector/New() if(GLOB.jigsaw_connectors_pending) var/datum/jigsaw_pending_connector/pending = new pending.x = src.x pending.y = src.y + pending.z = src.z pending.width = src.width pending.margin = src.margin pending.direction = src.dir GLOB.jigsaw_connectors_pending += pending + src.pending = pending + try_match_other() return ..() /obj/jigsaw_connector/Initialize() return INITIALIZE_HINT_QDEL +/obj/jigsaw_connector/Destroy() + pending = null + return ..() + +/obj/jigsaw_connector/proc/on_match() + matched = TRUE + pending?.spent = TRUE + +/obj/jigsaw_connector/proc/try_match_other() #warn impl /obj/jigsaw_connector/two_wide diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm index 9cd6ee0e0e1f..d371b658d71c 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -4,7 +4,8 @@ /datum/jigsaw_generation_enqueued_placement var/lower_left_x var/lower_left_y - var/orietnation + var/lower_left_z + var/orientation var/datum/jigsaw_template/template /** @@ -28,3 +29,6 @@ #warn impl + +/datum/jigsaw_generation/proc/cleanup() + QDEL_LIST(pending_connectors) diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index c1f549ac9ee7..535ca9e0adb7 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -34,22 +34,69 @@ if(!auto_marker_config) var/datum/map/map = SSmapping.level_get_map(contextual_zlev) if(map) - auto_marker_config = map.auto_marker_config - else - stack_trace("Could not autodetect turf auto-marker configuration, and it was not provided. Defaulting.") - auto_marker_config = new + auto_marker_config = map.load_auto_marker_config - // first, check if it has at least one valid template already emplaced - // if it doesn't, we have to put one so the broadphase can act on something at all. + if(!auto_marker_config) + stack_trace("Could not autodetect turf auto-marker configuration, and it was not provided. Defaulting.") + auto_marker_config = new + var/datum/jigsaw_template_resultant_config/templates = template_config.get_resultant_config() + // first, check if it has at least one valid template already emplaced + // if it doesn't, we have to put one so the broadphase can act on something at all. + if(!length(generation.broadphase_enqueued)) + generate_impl_place_initial_piece(generation, templates, contextual_center) // perform broadphase - generate_impl_convex_broadphase(generation) - #warn impl - -/datum/jigsaw_generator/proc/generate_impl_place_initial_piece(datum/jigsaw_generation/generation, turf/contextual_center) - -/datum/jigsaw_generator/proc/generate_impl_convex_broadphase(datum/jigsaw_generation/generation) - - + generate_impl_convex_broadphase(generation, templates) + + // emplace broadphase templates + #warn impl + + // perform narrowphase afterwards + #warn impl + + // cleanup + generation.cleanup() + +/datum/jigsaw_generator/proc/generate_impl_place_initial_piece(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates, turf/contextual_center) + #warn impl + +/datum/jigsaw_generator/proc/generate_impl_convex_broadphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) + #warn impl + +/datum/jigsaw_generator/proc/generate_impl_emplace_broadphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) + // get rid of current connectors + QDEL_LIST(generation.pending_connectors) + + // add hook for pending connectors. + // what this does is allow templates to spawn connectors that bind into this, so narrowphase + // can continue to grow the templates. + GLOB.jigsaw_connectors_pending = generation.pending_connectors + + + // place templates down + for(var/datum/jigsaw_generation_enqueued_placement/placement in generation.broadphase_enqueued) + var/datum/jigsaw_template/template = placement.template + var/datum/dmm_context/context = new + #warn impl context stuff + + template.load_cached() + template.parsed.load( + placement.lower_left_x, + placement.lower_left_y, + placement.lower_left_z, + orientation = placement.orientation, + context = context + ) + + // dedupe connectors so narrowphase can run cleanly + var/list/datum/jigsaw_pending_connector/keep_pending_connectors = list() + for(var/datum/jigsaw_pending_connector/connector in generation.pending_connectors) + if(connector.spent) + continue + keep_pending_connectors += connector + generation.pending_connectors = keep_pending_connectors + +/datum/jigsaw_generator/proc/generate_impl_narrowphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) + #warn impl diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 6497be1f4175..a1b4d31b7253 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -63,3 +63,6 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /datum/jigsaw_template/proc/unload_cache() parsed = null + +/datum/jigsaw_template/proc/load_cached() + parsed = new(path) From 026cd019223c49bddb4c35d00890660eba50f344 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 14 Jun 2026 15:18:11 -0700 Subject: [PATCH 10/44] that --- citadel.dme | 2 + .../subsystem/mapping/mapping-levels.dm | 9 ++-- .../subsystem/mapping/mapping-maps.dm | 25 ++++----- .../airlocks/airlock_component/controller.dm | 2 +- .../machinery/airlocks/airlock_peripheral.dm | 2 +- .../map_helpers/airlock_peripheral_linker.dm | 2 +- code/game/machinery/computer/misc/bioscan.dm | 2 +- code/game/machinery/misc/bioscan_antenna.dm | 2 +- code/modules/jigsaw/jigsaw_spawner.dm | 2 +- code/modules/jigsaw/jigsaw_template.dm | 3 +- code/modules/mapping/dmm_suite/dmm_context.dm | 8 --- code/modules/mapping/dmm_suite/dmm_parsed.dm | 2 +- code/modules/mapping/map_generation.dm | 16 +++--- .../mapping/map_helpers/engine_loader.dm | 4 +- .../mapping/map_helpers/gear_marker.dm | 6 +-- .../modules/mapping/map_helpers/map_helper.dm | 7 +-- .../mapping/map_helpers/role_marker.dm | 4 +- .../mapping/map_helpers/template_loader.dm | 6 +-- .../map_injection/fixed_template_seeding.dm | 2 +- .../map_injection/legacy_automata_caves.dm | 14 +++++ .../map_injection/legacy_seed_submaps.dm | 24 +++++++++ .../mapping/map_injection/map_injection.dm | 14 ++++- .../mapping/map_injection/starting_gear.dm | 6 +-- code/modules/mapping/map_system/map.dm | 1 - .../modules/mapping/map_system/map_context.dm | 6 +++ .../mapping/map_system/map_level-load.dm | 19 ++----- .../mapping/map_system/map_template.dm | 4 +- code/modules/random_map/automata/caves.dm | 4 -- .../shuttles/shuttle/shuttle_template.dm | 12 +++-- maps/sectors/desert_192/desert_192.dm | 11 ++-- maps/sectors/frozen_192/frozen_192.dm | 14 ++--- maps/sectors/miaphus/miaphus.dm | 14 ++--- maps/sectors/mining_192/mining_192.dm | 6 ++- maps/sectors/osiris_field/osiris_field.dm | 13 ++--- maps/sectors/sky_planet/sky_planet.dm | 33 ++++-------- maps/sectors/surt/surt.dm | 34 +++++-------- maps/sectors/virgo2_140/virgo2_140.dm | 11 ++-- maps/sectors/virgo4_140/virgo4_140.dm | 28 ++++------ maps/sectors/wasteland_192/wasteland_192.dm | 11 ++-- maps/stations/rift/rift.dm | 51 +++++++++---------- maps/stations/tether/tether.dm | 32 +++++------- 41 files changed, 218 insertions(+), 250 deletions(-) create mode 100644 code/modules/mapping/map_injection/legacy_automata_caves.dm create mode 100644 code/modules/mapping/map_injection/legacy_seed_submaps.dm diff --git a/citadel.dme b/citadel.dme index afcf45ba5e9b..7db28fc7636e 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3668,6 +3668,8 @@ #include "code\modules\mapping\map_helpers\network_builder\_network_builder.dm" #include "code\modules\mapping\map_helpers\network_builder\power_cable.dm" #include "code\modules\mapping\map_injection\fixed_template_seeding.dm" +#include "code\modules\mapping\map_injection\legacy_automata_caves.dm" +#include "code\modules\mapping\map_injection\legacy_seed_submaps.dm" #include "code\modules\mapping\map_injection\map_injection.dm" #include "code\modules\mapping\map_injection\starting_gear.dm" #include "code\modules\mapping\map_system\map-legacy-station.dm" diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index c4f789632541..eef00d4fa0dd 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -218,12 +218,11 @@ ) map_system_mutex = FALSE +#warn trace calls for args & old generation / defer usage /datum/controller/subsystem/mapping/proc/load_level_impl( datum/map_level/instance, + datum/map_context/map_context, list/use_area_cache, - datum/dmm_context/use_dmm_context, - defer_for_group_load, - list/datum/callback/out_generation_callbacks, ) PRIVATE_PROC(TRUE) @@ -234,8 +233,8 @@ if(isnull(use_dmm_context)) use_dmm_context = create_dmm_context() - if(isnull(use_dmm_context.mangling_id)) - use_dmm_context.mangling_id = "level-[instance.mangling_id || instance.id]" + if(isnull(use_dmm_context.map_mangling_id)) + use_dmm_context.map_mangling_id = "level-[instance.mangling_id || instance.id]" var/datum/dmm_context/loaded_context diff --git a/code/controllers/subsystem/mapping/mapping-maps.dm b/code/controllers/subsystem/mapping/mapping-maps.dm index 2d845780c6e1..7579027ca80d 100644 --- a/code/controllers/subsystem/mapping/mapping-maps.dm +++ b/code/controllers/subsystem/mapping/mapping-maps.dm @@ -75,10 +75,9 @@ // load maps as needed var/list/datum/map/loaded_maps = list() - var/list/datum/map_level/loaded_lockstep_levels = list() - var/list/datum/dmm_context/loaded_lockstep_contexts = list() + var/list/datum/map_level/loaded_levels = list() - var/list/datum/callback/deferred_generation_callbacks = list() + var/list/datum/map_context/loaded_contexts = list() for(var/datum/map/loading_map as anything in maps_to_load) emit_info_log("load - loading '[loading_map.id]' with [length(loading_map.levels)] levels...") @@ -96,27 +95,29 @@ stack_trace("map id '[loading_map.id]' failed construct()ion") continue + var/datum/map_context/context = new + loaded_contexts += context + + context.map_mangling_id = loading_map.mangling_id || loading_map.id + context.auto_marker_config = loading_map.load_auto_marker_config || new + + for(var/datum/map_injection/injection as anything in loading_map.injections) + context.register_injection(injection) + var/list/map_use_area_cache = loading_map.load_shared_area_cache ? list() : null for(var/datum/map_level/level as anything in loading_map.get_sorted_levels()) - var/datum/dmm_context/level_use_dmm_context = create_dmm_context() - level_use_dmm_context.mangling_id = loading_map.mangling_id || loading_map.id - var/list/datum/callback/level_generation_callbacks = list() var/datum/dmm_context/level_context = load_level_impl( level, + context, map_use_area_cache, - level_use_dmm_context, - TRUE, - level_generation_callbacks, ) if(isnull(level_context)) emit_fatal_log("load - failed to load level '[level.id]' in map '[instance.id]") stack_trace("unable to load level [level] ([level.id])") to_chat(world, SPAN_DANGER("PANIC: Unable to load level [level] ([level.id])")) continue - loaded_lockstep_levels += level - loaded_lockstep_contexts += level_context - deferred_generation_callbacks += level_generation_callbacks + loaded_levels += level emit_info_log("load - finished loading '[instance.id]' with [length(loading_map.levels)] levels") diff --git a/code/game/machinery/airlocks/airlock_component/controller.dm b/code/game/machinery/airlocks/airlock_component/controller.dm index add573a0d5a3..05f6e095a847 100644 --- a/code/game/machinery/airlocks/airlock_component/controller.dm +++ b/code/game/machinery/airlocks/airlock_component/controller.dm @@ -64,7 +64,7 @@ GLOBAL_LIST_EMPTY(airlock_controller_lookup) /obj/machinery/airlock_component/controller/preloading_from_mapload(datum/dmm_context/context) . = ..() if(airlock_id) - airlock_id = SSmapping.mangled_round_local_id(airlock_id, context.mangling_id) + airlock_id = SSmapping.mangled_round_local_id(airlock_id, context.map_mangling_id) /obj/machinery/airlock_component/controller/Initialize(mapload, set_dir, obj/item/airlock_component/controller/from_item) . = ..() diff --git a/code/game/machinery/airlocks/airlock_peripheral.dm b/code/game/machinery/airlocks/airlock_peripheral.dm index 2dc8269b5a57..e696f01fcb08 100644 --- a/code/game/machinery/airlocks/airlock_peripheral.dm +++ b/code/game/machinery/airlocks/airlock_peripheral.dm @@ -17,7 +17,7 @@ /obj/machinery/airlock_peripheral/preloading_from_mapload(datum/dmm_context/context) . = ..() if(controller_autolink_id) - controller_autolink_id = SSmapping.mangled_round_local_id(controller_autolink_id, context.mangling_id) + controller_autolink_id = SSmapping.mangled_round_local_id(controller_autolink_id, context.map_mangling_id) /obj/machinery/airlock_peripheral/Initialize(mapload) . = ..() diff --git a/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm b/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm index bb243243239f..1cccd6dfdf69 100644 --- a/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm +++ b/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm @@ -15,7 +15,7 @@ /obj/map_helper/airlock_peripheral_linker/preloading_from_mapload(datum/dmm_context/context) . = ..() if(set_controller_id) - set_controller_id = SSmapping.mangled_round_local_id(set_controller_id, context.mangling_id) + set_controller_id = SSmapping.mangled_round_local_id(set_controller_id, context.map_mangling_id) /obj/map_helper/airlock_peripheral_linker/Initialize(mapload) for(var/obj/machinery/airlock_peripheral/peripheral in loc) diff --git a/code/game/machinery/computer/misc/bioscan.dm b/code/game/machinery/computer/misc/bioscan.dm index c3f099f42c35..3b5818a1aea1 100644 --- a/code/game/machinery/computer/misc/bioscan.dm +++ b/code/game/machinery/computer/misc/bioscan.dm @@ -17,7 +17,7 @@ /obj/machinery/computer/bioscan/preloading_from_mapload(datum/dmm_context/context) . = ..() if(network_key_obfuscated && !network_key) - network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.mangling_id, "bioscan") + network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.map_mangling_id, "bioscan") /obj/machinery/computer/bioscan/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/game/machinery/misc/bioscan_antenna.dm b/code/game/machinery/misc/bioscan_antenna.dm index 6574851b9b03..0a8c78f375ac 100644 --- a/code/game/machinery/misc/bioscan_antenna.dm +++ b/code/game/machinery/misc/bioscan_antenna.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(bioscan_antenna_list) /obj/machinery/bioscan_antenna/preloading_from_mapload(datum/dmm_context/context) . = ..() if(network_key_obfuscated && !network_key) - network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.mangling_id, "bioscan") + network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.map_mangling_id, "bioscan") /obj/machinery/bioscan_antenna/Initialize(mapload) . = ..() diff --git a/code/modules/jigsaw/jigsaw_spawner.dm b/code/modules/jigsaw/jigsaw_spawner.dm index 8fa1d7f79230..bc2246baac2d 100644 --- a/code/modules/jigsaw/jigsaw_spawner.dm +++ b/code/modules/jigsaw/jigsaw_spawner.dm @@ -21,7 +21,7 @@ auto_marker_config = new(auto_marker_config) ..() -/obj/map_helper/jigsaw_spawner/map_initializations(datum/dmm_context/context) +/obj/map_helper/jigsaw_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) ..() generate(context) diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index a1b4d31b7253..a361ccb10c37 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -56,8 +56,9 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /** * Connectors with locations. + * * Supports auto-detection if nulled. */ - var/list/datum/jigsaw_template_connector/connectors = list() + var/list/datum/jigsaw_template_connector/connectors = null #warn impl diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 36e8d8cda6a7..ed90da500557 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -1,14 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2024 Citadel Station Developers *// -/proc/create_dmm_context( - mangling_id, -) - RETURN_TYPE(/datum/dmm_context) - var/datum/dmm_context/context = new - context.mangling_id = mangling_id - return context - /** * something accessible to all atoms during preloading_from_mapload * diff --git a/code/modules/mapping/dmm_suite/dmm_parsed.dm b/code/modules/mapping/dmm_suite/dmm_parsed.dm index b94f4db8177a..d4079d3321da 100644 --- a/code/modules/mapping/dmm_suite/dmm_parsed.dm +++ b/code/modules/mapping/dmm_suite/dmm_parsed.dm @@ -289,7 +289,7 @@ * * place_on_top - use PlaceOnTop instead of ChangeTurf * * orientation - orientation to load. the 'natural' orientation is SOUTH. Any other orientation rotates it with respect from SOUTH to it. * * area_cache - override area cache and provide your own, used to make sure multiple loadings share the same areas if two areas are the same type. - * * context - value to push to preloader's maploader context, used by atoms during preloading_from_mapload() to perform various things like mangling their linkage IDs + * * context - value to push to preloader's dmm context, used by atoms during preloading_from_mapload() to perform various things like mangling their linkage IDs * * @return bounds list of load, or null if failed. */ diff --git a/code/modules/mapping/map_generation.dm b/code/modules/mapping/map_generation.dm index 4185c6935df2..d5e0775199d3 100644 --- a/code/modules/mapping/map_generation.dm +++ b/code/modules/mapping/map_generation.dm @@ -4,22 +4,22 @@ GLOBAL_VAR_INIT(map_generation_mutex, FALSE) /proc/is_map_generation_mutex_locked() - return map_generation_mutex + return GLOB.map_generation_mutex /proc/try_with_map_generation_mutex(datum/callback/callback) - if(map_generation_mutex) + if(GLOB.map_generation_mutex) return null return with_map_generation_mutex(callback) /proc/with_map_generation_mutex(datum/callback/callback) - UNTIL(!map_generation_mutex) - map_generation_mutex = TRUE + UNTIL(!GLOB.map_generation_mutex) + GLOB.map_generation_mutex = TRUE . = callback.Invoke() - map_generation_mutex = FALSE + GLOB.map_generation_mutex = FALSE GLOBAL_VAR_INIT(map_generation_cycle, 0) /proc/next_map_generation_cycle() - . = ++map_generation_cycle - if(map_generation_cycle > SHORT_REAL_LIMIT) - map_generation_cycle = -(SHORT_REAL_LIMIT - 1) + . = ++GLOB.map_generation_cycle + if(GLOB.map_generation_cycle > SHORT_REAL_LIMIT) + GLOB.map_generation_cycle = -(SHORT_REAL_LIMIT - 1) diff --git a/code/modules/mapping/map_helpers/engine_loader.dm b/code/modules/mapping/map_helpers/engine_loader.dm index e8c4de21e68f..844ace9a144e 100644 --- a/code/modules/mapping/map_helpers/engine_loader.dm +++ b/code/modules/mapping/map_helpers/engine_loader.dm @@ -6,13 +6,13 @@ // override for map, otherwise defaults to loaded station as we have no way of detecting what's being loaded right now var/for_map -/obj/map_helper/engine_loader/map_initializations(datum/dmm_context/context) +/obj/map_helper/engine_loader/map_initializations(datum/dmm_dmm_context/dmm_context, datum/map_context/map_context) . = ..() var/list/bounds = context.loaded_bounds var/lx = bounds[MAP_MINX] var/ly = bounds[MAP_MINY] var/lz = bounds[MAP_MINZ] - var/ldir = context.loaded_orientation + var/ldir = dmm_context.loaded_orientation if(istext(clean_turfs)) clean_turfs = safe_json_decode(clean_turfs) if(ispath(for_map)) diff --git a/code/modules/mapping/map_helpers/gear_marker.dm b/code/modules/mapping/map_helpers/gear_marker.dm index 601fcd52220d..3d973c84821c 100644 --- a/code/modules/mapping/map_helpers/gear_marker.dm +++ b/code/modules/mapping/map_helpers/gear_marker.dm @@ -183,7 +183,7 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( /obj/map_helper/gear_marker/distributed/preloading_from_mapload(datum/dmm_context/context) - context.distributed_gear_markers += src + context.map.collected_distributed_gear_markers += src // make everything assoc make_associative_inplace(gear_tags) make_associative_inplace(usage_tags) @@ -217,8 +217,8 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( var/role_allow_overflow = TRUE /obj/map_helper/gear_marker/role/preloading_from_mapload(datum/dmm_context/context) - LAZYINITLIST(context.stamped_gear_markers_by_role[role_tag]) - context.stamped_gear_markers_by_role[role_tag] += src + LAZYINITLIST(context.map.collected_stamped_gear_markers_by_role[role_tag]) + context.map.collected_stamped_gear_markers_by_role[role_tag] += src return ..() /** diff --git a/code/modules/mapping/map_helpers/map_helper.dm b/code/modules/mapping/map_helpers/map_helper.dm index 26c751df51ea..e17dfa1aa8e7 100644 --- a/code/modules/mapping/map_helpers/map_helper.dm +++ b/code/modules/mapping/map_helpers/map_helper.dm @@ -61,7 +61,7 @@ */ /obj/map_helper/proc/hook_map_initializations(datum/dmm_context/context) PRIVATE_PROC(TRUE) - context.map_initialization_hooked += src + context.map.register_pre_init_callback(CALLBACK(src, PROC_REF(map_initializations), context)) /** * called if we're on SSmapping's map_initializations_hooked list. @@ -69,9 +69,6 @@ * called before group loading done by /datum/map * called before atom init * called before level on_loaded_finalize - * - * @params - * * context - the dmm_context of our load */ -/obj/map_helper/proc/map_initializations(datum/dmm_context/context) +/obj/map_helper/proc/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) return diff --git a/code/modules/mapping/map_helpers/role_marker.dm b/code/modules/mapping/map_helpers/role_marker.dm index bb353010acc2..0c64fa9e4f24 100644 --- a/code/modules/mapping/map_helpers/role_marker.dm +++ b/code/modules/mapping/map_helpers/role_marker.dm @@ -12,6 +12,6 @@ var/role_tag /obj/map_helper/role_marker/preloading_from_mapload(datum/dmm_context/context) - LAZYINITLIST(context.role_markers_by_tag[role_tag]) - context.role_markers_by_tag[role_tag] += src + LAZYINITLIST(context.map.collected_role_markers_by_tag[role_tag]) + context.map.collected_role_markers_by_tag[role_tag] += src return ..() diff --git a/code/modules/mapping/map_helpers/template_loader.dm b/code/modules/mapping/map_helpers/template_loader.dm index e6d0049f63dd..1192f53bd010 100644 --- a/code/modules/mapping/map_helpers/template_loader.dm +++ b/code/modules/mapping/map_helpers/template_loader.dm @@ -14,8 +14,8 @@ /// TODO: a way to pass in map injections and stuff from mapping tools would be nice. var/detach_from_map = FALSE -/obj/map_helper/template_loader/map_initializations(datum/dmm_context/context) - . = ..() +/obj/map_helper/template_loader/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) + ..() var/list/resolved = resolve_aligned_load_target() if(!resolved) @@ -71,7 +71,7 @@ if(orientation == SOUTH) // no adjustment - pass + pass() else if(orientation == EAST) x -= width - 1 else if(orientation == NORTH) diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm index b71d81c001c5..443ff89c39cb 100644 --- a/code/modules/mapping/map_injection/fixed_template_seeding.dm +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -30,7 +30,7 @@ #warn impl -/datum/map_injection/fixed_template_seeding/on_map_pre_init(datum/map_context/context) +/datum/map_injection/fixed_template_seeding/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) . = ..() #warn impl diff --git a/code/modules/mapping/map_injection/legacy_automata_caves.dm b/code/modules/mapping/map_injection/legacy_automata_caves.dm new file mode 100644 index 000000000000..f85181b2f670 --- /dev/null +++ b/code/modules/mapping/map_injection/legacy_automata_caves.dm @@ -0,0 +1,14 @@ +/datum/map_injection/legacy_automata_caves + var/seed + +/datum/map_injection/legacy_automata_caves/New(seed) + src.seed = seed + ..() + +/datum/map_injection/legacy_automata_caves/on_dmm/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) + ..() + new /datum/random_map/automata/cave_system + + . = list() + for(var/z in dmm_context.loaded_bounds[MAP_MINZ] to dmm_context.loaded_bounds[MAP_MAXZ]) + . += z diff --git a/code/modules/mapping/map_injection/legacy_seed_submaps.dm b/code/modules/mapping/map_injection/legacy_seed_submaps.dm new file mode 100644 index 000000000000..cee1be63fa74 --- /dev/null +++ b/code/modules/mapping/map_injection/legacy_seed_submaps.dm @@ -0,0 +1,24 @@ +/datum/map_injection/legacy_seed_submaps + var/budget = 0 + var/whitelist = /area/space + var/desired_map_template_type = null + +/datum/map_injection/legacy_seed_submaps/New(seed, budget, whitelist, desired_map_template_type) + ..() + // TODO: seed? + src.budget = budget + src.whitelist = whitelist + src.desired_map_template_type = desired_map_template_type + +/datum/map_injection/legacy_seed_submaps/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) + ..() + var/list/collected_zlevels = collect_zlevels(map_context, dmm_context) + seed_submaps(collected_zlevels, src.budget, src.whitelist, src.desired_map_template_type) + +/datum/map_injection/legacy_seed_submaps/proc/collect_zlevels(datum/map_context/map_context, datum/dmm_context/dmm_context) + return list() + +/datum/map_injection/legacy_seed_submaps/on_dmm_zlevel/collect_zlevels(datum/map_context/map_context, datum/dmm_context/dmm_context) + . = list() + for(var/z in dmm_context.loaded_bounds[MAP_MINZ] to dmm_context.loaded_bounds[MAP_MAXZ]) + . += z diff --git a/code/modules/mapping/map_injection/map_injection.dm b/code/modules/mapping/map_injection/map_injection.dm index a7ddc2c52d57..bc57d0d556a1 100644 --- a/code/modules/mapping/map_injection/map_injection.dm +++ b/code/modules/mapping/map_injection/map_injection.dm @@ -28,13 +28,23 @@ /** * Called when the entire map is done loading but before atom init. * * This is called with SSatoms in mapload mode. + * + * @params + * * map_context - the context for the whole map + * * dmm_context - the specific .dmm's context, if we were associated + * with a specific dmm_context instead of a full map_context */ -/datum/map_injection/proc/on_map_pre_init(datum/map_context/context) +/datum/map_injection/proc/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) return /** * Called when the entire map is done loading and atom-initializing. * * This is called with SSatoms in normal mode. + * + * @params + * * map_context - the context for the whole map + * * dmm_context - the specific .dmm's context, if we were associated + * with a specific dmm_context instead of a full map_context */ -/datum/map_injection/proc/on_map_post_init(datum/map_context/context) +/datum/map_injection/proc/on_map_post_init(datum/map_context/map_context, datum/dmm_context/dmm_context) return diff --git a/code/modules/mapping/map_injection/starting_gear.dm b/code/modules/mapping/map_injection/starting_gear.dm index 5b2037a0dfee..05fbbe20fb82 100644 --- a/code/modules/mapping/map_injection/starting_gear.dm +++ b/code/modules/mapping/map_injection/starting_gear.dm @@ -51,10 +51,10 @@ packs = collate_map_starting_gear_packs(packs) src.gear_packs = packs -/datum/map_injection/starting_gear/injection(datum/dmm_context/context) +/datum/map_injection/starting_gear/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) for(var/datum/map_starting_gear/pack as anything in gear_packs) - pack.inject(context) - return ..() + pack.inject(dmm_context) + ..() /datum/map_starting_gear diff --git a/code/modules/mapping/map_system/map.dm b/code/modules/mapping/map_system/map.dm index 335012d4b264..f3067042e688 100644 --- a/code/modules/mapping/map_system/map.dm +++ b/code/modules/mapping/map_system/map.dm @@ -101,7 +101,6 @@ * Injections to push into the `map_context` by default. */ var/list/datum/map_injection/injections = list() - #warn impl //* Simulation *// /// Ceiling heights for levels that don't specify it, as well as the blank space between levels diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index a766fc4ecf29..6c40704c2a4d 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -80,6 +80,12 @@ context.auto_marker_config = auto_marker_config return context +/datum/map_context/proc/create_and_register_blank_dmm_context() + RETURN_TYPE(/datum/dmm_context) + var/datum/dmm_context/context = create_blank_dmm_context() + loaded_dmm_contexts += context + return context + /datum/map_context/proc/register_injection(datum/map_injection/injection) if(injection in injections) CRASH("injection already registered") diff --git a/code/modules/mapping/map_system/map_level-load.dm b/code/modules/mapping/map_system/map_level-load.dm index 770b552324df..4b97e069560b 100644 --- a/code/modules/mapping/map_system/map_level-load.dm +++ b/code/modules/mapping/map_system/map_level-load.dm @@ -10,24 +10,15 @@ /** * * called right after we physically load in, before init * * called before atom init - * * multiz is set based on map struct here + * * multiz is set based on map struct at time of this being called, but usually not built yet * * @params + * * map_context - context for the whole map + * * dmm_context - context for this level's own base dmm * * z_index - zlevel we loaded on - * * out_generation_callbacks - callbacks to add to perform post-loaded generation. this will be done in a batch before on_loaded_finalize and before atom init. */ -/datum/map_level/proc/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - SHOULD_CALL_PARENT(TRUE) - -/** - * * called in a group after all maps and dependencies load **and** generation callbacks fire. - * * called after atom init - * * multiz is built here - * - * @params - * * z_index - zlevel we loaded on - */ -/datum/map_level/proc/on_loaded_finalize(z_index) +#warn audit calls +/datum/map_level/proc/on_loaded(datum/map_context/map_context, datum/dmm_context/dmm_context, z_level) SHOULD_CALL_PARENT(TRUE) //* Unloading *// diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index 6e9dbc83ca53..abf9eb2b0f73 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -205,8 +205,8 @@ // create context if(isnull(context)) context = new - if(isnull(context.mangling_id)) - context.mangling_id = generate_mangling_id() + if(isnull(context.map_mangling_id)) + context.map_mangling_id = generate_mangling_id() context = parsed.load(ll_x, ll_y, ll_z, orientation = orientation, context = context) diff --git a/code/modules/random_map/automata/caves.dm b/code/modules/random_map/automata/caves.dm index 4069cfe5f88d..cab349498a71 100644 --- a/code/modules/random_map/automata/caves.dm +++ b/code/modules/random_map/automata/caves.dm @@ -2,7 +2,6 @@ iterations = 5 descriptor = "moon caves" var/list/ore_turfs = list() - var/make_cracked_turfs = TRUE /datum/random_map/automata/cave_system/generate_map() . = ..() @@ -10,9 +9,6 @@ if(map[i] == WALL_CHAR) ore_turfs += i -/datum/random_map/automata/cave_system/no_cracks - make_cracked_turfs = FALSE - /datum/random_map/automata/cave_system/get_appropriate_path(var/value) return diff --git a/code/modules/shuttles/shuttle/shuttle_template.dm b/code/modules/shuttles/shuttle/shuttle_template.dm index 69c06fbb6c5e..54f8fab19836 100644 --- a/code/modules/shuttles/shuttle/shuttle_template.dm +++ b/code/modules/shuttles/shuttle/shuttle_template.dm @@ -90,23 +90,27 @@ ) // create context - var/datum/dmm_context/context = new - context.mangling_id = generate_mangling_id() + var/datum/map_context/map_context = new + map_context.map_mangling_id = generate_mangling_id() for(var/datum/map_injection/injection as anything in map_injections) - context.register_injection(injection) + map_context.register_injection(injection) + + var/datum/dmm_context/dmm_context = map_context.create_and_register_blank_dmm_context() // load into reservation var/datum/dmm_context/loaded_context = parsed_map.load( reservation.bottom_left_coords[1] + 1, reservation.bottom_left_coords[2] + 1, reservation.bottom_left_coords[3], - context = context, + context = dmm_context, ) var/list/loaded_bounds = loaded_context.loaded_bounds // set descriptor instance.descriptor = instance_descriptor() + #warn context pre/post init? + // let shuttle do black magic first // instance.before_bounds_init(reservation, src) diff --git a/maps/sectors/desert_192/desert_192.dm b/maps/sectors/desert_192/desert_192.dm index 593276509531..45712af66095 100644 --- a/maps/sectors/desert_192/desert_192.dm +++ b/maps/sectors/desert_192/desert_192.dm @@ -20,15 +20,10 @@ planet_path = /datum/planet/classh air_outdoors = /datum/atmosphere/planet/classh -/datum/map_level/sector/desert_192/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 150, /area/class_h/unexplored, /datum/map_template/submap/level_specific/class_h, - ) + ), ) diff --git a/maps/sectors/frozen_192/frozen_192.dm b/maps/sectors/frozen_192/frozen_192.dm index 59222e7f63a1..b3b42c7ad821 100644 --- a/maps/sectors/frozen_192/frozen_192.dm +++ b/maps/sectors/frozen_192/frozen_192.dm @@ -20,15 +20,11 @@ planet_path = /datum/planet/classp air_outdoors = /datum/atmosphere/planet/classp -/datum/map_level/sector/frozen_192/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 125, - /area/class_p/ruins, + /area/class_p/ruins/unexplored, /datum/map_template/submap/level_specific/class_p, - ) + ), ) + diff --git a/maps/sectors/miaphus/miaphus.dm b/maps/sectors/miaphus/miaphus.dm index bc1b9f0bceb6..7cb2b4d4e652 100644 --- a/maps/sectors/miaphus/miaphus.dm +++ b/maps/sectors/miaphus/miaphus.dm @@ -40,20 +40,14 @@ struct_y = 1 struct_z = 0 -/datum/map_level/sector/miaphus/cave/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 225, /area/sector/miaphus/cave/unexplored/normal, /datum/map_template/submap/level_specific/mountains/normal, - ) + ), ) - // todo: yield invoke generation - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 4, world.maxy - 4) /datum/map_level/sector/miaphus/desert id = "MiaphusDesert192" diff --git a/maps/sectors/mining_192/mining_192.dm b/maps/sectors/mining_192/mining_192.dm index 30b8e8a49261..c25f1f156ee9 100644 --- a/maps/sectors/mining_192/mining_192.dm +++ b/maps/sectors/mining_192/mining_192.dm @@ -18,10 +18,12 @@ planet_path = /datum/planet/classg air_outdoors = /datum/atmosphere/planet/classg + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) + /datum/map_level/sector/mining_192/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) . = ..() - // todo: yield invoke generation - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z_index, world.maxx - 4, world.maxy - 4) // Create the mining Z-level. new /datum/random_map/noise/ore/classg(null, 1, 1, z_index, 64, 64) // Create the mining ore distribution map. diff --git a/maps/sectors/osiris_field/osiris_field.dm b/maps/sectors/osiris_field/osiris_field.dm index bf761502376a..6610cc365d4f 100644 --- a/maps/sectors/osiris_field/osiris_field.dm +++ b/maps/sectors/osiris_field/osiris_field.dm @@ -15,17 +15,10 @@ base_turf = /turf/space base_area = /area/space -/datum/map_level/sector/osiris_field/on_loaded_immediate(z_index, list/datum/callback/additional_generation) - . = ..() - additional_generation?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 200, /area/space/osirisdebrisfield/unexplored, /datum/map_template/submap/level_specific/osirisfield, - ) + ), ) - - diff --git a/maps/sectors/sky_planet/sky_planet.dm b/maps/sectors/sky_planet/sky_planet.dm index 73b200e40cea..66b7cb376ecf 100644 --- a/maps/sectors/sky_planet/sky_planet.dm +++ b/maps/sectors/sky_planet/sky_planet.dm @@ -60,17 +60,12 @@ air_outdoors = /datum/atmosphere/planet/sky_planet/ground planet_path = /datum/planet/sky_planet/ground -/datum/map_level/sector/sky_planet/ground_west/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 225, /area/sector/sky_planet/ground/unexplored, /datum/map_template/submap/level_specific/sky_planet_ground, - ) + ), ) /datum/map_level/sector/sky_planet/sky_upper_east @@ -85,17 +80,12 @@ air_outdoors = /datum/atmosphere/planet/sky_planet planet_path = /datum/planet/sky_planet -/datum/map_level/sector/sky_planet/sky_upper_east/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 225, /area/sector/sky_planet/sky/unexplored, /datum/map_template/submap/level_specific/sky_planet_rigs, - ) + ), ) /datum/map_level/sector/sky_planet/sky_east @@ -122,15 +112,10 @@ air_outdoors = /datum/atmosphere/planet/sky_planet/ground planet_path = /datum/planet/sky_planet/ground -/datum/map_level/sector/sky_planet/ground_east/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 225, /area/sector/sky_planet/ground/unexplored, /datum/map_template/submap/level_specific/sky_planet_ground, - ) + ), ) diff --git a/maps/sectors/surt/surt.dm b/maps/sectors/surt/surt.dm index 100c841bf9fa..7c32f98cc31f 100644 --- a/maps/sectors/surt/surt.dm +++ b/maps/sectors/surt/surt.dm @@ -26,21 +26,18 @@ struct_y = 0 struct_z = 0 -/datum/map_level/sector/surt/base/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 80, /area/sector/surt/central/unexplored, /datum/map_template/submap/level_specific/lavaland, - ) + ), ) - // todo: yielding generation + +/datum/map_level/sector/surt/base/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) + . = ..() new /datum/random_map/noise/ore/lavaland(null, 1, 1, z_index, 64, 64) // Create the mining ore distribution map. - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z_index, world.maxx - 4, world.maxy - 4) // Create the lavaland Z-level. /datum/map_level/sector/surt/east id = "LavalandEast192" @@ -51,18 +48,15 @@ struct_y = 0 struct_z = 0 -/datum/map_level/sector/surt/east/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 40, /area/sector/surt/east/unexplored, /datum/map_template/submap/level_specific/lavaland, - ) + ), ) - // todo: yielding generation + +/datum/map_level/sector/surt/east/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) + . = ..() new /datum/random_map/noise/ore/lavaland(null, 1, 1, z_index, 64, 64) - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z_index, world.maxx - 4, world.maxy - 4) diff --git a/maps/sectors/virgo2_140/virgo2_140.dm b/maps/sectors/virgo2_140/virgo2_140.dm index bf9cbec59764..1c3751515b04 100644 --- a/maps/sectors/virgo2_140/virgo2_140.dm +++ b/maps/sectors/virgo2_140/virgo2_140.dm @@ -25,15 +25,10 @@ path = "maps/sectors/virgo2_140/levels/virgo2_140_surface.dmm" base_turf = /turf/simulated/floor/outdoors/rocks -/datum/map_level/sector/virgo2_140/ground/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 150, /area/tether_away/aerostat/surface/unexplored, /datum/map_template/submap/level_specific/virgo2, - ) + ), ) diff --git a/maps/sectors/virgo4_140/virgo4_140.dm b/maps/sectors/virgo4_140/virgo4_140.dm index 0818f12ed9f1..498b6a41223d 100644 --- a/maps/sectors/virgo4_140/virgo4_140.dm +++ b/maps/sectors/virgo4_140/virgo4_140.dm @@ -36,20 +36,17 @@ struct_y = 1 struct_z = 0 -/datum/map_level/sector/virgo4_140/cave/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 225, /area/tether_away/cave/unexplored/normal, /datum/map_template/submap/level_specific/mountains/normal, - ) + ), ) - // todo: yield invoke generation - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 4, world.maxy - 4) + +/datum/map_level/sector/virgo4_140/cave/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) + . = ..() new /datum/random_map/noise/ore/beachmine(null, 1, 1, z_index, 64, 64) /datum/map_level/sector/virgo4_140/desert @@ -62,15 +59,10 @@ struct_y = 1 struct_z = 0 -/datum/map_level/sector/virgo4_140/desert/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 225, /area/tether_away/beach/desert/unexplored, /datum/map_template/submap/level_specific/class_h, - ) + ), ) diff --git a/maps/sectors/wasteland_192/wasteland_192.dm b/maps/sectors/wasteland_192/wasteland_192.dm index d68f40cfd2ab..87131d864cb5 100644 --- a/maps/sectors/wasteland_192/wasteland_192.dm +++ b/maps/sectors/wasteland_192/wasteland_192.dm @@ -15,15 +15,10 @@ base_turf = /turf/simulated/mineral/floor/classd planet_path = /datum/planet/classd -/datum/map_level/sector/wasteland_192/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 150, /area/class_d/unexplored, /datum/map_template/submap/level_specific/class_d, - ) + ), ) diff --git a/maps/stations/rift/rift.dm b/maps/stations/rift/rift.dm index 8e7e64c014b4..3020e6ef633b 100644 --- a/maps/stations/rift/rift.dm +++ b/maps/stations/rift/rift.dm @@ -201,9 +201,9 @@ flags = LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/underground_floor/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/station/underground_deep id = "rift-underground-2" @@ -224,9 +224,9 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/underground_deep/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/station/underground_shallow id = "rift-underground-1" @@ -247,9 +247,9 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/underground_shallow/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/station/surface_low id = "rift-surface-1" @@ -270,9 +270,9 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/surface_low/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/station/surface_mid id = "rift-surface-2" @@ -293,9 +293,9 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/surface_mid/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/station/surface_high id = "rift-surface-3" @@ -316,9 +316,9 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_CONTACT|LEGACY_LEVEL_PLAYER|LEGACY_LEVEL_CONSOLES planet_path = /datum/planet/lythios43c -/datum/map_level/rift/station/surface_high/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) /datum/map_level/rift/base id = "rift-west-underground-3" @@ -369,19 +369,14 @@ flags = LEGACY_LEVEL_STATION|LEGACY_LEVEL_PLAYER planet_path = /datum/planet/lythios43c -/datum/map_level/rift/deep/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 75, - /area/rift/surfacebase/outside/west_deep/submap_seedzone, + /area/rift/surfacebase/outside/west_deep/unexplored, /datum/map_template/submap/level_specific/rift/west_deep, - ) + ), ) - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 3, world.maxy - 3) /datum/map_level/rift/caves id = "rift-west-underground-1" diff --git a/maps/stations/tether/tether.dm b/maps/stations/tether/tether.dm index e03db577421f..8bbc57edb099 100644 --- a/maps/stations/tether/tether.dm +++ b/maps/stations/tether/tether.dm @@ -283,9 +283,12 @@ base_turf = /turf/simulated/floor/outdoors/rocks/virgo3b planet_path = /datum/planet/virgo3b + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + ) + /datum/map_level/tether/mine/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) . = ..() - new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z_index, world.maxx, world.maxy) // Create the mining Z-level. new /datum/random_map/noise/ore(null, 1, 1, z_index, 64, 64) // Create the mining ore distribution map. /datum/map_level/tether/underdark @@ -305,19 +308,17 @@ struct_y = 1 struct_z = -1 -/datum/map_level/tether/underdark/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_automata_caves/on_dmm, + new /datum/map_injection/legacy_seed_submaps( 150, /area/mine/unexplored/underdark, /datum/map_template/submap/level_specific/underdark, - ) + ), ) - new /datum/random_map/automata/cave_system/no_cracks(null, 3, 3, z_index, world.maxx - 4, world.maxy - 4) // Create the mining Z-level. + +/datum/map_level/tether/underdark/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) + . = ..() new /datum/random_map/noise/ore(null, 1, 1, z_index, 64, 64) // Create the mining ore distribution map. /datum/map_level/tether/plains @@ -336,15 +337,10 @@ struct_y = -1 struct_z = 0 -/datum/map_level/tether/plains/on_loaded_immediate(z_index, list/datum/callback/out_generation_callbacks) - . = ..() - out_generation_callbacks?.Add( - CALLBACK( - GLOBAL_PROC, - GLOBAL_PROC_REF(seed_submaps), - list(z_index), + injections = list( + new /datum/map_injection/legacy_seed_submaps( 150, /area/tether/outpost/exploration_plains, /datum/map_template/submap/level_specific/plains, - ) + ), ) From e7c51871032670fdf7e8c0daad6db7d866304ead Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 14 Jun 2026 15:25:29 -0700 Subject: [PATCH 11/44] hm --- citadel.dme | 1 + .../map_injection/legacy_automata_caves.dm | 17 ++++++++--- .../map_injection/legacy_noise_ores.dm | 27 ++++++++++++++++++ .../map_injection/legacy_seed_submaps.dm | 13 +++++++-- code/modules/random_map/random_map.dm | 8 ++++-- .../debrisfield_192/debrisfield_192.dm | 11 ++------ maps/sectors/miaphus/miaphus.dm | 11 ++------ maps/sectors/mining_192/mining_192.dm | 11 ++++---- maps/sectors/surt/surt.dm | 18 ++++++------ maps/sectors/virgo4_140/virgo4_140.dm | 9 +++--- maps/stations/rift/rift.dm | 28 ++++++------------- maps/stations/tether/tether.dm | 10 ++----- 12 files changed, 93 insertions(+), 71 deletions(-) create mode 100644 code/modules/mapping/map_injection/legacy_noise_ores.dm diff --git a/citadel.dme b/citadel.dme index 7db28fc7636e..e23bb600354a 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3669,6 +3669,7 @@ #include "code\modules\mapping\map_helpers\network_builder\power_cable.dm" #include "code\modules\mapping\map_injection\fixed_template_seeding.dm" #include "code\modules\mapping\map_injection\legacy_automata_caves.dm" +#include "code\modules\mapping\map_injection\legacy_noise_ores.dm" #include "code\modules\mapping\map_injection\legacy_seed_submaps.dm" #include "code\modules\mapping\map_injection\map_injection.dm" #include "code\modules\mapping\map_injection\starting_gear.dm" diff --git a/code/modules/mapping/map_injection/legacy_automata_caves.dm b/code/modules/mapping/map_injection/legacy_automata_caves.dm index f85181b2f670..2864393fe5d2 100644 --- a/code/modules/mapping/map_injection/legacy_automata_caves.dm +++ b/code/modules/mapping/map_injection/legacy_automata_caves.dm @@ -2,13 +2,22 @@ var/seed /datum/map_injection/legacy_automata_caves/New(seed) - src.seed = seed ..() + if(!isnull(seed)) + src.seed = seed /datum/map_injection/legacy_automata_caves/on_dmm/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) ..() - new /datum/random_map/automata/cave_system - . = list() + if(!dmm_context) + return + for(var/z in dmm_context.loaded_bounds[MAP_MINZ] to dmm_context.loaded_bounds[MAP_MAXZ]) - . += z + new /datum/random_map/automata/cave_system( + seed, + dmm_context.loaded_bounds[MAP_MINX], + dmm_context.loaded_bounds[MAP_MINY], + z, + dmm_context.loaded_bounds[MAP_MAXX], + dmm_context.loaded_bounds[MAP_MAXY], + ) diff --git a/code/modules/mapping/map_injection/legacy_noise_ores.dm b/code/modules/mapping/map_injection/legacy_noise_ores.dm new file mode 100644 index 000000000000..b3f5932ea028 --- /dev/null +++ b/code/modules/mapping/map_injection/legacy_noise_ores.dm @@ -0,0 +1,27 @@ +/datum/map_injection/legacy_noise_ores + var/seed + var/deep_val = 0.8 + var/rare_val = 0.7 + +/datum/map_injection/legacy_noise_ores/New(seed, deep_val, rare_val) + ..() + if(!isnull(seed)) + src.seed = seed + if(!isnull(deep_val)) + src.deep_val = deep_val + if(!isnull(rare_val)) + src.rare_val = rare_val + +/datum/map_injection/legacy_noise_ores/on_entire_z_of_dmm + +/datum/map_injection/legacy_noise_ores/on_entire_z_of_dmm/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) + ..() + + if(!dmm_context) + return + + if(dmm_context.loaded_bounds[MAP_MINZ] != dmm_context.loaded_bounds[MAP_MAXZ]) + CRASH("legacy_noise_ores only supports injection on a single Z-level at a time") + + // TODO: this only goes up to 256x256 due to internal limitations of the chunk size and limits. + new /datum/random_map/noise/ore(null, 1, 1, dmm_context.loaded_bounds[MAP_MINZ], 64, 64) diff --git a/code/modules/mapping/map_injection/legacy_seed_submaps.dm b/code/modules/mapping/map_injection/legacy_seed_submaps.dm index cee1be63fa74..dc73925a5af5 100644 --- a/code/modules/mapping/map_injection/legacy_seed_submaps.dm +++ b/code/modules/mapping/map_injection/legacy_seed_submaps.dm @@ -6,9 +6,12 @@ /datum/map_injection/legacy_seed_submaps/New(seed, budget, whitelist, desired_map_template_type) ..() // TODO: seed? - src.budget = budget - src.whitelist = whitelist - src.desired_map_template_type = desired_map_template_type + if(!isnull(budget)) + src.budget = budget + if(!isnull(whitelist)) + src.whitelist = whitelist + if(!isnull(desired_map_template_type)) + src.desired_map_template_type = desired_map_template_type /datum/map_injection/legacy_seed_submaps/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) ..() @@ -20,5 +23,9 @@ /datum/map_injection/legacy_seed_submaps/on_dmm_zlevel/collect_zlevels(datum/map_context/map_context, datum/dmm_context/dmm_context) . = list() + + if(!dmm_context) + return + for(var/z in dmm_context.loaded_bounds[MAP_MINZ] to dmm_context.loaded_bounds[MAP_MAXZ]) . += z diff --git a/code/modules/random_map/random_map.dm b/code/modules/random_map/random_map.dm index 1080553eeb1a..bd76594b316f 100644 --- a/code/modules/random_map/random_map.dm +++ b/code/modules/random_map/random_map.dm @@ -44,8 +44,10 @@ var/global/list/map_count = list() // Get origins for applying the map later. set_origins(tx, ty, tz) - if(tlx) limit_x = tlx - if(tly) limit_y = tly + if(tlx) + limit_x = tlx + if(tly) + limit_y = tly if(do_not_apply) auto_apply = null @@ -61,7 +63,7 @@ var/global/list/map_count = list() // if(seed) // rand_seed(seed) // priority_process = 1 - + // removed. the problem is that nothing but the master controller should ever be fucking with random seeding ~silicons for(var/i = 0;i Date: Sun, 14 Jun 2026 15:29:01 -0700 Subject: [PATCH 12/44] this --- code/modules/mapping/dmm_suite/dmm_context.dm | 96 ++++++++++++++++++- .../mapping/map_helpers/gear_marker.dm | 6 +- .../modules/mapping/map_helpers/map_helper.dm | 2 +- .../mapping/map_helpers/role_marker.dm | 4 +- code/modules/mapping/map_system/map-load.dm | 2 + .../modules/mapping/map_system/map_context.dm | 2 +- 6 files changed, 104 insertions(+), 8 deletions(-) diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index ed90da500557..90205334a4ef 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -21,7 +21,7 @@ /** * Our map context. */ - var/datum/map_context/map + var/datum/map_context/map_context /// set to map_context's value for speed var/map_mangling_id /// set to map_context's value for speed @@ -36,6 +36,33 @@ /// * natural orientation is SOUTH var/loaded_orientation + //* used by loader *// + + /** + * Injections to fire + * * Injections are stateless and generally are not automatically + * transferred down if a template / shuttle is considered 'not part of the map'. + */ + VAR_PRIVATE/list/datum/map_injection/injections + VAR_PRIVATE/injections_pre_init_fired = FALSE + VAR_PRIVATE/injections_post_init_fired = FALSE + + /** + * Callbacks to call post-load but pre-init. Called with (src). + * * These callbacks are fired with SSatoms under 'map_loader_begin'. + * * These have priority over injections. + */ + VAR_PRIVATE/list/datum/callback/pre_init_callbacks = list() + VAR_PRIVATE/pre_init_callbacks_fired = FALSE + + /** + * Callbacks to call post-load, post-atom-init. Called with (src). + * * These callbacks are fired with SSatoms in normal mode. + * * These have priority over injections. + */ + VAR_PRIVATE/list/datum/callback/post_init_callbacks = list() + VAR_PRIVATE/post_init_callbacks_fired = FALSE + //* reexports of dmm_orientation variables *// var/loaded_orientation_invert_x var/loaded_orientation_invert_y @@ -72,3 +99,70 @@ */ /datum/dmm_context/proc/dispose_dmm_reference() loaded_dmm = null + +/datum/map_context/proc/register_injection(datum/map_injection/injection) + if(injection in injections) + CRASH("injection already registered") + injections |= injection + +/datum/map_context/proc/register_pre_init_callback(datum/callback/cb) + if(pre_init_callbacks_fired) + CRASH("pre-init callbacks already were fired") + pre_init_callbacks |= cb + +/datum/map_context/proc/register_post_init_callback(datum/callback/cb) + if(post_init_callbacks_fired) + CRASH("post-init callbacks already were fired") + post_init_callbacks |= cb + +/datum/map_context/proc/execute_pre_init() + fire_pre_init_callbacks() + fire_pre_init_injections() + +/datum/map_context/proc/execute_post_init() + fire_post_init_callbacks() + fire_post_init_injections() + +/datum/map_context/proc/fire_pre_init_callbacks() + if(pre_init_callbacks_fired) + CRASH("pre-init callbacks already were fired") + pre_init_callbacks_fired = TRUE + + SSatoms.map_loader_begin("map-context-callbacks") + Master.StartLoadingMap() + + for(var/datum/callback/callback as anything in pre_init_callbacks) + callback.invoke_no_sleep(map_context, src) + + Master.StopLoadingMap() + SSatoms.map_loader_stop("map-context-callbacks") + +/datum/map_context/proc/fire_post_init_callbacks() + if(post_init_callbacks_fired) + CRASH("post-init callbacks already were fired") + post_init_callbacks_fired = TRUE + + for(var/datum/callback/callback as anything in post_init_callbacks) + callback.invoke_no_sleep(map_context, src) + +/datum/map_context/proc/fire_pre_init_injections() + if(injections_pre_init_fired) + CRASH("pre-init injections already were fired") + injections_pre_init_fired = TRUE + + SSatoms.map_loader_begin("map-context-injections") + Master.StartLoadingMap() + + for(var/datum/map_injection/injection in injections) + injection.on_map_pre_init(map_context, src) + + Master.StopLoadingMap() + SSatoms.map_loader_stop("map-context-injections") + +/datum/map_context/proc/fire_post_init_injections() + if(injections_post_init_fired) + CRASH("post-init injections already were fired") + injections_post_init_fired = TRUE + + for(var/datum/map_injection/injection in injections) + injection.on_map_post_init(map_context, src) diff --git a/code/modules/mapping/map_helpers/gear_marker.dm b/code/modules/mapping/map_helpers/gear_marker.dm index 3d973c84821c..b9f33c258955 100644 --- a/code/modules/mapping/map_helpers/gear_marker.dm +++ b/code/modules/mapping/map_helpers/gear_marker.dm @@ -183,7 +183,7 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( /obj/map_helper/gear_marker/distributed/preloading_from_mapload(datum/dmm_context/context) - context.map.collected_distributed_gear_markers += src + context.map_context.collected_distributed_gear_markers += src // make everything assoc make_associative_inplace(gear_tags) make_associative_inplace(usage_tags) @@ -217,8 +217,8 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( var/role_allow_overflow = TRUE /obj/map_helper/gear_marker/role/preloading_from_mapload(datum/dmm_context/context) - LAZYINITLIST(context.map.collected_stamped_gear_markers_by_role[role_tag]) - context.map.collected_stamped_gear_markers_by_role[role_tag] += src + LAZYINITLIST(context.map_context.collected_stamped_gear_markers_by_role[role_tag]) + context.map_context.collected_stamped_gear_markers_by_role[role_tag] += src return ..() /** diff --git a/code/modules/mapping/map_helpers/map_helper.dm b/code/modules/mapping/map_helpers/map_helper.dm index e17dfa1aa8e7..5dfaeb469afa 100644 --- a/code/modules/mapping/map_helpers/map_helper.dm +++ b/code/modules/mapping/map_helpers/map_helper.dm @@ -61,7 +61,7 @@ */ /obj/map_helper/proc/hook_map_initializations(datum/dmm_context/context) PRIVATE_PROC(TRUE) - context.map.register_pre_init_callback(CALLBACK(src, PROC_REF(map_initializations), context)) + context.map_context.register_pre_init_callback(CALLBACK(src, PROC_REF(map_initializations), context)) /** * called if we're on SSmapping's map_initializations_hooked list. diff --git a/code/modules/mapping/map_helpers/role_marker.dm b/code/modules/mapping/map_helpers/role_marker.dm index 0c64fa9e4f24..54a1db140bde 100644 --- a/code/modules/mapping/map_helpers/role_marker.dm +++ b/code/modules/mapping/map_helpers/role_marker.dm @@ -12,6 +12,6 @@ var/role_tag /obj/map_helper/role_marker/preloading_from_mapload(datum/dmm_context/context) - LAZYINITLIST(context.map.collected_role_markers_by_tag[role_tag]) - context.map.collected_role_markers_by_tag[role_tag] += src + LAZYINITLIST(context.map_context.collected_role_markers_by_tag[role_tag]) + context.map_context.collected_role_markers_by_tag[role_tag] += src return ..() diff --git a/code/modules/mapping/map_system/map-load.dm b/code/modules/mapping/map_system/map-load.dm index a794f52cfbef..0f70e293d2b7 100644 --- a/code/modules/mapping/map_system/map-load.dm +++ b/code/modules/mapping/map_system/map-load.dm @@ -7,6 +7,8 @@ //* Loading *// +#warn this + /** * anything to do immediately on load * diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 6c40704c2a4d..47cfd137d679 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -75,7 +75,7 @@ /datum/map_context/proc/create_blank_dmm_context() RETURN_TYPE(/datum/dmm_context) var/datum/dmm_context/context = new - context.map = src + context.map_context = src context.map_mangling_id = mangling_id context.auto_marker_config = auto_marker_config return context From eb0319f525fc9fb677ee66aeedc32fe1ba7398e0 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 14 Jun 2026 15:32:03 -0700 Subject: [PATCH 13/44] this --- .../subsystem/mapping/mapping-levels.dm | 18 +++++------------- code/modules/mapping/dmm_suite/dmm_context.dm | 1 + 2 files changed, 6 insertions(+), 13 deletions(-) diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index eef00d4fa0dd..ddc649db2b70 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -231,12 +231,7 @@ ASSERT(instance.id) ASSERT(instance == allocated_instance) - if(isnull(use_dmm_context)) - use_dmm_context = create_dmm_context() - if(isnull(use_dmm_context.map_mangling_id)) - use_dmm_context.map_mangling_id = "level-[instance.mangling_id || instance.id]" - - var/datum/dmm_context/loaded_context + var/datum/dmm_context/dmm_context = map_context.create_blank_dmm_context() if(instance.base_area) var/area/level_area_type = instance.base_area @@ -275,16 +270,13 @@ place_on_top = FALSE, orientation = instance.load_orientation, area_cache = use_area_cache, - context = use_dmm_context, + context = dmm_context, ) - ASSERT(loaded_context.success) else - // this is not a real map path - loaded_context = use_dmm_context - loaded_context.mark_used() - loaded_context.set_empty_load() - loaded_context.success = TRUE + dmm_context.set_empty_load() + + ASSERT(dmm_context.success) // immediately update munltiz cache rebuild_multiz_lookup(instance.z_index) diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 90205334a4ef..4be549ea2f64 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -81,6 +81,7 @@ used = TRUE /datum/dmm_context/proc/set_empty_load() + mark_used() loaded_bounds = new /list(MAP_BOUNDS) loaded_bounds[MAP_MINX] = 0 loaded_bounds[MAP_MINY] = 0 From 10ba50d5dcd5411e129cbb58aa9ae19f9a145cf7 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 17 Jun 2026 02:21:46 -0700 Subject: [PATCH 14/44] maps from ruskit --- citadel.dme | 1 + .../subsystem/mapping/mapping-levels.dm | 37 +- .../subsystem/mapping/mapping-maps.dm | 28 +- code/game/area/submap.dm | 12 + .../airlocks/airlock_component/controller.dm | 2 +- .../machinery/airlocks/airlock_peripheral.dm | 2 +- .../map_helpers/airlock_peripheral_linker.dm | 2 +- code/game/machinery/misc/bioscan_antenna.dm | 2 +- code/modules/mapping/dmm_suite/dmm_context.dm | 36 +- .../mapping/map_helpers/engine_loader.dm | 6 +- .../mapping/map_injection/map_injection.dm | 2 + .../mapping/map_injection/starting_gear.dm | 10 +- .../modules/mapping/map_system/map_context.dm | 4 +- code/modules/mapping/map_system/map_level.dm | 6 + .../shuttles/shuttle/shuttle_template.dm | 2 +- maps/submaps/jigsaw/tomb_1/tomb.dm | 42 +++ .../jigsaw/tomb_1/tomb1_4way_square.dmm | 287 +++++++++++++++ .../jigsaw/tomb_1/tomb1_burialchamber.dmm | 294 ++++++++++++++++ maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm | 180 ++++++++++ .../jigsaw/tomb_1/tomb1_hall_curved.dmm | 136 +++++++ maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm | 331 ++++++++++++++++++ .../jigsaw/tomb_1/tomb_hall_straight.dmm | 139 ++++++++ maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm | 271 ++++++++++++++ maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm | 290 +++++++++++++++ .../submaps/jigsaw/tomb_1/tomb_throneroom.dmm | 300 ++++++++++++++++ maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm | 196 +++++++++++ 26 files changed, 2555 insertions(+), 63 deletions(-) create mode 100644 code/game/area/submap.dm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb.dm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm diff --git a/citadel.dme b/citadel.dme index e23bb600354a..fe8a8aaa5ad9 100644 --- a/citadel.dme +++ b/citadel.dme @@ -1161,6 +1161,7 @@ #include "code\game\area\Ship_Station_Areas.dm" #include "code\game\area\Space Station 13 areas.dm" #include "code\game\area\ss13_deprecated_areas.dm" +#include "code\game\area\submap.dm" #include "code\game\area\Tether_areas.dm" #include "code\game\area\station\exporation.dm" #include "code\game\area\station\security_areas.dm" diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index ddc649db2b70..c8d96f4055bc 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -209,21 +209,30 @@ ) UNTIL(!map_system_mutex) map_system_mutex = TRUE - . = load_level_impl( + + var/datum/dmm_context/dmm_context = load_level_impl( instance, use_area_cache, use_dmm_context, defer_for_group_load, out_generation_callbacks, ) + if(SSatoms.initialized) + SSatoms.init_map_bounds(dmm_context.loaded_bounds) + dmm_context.execute_post_init() + map_system_mutex = FALSE + return dmm_context + #warn trace calls for args & old generation / defer usage + /datum/controller/subsystem/mapping/proc/load_level_impl( datum/map_level/instance, datum/map_context/map_context, list/use_area_cache, ) + RETURN_TYPE(/datum/dmm_context) PRIVATE_PROC(TRUE) var/datum/map_level/allocated_instance = allocate_level_impl(instance, FALSE) @@ -233,6 +242,9 @@ var/datum/dmm_context/dmm_context = map_context.create_blank_dmm_context() + for(var/datum/map_injection/injection in instance.injections) + dmm_context.register_injection(injection) + if(instance.base_area) var/area/level_area_type = instance.base_area var/area/level_area_instance @@ -262,7 +274,7 @@ if(!instance.load_crop && ((parsed.width + real_x - 1) > world.maxx || (parsed.height + real_y - 1) > world.maxy)) CRASH("tried to load a map that would overrun the world bounds") - loaded_context = parsed.load( + dmm_context = parsed.load( real_x, real_y, real_z, @@ -281,25 +293,10 @@ // immediately update munltiz cache rebuild_multiz_lookup(instance.z_index) - // fire context immediately - loaded_context.execute_postload() - - // fire instance on load hooks - var/list/datum/callback/generation_callbacks = list() - instance.on_loaded_immediate(instance.z_index, generation_callbacks) - - // fire finalize and generation callbacks if not deferred - if(!defer_for_group_load) - for(var/datum/callback/generation_callback as anything in generation_callbacks) - generation_callback.Invoke() - if(!SSatoms.initialized) - SSatoms.init_map_bounds(loaded_context.loaded_bounds) - instance.on_loaded_finalize(instance.z_index) - instance.rebuild_multiz() - else - out_generation_callbacks += generation_callbacks + // fire pre-init hooks + dmm_context.execute_pre_init() - return loaded_context + return dmm_context /** * destroys a loaded level and frees it for later usage diff --git a/code/controllers/subsystem/mapping/mapping-maps.dm b/code/controllers/subsystem/mapping/mapping-maps.dm index 7579027ca80d..0681de0641b3 100644 --- a/code/controllers/subsystem/mapping/mapping-maps.dm +++ b/code/controllers/subsystem/mapping/mapping-maps.dm @@ -98,7 +98,7 @@ var/datum/map_context/context = new loaded_contexts += context - context.map_mangling_id = loading_map.mangling_id || loading_map.id + context.mangling_id = loading_map.mangling_id || loading_map.id context.auto_marker_config = loading_map.load_auto_marker_config || new for(var/datum/map_injection/injection as anything in loading_map.injections) @@ -129,25 +129,21 @@ SSshuttle.legacy_shuttle_assert(path) //! END - emit_info_log("load - initializing [length(loaded_lockstep_levels)] levels...") + emit_info_log("load - initializing [length(loaded_levels)] levels...") - // fire generation and atom init after, now that everything has had a chance to load - for(var/datum/callback/cb as anything in deferred_generation_callbacks) - cb.Invoke() - for(var/datum/dmm_context/ctx as anything in loaded_lockstep_contexts) - if(SSatoms.initialized) - SSatoms.init_map_bounds(ctx.loaded_bounds) + // init bounds and fire post-init. + for(var/datum/map_context/ctx as anything in loaded_contexts) + for(var/datum/dmm_context/dmm_ctx as anything in ctx.loaded_dmm_contexts) + if(SSatoms.initialized) + SSatoms.init_map_bounds(dmm_ctx.loaded_bounds) + dmm_ctx.execute_post_init() + ctx.execute_post_init() - // fire finalize hooks - for(var/datum/map_level/level as anything in loaded_lockstep_levels) - level.on_loaded_finalize(level.z_index) - for(var/datum/map/map as anything in loaded_maps) - map.on_loaded_finalize() - - for(var/datum/map_level/loaded_level as anything in loaded_lockstep_levels) + // finally rebuild multiz proper + for(var/datum/map_level/loaded_level as anything in loaded_levels) rebuild_multiz(loaded_level.z_index) - emit_info_log("load - initialized [length(loaded_lockstep_levels)] levels") + emit_info_log("load - initialized [length(loaded_levels)] levels") return TRUE diff --git a/code/game/area/submap.dm b/code/game/area/submap.dm new file mode 100644 index 000000000000..a5597a700a1e --- /dev/null +++ b/code/game/area/submap.dm @@ -0,0 +1,12 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +/area/submap + +/area/submap/one_single_area + +#warn hook +/area/submap/one_single_area/preloading_from_mapload(datum/dmm_context/context) + . = ..() + +#warn impl diff --git a/code/game/machinery/airlocks/airlock_component/controller.dm b/code/game/machinery/airlocks/airlock_component/controller.dm index 05f6e095a847..add573a0d5a3 100644 --- a/code/game/machinery/airlocks/airlock_component/controller.dm +++ b/code/game/machinery/airlocks/airlock_component/controller.dm @@ -64,7 +64,7 @@ GLOBAL_LIST_EMPTY(airlock_controller_lookup) /obj/machinery/airlock_component/controller/preloading_from_mapload(datum/dmm_context/context) . = ..() if(airlock_id) - airlock_id = SSmapping.mangled_round_local_id(airlock_id, context.map_mangling_id) + airlock_id = SSmapping.mangled_round_local_id(airlock_id, context.mangling_id) /obj/machinery/airlock_component/controller/Initialize(mapload, set_dir, obj/item/airlock_component/controller/from_item) . = ..() diff --git a/code/game/machinery/airlocks/airlock_peripheral.dm b/code/game/machinery/airlocks/airlock_peripheral.dm index e696f01fcb08..2dc8269b5a57 100644 --- a/code/game/machinery/airlocks/airlock_peripheral.dm +++ b/code/game/machinery/airlocks/airlock_peripheral.dm @@ -17,7 +17,7 @@ /obj/machinery/airlock_peripheral/preloading_from_mapload(datum/dmm_context/context) . = ..() if(controller_autolink_id) - controller_autolink_id = SSmapping.mangled_round_local_id(controller_autolink_id, context.map_mangling_id) + controller_autolink_id = SSmapping.mangled_round_local_id(controller_autolink_id, context.mangling_id) /obj/machinery/airlock_peripheral/Initialize(mapload) . = ..() diff --git a/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm b/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm index 1cccd6dfdf69..bb243243239f 100644 --- a/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm +++ b/code/game/machinery/airlocks/map_helpers/airlock_peripheral_linker.dm @@ -15,7 +15,7 @@ /obj/map_helper/airlock_peripheral_linker/preloading_from_mapload(datum/dmm_context/context) . = ..() if(set_controller_id) - set_controller_id = SSmapping.mangled_round_local_id(set_controller_id, context.map_mangling_id) + set_controller_id = SSmapping.mangled_round_local_id(set_controller_id, context.mangling_id) /obj/map_helper/airlock_peripheral_linker/Initialize(mapload) for(var/obj/machinery/airlock_peripheral/peripheral in loc) diff --git a/code/game/machinery/misc/bioscan_antenna.dm b/code/game/machinery/misc/bioscan_antenna.dm index 0a8c78f375ac..6574851b9b03 100644 --- a/code/game/machinery/misc/bioscan_antenna.dm +++ b/code/game/machinery/misc/bioscan_antenna.dm @@ -26,7 +26,7 @@ GLOBAL_LIST_EMPTY(bioscan_antenna_list) /obj/machinery/bioscan_antenna/preloading_from_mapload(datum/dmm_context/context) . = ..() if(network_key_obfuscated && !network_key) - network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.map_mangling_id, "bioscan") + network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.mangling_id, "bioscan") /obj/machinery/bioscan_antenna/Initialize(mapload) . = ..() diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 4be549ea2f64..72f644ce463c 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -17,15 +17,23 @@ //* set these before loading *// - #warn hook /** * Our map context. */ var/datum/map_context/map_context - /// set to map_context's value for speed - var/map_mangling_id - /// set to map_context's value for speed + /** + * ID used to mangle things like buttons. + */ + var/mangling_id + /** + * Auto marker config to use for this load. + */ var/datum/turf_auto_marker_config/auto_marker_config + /** + * Set to identify the area we're loading. Used by things like + * automatic area naming. + */ + var/provide_auto_name //* set by load cycle *// @@ -58,6 +66,8 @@ /** * Callbacks to call post-load, post-atom-init. Called with (src). * * These callbacks are fired with SSatoms in normal mode. + * * These are NOT necessarily fired before atom init. If it's before atom init, + * these behave like pre_init_callbacks other than ordering. * * These have priority over injections. */ VAR_PRIVATE/list/datum/callback/post_init_callbacks = list() @@ -101,30 +111,30 @@ /datum/dmm_context/proc/dispose_dmm_reference() loaded_dmm = null -/datum/map_context/proc/register_injection(datum/map_injection/injection) +/datum/dmm_context/proc/register_injection(datum/map_injection/injection) if(injection in injections) CRASH("injection already registered") injections |= injection -/datum/map_context/proc/register_pre_init_callback(datum/callback/cb) +/datum/dmm_context/proc/register_pre_init_callback(datum/callback/cb) if(pre_init_callbacks_fired) CRASH("pre-init callbacks already were fired") pre_init_callbacks |= cb -/datum/map_context/proc/register_post_init_callback(datum/callback/cb) +/datum/dmm_context/proc/register_post_init_callback(datum/callback/cb) if(post_init_callbacks_fired) CRASH("post-init callbacks already were fired") post_init_callbacks |= cb -/datum/map_context/proc/execute_pre_init() +/datum/dmm_context/proc/execute_pre_init() fire_pre_init_callbacks() fire_pre_init_injections() -/datum/map_context/proc/execute_post_init() +/datum/dmm_context/proc/execute_post_init() fire_post_init_callbacks() fire_post_init_injections() -/datum/map_context/proc/fire_pre_init_callbacks() +/datum/dmm_context/proc/fire_pre_init_callbacks() if(pre_init_callbacks_fired) CRASH("pre-init callbacks already were fired") pre_init_callbacks_fired = TRUE @@ -138,7 +148,7 @@ Master.StopLoadingMap() SSatoms.map_loader_stop("map-context-callbacks") -/datum/map_context/proc/fire_post_init_callbacks() +/datum/dmm_context/proc/fire_post_init_callbacks() if(post_init_callbacks_fired) CRASH("post-init callbacks already were fired") post_init_callbacks_fired = TRUE @@ -146,7 +156,7 @@ for(var/datum/callback/callback as anything in post_init_callbacks) callback.invoke_no_sleep(map_context, src) -/datum/map_context/proc/fire_pre_init_injections() +/datum/dmm_context/proc/fire_pre_init_injections() if(injections_pre_init_fired) CRASH("pre-init injections already were fired") injections_pre_init_fired = TRUE @@ -160,7 +170,7 @@ Master.StopLoadingMap() SSatoms.map_loader_stop("map-context-injections") -/datum/map_context/proc/fire_post_init_injections() +/datum/dmm_context/proc/fire_post_init_injections() if(injections_post_init_fired) CRASH("post-init injections already were fired") injections_post_init_fired = TRUE diff --git a/code/modules/mapping/map_helpers/engine_loader.dm b/code/modules/mapping/map_helpers/engine_loader.dm index 844ace9a144e..a88d5fc448d6 100644 --- a/code/modules/mapping/map_helpers/engine_loader.dm +++ b/code/modules/mapping/map_helpers/engine_loader.dm @@ -6,9 +6,9 @@ // override for map, otherwise defaults to loaded station as we have no way of detecting what's being loaded right now var/for_map -/obj/map_helper/engine_loader/map_initializations(datum/dmm_dmm_context/dmm_context, datum/map_context/map_context) +/obj/map_helper/engine_loader/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) . = ..() - var/list/bounds = context.loaded_bounds + var/list/bounds = dmm_context.loaded_bounds var/lx = bounds[MAP_MINX] var/ly = bounds[MAP_MINY] var/lz = bounds[MAP_MINZ] @@ -34,7 +34,7 @@ if(ispath(their_for_map)) var/datum/map/map_path = their_for_map their_for_map = initial(map_path.id) - if(their_for_map != src.for_map) + if(their_for_map != for_map) continue var/name = lowertext(initial(path.name)) potential_filtered[path] = isnum(probabilities[name])? probabilities[name] : 1 diff --git a/code/modules/mapping/map_injection/map_injection.dm b/code/modules/mapping/map_injection/map_injection.dm index bc57d0d556a1..9919c78fbe53 100644 --- a/code/modules/mapping/map_injection/map_injection.dm +++ b/code/modules/mapping/map_injection/map_injection.dm @@ -40,6 +40,8 @@ /** * Called when the entire map is done loading and atom-initializing. * * This is called with SSatoms in normal mode. + * * These are NOT necessarily fired before atom init. If it's before atom init, + * these behave like pre_init_callbacks other than ordering. * * @params * * map_context - the context for the whole map diff --git a/code/modules/mapping/map_injection/starting_gear.dm b/code/modules/mapping/map_injection/starting_gear.dm index 05fbbe20fb82..ffea7fb6dfc4 100644 --- a/code/modules/mapping/map_injection/starting_gear.dm +++ b/code/modules/mapping/map_injection/starting_gear.dm @@ -54,7 +54,7 @@ /datum/map_injection/starting_gear/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) for(var/datum/map_starting_gear/pack as anything in gear_packs) pack.inject(dmm_context) - ..() + return ..() /datum/map_starting_gear @@ -87,7 +87,7 @@ var/list/obj/map_helper/gear_marker/use_markers = list() var/current_matching_weight = 0 - for(var/obj/map_helper/gear_marker/distributed/potential_marker in context.distributed_gear_markers) + for(var/obj/map_helper/gear_marker/distributed/potential_marker in context.map_context.collected_distributed_gear_markers) var/match_weight = 0 var/gear_match = FALSE var/usage_match = FALSE @@ -165,7 +165,7 @@ /datum/map_starting_gear/role/inject(datum/dmm_context/context) // todo: logging if ran out of room // 1. attempt to find proper role - var/list/obj/map_helper/gear_marker/role/role_markers = context.role_markers_by_tag[role_tag] + var/list/obj/map_helper/gear_marker/role/role_markers = context.map_context.collected_role_markers_by_tag[role_tag] // if found if(length(role_markers)) // fill as needed @@ -185,8 +185,8 @@ ASSERT(isnum(slots) && slots > 0) var/list/obj/map_helper/gear_marker/role/overflow_markers = list() var/needed = slots - for(var/role in context.role_markers_by_tag) - for(var/obj/map_helper/gear_marker/role/potential_marker in context.role_markers_by_tag[role]) + for(var/role in context.map_context.collected_role_markers_by_tag) + for(var/obj/map_helper/gear_marker/role/potential_marker in context.map_context.collected_role_markers_by_tag[role]) if(!potential_marker.role_allow_overflow) continue needed-- diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 47cfd137d679..1f08ea6d7f0e 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -45,6 +45,8 @@ * Callbacks to call post-load, post-atom-init. Called with (src). * * These callbacks are fired with SSatoms in normal mode. * * These have priority over injections. + * * These are NOT necessarily fired before atom init. If it's before atom init, + * these behave like pre_init_callbacks other than ordering. */ VAR_PRIVATE/list/datum/callback/post_init_callbacks = list() VAR_PRIVATE/post_init_callbacks_fired = FALSE @@ -76,7 +78,7 @@ RETURN_TYPE(/datum/dmm_context) var/datum/dmm_context/context = new context.map_context = src - context.map_mangling_id = mangling_id + context.mangling_id = mangling_id context.auto_marker_config = auto_marker_config return context diff --git a/code/modules/mapping/map_system/map_level.dm b/code/modules/mapping/map_system/map_level.dm index 29015db3ec00..bb8a258ab92c 100644 --- a/code/modules/mapping/map_system/map_level.dm +++ b/code/modules/mapping/map_system/map_level.dm @@ -164,6 +164,12 @@ /// * virtual_z = -1 is the subtracted ceiling height of virtual_z = -1 var/tmp/virtual_elevation = 0 + //* Injections *// + /** + * Injections to push into the `dmm_context` by default. + */ + var/list/datum/map_injection/injections = list() + //* Persistence *// /// loaded persistence metadata, if any var/tmp/datum/map_level_persistence/persistence diff --git a/code/modules/shuttles/shuttle/shuttle_template.dm b/code/modules/shuttles/shuttle/shuttle_template.dm index 54f8fab19836..84304f7417ec 100644 --- a/code/modules/shuttles/shuttle/shuttle_template.dm +++ b/code/modules/shuttles/shuttle/shuttle_template.dm @@ -91,7 +91,7 @@ // create context var/datum/map_context/map_context = new - map_context.map_mangling_id = generate_mangling_id() + map_context.mangling_id = generate_mangling_id() for(var/datum/map_injection/injection as anything in map_injections) map_context.register_injection(injection) diff --git a/maps/submaps/jigsaw/tomb_1/tomb.dm b/maps/submaps/jigsaw/tomb_1/tomb.dm new file mode 100644 index 000000000000..b518a698f5f6 --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb.dm @@ -0,0 +1,42 @@ +/datum/jigsaw_template/tomb/entrance //Designated Entrance Piece + name = "Tomb Entrance" + path = "maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm" + +/datum/jigsaw_template/tomb/hall_straight //Long Straight Hall + name = "Tomb Straight Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm" + +/datum/jigsaw_template/tomb/hall_curved //90 Turn Hallway + name = "Tomb Curved Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_hall_curved.dmm" + +/datum/jigsaw_template/tomb/tjunction //T-Junction + name = "Tomb T-Junction" + path = "maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm" + +/datum/jigsaw_template/tomb/4way_square //4 Way Junction + name = "Tomb 4-way Square" + path = "maps/submaps/jigsaw/tomb_1/tomb_4way_square.dmm" + +/datum/jigsaw_template/tomb/nonconvex //S shaped hall with 2 non-convex 2 convex exits + name = "Tomb Nonconvex Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm" + +/datum/jigsaw_template/tomb/deadend //low budget dead end hall + name = "Tomb Collapsed Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_deadend.dmm" + convex = FALSE + +/datum/jigsaw_template/tomb/burialchamber //End Piece + name = "Tomb Burial Chamber" + path = "maps/submaps/jigsaw/tomb_1/tomb_burialchamber.dmm" + +/datum/jigsaw_template/tomb/throneroom //End Piece + name = "Tomb Throne Room" + path = "maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm" + +/datum/jigsaw_template/tomb/poolroom //End Piece + name = "Tomb Pool Room" + path = "maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm" + +#warn maps diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm b/maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm new file mode 100644 index 000000000000..ebe3700179ca --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm @@ -0,0 +1,287 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"e" = ( +/turf/simulated/wall/sandstone, +/area/template_noop) +"k" = ( +/turf/simulated/wall/sandstone{ + can_open = 1 + }, +/area/submap/one_single_area) +"B" = ( +/obj/random/multiple/underdark/treasure, +/obj/structure/table/marble, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"C" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"G" = ( +/turf/simulated/wall/sandstonediamond, +/area/submap/one_single_area) +"I" = ( +/turf/template_noop, +/area/template_noop) +"K" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +I +I +I +I +I +K +a +C +a +K +I +I +I +I +I +"} +(2,1,1) = {" +I +K +K +K +K +K +a +a +a +K +K +K +K +K +I +"} +(3,1,1) = {" +I +K +a +a +a +a +a +a +a +a +a +a +a +K +I +"} +(4,1,1) = {" +I +K +a +a +a +a +a +a +a +a +a +a +a +K +I +"} +(5,1,1) = {" +I +K +a +a +K +K +K +K +K +K +K +a +a +K +I +"} +(6,1,1) = {" +K +K +a +a +K +G +G +G +G +G +K +a +a +K +K +"} +(7,1,1) = {" +a +a +a +a +K +G +C +a +a +G +G +a +a +a +a +"} +(8,1,1) = {" +C +a +a +a +K +G +B +a +a +a +k +a +a +a +C +"} +(9,1,1) = {" +a +a +a +a +K +G +C +a +a +G +G +a +a +a +a +"} +(10,1,1) = {" +K +K +a +a +K +G +G +G +G +G +K +a +a +K +K +"} +(11,1,1) = {" +I +K +a +a +K +K +K +K +K +K +K +a +a +K +I +"} +(12,1,1) = {" +I +K +a +a +a +a +a +a +a +a +a +a +a +K +I +"} +(13,1,1) = {" +I +K +a +a +a +a +a +a +a +a +a +a +a +K +I +"} +(14,1,1) = {" +I +K +K +K +K +K +a +a +a +K +K +K +K +K +I +"} +(15,1,1) = {" +I +I +I +I +I +K +a +C +a +e +I +I +I +I +I +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm b/maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm new file mode 100644 index 000000000000..8fc702988431 --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm @@ -0,0 +1,294 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"n" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"r" = ( +/turf/simulated/wall/sandstone, +/area/template_noop) +"w" = ( +/obj/structure/table/bench/sandstone, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"B" = ( +/obj/structure/table/sandstone, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"I" = ( +/obj/structure/table/sandstone, +/obj/structure/closet/coffin/comfy, +/obj/item/bone/ribs, +/obj/item/bone/leg, +/obj/item/bone/leg, +/obj/item/bone/arm, +/obj/item/bone/arm, +/obj/item/bone/skull, +/obj/item/clothing/under/mummy, +/obj/item/clothing/mask/gas/mummy, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"U" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"Z" = ( +/turf/simulated/wall/sandstonediamond, +/area/submap/one_single_area) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +n +n +n +n +n +n +n +n +n +a +a +"} +(3,1,1) = {" +a +a +a +n +n +B +I +B +n +B +I +B +n +n +a +"} +(4,1,1) = {" +a +a +n +n +U +U +U +U +U +U +U +U +B +n +a +"} +(5,1,1) = {" +a +n +n +U +U +U +U +U +U +U +U +U +I +n +a +"} +(6,1,1) = {" +n +n +U +U +Z +Z +Z +U +B +Z +B +U +Z +n +n +"} +(7,1,1) = {" +n +I +U +U +Z +B +w +U +U +U +U +U +U +U +U +"} +(8,1,1) = {" +n +B +U +U +Z +I +w +U +U +U +U +U +U +U +U +"} +(9,1,1) = {" +n +I +U +U +Z +B +w +U +U +U +U +U +U +U +U +"} +(10,1,1) = {" +n +n +U +U +Z +Z +Z +U +B +Z +B +U +Z +n +n +"} +(11,1,1) = {" +a +n +n +U +U +U +U +U +U +U +U +U +I +n +a +"} +(12,1,1) = {" +a +a +n +n +U +U +U +U +U +U +U +U +B +n +a +"} +(13,1,1) = {" +a +a +a +n +n +B +I +B +n +B +I +B +n +n +a +"} +(14,1,1) = {" +a +a +a +a +n +n +n +n +n +n +n +n +r +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm b/maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm new file mode 100644 index 000000000000..dedd2197b32a --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm @@ -0,0 +1,180 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/wall/solidrock, +/area/submap/one_single_area) +"k" = ( +/obj/structure/boulder, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"r" = ( +/turf/simulated/mineral/ignore_cavegen, +/area/submap/one_single_area) +"L" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"O" = ( +/turf/template_noop, +/area/template_noop) +"Q" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"U" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +r +r +r +r +r +r +r +O +O +O +O +O +"} +(2,1,1) = {" +r +a +a +a +a +a +r +O +O +O +O +O +"} +(3,1,1) = {" +r +a +r +r +r +r +r +O +O +O +O +O +"} +(4,1,1) = {" +r +a +r +r +r +L +L +L +L +L +L +L +"} +(5,1,1) = {" +r +a +r +k +Q +Q +Q +Q +Q +Q +Q +Q +"} +(6,1,1) = {" +r +a +r +r +k +U +Q +Q +Q +U +Q +Q +"} +(7,1,1) = {" +r +a +r +r +k +k +Q +Q +Q +Q +Q +Q +"} +(8,1,1) = {" +r +a +r +r +r +L +L +L +L +L +L +L +"} +(9,1,1) = {" +r +a +r +r +r +r +r +O +O +O +O +O +"} +(10,1,1) = {" +r +a +a +a +a +a +r +O +O +O +O +O +"} +(11,1,1) = {" +r +r +r +r +r +r +r +O +O +O +O +O +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm b/maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm new file mode 100644 index 000000000000..b5f94b8e664a --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm @@ -0,0 +1,136 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"t" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"I" = ( +/turf/template_noop, +/area/template_noop) +"O" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +I +I +I +t +t +t +t +t +t +t +"} +(2,1,1) = {" +I +I +t +t +a +a +a +a +a +a +"} +(3,1,1) = {" +I +t +t +a +a +O +a +a +a +O +"} +(4,1,1) = {" +t +t +a +a +a +a +a +a +a +a +"} +(5,1,1) = {" +t +a +a +a +a +a +t +t +t +t +"} +(6,1,1) = {" +t +a +O +a +a +t +t +I +I +I +"} +(7,1,1) = {" +t +a +a +a +t +t +I +I +I +I +"} +(8,1,1) = {" +t +a +a +a +t +I +I +I +I +I +"} +(9,1,1) = {" +t +a +a +a +t +I +I +I +I +I +"} +(10,1,1) = {" +t +a +O +a +t +I +I +I +I +I +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm b/maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm new file mode 100644 index 000000000000..7ede20f4baed --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm @@ -0,0 +1,331 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/obj/structure/boulder, +/turf/simulated/mineral/floor/ignore_cavegen/inherit_area, +/area/submap/one_single_area) +"h" = ( +/obj/item/pickaxe, +/obj/item/flashlight/lantern, +/turf/simulated/mineral/floor/ignore_cavegen/inherit_area, +/area/submap/one_single_area) +"l" = ( +/obj/random/junk, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"n" = ( +/obj/random/alcohol, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"o" = ( +/turf/simulated/mineral/ignore_cavegen, +/area/submap/one_single_area) +"p" = ( +/obj/structure/bed, +/obj/item/bedsheet, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"r" = ( +/obj/structure/bed, +/obj/spawner/corpse/pirate/melee, +/obj/effect/debris/cleanable/blood, +/obj/item/bedsheet, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"v" = ( +/obj/structure/statue/marble/male, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"E" = ( +/obj/structure/table/marble, +/obj/item/clothing/ears/laurel/silver, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"F" = ( +/turf/simulated/mineral/ignore_cavegen, +/area/template_noop) +"G" = ( +/obj/structure/table/marble, +/obj/item/clothing/ears/earring/dangle/silver, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"I" = ( +/turf/simulated/wall/solidrock, +/area/submap/one_single_area) +"J" = ( +/turf/simulated/mineral/floor/ignore_cavegen/inherit_area, +/area/submap/one_single_area) +"O" = ( +/turf/template_noop, +/area/template_noop) +"P" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"Q" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"V" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"Y" = ( +/obj/structure/table/marble, +/obj/item/bone/skull, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +F +F +F +F +F +F +F +F +F +F +F +F +O +O +O +"} +(2,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +F +F +O +O +"} +(3,1,1) = {" +I +I +I +I +I +I +I +I +I +I +o +F +F +F +O +"} +(4,1,1) = {" +o +Q +Q +Q +Q +Q +Q +Q +Q +I +o +F +F +F +O +"} +(5,1,1) = {" +o +Q +r +n +p +P +l +E +Q +I +o +o +o +o +O +"} +(6,1,1) = {" +Q +Q +P +l +P +P +P +v +Q +Q +Q +o +o +a +O +"} +(7,1,1) = {" +P +P +P +P +V +P +P +P +P +P +P +a +o +J +O +"} +(8,1,1) = {" +P +P +P +P +Y +P +P +P +P +P +P +J +J +J +O +"} +(9,1,1) = {" +P +P +P +P +V +P +P +P +l +P +P +J +o +h +O +"} +(10,1,1) = {" +Q +Q +P +P +P +l +P +v +Q +Q +Q +o +o +o +O +"} +(11,1,1) = {" +o +Q +P +P +l +P +l +G +Q +I +o +o +o +o +O +"} +(12,1,1) = {" +o +Q +Q +Q +Q +Q +Q +Q +Q +I +o +F +F +F +O +"} +(13,1,1) = {" +I +I +I +I +I +I +I +I +I +I +o +F +F +F +O +"} +(14,1,1) = {" +o +o +o +o +o +o +o +o +o +o +o +F +F +O +O +"} +(15,1,1) = {" +F +F +F +F +F +F +F +F +F +F +F +F +O +O +O +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm b/maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm new file mode 100644 index 000000000000..5726497553d0 --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm @@ -0,0 +1,139 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"o" = ( +/obj/structure/statue/marble/male, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"E" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"G" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"L" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +a +a +G +G +G +a +G +G +G +a +G +G +G +a +a +"} +(2,1,1) = {" +G +G +G +o +G +G +G +o +G +G +G +o +G +G +G +"} +(3,1,1) = {" +E +E +E +E +E +E +E +E +E +E +E +E +E +E +E +"} +(4,1,1) = {" +E +E +E +L +E +E +E +L +E +E +E +L +E +E +E +"} +(5,1,1) = {" +E +E +E +E +E +E +E +E +E +E +E +E +E +E +E +"} +(6,1,1) = {" +G +G +G +o +G +G +G +o +G +G +G +o +G +G +G +"} +(7,1,1) = {" +a +a +G +G +G +a +G +G +G +a +G +G +G +a +a +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm b/maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm new file mode 100644 index 000000000000..e8640ffd297e --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm @@ -0,0 +1,271 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"c" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"g" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"i" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +i +i +i +i +i +i +i +i +i +a +a +a +a +a +a +"} +(2,1,1) = {" +i +c +c +c +c +c +c +c +i +a +a +a +a +a +a +"} +(3,1,1) = {" +i +c +g +c +c +c +g +c +i +a +a +a +a +a +a +"} +(4,1,1) = {" +i +c +c +c +c +c +c +c +i +a +a +a +a +a +a +"} +(5,1,1) = {" +i +c +c +c +i +c +c +c +i +a +a +a +a +a +a +"} +(6,1,1) = {" +i +c +c +c +i +c +c +c +i +i +i +c +c +c +i +"} +(7,1,1) = {" +c +c +c +c +i +c +c +c +c +c +i +c +c +c +c +"} +(8,1,1) = {" +c +c +g +c +i +c +g +c +g +c +i +c +g +c +c +"} +(9,1,1) = {" +c +c +c +c +i +c +c +c +c +c +i +c +c +c +c +"} +(10,1,1) = {" +i +c +c +c +i +i +i +c +c +c +i +c +c +c +i +"} +(11,1,1) = {" +a +a +a +a +a +a +i +c +c +c +i +c +c +c +i +"} +(12,1,1) = {" +a +a +a +a +a +a +i +c +c +c +c +c +c +c +i +"} +(13,1,1) = {" +a +a +a +a +a +a +i +c +g +c +c +c +g +c +i +"} +(14,1,1) = {" +a +a +a +a +a +a +i +c +c +c +c +c +c +c +i +"} +(15,1,1) = {" +a +a +a +a +a +a +i +i +i +i +i +i +i +i +i +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm new file mode 100644 index 000000000000..ef8a15ac78bd --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm @@ -0,0 +1,290 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"m" = ( +/turf/simulated/floor/water/deep/indoors, +/area/submap/one_single_area) +"u" = ( +/obj/structure/stairs/middle{ + dir = 4 + }, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"B" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"C" = ( +/obj/structure/table/sandstone, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"E" = ( +/obj/structure/stairs/middle{ + dir = 8 + }, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"H" = ( +/obj/structure/statue/marble/female, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"I" = ( +/turf/template_noop, +/area/template_noop) + +(1,1,1) = {" +I +I +I +I +I +I +I +I +I +I +I +I +I +I +I +"} +(2,1,1) = {" +I +a +a +a +a +a +a +a +a +a +a +a +a +a +I +"} +(3,1,1) = {" +I +a +H +C +C +C +H +C +H +C +C +C +H +a +I +"} +(4,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +C +a +I +"} +(5,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +C +a +I +"} +(6,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +H +a +a +"} +(7,1,1) = {" +I +a +H +m +m +m +H +u +u +u +u +u +B +B +B +"} +(8,1,1) = {" +I +a +C +m +m +m +C +B +B +B +B +B +B +B +B +"} +(9,1,1) = {" +I +a +H +m +m +m +H +E +E +E +E +E +B +B +B +"} +(10,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +H +a +a +"} +(11,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +C +a +I +"} +(12,1,1) = {" +I +a +C +m +m +m +m +m +m +m +m +m +C +a +I +"} +(13,1,1) = {" +I +a +H +C +C +C +H +C +H +C +C +C +H +a +I +"} +(14,1,1) = {" +I +a +a +a +a +a +a +a +a +a +a +a +a +a +I +"} +(15,1,1) = {" +I +I +I +I +I +I +I +I +I +I +I +I +I +I +I +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm new file mode 100644 index 000000000000..237578317674 --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm @@ -0,0 +1,300 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"f" = ( +/obj/structure/table/bench/sandstone, +/obj/item/clothing/head/pharaoh, +/obj/item/clothing/suit/pharaoh, +/turf/simulated/floor/gold, +/area/submap/one_single_area) +"h" = ( +/turf/simulated/floor/silver, +/area/submap/one_single_area) +"k" = ( +/turf/simulated/wall/sandstonediamond, +/area/submap/one_single_area) +"m" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"o" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"p" = ( +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/silver, +/area/submap/one_single_area) +"C" = ( +/obj/machinery/artifact, +/obj/structure/table/sandstone, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"H" = ( +/obj/structure/table/sandstone, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"K" = ( +/turf/simulated/floor/gold, +/area/submap/one_single_area) +"V" = ( +/obj/structure/table/gold, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/gold, +/area/submap/one_single_area) + +(1,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(2,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(3,1,1) = {" +m +m +m +m +m +m +m +m +m +m +m +m +m +a +a +"} +(4,1,1) = {" +m +H +o +o +o +o +o +o +o +o +o +o +m +a +a +"} +(5,1,1) = {" +m +o +o +o +o +o +k +H +k +H +k +o +m +a +a +"} +(6,1,1) = {" +m +o +k +k +k +K +K +K +h +p +h +K +m +m +m +"} +(7,1,1) = {" +m +o +H +k +V +h +h +h +K +h +h +K +h +h +h +"} +(8,1,1) = {" +m +o +C +k +f +h +h +h +h +K +K +K +K +K +K +"} +(9,1,1) = {" +m +o +H +k +V +h +h +h +K +h +h +K +h +h +h +"} +(10,1,1) = {" +m +o +k +k +k +K +K +K +h +h +h +K +m +m +m +"} +(11,1,1) = {" +m +o +o +o +o +o +k +H +k +H +k +o +m +a +a +"} +(12,1,1) = {" +m +H +o +o +o +o +o +o +o +o +o +o +m +a +a +"} +(13,1,1) = {" +m +m +m +m +m +m +m +m +m +m +m +m +m +a +a +"} +(14,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} +(15,1,1) = {" +a +a +a +a +a +a +a +a +a +a +a +a +a +a +a +"} diff --git a/maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm b/maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm new file mode 100644 index 000000000000..c6f9fcb60c4c --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm @@ -0,0 +1,196 @@ +//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"a" = ( +/turf/template_noop, +/area/template_noop) +"r" = ( +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) +"A" = ( +/turf/simulated/wall/sandstone, +/area/submap/one_single_area) +"J" = ( +/obj/structure/table/marble, +/obj/item/flame/candle/candelabra/everburn, +/turf/simulated/floor/sandstone, +/area/submap/one_single_area) + +(1,1,1) = {" +A +r +J +r +A +a +a +a +a +a +"} +(2,1,1) = {" +A +r +r +r +A +a +a +a +a +a +"} +(3,1,1) = {" +A +r +r +r +A +a +a +a +a +a +"} +(4,1,1) = {" +A +r +J +r +A +A +a +a +a +a +"} +(5,1,1) = {" +A +r +r +r +r +A +A +a +a +a +"} +(6,1,1) = {" +A +r +r +r +r +r +A +A +A +A +"} +(7,1,1) = {" +A +A +r +r +r +r +r +r +r +r +"} +(8,1,1) = {" +a +A +A +r +r +J +r +r +r +J +"} +(9,1,1) = {" +A +A +r +r +r +r +r +r +r +r +"} +(10,1,1) = {" +A +r +r +r +r +r +A +A +A +A +"} +(11,1,1) = {" +A +r +J +r +r +A +A +a +a +a +"} +(12,1,1) = {" +A +r +r +r +A +A +a +a +a +a +"} +(13,1,1) = {" +A +r +r +r +A +a +a +a +a +a +"} +(14,1,1) = {" +A +r +r +r +A +a +a +a +a +a +"} +(15,1,1) = {" +A +r +J +r +A +a +a +a +a +a +"} From ea100dc44c15104e3e804e26c4087ea402b8dd84 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 17 Jun 2026 02:50:07 -0700 Subject: [PATCH 15/44] there --- maps/submaps/jigsaw/tomb_1/tomb.dm | 42 ------------------- maps/submaps/jigsaw/tomb_1/tomb_1.dm | 42 +++++++++++++++++++ ...4way_square.dmm => tomb_1_4way_square.dmm} | 0 ...alchamber.dmm => tomb_1_burialchamber.dmm} | 0 .../{tomb1_deadend.dmm => tomb_1_deadend.dmm} | 0 ...{tomb_entrance.dmm => tomb_1_entrance.dmm} | 0 ...hall_curved.dmm => tomb_1_hall_curved.dmm} | 0 ..._straight.dmm => tomb_1_hall_straight.dmm} | 0 ...omb_nonconvex.dmm => tomb_1_nonconvex.dmm} | 0 ...{tomb_poolroom.dmm => tomb_1_poolroom.dmm} | 0 ...b_throneroom.dmm => tomb_1_throneroom.dmm} | 0 ...omb_tjunction.dmm => tomb_1_tjunction.dmm} | 0 12 files changed, 42 insertions(+), 42 deletions(-) delete mode 100644 maps/submaps/jigsaw/tomb_1/tomb.dm create mode 100644 maps/submaps/jigsaw/tomb_1/tomb_1.dm rename maps/submaps/jigsaw/tomb_1/{tomb1_4way_square.dmm => tomb_1_4way_square.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb1_burialchamber.dmm => tomb_1_burialchamber.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb1_deadend.dmm => tomb_1_deadend.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_entrance.dmm => tomb_1_entrance.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb1_hall_curved.dmm => tomb_1_hall_curved.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_hall_straight.dmm => tomb_1_hall_straight.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_nonconvex.dmm => tomb_1_nonconvex.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_poolroom.dmm => tomb_1_poolroom.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_throneroom.dmm => tomb_1_throneroom.dmm} (100%) rename maps/submaps/jigsaw/tomb_1/{tomb_tjunction.dmm => tomb_1_tjunction.dmm} (100%) diff --git a/maps/submaps/jigsaw/tomb_1/tomb.dm b/maps/submaps/jigsaw/tomb_1/tomb.dm deleted file mode 100644 index b518a698f5f6..000000000000 --- a/maps/submaps/jigsaw/tomb_1/tomb.dm +++ /dev/null @@ -1,42 +0,0 @@ -/datum/jigsaw_template/tomb/entrance //Designated Entrance Piece - name = "Tomb Entrance" - path = "maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm" - -/datum/jigsaw_template/tomb/hall_straight //Long Straight Hall - name = "Tomb Straight Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm" - -/datum/jigsaw_template/tomb/hall_curved //90 Turn Hallway - name = "Tomb Curved Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_hall_curved.dmm" - -/datum/jigsaw_template/tomb/tjunction //T-Junction - name = "Tomb T-Junction" - path = "maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm" - -/datum/jigsaw_template/tomb/4way_square //4 Way Junction - name = "Tomb 4-way Square" - path = "maps/submaps/jigsaw/tomb_1/tomb_4way_square.dmm" - -/datum/jigsaw_template/tomb/nonconvex //S shaped hall with 2 non-convex 2 convex exits - name = "Tomb Nonconvex Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm" - -/datum/jigsaw_template/tomb/deadend //low budget dead end hall - name = "Tomb Collapsed Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_deadend.dmm" - convex = FALSE - -/datum/jigsaw_template/tomb/burialchamber //End Piece - name = "Tomb Burial Chamber" - path = "maps/submaps/jigsaw/tomb_1/tomb_burialchamber.dmm" - -/datum/jigsaw_template/tomb/throneroom //End Piece - name = "Tomb Throne Room" - path = "maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm" - -/datum/jigsaw_template/tomb/poolroom //End Piece - name = "Tomb Pool Room" - path = "maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm" - -#warn maps diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1.dm b/maps/submaps/jigsaw/tomb_1/tomb_1.dm new file mode 100644 index 000000000000..5c290163bdbe --- /dev/null +++ b/maps/submaps/jigsaw/tomb_1/tomb_1.dm @@ -0,0 +1,42 @@ +/datum/jigsaw_template/tomb_1/entrance //Designated Entrance Piece + name = "Tomb Entrance" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm" + +/datum/jigsaw_template/tomb_1/hall_straight //Long Straight Hall + name = "Tomb Straight Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm" + +/datum/jigsaw_template/tomb_1/hall_curved //90 Turn Hallway + name = "Tomb Curved Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm" + +/datum/jigsaw_template/tomb_1/tjunction //T-Junction + name = "Tomb T-Junction" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm" + +/datum/jigsaw_template/tomb_1/4way_square //4 Way Junction + name = "Tomb 4-way Square" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm" + +/datum/jigsaw_template/tomb_1/nonconvex //S shaped hall with 2 non-convex 2 convex exits + name = "Tomb Inwards Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm" + +/datum/jigsaw_template/tomb_1/deadend //low budget dead end hall + name = "Tomb Collapsed Hall" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm" + convex = FALSE + +/datum/jigsaw_template/tomb_1/burialchamber //End Piece + name = "Tomb Burial Chamber" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm" + +/datum/jigsaw_template/tomb_1/throneroom //End Piece + name = "Tomb Throne Room" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm" + +/datum/jigsaw_template/tomb_1/poolroom //End Piece + name = "Tomb Pool Room" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm" + +#warn maps diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb1_4way_square.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb1_burialchamber.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb1_deadend.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_entrance.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb1_hall_curved.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_hall_straight.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_nonconvex.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_poolroom.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_throneroom.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm diff --git a/maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm similarity index 100% rename from maps/submaps/jigsaw/tomb_1/tomb_tjunction.dmm rename to maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm From 6d3edbf03092bb36eab8739eb1c8a725012c0d1a Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 17 Jun 2026 22:14:33 -0700 Subject: [PATCH 16/44] update --- .../subsystem/mapping/mapping-levels.dm | 2 +- .../subsystem/mapping/mapping-maps.dm | 6 ++-- code/game/machinery/computer/misc/bioscan.dm | 2 +- code/modules/jigsaw/jigsaw_connector.dm | 1 + code/modules/jigsaw/jigsaw_spawner.dm | 4 +-- code/modules/jigsaw/jigsaw_template.dm | 5 ++++ .../modules/mapping/map_helpers/map_helper.dm | 8 ++--- code/modules/mapping/map_system/map-load.dm | 8 ----- maps/submaps/jigsaw/tomb_1/tomb_1.dm | 30 ++++++++++++------- 9 files changed, 36 insertions(+), 30 deletions(-) diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index c8d96f4055bc..713ce7c0f540 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -105,7 +105,7 @@ * allocates a raw map level using the given datum type. * * * This does not perform **any** generation or processing on the level, including replacing baseturfs! - * * This **will** call the level's on_loaded_immediate and on_loaded_finalize. + * * This **will** call the level's context pre/post init hooks. * * You usually want load_level() instead, this is instead the equivalent of just incrementing world.maxz. * * Any level passed in or returned from this belongs to SSmapping; you are not allowed to keep direct references to it * in other datastructures. diff --git a/code/controllers/subsystem/mapping/mapping-maps.dm b/code/controllers/subsystem/mapping/mapping-maps.dm index 0681de0641b3..7de592c136c5 100644 --- a/code/controllers/subsystem/mapping/mapping-maps.dm +++ b/code/controllers/subsystem/mapping/mapping-maps.dm @@ -119,10 +119,10 @@ continue loaded_levels += level - emit_info_log("load - finished loading '[instance.id]' with [length(loading_map.levels)] levels") - - loading_map.on_loaded_immediate() loaded_maps += loading_map + context.execute_pre_init() + + emit_info_log("load - finished loading '[instance.id]' with [length(loading_map.levels)] levels") //! LEGACY for(var/path in loading_map.legacy_assert_shuttle_datums) diff --git a/code/game/machinery/computer/misc/bioscan.dm b/code/game/machinery/computer/misc/bioscan.dm index 3b5818a1aea1..c3f099f42c35 100644 --- a/code/game/machinery/computer/misc/bioscan.dm +++ b/code/game/machinery/computer/misc/bioscan.dm @@ -17,7 +17,7 @@ /obj/machinery/computer/bioscan/preloading_from_mapload(datum/dmm_context/context) . = ..() if(network_key_obfuscated && !network_key) - network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.map_mangling_id, "bioscan") + network_key = SSmapping.obfuscated_round_local_id(network_key_obfuscated, context.mangling_id, "bioscan") /obj/machinery/computer/bioscan/ui_interact(mob/user, datum/tgui/ui, datum/tgui/parent_ui) ui = SStgui.try_update_ui(user, src, ui) diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm index 5789aefcdd58..b1a3b8d6af28 100644 --- a/code/modules/jigsaw/jigsaw_connector.dm +++ b/code/modules/jigsaw/jigsaw_connector.dm @@ -63,6 +63,7 @@ GLOBAL_LIST(jigsaw_connectors_pending) return ..() /obj/jigsaw_connector/Initialize() + SHOULD_CALL_PARENT(FALSE) return INITIALIZE_HINT_QDEL /obj/jigsaw_connector/Destroy() diff --git a/code/modules/jigsaw/jigsaw_spawner.dm b/code/modules/jigsaw/jigsaw_spawner.dm index bc2246baac2d..1388d4037ccf 100644 --- a/code/modules/jigsaw/jigsaw_spawner.dm +++ b/code/modules/jigsaw/jigsaw_spawner.dm @@ -23,9 +23,9 @@ /obj/map_helper/jigsaw_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) ..() - generate(context) + generate() -/obj/map_helper/jigsaw_spawner/proc/generate(datum/dmm_context/context) +/obj/map_helper/jigsaw_spawner/proc/generate() var/datum/jigsaw_generator/generator = new generator.auto_marker_config = auto_marker_config diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index a361ccb10c37..a8f1e2930980 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -42,6 +42,11 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// path on disk var/path + /// display name + /// * defaults to name + /// * appended to the jigsaw generator's name for area names + var/display_name + /// parsed map if held var/datum/dmm_parsed/parsed diff --git a/code/modules/mapping/map_helpers/map_helper.dm b/code/modules/mapping/map_helpers/map_helper.dm index 5dfaeb469afa..45df7d38dfee 100644 --- a/code/modules/mapping/map_helpers/map_helper.dm +++ b/code/modules/mapping/map_helpers/map_helper.dm @@ -64,11 +64,9 @@ context.map_context.register_pre_init_callback(CALLBACK(src, PROC_REF(map_initializations), context)) /** - * called if we're on SSmapping's map_initializations_hooked list. - * called before level's on_loaded_immediate - * called before group loading done by /datum/map - * called before atom init - * called before level on_loaded_finalize + * Called if we're on SSmapping's map_initializations_hooked list. + * * Called before atom init always. + * * Generally called batched together with either the same .dmm or the same zlevel / map. */ /obj/map_helper/proc/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) return diff --git a/code/modules/mapping/map_system/map-load.dm b/code/modules/mapping/map_system/map-load.dm index 0f70e293d2b7..e863e2b876a1 100644 --- a/code/modules/mapping/map_system/map-load.dm +++ b/code/modules/mapping/map_system/map-load.dm @@ -135,14 +135,6 @@ if(overmap_initializer) SSovermaps.initialize_entity(overmap_initializer, src) -/** - * anything to do after loading with any dependencies - * - * called after level on_loaded_finalize's - */ -/datum/map/proc/on_loaded_finalize() - SHOULD_CALL_PARENT(TRUE) - //* Unloading *// /** diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1.dm b/maps/submaps/jigsaw/tomb_1/tomb_1.dm index 5c290163bdbe..f82a7cf1e84e 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1.dm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1.dm @@ -1,42 +1,52 @@ /datum/jigsaw_template/tomb_1/entrance //Designated Entrance Piece - name = "Tomb Entrance" + name = "Tomb 1 - Entrance" + display_name = "Entrance" path = "maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm" /datum/jigsaw_template/tomb_1/hall_straight //Long Straight Hall - name = "Tomb Straight Hall" + name = "Tomb 1 - Straight Hall" + display_name = "Straight Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm" /datum/jigsaw_template/tomb_1/hall_curved //90 Turn Hallway - name = "Tomb Curved Hall" + name = "Tomb 1 - Curved Hall" + display_name = "Curved Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm" /datum/jigsaw_template/tomb_1/tjunction //T-Junction - name = "Tomb T-Junction" + name = "Tomb 1 - T-Junction" + display_name = "T-Junction" path = "maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm" /datum/jigsaw_template/tomb_1/4way_square //4 Way Junction - name = "Tomb 4-way Square" + name = "Tomb 1 - 4-way Square" + display_name = "4-way Square" path = "maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm" /datum/jigsaw_template/tomb_1/nonconvex //S shaped hall with 2 non-convex 2 convex exits - name = "Tomb Inwards Hall" + name = "Tomb 1 - Inwards Hall" + display_name = "Inwards Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm" /datum/jigsaw_template/tomb_1/deadend //low budget dead end hall - name = "Tomb Collapsed Hall" + name = "Tomb 1 - Collapsed Hall" + display_name = "Collapsed Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm" convex = FALSE /datum/jigsaw_template/tomb_1/burialchamber //End Piece - name = "Tomb Burial Chamber" + name = "Tomb 1 - Burial Chamber" + display_name = "Burial Chamber" path = "maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm" /datum/jigsaw_template/tomb_1/throneroom //End Piece - name = "Tomb Throne Room" + name = "Tomb 1 - Throne Room" + display_name = "Throne Room" path = "maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm" /datum/jigsaw_template/tomb_1/poolroom //End Piece - name = "Tomb Pool Room" + name = "Tomb 1 - Pool Room" + display_name = "Pool Room" path = "maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm" #warn maps From 0fa647e47044c48057bdfad56a61c4557ea8d832 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 18 Jun 2026 08:49:38 -0700 Subject: [PATCH 17/44] That --- .../mapping/map_helpers/template_loader.dm | 2 +- .../mapping/map_system/map_template.dm | 96 ++++++++++-------- icons/modules/jigsaw/jigsaw_connector_3x3.dmi | Bin 0 -> 1985 bytes maps/submaps/jigsaw/tomb_1/tomb_1.dm | 40 ++++---- 4 files changed, 73 insertions(+), 65 deletions(-) create mode 100644 icons/modules/jigsaw/jigsaw_connector_3x3.dmi diff --git a/code/modules/mapping/map_helpers/template_loader.dm b/code/modules/mapping/map_helpers/template_loader.dm index 1192f53bd010..b06d7a86a221 100644 --- a/code/modules/mapping/map_helpers/template_loader.dm +++ b/code/modules/mapping/map_helpers/template_loader.dm @@ -90,5 +90,5 @@ */ var/load_template -/obj/map_helper/template_loader/corner_aligned/resolve_template() +/obj/map_helper/template_loader/corner_aligned/static_load/resolve_template() #warn impl diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index abf9eb2b0f73..0736799f5454 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -123,6 +123,7 @@ /datum/map_template/proc/unload_cache() parsed = null +/// deprecated /datum/map_template/proc/load_new_z(centered = FALSE, orientation = SOUTH, list/traits = src.level_traits, list/attributes = src.level_get_attributes) . = FALSE @@ -151,48 +152,63 @@ SSmapping.subsystem_log("Loaded template [src] ([type]) on z-level [level.z_index]") - on_z_load(level.z_index) - return TRUE /** - * loads a map template + * Gets lower left tile from a centered position. + * @return list(x, y, z) + */ +/datum/map_template/proc/compute_lower_left_coords_from_centered_turf(turf/centered, orientation) + if(!width || !height) + CRASH("bounds not preloaded") + + var/ll_x = centered.x + var/ll_y = centered.y + var/ll_z = centered.z + var/sideways = orientation & (EAST|WEST) + var/real_width = sideways? height : width + var/real_height = sideways? width : height + + ll_x -= round(real_width / 2) + ll_y -= round(real_height / 2) + + return list(ll_x, ll_y, ll_z) + +/** + * Loads a map template and executes postload for its context. * * @params - * * where - turf. center or lower left, depending on centered param. - * * centered - is 'where' the center, or lower left? + * * lower_left - lower left corner of where to load the template * * orientation - the orientation to load in. default is SOUTH. - * * deferred_callbacks - if specified, generation callbacks are deferred and added to this list, instead of fired immediately. - * * context - dmm_context to use - * * defer_context - defer context initializations/injections + * * context - dmm_context to use; one will be created if not provided. + * * annihilate_bounds - (deprecated) wipe out bounds * - * @return null if failed, or /datum/dmm_context context + * @return loaded dmm_context, or null if failed */ -#warn audit calls for callbacks? -/datum/map_template/proc/load(turf/where, centered = FALSE, orientation = SOUTH, list/datum/callback/deferred_callbacks, datum/dmm_context/context, defer_context) - if(recursive_load_level >= 10) - CRASH("trying to recursively load more than 10 templates deep. this probably \ - means you have an infinite loop somewhere in your map template / loader logic.") - - recursive_load_level++ - . = load_impl(where, centered, orientation, deferred_callbacks, context, defer_context) - recursive_load_level-- - -#warn lower left? -/datum/map_template/proc/load_impl(turf/lower_left, orientation, annihilate_bounds, datum/dmm_context/context) +/datum/map_template/proc/load_standalone(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds) + var/datum/dmm_context/context = load_deferred(lower_left, orientation, context, annihilate_bounds) + if(!context) + return - var/ll_x = where.x - var/ll_y = where.y - var/ll_z = where.z - var/sideways = orientation & (EAST|WEST) - var/real_width = sideways? height : width - var/real_height = sideways? width : height + context.execute_post_init() + return context - if(centered) - ll_x -= round(real_width / 2) - ll_y -= round(real_height / 2) +/** + * Loads a map template without executing postload for its context. + * + * @params + * * lower_left - lower left corner of where to load the template + * * orientation - the orientation to load in. default is SOUTH. + * * context - dmm_context to use; one will be created if not provided. + * * annihilate_bounds - (deprecated) wipe out bounds + * + * @return loaded dmm_context, or null if failed + */ +/datum/map_template/proc/load_deferred(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds) + var/datum/dmm_context/context = load_impl(lower_left, orientation, context, annihilate_bounds) + return context - var/turf/real_turf = locate(ll_x, ll_y, ll_z) +/datum/map_template/proc/load_impl(turf/real_turf, orientation, datum/dmm_context/context, annihilate_bounds) SSmapping.subsystem_log("Loading template [src] ([type]) at [COORD(real_turf)] size [width]x[height] with annihilate mode [annihilate]") @@ -205,8 +221,8 @@ // create context if(isnull(context)) context = new - if(isnull(context.map_mangling_id)) - context.map_mangling_id = generate_mangling_id() + if(isnull(context.mangling_id)) + context.mangling_id = generate_mangling_id() context = parsed.load(ll_x, ll_y, ll_z, orientation = orientation, context = context) @@ -217,18 +233,10 @@ ++loaded - var/list/datum/callback/callbacks = list() - on_normal_load(context, callbacks) - if(isnull(deferred_callbacks)) - for(var/datum/callback/cb as anything in callbacks) - cb.Invoke() - else - deferred_callbacks += callbacks - - if(!defer_context) - context.execute_postload() + context.execute_pre_init() - init_bounds(loaded_bounds) + if(!SSatoms.initialized) + init_bounds(loaded_bounds) // todo: inefficient as shit if(SSmapping.initialized) diff --git a/icons/modules/jigsaw/jigsaw_connector_3x3.dmi b/icons/modules/jigsaw/jigsaw_connector_3x3.dmi new file mode 100644 index 0000000000000000000000000000000000000000..765ba0a9eaee55fb932de9f129d08ad6c870183a GIT binary patch literal 1985 zcmc(geN@tC6vrQs6yK)PB(x%&YdU8chK5H4DtsGi7Fo?+MjDkbO_Ew^ra#wOE<8Dx zW<^=cPT4!HL0Sp)CQCtPYS}SGrOb{?MMwmB*$+@o}^j03aZE;nDW6($IBwIc)ajuUxZ(#^R*sX0Uf;p(+AnDJKSrc?mz_3^aDD|erG(|tYhD>|UIzHAOnp5|RX7wLmPXNUC2^z}V$m*&HU zXtWqF;$1fpIk#6gO4jFLx;bgh5whWy(0zgv*<-_NF^(-n^sb!@GTz>>wywC>-xGX){Knvj2A2k!{XjwZ zgEL~q9`0Rrijeq8Urvt$9Tu-ssoWd{g60Tl6~Zv{%58^i!Q;=4J60(@0d&DT76D2; z02DBVL8~Pcp(BvAm(~Day<$40uO)@&2OmvsFG58;xqmdX(xH>J9MQSqsM~BiE}3=J zVmev9SCmria;p|(N6=i>X@OYS39@-J?VKqRT_Ft!zj?k9r;`;_hHKsh%od0myrX^! z(NK=)=Uj@k`19nOwOD|aVBDz{wwFJGY0uOG5L17%cx)Olq-n7+xn^m#rBy>QyxMZPgP7Q+8M?0;EG~VQ zxw&k!)F;$J*XzBdaL%luOoWqrmbHlY$X`Eu)kSE$XSTX0tMURlUx0$FQ~QgaW;ri% zH*P{ok~kRC-kzl{%sdnnd|-`MmzP5ziJFcy`Woev%nVq>ptq{wQUxHOlE+UPPhFIk z+lumIJGpOc4-za0RRsXB90}a#PGNj;6VfmQIC^~hbSq_0Nx%Q|`b^H}@KLUzj492> zGOmn)+d+Y#%USbVI?5$Ybc0+Nq>G0wiUeLA!CBSNbJwuq*o+y%$aW!y?t_LSn#Dw3t5@|vZ?mNz_Bsy~0Z(A0%Q{u|>{g8#u{ zZO0&j+HLJ?Eq1F1zz+?Ny=J{ok1TpR!>=qDEatwd#zt0*t^xCm9k+# z`?ux|Hhp7})op2xtPJ-AB7x$bcu25+Cb}>L!8{+%HIqkt?fH>NN!8LI!{nWt*jeAQ z=qh*fz+OHPDVgDn`eVY@$W&TJmTFnYK%8v^FUdT`)pBHNlpMB z0#usXb9kK~93EJ;(WY2_dQ|C!Re8{Qj2HA~zy2=*e~>X?P%2^O*S>son(HJHE`1=0 zb{oy&x=Mug1pcU9!ALBM$$L0^V7o%L`q)AxOh#&A8*%-WoSYc9vofQd-{oPrS~U&` iiTc_9flX7B#uAJ(6=j=RerLe{WDp;nM7z3#`NKa(nA`^d literal 0 HcmV?d00001 diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1.dm b/maps/submaps/jigsaw/tomb_1/tomb_1.dm index f82a7cf1e84e..0b17d4f83014 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1.dm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1.dm @@ -1,52 +1,52 @@ /datum/jigsaw_template/tomb_1/entrance //Designated Entrance Piece - name = "Tomb 1 - Entrance" + name = "Tomb 1 - Entrance" display_name = "Entrance" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm" /datum/jigsaw_template/tomb_1/hall_straight //Long Straight Hall - name = "Tomb 1 - Straight Hall" + name = "Tomb 1 - Straight Hall" display_name = "Straight Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm" /datum/jigsaw_template/tomb_1/hall_curved //90 Turn Hallway - name = "Tomb 1 - Curved Hall" + name = "Tomb 1 - Curved Hall" display_name = "Curved Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm" /datum/jigsaw_template/tomb_1/tjunction //T-Junction - name = "Tomb 1 - T-Junction" + name = "Tomb 1 - T-Junction" display_name = "T-Junction" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm" /datum/jigsaw_template/tomb_1/4way_square //4 Way Junction - name = "Tomb 1 - 4-way Square" + name = "Tomb 1 - 4-way Square" display_name = "4-way Square" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm" /datum/jigsaw_template/tomb_1/nonconvex //S shaped hall with 2 non-convex 2 convex exits - name = "Tomb 1 - Inwards Hall" + name = "Tomb 1 - Inwards Hall" display_name = "Inwards Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm" /datum/jigsaw_template/tomb_1/deadend //low budget dead end hall - name = "Tomb 1 - Collapsed Hall" + name = "Tomb 1 - Collapsed Hall" display_name = "Collapsed Hall" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm" convex = FALSE /datum/jigsaw_template/tomb_1/burialchamber //End Piece - name = "Tomb 1 - Burial Chamber" + name = "Tomb 1 - Burial Chamber" display_name = "Burial Chamber" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm" /datum/jigsaw_template/tomb_1/throneroom //End Piece - name = "Tomb 1 - Throne Room" + name = "Tomb 1 - Throne Room" display_name = "Throne Room" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm" /datum/jigsaw_template/tomb_1/poolroom //End Piece - name = "Tomb 1 - Pool Room" + name = "Tomb 1 - Pool Room" display_name = "Pool Room" - path = "maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm" + path = "maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm" #warn maps From a52d33b7326f70c2d56bc467236f22529b5daaf7 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Thu, 18 Jun 2026 08:52:25 -0700 Subject: [PATCH 18/44] that --- .../admin/verbs/map_template_loadverb.dm | 2 +- .../mapping/map_helpers/engine_loader.dm | 2 +- .../mapping/map_helpers/template_loader.dm | 2 +- .../mapping/map_system/map_template.dm | 25 ++++++++++++++++--- .../mapping/templates/submaps_legacy.dm | 2 +- code/modules/mining/tools/shelter_atoms.dm | 2 +- 6 files changed, 26 insertions(+), 9 deletions(-) diff --git a/code/modules/admin/verbs/map_template_loadverb.dm b/code/modules/admin/verbs/map_template_loadverb.dm index 715773d3e999..a0cc0dc73331 100644 --- a/code/modules/admin/verbs/map_template_loadverb.dm +++ b/code/modules/admin/verbs/map_template_loadverb.dm @@ -30,7 +30,7 @@ usr.client.images -= preview return - if(template.load(T, centered = TRUE, orientation=orientation)) + if(template.load_standalone_centered(T, orientation=orientation)) message_admins("[key_name_admin(usr)] has placed a map template ([template.name]).") else to_chat(usr, "Failed to place map") diff --git a/code/modules/mapping/map_helpers/engine_loader.dm b/code/modules/mapping/map_helpers/engine_loader.dm index a88d5fc448d6..de107cb94dc3 100644 --- a/code/modules/mapping/map_helpers/engine_loader.dm +++ b/code/modules/mapping/map_helpers/engine_loader.dm @@ -68,7 +68,7 @@ to_chat(world, SPAN_DANGER("Engine loaded: [chosen.display_name]")) annihilate_bounds(lx, ly, lz, ldir) - chosen.load(T, orientation = ldir) + chosen.load_standalone(T, orientation = ldir) qdel(src) diff --git a/code/modules/mapping/map_helpers/template_loader.dm b/code/modules/mapping/map_helpers/template_loader.dm index b06d7a86a221..8b3ccb2f18bd 100644 --- a/code/modules/mapping/map_helpers/template_loader.dm +++ b/code/modules/mapping/map_helpers/template_loader.dm @@ -35,7 +35,7 @@ CRASH("template loader failed to locate turf at specified coordinates ([x], [y], [z])") log_game("Chainloading template [template] at ([x], [y], [z]) with orientation [orientation] via [src] ([REF(src)]).") - template.load(T, centered = FALSE, orientation = orientation) + template.load_standalone(T, orientation = orientation) /** * * This may return null to cancel diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index 0736799f5454..08ce56ffe676 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -39,6 +39,7 @@ /// times loaded this round var/tmp/loaded = 0 /// If true, all (movable) atoms at the location where the map is loaded will be deleted before the map is loaded in. + /// * Deprecated var/annihilate = FALSE //* loading as its own level *// @@ -185,7 +186,7 @@ * * @return loaded dmm_context, or null if failed */ -/datum/map_template/proc/load_standalone(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds) +/datum/map_template/proc/load_standalone(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds = annihilate) var/datum/dmm_context/context = load_deferred(lower_left, orientation, context, annihilate_bounds) if(!context) return @@ -193,6 +194,14 @@ context.execute_post_init() return context +/datum/map_template/proc/load_standalone_centered(turf/centered, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds = annihilate) + return load_standalone( + locate(arglist(compute_lower_left_coords_from_centered_turf(centered, orientation))), + orientation, + context, + annihilate_bounds, + ) + /** * Loads a map template without executing postload for its context. * @@ -204,15 +213,23 @@ * * @return loaded dmm_context, or null if failed */ -/datum/map_template/proc/load_deferred(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds) +/datum/map_template/proc/load_deferred(turf/lower_left, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds = annihilate) var/datum/dmm_context/context = load_impl(lower_left, orientation, context, annihilate_bounds) return context +/datum/map_template/proc/load_deferred_centered(turf/centered, orientation = SOUTH, datum/dmm_context/context, annihilate_bounds = annihilate) + return load_deferred( + locate(arglist(compute_lower_left_coords_from_centered_turf(centered, orientation))), + orientation, + context, + annihilate_bounds, + ) + /datum/map_template/proc/load_impl(turf/real_turf, orientation, datum/dmm_context/context, annihilate_bounds) SSmapping.subsystem_log("Loading template [src] ([type]) at [COORD(real_turf)] size [width]x[height] with annihilate mode [annihilate]") - if(annihilate) + if(annihilate_bounds) annihilate_bounds(real_turf, width, height) // ensure the dmm is parsed @@ -224,7 +241,7 @@ if(isnull(context.mangling_id)) context.mangling_id = generate_mangling_id() - context = parsed.load(ll_x, ll_y, ll_z, orientation = orientation, context = context) + context = parsed.load(real_turf.x, real_turf.y, real_turf.z, orientation = orientation, context = context) if(!context.loaded()) CRASH("failed to load") diff --git a/code/modules/mapping/templates/submaps_legacy.dm b/code/modules/mapping/templates/submaps_legacy.dm index da7b7554e26c..1a561cddfb42 100644 --- a/code/modules/mapping/templates/submaps_legacy.dm +++ b/code/modules/mapping/templates/submaps_legacy.dm @@ -95,7 +95,7 @@ log_debug(SPAN_DEBUG("Submap \"[chosen_template.name]\" placed at ([T.x], [T.y], [T.z])[ADMIN_JMP(T)]")) // Do loading here. - chosen_template.load(T, centered = TRUE, orientation=orientation) // This is run before the main map's initialization routine, so that can initilize our submaps for us instead. + chosen_template.load_standalone_centered(T, orientation=orientation) // This is run before the main map's initialization routine, so that can initilize our submaps for us instead. CHECK_TICK diff --git a/code/modules/mining/tools/shelter_atoms.dm b/code/modules/mining/tools/shelter_atoms.dm index 8f385eb6c9a3..055f69736a2d 100644 --- a/code/modules/mining/tools/shelter_atoms.dm +++ b/code/modules/mining/tools/shelter_atoms.dm @@ -81,7 +81,7 @@ if(above_location) template.add_roof(above_location) template.annihilate_plants(deploy_location) - template.load(deploy_location, centered = TRUE) + template.load_standalone_centered(deploy_location) template.update_lighting(deploy_location) qdel(src) From 8412ae15b9f4b7a4531403bd8b70cac18265eff6 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 19 Jun 2026 11:52:38 -0700 Subject: [PATCH 19/44] scna --- .../subsystem/mapping/mapping-levels.dm | 20 +++---- code/game/area/submap.dm | 26 +++++++-- code/modules/jigsaw/jigsaw_template.dm | 36 ++++++++++++- code/modules/mapping/dmm_suite/dmm_parsed.dm | 3 +- code/modules/mapping/dmm_suite/dmm_scan.dm | 44 +++++++++++++++ code/modules/mapping/map_system/map-load.dm | 53 ++++++++++--------- .../mapping/map_system/map_template.dm | 17 +++++- .../shuttles/shuttle/shuttle_template.dm | 10 ++-- maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm | 12 ++--- .../submaps/jigsaw/tomb_1/tomb_1_entrance.dmm | 32 +++++------ .../jigsaw/tomb_1/tomb_1_hall_curved.dmm | 6 +-- .../jigsaw/tomb_1/tomb_1_hall_straight.dmm | 8 +-- .../jigsaw/tomb_1/tomb_1_nonconvex.dmm | 6 +-- .../submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm | 14 ++--- .../jigsaw/tomb_1/tomb_1_throneroom.dmm | 20 +++---- .../jigsaw/tomb_1/tomb_1_tjunction.dmm | 6 +-- 16 files changed, 215 insertions(+), 98 deletions(-) create mode 100644 code/modules/mapping/dmm_suite/dmm_scan.dm diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index 713ce7c0f540..8ebbeb2ef43c 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -191,38 +191,38 @@ * * if it doesn't have a file, we'll change all the turfs to the given baseturf and set atmos/whatever. * + * * This will fire initialize and post-initialize on the dmm_context. + * * @params * * instance - level to load + * * use_dmm_context - use the given map_context for the loader. This is used to create the dmm_context for the level. * * use_area_cache - use the given list as the area cache for the DMM loader. if none is provided, one will be created. - * * use_dmm_context - use the given dmm_context for the loader. if none is provided, one will be created. - * * defer_for_group_load - defer things like generation callbacks. should generally only be internally used by SSmapping; the API can change at any time. - * * out_generation_callbacks - generation callbacks emitted by on_load_immediate are put in here instead of executed, if we are deferring due to group load * * @return loaded context, or null on fail */ /datum/controller/subsystem/mapping/proc/load_level( datum/map_level/instance, + datum/map_context/map_context, list/use_area_cache, - datum/dmm_context/use_dmm_context, - defer_for_group_load, - list/datum/callback/out_generation_callbacks, ) UNTIL(!map_system_mutex) map_system_mutex = TRUE var/datum/dmm_context/dmm_context = load_level_impl( instance, + map_context, use_area_cache, - use_dmm_context, - defer_for_group_load, - out_generation_callbacks, ) + + if(!dmm_context) + map_system_mutex = FALSE + return + if(SSatoms.initialized) SSatoms.init_map_bounds(dmm_context.loaded_bounds) dmm_context.execute_post_init() map_system_mutex = FALSE - return dmm_context #warn trace calls for args & old generation / defer usage diff --git a/code/game/area/submap.dm b/code/game/area/submap.dm index a5597a700a1e..b4976cbf8d01 100644 --- a/code/game/area/submap.dm +++ b/code/game/area/submap.dm @@ -1,12 +1,28 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2024 Citadel Station Developers *// +/** + * Generic area used for map-template-like chunks. + */ /area/submap -/area/submap/one_single_area +/** + * autodetecting area + */ +/area/submap/auto + /// replaces [name] if it's not set by context + var/fallback_name = "Unknown Area" + /// [name] [count?] [descriptor?] + var/count + /// [name] [count?] [descriptor?] + var/descriptor -#warn hook -/area/submap/one_single_area/preloading_from_mapload(datum/dmm_context/context) - . = ..() +/area/submap/auto/preloading_from_mapload(datum/dmm_context/context) + ..() + auto_name_instance(context.provide_auto_name || fallback_name) -#warn impl +/area/submap/auto/proc/auto_name_instance(use_name) + src.name = "[use_name][count && " [count]"][descriptor && " [descriptor]"]" + src.display_name = use_name + +/area/submap/auto/one_single_area diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index a8f1e2930980..a62935aef82f 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -50,6 +50,11 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// parsed map if held var/datum/dmm_parsed/parsed + /** + * Did auto-measure happen yet? + */ + var/scanned = FALSE + /** * Are we fully convex? * * Fully convex means there are no non-skipover turfs more 'outside' @@ -65,10 +70,39 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) */ var/list/datum/jigsaw_template_connector/connectors = null -#warn impl + var/static/scan_ignore_typecache = cached_typecacheof(list( + /area/template_noop, + /turf/template_noop, + /obj/jigsaw_connector, + )) + var/static/scan_interesting_zebra_typecache = zebra_typecacheof(list( + /obj/jigsaw_connector = /obj/jigsaw_connector, + )) /datum/jigsaw_template/proc/unload_cache() parsed = null /datum/jigsaw_template/proc/load_cached() + if(parsed) + return parsed = new(path) + +/** + * * Implicitly loads cached. + */ +/datum/jigsaw_template/proc/scan() + if(scanned) + return + scanned = TRUE + + load_cached() + + var/datum/dmm_scan/scan = new + var/datum/dmm_scan_params/scan_params = new + + scan_params.trivial_typecache = scan_ignore_typecache + scan_params.zebra_typecache_of_interest = scan_interesting_zebra_typecache + + scan.scan(parsed, scan_params) + + #warn impl diff --git a/code/modules/mapping/dmm_suite/dmm_parsed.dm b/code/modules/mapping/dmm_suite/dmm_parsed.dm index d4079d3321da..2ed3175a919e 100644 --- a/code/modules/mapping/dmm_suite/dmm_parsed.dm +++ b/code/modules/mapping/dmm_suite/dmm_parsed.dm @@ -547,6 +547,7 @@ world.preloader_setup(members_attributes[index], atype) instance = new atype(null) if(global.dmm_preloader_active) + stack_trace("preloader didn't automatically fire off on /area new") world.preloader_load(instance) areaCache[atype] = instance instance.contents.Add(crds) @@ -593,7 +594,7 @@ . = create_atom(path, crds)//first preloader pass if(global.dmm_preloader_active) //second preloader pass, for those atoms that don't ..() in New() - stack_trace("required a second preloader pass") + stack_trace("required a second preloader pass on type [path]") world.preloader_load(.) //custom CHECK_TICK here because we don't want things created while we're sleeping to not initialize diff --git a/code/modules/mapping/dmm_suite/dmm_scan.dm b/code/modules/mapping/dmm_suite/dmm_scan.dm new file mode 100644 index 000000000000..c4066a8f2aef --- /dev/null +++ b/code/modules/mapping/dmm_suite/dmm_scan.dm @@ -0,0 +1,44 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/dmm_scan_params + var/list/trivial_typecache = null + + var/list/typepaths_of_interest = null + /** + * * high-performance variant of typepaths_of_interest so it's not + * regenerated every time. overrides it if set. + */ + var/list/zebra_typecache_of_interest = null + +/datum/dmm_scan + var/is_map_empty + + var/nontrivial_bl_x + var/nontrivial_bl_y + var/nontrivial_tr_x + var/nontrivial_tr_y + var/nontrivial_width + var/nontrivial_height + + /// typepath --> list(list(x, y), ...) + var/list/typepaths_of_interest + +/datum/dmm_scan/proc/scan(datum/dmm_parsed/parsed, datum/dmm_scan_params/params) + if(!parsed || !params) + CRASH("invalid arguments to dmm_scan constructor") + + var/list/trivial_typecache = params.trivial_typecache || cached_typecacheof(list( + /turf/template_noop, + /area/template_noop, + )) + var/list/interesting_typecache + if(params.zebra_typecache_of_interest) + interesting_typecache = params.zebra_typecache_of_interest + else + var/list/transformed_interesting_typepaths = list() + for(var/typepath in params.typepaths_of_interest) + transformed_interesting_typepaths[typepath] = typepath + interesting_typecache = zebra_typecacheof(transformed_interesting_typepaths) + +#warn impl all diff --git a/code/modules/mapping/map_system/map-load.dm b/code/modules/mapping/map_system/map-load.dm index e863e2b876a1..55e2f4c37372 100644 --- a/code/modules/mapping/map_system/map-load.dm +++ b/code/modules/mapping/map_system/map-load.dm @@ -7,15 +7,15 @@ //* Loading *// -#warn this +/datum/map/proc/on_loaded(datum/map_context/context) + SHOULD_CALL_PARENT(TRUE) -/** - * anything to do immediately on load - * - * called after level on_loaded_immediate's - */ -/datum/map/proc/on_loaded_immediate() + on_loaded_setup_struct() + on_loaded_init_overmap() + +/datum/map/proc/on_loaded_setup_struct() SHOULD_CALL_PARENT(TRUE) + SHOULD_NOT_OVERRIDE(TRUE) loaded = TRUE loaded_z_indices = list() @@ -132,6 +132,9 @@ CRASH("overshot level somehow?") level.virtual_elevation = total_height +/datum/map/proc/on_loaded_setup_overmap() + SHOULD_CALL_PARENT(TRUE) + if(overmap_initializer) SSovermaps.initialize_entity(overmap_initializer, src) @@ -143,8 +146,8 @@ * Fired before zclear fires on the zlevels that consist of us * * Levels have their on_unload_pre_zclear called before this. */ -/datum/map/proc/on_unload_pre_zclear() - SHOULD_CALL_PARENT(TRUE) +// /datum/map/proc/on_unload_pre_zclear() +// SHOULD_CALL_PARENT(TRUE) /** * TOOD: not hooked in yet @@ -153,19 +156,19 @@ * * Levels have their on_unload_finalize called before this. * * zlevels and then ourselves are un-referenced and/or garbage collected (if necessary) after. */ -/datum/map/proc/on_unload_finalize() - SHOULD_CALL_PARENT(TRUE) - - loaded = FALSE - loaded_z_indices = null - loaded_z_grid = null - loaded_sparse_size_x = null - loaded_sparse_size_y = null - loaded_sparse_size_z = null - loaded_z_planes = null - loaded_z_stacks = null - - for(var/datum/map_level/level as anything in levels) - level.virtual_alignment_x = null - level.virtual_alignment_y = null - level.virtual_elevation = null +// /datum/map/proc/on_unload_finalize() +// SHOULD_CALL_PARENT(TRUE) + +// loaded = FALSE +// loaded_z_indices = null +// loaded_z_grid = null +// loaded_sparse_size_x = null +// loaded_sparse_size_y = null +// loaded_sparse_size_z = null +// loaded_z_planes = null +// loaded_z_stacks = null + +// for(var/datum/map_level/level as anything in levels) +// level.virtual_alignment_x = null +// level.virtual_alignment_y = null +// level.virtual_elevation = null diff --git a/code/modules/mapping/map_system/map_template.dm b/code/modules/mapping/map_system/map_template.dm index 08ce56ffe676..ba93fa526d4a 100644 --- a/code/modules/mapping/map_system/map_template.dm +++ b/code/modules/mapping/map_system/map_template.dm @@ -1,3 +1,4 @@ +// TODO: consider unifying / interoperating with jigsaw_template & shuttle_template /datum/map_template abstract_type = /datum/map_template @@ -79,6 +80,15 @@ src.map_path = path if(isnull(map_path)) map_path = "[prefix][suffix]" + + if(!id) + var/static/next_ephemeral_id = 0 + src.id = "ephemeral-" + next_ephemeral_id++ + + if(next_ephemeral_id > SHORT_REAL_LIMIT) + stack_trace("ran out of ephemeral map template IDs") + next_ephemeral_id = 0 + preload() /** @@ -149,7 +159,12 @@ ASSERT(level.loaded) - load(locate(ll_x, ll_y, level.z_index), FALSE, orientation) + var/turf/lower_left = locate(ll_x, ll_y, level.z_index) + + load_standalone( + lower_left, + orientation = orientation, + ) SSmapping.subsystem_log("Loaded template [src] ([type]) on z-level [level.z_index]") diff --git a/code/modules/shuttles/shuttle/shuttle_template.dm b/code/modules/shuttles/shuttle/shuttle_template.dm index 84304f7417ec..d66843a55451 100644 --- a/code/modules/shuttles/shuttle/shuttle_template.dm +++ b/code/modules/shuttles/shuttle/shuttle_template.dm @@ -109,17 +109,21 @@ // set descriptor instance.descriptor = instance_descriptor() - #warn context pre/post init? + // context pre-init + loaded_context.execute_pre_init() - // let shuttle do black magic first + // shuttle auto-measure // instance.before_bounds_init(reservation, src) // init the bounds SSatoms.init_map_bounds(loaded_bounds) - // let shuttle do post-init things + // shuttle post-init // instance.after_bounds_init(reservation, src) + // context post-init + loaded_context.execute_post_init() + // set vars on shuttle instance.template_id = id diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm index dedd2197b32a..b1c52da77373 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm @@ -1,28 +1,28 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/wall/solidrock, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "k" = ( /obj/structure/boulder, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "r" = ( /turf/simulated/mineral/ignore_cavegen, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "L" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "O" = ( /turf/template_noop, /area/template_noop) "Q" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "U" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" r diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm index 7ede20f4baed..ec41a9178ebc 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm @@ -2,44 +2,44 @@ "a" = ( /obj/structure/boulder, /turf/simulated/mineral/floor/ignore_cavegen/inherit_area, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "h" = ( /obj/item/pickaxe, /obj/item/flashlight/lantern, /turf/simulated/mineral/floor/ignore_cavegen/inherit_area, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "l" = ( /obj/random/junk, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "n" = ( /obj/random/alcohol, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "o" = ( /turf/simulated/mineral/ignore_cavegen, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "p" = ( /obj/structure/bed, /obj/item/bedsheet, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "r" = ( /obj/structure/bed, /obj/spawner/corpse/pirate/melee, /obj/effect/debris/cleanable/blood, /obj/item/bedsheet, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "v" = ( /obj/structure/statue/marble/male, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "E" = ( /obj/structure/table/marble, /obj/item/clothing/ears/laurel/silver, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "F" = ( /turf/simulated/mineral/ignore_cavegen, /area/template_noop) @@ -47,32 +47,32 @@ /obj/structure/table/marble, /obj/item/clothing/ears/earring/dangle/silver, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "I" = ( /turf/simulated/wall/solidrock, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "J" = ( /turf/simulated/mineral/floor/ignore_cavegen/inherit_area, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "O" = ( /turf/template_noop, /area/template_noop) "P" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "Q" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "V" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "Y" = ( /obj/structure/table/marble, /obj/item/bone/skull, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" F diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm index b5f94b8e664a..6f25df2dd18f 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm @@ -1,10 +1,10 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "t" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "I" = ( /turf/template_noop, /area/template_noop) @@ -12,7 +12,7 @@ /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" I diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm index 5726497553d0..33980842796f 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm @@ -5,18 +5,18 @@ "o" = ( /obj/structure/statue/marble/male, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "E" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "G" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "L" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" a diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm index e8640ffd297e..cb5e23b110ab 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm @@ -4,15 +4,15 @@ /area/template_noop) "c" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "g" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "i" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" i diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm index ef8a15ac78bd..44985c65b954 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm @@ -1,34 +1,34 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "m" = ( /turf/simulated/floor/water/deep/indoors, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "u" = ( /obj/structure/stairs/middle{ dir = 4 }, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "B" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "C" = ( /obj/structure/table/sandstone, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "E" = ( /obj/structure/stairs/middle{ dir = 8 }, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "H" = ( /obj/structure/statue/marble/female, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "I" = ( /turf/template_noop, /area/template_noop) diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm index 237578317674..21bbc372dc00 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm @@ -7,41 +7,41 @@ /obj/item/clothing/head/pharaoh, /obj/item/clothing/suit/pharaoh, /turf/simulated/floor/gold, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "h" = ( /turf/simulated/floor/silver, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "k" = ( /turf/simulated/wall/sandstonediamond, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "m" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "o" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "p" = ( /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/silver, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "C" = ( /obj/machinery/artifact, /obj/structure/table/sandstone, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "H" = ( /obj/structure/table/sandstone, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "K" = ( /turf/simulated/floor/gold, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "V" = ( /obj/structure/table/gold, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/gold, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" a diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm b/maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm index c6f9fcb60c4c..d8a3a08a15a2 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm @@ -4,15 +4,15 @@ /area/template_noop) "r" = ( /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "A" = ( /turf/simulated/wall/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) "J" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/sandstone, -/area/submap/one_single_area) +/area/submap/auto/one_single_area) (1,1,1) = {" A From bdacd20441e019956bf0188241845c496e95da17 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 20 Jun 2026 10:21:12 -0700 Subject: [PATCH 20/44] start grid --- citadel.dme | 1 + .../subsystem/mapping/mapping-levels.dm | 2 - code/modules/jigsaw/jigsaw_connector.dm | 1 - code/modules/jigsaw/jigsaw_generation.dm | 36 +++++++++----- code/modules/jigsaw/jigsaw_template.dm | 48 +++++++++++++++---- code/modules/mapping/map_system/map-load.dm | 2 +- 6 files changed, 65 insertions(+), 25 deletions(-) diff --git a/citadel.dme b/citadel.dme index fe8a8aaa5ad9..1a287d76fa5c 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3652,6 +3652,7 @@ #include "code\modules\mapping\dmm_suite\dmm_parsed.dm" #include "code\modules\mapping\dmm_suite\dmm_preloader.dm" #include "code\modules\mapping\dmm_suite\dmm_report.dm" +#include "code\modules\mapping\dmm_suite\dmm_scan.dm" #include "code\modules\mapping\dmm_suite\utility_types.dm" #include "code\modules\mapping\map_helpers\baseturf.dm" #include "code\modules\mapping\map_helpers\component_injector.dm" diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index 8ebbeb2ef43c..2e38c422b7d0 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -225,8 +225,6 @@ map_system_mutex = FALSE return dmm_context -#warn trace calls for args & old generation / defer usage - /datum/controller/subsystem/mapping/proc/load_level_impl( datum/map_level/instance, datum/map_context/map_context, diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm index b1a3b8d6af28..f753ab514a82 100644 --- a/code/modules/jigsaw/jigsaw_connector.dm +++ b/code/modules/jigsaw/jigsaw_connector.dm @@ -26,7 +26,6 @@ GLOBAL_LIST(jigsaw_connectors_pending) * Section WIP. */ /obj/jigsaw_connector - #warn sprite icon = 'icons/modules/jigsaw/jigsaw_connector_3x3.dmi' icon_state = "connector-1-1" pixel_x = -32 diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm index d371b658d71c..1606926127b8 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -1,32 +1,44 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/jigsaw_generation_enqueued_placement +/datum/jigsaw_generation_template var/lower_left_x var/lower_left_y var/lower_left_z var/orientation var/datum/jigsaw_template/template +/datum/jigsaw_generation_tile + var/x + var/y + var/datum/jigsaw_generation_template/enqueued + var/list/north_match + var/list/north_exclude + var/list/south_match + var/list/south_exclude + var/list/east_match + var/list/east_exclude + var/list/west_match + var/list/west_exclude + /** * Datum used to hold current state for a jigsaw dungeon generation. */ /datum/jigsaw_generation + var/width + var/height /** - * Broadphase emplacements. + * Grid. This is a flat spatial grid with widthxheight of the intended generation. */ - var/list/datum/jigsaw_generation_enqueued_placement/broadphase_enqueued = list() - var/broadphase_emplaced = FALSE + var/list/grid - /** - * Yet to be assigned / consumed. - * * This is both pre- and post- convex broadphase. This allows - * pending connectors to be emplaced even after the broadphase. - * * When the broadphase finishes, all connectors are checked for overlap, - * and are removed from the list if needed. The rest are used for the 'live run'. - */ - var/list/datum/jigsaw_pending_connector/pending_connectors = list() +/datum/jigsaw_generation/New(width, height) + src.width = width + src.height = height + + src.grid = new /list(src.width * src.height) +// var/idx = ceil(root.x / TURF_CHUNK_RESOLUTION) + grid_width * (ceil(root.y / TURF_CHUNK_RESOLUTION) - 1) #warn impl diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index a62935aef82f..03f9285df8ff 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -36,11 +36,50 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) var/datum/jigsaw_template/template = GLOB.jigsaw_template_cache[path] template.unload_cache() +/datum/jigsaw_template_pattern + +#warn emplace + +/** + * rectangular bounding box over the template. the template is lower-left + * aligned to this box. + * + * * width / height is in alignment multiples + * * this is for 'south' facing orientation. + */ +/datum/jigsaw_template_pattern/rectangular + abstract_type = /datum/jigsaw_template_pattern/rectangular + var/width + var/height + +/datum/jigsaw_template_pattern/rectangular/one_by_one + width = 1 + height = 1 + var/list/south_match + var/list/north_match + var/list/east_match + var/list/west_match + +/datum/jigsaw_template_pattern/rectangular/two_by_two + width = 2 + height = 2 + +/datum/jigsaw_template_pattern/rectangular/three_by_three + width = 3 + height = 3 + /datum/jigsaw_template /// the name of this template, used for debugging and referencing in other templates. var/name = "Dungeon Fragment" /// path on disk var/path + /// alignment + /// * alignment is the minimum size and must be a multiple of the actual size. + /// * generations must only use templates with the same alignment. + /// * templates are emplaced with one tile of overlap for their alignment. + var/alignment = 8 + /// pattern + var/datum/jigsaw_template_pattern/pattern /// display name /// * defaults to name @@ -55,15 +94,6 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) */ var/scanned = FALSE - /** - * Are we fully convex? - * * Fully convex means there are no non-skipover turfs more 'outside' - * on any side than a connector. - * * Fully convex templates can be planned out without actually loading, - * and are the only things allowed in the first phase of jigsaw generation. - */ - var/convex = FALSE - /** * Connectors with locations. * * Supports auto-detection if nulled. diff --git a/code/modules/mapping/map_system/map-load.dm b/code/modules/mapping/map_system/map-load.dm index 55e2f4c37372..ec2f1e6545a8 100644 --- a/code/modules/mapping/map_system/map-load.dm +++ b/code/modules/mapping/map_system/map-load.dm @@ -11,7 +11,7 @@ SHOULD_CALL_PARENT(TRUE) on_loaded_setup_struct() - on_loaded_init_overmap() + on_loaded_setup_overmap() /datum/map/proc/on_loaded_setup_struct() SHOULD_CALL_PARENT(TRUE) From e78fc3cc83656bffd3e47881fc7619caabc48fb1 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 21 Jun 2026 11:43:15 -0700 Subject: [PATCH 21/44] new --- citadel.dme | 6 +- code/__DEFINES/jigsaw.dm | 4 + .../modals/spawn_jigsaw_dungeon.dm | 9 ++ code/modules/jigsaw/jigsaw_connector.dm | 85 ----------- code/modules/jigsaw/jigsaw_generation.dm | 36 ++++- code/modules/jigsaw/jigsaw_generator.dm | 51 +++---- code/modules/jigsaw/jigsaw_pattern.dm | 18 +++ code/modules/jigsaw/jigsaw_spawn_config.dm | 16 +++ code/modules/jigsaw/jigsaw_spawner.dm | 4 + code/modules/jigsaw/jigsaw_template.dm | 108 ++++---------- code/modules/jigsaw/jigsaw_template_config.dm | 46 ++++-- .../modules/jigsaw/jigsaw_template_pattern.dm | 132 ++++++++++++++++++ code/modules/mapping/dmm_suite/dmm_scan.dm | 86 ++++++------ icons/modules/jigsaw/jigsaw_connector_3x3.dmi | Bin 1985 -> 0 bytes 14 files changed, 343 insertions(+), 258 deletions(-) create mode 100644 code/__DEFINES/jigsaw.dm create mode 100644 code/modules/admin/admin_modal/modals/spawn_jigsaw_dungeon.dm delete mode 100644 code/modules/jigsaw/jigsaw_connector.dm create mode 100644 code/modules/jigsaw/jigsaw_pattern.dm create mode 100644 code/modules/jigsaw/jigsaw_spawn_config.dm create mode 100644 code/modules/jigsaw/jigsaw_template_pattern.dm delete mode 100644 icons/modules/jigsaw/jigsaw_connector_3x3.dmi diff --git a/citadel.dme b/citadel.dme index 1a287d76fa5c..f776051dc3d4 100644 --- a/citadel.dme +++ b/citadel.dme @@ -71,6 +71,7 @@ #include "code\__DEFINES\instruments.dm" #include "code\__DEFINES\is_helpers.dm" #include "code\__DEFINES\items_clothing.dm" +#include "code\__DEFINES\jigsaw.dm" #include "code\__DEFINES\loadout.dm" #include "code\__DEFINES\logging.dm" #include "code\__DEFINES\machinery.dm" @@ -2450,6 +2451,7 @@ #include "code\modules\admin\admin_modal\admin_modal.dm" #include "code\modules\admin\admin_modal\modals\admin_narrate.dm" #include "code\modules\admin\admin_modal\modals\load_map_sector.dm" +#include "code\modules\admin\admin_modal\modals\spawn_jigsaw_dungeon.dm" #include "code\modules\admin\admin_panel\admin_panel.dm" #include "code\modules\admin\admin_panel\panels\gm_pings.dm" #include "code\modules\admin\ban\ban_system_legacy.dm" @@ -3469,12 +3471,14 @@ #include "code\modules\integrated_electronics\tools\debugger.dm" #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" -#include "code\modules\jigsaw\jigsaw_connector.dm" #include "code\modules\jigsaw\jigsaw_generation.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" +#include "code\modules\jigsaw\jigsaw_pattern.dm" +#include "code\modules\jigsaw\jigsaw_spawn_config.dm" #include "code\modules\jigsaw\jigsaw_spawner.dm" #include "code\modules\jigsaw\jigsaw_template.dm" #include "code\modules\jigsaw\jigsaw_template_config.dm" +#include "code\modules\jigsaw\jigsaw_template_pattern.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/code/__DEFINES/jigsaw.dm b/code/__DEFINES/jigsaw.dm new file mode 100644 index 000000000000..a3c1d1156856 --- /dev/null +++ b/code/__DEFINES/jigsaw.dm @@ -0,0 +1,4 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +// --- Defines for 'jigsaw' module, a procedural dungeon / map generator. --- diff --git a/code/modules/admin/admin_modal/modals/spawn_jigsaw_dungeon.dm b/code/modules/admin/admin_modal/modals/spawn_jigsaw_dungeon.dm new file mode 100644 index 000000000000..612f4e45781f --- /dev/null +++ b/code/modules/admin/admin_modal/modals/spawn_jigsaw_dungeon.dm @@ -0,0 +1,9 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/admin_modal/spawn_jigsaw_dungeon + name = "Spawn Jigsaw Dungeon" + +// TODO: this should allow spawning a jigsaw dungeon on the fly +// TODO: please use reusable structs so load_map_sector can eventually +// have this as a generation source diff --git a/code/modules/jigsaw/jigsaw_connector.dm b/code/modules/jigsaw/jigsaw_connector.dm deleted file mode 100644 index f753ab514a82..000000000000 --- a/code/modules/jigsaw/jigsaw_connector.dm +++ /dev/null @@ -1,85 +0,0 @@ -//* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2026 Citadel Station Developers *// - -/** - * Only set during a load cycle that wants to use connectors. - */ -GLOBAL_LIST(jigsaw_connectors_pending) - -/datum/jigsaw_pending_connector - var/x - var/y - var/z - var/width - var/margin - var/direction - - var/spent = FALSE - -/** - * Denotes a **possible** connection point for jigsaw pieces. - * - * Connectors are matched ontop of each other by reversing the direction - * and checking if they can fit in. - * - * # Matching - * Section WIP. - */ -/obj/jigsaw_connector - icon = 'icons/modules/jigsaw/jigsaw_connector_3x3.dmi' - icon_state = "connector-1-1" - pixel_x = -32 - pixel_y = -32 - - // Inner width. - // * If this is even, the connector is left-biased in its real direction, facing in - // its direction; so if it's NORTH width 2, the connector is its tile and one to the east. - var/width = 1 - // Outer width. (Margin) - // * This is the tiles in both left and right directions that are presumed safe / sealed. - var/margin = 1 - - /// set if we detect another jigsaw connector spawning onto us - var/matched = FALSE - - /// our pending connector. - /// * we un-reference this on destroy, but when we match, we mark it as 'spent' for disposal. - var/datum/jigsaw_pending_connector/pending - - -/obj/jigsaw_connector/New() - if(GLOB.jigsaw_connectors_pending) - var/datum/jigsaw_pending_connector/pending = new - pending.x = src.x - pending.y = src.y - pending.z = src.z - pending.width = src.width - pending.margin = src.margin - pending.direction = src.dir - GLOB.jigsaw_connectors_pending += pending - src.pending = pending - try_match_other() - return ..() - -/obj/jigsaw_connector/Initialize() - SHOULD_CALL_PARENT(FALSE) - return INITIALIZE_HINT_QDEL - -/obj/jigsaw_connector/Destroy() - pending = null - return ..() - -/obj/jigsaw_connector/proc/on_match() - matched = TRUE - pending?.spent = TRUE - -/obj/jigsaw_connector/proc/try_match_other() -#warn impl - -/obj/jigsaw_connector/two_wide - icon_state = "connector-2-1" - width = 2 - -/obj/jigsaw_connector/three_wide - icon_state = "connector-3-1" - width = 3 diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm index 1606926127b8..048be5fbf0e7 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -1,7 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/jigsaw_generation_template +/datum/jigsaw_generation_enqueued var/lower_left_x var/lower_left_y var/lower_left_z @@ -11,7 +11,7 @@ /datum/jigsaw_generation_tile var/x var/y - var/datum/jigsaw_generation_template/enqueued + var/datum/jigsaw_generation_enqueued/enqueued var/list/north_match var/list/north_exclude var/list/south_match @@ -21,26 +21,52 @@ var/list/west_match var/list/west_exclude +/datum/jigsaw_generation_tile/New(x, y) + src.x = x + src.y = y + +/datum/jigsaw_generation_tile/block_off + /** * Datum used to hold current state for a jigsaw dungeon generation. */ /datum/jigsaw_generation + var/alignment var/width var/height /** - * Grid. This is a flat spatial grid with widthxheight of the intended generation. + * Grid. This is a flat spatial grid with width x height of the intended generation. + * * This is indexed as [x + width * (y - 1)], starting at 1,1 as lower left. + * * Value is a /datum/jigsaw_generation_tile or null */ var/list/grid + /** + * List of enqueued placements. + */ + var/list/datum/jigsaw_generation_enqueued/enqueued = list() -/datum/jigsaw_generation/New(width, height) +/datum/jigsaw_generation/New(alignment, width, height) + src.alignment = alignment src.width = width src.height = height src.grid = new /list(src.width * src.height) +/datum/jigsaw_generation/proc/get_tile_width() + return src.width * src.alignment + +/datum/jigsaw_generation/proc/get_tile_height() + return src.height * src.alignment + // var/idx = ceil(root.x / TURF_CHUNK_RESOLUTION) + grid_width * (ceil(root.y / TURF_CHUNK_RESOLUTION) - 1) #warn impl /datum/jigsaw_generation/proc/cleanup() - QDEL_LIST(pending_connectors) + QDEL_LIST(enqueued) + + for(var/i in 1 to length(grid)) + var/datum/jigsaw_generation_tile/tile = grid[i] + if(tile) + qdel(tile) + grid = list() diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 535ca9e0adb7..90a57e07bfe0 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -14,18 +14,26 @@ * Configuration for templates. */ var/datum/jigsaw_template_config/template_config + /** + * Configuration for spawns + */ + var/datum/jigsaw_spawn_config/spawn_config /datum/jigsaw_generator/proc/get_available_templates() return list() - #warn impl /datum/jigsaw_generator/proc/generate_from_initial_piece(datum/jigsaw_template/initial_piece, turf/lower_left, orientation) -/datum/jigsaw_generator/proc/generate_at_turf_centered(turf/target) +/datum/jigsaw_generator/proc/generate_at_turf_centered(turf/center, radius_horizontal_tiles, radius_vertical_tiles) + if(isnull(radius_vertical_tiles)) + radius_vertical_tiles = radius_horizontal_tiles + +/datum/jigsaw_generator/proc/generate_at_turf_lower_left(turf/lower_left, width, height) -/datum/jigsaw_generator/proc/generate_impl(turf/contextual_center, datum/jigsaw_generation/generation = new) + +/datum/jigsaw_generator/proc/generate_impl(datum/jigsaw_generation/generation) var/contextual_zlev = get_z(contextual_center) if(!contextual_zlev) CRASH("Invalid contextual center.") @@ -47,14 +55,11 @@ if(!length(generation.broadphase_enqueued)) generate_impl_place_initial_piece(generation, templates, contextual_center) - // perform broadphase - generate_impl_convex_broadphase(generation, templates) - - // emplace broadphase templates - #warn impl + // seed templates + generate_impl_seed_grid(generation, templates) - // perform narrowphase afterwards - #warn impl + // emplace templates + generate_impl_emplace_grid(generation, templates) // cleanup generation.cleanup() @@ -62,21 +67,12 @@ /datum/jigsaw_generator/proc/generate_impl_place_initial_piece(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates, turf/contextual_center) #warn impl -/datum/jigsaw_generator/proc/generate_impl_convex_broadphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) +/datum/jigsaw_generator/proc/generate_impl_seed_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) #warn impl -/datum/jigsaw_generator/proc/generate_impl_emplace_broadphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) - // get rid of current connectors - QDEL_LIST(generation.pending_connectors) - - // add hook for pending connectors. - // what this does is allow templates to spawn connectors that bind into this, so narrowphase - // can continue to grow the templates. - GLOB.jigsaw_connectors_pending = generation.pending_connectors - - +/datum/jigsaw_generator/proc/generate_impl_emplace_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) // place templates down - for(var/datum/jigsaw_generation_enqueued_placement/placement in generation.broadphase_enqueued) + for(var/datum/jigsaw_generation_enqueued/placement in generation.enqueued) var/datum/jigsaw_template/template = placement.template var/datum/dmm_context/context = new #warn impl context stuff @@ -89,14 +85,3 @@ orientation = placement.orientation, context = context ) - - // dedupe connectors so narrowphase can run cleanly - var/list/datum/jigsaw_pending_connector/keep_pending_connectors = list() - for(var/datum/jigsaw_pending_connector/connector in generation.pending_connectors) - if(connector.spent) - continue - keep_pending_connectors += connector - generation.pending_connectors = keep_pending_connectors - -/datum/jigsaw_generator/proc/generate_impl_narrowphase(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) - #warn impl diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm new file mode 100644 index 000000000000..9fa4f3385859 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -0,0 +1,18 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_pattern + var/width + var/height + /** + * * index = (y - 1) * width + x, as a flat list. + * * this is as south-rotated. we iterate over this differently + * if the thing accessing this wants a rotation. + */ + var/list/pattern + +/datum/jigsaw_pattern/New(width, height) + src.width = width + src.height = height + + src.pattern = new /list(width * height) diff --git a/code/modules/jigsaw/jigsaw_spawn_config.dm b/code/modules/jigsaw/jigsaw_spawn_config.dm new file mode 100644 index 000000000000..d320281d4ff2 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_spawn_config.dm @@ -0,0 +1,16 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_config + +/datum/jigsaw_spawn_config/proc/get_resultant_config() as /datum/jigsaw_spawn_resultant_config + return new /datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_config/specific + +/datum/jigsaw_spawn_config/specific/get_resultant_config() + var/datum/jigsaw_spawn_resultant_config/result = new + + return result diff --git a/code/modules/jigsaw/jigsaw_spawner.dm b/code/modules/jigsaw/jigsaw_spawner.dm index 1388d4037ccf..bb54db2f607f 100644 --- a/code/modules/jigsaw/jigsaw_spawner.dm +++ b/code/modules/jigsaw/jigsaw_spawner.dm @@ -11,6 +11,10 @@ var/datum/jigsaw_template_config/template_config = /datum/jigsaw_template_config/everything var/datum/turf_auto_marker_config/auto_marker_config + var/radius_tiles = 48 + var/radius_horizontal_tiles + var/radius_vertical_tiles + var/datum/jigsaw_template/spawn_template_centered var/spawn_template_centered_orientation = SOUTH diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 03f9285df8ff..6c8151d87c22 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -1,20 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/** - * Detected / specified connector. - */ -/datum/jigsaw_template_connector - /// x offset from lower left - var/x_offset - /// y offset from lower left - var/y_offset - /// Direction facing - /// * Connectors can only connect to other connectors facing the opposite direction. - var/direction - var/width - var/margin - GLOBAL_LIST_EMPTY(jigsaw_template_cache) /proc/fetch_cached_jigsaw_template(datum/jigsaw_template/path) @@ -36,38 +22,14 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) var/datum/jigsaw_template/template = GLOB.jigsaw_template_cache[path] template.unload_cache() -/datum/jigsaw_template_pattern - -#warn emplace - /** - * rectangular bounding box over the template. the template is lower-left - * aligned to this box. - * - * * width / height is in alignment multiples - * * this is for 'south' facing orientation. + * A template for jigsaw generation. + * * Templates are a multiple of alignment in width/height, plus one for border. This is + * determined by its pattern. + * * Templates are assumed to be mapped in to SOUTH orientation. + * * Templates are loaded in with their lower left tile (after taking into account any offsets) + * aligned relative to the south direction. If it's rotated, the alignment rotates with it. */ -/datum/jigsaw_template_pattern/rectangular - abstract_type = /datum/jigsaw_template_pattern/rectangular - var/width - var/height - -/datum/jigsaw_template_pattern/rectangular/one_by_one - width = 1 - height = 1 - var/list/south_match - var/list/north_match - var/list/east_match - var/list/west_match - -/datum/jigsaw_template_pattern/rectangular/two_by_two - width = 2 - height = 2 - -/datum/jigsaw_template_pattern/rectangular/three_by_three - width = 3 - height = 3 - /datum/jigsaw_template /// the name of this template, used for debugging and referencing in other templates. var/name = "Dungeon Fragment" @@ -80,6 +42,14 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) var/alignment = 8 /// pattern var/datum/jigsaw_template_pattern/pattern + /// Offset the actual load from the lower-left (direction relative) of + /// the aligned pattern. + /// * This is in tiles, not alignment multiples. + var/offset_x = 0 + /// Offset the actual load from the lower-left (direction relative) of + /// the aligned pattern. + /// * This is in tiles, not alignment multiples. + var/offset_y = 0 /// display name /// * defaults to name @@ -89,25 +59,8 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// parsed map if held var/datum/dmm_parsed/parsed - /** - * Did auto-measure happen yet? - */ - var/scanned = FALSE - - /** - * Connectors with locations. - * * Supports auto-detection if nulled. - */ - var/list/datum/jigsaw_template_connector/connectors = null - - var/static/scan_ignore_typecache = cached_typecacheof(list( - /area/template_noop, - /turf/template_noop, - /obj/jigsaw_connector, - )) - var/static/scan_interesting_zebra_typecache = zebra_typecacheof(list( - /obj/jigsaw_connector = /obj/jigsaw_connector, - )) +/datum/jigsaw_template/proc/prepare() + return /datum/jigsaw_template/proc/unload_cache() parsed = null @@ -117,22 +70,17 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) return parsed = new(path) -/** - * * Implicitly loads cached. - */ -/datum/jigsaw_template/proc/scan() - if(scanned) - return - scanned = TRUE - - load_cached() - - var/datum/dmm_scan/scan = new - var/datum/dmm_scan_params/scan_params = new - - scan_params.trivial_typecache = scan_ignore_typecache - scan_params.zebra_typecache_of_interest = scan_interesting_zebra_typecache +/datum/jigsaw_template/override + /** + * * Can be path, instance, or ID. + * * (ID isn't implemented yet.) + */ + var/datum/jigsaw_template/template - scan.scan(parsed, scan_params) +/datum/jigsaw_template/override/proc/prepare() + var/datum/jigsaw_template/resolved = fetch_cached_jigsaw_template(template) + if(!resolved) + CRASH("Invalid template override: [template]") + resolved.prepare() - #warn impl + // diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_template_config.dm index 986a3d40d77e..c2e76e5fb5a1 100644 --- a/code/modules/jigsaw/jigsaw_template_config.dm +++ b/code/modules/jigsaw/jigsaw_template_config.dm @@ -2,30 +2,44 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_template_resultant_config + /// alignment + /// * this is minimum dimensions (width and height); width and height of + /// all templates must be in alignment multiples plus one tile of border in each side + var/alignment = 8 + /// always start with these templates, if exists /// * may be typepaths or instances + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/initial_templates = list() - /// templates to use, weighted. - /// * may be typepaths or instances - var/list/datum/jigsaw_template/weighted_templates = list() /// ***attempt*** to place these templates, associate to count - /// * these are given priority during broadphase and narrowphase but it still isn't guaranteed + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails - /// * only convex templates are allowed in here because only broadphase can - /// actually backtrack here. + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/required_templates = list() + /// templates to use, weighted. + /// * may be typepaths or instances + /// * this are constrained by budgets. + var/list/datum/jigsaw_template/weighted_templates = list() + + /// allowed costs + /// * only used for weighted templates + var/list/budgets = list() + /datum/jigsaw_template_config /datum/jigsaw_template_config/proc/get_resultant_config() as /datum/jigsaw_template_resultant_config return new /datum/jigsaw_template_resultant_config /datum/jigsaw_template_config/everything + /// allowed costs + var/list/budgets = list() /datum/jigsaw_template_config/everything/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new + results.budgets = budgets.Copy() for(var/datum/jigsaw_template/path as anything in subtypesof(/datum/jigsaw_template)) if(path.abstract_type == path) continue @@ -36,23 +50,29 @@ /datum/jigsaw_template_config/specific /// always start with these templates, if exists /// * may be typepaths or instances + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/initial_templates = list() - /// templates to use, weighted. - /// * may be typepaths or instances - var/list/datum/jigsaw_template/weighted_templates = list() - /// ***attempt*** to place these templates, associate to count - /// * these are given priority during broadphase and narrowphase but it still isn't guaranteed + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails - /// * only convex templates are allowed in here because only broadphase can - /// actually backtrack here. + /// * this ignores budget and will not take from it. var/list/datum/jigsaw_template/required_templates = list() + /// templates to use, weighted. + /// * may be typepaths or instances + /// * this are constrained by budgets. + var/list/datum/jigsaw_template/weighted_templates = list() + + /// allowed costs + /// * only used for weighted templates + var/list/budgets = list() + /datum/jigsaw_template_config/specific/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new result.initial_templates = initial_templates.Copy() result.weighted_templates = weighted_templates.Copy() result.priority_templates = priority_templates.Copy() result.required_templates = required_templates.Copy() + results.budgets = budgets.Copy() return result diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm new file mode 100644 index 000000000000..8ea26e0763cc --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -0,0 +1,132 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_template_pattern + +/datum/jigsaw_template_pattern/proc/get_pattern() as /datum/jigsaw_pattern + return new /datum/jigsaw_pattern(0, 0) + + +#warn emplace + +/** + * rect bounding box over the template. the template is lower-left + * aligned to this box. + * + * * width / height is in alignment multiples + * * this is for 'south' facing orientation. + */ +/datum/jigsaw_template_pattern/rect + abstract_type = /datum/jigsaw_template_pattern/rect + + /** + * * This is in alignment multiples, not tiles. + */ + var/width + /** + * * This is in alignment multiples, not tiles. + */ + var/height + + /** + * If for whatever reason you need to offset (in alignment multiples), this lets you do it. + * As an example, you can offset -1, -1 for a three-by-three on a 1x1 to effectively + * center it. + * * This is in alignment multiples, not tiles. + */ + var/x_offset = 0 + /** + * If for whatever reason you need to offset (in alignment multiples), this lets you do it. + * As an example, you can offset -1, -1 for a three-by-three on a 1x1 to effectively + * center it. + * * This is in alignment multiples, not tiles. + */ + var/y_offset = 0 + +/datum/jigsaw_template_pattern/rect/s_1x1 + width = 1 + height = 1 + + var/list/south_match + var/list/south_exclude + + var/list/north_match + var/list/north_exclude + + var/list/east_match + var/list/east_exclude + + var/list/west_match + var/list/west_exclude + +/datum/jigsaw_template_pattern/rect/s_2x2 + width = 2 + height = 2 + + var/list/south_match + var/list/south_exclude + var/list/south_left_match + var/list/south_left_exclude + var/list/south_right_match + var/list/south_right_exclude + + var/list/north_match + var/list/north_exclude + var/list/north_left_match + var/list/north_left_exclude + var/list/north_right_match + var/list/north_right_exclude + + var/list/east_match + var/list/east_exclude + var/list/east_top_match + var/list/east_top_exclude + var/list/east_bottom_match + var/list/east_bottom_exclude + + var/list/west_match + var/list/west_exclude + var/list/west_top_match + var/list/west_top_exclude + var/list/west_bottom_match + var/list/west_bottom_exclude + +/datum/jigsaw_template_pattern/rect/s_3x3 + width = 3 + height = 3 + + var/list/south_match + var/list/south_exclude + var/list/south_left_match + var/list/south_left_exclude + var/list/south_middle_match + var/list/south_middle_exclude + var/list/south_right_match + var/list/south_right_exclude + + var/list/north_match + var/list/north_exclude + var/list/north_left_match + var/list/north_left_exclude + var/list/north_middle_match + var/list/north_middle_exclude + var/list/north_right_match + var/list/north_right_exclude + + var/list/east_match + var/list/east_exclude + var/list/east_top_match + var/list/east_top_exclude + var/list/east_middle_match + var/list/east_middle_exclude + var/list/east_bottom_match + var/list/east_bottom_exclude + + var/list/west_match + var/list/west_exclude + var/list/west_top_match + var/list/west_top_exclude + var/list/west_middle_match + var/list/west_middle_exclude + var/list/west_bottom_match + var/list/west_bottom_exclude diff --git a/code/modules/mapping/dmm_suite/dmm_scan.dm b/code/modules/mapping/dmm_suite/dmm_scan.dm index c4066a8f2aef..580f5dd0dc12 100644 --- a/code/modules/mapping/dmm_suite/dmm_scan.dm +++ b/code/modules/mapping/dmm_suite/dmm_scan.dm @@ -1,44 +1,48 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/dmm_scan_params - var/list/trivial_typecache = null - - var/list/typepaths_of_interest = null - /** - * * high-performance variant of typepaths_of_interest so it's not - * regenerated every time. overrides it if set. - */ - var/list/zebra_typecache_of_interest = null - -/datum/dmm_scan - var/is_map_empty - - var/nontrivial_bl_x - var/nontrivial_bl_y - var/nontrivial_tr_x - var/nontrivial_tr_y - var/nontrivial_width - var/nontrivial_height - - /// typepath --> list(list(x, y), ...) - var/list/typepaths_of_interest - -/datum/dmm_scan/proc/scan(datum/dmm_parsed/parsed, datum/dmm_scan_params/params) - if(!parsed || !params) - CRASH("invalid arguments to dmm_scan constructor") - - var/list/trivial_typecache = params.trivial_typecache || cached_typecacheof(list( - /turf/template_noop, - /area/template_noop, - )) - var/list/interesting_typecache - if(params.zebra_typecache_of_interest) - interesting_typecache = params.zebra_typecache_of_interest - else - var/list/transformed_interesting_typepaths = list() - for(var/typepath in params.typepaths_of_interest) - transformed_interesting_typepaths[typepath] = typepath - interesting_typecache = zebra_typecacheof(transformed_interesting_typepaths) - -#warn impl all +// /datum/dmm_scan_params +// var/list/trivial_typecache = null + +// var/list/typepaths_of_interest = null +// /** +// * * high-performance variant of typepaths_of_interest so it's not +// * regenerated every time. overrides it if set. +// */ +// var/list/zebra_typecache_of_interest = null + +// /** +// * Used to scan a parsed DMM for contents +// * * Expensive, so avoid using this. +// */ +// /datum/dmm_scan +// var/is_map_empty + +// var/nontrivial_bl_x +// var/nontrivial_bl_y +// var/nontrivial_tr_x +// var/nontrivial_tr_y +// var/nontrivial_width +// var/nontrivial_height + +// /// typepath --> list(list(x, y), ...) +// var/list/typepaths_of_interest + +// /datum/dmm_scan/proc/scan(datum/dmm_parsed/parsed, datum/dmm_scan_params/params) +// if(!parsed || !params) +// CRASH("invalid arguments to dmm_scan constructor") + +// var/list/trivial_typecache = params.trivial_typecache || cached_typecacheof(list( +// /turf/template_noop, +// /area/template_noop, +// )) +// var/list/interesting_typecache +// if(params.zebra_typecache_of_interest) +// interesting_typecache = params.zebra_typecache_of_interest +// else +// var/list/transformed_interesting_typepaths = list() +// for(var/typepath in params.typepaths_of_interest) +// transformed_interesting_typepaths[typepath] = typepath +// interesting_typecache = zebra_typecacheof(transformed_interesting_typepaths) + +// #warn impl all diff --git a/icons/modules/jigsaw/jigsaw_connector_3x3.dmi b/icons/modules/jigsaw/jigsaw_connector_3x3.dmi deleted file mode 100644 index 765ba0a9eaee55fb932de9f129d08ad6c870183a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1985 zcmc(geN@tC6vrQs6yK)PB(x%&YdU8chK5H4DtsGi7Fo?+MjDkbO_Ew^ra#wOE<8Dx zW<^=cPT4!HL0Sp)CQCtPYS}SGrOb{?MMwmB*$+@o}^j03aZE;nDW6($IBwIc)ajuUxZ(#^R*sX0Uf;p(+AnDJKSrc?mz_3^aDD|erG(|tYhD>|UIzHAOnp5|RX7wLmPXNUC2^z}V$m*&HU zXtWqF;$1fpIk#6gO4jFLx;bgh5whWy(0zgv*<-_NF^(-n^sb!@GTz>>wywC>-xGX){Knvj2A2k!{XjwZ zgEL~q9`0Rrijeq8Urvt$9Tu-ssoWd{g60Tl6~Zv{%58^i!Q;=4J60(@0d&DT76D2; z02DBVL8~Pcp(BvAm(~Day<$40uO)@&2OmvsFG58;xqmdX(xH>J9MQSqsM~BiE}3=J zVmev9SCmria;p|(N6=i>X@OYS39@-J?VKqRT_Ft!zj?k9r;`;_hHKsh%od0myrX^! z(NK=)=Uj@k`19nOwOD|aVBDz{wwFJGY0uOG5L17%cx)Olq-n7+xn^m#rBy>QyxMZPgP7Q+8M?0;EG~VQ zxw&k!)F;$J*XzBdaL%luOoWqrmbHlY$X`Eu)kSE$XSTX0tMURlUx0$FQ~QgaW;ri% zH*P{ok~kRC-kzl{%sdnnd|-`MmzP5ziJFcy`Woev%nVq>ptq{wQUxHOlE+UPPhFIk z+lumIJGpOc4-za0RRsXB90}a#PGNj;6VfmQIC^~hbSq_0Nx%Q|`b^H}@KLUzj492> zGOmn)+d+Y#%USbVI?5$Ybc0+Nq>G0wiUeLA!CBSNbJwuq*o+y%$aW!y?t_LSn#Dw3t5@|vZ?mNz_Bsy~0Z(A0%Q{u|>{g8#u{ zZO0&j+HLJ?Eq1F1zz+?Ny=J{ok1TpR!>=qDEatwd#zt0*t^xCm9k+# z`?ux|Hhp7})op2xtPJ-AB7x$bcu25+Cb}>L!8{+%HIqkt?fH>NN!8LI!{nWt*jeAQ z=qh*fz+OHPDVgDn`eVY@$W&TJmTFnYK%8v^FUdT`)pBHNlpMB z0#usXb9kK~93EJ;(WY2_dQ|C!Re8{Qj2HA~zy2=*e~>X?P%2^O*S>son(HJHE`1=0 zb{oy&x=Mug1pcU9!ALBM$$L0^V7o%L`q)AxOh#&A8*%-WoSYc9vofQd-{oPrS~U&` iiTc_9flX7B#uAJ(6=j=RerLe{WDp;nM7z3#`NKa(nA`^d From 5f76a4250a0c0b7999265c4d9addc7b37164be89 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 22 Jun 2026 21:44:38 -0700 Subject: [PATCH 22/44] Alignment --- code/__DEFINES/mapping/system.dm | 1 + .../subsystem/mapping/mapping-boot.dm | 36 +++++++++++++++++-- .../modules/mapping/map_system/map/station.dm | 19 +++++++--- maps/stations/minitest/minitest.dm | 4 ++- maps/stations/rift/rift.dm | 2 ++ maps/stations/strelka/strelka.dm | 2 +- maps/stations/tether/tether.dm | 2 ++ 7 files changed, 56 insertions(+), 10 deletions(-) diff --git a/code/__DEFINES/mapping/system.dm b/code/__DEFINES/mapping/system.dm index 415d126d1a62..7f4040665143 100644 --- a/code/__DEFINES/mapping/system.dm +++ b/code/__DEFINES/mapping/system.dm @@ -18,6 +18,7 @@ /// /// * this is the most granular a turf reservation alloc can be (e.g. 8x8 for '8') /// * this is the resolution of spatial gridmaps. why? this way spatial queries are aligned and super fast. +/// * World maxx/maxy must be a multiple of this. #define TURF_CHUNK_RESOLUTION 8 /// Z-Level border diff --git a/code/controllers/subsystem/mapping/mapping-boot.dm b/code/controllers/subsystem/mapping/mapping-boot.dm index d33e707dd37f..d6b248f231cd 100644 --- a/code/controllers/subsystem/mapping/mapping-boot.dm +++ b/code/controllers/subsystem/mapping/mapping-boot.dm @@ -37,33 +37,63 @@ allocate_reserved_level() /datum/controller/subsystem/mapping/proc/load_station(datum/map/station/instance) + // pull next map if needed if(isnull(instance)) if(isnull(next_station)) read_next_map() instance = next_station + + // failed? get a random prod-ready map if(isnull(instance)) var/list/datum/map/station/valid = list() for(var/id in keyed_maps) var/datum/map/station/map = keyed_maps[id] if(!istype(map, /datum/map/station)) continue - if(!map.allow_random_draw) + if(!map.production_ready) continue valid += map instance = pick(valid) + + // requires ASSERT(istype(instance)) ASSERT(isnull(loaded_station)) ASSERT(!initialized) ASSERT(!world_is_loaded) + + // calc size + var/init_width = instance.world_width + var/init_height = instance.world_height + + if(init_width != instance.world_width || init_height != instance.world_height) + stack_trace("Station [instance] ([instance.id]) had mismatch width/height (map [init_width]x[init_height] vs declared world [instance.world_width]x[instance.world_height]). \ + Stations should have the same width/height as the world.") + init_width = instance.world_width + init_height = instance.world_height + + if(init_width % TURF_CHUNK_RESOLUTION != 0 || init_height % TURF_CHUNK_RESOLUTION != 0) + stack_trace("Station [instance] ([instance.id]) has world dimensions that are not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION]). \ + Stations must have world dimensions that are a multiple of TURF_CHUNK_RESOLUTION. Automatically aligning upwards.") + + init_width = CEILING(init_width, TURF_CHUNK_RESOLUTION) + init_height = CEILING(init_height, TURF_CHUNK_RESOLUTION) + // bootstrap - bootstrap_world(max(instance.world_width, instance.width), max(instance.world_height, instance.height)) + bootstrap_world( + init_width, + init_height, + ) + // mark world_is_loaded = TRUE loaded_station = instance + // pick gateway level - this must happen after the station is picked as it's added to the lateload list createRandomGatewayLevel() + // load load_map(instance, TRUE) + return TRUE /datum/controller/subsystem/mapping/proc/write_next_map(datum/map/station/next) @@ -143,7 +173,7 @@ if(!istype(checking)) // not a station map continue - if(!checking.allow_random_draw) + if(!checking.production_ready) continue potential += checking return SAFEPICK(potential) diff --git a/code/modules/mapping/map_system/map/station.dm b/code/modules/mapping/map_system/map/station.dm index e64f7d56f899..2b461ca2a69a 100644 --- a/code/modules/mapping/map_system/map/station.dm +++ b/code/modules/mapping/map_system/map/station.dm @@ -10,14 +10,14 @@ abstract_type = /datum/map/station category = "Stations" - /// force world to be bigger width - var/world_width - /// force world to be bigger height - var/world_height + /// set world width + var/world_width = 192 + /// set world height + var/world_height = 192 /// allow random picking if no map set /// used to exclude indev maps - var/allow_random_draw = TRUE + var/production_ready = TRUE //* Game World *// /// world_location's this is considered @@ -35,3 +35,12 @@ /// * if null, the storyteller system will be inactive. /// * seriously you don't want this to be null. var/world_faction_id = /datum/world_faction/corporation/nanotrasen::id + +/datum/map/station/validate(for_load, list/out_errors) + if(world_width % TURF_CHUNK_RESOLUTION != 0) + out_errors += "[src]: world_width ([world_width]) is not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION])" + . = FALSE + if(world_height % TURF_CHUNK_RESOLUTION != 0) + out_errors += "[src]: world_height ([world_height]) is not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION])" + . = FALSE + . = ..() && . diff --git a/maps/stations/minitest/minitest.dm b/maps/stations/minitest/minitest.dm index 480fac4e1986..430cfff15288 100644 --- a/maps/stations/minitest/minitest.dm +++ b/maps/stations/minitest/minitest.dm @@ -6,7 +6,9 @@ ) width = 100 height = 100 - allow_random_draw = FALSE + world_width = 120 + world_height = 120 + production_ready = FALSE lateload = list( /datum/map/minitest_beach, /datum/map/minitest_carpfarm, diff --git a/maps/stations/rift/rift.dm b/maps/stations/rift/rift.dm index 511713d46711..4e2a8c1a9976 100644 --- a/maps/stations/rift/rift.dm +++ b/maps/stations/rift/rift.dm @@ -15,6 +15,8 @@ ) width = 192 height = 192 + world_width = 192 + world_height = 192 dependencies = list( /datum/map/centcom/nts_demeter, ) diff --git a/maps/stations/strelka/strelka.dm b/maps/stations/strelka/strelka.dm index 6a448a5032b0..071ba055ee73 100644 --- a/maps/stations/strelka/strelka.dm +++ b/maps/stations/strelka/strelka.dm @@ -33,7 +33,7 @@ ) // todo: remove after dev is done - allow_random_draw = FALSE + production_ready = FALSE //* LEGACY BELOW *// diff --git a/maps/stations/tether/tether.dm b/maps/stations/tether/tether.dm index de5a7f36be16..e33fdad92e08 100644 --- a/maps/stations/tether/tether.dm +++ b/maps/stations/tether/tether.dm @@ -14,6 +14,8 @@ ) width = 192 height = 192 + world_width = 192 + world_height = 192 dependencies = list( /datum/map/centcom/virgo_3b_colony, ) From 2bb6d265d819bce3bae630bcaa064049a515e39d Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 22 Jun 2026 22:12:35 -0700 Subject: [PATCH 23/44] actual alignment --- code/__DEFINES/mapping/system.dm | 3 +- .../subsystem/mapping/mapping-boot.dm | 10 ++-- .../subsystem/mapping/mapping-reservations.dm | 4 +- code/controllers/subsystem/mapping/mapping.dm | 2 +- code/controllers/subsystem/spatial_grids.dm | 22 ++++----- .../datums/components/movable/spatial_grid.dm | 4 +- .../admin/verbs/game/load_custom_overmap.dm | 4 +- code/modules/jigsaw/jigsaw_generation.dm | 2 +- .../modules/mapping/map_system/map/station.dm | 8 ++-- .../mapping/map_system/map_reservation.dm | 48 +++++++++---------- 10 files changed, 53 insertions(+), 54 deletions(-) diff --git a/code/__DEFINES/mapping/system.dm b/code/__DEFINES/mapping/system.dm index 7f4040665143..cefb76d89536 100644 --- a/code/__DEFINES/mapping/system.dm +++ b/code/__DEFINES/mapping/system.dm @@ -13,13 +13,12 @@ #define BLANK_TURF_TYPE /turf/space #define BLANK_AREA_TYPE /area/space - /// Turf chunk resolution /// /// * this is the most granular a turf reservation alloc can be (e.g. 8x8 for '8') /// * this is the resolution of spatial gridmaps. why? this way spatial queries are aligned and super fast. /// * World maxx/maxy must be a multiple of this. -#define TURF_CHUNK_RESOLUTION 8 +#define TURF_ALIGNMENT 8 /// Z-Level border /// diff --git a/code/controllers/subsystem/mapping/mapping-boot.dm b/code/controllers/subsystem/mapping/mapping-boot.dm index d6b248f231cd..9024836624dc 100644 --- a/code/controllers/subsystem/mapping/mapping-boot.dm +++ b/code/controllers/subsystem/mapping/mapping-boot.dm @@ -71,12 +71,12 @@ init_width = instance.world_width init_height = instance.world_height - if(init_width % TURF_CHUNK_RESOLUTION != 0 || init_height % TURF_CHUNK_RESOLUTION != 0) - stack_trace("Station [instance] ([instance.id]) has world dimensions that are not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION]). \ - Stations must have world dimensions that are a multiple of TURF_CHUNK_RESOLUTION. Automatically aligning upwards.") + if(init_width % TURF_ALIGNMENT != 0 || init_height % TURF_ALIGNMENT != 0) + stack_trace("Station [instance] ([instance.id]) has world dimensions that are not a multiple of TURF_ALIGNMENT ([TURF_ALIGNMENT]). \ + Stations must have world dimensions that are a multiple of TURF_ALIGNMENT. Automatically aligning upwards.") - init_width = CEILING(init_width, TURF_CHUNK_RESOLUTION) - init_height = CEILING(init_height, TURF_CHUNK_RESOLUTION) + init_width = CEILING(init_width, TURF_ALIGNMENT) + init_height = CEILING(init_height, TURF_ALIGNMENT) // bootstrap bootstrap_world( diff --git a/code/controllers/subsystem/mapping/mapping-reservations.dm b/code/controllers/subsystem/mapping/mapping-reservations.dm index 94f746f2fa23..e8a9eb443698 100644 --- a/code/controllers/subsystem/mapping/mapping-reservations.dm +++ b/code/controllers/subsystem/mapping/mapping-reservations.dm @@ -16,7 +16,7 @@ initialize_reservation_level(level_struct.z_index) reservation_levels |= level_struct.z_index // make a list with a predetermined size for the lookup - reservation_spatial_lookups[level_struct.z_index] = new /list(ceil(world.maxx / TURF_CHUNK_RESOLUTION) * ceil(world.maxy / TURF_CHUNK_RESOLUTION)) + reservation_spatial_lookups[level_struct.z_index] = new /list(ceil(world.maxx / TURF_ALIGNMENT) * ceil(world.maxy / TURF_ALIGNMENT)) return level_struct.z_index /** @@ -71,7 +71,7 @@ * @return turf reservation someone's in, or null if they're not in a reservation */ /datum/controller/subsystem/mapping/proc/get_turf_reservation(atom/where) - return reservation_spatial_lookups[get_z(where)]?[ceil(where.x / TURF_CHUNK_RESOLUTION) + (ceil(where.y / TURF_CHUNK_RESOLUTION) - 1) * ceil(world.maxx / TURF_CHUNK_RESOLUTION)] + return reservation_spatial_lookups[get_z(where)]?[ceil(where.x / TURF_ALIGNMENT) + (ceil(where.y / TURF_ALIGNMENT) - 1) * ceil(world.maxx / TURF_ALIGNMENT)] /area/reservation_unused name = "Unallocated Reservation Area" diff --git a/code/controllers/subsystem/mapping/mapping.dm b/code/controllers/subsystem/mapping/mapping.dm index 9823dc3b2b04..e09abd4d90b4 100644 --- a/code/controllers/subsystem/mapping/mapping.dm +++ b/code/controllers/subsystem/mapping/mapping.dm @@ -91,7 +91,7 @@ SUBSYSTEM_DEF(mapping) /// * null means that a level isn't a reservation level /// * this also means that we can't zclear / 'free' reserved levels; they're effectively immovable due to this datastructure /// * if it is a reserved level, it returns the spatial grid - /// * to get a chunk, do `spatial_lookup[ceil(where.x / TURF_CHUNK_RESOLUTION) + (ceil(where.y / TURF_CHUNK_RESOLUTION) - 1) * ceil(world.maxx / TURF_CHUNK_RESOLUTION)]` + /// * to get a chunk, do `spatial_lookup[ceil(where.x / TURF_ALIGNMENT) + (ceil(where.y / TURF_ALIGNMENT) - 1) * ceil(world.maxx / TURF_ALIGNMENT)]` /// * being in border counts as being in the reservation. you won't be soon, though. var/static/list/reservation_spatial_lookups = list() diff --git a/code/controllers/subsystem/spatial_grids.dm b/code/controllers/subsystem/spatial_grids.dm index 337936f76ae8..2e6b872a1186 100644 --- a/code/controllers/subsystem/spatial_grids.dm +++ b/code/controllers/subsystem/spatial_grids.dm @@ -58,8 +58,8 @@ SUBSYSTEM_DEF(spatial_grids) /datum/spatial_grid/New(expected_type, init_flags) // initialize grid - src.width = ceil(world.maxx / TURF_CHUNK_RESOLUTION) - src.height = ceil(world.maxy / TURF_CHUNK_RESOLUTION) + src.width = ceil(world.maxx / TURF_ALIGNMENT) + src.height = ceil(world.maxy / TURF_ALIGNMENT) src.grids = list() src.expected_type = expected_type @@ -131,10 +131,10 @@ SUBSYSTEM_DEF(spatial_grids) */ /datum/spatial_grid/proc/range_query(turf/epicenter, distance) . = list() - var/min_x = ceil((epicenter.x - distance) / TURF_CHUNK_RESOLUTION) - var/min_y = ceil((epicenter.y - distance) / TURF_CHUNK_RESOLUTION) - var/max_x = ceil((epicenter.x + distance) / TURF_CHUNK_RESOLUTION) - var/max_y = ceil((epicenter.y + distance) / TURF_CHUNK_RESOLUTION) + var/min_x = ceil((epicenter.x - distance) / TURF_ALIGNMENT) + var/min_y = ceil((epicenter.y - distance) / TURF_ALIGNMENT) + var/max_x = ceil((epicenter.x + distance) / TURF_ALIGNMENT) + var/max_y = ceil((epicenter.y + distance) / TURF_ALIGNMENT) var/list/grid = src.grids[epicenter.z] for(var/x in max(1, min_x) to min(src.width, max_x)) for(var/y in max(1, min_y) to min(src.height, max_y)) @@ -196,10 +196,10 @@ SUBSYSTEM_DEF(spatial_grids) /datum/spatial_grid/proc/reservation_range_query(datum/map_reservation/reservation, turf/epicenter, distance) ASSERT(reservation.spatial_z == epicenter.z) . = list() - var/min_x = ceil((epicenter.x - distance) / TURF_CHUNK_RESOLUTION) - var/min_y = ceil((epicenter.y - distance) / TURF_CHUNK_RESOLUTION) - var/max_x = ceil((epicenter.x + distance) / TURF_CHUNK_RESOLUTION) - var/max_y = ceil((epicenter.y + distance) / TURF_CHUNK_RESOLUTION) + var/min_x = ceil((epicenter.x - distance) / TURF_ALIGNMENT) + var/min_y = ceil((epicenter.y - distance) / TURF_ALIGNMENT) + var/max_x = ceil((epicenter.x + distance) / TURF_ALIGNMENT) + var/max_y = ceil((epicenter.y + distance) / TURF_ALIGNMENT) var/list/grid = src.grids[epicenter.z] for(var/x in max(1, min_x, reservation.spatial_bl_x) to min(src.width, max_x, reservation.spatial_tr_x)) for(var/y in max(1, min_y, reservation.spatial_bl_y) to min(src.height, max_y, reservation.spatial_tr_y)) @@ -233,7 +233,7 @@ SUBSYSTEM_DEF(spatial_grids) // we're not on a reserved level, use normal return range_query(epicenter, distance) // we're on a reserve level - var/datum/map_reservation/reservation = spatial_lookup[ceil(epicenter.x / TURF_CHUNK_RESOLUTION) + (ceil(epicenter.y / TURF_CHUNK_RESOLUTION) - 1) * ceil(world.maxx / TURF_CHUNK_RESOLUTION)] + var/datum/map_reservation/reservation = spatial_lookup[ceil(epicenter.x / TURF_ALIGNMENT) + (ceil(epicenter.y / TURF_ALIGNMENT) - 1) * ceil(world.maxx / TURF_ALIGNMENT)] // check if reservation exists if(reservation) // it does, get stuff in reservation diff --git a/code/datums/components/movable/spatial_grid.dm b/code/datums/components/movable/spatial_grid.dm index 19ceac711809..e4bbeae60537 100644 --- a/code/datums/components/movable/spatial_grid.dm +++ b/code/datums/components/movable/spatial_grid.dm @@ -40,7 +40,7 @@ RegisterSignal(root, COMSIG_MOVABLE_MOVED, PROC_REF(update)) root = root.loc if(isturf(root)) - var/idx = ceil(root.x / TURF_CHUNK_RESOLUTION) + grid_width * (ceil(root.y / TURF_CHUNK_RESOLUTION) - 1) + var/idx = ceil(root.x / TURF_ALIGNMENT) + grid_width * (ceil(root.y / TURF_ALIGNMENT) - 1) grid.direct_insert(parent, root.z, idx) current_index = idx @@ -58,7 +58,7 @@ return // turf --> turf, try to do an optimized, lazy update if(isturf(oldloc) && isturf(newloc) && (oldloc.z == newloc.z)) - var/new_index = ceil(newloc.x / TURF_CHUNK_RESOLUTION) + grid_width * (ceil(newloc.y / TURF_CHUNK_RESOLUTION) - 1) + var/new_index = ceil(newloc.x / TURF_ALIGNMENT) + grid_width * (ceil(newloc.y / TURF_ALIGNMENT) - 1) var/z = oldloc.z if(new_index != current_index) grid.direct_remove(parent, z, current_index) diff --git a/code/modules/admin/verbs/game/load_custom_overmap.dm b/code/modules/admin/verbs/game/load_custom_overmap.dm index fc9bbb81f160..0d51d821087f 100644 --- a/code/modules/admin/verbs/game/load_custom_overmap.dm +++ b/code/modules/admin/verbs/game/load_custom_overmap.dm @@ -25,8 +25,8 @@ ADMIN_VERB_DEF(load_custom_overmap, R_ADMIN, "Load Custom Overmap", "Load a cust tgui_alert(invoking, "Failed to parse map.", "Parse Error") return - var/max_x = world.maxx - TURF_CHUNK_RESOLUTION * 2 - var/max_y = world.maxy - TURF_CHUNK_RESOLUTION * 2 + var/max_x = world.maxx - TURF_ALIGNMENT * 2 + var/max_y = world.maxy - TURF_ALIGNMENT * 2 if(parsed_map.width >= max_x || parsed_map.height >= max_y) tgui_alert(invoking, "Your map is too big for the current world size. Yours was [parsed_map.width]x[parsed_map.height], but maximum is: [max_x]x[max_y]", "Improper Dimensions") diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_generation.dm index 048be5fbf0e7..d7c39ee43e7d 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_generation.dm @@ -58,7 +58,7 @@ /datum/jigsaw_generation/proc/get_tile_height() return src.height * src.alignment -// var/idx = ceil(root.x / TURF_CHUNK_RESOLUTION) + grid_width * (ceil(root.y / TURF_CHUNK_RESOLUTION) - 1) +// var/idx = ceil(root.x / TURF_ALIGNMENT) + grid_width * (ceil(root.y / TURF_ALIGNMENT) - 1) #warn impl diff --git a/code/modules/mapping/map_system/map/station.dm b/code/modules/mapping/map_system/map/station.dm index 2b461ca2a69a..6815f51e22b5 100644 --- a/code/modules/mapping/map_system/map/station.dm +++ b/code/modules/mapping/map_system/map/station.dm @@ -37,10 +37,10 @@ var/world_faction_id = /datum/world_faction/corporation/nanotrasen::id /datum/map/station/validate(for_load, list/out_errors) - if(world_width % TURF_CHUNK_RESOLUTION != 0) - out_errors += "[src]: world_width ([world_width]) is not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION])" + if(world_width % TURF_ALIGNMENT != 0) + out_errors += "[src]: world_width ([world_width]) is not a multiple of TURF_ALIGNMENT ([TURF_ALIGNMENT])" . = FALSE - if(world_height % TURF_CHUNK_RESOLUTION != 0) - out_errors += "[src]: world_height ([world_height]) is not a multiple of TURF_CHUNK_RESOLUTION ([TURF_CHUNK_RESOLUTION])" + if(world_height % TURF_ALIGNMENT != 0) + out_errors += "[src]: world_height ([world_height]) is not a multiple of TURF_ALIGNMENT ([TURF_ALIGNMENT])" . = FALSE . = ..() && . diff --git a/code/modules/mapping/map_system/map_reservation.dm b/code/modules/mapping/map_system/map_reservation.dm index 26c9ed4ab3e7..1f7430f4f47e 100644 --- a/code/modules/mapping/map_system/map_reservation.dm +++ b/code/modules/mapping/map_system/map_reservation.dm @@ -108,7 +108,7 @@ // unegister from lookup var/list/spatial_lookup = SSmapping.reservation_spatial_lookups[spatial_z] - var/spatial_width = ceil(world.maxx / TURF_CHUNK_RESOLUTION) + var/spatial_width = ceil(world.maxx / TURF_ALIGNMENT) for(var/spatial_x in spatial_bl_x to spatial_tr_x) for(var/spatial_y in spatial_bl_y to spatial_tr_y) var/index = spatial_x + (spatial_y - 1) * spatial_width @@ -157,21 +157,21 @@ var/found_a_spot = FALSE - var/how_many_wide = ceil(real_width / TURF_CHUNK_RESOLUTION) - var/how_many_high = ceil(real_height / TURF_CHUNK_RESOLUTION) - var/total_many_wide = floor(world.maxx / TURF_CHUNK_RESOLUTION) - var/total_many_high = floor(world.maxy / TURF_CHUNK_RESOLUTION) + var/how_many_wide = ceil(real_width / TURF_ALIGNMENT) + var/how_many_high = ceil(real_height / TURF_ALIGNMENT) + var/total_many_wide = floor(world.maxx / TURF_ALIGNMENT) + var/total_many_high = floor(world.maxy / TURF_ALIGNMENT) // the dreaded 5 deep for loop while((level_index = z_override) || (level_index = pick_n_take(possible_levels))) /** * here's the magic - * because reservations are aligned to TURF_CHUNK_RESOLUTION, + * because reservations are aligned to TURF_ALIGNMENT, * we just have to check the start spots, since we always align to them. * * bottom-left turfs on reservations align to - * (chunk_x - 1) * TURF_CHUNK_RESOLUTION + 1 - * (chunk_y - 1) * TURF_CHUNK_RESOLUTION + 1 + * (chunk_x - 1) * TURF_ALIGNMENT + 1 + * (chunk_y - 1) * TURF_ALIGNMENT + 1 */ for(var/outer_x in 1 to (total_many_wide - how_many_wide + 1)) for(var/outer_y in 1 to (total_many_high - how_many_high + 1)) @@ -179,8 +179,8 @@ for(var/inner_x in outer_x to outer_x + how_many_wide - 1) for(var/inner_y in outer_y to outer_y + how_many_high - 1) var/turf/checking = locate( - 1 + (inner_x - 1) * TURF_CHUNK_RESOLUTION, - 1 + (inner_y - 1) * TURF_CHUNK_RESOLUTION, + 1 + (inner_x - 1) * TURF_ALIGNMENT, + 1 + (inner_y - 1) * TURF_ALIGNMENT, level_index, ) if(!(checking.turf_flags & TURF_FLAG_UNUSED_RESERVATION)) @@ -192,7 +192,7 @@ continue // calculate non-bordered - BL = locate(1 + TURF_CHUNK_RESOLUTION * (outer_x - 1) + border, 1 + TURF_CHUNK_RESOLUTION * (outer_y - 1) + border, level_index) + BL = locate(1 + TURF_ALIGNMENT * (outer_x - 1) + border, 1 + TURF_ALIGNMENT * (outer_y - 1) + border, level_index) TR = locate(BL.x + width - 1, BL.y + height - 1, level_index) final = block(BL, TR) @@ -201,19 +201,19 @@ final_border = list( ) + block( // left pane locate( - 1 + TURF_CHUNK_RESOLUTION * (outer_x - 1), - 1 + TURF_CHUNK_RESOLUTION * (outer_y - 1), + 1 + TURF_ALIGNMENT * (outer_x - 1), + 1 + TURF_ALIGNMENT * (outer_y - 1), level_index, ), locate( - 1 + TURF_CHUNK_RESOLUTION * (outer_x - 1) + (border - 1), + 1 + TURF_ALIGNMENT * (outer_x - 1) + (border - 1), BL.y + (real_height - 1), level_index, ), ) + block( // right pane locate( BL.x + (real_width - 1) - (border - 1), - 1 + TURF_CHUNK_RESOLUTION * (outer_y - 1), + 1 + TURF_ALIGNMENT * (outer_y - 1), level_index, ), locate( @@ -223,7 +223,7 @@ ), ) + block( // top pane without left and right locate( - 1 + TURF_CHUNK_RESOLUTION * (outer_x - 1) + border, + 1 + TURF_ALIGNMENT * (outer_x - 1) + border, BL.y + (real_height - 1) - (border - 1), level_index, ), @@ -234,13 +234,13 @@ ), ) + block( // bottom pane without left and right locate( - 1 + TURF_CHUNK_RESOLUTION * (outer_x - 1) + border, - 1 + TURF_CHUNK_RESOLUTION * (outer_y - 1), + 1 + TURF_ALIGNMENT * (outer_x - 1) + border, + 1 + TURF_ALIGNMENT * (outer_y - 1), level_index, ), locate( BL.x + (real_width - 1) - border, - 1 + TURF_CHUNK_RESOLUTION * (outer_y - 1) + (border - 1), + 1 + TURF_ALIGNMENT * (outer_y - 1) + (border - 1), level_index, ), ) @@ -366,12 +366,12 @@ // register in lookup ASSERT(bottom_left_coords[3] == top_right_coords[3]) // just to make sure assumptions made at time of writing are still true - src.spatial_bl_x = ceil(bottom_left_coords[1] / TURF_CHUNK_RESOLUTION) - src.spatial_bl_y = ceil(bottom_left_coords[2] / TURF_CHUNK_RESOLUTION) - src.spatial_tr_x = ceil(top_right_coords[1] / TURF_CHUNK_RESOLUTION) - src.spatial_tr_y = ceil(top_right_coords[2] / TURF_CHUNK_RESOLUTION) + src.spatial_bl_x = ceil(bottom_left_coords[1] / TURF_ALIGNMENT) + src.spatial_bl_y = ceil(bottom_left_coords[2] / TURF_ALIGNMENT) + src.spatial_tr_x = ceil(top_right_coords[1] / TURF_ALIGNMENT) + src.spatial_tr_y = ceil(top_right_coords[2] / TURF_ALIGNMENT) src.spatial_z = bottom_left_coords[3] - var/spatial_width = ceil(world.maxx / TURF_CHUNK_RESOLUTION) + var/spatial_width = ceil(world.maxx / TURF_ALIGNMENT) var/list/spatial_lookup = SSmapping.reservation_spatial_lookups[spatial_z] for(var/spatial_x in src.spatial_bl_x to src.spatial_tr_x) for(var/spatial_y in src.spatial_bl_y to src.spatial_tr_y) From 105587367030d0468cc8880bd0283175580a2fd5 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 23 Jun 2026 02:27:34 -0700 Subject: [PATCH 24/44] hm --- citadel.dme | 9 +-- code/__HELPERS/lists/shuffle.dm | 4 +- ...{jigsaw_generation.dm => jigsaw_buffer.dm} | 52 +++++++++++------- code/modules/jigsaw/jigsaw_generator.dm | 2 +- ...e_config.dm => jigsaw_generator_config.dm} | 24 ++++++++ .../jigsaw/jigsaw_generator_results.dm | 8 +++ code/modules/jigsaw/jigsaw_spawn_config.dm | 16 ------ code/modules/jigsaw/jigsaw_template.dm | 55 +++++++++++++++---- code/modules/jigsaw/jigsaw_template_pack.dm | 42 ++++++++++++++ .../jigsaw_aligned_spawner.dm} | 12 ++-- .../fixed_template_seeding_target.dm | 14 +++++ .../map_injection/fixed_template_seeding.dm | 32 ++++++++++- .../modules/mapping/map_system/map_context.dm | 6 +- 13 files changed, 215 insertions(+), 61 deletions(-) rename code/modules/jigsaw/{jigsaw_generation.dm => jigsaw_buffer.dm} (56%) rename code/modules/jigsaw/{jigsaw_template_config.dm => jigsaw_generator_config.dm} (83%) create mode 100644 code/modules/jigsaw/jigsaw_generator_results.dm delete mode 100644 code/modules/jigsaw/jigsaw_spawn_config.dm create mode 100644 code/modules/jigsaw/jigsaw_template_pack.dm rename code/modules/jigsaw/{jigsaw_spawner.dm => map_helper/jigsaw_aligned_spawner.dm} (76%) diff --git a/citadel.dme b/citadel.dme index f776051dc3d4..607366be5aef 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3471,14 +3471,15 @@ #include "code\modules\integrated_electronics\tools\debugger.dm" #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" -#include "code\modules\jigsaw\jigsaw_generation.dm" +#include "code\modules\jigsaw\jigsaw_buffer.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" +#include "code\modules\jigsaw\jigsaw_generator_config.dm" +#include "code\modules\jigsaw\jigsaw_generator_results.dm" #include "code\modules\jigsaw\jigsaw_pattern.dm" -#include "code\modules\jigsaw\jigsaw_spawn_config.dm" -#include "code\modules\jigsaw\jigsaw_spawner.dm" #include "code\modules\jigsaw\jigsaw_template.dm" -#include "code\modules\jigsaw\jigsaw_template_config.dm" +#include "code\modules\jigsaw\jigsaw_template_pack.dm" #include "code\modules\jigsaw\jigsaw_template_pattern.dm" +#include "code\modules\jigsaw\map_helper\jigsaw_aligned_spawner.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/code/__HELPERS/lists/shuffle.dm b/code/__HELPERS/lists/shuffle.dm index d54cbf5f4e0d..70bebe9aa7e1 100644 --- a/code/__HELPERS/lists/shuffle.dm +++ b/code/__HELPERS/lists/shuffle.dm @@ -1,5 +1,5 @@ /** - * + * Shuffle by returning a new list. */ /proc/shuffle(list/L) if(!L) @@ -12,7 +12,7 @@ return L /** - * Randomize: Returns nothing and acts on list in place. + * Shuffle a list in-place. */ /proc/shuffle_inplace(list/L) if(!L) diff --git a/code/modules/jigsaw/jigsaw_generation.dm b/code/modules/jigsaw/jigsaw_buffer.dm similarity index 56% rename from code/modules/jigsaw/jigsaw_generation.dm rename to code/modules/jigsaw/jigsaw_buffer.dm index d7c39ee43e7d..4cbc959e73f5 100644 --- a/code/modules/jigsaw/jigsaw_generation.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -1,17 +1,18 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/jigsaw_generation_enqueued +/datum/jigsaw_buffer_enqueued var/lower_left_x var/lower_left_y var/lower_left_z var/orientation var/datum/jigsaw_template/template + var/datum/dmm_context/context -/datum/jigsaw_generation_tile +/datum/jigsaw_buffer_tile var/x var/y - var/datum/jigsaw_generation_enqueued/enqueued + var/datum/jigsaw_buffer_enqueued/enqueued var/list/north_match var/list/north_exclude var/list/south_match @@ -21,52 +22,65 @@ var/list/west_match var/list/west_exclude -/datum/jigsaw_generation_tile/New(x, y) +/datum/jigsaw_buffer_tile/New(x, y) src.x = x src.y = y -/datum/jigsaw_generation_tile/block_off +/datum/jigsaw_buffer_tile/block_off /** * Datum used to hold current state for a jigsaw dungeon generation. */ -/datum/jigsaw_generation - var/alignment +/datum/jigsaw_buffer var/width var/height /** * Grid. This is a flat spatial grid with width x height of the intended generation. * * This is indexed as [x + width * (y - 1)], starting at 1,1 as lower left. - * * Value is a /datum/jigsaw_generation_tile or null + * * Value is a /datum/jigsaw_buffer_tile or null */ var/list/grid + + /** + * Loaded into world? + */ + var/loaded = FALSE + /** * List of enqueued placements. */ - var/list/datum/jigsaw_generation_enqueued/enqueued = list() + var/list/datum/jigsaw_buffer_enqueued/enqueued = list() + /** + * List of map contexts. + */ + var/list/datum/map_context/enqueued_contexts = list() -/datum/jigsaw_generation/New(alignment, width, height) - src.alignment = alignment +/datum/jigsaw_buffer/New(width, height) src.width = width src.height = height src.grid = new /list(src.width * src.height) -/datum/jigsaw_generation/proc/get_tile_width() - return src.width * src.alignment +/datum/jigsaw_buffer/Destroy() + cleanup() + return ..() -/datum/jigsaw_generation/proc/get_tile_height() - return src.height * src.alignment +/datum/jigsaw_buffer/proc/get_tile_width() + return src.width * TURF_ALIGNMENT + +/datum/jigsaw_buffer/proc/get_tile_height() + return src.height * TURF_ALIGNMENT // var/idx = ceil(root.x / TURF_ALIGNMENT) + grid_width * (ceil(root.y / TURF_ALIGNMENT) - 1) #warn impl -/datum/jigsaw_generation/proc/cleanup() - QDEL_LIST(enqueued) - +/datum/jigsaw_buffer/proc/cleanup() for(var/i in 1 to length(grid)) - var/datum/jigsaw_generation_tile/tile = grid[i] + var/datum/jigsaw_buffer_tile/tile = grid[i] if(tile) qdel(tile) grid = list() + + QDEL_LIST(enqueued) + QDEL_LIST(enqueued_contexts) diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 90a57e07bfe0..3e7f3817f6ed 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -72,7 +72,7 @@ /datum/jigsaw_generator/proc/generate_impl_emplace_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) // place templates down - for(var/datum/jigsaw_generation_enqueued/placement in generation.enqueued) + for(var/datum/jigsaw_buffer_enqueued/placement in generation.enqueued) var/datum/jigsaw_template/template = placement.template var/datum/dmm_context/context = new #warn impl context stuff diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm similarity index 83% rename from code/modules/jigsaw/jigsaw_template_config.dm rename to code/modules/jigsaw/jigsaw_generator_config.dm index c2e76e5fb5a1..fb89b1525e97 100644 --- a/code/modules/jigsaw/jigsaw_template_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -1,6 +1,30 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// +/datum/jigsaw_generator_config + var/tile_budget = 0 + var/list/custom_budgets = list() + + /** + * Set to override auto-marker settings. Otherwise, this uses + * the map's auto-marker config. + */ + var/datum/turf_auto_marker_config/auto_marker_config + +/datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_config + +/datum/jigsaw_spawn_config/proc/get_resultant_config() as /datum/jigsaw_spawn_resultant_config + return new /datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_config/specific + +/datum/jigsaw_spawn_config/specific/get_resultant_config() + var/datum/jigsaw_spawn_resultant_config/result = new + + return result + /datum/jigsaw_template_resultant_config /// alignment /// * this is minimum dimensions (width and height); width and height of diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm new file mode 100644 index 000000000000..cb755bfcd2f5 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -0,0 +1,8 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_generator_results + var/approximate_ms_used = 0 + var/list/datum/jigsaw_template/placed_counts = list() + +#warn impl diff --git a/code/modules/jigsaw/jigsaw_spawn_config.dm b/code/modules/jigsaw/jigsaw_spawn_config.dm deleted file mode 100644 index d320281d4ff2..000000000000 --- a/code/modules/jigsaw/jigsaw_spawn_config.dm +++ /dev/null @@ -1,16 +0,0 @@ -//* This file is explicitly licensed under the MIT license. *// -//* Copyright (c) 2026 Citadel Station Developers *// - -/datum/jigsaw_spawn_resultant_config - -/datum/jigsaw_spawn_config - -/datum/jigsaw_spawn_config/proc/get_resultant_config() as /datum/jigsaw_spawn_resultant_config - return new /datum/jigsaw_spawn_resultant_config - -/datum/jigsaw_spawn_config/specific - -/datum/jigsaw_spawn_config/specific/get_resultant_config() - var/datum/jigsaw_spawn_resultant_config/result = new - - return result diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 6c8151d87c22..7bd465eb889c 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -3,17 +3,20 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) -/proc/fetch_cached_jigsaw_template(datum/jigsaw_template/path) - if(istype(path)) - return path - else if(isnull(path)) +/proc/fetch_cached_jigsaw_template(datum/jigsaw_template/resolvable) + if(istype(resolvable)) + return resolvable + else if(isnull(resolvable)) return null - if(GLOB.jigsaw_template_cache[path]) - return GLOB.jigsaw_template_cache[path] + if(GLOB.jigsaw_template_cache[resolvable]) + return GLOB.jigsaw_template_cache[resolvable] - var/datum/jigsaw_template/template = new path - GLOB.jigsaw_template_cache[path] = template + if(!ispath(resolvable)) + return null + + var/datum/jigsaw_template/template = new resolvable + GLOB.jigsaw_template_cache[resolvable] = template return template @@ -56,6 +59,11 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// * appended to the jigsaw generator's name for area names var/display_name + /** + * List of budget entries that must be consuemd to place us. + */ + var/list/custom_budgets = list() + /// parsed map if held var/datum/dmm_parsed/parsed @@ -71,16 +79,43 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) parsed = new(path) /datum/jigsaw_template/override + name = null + path = null + alignment = null + + offset_x = null + offset_y = null + + display_name = null + + custom_budgets = null + /** * * Can be path, instance, or ID. * * (ID isn't implemented yet.) */ var/datum/jigsaw_template/template -/datum/jigsaw_template/override/proc/prepare() +/datum/jigsaw_template/override/prepare() var/datum/jigsaw_template/resolved = fetch_cached_jigsaw_template(template) if(!resolved) CRASH("Invalid template override: [template]") resolved.prepare() - // + if(isnull(src.name)) + src.name = resolved.name + if(isnull(src.path)) + src.path = resolved.path + if(isnull(src.alignment)) + src.alignment = resolved.alignment + + if(isnull(src.offset_x)) + src.offset_x = resolved.offset_x + if(isnull(src.offset_y)) + src.offset_y = resolved.offset_y + + if(isnull(src.display_name)) + src.display_name = resolved.display_name + + if(isnull(src.custom_budgets)) + src.custom_budgets = resolved.custom_budgets.Copy() diff --git a/code/modules/jigsaw/jigsaw_template_pack.dm b/code/modules/jigsaw/jigsaw_template_pack.dm new file mode 100644 index 000000000000..3228ee83afd5 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template_pack.dm @@ -0,0 +1,42 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +GLOBAL_LIST_EMPTY(jigsaw_template_pack_cache) + +/proc/fetch_cached_jigsaw_template_pack(datum/jigsaw_template_pack/resolvable) + if(istype(resolvable)) + return resolvable + else if(isnull(resolvable)) + return null + + if(GLOB.jigsaw_template_pack_cache[resolvable]) + return GLOB.jigsaw_template_pack_cache[resolvable] + + if(!ispath(resolvable)) + return null + + var/datum/jigsaw_template_pack/template = new resolvable + GLOB.jigsaw_template_pack_cache[resolvable] = template + + return template + +/datum/jigsaw_template_pack + /** + * May be ID, typepath, instance. + */ + var/list/templates = list() + +/datum/jigsaw_template_pack/proc/validate_templates() + for(var/resolvable in src.templates) + var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + if(!template) + CRASH("Invalid template '[resolvable]' detected in pack.") + +/datum/jigsaw_template_pack/proc/resolve_templates() as /list + var/list/datum/jigsaw_template/resolved = list() + for(var/resolvable in src.templates) + var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + if(!template) + continue + resolved += template + return resolved diff --git a/code/modules/jigsaw/jigsaw_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm similarity index 76% rename from code/modules/jigsaw/jigsaw_spawner.dm rename to code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index bb54db2f607f..2cc7f8a3e84e 100644 --- a/code/modules/jigsaw/jigsaw_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -1,7 +1,7 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/obj/map_helper/jigsaw_spawner +/obj/map_helper/jigsaw_aligned_spawner name = "Jigsaw Dungeon Spawner" desc = "Automatically emplaces a jigsaw dungeon on mapload." #warn sprite @@ -18,24 +18,24 @@ var/datum/jigsaw_template/spawn_template_centered var/spawn_template_centered_orientation = SOUTH -/obj/map_helper/jigsaw_spawner/New() +/obj/map_helper/jigsaw_aligned_spawner/New() if(ispath(template_config)) template_config = new(template_config) if(ispath(auto_marker_config)) auto_marker_config = new(auto_marker_config) ..() -/obj/map_helper/jigsaw_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) +/obj/map_helper/jigsaw_aligned_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) ..() generate() -/obj/map_helper/jigsaw_spawner/proc/generate() +/obj/map_helper/jigsaw_aligned_spawner/proc/generate() var/datum/jigsaw_generator/generator = new generator.auto_marker_config = auto_marker_config generator.template_config = template_config - var/datum/jigsaw_generation/generation = new + var/datum/jigsaw_buffer/generation = new if(spawn_template_centered) var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(spawn_template_centered) @@ -43,7 +43,7 @@ if(!template) CRASH("Invalid initial template detected; skipping generation.") - var/datum/jigsaw_generation_enqueued_placement/initial_placement = new + var/datum/jigsaw_buffer_enqueued_placement/initial_placement = new #warn impl generation.broadphase_enqueued += initial_placement diff --git a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm index 1418b337c38e..59ce78d2e32e 100644 --- a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm +++ b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm @@ -17,6 +17,20 @@ "default" = 1, ) + var/emplaced = FALSE + +/obj/map_helper/fixed_template_seeding_target/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) + ..() + map_context?.collected_fixed_template_seeding_targets += src + +/obj/map_helper/fixed_template_seeding_target/proc/emplace_template(datum/map_template/template, datum/dmm_context/context) + SHOULD_NOT_OVERRIDE(TRUE) + + emplaced = TRUE + do_emplace_template(template, context) + +/obj/map_helper/fixed_template_seeding_target/proc/do_emplace_template(datum/map_template/template, datum/dmm_context/context) + PROTECTED_PROC(TRUE) #warn impl /obj/map_helper/fixed_template_seeding_target/corner_aligned diff --git a/code/modules/mapping/map_injection/fixed_template_seeding.dm b/code/modules/mapping/map_injection/fixed_template_seeding.dm index 443ff89c39cb..d7ec3b68aaec 100644 --- a/code/modules/mapping/map_injection/fixed_template_seeding.dm +++ b/code/modules/mapping/map_injection/fixed_template_seeding.dm @@ -31,7 +31,34 @@ #warn impl /datum/map_injection/fixed_template_seeding/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) - . = ..() + ..() + + var/list/obj/map_helper/fixed_template_seeding_target/not_emplaced = map_context?.collected_fixed_template_seeding_targets.Copy() + var/list/obj/map_helper/fixed_template_seeding_target/emplace_templates = list() + + for(var/datum/fixed_template_seeding_single/require_single in shuffle(src.require)) + if(!length(not_emplaced)) + stack_trace("Failed to assign required template '[require_single]' for injection [src] ([REF(src)]) (no more targets).") + break + + var/datum/fixed_template_seeding_single/require_amount = src.require[require_single] + for(var/i in 1 to require_amount) + if(!require_single.attempt_assign(not_emplaced, emplace_templates)) + // TODO: better error handling + stack_trace("Failed to assign required template '[require_single]' for injection [src] ([REF(src)]) (failed on [i] / [require_amount]).") + break + + for(var/datum/fixed_template_seeding_single/push_single in shuffle(src.push)) + if(!length(not_emplaced)) + break + + var/datum/fixed_template_seeding_single/push_amount = src.push[push_single] + for(var/i in 1 to push_amount) + if(!push_single.attempt_assign(not_emplaced, emplace_templates)) + // TODO: better error handling + break + + if(length(not_emplaced)) #warn impl /datum/fixed_template_seeding_single @@ -39,6 +66,9 @@ /// * /datum/map_template_random accepted as well. var/list/templates = list() +/datum/fixed_template_seeding_single/proc/attempt_assign(list/obj/map_helper/fixed_template_seeding_target/pull_from, list/obj/map_helper/fixed_template_seeding_target/assign_into) + #warn impl + /** * Just to namespace map-specific from polluting types. */ diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 1f08ea6d7f0e..96f4ca8580f3 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -59,11 +59,13 @@ //* Bespoke 'collected' values. *// /// collected gear markers - var/list/obj/map_helper/gear_marker/collected_distributed_gear_markers + var/list/obj/map_helper/gear_marker/distributed/collected_distributed_gear_markers /// collected gear markers - var/list/obj/map_helper/gear_marker/collected_stamped_gear_markers_by_role + var/list/obj/map_helper/gear_marker/stamped/collected_stamped_gear_markers_by_role /// collected role markers var/list/obj/map_helper/role_marker/collected_role_markers_by_tag + /// collected fixed template seeding targets + var/list/obj/map_helper/fixed_template_seeding_target/collected_fixed_template_seeding_targets #warn hook all From d727d388e731c5e64dac4be9b578012538eb4556 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 23 Jun 2026 02:51:45 -0700 Subject: [PATCH 25/44] that --- code/modules/jigsaw/jigsaw_generator_results.dm | 2 ++ code/modules/jigsaw/jigsaw_pattern.dm | 17 ++++++++++++++++- code/modules/jigsaw/jigsaw_template_pattern.dm | 1 + 3 files changed, 19 insertions(+), 1 deletion(-) diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index cb755bfcd2f5..14a141df214d 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -4,5 +4,7 @@ /datum/jigsaw_generator_results var/approximate_ms_used = 0 var/list/datum/jigsaw_template/placed_counts = list() + var/tile_budget_used = 0 + var/list/custom_budgets_used = list() #warn impl diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index 9fa4f3385859..2279c2afb4a2 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -4,6 +4,8 @@ /datum/jigsaw_pattern var/width var/height + var/override_tile_cost = null + var/tmp/cached_tile_cost = null /** * * index = (y - 1) * width + x, as a flat list. * * this is as south-rotated. we iterate over this differently @@ -11,8 +13,21 @@ */ var/list/pattern -/datum/jigsaw_pattern/New(width, height) +/datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width src.height = height + src.override_tile_cost = override_tile_cost src.pattern = new /list(width * height) + +/datum/jigsaw_pattern/proc/get_tile_cost() + if(!isnull(override_tile_cost)) + return override_tile_cost + + if(isnull(cached_tile_cost)) + cached_tile_cost = 0 + for(var/i in 1 to width * height) + if(pattern[i]) + cached_tile_cost += 1 + + return cached_tile_cost diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index 8ea26e0763cc..1e8449b003b1 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -2,6 +2,7 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_template_pattern + var/override_tile_cost = null /datum/jigsaw_template_pattern/proc/get_pattern() as /datum/jigsaw_pattern return new /datum/jigsaw_pattern(0, 0) From 5cdafc1f1ef8512e0e2439321f812c207eb8a7c9 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:33:54 -0700 Subject: [PATCH 26/44] new join tagging system --- citadel.dme | 1 + code/__DEFINES/jigsaw.dm | 47 +++++++++++++++++++ code/game/machinery/doors/door.dm | 9 ++++ code/modules/jigsaw/jigsaw_buffer.dm | 35 +++++++++++++- code/modules/jigsaw/jigsaw_pattern.dm | 2 +- code/modules/jigsaw/jigsaw_template.dm | 7 +++ .../modules/jigsaw/jigsaw_template_pattern.dm | 8 ++++ code/modules/jigsaw/jigsaw_tile.dm | 30 ++++++++++++ code/modules/mapping/spawner/window.dm | 7 +++ 9 files changed, 144 insertions(+), 2 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_tile.dm diff --git a/citadel.dme b/citadel.dme index 607366be5aef..99ee21f2dcb5 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3479,6 +3479,7 @@ #include "code\modules\jigsaw\jigsaw_template.dm" #include "code\modules\jigsaw\jigsaw_template_pack.dm" #include "code\modules\jigsaw\jigsaw_template_pattern.dm" +#include "code\modules\jigsaw\jigsaw_tile.dm" #include "code\modules\jigsaw\map_helper\jigsaw_aligned_spawner.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" diff --git a/code/__DEFINES/jigsaw.dm b/code/__DEFINES/jigsaw.dm index a3c1d1156856..3a1d9b069ef7 100644 --- a/code/__DEFINES/jigsaw.dm +++ b/code/__DEFINES/jigsaw.dm @@ -2,3 +2,50 @@ //* Copyright (c) 2026 Citadel Station Developers *// // --- Defines for 'jigsaw' module, a procedural dungeon / map generator. --- + +#if TURF_ALIGNMENT != 8 + #error jigsaw maps were designed for 8x8 alignment. if you change this, rework .. everything? +#endif + +// Common match / require / exclude tags + +/** + * This means; + * * This side of the template is entirely contained within the grid bounds + */ +#define JIGSAW_MATCH_INSIDE_WALL "inside-wall" + +/** + * This means; + * * This side of the template has a wall one outside the grid bounds. + */ +#define JIGSAW_MATCH_OUTSIDE_WALL "outside-wall" + +/** + * This means; + * * This side of the template may be arbitrarily joined on the center 2 tiles + * of the inside/outside wall (depending on which other 'match' is set) + */ +#define JIGSAW_MATCH_CENTER_JOIN_2 "center-join-2" + +/** + * This means; + * * This side of the template may be arbitrarily joined on the center 4 tiles + * of the inside/outside wall (depending on which other 'match' is set) + */ +#define JIGSAW_MATCH_CENTER_JOIN_4 "center-join-4" + +/** + * This means; + * * This side of the template will always be airtight sealed on the join point, + * whether with doors or windows or walls. + * * The lack of JOIN_LEAKY doesn't imply JOIN_AIRTIGHT. + */ +#define JIGSAW_MATCH_JOIN_AIRTIGHT "join-airtight" + +/** + * This means; + * * This side of the template will always *not* be airtight. + * * The lack of JOIN_AIRTIGHT doesn't imply JOIN_LEAKY. + */ +#define JIGSAW_MATCH_JOIN_LEAKY "join-leaky" diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index cb96e175abae..25183a883d72 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -25,6 +25,13 @@ hit_sound_brute = 'sound/weapons/smash.ogg' + //* Preload *// + /** + * If set, erase us on mapload if an airlock is already there. + */ + var/tmp/map_impl_erase_if_another_door_exists = FALSE + + //* Legacy Below *// var/mineral var/open_layer = DOOR_OPEN_LAYER var/closed_layer = DOOR_CLOSED_LAYER @@ -49,6 +56,8 @@ var/reinforcing = 0 +#warn mapload trample + /obj/machinery/door/Initialize(mapload, newdir) . = ..() if(density) diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 4cbc959e73f5..4e762bc4e662 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -9,23 +9,56 @@ var/datum/jigsaw_template/template var/datum/dmm_context/context +/** + * * All lists are immutable and potentially (likely) shared for efficiency. + */ /datum/jigsaw_buffer_tile var/x var/y var/datum/jigsaw_buffer_enqueued/enqueued + var/list/north_match + var/list/north_require var/list/north_exclude + var/list/south_match + var/list/south_require var/list/south_exclude + var/list/east_match + var/list/east_require var/list/east_exclude + var/list/west_match + var/list/west_require var/list/west_exclude -/datum/jigsaw_buffer_tile/New(x, y) +/datum/jigsaw_buffer_tile/New(datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile, x, y) + src.enqueued = enqueued + + src.north_match = tile.north_match + src.north_require = tile.north_require + src.north_exclude = tile.north_exclude + + src.south_match = tile.south_match + src.south_require = tile.south_require + src.south_exclude = tile.south_exclude + + src.east_match = tile.east_match + src.east_require = tile.east_require + src.east_exclude = tile.east_exclude + + src.west_match = tile.west_match + src.west_require = tile.west_require + src.west_exclude = tile.west_exclude + src.x = x src.y = y +/datum/jigsaw_buffer_tile/Destroy() + src.enqueued = null + return ..() + /datum/jigsaw_buffer_tile/block_off /** diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index 2279c2afb4a2..d61d2119ed1a 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -11,7 +11,7 @@ * * this is as south-rotated. we iterate over this differently * if the thing accessing this wants a rotation. */ - var/list/pattern + var/list/datum/jigsaw_tile/pattern /datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 7bd465eb889c..2648c4aa8e30 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -43,8 +43,15 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// * generations must only use templates with the same alignment. /// * templates are emplaced with one tile of overlap for their alignment. var/alignment = 8 + + + /// pattern var/datum/jigsaw_template_pattern/pattern + #warn impl + /// cached resultant pattern + var/tmp/datum/jigsaw_pattern/resultant_pattern + /// Offset the actual load from the lower-left (direction relative) of /// the aligned pattern. /// * This is in tiles, not alignment multiples. diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index 1e8449b003b1..59169958f501 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -1,9 +1,17 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// +/** + * Template patterns. + * + * * Each + */ /datum/jigsaw_template_pattern var/override_tile_cost = null +/** + * Returns a potentially-cached pattern. + */ /datum/jigsaw_template_pattern/proc/get_pattern() as /datum/jigsaw_pattern return new /datum/jigsaw_pattern(0, 0) diff --git a/code/modules/jigsaw/jigsaw_tile.dm b/code/modules/jigsaw/jigsaw_tile.dm new file mode 100644 index 000000000000..60837c712205 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_tile.dm @@ -0,0 +1,30 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * A single tile in a jigsaw template's pattern + * + * * Each tile has a list of match / exclude for each side. + * * The match / require / exclude lists are used to determine if this tile can be placed + * next to another tile. + * * All lists are immutable and potentially (likely) shared for efficiency. + * * Match is tags for that side of ourselves. + * * Require is tags that must be present on the other side of the adjacent tile. + * * Exclude is tags that must NOT be present on the other side of the adjacent tile + */ +/datum/jigsaw_tile + var/list/north_match + var/list/north_require + var/list/north_exclude + + var/list/south_match + var/list/south_require + var/list/south_exclude + + var/list/east_match + var/list/east_require + var/list/east_exclude + + var/list/west_match + var/list/west_require + var/list/west_exclude diff --git a/code/modules/mapping/spawner/window.dm b/code/modules/mapping/spawner/window.dm index 1d456d8f0328..e044e908822f 100644 --- a/code/modules/mapping/spawner/window.dm +++ b/code/modules/mapping/spawner/window.dm @@ -3,6 +3,11 @@ icon_state = "window_grille_pane" layer = WINDOW_LAYER + /** + * If set, will erase ourselves if a conflicting window exists + */ + var/tmp/map_impl_erase_if_another_window_exists = FALSE + /// found dirs var/found_dirs = NONE @@ -34,6 +39,8 @@ /// todo: rename to electrochromatic_id var/id +#warn trample? + /obj/spawner/window/Initialize(mapload) if(!full_window) find_dirs() From 62cd9b6e01822d72f50b294afefb6c244928c16f Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:37:28 -0700 Subject: [PATCH 27/44] add vars --- code/__DEFINES/jigsaw.dm | 16 +++++++++- code/modules/jigsaw/jigsaw_template.dm | 7 ++-- .../modules/jigsaw/jigsaw_template_pattern.dm | 32 +++++++++++++++++++ 3 files changed, 52 insertions(+), 3 deletions(-) diff --git a/code/__DEFINES/jigsaw.dm b/code/__DEFINES/jigsaw.dm index 3a1d9b069ef7..ff8cb9d74a7f 100644 --- a/code/__DEFINES/jigsaw.dm +++ b/code/__DEFINES/jigsaw.dm @@ -7,7 +7,21 @@ #error jigsaw maps were designed for 8x8 alignment. if you change this, rework .. everything? #endif -// Common match / require / exclude tags +//* Priorities *// + +/** + * Set this if your templates should yield to other templates. + */ +#define JIGSAW_PRIORITY_YIELD_OTHERS -100 + +#define JIGSAW_PRIORITY_DEFAULT 0 + +/** + * Set this if your templates should trample over other templates. + */ +#define JIGSAW_PRIORITY_TRAMPLE_OTHERS 100 + +//* Common match / require / exclude tags *// /** * This means; diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 2648c4aa8e30..fb06af512574 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -43,8 +43,11 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// * generations must only use templates with the same alignment. /// * templates are emplaced with one tile of overlap for their alignment. var/alignment = 8 - - + /// load priority + /// * lower loads first, so anything with walls that are meant + /// to be joinable via trampling should be lower priority + /// * anything trampling over other templates should be higher priority + var/priority = JIGSAW_PRIORITY_DEFAULT /// pattern var/datum/jigsaw_template_pattern/pattern diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index 59169958f501..dec288a1bee9 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -57,15 +57,19 @@ height = 1 var/list/south_match + var/list/south_require var/list/south_exclude var/list/north_match + var/list/north_require var/list/north_exclude var/list/east_match + var/list/east_require var/list/east_exclude var/list/west_match + var/list/west_require var/list/west_exclude /datum/jigsaw_template_pattern/rect/s_2x2 @@ -73,31 +77,43 @@ height = 2 var/list/south_match + var/list/south_require var/list/south_exclude var/list/south_left_match + var/list/south_left_require var/list/south_left_exclude var/list/south_right_match + var/list/south_right_require var/list/south_right_exclude var/list/north_match + var/list/north_require var/list/north_exclude var/list/north_left_match + var/list/north_left_require var/list/north_left_exclude var/list/north_right_match + var/list/north_right_require var/list/north_right_exclude var/list/east_match + var/list/east_require var/list/east_exclude var/list/east_top_match + var/list/east_top_require var/list/east_top_exclude var/list/east_bottom_match + var/list/east_bottom_require var/list/east_bottom_exclude var/list/west_match + var/list/west_require var/list/west_exclude var/list/west_top_match + var/list/west_top_require var/list/west_top_exclude var/list/west_bottom_match + var/list/west_bottom_require var/list/west_bottom_exclude /datum/jigsaw_template_pattern/rect/s_3x3 @@ -105,37 +121,53 @@ height = 3 var/list/south_match + var/list/south_require var/list/south_exclude var/list/south_left_match + var/list/south_left_require var/list/south_left_exclude var/list/south_middle_match + var/list/south_middle_require var/list/south_middle_exclude var/list/south_right_match + var/list/south_right_require var/list/south_right_exclude var/list/north_match + var/list/north_require var/list/north_exclude var/list/north_left_match + var/list/north_left_require var/list/north_left_exclude var/list/north_middle_match + var/list/north_middle_require var/list/north_middle_exclude var/list/north_right_match + var/list/north_right_require var/list/north_right_exclude var/list/east_match + var/list/east_require var/list/east_exclude var/list/east_top_match + var/list/east_top_require var/list/east_top_exclude var/list/east_middle_match + var/list/east_middle_require var/list/east_middle_exclude var/list/east_bottom_match + var/list/east_bottom_require var/list/east_bottom_exclude var/list/west_match + var/list/west_require var/list/west_exclude var/list/west_top_match + var/list/west_top_require var/list/west_top_exclude var/list/west_middle_match + var/list/west_middle_require var/list/west_middle_exclude var/list/west_bottom_match + var/list/west_bottom_require var/list/west_bottom_exclude From b54ac99166cd64a459417ddb10357a5ee1bb03cc Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 24 Jun 2026 09:47:10 -0700 Subject: [PATCH 28/44] how many layers of indirection do you need to change a lightbulb --- citadel.dme | 6 +++ .../repository/jigsaw_generator_presets.dm | 7 ++++ .../repository/jigsaw_template_packs.dm | 7 ++++ .../repository/jigsaw_templates.dm | 14 +++++++ code/modules/jigsaw/jigsaw_buffer.dm | 2 +- code/modules/jigsaw/jigsaw_chain_generator.dm | 24 +++++++++++ .../jigsaw/jigsaw_chain_generator_results.dm | 11 +++++ code/modules/jigsaw/jigsaw_generator.dm | 4 +- .../modules/jigsaw/jigsaw_generator_config.dm | 20 +++++----- .../modules/jigsaw/jigsaw_generator_preset.dm | 10 +++++ .../jigsaw/jigsaw_generator_results.dm | 2 +- code/modules/jigsaw/jigsaw_template.dm | 40 ++++--------------- code/modules/jigsaw/jigsaw_template_pack.dm | 31 +++----------- .../map_helper/jigsaw_aligned_spawner.dm | 4 +- maps/submaps/jigsaw/tomb_1/tomb_1.dm | 20 +++++----- 15 files changed, 119 insertions(+), 83 deletions(-) create mode 100644 code/controllers/repository/jigsaw_generator_presets.dm create mode 100644 code/controllers/repository/jigsaw_template_packs.dm create mode 100644 code/controllers/repository/jigsaw_templates.dm create mode 100644 code/modules/jigsaw/jigsaw_chain_generator.dm create mode 100644 code/modules/jigsaw/jigsaw_chain_generator_results.dm create mode 100644 code/modules/jigsaw/jigsaw_generator_preset.dm diff --git a/citadel.dme b/citadel.dme index 99ee21f2dcb5..da45357f0683 100644 --- a/citadel.dme +++ b/citadel.dme @@ -598,6 +598,9 @@ #include "code\controllers\repository\designs.dm" #include "code\controllers\repository\flooring.dm" #include "code\controllers\repository\guidebook.dm" +#include "code\controllers\repository\jigsaw_generator_presets.dm" +#include "code\controllers\repository\jigsaw_template_packs.dm" +#include "code\controllers\repository\jigsaw_templates.dm" #include "code\controllers\repository\languages.dm" #include "code\controllers\repository\material_traits.dm" #include "code\controllers\repository\materials.dm" @@ -3472,8 +3475,11 @@ #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" #include "code\modules\jigsaw\jigsaw_buffer.dm" +#include "code\modules\jigsaw\jigsaw_chain_generator.dm" +#include "code\modules\jigsaw\jigsaw_chain_generator_results.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" #include "code\modules\jigsaw\jigsaw_generator_config.dm" +#include "code\modules\jigsaw\jigsaw_generator_preset.dm" #include "code\modules\jigsaw\jigsaw_generator_results.dm" #include "code\modules\jigsaw\jigsaw_pattern.dm" #include "code\modules\jigsaw\jigsaw_template.dm" diff --git a/code/controllers/repository/jigsaw_generator_presets.dm b/code/controllers/repository/jigsaw_generator_presets.dm new file mode 100644 index 000000000000..5af8e3160db0 --- /dev/null +++ b/code/controllers/repository/jigsaw_generator_presets.dm @@ -0,0 +1,7 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(jigsaw_generator_presets) + name = "Repository - Jigsaw Generator Presets" + expected_type = /datum/prototype/jigsaw_generator_preset + database_key = "jigsaw_generator_preset" diff --git a/code/controllers/repository/jigsaw_template_packs.dm b/code/controllers/repository/jigsaw_template_packs.dm new file mode 100644 index 000000000000..35ae81dfa74e --- /dev/null +++ b/code/controllers/repository/jigsaw_template_packs.dm @@ -0,0 +1,7 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(jigsaw_template_packs) + name = "Repository - Jigsaw Template Packs" + expected_type = /datum/prototype/jigsaw_template_pack + database_key = "jigsaw_template_pack" diff --git a/code/controllers/repository/jigsaw_templates.dm b/code/controllers/repository/jigsaw_templates.dm new file mode 100644 index 000000000000..9cba5567c4e3 --- /dev/null +++ b/code/controllers/repository/jigsaw_templates.dm @@ -0,0 +1,14 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +REPOSITORY_DEF(jigsaw_templates) + name = "Repository - Jigsaw Templates" + expected_type = /datum/prototype/jigsaw_template + database_key = "jigsaw_template" + +/datum/controller/repository/jigsaw_templates/proc/unload_caches() + for(var/id in id_lookup) + var/datum/prototype/jigsaw_template/instance = id_lookup[id] + if(!istype(instance)) + continue + instance.unload_cache() diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 4e762bc4e662..bf18a97382bb 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -6,7 +6,7 @@ var/lower_left_y var/lower_left_z var/orientation - var/datum/jigsaw_template/template + var/datum/prototype/jigsaw_template/template var/datum/dmm_context/context /** diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm new file mode 100644 index 000000000000..f74abe7d2e32 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -0,0 +1,24 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Runs multiple generator cycles on a buffer. + */ +/datum/jigsaw_chain_generator + var/prepared = FALSE + var/list/datum/jigsaw_generator_config/run_generator_configs = list() + + +/datum/jigsaw_chain_generator/proc/prepare() + SHOULD_NOT_OVERRIDE(TRUE) + + if(prepared) + CRASH("double-prepare; not all chain-generators are idempotent for prepare_impl().") + prepared = TRUE + #warn impl + +/datum/jigsaw_chain_generator/proc/prepare_impl() + PROTECTED_PROC(TRUE) + + +#warn impl diff --git a/code/modules/jigsaw/jigsaw_chain_generator_results.dm b/code/modules/jigsaw/jigsaw_chain_generator_results.dm new file mode 100644 index 000000000000..8124ff03b2c4 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_chain_generator_results.dm @@ -0,0 +1,11 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_chain_generator_results + var/list/datum/jigsaw_generator_results/results = list() + + var/tmp/total_approximate_ms_used = 0 + var/tmp/total_tile_budget_used = 0 + var/tmp/list/total_custom_budgets_used = list() + +#warn impl diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 3e7f3817f6ed..5284f44321b6 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -24,7 +24,7 @@ #warn impl -/datum/jigsaw_generator/proc/generate_from_initial_piece(datum/jigsaw_template/initial_piece, turf/lower_left, orientation) +/datum/jigsaw_generator/proc/generate_from_initial_piece(datum/prototype/jigsaw_template/initial_piece, turf/lower_left, orientation) /datum/jigsaw_generator/proc/generate_at_turf_centered(turf/center, radius_horizontal_tiles, radius_vertical_tiles) if(isnull(radius_vertical_tiles)) @@ -73,7 +73,7 @@ /datum/jigsaw_generator/proc/generate_impl_emplace_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) // place templates down for(var/datum/jigsaw_buffer_enqueued/placement in generation.enqueued) - var/datum/jigsaw_template/template = placement.template + var/datum/prototype/jigsaw_template/template = placement.template var/datum/dmm_context/context = new #warn impl context stuff diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index fb89b1525e97..b0064245fb2c 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -34,19 +34,19 @@ /// always start with these templates, if exists /// * may be typepaths or instances /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/initial_templates = list() + var/list/datum/prototype/jigsaw_template/initial_templates = list() /// ***attempt*** to place these templates, associate to count /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/priority_templates = list() + var/list/datum/prototype/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/required_templates = list() + var/list/datum/prototype/jigsaw_template/required_templates = list() /// templates to use, weighted. /// * may be typepaths or instances /// * this are constrained by budgets. - var/list/datum/jigsaw_template/weighted_templates = list() + var/list/datum/prototype/jigsaw_template/weighted_templates = list() /// allowed costs /// * only used for weighted templates @@ -64,10 +64,10 @@ /datum/jigsaw_template_config/everything/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new results.budgets = budgets.Copy() - for(var/datum/jigsaw_template/path as anything in subtypesof(/datum/jigsaw_template)) + for(var/datum/prototype/jigsaw_template/path as anything in subtypesof(/datum/prototype/jigsaw_template)) if(path.abstract_type == path) continue - var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(path) + var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(path) result.weighted_templates[template] = 1 return result @@ -75,18 +75,18 @@ /// always start with these templates, if exists /// * may be typepaths or instances /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/initial_templates = list() + var/list/datum/prototype/jigsaw_template/initial_templates = list() /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/priority_templates = list() + var/list/datum/prototype/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails /// * this ignores budget and will not take from it. - var/list/datum/jigsaw_template/required_templates = list() + var/list/datum/prototype/jigsaw_template/required_templates = list() /// templates to use, weighted. /// * may be typepaths or instances /// * this are constrained by budgets. - var/list/datum/jigsaw_template/weighted_templates = list() + var/list/datum/prototype/jigsaw_template/weighted_templates = list() /// allowed costs /// * only used for weighted templates diff --git a/code/modules/jigsaw/jigsaw_generator_preset.dm b/code/modules/jigsaw/jigsaw_generator_preset.dm new file mode 100644 index 000000000000..8c8614392796 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_generator_preset.dm @@ -0,0 +1,10 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/prototype/jigsaw_generator_preset + var/name = "Unknown Preset" + var/desc = "Some kind of preset." + + var/datum/jigsaw_generator_config/config + +#warn impl diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index 14a141df214d..c402c290de66 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -3,7 +3,7 @@ /datum/jigsaw_generator_results var/approximate_ms_used = 0 - var/list/datum/jigsaw_template/placed_counts = list() + var/list/datum/prototype/jigsaw_template/placed_counts = list() var/tile_budget_used = 0 var/list/custom_budgets_used = list() diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index fb06af512574..f20c87378b35 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -1,30 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -GLOBAL_LIST_EMPTY(jigsaw_template_cache) - -/proc/fetch_cached_jigsaw_template(datum/jigsaw_template/resolvable) - if(istype(resolvable)) - return resolvable - else if(isnull(resolvable)) - return null - - if(GLOB.jigsaw_template_cache[resolvable]) - return GLOB.jigsaw_template_cache[resolvable] - - if(!ispath(resolvable)) - return null - - var/datum/jigsaw_template/template = new resolvable - GLOB.jigsaw_template_cache[resolvable] = template - - return template - -/proc/unload_cached_jigsaw_templates() - for(var/path in GLOB.jigsaw_template_cache) - var/datum/jigsaw_template/template = GLOB.jigsaw_template_cache[path] - template.unload_cache() - /** * A template for jigsaw generation. * * Templates are a multiple of alignment in width/height, plus one for border. This is @@ -33,7 +9,7 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) * * Templates are loaded in with their lower left tile (after taking into account any offsets) * aligned relative to the south direction. If it's rotated, the alignment rotates with it. */ -/datum/jigsaw_template +/datum/prototype/jigsaw_template /// the name of this template, used for debugging and referencing in other templates. var/name = "Dungeon Fragment" /// path on disk @@ -77,18 +53,18 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) /// parsed map if held var/datum/dmm_parsed/parsed -/datum/jigsaw_template/proc/prepare() +/datum/prototype/jigsaw_template/proc/prepare() return -/datum/jigsaw_template/proc/unload_cache() +/datum/prototype/jigsaw_template/proc/unload_cache() parsed = null -/datum/jigsaw_template/proc/load_cached() +/datum/prototype/jigsaw_template/proc/load_cached() if(parsed) return parsed = new(path) -/datum/jigsaw_template/override +/datum/prototype/jigsaw_template/override name = null path = null alignment = null @@ -104,10 +80,10 @@ GLOBAL_LIST_EMPTY(jigsaw_template_cache) * * Can be path, instance, or ID. * * (ID isn't implemented yet.) */ - var/datum/jigsaw_template/template + var/datum/prototype/jigsaw_template/template -/datum/jigsaw_template/override/prepare() - var/datum/jigsaw_template/resolved = fetch_cached_jigsaw_template(template) +/datum/prototype/jigsaw_template/override/prepare() + var/datum/prototype/jigsaw_template/resolved = fetch_cached_jigsaw_template(template) if(!resolved) CRASH("Invalid template override: [template]") resolved.prepare() diff --git a/code/modules/jigsaw/jigsaw_template_pack.dm b/code/modules/jigsaw/jigsaw_template_pack.dm index 3228ee83afd5..e13e465f5738 100644 --- a/code/modules/jigsaw/jigsaw_template_pack.dm +++ b/code/modules/jigsaw/jigsaw_template_pack.dm @@ -1,41 +1,22 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -GLOBAL_LIST_EMPTY(jigsaw_template_pack_cache) - -/proc/fetch_cached_jigsaw_template_pack(datum/jigsaw_template_pack/resolvable) - if(istype(resolvable)) - return resolvable - else if(isnull(resolvable)) - return null - - if(GLOB.jigsaw_template_pack_cache[resolvable]) - return GLOB.jigsaw_template_pack_cache[resolvable] - - if(!ispath(resolvable)) - return null - - var/datum/jigsaw_template_pack/template = new resolvable - GLOB.jigsaw_template_pack_cache[resolvable] = template - - return template - -/datum/jigsaw_template_pack +/datum/prototype/jigsaw_template_pack /** * May be ID, typepath, instance. */ var/list/templates = list() -/datum/jigsaw_template_pack/proc/validate_templates() +/datum/prototype/jigsaw_template_pack/proc/validate_templates() for(var/resolvable in src.templates) - var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) if(!template) CRASH("Invalid template '[resolvable]' detected in pack.") -/datum/jigsaw_template_pack/proc/resolve_templates() as /list - var/list/datum/jigsaw_template/resolved = list() +/datum/prototype/jigsaw_template_pack/proc/resolve_templates() as /list + var/list/datum/prototype/jigsaw_template/resolved = list() for(var/resolvable in src.templates) - var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) if(!template) continue resolved += template diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 2cc7f8a3e84e..20522ee6a5e8 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -15,7 +15,7 @@ var/radius_horizontal_tiles var/radius_vertical_tiles - var/datum/jigsaw_template/spawn_template_centered + var/datum/prototype/jigsaw_template/spawn_template_centered var/spawn_template_centered_orientation = SOUTH /obj/map_helper/jigsaw_aligned_spawner/New() @@ -38,7 +38,7 @@ var/datum/jigsaw_buffer/generation = new if(spawn_template_centered) - var/datum/jigsaw_template/template = fetch_cached_jigsaw_template(spawn_template_centered) + var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(spawn_template_centered) if(!template) CRASH("Invalid initial template detected; skipping generation.") diff --git a/maps/submaps/jigsaw/tomb_1/tomb_1.dm b/maps/submaps/jigsaw/tomb_1/tomb_1.dm index 0b17d4f83014..2a5332660878 100644 --- a/maps/submaps/jigsaw/tomb_1/tomb_1.dm +++ b/maps/submaps/jigsaw/tomb_1/tomb_1.dm @@ -1,50 +1,50 @@ -/datum/jigsaw_template/tomb_1/entrance //Designated Entrance Piece +/datum/prototype/jigsaw_template/tomb_1/entrance //Designated Entrance Piece name = "Tomb 1 - Entrance" display_name = "Entrance" path = "maps/submaps/jigsaw/tomb_1/tomb_1_entrance.dmm" -/datum/jigsaw_template/tomb_1/hall_straight //Long Straight Hall +/datum/prototype/jigsaw_template/tomb_1/hall_straight //Long Straight Hall name = "Tomb 1 - Straight Hall" display_name = "Straight Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_straight.dmm" -/datum/jigsaw_template/tomb_1/hall_curved //90 Turn Hallway +/datum/prototype/jigsaw_template/tomb_1/hall_curved //90 Turn Hallway name = "Tomb 1 - Curved Hall" display_name = "Curved Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_hall_curved.dmm" -/datum/jigsaw_template/tomb_1/tjunction //T-Junction +/datum/prototype/jigsaw_template/tomb_1/tjunction //T-Junction name = "Tomb 1 - T-Junction" display_name = "T-Junction" path = "maps/submaps/jigsaw/tomb_1/tomb_1_tjunction.dmm" -/datum/jigsaw_template/tomb_1/4way_square //4 Way Junction +/datum/prototype/jigsaw_template/tomb_1/4way_square //4 Way Junction name = "Tomb 1 - 4-way Square" display_name = "4-way Square" path = "maps/submaps/jigsaw/tomb_1/tomb_1_4way_square.dmm" -/datum/jigsaw_template/tomb_1/nonconvex //S shaped hall with 2 non-convex 2 convex exits +/datum/prototype/jigsaw_template/tomb_1/nonconvex //S shaped hall with 2 non-convex 2 convex exits name = "Tomb 1 - Inwards Hall" display_name = "Inwards Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_nonconvex.dmm" -/datum/jigsaw_template/tomb_1/deadend //low budget dead end hall +/datum/prototype/jigsaw_template/tomb_1/deadend //low budget dead end hall name = "Tomb 1 - Collapsed Hall" display_name = "Collapsed Hall" path = "maps/submaps/jigsaw/tomb_1/tomb_1_deadend.dmm" convex = FALSE -/datum/jigsaw_template/tomb_1/burialchamber //End Piece +/datum/prototype/jigsaw_template/tomb_1/burialchamber //End Piece name = "Tomb 1 - Burial Chamber" display_name = "Burial Chamber" path = "maps/submaps/jigsaw/tomb_1/tomb_1_burialchamber.dmm" -/datum/jigsaw_template/tomb_1/throneroom //End Piece +/datum/prototype/jigsaw_template/tomb_1/throneroom //End Piece name = "Tomb 1 - Throne Room" display_name = "Throne Room" path = "maps/submaps/jigsaw/tomb_1/tomb_1_throneroom.dmm" -/datum/jigsaw_template/tomb_1/poolroom //End Piece +/datum/prototype/jigsaw_template/tomb_1/poolroom //End Piece name = "Tomb 1 - Pool Room" display_name = "Pool Room" path = "maps/submaps/jigsaw/tomb_1/tomb_1_poolroom.dmm" From bd040520bcba4cbf24013573421d6a4a5692bf2d Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 27 Jun 2026 05:40:52 -0700 Subject: [PATCH 29/44] shenanigans --- citadel.dme | 9 + code/game/area/Off Station Areas.dm | 377 -- code/game/area/Space Station 13 areas.dm | 30 - code/game/area/area.dm | 6 + code/game/area/station/exporation.dm | 2 + code/game/area/station/security_areas.dm | 4 +- code/game/area/station/shuttle_area.dm | 2 + code/game/area/subtypes/space.dm | 33 + code/game/turfs/turf.dm | 12 +- code/modules/jigsaw/jigsaw_buffer.dm | 74 +- code/modules/jigsaw/jigsaw_generator.dm | 17 +- .../modules/jigsaw/jigsaw_generator_preset.dm | 10 +- code/modules/jigsaw/jigsaw_template.dm | 3 + .../map_helper/jigsaw_aligned_spawner.dm | 68 +- .../legacy_jigsaw_worldgen_hijinks.dm | 10 + .../debrisfield_192/debrisfield_192-areas.dm | 46 + maps/sectors/desert_192/desert_192-areas.dm | 56 + maps/sectors/desert_192/desert_192.dm | 4 +- maps/sectors/desert_192/levels/desert_192.dmm | 34 +- maps/sectors/frozen_192/frozen_192-areas.dm | 29 + maps/sectors/frozen_192/frozen_192.dm | 4 +- maps/sectors/frozen_192/levels/frozen_192.dmm | 300 +- maps/sectors/gaia_192/gaia_192-areas.dm | 105 + maps/sectors/gaia_192/gaia_192.dm | 2 +- maps/sectors/gaia_192/levels/gaia_192.dmm | 3358 ++++++++--------- maps/sectors/mining_192/levels/mining_192.dmm | 26 +- maps/sectors/mining_192/mining_192-areas.dm | 18 + .../piratebase_192/piratebase_192-areas.dm | 54 + .../wasteland_192/levels/wasteland_192.dmm | 552 +-- .../wasteland_192/wasteland_192-areas.dm | 76 + maps/sectors/wasteland_192/wasteland_192.dm | 2 +- .../class_d/DecoupledEngineD.dmm | 148 +- maps/submaps/level_specific/class_d/EpodD.dmm | 22 +- .../class_d/Possesed_mech_cave.dmm | 120 +- .../level_specific/class_d/SupplyDrop1D.dmm | 18 +- .../level_specific/class_d/SupplyDrop2D.dmm | 20 +- .../class_d/broken_reactor_D.dmm | 22 +- .../submaps/level_specific/class_d/cave1D.dmm | 18 +- .../submaps/level_specific/class_d/cave2D.dmm | 60 +- .../submaps/level_specific/class_d/cave3D.dmm | 14 +- .../level_specific/class_d/drone_hive_D.dmm | 24 +- .../level_specific/class_d/hiddenbunkerD.dmm | 152 +- .../level_specific/class_d/landing_padD.dmm | 94 +- .../level_specific/class_d/matdropD.dmm | 64 +- .../level_specific/class_d/mechwreckD.dmm | 4 +- .../submaps/level_specific/class_d/meteor.dmm | 8 +- .../level_specific/class_d/solar_farmD.dmm | 74 +- .../level_specific/class_d/vault1D.dmm | 10 +- .../level_specific/class_d/vault2D.dmm | 12 +- .../level_specific/class_d/vault3D.dmm | 8 +- .../level_specific/class_d/vault4D.dmm | 22 +- .../level_specific/class_d/vault5D.dmm | 26 +- .../class_h/AuxiliaryResearchFacility.dmm | 756 ++-- .../level_specific/class_h/BoneyardH.dmm | 40 +- .../level_specific/class_h/BunkerH.dmm | 222 +- .../level_specific/class_h/SupplyDrop1H.dmm | 16 +- .../level_specific/class_h/SupplyDrop2H.dmm | 24 +- .../submaps/level_specific/class_h/cave1H.dmm | 28 +- .../submaps/level_specific/class_h/cave3H.dmm | 16 +- .../level_specific/class_h/covert_post.dmm | 92 +- .../level_specific/class_h/desertruins1H.dmm | 14 +- .../level_specific/class_h/desertruins2H.dmm | 10 +- .../level_specific/class_h/desertruins3H.dmm | 70 +- .../level_specific/class_h/desertruins4H.dmm | 46 +- .../level_specific/class_h/desertsaloon.dmm | 128 +- .../submaps/level_specific/class_h/farmsH.dmm | 52 +- .../level_specific/class_h/highnoonH.dmm | 112 +- .../level_specific/class_h/landing_padH.dmm | 90 +- .../submaps/level_specific/class_h/minesH.dmm | 66 +- .../submaps/level_specific/class_h/oasisH.dmm | 30 +- .../submaps/level_specific/class_h/ranchH.dmm | 64 +- .../level_specific/class_h/rocks1H.dmm | 8 +- .../level_specific/class_h/rocks2H.dmm | 8 +- .../level_specific/class_h/solar_farmH.dmm | 68 +- .../level_specific/class_h/springcaveH.dmm | 20 +- .../level_specific/class_p/archaictemple.dmm | 398 +- .../submaps/level_specific/class_p/ruins1.dmm | 22 +- .../submaps/level_specific/class_p/ruins2.dmm | 18 +- .../submaps/level_specific/class_p/ruins3.dmm | 22 +- .../submaps/level_specific/class_p/ruins4.dmm | 22 +- .../submaps/level_specific/class_p/ruins5.dmm | 16 +- 81 files changed, 4429 insertions(+), 4312 deletions(-) create mode 100644 code/game/area/subtypes/space.dm create mode 100644 code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm create mode 100644 maps/sectors/debrisfield_192/debrisfield_192-areas.dm create mode 100644 maps/sectors/desert_192/desert_192-areas.dm create mode 100644 maps/sectors/frozen_192/frozen_192-areas.dm create mode 100644 maps/sectors/gaia_192/gaia_192-areas.dm create mode 100644 maps/sectors/mining_192/mining_192-areas.dm create mode 100644 maps/sectors/piratebase_192/piratebase_192-areas.dm create mode 100644 maps/sectors/wasteland_192/wasteland_192-areas.dm diff --git a/citadel.dme b/citadel.dme index da45357f0683..2f61f889f366 100644 --- a/citadel.dme +++ b/citadel.dme @@ -1169,6 +1169,7 @@ #include "code\game\area\Tether_areas.dm" #include "code\game\area\station\exporation.dm" #include "code\game\area\station\security_areas.dm" +#include "code\game\area\subtypes\space.dm" #include "code\game\atoms\_atom.dm" #include "code\game\atoms\action_feedback.dm" #include "code\game\atoms\appearance.dm" @@ -3683,6 +3684,7 @@ #include "code\modules\mapping\map_helpers\network_builder\power_cable.dm" #include "code\modules\mapping\map_injection\fixed_template_seeding.dm" #include "code\modules\mapping\map_injection\legacy_automata_caves.dm" +#include "code\modules\mapping\map_injection\legacy_jigsaw_worldgen_hijinks.dm" #include "code\modules\mapping\map_injection\legacy_noise_ores.dm" #include "code\modules\mapping\map_injection\legacy_seed_submaps.dm" #include "code\modules\mapping\map_injection\map_injection.dm" @@ -6141,13 +6143,17 @@ #include "maps\overmap\shuttles\pirateskiff.dm" #include "maps\overmap\shuttles\skipjack.dm" #include "maps\overmap\shuttles\specialops.dm" +#include "maps\sectors\debrisfield_192\debrisfield_192-areas.dm" #include "maps\sectors\debrisfield_192\debrisfield_192.dm" #include "maps\sectors\delerict_casino\delerict_casino-areas.dm" #include "maps\sectors\delerict_casino\delerict_casino-misc.dm" #include "maps\sectors\delerict_casino\delerict_casino.dm" +#include "maps\sectors\desert_192\desert_192-areas.dm" #include "maps\sectors\desert_192\desert_192.dm" #include "maps\sectors\event\halloween_map\halloween_ball.dm" +#include "maps\sectors\frozen_192\frozen_192-areas.dm" #include "maps\sectors\frozen_192\frozen_192.dm" +#include "maps\sectors\gaia_192\gaia_192-areas.dm" #include "maps\sectors\gaia_192\gaia_192.dm" #include "maps\sectors\ice_comet\ice_comet-area.dm" #include "maps\sectors\ice_comet\ice_comet-misc.dm" @@ -6156,6 +6162,7 @@ #include "maps\sectors\miaphus\miaphus-misc.dm" #include "maps\sectors\miaphus\miaphus-shuttles.dm" #include "maps\sectors\miaphus\miaphus.dm" +#include "maps\sectors\mining_192\mining_192-areas.dm" #include "maps\sectors\mining_192\mining_192.dm" #include "maps\sectors\nebula_tradeport\nebula_tradeport-areas.dm" #include "maps\sectors\nebula_tradeport\nebula_tradeport-misc.dm" @@ -6165,6 +6172,7 @@ #include "maps\sectors\osiris_field\osiris_field-overmap.dm" #include "maps\sectors\osiris_field\osiris_field-shuttles.dm" #include "maps\sectors\osiris_field\osiris_field.dm" +#include "maps\sectors\piratebase_192\piratebase_192-areas.dm" #include "maps\sectors\piratebase_192\piratebase_192.dm" #include "maps\sectors\roguemining_192\roguemining_192.dm" #include "maps\sectors\sky_planet\sky_planet-areas.dm" @@ -6179,6 +6187,7 @@ #include "maps\sectors\surt\surt_areas.dm" #include "maps\sectors\virgo2_140\virgo2_140.dm" #include "maps\sectors\virgo4_140\virgo4_140.dm" +#include "maps\sectors\wasteland_192\wasteland_192-areas.dm" #include "maps\sectors\wasteland_192\wasteland_192.dm" #include "maps\shuttles\factions\corporations\nanotrasen\drone_prototype.dm" #include "maps\shuttles\factions\corporations\nanotrasen\sci_vector.dm" diff --git a/code/game/area/Off Station Areas.dm b/code/game/area/Off Station Areas.dm index 516f9a5acdb7..d67ea7697313 100644 --- a/code/game/area/Off Station Areas.dm +++ b/code/game/area/Off Station Areas.dm @@ -161,391 +161,14 @@ /area/triumph/surfacebase/vacant_site name = "\improper Vacant Site" -// Class D world areas -/area/class_d - name = "Class D World" - icon_state = "away" - requires_power = 1 - dynamic_lighting = 1 - -/area/class_d/explored - name = "Class D World - Explored (E)" - icon_state = "explored" - -/area/class_d/unexplored - name = "Class D World - Unexplored (UE)" - icon_state = "unexplored" - -/area/class_d/unexplored/underground // Caves would be protected from weather. Still valid for POI generation do to being a dependent of /area/poi_d/unexplored - -/area/class_d/explored/underground - -/area/class_d/wildcat_mining_base - name = "Abandoned Facility" - icon_state = "blue" - requires_power = TRUE - -/area/class_d/wildcat_mining_base/exterior_power - name = "Exterior Power" - -/area/class_d/wildcat_mining_base/refueling_outbuilding - name = "Refueling Outbuilding" - -/area/class_d/wildcat_mining_base/warehouse - name = "Warehouse" - -/area/class_d/wildcat_mining_base/exterior_workshop - name = "Exterior Workshop" - -/area/class_d/wildcat_mining_base/interior - -/area/class_d/wildcat_mining_base/interior/main_room - name = "Main Room" - -/area/class_d/wildcat_mining_base/interior/utility_room - name = "Utility Room" - -/area/class_d/wildcat_mining_base/interior/bunk_room - name = "Bunk Room" - -/area/class_d/wildcat_mining_base/interior/bathroom - name = "Bathroom" - -/area/class_d/POIs/ship - name = "Crashed Ship Fragment" - -/area/class_d/plains - name = "Plains" - -/area/class_d/crater - name = "Crater" - -/area/class_d/Mountain - name = "Mountain" - -/area/class_d/Crevices - name = "Crevices" - -/area/class_d/POIs/solar_farm - name = "Prefab Solar Farm" - -/area/class_d/POIs/landing_pad - name = "Prefab Homestead" - requires_power = FALSE - -/area/class_d/POIs/reactor - name = "Prefab Reactor" - -// Class G world areas -/area/class_g - name = "Class G World" - icon_state = "away" - requires_power = 1 - dynamic_lighting = 1 - -/area/class_g/explored - name = "Class G World - Explored (E)" - icon_state = "red" - forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') - -/area/class_g/unexplored - name = "Class G World - Unexplored (UE)" - icon_state = "yellow" - -// Desert Planet world areas -/area/class_h - name = "Class H World" - requires_power = 1 - dynamic_lighting = 1 - icon_state = "away" - -/area/class_h/POIs/WW_Town - name = "Ghost Town" - -/area/class_h/POIs/landing_pad - name = "Prefab Homestead" - -/area/class_h/POIs/solar_farm - name = "Prefab Solar Farm" - -/area/class_h/POIs/dirt_farm - name = "Abandoned Farmstead" - -/area/class_h/POIs/graveyard - name = "Desert Graveyard" - -/area/class_h/POIs/goldmine - name = "Desert Goldmine" - -/area/class_h/POIs/ranch - name = "Abandoned Ranch" - -/area/class_h/POIs/saloon - name = "Saloon" - -/area/class_h/POIs/temple - name = "Old Temple" - -/area/class_h/POIs/tomb - name = "Old Tomb" - -/area/class_h/POIs/AuxiliaryResearchFacility - name = "Research Facility" - -/area/class_h/POIs/vault - name = "Desert Bunker" - -/area/class_h/POIs/covert_post - name = "Clown Listening Post" - -/area/class_h/explored - name = "Class H World - Explored (E)" - icon_state = "explored" - -/area/class_h/unexplored - name = "Class H World - Unexplored (UE)" - icon_state = "unexplored" - -//Gaia planet world areas -/area/class_m - name = "Gaia Station" - icon_state = "away" - requires_power = 1 - dynamic_lighting = 1 - -/area/class_m/inside - name = "Gaia Station - Inside (E)" - icon_state = "red" - -/area/class_m/inside/main - name = "Gaia Station - Main Facility" - -/area/class_m/inside/dorms - name = "Gaia Station - Dormitories" - icon_state = "green" - -/area/class_m/inside/vip_dorms - name = "Gaia Station - Premium Dormitories" - icon_state = "green" - -/area/class_m/inside/bathroom - name = "Gaia Station - Bathrooms" - icon_state = "green" - -/area/class_m/inside/cabin - name = "Gaia Station - Cabin" - -/area/class_m/inside/islandbeachhouse - name = "Gaia Station - Island Beach House" - -/area/class_m/inside/sauna - name = "Gaia Station - Main Sauna" - -/area/class_m/inside/sauna2 - name = "Gaia Station - Beach Sauna" - -/area/class_m/inside/sauna3 - name = "Gaia Station - Island Sauna" - -/area/class_m/inside/garage - name = "Gaia Station - Garage" - -/area/class_m/inside/hotspringcaves - name = "Gaia Station - Hotspring Caves" - -/area/class_m/inside/igloos - name = "Gaia Station - Igloos" - -/area/class_m/inside/hangars - name = "Gaia Station - Hangars" - -/area/class_m/inside/reception - name = "Gaia Station - Reception Area" - -/area/class_m/inside/maintenance - name = "Gaia Station - Maintnence Areas" - -/area/class_m/inside/maintenance/winter - name = "Gaia Station - Winter Biome Maintenance" - -/area/class_m/inside/maintenance/desert - name = "Gaia Station - Dessert Biome Maintenance" - -/area/class_m/inside/entrance - name = "Gaia Station - Park Gate" - -/area/class_m/inside/coats - name = "Gaia Station - Coat Room" - -/area/class_m/inside/staff - name = "Gaia Station - Staff Room" - -/area/class_m/outside - name = "Gaia Station - 'Outside' (UE)" - icon_state = "bluenew" - is_outside = OUTSIDE_YES - -/area/class_m/outside/beach - name = "Gaia Station - Beach" - icon_state = "yellow" - -/area/class_m/outside/beachmiddle - name = "Gaia Station - Beach Center" - icon_state = "purple" - -/area/class_m/outside/island - name = "Gaia Station - Island" - icon_state = "purple" - -/area/class_m/outside/island2 - name = "Gaia Station - Island" - icon_state = "blue" - -/area/class_m/outside/docks - name = "Gaia Station - Docks" - -/area/class_m/outside/winter - name = "Gaia Station - Winter Biome" - -/area/class_m/outside/desert - name = "Gaia Station - Desert Biome" - - -// Frozen planet world areas -/area/class_p - name = "Class P World" - icon_state = "away" - requires_power = 1 - dynamic_lighting = 1 - -/area/class_p/facility - name = "Facility" - icon_state = "red" - -/area/class_p/ruins - name = "Ruins" - icon_state = "green" - -/area/class_p/explored - name = "Class P World - Explored (E)" - icon_state = "yellow" - -/area/class_p/unexplored - name = "Class P World - Unexplored (UE)" - icon_state = "red" - -/area/class_p/POIs/archaic_temple - name = "Archaic Temple" - icon_state = "purple" - //Debris field /area/shuttle/excursion/debrisfield name = "\improper Excursion Shuttle - Debris Field" -/area/debrisfield - name = "Away Mission - Debris Field" - icon = 'icons/turf/areas.dmi' - icon_state = "dark" - -/area/space/debrisfield/explored - icon_state = "debrisexplored" - -/area/space/debrisfield/unexplored - icon_state = "debrisunexplored" - -/area/debrisfield/derelict - name = "POI - Alien Derelict" - icon_state = "debrisexplored" - forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') - -/area/space/debrisfield/asteroids - icon_state = "debrisexplored" - -/area/space/debrisfield/asteroids/rocks - icon_state = "debrisexplored" - -/area/space/debrisfield/oldshuttle - name = "POI - Old Shuttle" - icon_state = "debrisexplored" - -/area/space/debrisfield/medshuttlecrash - name = "POI - Medical Shuttle Crash" - icon_state = "debrisexplored" - -/area/space/debrisfield/scioverrun - name = "POI - Overrun Science Ship" - icon_state = "debrisexplored" - -/area/space/debrisfield/explodedship - name = "POI - Exploded Ship" - icon_state = "debrisexplored" - -/area/space/debrisfield/foodstand - name = "POI - Foodstand" - icon_state = "debrisexplored" - -/area/space/debrisfield/misc_debris - name = "Debris" - icon_state = "debrisexplored" - //Pirate base /area/shuttle/excursion/piratebase name = "\improper Excursion Shuttle - Pirate Base" -/area/piratebase - name = "Pirate Base" - icon = 'icons/turf/areas.dmi' - icon_state = "dark" - forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') - -/area/piratebase/dock - name = "Pirate Base - Dock" - icon_state = "debrisexplored" - -/area/piratebase/sickbay - name = "Pirate Base - Sickbay" - icon_state = "debrisexplored" - -/area/piratebase/mess - name = "Pirate Base - Mess Hall" - icon_state = "debrisexplored" - -/area/piratebase/bunks - name = "Pirate Base - Bunks" - icon_state = "debrisexplored" - -/area/piratebase/captain - name = "Pirate Base - Captain's Quarters" - icon_state = "debrisexplored" - -/area/piratebase/vault - name = "Pirate Base - Vault" - icon_state = "debrisexplored" - -/area/piratebase/atmospherics - name = "Pirate Base - Atmospherics" - icon_state = "debrisexplored" - -/area/piratebase/construction - name = "Pirate Base - Construction Zone" - icon_state = "debrisexplored" - -/area/piratebase/mining - name = "Pirate Base - Mining Operations" - icon_state = "debrisexplored" - -/area/piratebase/power - name = "Pirate Base - Power Management" - icon_state = "debrisexplored" - -/area/piratebase/halls - name = "Pirate Base - Halls" - icon_state = "debrisexplored" - -/area/piratebase/brig - name = "Pirate Base - Brig" - icon_state = "debrisexplored" - //////////////////////////////////// //// END TRIUMPH SPECIFIC AREAS //// //////////////////////////////////// diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 487bef46ca28..d5c79a4b34b6 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -19,36 +19,6 @@ NOTE: there are two lists of areas in the end of this file: centcom and station //SPACE// ///////// -/area/space - name = "\improper Space" - icon_state = "space" - requires_power = TRUE - always_unpowered = TRUE - dynamic_lighting = DYNAMIC_LIGHTING_ENABLED - has_gravity = FALSE - power_light = 0 - has_gravity = 0 - power_equip = 0 - power_environ = 0 - ambience = AMBIENCE_SPACE - area_flags = AREA_FLAG_EXTERNAL | AREA_FLAG_ERODING - is_outside = OUTSIDE_YES - nightshift_level = NONE - -/area/space/atmosalert() - return - -/area/space/fire_alert() - return - -/area/space/fire_reset() - return - -/area/space/readyalert() - return - -/area/space/partyalert() - return /area/arrival requires_power = 0 diff --git a/code/game/area/area.dm b/code/game/area/area.dm index ab4df353ce0d..162dfa613cd7 100644 --- a/code/game/area/area.dm +++ b/code/game/area/area.dm @@ -56,6 +56,12 @@ * overwriting areas with this enabled. */ var/special = FALSE + /** + * Allow worldgen to write over this area? + * * The 'default' area of the world and most maps / outdoors areas should + * be flagged as TRUE. + */ + var/allow_worldgen_overwrite = FALSE //* Defaults - Turfs *// /// outdoors by default? diff --git a/code/game/area/station/exporation.dm b/code/game/area/station/exporation.dm index 399c18f2a2bb..58eb04caa109 100644 --- a/code/game/area/station/exporation.dm +++ b/code/game/area/station/exporation.dm @@ -1,3 +1,5 @@ +// TODO: repath or kill these + //Exploration areas /area/exploration name = "\improper Exploration Foyer" diff --git a/code/game/area/station/security_areas.dm b/code/game/area/station/security_areas.dm index 6ace6f62f198..c43e5b8a9ed6 100644 --- a/code/game/area/station/security_areas.dm +++ b/code/game/area/station/security_areas.dm @@ -1,3 +1,5 @@ +// TODO: repath or kill these + //Security /area/security @@ -129,7 +131,7 @@ ambience = AMBIENCE_HIGHSEC area_flags = AREA_FLAG_BLUE_SHIELDED nightshift_level = NIGHTSHIFT_LEVEL_DEPARTMENT_SENSITIVE - + /area/security/hallway name = "\improper Security Hallway" icon_state = "security" diff --git a/code/game/area/station/shuttle_area.dm b/code/game/area/station/shuttle_area.dm index 55dc054e452d..7926bfcf26bf 100644 --- a/code/game/area/station/shuttle_area.dm +++ b/code/game/area/station/shuttle_area.dm @@ -1,3 +1,5 @@ +// TODO: repath or kill these + ///Civilian Century Shuttle /area/shuttle/oldcentury requires_power = 1 diff --git a/code/game/area/subtypes/space.dm b/code/game/area/subtypes/space.dm new file mode 100644 index 000000000000..41fd78d300f4 --- /dev/null +++ b/code/game/area/subtypes/space.dm @@ -0,0 +1,33 @@ +/area/space + name = "\improper Space" + icon_state = "space" + + allow_worldgen_overwrite = TRUE + + requires_power = TRUE + always_unpowered = TRUE + dynamic_lighting = DYNAMIC_LIGHTING_ENABLED + has_gravity = FALSE + power_light = 0 + has_gravity = 0 + power_equip = 0 + power_environ = 0 + ambience = AMBIENCE_SPACE + area_flags = AREA_FLAG_EXTERNAL | AREA_FLAG_ERODING + is_outside = OUTSIDE_YES + nightshift_level = NONE + +/area/space/atmosalert() + return + +/area/space/fire_alert() + return + +/area/space/fire_reset() + return + +/area/space/readyalert() + return + +/area/space/partyalert() + return diff --git a/code/game/turfs/turf.dm b/code/game/turfs/turf.dm index f04d9974618b..87bd3af374ad 100644 --- a/code/game/turfs/turf.dm +++ b/code/game/turfs/turf.dm @@ -12,7 +12,7 @@ density = FALSE alpha = 255 - //* Atmospherics + //* Atmospherics *// /** * the gas we start out as * can be: @@ -25,11 +25,11 @@ */ var/temperature_for_heat_exchangers - //* Automata + //* Automata *// /// acted automata - automata associated to power, act_cross() will be called when something enters us while this is set var/list/acting_automata - //* Baseturfs / Turf Changing + //* Baseturfs / Turf Changing *// /** * Baseturfs * @@ -62,7 +62,7 @@ /// map generation cycle; used to not allow overwrites var/tmp/map_generation_cycle - //* Movement / Pathfinding + //* Movement / Pathfinding *// /// How much the turf slows down movement, if any. var/slowdown = 0 /// Pathfinding cost @@ -72,7 +72,7 @@ /// pathfinding id - used to avoid needing a big closed list to iterate through every cycle of jps var/tmp/pathfinding_cycle - //* Outdoors + //* Outdoors *// /** * are we considered outdoors for things like weather effects? * todo: single var doing this is inefficient & bad, flags maybe? @@ -85,7 +85,7 @@ */ var/outdoors = null - //* Radiation + //* Radiation *// /// cached rad insulation of contents var/rad_insulation_contents = 1 diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index bf18a97382bb..80a0f7002582 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -2,9 +2,8 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_buffer_enqueued - var/lower_left_x - var/lower_left_y - var/lower_left_z + var/lower_left_grid_x + var/lower_left_grid_y var/orientation var/datum/prototype/jigsaw_template/template var/datum/dmm_context/context @@ -13,8 +12,16 @@ * * All lists are immutable and potentially (likely) shared for efficiency. */ /datum/jigsaw_buffer_tile - var/x - var/y + var/grid_x + var/grid_y + + var/blocked_off = FALSE + +/datum/jigsaw_buffer_tile/New(grid_x, grid_y) + src.grid_x = grid_x + src.grid_y = grid_y + +/datum/jigsaw_buffer_tile/enqueued var/datum/jigsaw_buffer_enqueued/enqueued var/list/north_match @@ -33,7 +40,9 @@ var/list/west_require var/list/west_exclude -/datum/jigsaw_buffer_tile/New(datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile, x, y) +/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_buffer_tile/tile) + ..(grid_x, grid_y) + src.enqueued = enqueued src.north_match = tile.north_match @@ -52,14 +61,12 @@ src.west_require = tile.west_require src.west_exclude = tile.west_exclude - src.x = x - src.y = y - -/datum/jigsaw_buffer_tile/Destroy() +/datum/jigsaw_buffer_tile/enqueued/Destroy() src.enqueued = null return ..() /datum/jigsaw_buffer_tile/block_off + blocked_off = TRUE /** * Datum used to hold current state for a jigsaw dungeon generation. @@ -104,6 +111,53 @@ /datum/jigsaw_buffer/proc/get_tile_height() return src.height * TURF_ALIGNMENT +/datum/jigsaw_buffer/proc/fits_in_world_at(lower_left_x, lower_left_y) + if(lower_left_x < 1 || lower_left_y < 1) + return FALSE + + if(lower_left_x + src.get_tile_width() - 1 > world.maxx) + return FALSE + + if(lower_left_y + src.get_tile_height() - 1 > world.maxy) + return FALSE + + return TRUE + +/datum/jigsaw_buffer/proc/block_off_according_to_world_at(lower_left_x, lower_left_y, respect_worldgen_overwrite_flags) + // scan for obstructions + var/x_low = lower_left_x + var/y_low = lower_left_y + var/x_high = lower_left_x + src.get_tile_width() - 1 + var/y_high = lower_left_y + src.get_tile_height() - 1 + + for(var/x_broad in x_low to x_high step TURF_ALIGNMENT) + for(var/y_broad in y_low to y_high step TURF_ALIGNMENT) + var/real_grid_x = floor((x_broad - x_low) / TURF_ALIGNMENT) + var/real_grid_y = floor((y_broad - y_low) / TURF_ALIGNMENT) + + if(src.grid[real_grid_x + src.width * (real_grid_y - 1)]) + continue + + var/found_obstruction = FALSE + for(var/x_narrow in x_broad to x_broad + TURF_ALIGNMENT - 1) + if(found_obstruction) + break + for(var/y_narrow in y_broad to y_broad + TURF_ALIGNMENT - 1) + var/turf/T = locate(x_narrow, y_narrow, z) + var/area/A = T.loc + + if(A.special) + found_obstruction = TRUE + break + if(!A.allow_worldgen_overwrite && respect_worldgen_overwrite_flags) + found_obstruction = TRUE + break + + if(found_obstruction) + src.grid[real_grid_x + src.width * (real_grid_y - 1)] = new /datum/jigsaw_buffer_tile/block_off(real_grid_x, real_grid_y) + continue + + // var/idx = ceil(root.x / TURF_ALIGNMENT) + grid_width * (ceil(root.y / TURF_ALIGNMENT) - 1) #warn impl diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 5284f44321b6..c01e9a7e2e16 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -5,19 +5,10 @@ * Datum used to generate jigsaw dungeons. */ /datum/jigsaw_generator - /** - * Set to override auto-marker settings. Otherwise, this uses - * the map's auto-marker config. - */ - var/datum/turf_auto_marker_config/auto_marker_config - /** - * Configuration for templates. - */ - var/datum/jigsaw_template_config/template_config - /** - * Configuration for spawns - */ - var/datum/jigsaw_spawn_config/spawn_config + var/datum/jigsaw_generator_config/config + +/datum/jigsaw_generator/New(datum/jigsaw_generator_config/config) + src.config = config /datum/jigsaw_generator/proc/get_available_templates() return list() diff --git a/code/modules/jigsaw/jigsaw_generator_preset.dm b/code/modules/jigsaw/jigsaw_generator_preset.dm index 8c8614392796..ad0166352015 100644 --- a/code/modules/jigsaw/jigsaw_generator_preset.dm +++ b/code/modules/jigsaw/jigsaw_generator_preset.dm @@ -2,9 +2,17 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/prototype/jigsaw_generator_preset + abstract_type = /datum/prototype/jigsaw_generator_preset + var/name = "Unknown Preset" var/desc = "Some kind of preset." - var/datum/jigsaw_generator_config/config + var/datum/jigsaw_generator_config/config = new #warn impl + +/datum/prototype/jigsaw_generator_preset/proc/get_config() + return config + +/datum/prototype/jigsaw_generator_preset/empty + id = "empty" diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index f20c87378b35..5a2a79dac725 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -31,6 +31,9 @@ /// cached resultant pattern var/tmp/datum/jigsaw_pattern/resultant_pattern + /// allow rotation? + var/allow_rotation = TRUE + /// Offset the actual load from the lower-left (direction relative) of /// the aligned pattern. /// * This is in tiles, not alignment multiples. diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 20522ee6a5e8..5d6c6db5ae8b 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -8,21 +8,18 @@ early = TRUE - var/datum/jigsaw_template_config/template_config = /datum/jigsaw_template_config/everything - var/datum/turf_auto_marker_config/auto_marker_config + var/datum/jigsaw_generator_preset/preset = /datum/prototype/jigsaw_generator_preset/empty + var/respect_worldgen_overwrite_flags = TRUE - var/radius_tiles = 48 - var/radius_horizontal_tiles - var/radius_vertical_tiles - - var/datum/prototype/jigsaw_template/spawn_template_centered - var/spawn_template_centered_orientation = SOUTH + /** + * Best-effort tile radius. + * * Because this is an aligned spawner, the radius + * actually determines which aligned tiles we reach into. + */ + var/tile_radius = 48 /obj/map_helper/jigsaw_aligned_spawner/New() - if(ispath(template_config)) - template_config = new(template_config) - if(ispath(auto_marker_config)) - auto_marker_config = new(auto_marker_config) + preset = RSjigsaw_presets.fetch_local_or_throw(preset) ..() /obj/map_helper/jigsaw_aligned_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) @@ -30,22 +27,45 @@ generate() /obj/map_helper/jigsaw_aligned_spawner/proc/generate() - var/datum/jigsaw_generator/generator = new + if(!isturf(loc)) + CRASH("Jigsaw spawner must be placed on a turf.") + + if(tile_radius <= 0) + CRASH("Jigsaw spawner must have a non-negative tile radius.") + + // check and align location + var/x = loc.x + var/y = loc.y + var/z = loc.z + + // x/y low are aligned towards bottom left + var/aligned_x_low = max(floor(((x - tile_radius) + 1) / TURF_ALIGNMENT) * TURF_ALIGNMENT, TURF_ALIGNMENT) + 1 + var/aligned_y_low = max(floor(((y - tile_radius) + 1) / TURF_ALIGNMENT) * TURF_ALIGNMENT, TURF_ALIGNMENT) + 1 + + // x/y high are aligned towards top right + var/aligned_x_high = min(ceil(((x + tile_radius) + 0) / TURF_ALIGNMENT) * TURF_ALIGNMENT, world.maxx - TURF_ALIGNMENT) - 0 + var/aligned_y_high = min(ceil(((y + tile_radius) + 0) / TURF_ALIGNMENT) * TURF_ALIGNMENT, world.maxy - TURF_ALIGNMENT) - 0 + + if(aligned_x_low >= aligned_x_high || aligned_y_low >= aligned_y_high) + CRASH("Jigsaw spawner has no valid area to generate in; the world is too small.") + + var/aligned_width = aligned_x_high - aligned_x_low + var/aligned_height = aligned_y_high - aligned_y_low + + var/grid_width = (aligned_width + 1) / TURF_ALIGNMENT + var/grid_height = (aligned_height + 1) / TURF_ALIGNMENT - generator.auto_marker_config = auto_marker_config - generator.template_config = template_config + ASSERT(ISINTEGER(grid_width) && ISINTEGER(grid_height), "Grid width/height must be integer.") - var/datum/jigsaw_buffer/generation = new + var/datum/jigsaw_buffer/buffer = new(grid_width, grid_height) - if(spawn_template_centered) - var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(spawn_template_centered) + ASSERT(buffer.fits_in_world_at(aligned_x_low, aligned_y_low), "Buffer must fit in world at aligned coordinates.") - if(!template) - CRASH("Invalid initial template detected; skipping generation.") + buffer.block_off_according_to_world_at(aligned_x_low, aligned_y_low, respect_worldgen_overwrite_flags) - var/datum/jigsaw_buffer_enqueued_placement/initial_placement = new - #warn impl + // generate + var/datum/jigsaw_generator/generator = new(preset.get_config()) - generation.broadphase_enqueued += initial_placement + #warn generate - generator.generate_at_turf_centered(get_turf(src), generation) + #warn apply diff --git a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm new file mode 100644 index 000000000000..04a6e9921cc6 --- /dev/null +++ b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm @@ -0,0 +1,10 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2024 Citadel Station Developers *// + +/** + * Until we get a proper world generation API (map_injections are not enough for worldgen) + * with layers, this is what you get. + */ +/datum/legacy_jigsaw_worldgen_hijinks + +#warn impl diff --git a/maps/sectors/debrisfield_192/debrisfield_192-areas.dm b/maps/sectors/debrisfield_192/debrisfield_192-areas.dm new file mode 100644 index 000000000000..d7adbc4892be --- /dev/null +++ b/maps/sectors/debrisfield_192/debrisfield_192-areas.dm @@ -0,0 +1,46 @@ + +/area/debrisfield + name = "Away Mission - Debris Field" + icon = 'icons/turf/areas.dmi' + icon_state = "dark" + +/area/space/debrisfield/explored + icon_state = "debrisexplored" + +/area/space/debrisfield/unexplored + icon_state = "debrisunexplored" + +/area/debrisfield/derelict + name = "POI - Alien Derelict" + icon_state = "debrisexplored" + forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') + +/area/space/debrisfield/asteroids + icon_state = "debrisexplored" + +/area/space/debrisfield/asteroids/rocks + icon_state = "debrisexplored" + +/area/space/debrisfield/oldshuttle + name = "POI - Old Shuttle" + icon_state = "debrisexplored" + +/area/space/debrisfield/medshuttlecrash + name = "POI - Medical Shuttle Crash" + icon_state = "debrisexplored" + +/area/space/debrisfield/scioverrun + name = "POI - Overrun Science Ship" + icon_state = "debrisexplored" + +/area/space/debrisfield/explodedship + name = "POI - Exploded Ship" + icon_state = "debrisexplored" + +/area/space/debrisfield/foodstand + name = "POI - Foodstand" + icon_state = "debrisexplored" + +/area/space/debrisfield/misc_debris + name = "Debris" + icon_state = "debrisexplored" diff --git a/maps/sectors/desert_192/desert_192-areas.dm b/maps/sectors/desert_192/desert_192-areas.dm new file mode 100644 index 000000000000..1daea56263cd --- /dev/null +++ b/maps/sectors/desert_192/desert_192-areas.dm @@ -0,0 +1,56 @@ + +// Desert Planet world areas +/area/sector/class_h + name = "Class H World" + requires_power = 1 + dynamic_lighting = 1 + icon_state = "away" + +/area/sector/class_h/POIs/WW_Town + name = "Ghost Town" + +/area/sector/class_h/POIs/landing_pad + name = "Prefab Homestead" + +/area/sector/class_h/POIs/solar_farm + name = "Prefab Solar Farm" + +/area/sector/class_h/POIs/dirt_farm + name = "Abandoned Farmstead" + +/area/sector/class_h/POIs/graveyard + name = "Desert Graveyard" + +/area/sector/class_h/POIs/goldmine + name = "Desert Goldmine" + +/area/sector/class_h/POIs/ranch + name = "Abandoned Ranch" + +/area/sector/class_h/POIs/saloon + name = "Saloon" + +/area/sector/class_h/POIs/temple + name = "Old Temple" + +/area/sector/class_h/POIs/tomb + name = "Old Tomb" + +/area/sector/class_h/POIs/AuxiliaryResearchFacility + name = "Research Facility" + +/area/sector/class_h/POIs/vault + name = "Desert Bunker" + +/area/sector/class_h/POIs/covert_post + name = "Clown Listening Post" + +/area/sector/class_h/explored + name = "Class H World - Explored (E)" + icon_state = "explored" + allow_worldgen_overwrite = TRUE + +/area/sector/class_h/unexplored + name = "Class H World - Unexplored (UE)" + icon_state = "unexplored" + allow_worldgen_overwrite = TRUE diff --git a/maps/sectors/desert_192/desert_192.dm b/maps/sectors/desert_192/desert_192.dm index 45712af66095..144869e0f7e1 100644 --- a/maps/sectors/desert_192/desert_192.dm +++ b/maps/sectors/desert_192/desert_192.dm @@ -13,7 +13,7 @@ display_name = "Class-H Desert World" path = "maps/sectors/desert_192/levels/desert_192.dmm" base_turf = /turf/simulated/floor/outdoors/beach/sand/lowdesert - base_area = /area/class_h/unexplored + base_area = /area/sector/class_h/unexplored traits = list( ZTRAIT_GRAVITY, ) @@ -23,7 +23,7 @@ injections = list( new /datum/map_injection/legacy_seed_submaps( 150, - /area/class_h/unexplored, + /area/sector/class_h/unexplored, /datum/map_template/submap/level_specific/class_h, ), ) diff --git a/maps/sectors/desert_192/levels/desert_192.dmm b/maps/sectors/desert_192/levels/desert_192.dmm index 3b840b6a77e0..e93b952bc32b 100644 --- a/maps/sectors/desert_192/levels/desert_192.dmm +++ b/maps/sectors/desert_192/levels/desert_192.dmm @@ -1,75 +1,75 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "h" = ( /turf/simulated/floor/water/shoreline/corner, -/area/class_h/explored) +/area/sector/class_h/explored) "j" = ( /turf/simulated/floor/water/shoreline, -/area/class_h/explored) +/area/sector/class_h/explored) "m" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) "n" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "o" = ( /turf/simulated/floor/water/shoreline{ dir = 6 }, -/area/class_h/explored) +/area/sector/class_h/explored) "t" = ( /turf/simulated/floor/water/shoreline{ dir = 9 }, -/area/class_h/explored) +/area/sector/class_h/explored) "u" = ( /turf/simulated/floor/water/shoreline{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) "w" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/unexplored) +/area/sector/class_h/unexplored) "z" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 4 }, -/area/class_h/explored) +/area/sector/class_h/explored) "E" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 8 }, -/area/class_h/explored) +/area/sector/class_h/explored) "G" = ( /turf/simulated/floor/water/shoreline{ dir = 8 }, -/area/class_h/explored) +/area/sector/class_h/explored) "O" = ( /turf/simulated/floor/water, -/area/class_h/explored) +/area/sector/class_h/explored) "R" = ( /turf/simulated/floor/water/shoreline{ dir = 4 }, -/area/class_h/explored) +/area/sector/class_h/explored) "W" = ( /turf/simulated/floor/water/shoreline{ dir = 5 }, -/area/class_h/explored) +/area/sector/class_h/explored) "X" = ( /obj/effect/shuttle_landmark/automatic, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "Y" = ( /obj/overmap/entity/visitable/sector/class_h, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/sectors/frozen_192/frozen_192-areas.dm b/maps/sectors/frozen_192/frozen_192-areas.dm new file mode 100644 index 000000000000..934a9574101d --- /dev/null +++ b/maps/sectors/frozen_192/frozen_192-areas.dm @@ -0,0 +1,29 @@ + +// Frozen planet world areas +/area/sector/class_p + name = "Class P World" + icon_state = "away" + requires_power = 1 + dynamic_lighting = 1 + +/area/sector/class_p/facility + name = "Facility" + icon_state = "red" + +/area/sector/class_p/ruins + name = "Ruins" + icon_state = "green" + +/area/sector/class_p/explored + name = "Class P World - Explored (E)" + icon_state = "yellow" + allow_worldgen_overwrite = TRUE + +/area/sector/class_p/unexplored + name = "Class P World - Unexplored (UE)" + icon_state = "red" + allow_worldgen_overwrite = TRUE + +/area/sector/class_p/POIs/archaic_temple + name = "Archaic Temple" + icon_state = "purple" diff --git a/maps/sectors/frozen_192/frozen_192.dm b/maps/sectors/frozen_192/frozen_192.dm index b3b42c7ad821..45c9b0f02141 100644 --- a/maps/sectors/frozen_192/frozen_192.dm +++ b/maps/sectors/frozen_192/frozen_192.dm @@ -12,7 +12,7 @@ name = "Sector - Frozen World" display_name = "Class-P Frozen World" path = "maps/sectors/frozen_192/levels/frozen_192.dmm" - base_area = /area/class_p/ruins + base_area = /area/sector/class_p/ruins base_turf = /turf/simulated/floor/outdoors/ice traits = list( ZTRAIT_GRAVITY, @@ -23,7 +23,7 @@ injections = list( new /datum/map_injection/legacy_seed_submaps( 125, - /area/class_p/ruins/unexplored, + /area/sector/class_p/ruins/unexplored, /datum/map_template/submap/level_specific/class_p, ), ) diff --git a/maps/sectors/frozen_192/levels/frozen_192.dmm b/maps/sectors/frozen_192/levels/frozen_192.dmm index 321a3a530682..1ef45cbb7eb5 100644 --- a/maps/sectors/frozen_192/levels/frozen_192.dmm +++ b/maps/sectors/frozen_192/levels/frozen_192.dmm @@ -4,14 +4,14 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ax" = ( /obj/structure/barricade, /obj/machinery/light{ dir = 1 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "aZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/machinery/door/airlock/centcom{ @@ -22,32 +22,32 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "bs" = ( /obj/structure/sandbag, /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "by" = ( /obj/structure/table/standard, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "bC" = ( /obj/structure/blob/normal, /obj/machinery/light{ dir = 1 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "bQ" = ( /obj/vehicle_old/train/rover/engine/dunebuggy, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "bR" = ( /obj/structure/cable{ icon_state = "2-4" @@ -59,11 +59,11 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "cp" = ( /obj/structure/table/standard, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "cB" = ( /obj/structure/cable{ icon_state = "0-2" @@ -73,7 +73,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "cR" = ( /obj/structure/cable{ icon_state = "0-8" @@ -83,12 +83,12 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "cT" = ( /obj/machinery/door/airlock/external/glass, /obj/structure/barricade, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "dM" = ( /obj/structure/table/wooden_reinforced, /obj/structure/blob/normal, @@ -96,14 +96,14 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "dV" = ( /turf/simulated/floor/outdoors/ice, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "eo" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "fh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -112,27 +112,27 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "fK" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "frozen" }, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "gu" = ( /obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers, /obj/machinery/atmospherics/pipe/manifold4w/hidden/supply, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "gw" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible/green, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "gW" = ( /obj/structure/barricade, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "gY" = ( /obj/structure/cable{ icon_state = "4-8" @@ -141,23 +141,23 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "hq" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ht" = ( /turf/simulated/floor/tiled/old_tile/blue, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "hR" = ( /obj/structure/blob/normal, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "hY" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; @@ -168,13 +168,13 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "iq" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ix" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, /obj/structure/blob/normal, @@ -182,7 +182,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "iJ" = ( /obj/machinery/atmospherics/component/unary/heater{ dir = 4 @@ -191,10 +191,10 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "iL" = ( /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ja" = ( /obj/machinery/atmospherics/pipe/manifold/visible/green{ dir = 4 @@ -203,49 +203,49 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "jt" = ( /obj/structure/bed, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "jx" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "frozen" }, /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/explored) +/area/sector/class_p/explored) "jK" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "kq" = ( /turf/simulated/floor/outdoors/shelfice, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "kU" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "lS" = ( /obj/machinery/atmospherics/pipe/simple/visible/black, /obj/machinery/light{ dir = 4 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "lW" = ( /mob/living/simple_mob/animal/space/tree{ iff_factions = "frozen" }, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "lZ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -255,26 +255,26 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ma" = ( /obj/structure/table/wooden_reinforced, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ml" = ( /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "mD" = ( /obj/machinery/atmospherics/pipe/manifold/visible/green{ dir = 8 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "nb" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 9 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "nV" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; @@ -284,38 +284,38 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ot" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, /obj/machinery/light, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "qb" = ( /obj/structure/blob/normal, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "qo" = ( /obj/structure/anomaly_container, /obj/machinery/artifact, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "qp" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "qJ" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; req_one_access = null }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "qO" = ( /obj/structure/cable{ icon_state = "2-4" @@ -330,25 +330,25 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "rb" = ( /obj/structure/table/rack/shelf, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "rK" = ( /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "sA" = ( /obj/machinery/artifact_scanpad, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "sL" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 5 @@ -357,7 +357,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "sS" = ( /obj/structure/cable{ icon_state = "1-8" @@ -369,14 +369,14 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "sV" = ( /obj/machinery/door/airlock/multi_tile/metal/mait{ dir = 4 }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "tr" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -385,18 +385,18 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "tw" = ( /obj/structure/table/marble, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "tN" = ( /obj/machinery/door/blast/shutters, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "uk" = ( /obj/structure/barricade, /obj/structure/blob/normal, @@ -404,7 +404,7 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "vh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -418,11 +418,11 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "vm" = ( /obj/machinery/atmospherics/pipe/manifold/visible/green, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "wG" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -434,7 +434,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "wV" = ( /obj/machinery/light{ dir = 1 @@ -443,7 +443,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "xz" = ( /obj/structure/cable{ icon_state = "1-2" @@ -452,18 +452,18 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "xD" = ( /obj/machinery/atmospherics/pipe/simple/visible/green, /obj/machinery/light{ dir = 8 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "yo" = ( /obj/machinery/artifact_harvester, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "yP" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; @@ -474,16 +474,16 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "yW" = ( /turf/simulated/wall, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "zq" = ( /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ax" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 9 @@ -492,7 +492,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "AS" = ( /obj/structure/bedsheetbin, /obj/structure/blob/normal, @@ -500,14 +500,14 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Bp" = ( /obj/structure/table/wooden_reinforced, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "BD" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -519,13 +519,13 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Cj" = ( /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "CU" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -539,7 +539,7 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "DH" = ( /obj/structure/table/standard, /obj/structure/table/standard, @@ -547,7 +547,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "DK" = ( /obj/structure/table/rack/shelf, /obj/machinery/light, @@ -555,7 +555,7 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "DW" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ frequency = 1380; @@ -564,13 +564,13 @@ pixel_y = 30 }, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/explored) +/area/sector/class_p/explored) "Ea" = ( /obj/machinery/artifact, /obj/structure/anomaly_container, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ec" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/structure/blob/normal, @@ -578,11 +578,11 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Eg" = ( /obj/machinery/atmospherics/portables_connector, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ek" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; @@ -590,7 +590,7 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Et" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, @@ -600,39 +600,39 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "EA" = ( /turf/simulated/floor/outdoors/ice, -/area/class_p/explored) +/area/sector/class_p/explored) "EW" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/outdoors/ice, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Fm" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Fz" = ( /obj/structure/anomaly_container, /obj/machinery/artifact, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "FL" = ( /obj/machinery/door/blast/shutters, /obj/structure/barricade, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "FU" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/barricade, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Gz" = ( /obj/structure/blob/normal, /obj/machinery/light, @@ -640,35 +640,35 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "GU" = ( /obj/machinery/atmospherics/pipe/tank/air, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Hb" = ( /obj/structure/blob/normal, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Hc" = ( /obj/structure/barricade, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Hi" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "HF" = ( /obj/structure/table/rack/shelf, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "HJ" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -678,14 +678,14 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Io" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, /turf/simulated/wall, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "IV" = ( /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/explored) +/area/sector/class_p/explored) "Jw" = ( /obj/machinery/atmospherics/component/binary/pump/on, /obj/machinery/light{ @@ -695,16 +695,16 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "JD" = ( /turf/simulated/floor, -/area/class_p/explored) +/area/sector/class_p/explored) "Ki" = ( /obj/machinery/atmospherics/pipe/tank{ name = "Waste Tank" }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ku" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 @@ -714,7 +714,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "KC" = ( /obj/structure/table/wooden_reinforced, /obj/item/storage/pill_bottle/dice_nerd, @@ -723,7 +723,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Lh" = ( /obj/machinery/power/emitter/gyrotron{ dir = 1 @@ -732,11 +732,11 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "LI" = ( /obj/structure/table/marble, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Mz" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -752,7 +752,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Pb" = ( /obj/structure/cable{ icon_state = "1-8" @@ -761,7 +761,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ph" = ( /obj/machinery/door/airlock/centcom{ name = "Airlock"; @@ -771,10 +771,10 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Pp" = ( /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/explored) +/area/sector/class_p/explored) "Pr" = ( /obj/structure/table/standard, /obj/item/paper/carbon{ @@ -782,18 +782,18 @@ name = "rushed letter" }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Pz" = ( /obj/structure/bonfire, /turf/simulated/floor/outdoors/snow/class_p/no_tree, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "PB" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "PK" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers, /obj/machinery/atmospherics/pipe/simple/hidden/supply{ @@ -804,21 +804,21 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "PM" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "PT" = ( /obj/machinery/crystal/ice, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Qj" = ( /obj/machinery/computer/gyrotron_control, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Qm" = ( /obj/structure/blob/normal, /obj/structure/blob/normal, @@ -826,18 +826,18 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "QI" = ( /obj/machinery/door/airlock/external/glass, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Re" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/cable{ icon_state = "0-4" }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Rh" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -847,12 +847,12 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "RE" = ( /obj/structure/blob/normal, /obj/machinery/light, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "RM" = ( /obj/machinery/power/port_gen/pacman, /obj/structure/cable{ @@ -862,7 +862,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Sj" = ( /obj/structure/cable, /obj/machinery/power/apc/east_mount{ @@ -870,7 +870,7 @@ start_charge = 0 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ss" = ( /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{ dir = 4 @@ -884,11 +884,11 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "St" = ( /obj/machinery/light, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Sw" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -896,7 +896,7 @@ }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Ue" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/structure/blob/normal, @@ -904,28 +904,28 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Us" = ( /obj/structure/railing, /turf/simulated/floor/outdoors/ice, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "UO" = ( /obj/machinery/atmospherics/pipe/simple/visible/universal, /obj/machinery/light{ dir = 4 }, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "UU" = ( /obj/structure/closet/statue, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Vj" = ( /turf/simulated/floor/wood/outdoors, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "VT" = ( /obj/machinery/atmospherics/pipe/simple/visible/green{ dir = 5 @@ -934,7 +934,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "VV" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 @@ -943,12 +943,12 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Wc" = ( /obj/structure/table/standard, /obj/item/clothing/mask/warmer, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Wr" = ( /obj/machinery/atmospherics/pipe/manifold/hidden/supply, /obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{ @@ -959,14 +959,14 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "WA" = ( /obj/machinery/atmospherics/pipe/simple/visible/green, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "WR" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -978,21 +978,21 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Xi" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 24 }, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Xl" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, /turf/simulated/floor/tiled/old_tile/blue{ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "XN" = ( /obj/machinery/atmospherics/pipe/simple/hidden/supply{ dir = 4 @@ -1005,11 +1005,11 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "XR" = ( /obj/overmap/entity/visitable/sector/class_p, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Yh" = ( /obj/structure/barricade, /obj/machinery/door/airlock/centcom{ @@ -1021,39 +1021,39 @@ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Yr" = ( /turf/simulated/wall, -/area/class_p/explored) +/area/sector/class_p/explored) "Ze" = ( /obj/structure/table/rack/shelf, /obj/machinery/light, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Zl" = ( /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/ruins) +/area/sector/class_p/ruins) "Zn" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on, /obj/structure/blob/normal, /turf/simulated/floor, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "Zv" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ZD" = ( /obj/machinery/artifact_analyser, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ZK" = ( /turf/simulated/floor/outdoors/snow/class_p, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) "ZZ" = ( /obj/structure/cable{ icon_state = "1-8" @@ -1063,7 +1063,7 @@ color = "#8ba7ad"; icon_state = "tile_full" }, -/area/class_p/unexplored) +/area/sector/class_p/unexplored) (1,1,1) = {" Yr diff --git a/maps/sectors/gaia_192/gaia_192-areas.dm b/maps/sectors/gaia_192/gaia_192-areas.dm new file mode 100644 index 000000000000..a51baa41b4a4 --- /dev/null +++ b/maps/sectors/gaia_192/gaia_192-areas.dm @@ -0,0 +1,105 @@ + +//Gaia planet world areas +/area/sector/class_m + name = "Gaia Station" + icon_state = "away" + requires_power = 1 + dynamic_lighting = 1 + +/area/sector/class_m/inside + name = "Gaia Station - Inside (E)" + icon_state = "red" + +/area/sector/class_m/inside/main + name = "Gaia Station - Main Facility" + +/area/sector/class_m/inside/dorms + name = "Gaia Station - Dormitories" + icon_state = "green" + +/area/sector/class_m/inside/vip_dorms + name = "Gaia Station - Premium Dormitories" + icon_state = "green" + +/area/sector/class_m/inside/bathroom + name = "Gaia Station - Bathrooms" + icon_state = "green" + +/area/sector/class_m/inside/cabin + name = "Gaia Station - Cabin" + +/area/sector/class_m/inside/islandbeachhouse + name = "Gaia Station - Island Beach House" + +/area/sector/class_m/inside/sauna + name = "Gaia Station - Main Sauna" + +/area/sector/class_m/inside/sauna2 + name = "Gaia Station - Beach Sauna" + +/area/sector/class_m/inside/sauna3 + name = "Gaia Station - Island Sauna" + +/area/sector/class_m/inside/garage + name = "Gaia Station - Garage" + +/area/sector/class_m/inside/hotspringcaves + name = "Gaia Station - Hotspring Caves" + +/area/sector/class_m/inside/igloos + name = "Gaia Station - Igloos" + +/area/sector/class_m/inside/hangars + name = "Gaia Station - Hangars" + +/area/sector/class_m/inside/reception + name = "Gaia Station - Reception Area" + +/area/sector/class_m/inside/maintenance + name = "Gaia Station - Maintnence Areas" + +/area/sector/class_m/inside/maintenance/winter + name = "Gaia Station - Winter Biome Maintenance" + +/area/sector/class_m/inside/maintenance/desert + name = "Gaia Station - Dessert Biome Maintenance" + +/area/sector/class_m/inside/entrance + name = "Gaia Station - Park Gate" + +/area/sector/class_m/inside/coats + name = "Gaia Station - Coat Room" + +/area/sector/class_m/inside/staff + name = "Gaia Station - Staff Room" + +/area/sector/class_m/outside + name = "Gaia Station - 'Outside' (UE)" + icon_state = "bluenew" + is_outside = OUTSIDE_YES + allow_worldgen_overwrite = TRUE + +/area/sector/class_m/outside/beach + name = "Gaia Station - Beach" + icon_state = "yellow" + +/area/sector/class_m/outside/beachmiddle + name = "Gaia Station - Beach Center" + icon_state = "purple" + +/area/sector/class_m/outside/island + name = "Gaia Station - Island" + icon_state = "purple" + +/area/sector/class_m/outside/island2 + name = "Gaia Station - Island" + icon_state = "blue" + +/area/sector/class_m/outside/docks + name = "Gaia Station - Docks" + +/area/sector/class_m/outside/winter + name = "Gaia Station - Winter Biome" + +/area/sector/class_m/outside/desert + name = "Gaia Station - Desert Biome" diff --git a/maps/sectors/gaia_192/gaia_192.dm b/maps/sectors/gaia_192/gaia_192.dm index 38587a4fd4b4..952d63e0dc45 100644 --- a/maps/sectors/gaia_192/gaia_192.dm +++ b/maps/sectors/gaia_192/gaia_192.dm @@ -13,7 +13,7 @@ display_name = "Gaia Station" path = "maps/sectors/gaia_192/levels/gaia_192.dmm" base_turf = /turf/simulated/floor - base_area = /area/class_m/outside + base_area = /area/sector/class_m/outside traits = list( ZTRAIT_GRAVITY, ) diff --git a/maps/sectors/gaia_192/levels/gaia_192.dmm b/maps/sectors/gaia_192/levels/gaia_192.dmm index e816248989c7..b4a0c35ada24 100644 --- a/maps/sectors/gaia_192/levels/gaia_192.dmm +++ b/maps/sectors/gaia_192/levels/gaia_192.dmm @@ -5,17 +5,17 @@ }, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "ac" = ( /obj/structure/sink{ dir = 8; pixel_x = -14 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ad" = ( /turf/simulated/floor/water/beach/corner, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "ae" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 9 @@ -26,30 +26,30 @@ }, /obj/machinery/vending/medical, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "am" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "an" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ao" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ap" = ( /obj/structure/railing/grey, /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ppflowers, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "aq" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_alc, @@ -58,14 +58,14 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "au" = ( /obj/structure/window/reinforced/polarized/full, /obj/map_helper/electrochromatic_linker{ id = "sauna3" }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "av" = ( /obj/machinery/door/blast/shutters{ dir = 4; @@ -73,14 +73,14 @@ name = "Garage 5" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "aC" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /obj/structure/table/bench/sandstone, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "aD" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -89,7 +89,7 @@ dir = 4 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "aF" = ( /obj/structure/catwalk, /obj/structure/railing, @@ -97,14 +97,14 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/class_m/outside) +/area/sector/class_m/outside) "aG" = ( /obj/item/stool/padded, /obj/machinery/holoposter{ pixel_x = 32 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "aL" = ( /obj/machinery/power/thermoregulator, /obj/effect/map_effect/interval/effect_emitter/steam, @@ -113,24 +113,24 @@ }, /obj/structure/railing, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "aN" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "aO" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "aP" = ( /mob/living/simple_mob/animal/sif/duck, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "aQ" = ( /obj/structure/window/reinforced/full, /obj/structure/curtain/open/bed, @@ -138,35 +138,35 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "aR" = ( /mob/living/simple_mob/animal/sif/diyaab, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "aS" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_soft{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "aT" = ( /obj/machinery/door/airlock/maintenance{ name = "Hangar Maintenance" }, /obj/map_helper/access_helper/airlock/disconnected/gaia/staff, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "aU" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/hosdouble, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "aV" = ( /obj/structure/bonfire, /obj/item/reagent_containers/cooking_container/grill, /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "aW" = ( /obj/effect/floor_decal/corner/blue/border, /obj/structure/closet/wardrobe/chemistry_white, @@ -174,19 +174,19 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "aX" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "aY" = ( /obj/structure/closet/secure_closet/freezer/fridge, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "aZ" = ( /obj/structure/table/hardwoodtable, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ba" = ( /obj/structure/railing/grey{ dir = 1 @@ -194,26 +194,26 @@ /obj/structure/railing/grey, /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "bb" = ( /obj/machinery/vending/fishing, /turf/simulated/floor/wood, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "bc" = ( /obj/effect/floor_decal/corner_steel_grid/full, /obj/machinery/door/airlock/glass{ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bd" = ( /obj/structure/railing/grey, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "be" = ( /mob/living/simple_mob/animal/passive/fox, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "bf" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -225,35 +225,35 @@ pixel_y = 32 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "bg" = ( /obj/structure/bed/chair/sofa/black/right{ dir = 1 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bh" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "bj" = ( /obj/structure/flora/ausbushes/grassybush, /mob/living/simple_mob/animal/passive/fox, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "bk" = ( /obj/structure/catwalk, /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "bl" = ( /obj/machinery/holoposter{ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bn" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -264,17 +264,17 @@ /obj/structure/closet/wardrobe/black, /obj/random/maintenance/clean, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "bq" = ( /obj/effect/floor_decal/industrial/loading{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "bs" = ( /mob/living/simple_mob/animal/passive/bird/azure_tit/tweeter, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "bt" = ( /obj/item/oar, /obj/item/oar, @@ -286,33 +286,33 @@ /obj/item/oar, /obj/structure/table/rack/shelf, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "bu" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/tree/jungle_small, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "bv" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "bw" = ( /obj/machinery/light/spot/no_nightshift{ dir = 1 }, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "bz" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "bA" = ( /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "bC" = ( /obj/structure/table/marble, /obj/item/reagent_containers/glass/rag{ @@ -332,7 +332,7 @@ pixel_x = 7 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bD" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -340,7 +340,7 @@ name = "Garage 7" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "bF" = ( /obj/structure/railing/grey{ dir = 4 @@ -349,7 +349,7 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bH" = ( /obj/structure/railing/grey{ dir = 1 @@ -358,7 +358,7 @@ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "bJ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -366,7 +366,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "bL" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -375,7 +375,7 @@ dir = 10 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "bM" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /obj/machinery/light/spot{ @@ -383,7 +383,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "bN" = ( /obj/structure/railing/grey{ dir = 8 @@ -393,7 +393,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "bP" = ( /obj/structure/mopbucket, /obj/item/mop, @@ -402,19 +402,19 @@ pixel_y = 28 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "bR" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "bS" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "bT" = ( /obj/structure/table/rack, /obj/structure/window/reinforced{ @@ -446,11 +446,11 @@ pixel_y = 8 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "bV" = ( /obj/machinery/door/window/eastright, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "bW" = ( /obj/item/stack/material/log{ amount = 50 @@ -471,21 +471,21 @@ amount = 50 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "cb" = ( /obj/structure/curtain/open/ashlander, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "cc" = ( /obj/machinery/light/spot/no_nightshift, /turf/simulated/floor/tiled, -/area/class_m/outside) +/area/sector/class_m/outside) "cd" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/water, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ce" = ( /obj/structure/railing{ dir = 1 @@ -494,49 +494,49 @@ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "cg" = ( /obj/machinery/computer/arcade/orion_trail, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "cj" = ( /obj/structure/table/marble, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "cm" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "cn" = ( /obj/effect/floor_decal/industrial/loading{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "co" = ( /obj/structure/railing/grey, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "cp" = ( /obj/structure/sign/double/barsign{ layer = 3.3 }, /turf/simulated/wall, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "cq" = ( /obj/structure/table/bench/sandstone, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "cs" = ( /mob/living/simple_mob/animal/passive/penguin, /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ct" = ( /obj/machinery/atmospherics/pipe/tank/phoron, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "cv" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -546,7 +546,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "cw" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -555,7 +555,7 @@ pixel_y = -32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "cx" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 @@ -563,7 +563,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "cz" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -573,20 +573,20 @@ dir = 4 }, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "cB" = ( /obj/machinery/door/airlock{ id_tag = "room7"; name = "Room 7" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "cE" = ( /obj/structure/flora/rock, /obj/effect/mist, /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "cG" = ( /obj/machinery/shower{ pixel_y = 16 @@ -602,13 +602,13 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "cH" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "cI" = ( /obj/structure/railing{ dir = 1 @@ -618,19 +618,19 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "cJ" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "gaia_1" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "cK" = ( /obj/machinery/newscaster{ pixel_x = 30 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "cL" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 @@ -639,18 +639,18 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "cM" = ( /obj/item/melee/umbrella/random, /obj/structure/closet/lasertag/red, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "cN" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "cO" = ( /obj/effect/floor_decal/corner/blue/bordercorner{ dir = 4 @@ -661,21 +661,21 @@ name = "Medical" }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "cP" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 1 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "cR" = ( /obj/effect/floor_decal/corner/blue/border, /obj/machinery/sleeper{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "cT" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 @@ -685,7 +685,7 @@ pixel_x = -64 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "cU" = ( /obj/machinery/vending/fishing, /obj/effect/floor_decal/spline/plain{ @@ -694,47 +694,47 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "cV" = ( /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "cX" = ( /obj/effect/floor_decal/spline/plain, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "dc" = ( /obj/structure/window/basic{ dir = 4 }, /obj/machinery/seed_extractor, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "df" = ( /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "dg" = ( /obj/structure/bed/chair, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "dh" = ( /obj/structure/flora/rock/alternative_2, /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "dl" = ( /obj/map_helper/access_helper/airlock/disconnected/gaia/staff, /obj/machinery/door/airlock/maintenance{ name = "Gaia Bar Backroom" }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "dm" = ( /obj/structure/window/basic{ dir = 4 }, /obj/machinery/honey_extractor, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "dn" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -743,51 +743,51 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "do" = ( /obj/structure/railing{ dir = 1 }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "dp" = ( /obj/effect/floor_decal/industrial/loading{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "dq" = ( /obj/effect/floor_decal/river_beach_edge, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "dw" = ( /obj/effect/floor_decal/industrial/outline/blue, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "dx" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "dy" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "dz" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "dA" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "dC" = ( /obj/machinery/status_display{ pixel_y = 32 @@ -799,22 +799,22 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "dD" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "dG" = ( /obj/spawner/window/full, /turf/simulated/floor, -/area/class_m/outside) +/area/sector/class_m/outside) "dJ" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "dK" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 @@ -823,26 +823,26 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "dL" = ( /mob/living/simple_mob/animal/passive/fish/solarfish, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "dM" = ( /obj/effect/floor_decal/industrial/warning{ dir = 10 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "dN" = ( /obj/structure/catwalk, /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "dO" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "dQ" = ( /obj/structure/window/reinforced/full, /obj/effect/floor_decal/steeldecal/steel_decals5{ @@ -852,7 +852,7 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "dR" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -861,7 +861,7 @@ dir = 4 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "dS" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen{ @@ -874,42 +874,42 @@ pixel_y = 17 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "dW" = ( /obj/machinery/light/spot, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "dX" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "eb" = ( /obj/structure/curtain/open/ashlander, /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "ec" = ( /obj/effect/overlay/palmtree_r, /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ed" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "ee" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ef" = ( /obj/structure/railing/grey{ dir = 8 @@ -917,64 +917,64 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "eg" = ( /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ej" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "en" = ( /turf/simulated/floor/water/shoreline/corner, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "eo" = ( /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ep" = ( /obj/structure/railing/grey, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "eq" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "es" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "et" = ( /obj/machinery/light/spot/no_nightshift, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "eu" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "ev" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "ew" = ( /mob/living/simple_mob/animal/passive/fish/javelin, /turf/simulated/floor/water/deep, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ex" = ( /turf/simulated/floor/water/beach{ dir = 6 }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ey" = ( /obj/machinery/door/airlock/maintenance{ name = "Winter Wonderland Maintenance" @@ -982,7 +982,7 @@ /obj/structure/fans/tiny, /obj/map_helper/access_helper/airlock/disconnected/gaia/staff, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "ez" = ( /obj/effect/floor_decal/techfloor{ dir = 6 @@ -992,7 +992,7 @@ /obj/random/maintenance/clean, /obj/item/reagent_containers/glass/bottle/lotion, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "eF" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/grilled_carp_slice, @@ -1001,12 +1001,12 @@ /obj/item/reagent_containers/food/snacks/grilled_carp_slice, /obj/item/reagent_containers/food/snacks/grilled_carp_slice, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "eH" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete16" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "eI" = ( /obj/structure/railing/grey{ dir = 4 @@ -1015,10 +1015,10 @@ /obj/effect/mist, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "eJ" = ( /turf/simulated/wall/snowbrick, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "eK" = ( /obj/effect/mist, /obj/machinery/light/small{ @@ -1027,29 +1027,29 @@ /obj/structure/table/woodentable, /obj/item/reagent_containers/glass/bucket/wood, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "eL" = ( /obj/machinery/atmospherics/pipe/simple/visible, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "eM" = ( /obj/machinery/microwave{ pixel_y = 6 }, /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "eN" = ( /obj/structure/flora/rock, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "eO" = ( /obj/structure/flora/rock/alternative_1, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "eP" = ( /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "eQ" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -1058,7 +1058,7 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "eR" = ( /obj/machinery/button/remote/airlock{ id = "room9"; @@ -1071,7 +1071,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "eS" = ( /obj/effect/floor_decal/corner/blue/bordercorner{ dir = 1 @@ -1080,7 +1080,7 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "eT" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -1092,23 +1092,23 @@ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "eU" = ( /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "eV" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "eW" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "eX" = ( /obj/structure/mirror{ dir = 4; @@ -1118,7 +1118,7 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "eY" = ( /obj/structure/table/rack/shelf, /obj/item/towel/random, @@ -1132,27 +1132,27 @@ /obj/item/towel/random, /obj/item/towel/random, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "eZ" = ( /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "fa" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "fc" = ( /obj/item/stool/padded, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "ff" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "fg" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/fruitsalad, @@ -1161,76 +1161,76 @@ /obj/item/reagent_containers/food/snacks/fruitsalad, /obj/item/reagent_containers/food/snacks/fruitsalad, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "fi" = ( /turf/simulated/floor/water/beach/corner, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "fj" = ( /obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "fk" = ( /turf/simulated/floor/water/beach{ dir = 8 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "fm" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "fo" = ( /obj/structure/bed/chair, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "fp" = ( /obj/effect/mist, /obj/machinery/computer/security/telescreen{ pixel_y = 57 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "fq" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /obj/machinery/portable_atmospherics/hydroponics/soil, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "fs" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "fu" = ( /obj/structure/fans/tiny, /obj/machinery/door/airlock/maintenance{ name = "Desert Biome Maintenance" }, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "fx" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "fA" = ( /obj/machinery/recharge_station, /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "fB" = ( /obj/structure/flora/ausbushes/sunnybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "fC" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "fF" = ( /obj/structure/table/standard, /obj/random/soap{ @@ -1254,16 +1254,16 @@ pixel_x = 5 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "fG" = ( /mob/living/simple_mob/animal/passive/fish/salmon, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "fK" = ( /obj/structure/lightpost, /obj/structure/flora/rock/ice/alternative_2, /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "fL" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -1275,11 +1275,11 @@ dir = 1 }, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "fM" = ( /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "fO" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 5 @@ -1289,24 +1289,24 @@ }, /obj/structure/curtain/open/shower, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "fP" = ( /mob/living/simple_mob/animal/passive/fish/perch, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "fQ" = ( /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "fT" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "fU" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "fZ" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -1314,39 +1314,39 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "ga" = ( /mob/living/simple_mob/animal/passive/fish/rockfish, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "gb" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "gc" = ( /turf/simulated/mineral, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "gd" = ( /turf/simulated/floor/water/beach, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "gg" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "gi" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_alc{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "gj" = ( /obj/structure/catwalk, /obj/structure/railing, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "gk" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -1359,29 +1359,29 @@ pixel_y = 47 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "gl" = ( /obj/machinery/vending/wallmed1{ pixel_x = 32 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "gm" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "gp" = ( /obj/structure/fans/tiny, /obj/machinery/turnstile/resort/exit{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "gs" = ( /mob/living/simple_mob/animal/passive/fish/javelin, /turf/simulated/floor/water/deep, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "gu" = ( /obj/structure/closet/crate/hydroponics, /obj/structure/flora/ausbushes/brflowers, @@ -1393,7 +1393,7 @@ /obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "gw" = ( /obj/structure/closet/secure_closet/freezer, /obj/item/reagent_containers/food/snacks/icecreamsandwich, @@ -1417,23 +1417,23 @@ /obj/item/reagent_containers/food/drinks/cans/coconutwater, /obj/item/reagent_containers/food/drinks/cans/coconutwater, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "gy" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "gz" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "gA" = ( /obj/structure/flora/rock/ice/alternative_1, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "gB" = ( /obj/structure/railing/grey{ dir = 1 @@ -1441,26 +1441,26 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "gC" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "gD" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "gF" = ( /turf/simulated/floor/water/shoreline{ dir = 10 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "gG" = ( /turf/simulated/floor/water, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "gJ" = ( /obj/item/radio/intercom/entertainment{ dir = 4 @@ -1474,19 +1474,19 @@ pixel_x = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "gL" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/yellow, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "gM" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete18" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "gN" = ( /obj/machinery/light/spot{ dir = 8; @@ -1494,34 +1494,34 @@ }, /obj/machinery/washing_machine, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "gQ" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "gR" = ( /obj/machinery/smartfridge/chemistry, /turf/simulated/wall, -/area/class_m/outside) +/area/sector/class_m/outside) "gS" = ( /obj/effect/mist, /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "gT" = ( /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "gW" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "gY" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, @@ -1530,7 +1530,7 @@ /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, /obj/item/reagent_containers/food/drinks/bottle/bottleofnothing, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "gZ" = ( /obj/structure/window/basic, /obj/structure/table/bench/wooden, @@ -1539,13 +1539,13 @@ pixel_y = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "ha" = ( /obj/structure/flora/tree/jungle_small{ pixel_x = -44 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "he" = ( /obj/structure/railing/grey{ dir = 4 @@ -1553,57 +1553,57 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "hg" = ( /obj/machinery/newscaster{ pixel_x = 30 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "hh" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "hi" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "hk" = ( /obj/machinery/light/spot/no_nightshift, /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "hm" = ( /obj/structure/bed/chair, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hn" = ( /obj/effect/floor_decal/spline/plain, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "hp" = ( /obj/machinery/door/blast/regular{ name = "Hangar Door" }, /turf/simulated/wall/planetary, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "hr" = ( /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "hs" = ( /turf/simulated/floor/water/beach{ dir = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "ht" = ( /turf/simulated/floor/carpet/patterened/purple, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "hu" = ( /obj/effect/floor_decal/corner/blue/border, /obj/structure/table/standard, @@ -1617,14 +1617,14 @@ amount = 50 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "hv" = ( /obj/structure/bed/chair/sofa/black/left{ dir = 1 }, /obj/item/trash/unajerky, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "hw" = ( /obj/structure/railing{ dir = 1 @@ -1633,17 +1633,17 @@ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/red, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "hx" = ( /mob/living/simple_mob/animal/passive/fish/koi, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "hy" = ( /mob/living/simple_mob/animal/passive/crab, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "hz" = ( /obj/structure/railing/grey{ dir = 8 @@ -1652,7 +1652,7 @@ dir = 1 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "hC" = ( /obj/structure/railing/grey{ dir = 4 @@ -1661,7 +1661,7 @@ /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "hD" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 @@ -1673,18 +1673,18 @@ pixel_y = 17 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hE" = ( /obj/machinery/light/small{ dir = 4 }, /obj/item/stool/padded, /turf/simulated/floor/carpet/patterened/purple, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "hH" = ( /obj/structure/flora/rock, /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "hI" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey, @@ -1692,7 +1692,7 @@ dir = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "hJ" = ( /obj/structure/table/sandstone, /obj/item/material/kitchen/utensil/spoon, @@ -1706,20 +1706,20 @@ /obj/item/material/kitchen/utensil/spoon, /obj/item/material/kitchen/utensil/spoon, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "hK" = ( /obj/machinery/light/spot{ alpha = 0; nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "hM" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 5 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hP" = ( /obj/structure/table/sandstone, /obj/structure/closet/crate/freezer, @@ -1739,51 +1739,51 @@ /obj/item/reagent_containers/food/snacks/icecreamsandwich, /obj/item/reagent_containers/food/snacks/icecreamsandwich, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "hQ" = ( /obj/structure/catwalk, /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hR" = ( /obj/spawner/window/reinforced/full, /obj/structure/fans/tiny, /turf/simulated/floor, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "hT" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust, /obj/machinery/computer/security/telescreen, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hW" = ( /obj/structure/railing/grey, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "hX" = ( /obj/machinery/door/airlock/maintenance{ name = "Winter Wonderland Maintenance" }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "hZ" = ( /turf/simulated/floor/water/beach/corner, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "ia" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/railing, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ib" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/outside) +/area/sector/class_m/outside) "ic" = ( /obj/machinery/vending/wallmed1{ pixel_x = -32 @@ -1793,10 +1793,10 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "id" = ( /turf/simulated/wall/planetary, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "ie" = ( /obj/structure/table/woodentable, /obj/machinery/computer/security/telescreen{ @@ -1811,11 +1811,11 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "if" = ( /obj/machinery/vending/hydronutrients, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "ig" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 @@ -1824,25 +1824,25 @@ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ii" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ij" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ik" = ( /obj/effect/mist, /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "il" = ( /obj/structure/railing{ dir = 1 @@ -1852,20 +1852,20 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "im" = ( /obj/machinery/holoposter{ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "io" = ( /obj/effect/floor_decal/corner/blue/bordercorner, /obj/effect/floor_decal/corner/blue/bordercorner{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "ip" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 @@ -1874,13 +1874,13 @@ dir = 10 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "iq" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "is" = ( /obj/structure/window/basic, /obj/item/reagent_containers/glass/bucket/wood, @@ -1889,7 +1889,7 @@ /obj/item/reagent_containers/glass/bucket/wood, /obj/item/reagent_containers/glass/bucket/wood, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "it" = ( /obj/machinery/light/spot{ dir = 4; @@ -1897,32 +1897,32 @@ }, /obj/structure/undies_wardrobe, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "iu" = ( /obj/machinery/door/window/eastleft{ dir = 1 }, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "iv" = ( /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside) +/area/sector/class_m/outside) "iy" = ( /obj/effect/floor_decal/corner/blue/bordercorner{ dir = 1 }, /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "iz" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iC" = ( /turf/simulated/floor/water/beach{ dir = 9 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "iF" = ( /obj/structure/table/glass, /obj/structure/window/basic{ @@ -1932,13 +1932,13 @@ /obj/item/reagent_containers/food/drinks/glass2/wine, /obj/item/reagent_containers/food/drinks/glass2/wine, /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "iG" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 9 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "iH" = ( /obj/structure/flora/ausbushes/reedbush, /obj/structure/catwalk, @@ -1947,7 +1947,7 @@ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "iJ" = ( /obj/item/radio/intercom{ dir = 8; @@ -1961,7 +1961,7 @@ /obj/item/reagent_containers/food/snacks/waffles, /obj/item/reagent_containers/food/snacks/waffles, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "iM" = ( /obj/structure/railing/grey{ dir = 8 @@ -1970,37 +1970,37 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iO" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iP" = ( /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "iQ" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_soft, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iR" = ( /obj/structure/table/hardwoodtable, /obj/machinery/computer/security/telescreen{ pixel_y = 157 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iS" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "iT" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "iV" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ @@ -2008,17 +2008,17 @@ }, /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "iW" = ( /turf/simulated/floor/water/beach/corner{ dir = 4 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "iY" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /obj/structure/bed/chair, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ja" = ( /obj/machinery/door/blast/shutters{ dir = 4; @@ -2026,11 +2026,11 @@ name = "Garage 3" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "jb" = ( /obj/machinery/biogenerator, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "jf" = ( /obj/structure/table/marble, /obj/item/reagent_containers/glass/rag{ @@ -2053,42 +2053,42 @@ pixel_y = 15 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "jh" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/table/bench/wooden, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "ji" = ( /obj/effect/floor_decal/steeldecal/steel_decals5, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "jk" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "jl" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "jm" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ppflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "jo" = ( /obj/machinery/light/spot/no_nightshift{ dir = 1 }, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "jp" = ( /obj/structure/table/woodentable, /obj/machinery/light/small{ @@ -2135,7 +2135,7 @@ pixel_x = 6 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "jv" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -2143,17 +2143,17 @@ name = "Garage 8" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "jw" = ( /mob/living/simple_mob/animal/passive/bird/parrot, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "jy" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/water/beach/corner, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "jz" = ( /obj/machinery/button/remote/airlock{ id = "room15"; @@ -2164,21 +2164,21 @@ }, /obj/machinery/light/flamp, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "jA" = ( /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "jB" = ( /obj/machinery/appliance/cooker/grill/stand, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "jC" = ( /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "jD" = ( /obj/machinery/floor_light/changing/prebuilt{ on = 1 @@ -2189,14 +2189,14 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "jE" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "jG" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 8 @@ -2212,12 +2212,12 @@ pixel_y = 5 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "jH" = ( /turf/simulated/floor/water/shoreline{ dir = 4 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "jI" = ( /obj/structure/railing, /obj/effect/floor_decal/river_beach_edge{ @@ -2225,7 +2225,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "jJ" = ( /obj/structure/table/woodentable, /obj/machinery/computer/security/telescreen{ @@ -2236,7 +2236,7 @@ pixel_y = 56 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "jK" = ( /obj/machinery/shower{ dir = 4 @@ -2248,7 +2248,7 @@ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "jL" = ( /obj/structure/railing/grey{ dir = 1 @@ -2257,14 +2257,14 @@ dir = 4 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "jM" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 4 }, /obj/effect/floor_decal/steeldecal/steel_decals10, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "jN" = ( /obj/structure/railing/grey{ dir = 1 @@ -2273,7 +2273,7 @@ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "jP" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 10 @@ -2283,29 +2283,29 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "jQ" = ( /obj/structure/flora/tree/jungle_small, /mob/living/simple_mob/animal/passive/bird/ringneck_dove, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "jS" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 10 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "jU" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "jV" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 5 }, /obj/structure/closet/secure_closet/chemical, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "jW" = ( /obj/structure/table/hardwoodtable, /obj/item/radio/intercom/entertainment{ @@ -2313,66 +2313,66 @@ pixel_y = 10 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "jY" = ( /obj/structure/railing, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "jZ" = ( /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "ka" = ( /turf/simulated/floor/water/beach{ dir = 6 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "kc" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete19" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "kf" = ( /obj/item/reagent_containers/glass/bottle/lotion, /obj/structure/table/standard, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "kg" = ( /obj/structure/toilet{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "kh" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "kk" = ( /obj/item/reagent_containers/food/snacks/sliceable/monkfish{ pixel_x = -10; pixel_y = -6 }, /turf/simulated/wall, -/area/class_m/outside) +/area/sector/class_m/outside) "kl" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "km" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ko" = ( /obj/structure/window/reinforced/tinted/frosted{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "kp" = ( /turf/simulated/wall, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "kr" = ( /obj/machinery/button/remote/airlock{ id = "restroom"; @@ -2382,10 +2382,10 @@ specialfunctions = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "ku" = ( /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "kv" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/condiment/small/packet/soy, @@ -2496,22 +2496,22 @@ pixel_y = 16 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "kw" = ( /obj/machinery/door/airlock{ id_tag = "restroom"; name = "Restroom" }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "ky" = ( /obj/structure/flora/tree/jungle_small, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "kC" = ( /obj/item/stack/ore/coal, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "kD" = ( /obj/structure/sign/department/armory{ desc = "A warning sign for anyone entering the station."; @@ -2519,7 +2519,7 @@ pixel_x = 32 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "kE" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -2532,29 +2532,29 @@ pixel_x = -21 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "kF" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "kH" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "kJ" = ( /obj/structure/fireplace{ pixel_y = 24 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "kM" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "kN" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -2628,20 +2628,20 @@ pixel_y = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "kO" = ( /obj/structure/flora/pottedplant/thinbush, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "kP" = ( /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "kS" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "kT" = ( /obj/structure/flora/tree/palm{ pixel_x = -4; @@ -2654,28 +2654,28 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "kU" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "kV" = ( /obj/structure/bed/chair/sofa/black, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "kW" = ( /obj/machinery/door/airlock{ id_tag = "room4"; name = "Room 4" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "kY" = ( /obj/structure/flora/pottedplant/minitree, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "la" = ( /obj/structure/railing/grey{ dir = 1 @@ -2684,27 +2684,27 @@ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "lb" = ( /turf/simulated/wall, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "lc" = ( /obj/effect/catwalk_plated/dark, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "le" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 8 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "lf" = ( /obj/machinery/door/window/northright{ pixel_y = -12 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "lg" = ( /obj/structure/bed/chair/sofa/black, /obj/item/radio/intercom/entertainment{ @@ -2713,12 +2713,12 @@ pixel_y = 25 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "lh" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "li" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -2727,7 +2727,7 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "ll" = ( /obj/structure/table/woodentable, /obj/machinery/door/window/eastleft, @@ -2735,18 +2735,18 @@ dir = 1 }, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "lm" = ( /obj/structure/coatrack, /turf/simulated/floor/carpet/patterened/magneta, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "ln" = ( /obj/effect/mist, /obj/effect/mist, /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "lo" = ( /obj/structure/table/bench/marble, /obj/effect/mist, @@ -2764,37 +2764,37 @@ pixel_y = 36 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "lp" = ( /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "lq" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "lt" = ( /obj/effect/floor_decal/corner/blue/border, /obj/machinery/sleep_console, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "lv" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "lw" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "lz" = ( /turf/simulated/floor/water/beach{ dir = 10 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "lA" = ( /obj/machinery/door/airlock/maintenance{ name = "Winter Wonderland Maintenance" @@ -2802,20 +2802,20 @@ /obj/structure/fans/tiny, /obj/map_helper/access_helper/airlock/disconnected/gaia/staff, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "lB" = ( /obj/spawner/window/reinforced/full, /obj/structure/curtain/black, /turf/simulated/floor, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "lC" = ( /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "lD" = ( /obj/structure/flora/tree/palm, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "lF" = ( /obj/machinery/light/spot{ dir = 8; @@ -2829,23 +2829,23 @@ /obj/item/reagent_containers/food/snacks/bearstew, /obj/item/reagent_containers/food/snacks/bearstew, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "lG" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "lH" = ( /turf/simulated/floor/tiled/white, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "lI" = ( /obj/overmap/entity/visitable/sector/gaia_planet, /turf/simulated/floor/water/deep, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "lJ" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "lL" = ( /obj/machinery/chem_master/condimaster, /obj/machinery/light/spot{ @@ -2853,11 +2853,11 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "lO" = ( /obj/structure/flora/pottedplant/flower, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "lQ" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -2866,14 +2866,14 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "lR" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /mob/living/simple_mob/animal/passive/fish/koi, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "lS" = ( /obj/structure/railing{ dir = 1 @@ -2882,16 +2882,16 @@ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "lT" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "lU" = ( /obj/structure/bed/chair, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "lV" = ( /obj/structure/table/woodentable, /obj/structure/window/reinforced{ @@ -2902,29 +2902,29 @@ }, /obj/machinery/cash_register, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "lX" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "lY" = ( /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "mb" = ( /obj/structure/table/marble, /obj/item/material/knife/butch{ pixel_y = 3 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mc" = ( /obj/structure/grille, /obj/structure/foamedmetal, /turf/simulated/floor, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "md" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/condiment/small/packet/capsaicin, @@ -3002,7 +3002,7 @@ pixel_x = 6 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "mf" = ( /obj/structure/closet/largecardboard, /obj/structure/closet/largecardboard, @@ -3010,11 +3010,11 @@ /obj/structure/closet/largecardboard, /obj/structure/closet/largecardboard, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "mk" = ( /obj/structure/table/marble, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ml" = ( /obj/structure/flora/ausbushes/reedbush, /obj/structure/catwalk, @@ -3023,11 +3023,11 @@ dir = 4 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "mm" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "mn" = ( /obj/effect/floor_decal/techfloor{ dir = 9 @@ -3038,16 +3038,16 @@ /obj/item/clothing/accessory/collar/shock, /obj/item/assembly/signaler, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "mo" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "mp" = ( /obj/item/stool/padded, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ms" = ( /obj/structure/railing, /obj/structure/railing{ @@ -3055,66 +3055,66 @@ }, /obj/machinery/vending/gaia, /turf/simulated/floor/tiled/kafel_full/beige, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "mt" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mv" = ( /obj/structure/table/marble, /obj/machinery/microwave, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mz" = ( /obj/structure/curtain/open/ashlander, /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "mA" = ( /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "mB" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "mC" = ( /obj/machinery/holoposter, /turf/simulated/wall, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "mD" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "mE" = ( /obj/machinery/vending/giftvendor, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "mF" = ( /obj/structure/bed/chair/wood/wings{ dir = 1 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mH" = ( /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "mJ" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "mL" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "mM" = ( /obj/structure/window/basic, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "mN" = ( /obj/structure/table/marble, /obj/item/reagent_containers/food/condiment/small/saltshaker{ @@ -3142,10 +3142,10 @@ pixel_y = 16 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mO" = ( /turf/simulated/floor/carpet/patterened/blue, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "mP" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -3155,18 +3155,18 @@ pixel_x = -24 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "mR" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "mU" = ( /obj/structure/table/marble, /obj/machinery/light/small, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "mW" = ( /obj/structure/window/basic, /obj/structure/window/basic{ @@ -3174,25 +3174,25 @@ }, /obj/machinery/vending/hydroseeds, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "mX" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "na" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "nc" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "nd" = ( /obj/effect/floor_decal/techfloor{ dir = 1 @@ -3201,7 +3201,7 @@ dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "ne" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen{ @@ -3209,25 +3209,25 @@ pixel_y = 7 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "nf" = ( /obj/machinery/door/airlock{ id_tag = "room13"; name = "Room 13" }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "ng" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "nh" = ( /obj/structure/fans/tiny, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "ni" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/pwine, @@ -3236,12 +3236,12 @@ /obj/item/reagent_containers/food/drinks/bottle/pwine, /obj/item/reagent_containers/food/drinks/bottle/pwine, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "nj" = ( /obj/spawner/window/borosillicate/full, /obj/structure/fans/tiny, /turf/simulated/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "nk" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -3249,11 +3249,11 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "nm" = ( /obj/item/stack/ore, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "nn" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -3262,25 +3262,25 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "no" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "nt" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "nu" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/beige, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "nv" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 @@ -3288,11 +3288,11 @@ /turf/simulated/floor/water/beach{ dir = 4 }, -/area/class_m/outside) +/area/sector/class_m/outside) "nw" = ( /obj/structure/bed/chair/bay/chair/padded/red/bignest, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "nz" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -3303,28 +3303,28 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "nA" = ( /turf/simulated/floor/water/beach{ dir = 5 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "nB" = ( /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "nD" = ( /obj/machinery/light/small, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "nE" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/drinks/bottle/wine, /obj/item/reagent_containers/food/drinks/glass2/wine, /obj/item/reagent_containers/food/drinks/glass2/wine, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "nF" = ( /turf/unsimulated/fake_space, /area/space) @@ -3336,35 +3336,35 @@ /obj/structure/table/woodentable, /obj/item/reagent_containers/glass/bucket/wood, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "nK" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "nT" = ( /obj/structure/table/rack/steel, /obj/fiftyspawner/log, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "nU" = ( /obj/structure/lightpost, /turf/simulated/floor/wood, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "nV" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "nX" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, /obj/machinery/body_scanconsole, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "nY" = ( /obj/machinery/light{ dir = 8; @@ -3377,25 +3377,25 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "og" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "oj" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/flora/pottedplant/tropical, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ok" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "om" = ( /obj/structure/window/reinforced{ dir = 1 @@ -3433,17 +3433,17 @@ /obj/item/towel/random, /obj/structure/table/rack, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "oo" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "os" = ( /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "ot" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -3451,10 +3451,10 @@ name = "Garage 6" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "ou" = ( /turf/simulated/floor/water/deep, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "ov" = ( /obj/machinery/light/spot{ dir = 1; @@ -3463,13 +3463,13 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "ow" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "oA" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -3479,29 +3479,29 @@ }, /obj/effect/mist, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "oB" = ( /obj/machinery/door/airlock{ id_tag = "room7"; name = "Room 7" }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "oC" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "oE" = ( /obj/structure/bed/chair, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "oF" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete22" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "oG" = ( /obj/structure/catwalk, /obj/structure/railing, @@ -3512,11 +3512,11 @@ dir = 5 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "oH" = ( /obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "oI" = ( /obj/item/stack/material/log{ amount = 50 @@ -3529,26 +3529,26 @@ pixel_y = 21 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "oJ" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "oK" = ( /obj/structure/table/sifwoodentable, /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "oM" = ( /obj/effect/floor_decal/river_beach_edge, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "oO" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/rddouble, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "oP" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -3561,7 +3561,7 @@ pixel_y = -55 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "oQ" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -3570,40 +3570,40 @@ dir = 1 }, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "oR" = ( /obj/machinery/door/airlock/glass{ name = "Desert Resort" }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "oS" = ( /obj/structure/flora/rock, /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "oT" = ( /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "oV" = ( /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "oW" = ( /obj/item/stack/ore/coal, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "oX" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "oY" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "pa" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 4 @@ -3612,7 +3612,7 @@ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "pd" = ( /obj/effect/floor_decal/techfloor{ dir = 4 @@ -3621,28 +3621,28 @@ dir = 4 }, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "pe" = ( /turf/simulated/wall, -/area/class_m/outside) +/area/sector/class_m/outside) "pg" = ( /mob/living/simple_mob/animal/passive/fish/trout, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ph" = ( /obj/structure/toilet{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "pj" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "pk" = ( /obj/structure/table/sandstone, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "pl" = ( /obj/machinery/button/remote/airlock{ id = "room7"; @@ -3652,7 +3652,7 @@ specialfunctions = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "pm" = ( /obj/structure/table/rack, /obj/item/melee/umbrella, @@ -3660,13 +3660,13 @@ /obj/item/melee/umbrella, /obj/item/melee/umbrella, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "po" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "pp" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/greenstuff, @@ -3675,22 +3675,22 @@ /obj/item/reagent_containers/food/drinks/bottle/greenstuff, /obj/item/reagent_containers/food/drinks/bottle/greenstuff, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "pr" = ( /turf/simulated/floor/water/beach/corner{ dir = 4 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "ps" = ( /obj/structure/closet/wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "pu" = ( /obj/effect/floor_decal/industrial/loading{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "px" = ( /obj/structure/table/rack, /obj/item/stack/material/log{ @@ -3703,30 +3703,30 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "py" = ( /obj/structure/railing/grey, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "pz" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_edge{ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "pA" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/yellow, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "pB" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 6 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "pD" = ( /obj/structure/window/reinforced{ dir = 1 @@ -3736,7 +3736,7 @@ /obj/item/clothing/suit/storage/hooded/wintercoat/olive, /obj/structure/closet/secure_closet/personal, /turf/simulated/floor/carpet, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "pE" = ( /obj/structure/railing/grey{ dir = 8 @@ -3746,27 +3746,27 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "pG" = ( /obj/machinery/light/spot/no_nightshift{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "pI" = ( /turf/simulated/wall, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "pJ" = ( /turf/simulated/floor/water/beach/corner{ dir = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "pL" = ( /obj/item/beach_ball, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "pM" = ( /obj/machinery/recharge_station, /obj/machinery/light/spot{ @@ -3774,13 +3774,13 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "pO" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "pP" = ( /obj/structure/table/bench/marble, /obj/effect/mist, @@ -3798,79 +3798,79 @@ pixel_y = 36 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "pQ" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "pR" = ( /obj/structure/bonfire, /obj/machinery/computer/security/telescreen{ pixel_y = 118 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "pT" = ( /obj/effect/floor_decal/industrial/warning{ dir = 6 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "pV" = ( /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "pW" = ( /turf/simulated/floor/water/shoreline{ dir = 6 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "pX" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "pY" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "qa" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "qc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "qd" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 }, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "qe" = ( /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "qh" = ( /mob/living/simple_mob/animal/passive/fish/javelin, /turf/simulated/floor/water/deep, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "qi" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/effect/floor_decal/river_beach_edge{ dir = 6 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "qj" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ @@ -3880,13 +3880,13 @@ dir = 4 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "qk" = ( /turf/simulated/wall, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "ql" = ( /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "qm" = ( /obj/structure/fence{ name = "vollyball net"; @@ -3895,7 +3895,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "qn" = ( /obj/structure/table/bench/wooden, /obj/machinery/reagentgrinder{ @@ -3903,14 +3903,14 @@ pixel_y = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "qo" = ( /obj/effect/mist, /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "qp" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -3918,7 +3918,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "qs" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -3926,11 +3926,11 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "qv" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "qw" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -3943,13 +3943,13 @@ dir = 1 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "qy" = ( /obj/vehicle/ridden/gokart/random{ dir = 4 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "qz" = ( /obj/machinery/button/remote/airlock{ id = "room13"; @@ -3960,42 +3960,42 @@ }, /obj/machinery/light/flamp, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "qB" = ( /turf/simulated/floor/water/beach{ dir = 9 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "qC" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/drinks/bottle/whitewine, /obj/item/reagent_containers/food/drinks/glass2/wine, /obj/item/reagent_containers/food/drinks/glass2/wine, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "qD" = ( /obj/effect/mist, /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "qE" = ( /obj/structure/memorial/small/right{ desc = "An obsidian memorial wall. Engraved on it is a group of humanoids of indeterminate species relaxing peacefull on a beach as the sunsets. Beneath is a quote from the founder of the Happy Days and Sunshine Corporation: 'Our mission: to make sure all species can find paradise'."; description_fluff = "" }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "qF" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "qG" = ( /obj/structure/table/rack, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "qH" = ( /obj/machinery/light/spot{ dir = 1; @@ -4004,7 +4004,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "qJ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -4013,7 +4013,7 @@ dir = 6 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "qK" = ( /obj/structure/bed/chair{ dir = 1 @@ -4021,19 +4021,19 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "qL" = ( /obj/structure/janitorialcart, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "qN" = ( /obj/effect/floor_decal/corner_steel_grid, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "qQ" = ( /obj/structure/bed/chair/sofa/black/right, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "qS" = ( /obj/item/melee/telebaton/newspaper{ pixel_x = 8; @@ -4061,13 +4061,13 @@ }, /obj/structure/table/marble, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "qT" = ( /obj/structure/bed/chair/sofa/black/left{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "qU" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 8 @@ -4076,7 +4076,7 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "qV" = ( /obj/effect/floor_decal/corner_steel_grid/full{ dir = 8 @@ -4085,20 +4085,20 @@ anchored = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "qW" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "qY" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "qZ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -4107,13 +4107,13 @@ dir = 9 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "rb" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/kafel_full/green, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "rc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -4123,17 +4123,17 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "rf" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete21" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "rh" = ( /obj/structure/window/reinforced/full, /obj/structure/curtain/open/bed, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "rj" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -4145,7 +4145,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "rl" = ( /obj/item/stool/padded, /obj/item/radio/intercom{ @@ -4153,22 +4153,22 @@ pixel_x = 22 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "rm" = ( /obj/structure/flora/tree/jungle, /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "rn" = ( /obj/structure/closet/jcloset, /obj/item/soap/nanotrasen, /obj/item/reagent_containers/glass/rag/sponge, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "rq" = ( /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "rr" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -4178,7 +4178,7 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "rs" = ( /obj/structure/table/woodentable, /obj/machinery/light/small{ @@ -4225,7 +4225,7 @@ pixel_x = 6 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "rt" = ( /obj/structure/flora/tree/palm, /obj/structure/railing/grey{ @@ -4236,22 +4236,22 @@ }, /obj/structure/railing/grey, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "rx" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "ry" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /obj/structure/bed/chair, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "rz" = ( /obj/item/stool/padded, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "rA" = ( /obj/item/radio/intercom/entertainment{ dir = 1; @@ -4268,24 +4268,24 @@ /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete20" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "rD" = ( /mob/living/simple_mob/animal/passive/crab, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "rE" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "rF" = ( /obj/structure/railing/grey, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "rH" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -4294,49 +4294,49 @@ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "rJ" = ( /obj/structure/window/reinforced/full, /obj/structure/curtain/black, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "rK" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "rL" = ( /obj/structure/table/woodentable, /obj/machinery/door/window/eastright, /obj/structure/window/reinforced, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "rM" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/bluedouble, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "rP" = ( /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "rR" = ( /obj/machinery/light{ dir = 8; light_range = 12 }, /turf/simulated/floor/tiled, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "rU" = ( /obj/structure/flora/rock/ice/alternative_1, /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "rV" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "rX" = ( /obj/structure/table/rack/shelf, /obj/item/towel/random, @@ -4348,22 +4348,22 @@ /obj/item/towel/random, /obj/item/towel/random, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "sa" = ( /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "sb" = ( /obj/structure/bed/chair/wood/wings{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "se" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "sg" = ( /obj/structure/flora/tree/palm{ pixel_x = -15; @@ -4372,30 +4372,30 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "sh" = ( /mob/living/simple_mob/animal/passive/bird/parrot/white_cockatoo, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "si" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "sj" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "sk" = ( /obj/structure/flora/tree/palm, /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "sl" = ( /obj/machinery/shower{ dir = 1 @@ -4405,53 +4405,53 @@ dir = 1 }, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "sm" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "so" = ( /obj/item/stool/padded, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "sp" = ( /obj/structure/railing, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "sq" = ( /obj/structure/bed/chair/wood/wings{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ss" = ( /mob/living/simple_mob/animal/passive/penguin/baby, /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "st" = ( /obj/structure/flora/tree/jungle{ pixel_x = -27 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "sv" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 }, /obj/machinery/turnstile/resort/exit, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "sw" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 9 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "sx" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -4460,22 +4460,22 @@ name = "Winter Wonderland" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "sE" = ( /mob/living/simple_mob/animal/passive/penguin/baby, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "sF" = ( /obj/structure/bed/chair/sofa/black/corner, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "sG" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/structure/bed/chair/sofa/black/right, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "sI" = ( /obj/structure/railing/grey{ dir = 8 @@ -4484,14 +4484,14 @@ /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "sJ" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/railing, /turf/simulated/floor/wood/outdoors, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "sK" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/ribplate_bear, @@ -4500,7 +4500,7 @@ /obj/item/reagent_containers/food/snacks/ribplate_bear, /obj/item/reagent_containers/food/snacks/ribplate_bear, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "sM" = ( /obj/structure/railing{ dir = 1 @@ -4509,7 +4509,7 @@ anchored = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "sO" = ( /obj/effect/floor_decal/spline/plain{ dir = 5 @@ -4518,14 +4518,14 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "sP" = ( /obj/effect/floor_decal/industrial/warning/dust/corner, /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "sQ" = ( /obj/structure/railing{ dir = 1 @@ -4534,7 +4534,7 @@ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/green, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "sR" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -4543,29 +4543,29 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "sU" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "sV" = ( /obj/structure/sink/puddle, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "sX" = ( /mob/living/simple_mob/animal/passive/fish/bass, /turf/simulated/floor/water/deep, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "sY" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "sZ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -4577,24 +4577,24 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ta" = ( /obj/structure/sink/puddle, /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "tb" = ( /turf/simulated/floor/water/beach/corner{ dir = 1 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "tc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "te" = ( /obj/structure/railing/grey{ dir = 1 @@ -4607,25 +4607,25 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "tg" = ( /obj/structure/bed/chair/sofa/black/right{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "tk" = ( /mob/living/simple_mob/animal/passive/lizard, /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "tl" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "tm" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tn" = ( /obj/structure/table/rack, /obj/item/material/twohanded/folded_metal_chair, @@ -4654,37 +4654,37 @@ pixel_y = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "to" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tq" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ts" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tt" = ( /obj/structure/table/rack/shelf/steel, /obj/item/storage/toolbox/mechanical, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "tu" = ( /turf/simulated/wall, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "tv" = ( /turf/simulated/wall, -/area/class_m/inside) +/area/sector/class_m/inside) "tw" = ( /obj/structure/flora/pottedplant/smallcactus, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "tx" = ( /obj/machinery/light/spot{ dir = 1; @@ -4694,7 +4694,7 @@ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ty" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0; @@ -4702,55 +4702,55 @@ }, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tz" = ( /obj/structure/table/marble, /obj/structure/statue/marble/venus, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "tE" = ( /obj/structure/flora/ausbushes/reedbush, /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tF" = ( /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tG" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tH" = ( /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "tI" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/browndouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "tJ" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "tL" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "tN" = ( /mob/living/simple_mob/animal/passive/bird/european_robin, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tO" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "tP" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 @@ -4759,28 +4759,28 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "tQ" = ( /turf/simulated/floor/carpet/oracarpet, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "tR" = ( /obj/structure/flora/tree/jungle_small, /mob/living/simple_mob/animal/passive/bird/european_robin, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tS" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "tT" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tU" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 6 @@ -4805,7 +4805,7 @@ /obj/item/reagent_containers/blood/OMinus, /obj/item/reagent_containers/blood/OMinus, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "tV" = ( /obj/structure/railing/grey{ dir = 4 @@ -4814,21 +4814,21 @@ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "tX" = ( /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "tY" = ( /obj/structure/railing/grey, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ua" = ( /turf/simulated/wall/planetary, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ub" = ( /obj/machinery/vending/coffee, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "uc" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ @@ -4836,14 +4836,14 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ud" = ( /obj/structure/table/marble, /obj/machinery/microwave{ pixel_y = 6 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ue" = ( /obj/structure/railing/grey{ dir = 4 @@ -4851,25 +4851,25 @@ /obj/effect/mist, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "uf" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ug" = ( /turf/simulated/floor/wood, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "uh" = ( /obj/machinery/portable_atmospherics/canister/phoron/engine_setup, /obj/machinery/atmospherics/portables_connector{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "ui" = ( /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ul" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -4878,29 +4878,29 @@ dir = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "uq" = ( /obj/structure/closet/crate/trashcart, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ur" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/railing, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "us" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "uv" = ( /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "uw" = ( /obj/structure/railing{ dir = 1 @@ -4910,16 +4910,16 @@ }, /obj/structure/railing, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "uB" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "uD" = ( /turf/simulated/floor/carpet/patterened/orange, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "uE" = ( /obj/structure/railing/grey{ dir = 4 @@ -4931,18 +4931,18 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "uG" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "uI" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 }, /obj/machinery/turnstile/resort/premium, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "uK" = ( /obj/effect/floor_decal/corner_steel_grid/full{ dir = 1 @@ -4951,23 +4951,23 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "uL" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "uN" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "uP" = ( /mob/living/simple_mob/animal/passive/bird/azure_tit, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "uQ" = ( /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "uR" = ( /obj/structure/railing{ dir = 1 @@ -4976,7 +4976,7 @@ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "uS" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey, @@ -4984,40 +4984,40 @@ dir = 4 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "uT" = ( /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "uU" = ( /obj/structure/window/basic{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "uZ" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "va" = ( /obj/structure/bed/chair/sofa/black/right, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "vb" = ( /obj/item/clothing/head/cone, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "vd" = ( /turf/simulated/floor/carpet/purcarpet, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "ve" = ( /mob/living/simple_mob/animal/passive/fish/salmon, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vg" = ( /obj/structure/catwalk, /obj/structure/railing, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vh" = ( /obj/structure/table/woodentable, /obj/item/material/knife/butch{ @@ -5025,25 +5025,25 @@ pixel_y = 8 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "vi" = ( /obj/machinery/door/airlock{ name = "Restroom" }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "vk" = ( /turf/simulated/floor/water/beach/corner{ dir = 4 }, -/area/class_m/outside) +/area/sector/class_m/outside) "vl" = ( /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "vp" = ( /obj/item/trash/hot_cheesie, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "vq" = ( /obj/structure/railing/grey{ dir = 1 @@ -5053,39 +5053,39 @@ }, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "vr" = ( /turf/simulated/wall, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "vt" = ( /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "vu" = ( /obj/structure/flora/rock, /obj/effect/mist, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "vv" = ( /obj/effect/floor_decal/techfloor{ dir = 8 }, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "vA" = ( /obj/structure/window/reinforced/polarized/full, /obj/map_helper/electrochromatic_linker{ id = "sauna1" }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "vC" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/flora/pottedplant/shoot, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vD" = ( /obj/machinery/newscaster{ pixel_y = 32 @@ -5098,26 +5098,26 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "vF" = ( /obj/structure/catwalk, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "vG" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vI" = ( /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "vJ" = ( /obj/machinery/holoposter{ pixel_x = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "vK" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -5126,46 +5126,46 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "vM" = ( /obj/structure/table/bench/marble, /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "vR" = ( /obj/effect/overlay/coconut, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "vU" = ( /obj/structure/flora/ausbushes/reedbush, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vV" = ( /obj/effect/floor_decal/industrial/loading{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "vW" = ( /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "vX" = ( /obj/structure/table/woodentable, /obj/structure/window/reinforced, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "vZ" = ( /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside) +/area/sector/class_m/outside) "wb" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/purpledouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "wd" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 10 @@ -5177,22 +5177,22 @@ pixel_y = 22 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "wf" = ( /mob/living/simple_mob/animal/passive/fish/bass, /turf/simulated/floor/water/deep, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "wj" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "wk" = ( /obj/machinery/light{ dir = 4; light_range = 12 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "wl" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/structure/catwalk, @@ -5201,7 +5201,7 @@ dir = 4 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "wm" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -5213,13 +5213,13 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "wo" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "wp" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/unathijuice, @@ -5233,52 +5233,52 @@ /obj/item/reagent_containers/food/drinks/bottle/unathijuice, /obj/item/reagent_containers/food/drinks/bottle/unathijuice, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "wq" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, /obj/machinery/chem_master, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "wu" = ( /turf/simulated/wall/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "wv" = ( /obj/machinery/turnstile/resort/premium{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ww" = ( /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "wx" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "wA" = ( /obj/structure/flora/rock/ice/alternative_1, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "wB" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "wC" = ( /obj/machinery/turnstile/resort/exit, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "wF" = ( /obj/structure/closet/wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "wH" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -5291,7 +5291,7 @@ pixel_y = 47 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "wI" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ @@ -5302,7 +5302,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "wK" = ( /obj/item/melee/umbrella, /obj/item/melee/umbrella, @@ -5323,7 +5323,7 @@ /obj/item/melee/umbrella, /obj/effect/floor_decal/corner_steel_grid/full, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "wL" = ( /obj/item/bee_pack, /obj/item/honey_frame, @@ -5346,14 +5346,14 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "wM" = ( /obj/machinery/door/airlock{ id_tag = "gaiarestroom1"; name = "Restroom" }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "wP" = ( /obj/structure/railing/grey{ dir = 1 @@ -5366,33 +5366,33 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "wQ" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "wR" = ( /obj/effect/floor_decal/river_beach_corner_edge, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "wT" = ( /obj/structure/table/bench/marble, /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "wU" = ( /obj/machinery/door/airlock/maintenance{ name = "Dressing Room" }, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "wV" = ( /obj/structure/coatrack, /turf/simulated/floor/carpet/patterened/orange, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "wX" = ( /obj/machinery/shower{ pixel_y = 29 @@ -5400,21 +5400,21 @@ /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete15" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "xa" = ( /obj/machinery/door/airlock/multi_tile{ dir = 8; name = "Personal Items Storage" }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "xc" = ( /obj/machinery/vending/fitness, /obj/effect/floor_decal/corner_steel_grid/full{ dir = 4 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "xe" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/grassybush{ @@ -5422,32 +5422,32 @@ }, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "xg" = ( /obj/structure/lightpost, /obj/structure/flora/rock/ice/alternative_1, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "xh" = ( /obj/structure/bed/chair/sofa/black/right{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "xi" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/greendouble, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "xj" = ( /turf/simulated/wall/planetary, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "xl" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "xm" = ( /obj/machinery/light/spot{ alpha = 0; @@ -5455,7 +5455,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "xn" = ( /obj/machinery/door/blast/shutters{ dir = 4; @@ -5463,53 +5463,53 @@ name = "Garage 4" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "xp" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "xq" = ( /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "xr" = ( /obj/machinery/light{ dir = 8; light_range = 12 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "xu" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "xv" = ( /obj/effect/floor_decal/corner/blue/border, /obj/structure/bed/roller, /obj/structure/medical_stand/anesthetic, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "xw" = ( /mob/living/simple_mob/animal/passive/bird/parrot/cockatiel, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "xy" = ( /turf/simulated/wall/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "xz" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 9 }, /obj/machinery/vending/food, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "xB" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "xD" = ( /obj/structure/closet/crate/hydroponics, /obj/structure/flora/ausbushes/brflowers, @@ -5521,25 +5521,25 @@ /obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "xE" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "xH" = ( /obj/effect/floor_decal/spline/plain, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "xJ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "xK" = ( /obj/machinery/vending/boozeomat{ pixel_y = 32; @@ -5555,7 +5555,7 @@ pixel_y = 2 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "xM" = ( /obj/structure/railing/grey{ dir = 4 @@ -5565,43 +5565,43 @@ }, /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "xQ" = ( /turf/simulated/mineral/ignore_mapgen, -/area/class_m/outside) +/area/sector/class_m/outside) "xR" = ( /obj/structure/curtain/open/bed, /obj/structure/fans/tiny, /obj/spawner/window/borosillicate/full, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "xT" = ( /turf/simulated/floor/water/beach{ dir = 6 }, -/area/class_m/outside) +/area/sector/class_m/outside) "xU" = ( /obj/machinery/door/airlock/glass{ name = "Automated Resort" }, /turf/simulated/floor/tiled, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "xX" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_coffee, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "yc" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, /obj/machinery/bodyscanner, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "yd" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ye" = ( /obj/structure/fence{ name = "vollyball net"; @@ -5615,15 +5615,15 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "yf" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yh" = ( /obj/machinery/light/flamp, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "yl" = ( /obj/structure/closet/wardrobe/pjs, /obj/item/handcuffs/fuzzy, @@ -5639,21 +5639,21 @@ }, /obj/random/maintenance/security, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "ym" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "yn" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "yr" = ( /obj/machinery/status_display{ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yt" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 10 @@ -5668,7 +5668,7 @@ pixel_y = 2 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "yu" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen{ @@ -5676,14 +5676,14 @@ pixel_y = -33 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "yv" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_corner_edge{ dir = 1 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "yw" = ( /obj/structure/railing/grey{ dir = 1 @@ -5693,19 +5693,19 @@ }, /obj/structure/bed/chair/sofa/black/left, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yx" = ( /obj/structure/flora/tree/jungle_small{ pixel_x = -16 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "yy" = ( /obj/structure/fireplace{ pixel_y = 24 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "yz" = ( /obj/structure/railing/grey{ dir = 1 @@ -5714,13 +5714,13 @@ alpha = 255 }, /turf/simulated/floor/tiled/white/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "yB" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "yD" = ( /obj/machinery/button/remote/airlock{ id = "room5"; @@ -5732,13 +5732,13 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "yE" = ( /obj/structure/bed/chair{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "yF" = ( /obj/item/radio/intercom{ dir = 8; @@ -5746,22 +5746,22 @@ pixel_x = -24 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yG" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "yH" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "yM" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "yN" = ( /obj/structure/closet/secure_closet/freezer/fridge, /obj/item/reagent_containers/food/drinks/bottle/cream, @@ -5770,7 +5770,7 @@ /obj/item/reagent_containers/food/drinks/bottle/cream, /obj/item/reagent_containers/food/drinks/bottle/cream, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yP" = ( /obj/effect/floor_decal/corner/blue/bordercorner{ dir = 8 @@ -5779,7 +5779,7 @@ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "yR" = ( /obj/structure/railing{ dir = 8 @@ -5788,10 +5788,10 @@ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "yU" = ( /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "yW" = ( /obj/structure/bed/chair/sofa/black, /obj/item/radio/intercom/entertainment{ @@ -5800,40 +5800,40 @@ pixel_y = 25 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "yX" = ( /obj/structure/flora/tree/jungle, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "za" = ( /obj/machinery/door/airlock{ id_tag = "room5"; name = "Room 5" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "zb" = ( /obj/machinery/door/airlock/glass{ name = "Winter Wonderland" }, /obj/structure/fans/tiny, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "zc" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/lavendergrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "ze" = ( /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zf" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/greendouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "zg" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -5843,7 +5843,7 @@ }, /obj/machinery/optable, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "zh" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -5853,50 +5853,50 @@ }, /obj/structure/railing/grey, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "zj" = ( /obj/structure/table/standard, /obj/machinery/microwave, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "zk" = ( /obj/machinery/light{ dir = 4; light_range = 12 }, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "zm" = ( /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "zn" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "zo" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "zq" = ( /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "zr" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "zs" = ( /obj/structure/flora/rock, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "zu" = ( /turf/simulated/mineral/floor, -/area/class_m/outside) +/area/sector/class_m/outside) "zv" = ( /obj/machinery/power/thermoregulator, /obj/effect/map_effect/interval/effect_emitter/steam, @@ -5908,19 +5908,19 @@ }, /obj/structure/railing, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "zw" = ( /mob/living/simple_mob/animal/passive/crab, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "zx" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zy" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 @@ -5943,7 +5943,7 @@ pixel_y = 2 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "zz" = ( /obj/structure/railing, /obj/structure/railing{ @@ -5951,17 +5951,17 @@ }, /obj/structure/table/bench/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zA" = ( /turf/simulated/floor/water/beach, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "zC" = ( /obj/item/radio/intercom{ dir = 4; pixel_x = 22 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "zE" = ( /obj/structure/railing{ dir = 1 @@ -5971,38 +5971,38 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zF" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "zG" = ( /obj/structure/bed/chair/sofa/black/corner{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "zI" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "zJ" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/table/bench/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zK" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "zL" = ( /obj/structure/railing/grey{ dir = 1 @@ -6011,7 +6011,7 @@ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zM" = ( /obj/structure/bed/chair{ dir = 1; @@ -6019,14 +6019,14 @@ pixel_y = 6 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "zO" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /obj/effect/floor_decal/corner_steel_grid/full, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "zQ" = ( /obj/machinery/light/spot{ dir = 1; @@ -6036,19 +6036,19 @@ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "zR" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, /mob/living/simple_mob/animal/passive/bird/european_robin, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "zS" = ( /obj/structure/mirror/long{ pixel_y = 6 }, /turf/simulated/wall, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "zT" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/sliceable/pumpkinpie, @@ -6057,42 +6057,42 @@ /obj/item/reagent_containers/food/snacks/sliceable/pumpkinpie, /obj/item/reagent_containers/food/snacks/sliceable/pumpkinpie, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "zU" = ( /obj/structure/railing{ dir = 1 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "zV" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "zW" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Ab" = ( /obj/machinery/seed_extractor, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Ac" = ( /obj/structure/railing, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Ad" = ( /obj/structure/toilet{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Ae" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -6101,21 +6101,21 @@ /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Af" = ( /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ag" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Ah" = ( /obj/structure/table/rack/shelf/steel, /obj/random/toolbox, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "Ai" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -6125,7 +6125,7 @@ pixel_x = -24 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Ak" = ( /obj/machinery/light/spot{ dir = 1; @@ -6134,7 +6134,7 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "Al" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -6143,62 +6143,62 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Am" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "An" = ( /turf/simulated/floor/water, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Ao" = ( /obj/machinery/vending/sovietsoda, /obj/effect/floor_decal/corner_steel_grid/full{ dir = 4 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ap" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals5, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Aq" = ( /obj/structure/flora/pottedplant/thinbush, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Ar" = ( /obj/structure/sign/greencross{ name = "Authorized Medical Personnel Only"; pixel_x = 32 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "As" = ( /obj/structure/railing, /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/tiled/kafel_full/red, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Aw" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Ay" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Az" = ( /obj/machinery/vending/fishing, /obj/effect/floor_decal/spline/plain{ @@ -6207,7 +6207,7 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "AA" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -6216,37 +6216,37 @@ dir = 1 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "AC" = ( /obj/effect/floor_decal/industrial/loading, /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "AD" = ( /obj/spawner/window/reinforced/full, /obj/structure/fans/tiny, /turf/simulated/floor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "AE" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "AG" = ( /obj/structure/lightpost, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "AH" = ( /obj/structure/table/standard, /obj/structure/bedsheetbin, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "AI" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "AJ" = ( /obj/effect/floor_decal/corner/blue/border, /obj/machinery/light/spot{ @@ -6255,7 +6255,7 @@ /obj/structure/bed/roller, /obj/structure/medical_stand/anesthetic, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "AN" = ( /obj/structure/table/rack/shelf/steel, /obj/random/alcohol, @@ -6264,25 +6264,25 @@ /obj/random/alcohol, /obj/random/alcohol, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "AO" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/table/bench/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "AP" = ( /obj/effect/mist, /obj/structure/sink/puddle, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "AQ" = ( /obj/spawner/window/borosillicate/full, /obj/structure/fans/tiny, /turf/simulated/floor, -/area/class_m/inside) +/area/sector/class_m/inside) "AS" = ( /obj/machinery/button/remote/airlock{ id = "room1"; @@ -6295,32 +6295,32 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "AV" = ( /turf/simulated/floor/water/shoreline{ dir = 5 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "AW" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 1 }, /obj/machinery/chemical_dispenser/full, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "AY" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ba" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/item/clothing/head/pharaoh, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Bb" = ( /obj/structure/table/marble, /obj/item/defib_kit/loaded, @@ -6328,33 +6328,33 @@ dir = 6 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "Bc" = ( /obj/machinery/floor_light/changing/prebuilt{ on = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Be" = ( /turf/simulated/floor/water/beach{ dir = 6 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "Bf" = ( /obj/effect/mist, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Bg" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Bh" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Bi" = ( /turf/simulated/floor/water/beach, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Bk" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -6364,7 +6364,7 @@ dir = 8 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Bm" = ( /obj/structure/railing/grey{ dir = 4 @@ -6374,7 +6374,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Bo" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 @@ -6387,7 +6387,7 @@ pixel_x = 21 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Bp" = ( /obj/structure/railing/grey{ dir = 1 @@ -6396,34 +6396,34 @@ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Br" = ( /obj/effect/floor_decal/river_beach_corner_edge, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Bu" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Bv" = ( /obj/machinery/light/small{ dir = 4 }, /obj/item/stool/padded, /turf/simulated/floor/carpet/patterened/magneta, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Bw" = ( /obj/structure/sink{ dir = 8; pixel_x = -14 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Bx" = ( /turf/simulated/floor/water/beach{ dir = 10 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "By" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -6431,7 +6431,7 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BA" = ( /obj/effect/floor_decal/steeldecal/steel_decals10{ dir = 9 @@ -6440,14 +6440,14 @@ dir = 10 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "BB" = ( /obj/structure/flora/rock/ice/alternative_1, /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "BC" = ( /obj/effect/floor_decal/spline/plain{ dir = 8 @@ -6456,21 +6456,21 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "BE" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BF" = ( /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "BG" = ( /obj/structure/table/woodentable, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "BH" = ( /obj/machinery/button/remote/airlock{ id = "room6"; @@ -6483,7 +6483,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "BJ" = ( /obj/structure/closet/crate/hydroponics, /obj/item/material/minihoe, @@ -6494,14 +6494,14 @@ /obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BK" = ( /mob/living/simple_mob/animal/passive/fish/salmon, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "BM" = ( /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "BO" = ( /obj/effect/map_effect/interval/effect_emitter/steam, /obj/machinery/light/spot{ @@ -6510,11 +6510,11 @@ }, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "BQ" = ( /obj/machinery/computer/arcade/battle, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "BR" = ( /obj/item/radio/intercom{ dir = 1; @@ -6522,48 +6522,48 @@ pixel_y = 24 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "BS" = ( /obj/machinery/light/spot{ dir = 1 }, /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BT" = ( /mob/living/simple_mob/animal/passive/bird/ringneck_dove, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BW" = ( /obj/structure/flora/tree/palm, /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "BY" = ( /obj/structure/catwalk, /obj/structure/railing, /obj/effect/mist, /obj/effect/map_effect/interval/effect_emitter/steam, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "BZ" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Ca" = ( /turf/simulated/floor/wood, -/area/class_m/inside/islandbeachhouse) +/area/sector/class_m/inside/islandbeachhouse) "Cb" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Cf" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Cg" = ( /obj/machinery/shower{ pixel_y = 16 @@ -6576,11 +6576,11 @@ dir = 10 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Ci" = ( /obj/structure/sink/puddle, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Cj" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 @@ -6589,7 +6589,7 @@ dir = 1 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Cl" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -6599,7 +6599,7 @@ dir = 4 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Cm" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -6611,26 +6611,26 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Cp" = ( /obj/item/stool/padded, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Cq" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Cr" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Cu" = ( /obj/structure/table/gamblingtable, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Cv" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -6640,7 +6640,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/class_m/outside) +/area/sector/class_m/outside) "Cw" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -6649,14 +6649,14 @@ dir = 4 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Cx" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "CB" = ( /obj/machinery/light{ dir = 8; @@ -6669,57 +6669,57 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "CC" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 8 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "CD" = ( /obj/machinery/light/spot/no_nightshift, /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "CF" = ( /obj/structure/dispenser/oxygen, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "CG" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "CL" = ( /obj/structure/table/woodentable, /obj/machinery/microwave{ pixel_y = 6 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "CN" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 }, /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "CP" = ( /turf/simulated/floor/water/beach{ dir = 5 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "CR" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "CT" = ( /turf/simulated/floor/carpet/blue, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "CU" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 @@ -6729,13 +6729,13 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "CV" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "CW" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -6743,25 +6743,25 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "CX" = ( /obj/effect/floor_decal/industrial/warning{ dir = 9 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "CZ" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/effect/floor_decal/river_beach_edge{ dir = 9 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Da" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "De" = ( /obj/effect/floor_decal/corner_steel_grid/full{ dir = 4 @@ -6770,13 +6770,13 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Df" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/blue, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Dg" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -6784,16 +6784,16 @@ }, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Di" = ( /obj/machinery/light/spot/no_nightshift{ dir = 8 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Dm" = ( /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Do" = ( /obj/structure/railing/grey{ dir = 1 @@ -6802,7 +6802,7 @@ dir = 8 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Dp" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 @@ -6814,69 +6814,69 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Dq" = ( /obj/effect/mist, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Dt" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Du" = ( /obj/structure/railing{ dir = 8 }, /obj/structure/table/glass, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Dx" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Dy" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Dz" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "DA" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/kafel_full/red, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "DC" = ( /obj/machinery/door/airlock{ id_tag = "room1"; name = "Room 1" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "DE" = ( /obj/structure/catwalk, /turf/simulated/floor/plating, -/area/class_m/outside) +/area/sector/class_m/outside) "DF" = ( /obj/machinery/gear_painter, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "DG" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "DH" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead, @@ -6885,14 +6885,14 @@ /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead, /obj/item/reagent_containers/food/drinks/bottle/ambrosia_mead, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "DI" = ( /obj/structure/table/bench/sifwooden/padded, /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "DK" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/maintenance/desert) +/area/sector/class_m/inside/maintenance/desert) "DM" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/lobstercooked, @@ -6901,31 +6901,31 @@ /obj/item/reagent_containers/food/snacks/lobstercooked, /obj/item/reagent_containers/food/snacks/lobstercooked, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "DN" = ( /turf/simulated/floor/water/beach{ dir = 8 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "DO" = ( /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "DQ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /obj/effect/floor_decal/industrial/warning/dust/corner, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "DS" = ( /obj/structure/table/sandstone, /obj/item/storage/box/fluff/swimsuit/highclass, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "DT" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "DU" = ( /obj/item/melee/umbrella, /obj/item/melee/umbrella, @@ -6948,19 +6948,19 @@ dir = 8 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "DV" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "DW" = ( /obj/structure/railing, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "DX" = ( /obj/structure/flora/tree/palm{ pixel_x = 4; @@ -6973,7 +6973,7 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Ea" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/whiterum, @@ -6982,7 +6982,7 @@ /obj/item/reagent_containers/food/drinks/bottle/whiterum, /obj/item/reagent_containers/food/drinks/bottle/whiterum, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Eb" = ( /obj/machinery/shower{ pixel_y = 16 @@ -6998,42 +6998,42 @@ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Ec" = ( /obj/structure/flora/rock/alternative_2, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Ee" = ( /obj/structure/window/basic/full, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Eg" = ( /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "El" = ( /obj/structure/table/gamblingtable, /obj/item/deck/holder, /obj/item/deck/tarot, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Em" = ( /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "En" = ( /obj/structure/table/gamblingtable, /obj/item/storage/pill_bottle/dice, /obj/item/storage/dicecup/loaded, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Eo" = ( /obj/structure/flora/ausbushes/genericbush, /mob/living/simple_mob/animal/passive/bird/goldcrest, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Ep" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/monkfishcooked, @@ -7042,22 +7042,22 @@ /obj/item/reagent_containers/food/snacks/monkfishcooked, /obj/item/reagent_containers/food/snacks/monkfishcooked, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Eq" = ( /turf/simulated/floor/carpet/patterened/magneta, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Es" = ( /obj/structure/mirror/long/right{ pixel_y = 6 }, /turf/simulated/wall, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Et" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ew" = ( /obj/structure/railing, /obj/effect/floor_decal/river_beach_corner_edge{ @@ -7065,15 +7065,15 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ex" = ( /obj/structure/lightpost, /obj/structure/flora/rock/ice/alternative_2, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Ey" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Ez" = ( /obj/structure/flora/ausbushes/reedbush, /obj/structure/catwalk, @@ -7084,49 +7084,49 @@ dir = 8 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "EA" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 9 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "EC" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ED" = ( /obj/structure/railing, /turf/simulated/floor/tiled/kafel_full/beige, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "EE" = ( /obj/effect/floor_decal/industrial/outline/yellow, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "EJ" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "EK" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "EL" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "EM" = ( /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "EN" = ( /obj/structure/window/reinforced/full, /obj/structure/curtain/open/bed, @@ -7134,7 +7134,7 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "EO" = ( /obj/structure/table/glass, /obj/structure/window/basic{ @@ -7144,7 +7144,7 @@ /obj/item/reagent_containers/food/drinks/glass2/wine, /obj/item/reagent_containers/food/drinks/glass2/wine, /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "EP" = ( /obj/structure/closet/crate/bin{ anchored = 1 @@ -7154,23 +7154,23 @@ pixel_x = 24 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "EQ" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ES" = ( /obj/machinery/door/window/southleft, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "ET" = ( /mob/living/simple_mob/animal/passive/bird/parrot/kea, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "EU" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "EW" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -7181,41 +7181,41 @@ nightshift_allowed = 0 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "EX" = ( /obj/machinery/vending/wallmed1{ pixel_x = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "EY" = ( /obj/structure/reagent_dispensers/fueltank/high, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "EZ" = ( /turf/simulated/wall/snowbrick, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "Fa" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Fb" = ( /obj/structure/table/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Fc" = ( /obj/machinery/light/spot/no_nightshift{ dir = 8 }, /mob/living/simple_mob/animal/sif/diyaab, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Fd" = ( /mob/living/simple_mob/animal/passive/fish/koi, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Ff" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/bacon_flatbread, @@ -7224,7 +7224,7 @@ /obj/item/reagent_containers/food/snacks/bacon_flatbread, /obj/item/reagent_containers/food/snacks/bacon_flatbread, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Fg" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 @@ -7233,13 +7233,13 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Fj" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 6 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Fk" = ( /obj/machinery/appliance/cooker/oven, /obj/machinery/light/spot{ @@ -7247,85 +7247,85 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Fl" = ( /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Fm" = ( /obj/structure/bed/chair/wood/wings{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Fn" = ( /obj/structure/icecream_cart/loaded, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Fq" = ( /turf/simulated/floor/water/shoreline, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Fs" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Fx" = ( /obj/item/stool/padded, /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete19" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Fy" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/yellowdouble, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Fz" = ( /obj/vehicle/ridden/gokart/random{ dir = 8 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "FA" = ( /obj/structure/flora/tree/palm, /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "FB" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "FC" = ( /obj/machinery/light/spot/no_nightshift, /obj/structure/table/rack/shelf/steel, /obj/item/storage/toolbox/electrical, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "FE" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "FF" = ( /obj/machinery/vending/fitness, /obj/effect/floor_decal/corner_steel_grid/full{ dir = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FH" = ( /obj/machinery/turnstile/resort/exit{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FI" = ( /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "FJ" = ( /obj/machinery/light_switch{ dir = 4; @@ -7336,18 +7336,18 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FK" = ( /obj/structure/railing, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "FL" = ( /obj/structure/railing/grey{ dir = 8 }, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "FQ" = ( /obj/structure/catwalk, /obj/structure/railing, @@ -7357,10 +7357,10 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "FR" = ( /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "FT" = ( /obj/machinery/light_switch{ dir = 8; @@ -7372,7 +7372,7 @@ /obj/item/reagent_containers/food/snacks/sliceable/monkfish, /obj/item/reagent_containers/food/snacks/sliceable/monkfish, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FU" = ( /obj/structure/railing/grey{ dir = 8 @@ -7382,7 +7382,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "FV" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/sliceable/lemoncake, @@ -7391,29 +7391,29 @@ /obj/item/reagent_containers/food/snacks/sliceable/lemoncake, /obj/item/reagent_containers/food/snacks/sliceable/lemoncake, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FW" = ( /obj/machinery/light/spot{ dir = 8; nightshift_allowed = 0 }, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "FZ" = ( /obj/structure/flora/rock, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Ga" = ( /obj/structure/closet/wardrobe, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Gb" = ( /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "Gd" = ( /mob/living/simple_mob/animal/sif/glitterfly, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Gf" = ( /obj/machinery/button/remote/airlock{ id = "room7"; @@ -7426,10 +7426,10 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Gj" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "Gk" = ( /obj/structure/catwalk, /obj/structure/railing{ @@ -7442,14 +7442,14 @@ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Gl" = ( /obj/machinery/vending/fishing, /obj/structure/window/reinforced{ dir = 1 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Gm" = ( /obj/structure/table/rack/shelf/steel, /obj/random/maintenance/clean, @@ -7459,7 +7459,7 @@ /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Go" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 4 @@ -7468,13 +7468,13 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Gq" = ( /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "Gs" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -7483,44 +7483,44 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Gt" = ( /obj/structure/bed/chair/sofa/black/left{ dir = 1 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Gv" = ( /obj/structure/railing/grey, /obj/item/clothing/head/pharaoh, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Gx" = ( /turf/simulated/floor/water, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "GA" = ( /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "GB" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/water/beach/corner{ dir = 4 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "GC" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "GD" = ( /obj/structure/bed/chair/sofa/black/left{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "GE" = ( /obj/structure/railing{ dir = 8 @@ -7528,7 +7528,7 @@ /obj/structure/railing, /obj/structure/table/bench/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "GG" = ( /obj/machinery/light/spot{ dir = 8; @@ -7538,7 +7538,7 @@ dir = 8 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "GH" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -7546,11 +7546,11 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "GJ" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "GL" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen{ @@ -7558,7 +7558,7 @@ pixel_y = 47 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "GM" = ( /obj/structure/railing/grey{ dir = 1 @@ -7567,7 +7567,7 @@ dir = 4 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "GP" = ( /obj/structure/toilet{ dir = 4 @@ -7583,7 +7583,7 @@ specialfunctions = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "GQ" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/lomein, @@ -7592,7 +7592,7 @@ /obj/item/reagent_containers/food/snacks/lomein, /obj/item/reagent_containers/food/snacks/lomein, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "GS" = ( /obj/structure/railing/grey{ dir = 4 @@ -7602,20 +7602,20 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "GT" = ( /obj/structure/window/reinforced/polarized/full, /obj/map_helper/electrochromatic_linker{ id = "sauna2" }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "GX" = ( /obj/structure/mirror/long/left{ pixel_y = 6 }, /turf/simulated/wall, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "GY" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -7624,13 +7624,13 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "GZ" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Hb" = ( /obj/item/melee/umbrella/random, /obj/structure/closet/lasertag/blue, @@ -7638,11 +7638,11 @@ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "He" = ( /obj/structure/bed/chair/sofa/black/left, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hf" = ( /obj/structure/table/standard, /obj/item/toy/figure/chaplain{ @@ -7653,17 +7653,17 @@ }, /obj/item/reagent_containers/food/drinks/bottle/small/beer, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Hj" = ( /obj/structure/flora/pottedplant/largebush, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Hl" = ( /obj/machinery/turnstile/resort/exit{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hm" = ( /obj/effect/floor_decal/spline/plain{ dir = 1 @@ -7683,33 +7683,33 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Ho" = ( /obj/machinery/gear_painter, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hp" = ( /obj/structure/table/standard, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Hr" = ( /obj/machinery/vending/sovietsoda, /obj/effect/floor_decal/corner_steel_grid/full{ dir = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hs" = ( /turf/simulated/floor/water/beach{ dir = 8 }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Ht" = ( /obj/machinery/light/no_nightshift{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Hv" = ( /obj/structure/bed/chair/sofa/black, /obj/item/radio/intercom/entertainment{ @@ -7717,17 +7717,17 @@ pixel_y = 24 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hw" = ( /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Hx" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 9 }, /obj/machinery/vending/giftvendor, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "HB" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -7736,21 +7736,21 @@ dir = 5 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "HC" = ( /obj/structure/flora/pottedplant/crystal, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "HD" = ( /obj/effect/overlay/palmtree_r, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "HF" = ( /obj/structure/sink/puddle, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "HG" = ( /obj/machinery/button/remote/airlock{ id = "room12"; @@ -7761,11 +7761,11 @@ }, /obj/machinery/light/flamp, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "HH" = ( /obj/structure/closet/secure_closet/freezer/kitchen, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "HI" = ( /obj/structure/icecream_cart, /obj/machinery/light/spot{ @@ -7773,23 +7773,23 @@ nightshift_allowed = 0 }, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "HJ" = ( /obj/effect/floor_decal/corner/blue/border, /obj/structure/table/standard, /obj/machinery/recharger, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "HK" = ( /obj/structure/table/marble, /obj/structure/statue/marble/corgi, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "HN" = ( /obj/structure/flora/ausbushes/reedbush, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "HQ" = ( /obj/structure/railing{ dir = 8 @@ -7798,27 +7798,27 @@ pixel_x = 2 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "HS" = ( /obj/item/trash/sosjerky, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "HW" = ( /obj/machinery/light/spot/no_nightshift, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "HX" = ( /obj/effect/floor_decal/steeldecal/steel_decals5, /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "HY" = ( /turf/simulated/floor/water/beach/corner{ dir = 1 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "HZ" = ( /obj/machinery/light/spot{ dir = 1; @@ -7828,17 +7828,17 @@ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ic" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "If" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Ii" = ( /obj/structure/flora/tree/palm{ pixel_x = -4; @@ -7853,54 +7853,54 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Ij" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/orangedouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Ik" = ( /obj/effect/floor_decal/corner/black/diagonal{ alpha = 255 }, /turf/simulated/floor/tiled/white/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Il" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Im" = ( /obj/machinery/light{ dir = 8; light_range = 12 }, /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Io" = ( /obj/machinery/appliance/cooker/grill/stand, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Iq" = ( /turf/simulated/floor/water/beach{ dir = 4 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "Ir" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 4 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "It" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Iu" = ( /mob/living/simple_mob/animal/passive/crab, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Iw" = ( /obj/structure/toilet{ dir = 4 @@ -7916,17 +7916,17 @@ specialfunctions = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Iz" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "IA" = ( /obj/structure/flora/pottedplant/large, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "IB" = ( /obj/structure/railing/grey{ dir = 1 @@ -7935,24 +7935,24 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "IC" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "ID" = ( /obj/structure/railing/grey{ dir = 1 }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "IE" = ( /mob/living/simple_mob/animal/passive/lizard, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "IF" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -7961,39 +7961,39 @@ name = "Snow Biome" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "IG" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "II" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 6 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "IK" = ( /obj/structure/table/gamblingtable, /obj/item/storage/pill_bottle/dice_nerd, /turf/simulated/floor/carpet/turcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "IM" = ( /obj/effect/floor_decal/industrial/loading{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "IN" = ( /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "IO" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "IP" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -8002,13 +8002,13 @@ dir = 1 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "IQ" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "IR" = ( /obj/structure/railing{ dir = 1 @@ -8017,7 +8017,7 @@ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "IS" = ( /obj/machinery/door/blast/shutters{ dir = 4; @@ -8025,7 +8025,7 @@ name = "Garage 2" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "IT" = ( /obj/item/reagent_containers/glass/bucket/wood, /obj/item/reagent_containers/glass/bucket/wood, @@ -8033,33 +8033,33 @@ /obj/item/reagent_containers/glass/bucket/wood, /obj/item/reagent_containers/glass/bucket/wood, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "IU" = ( /mob/living/simple_mob/animal/passive/fish/trout, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "IW" = ( /obj/structure/table/sandstone, /obj/machinery/chemical_dispenser/catering/bar_soft, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "IY" = ( /mob/living/simple_mob/animal/passive/penguin, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "IZ" = ( /turf/simulated/floor/carpet, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Ja" = ( /obj/machinery/chem_master/condimaster, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Jb" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Jc" = ( /obj/machinery/button/remote/airlock{ id = "room2"; @@ -8072,22 +8072,22 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Je" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Jg" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 10 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ji" = ( /obj/structure/table/bench/marble, /obj/effect/mist, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "Jj" = ( /obj/structure/table/woodentable, /obj/machinery/light/small{ @@ -8134,41 +8134,41 @@ pixel_x = 6 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "Jo" = ( /obj/structure/bed/chair/sofa/black/left, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Jp" = ( /turf/simulated/floor/water/beach{ dir = 9 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Jq" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Jr" = ( /turf/simulated/floor/water/beach{ dir = 8 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Js" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Jt" = ( /obj/structure/table/woodentable, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ju" = ( /obj/structure/bed/chair/comfy/beige{ dir = 8 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Jw" = ( /obj/structure/railing{ dir = 1 @@ -8178,29 +8178,29 @@ }, /obj/machinery/vending/gaia, /turf/simulated/floor/tiled/kafel_full/beige, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Jx" = ( /turf/simulated/floor/carpet/patterened/green, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Jy" = ( /turf/simulated/wall/sandstonediamond, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Jz" = ( /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "JD" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "JE" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "JH" = ( /obj/effect/mist, /obj/machinery/light/small{ @@ -8209,7 +8209,7 @@ /obj/structure/table/woodentable, /obj/item/reagent_containers/glass/bucket/wood, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "JJ" = ( /obj/machinery/button/remote/airlock{ id = "room10"; @@ -8220,16 +8220,16 @@ }, /obj/machinery/light/flamp, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "JL" = ( /obj/structure/bed/chair, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "JM" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "JN" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -8238,17 +8238,17 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "JO" = ( /obj/structure/railing/grey, /obj/machinery/light/spot, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "JQ" = ( /turf/simulated/floor/water/beach{ dir = 6 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "JT" = ( /obj/structure/fence/end{ name = "vollyball net"; @@ -8257,47 +8257,47 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "JU" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 1 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "JV" = ( /obj/structure/catwalk, /obj/structure/railing, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "JW" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "JX" = ( /obj/machinery/door/airlock{ id_tag = "room10"; name = "Room 10" }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "JY" = ( /obj/machinery/door/airlock{ id_tag = "room12"; name = "Room 12" }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "JZ" = ( /obj/structure/railing{ dir = 1 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ka" = ( /obj/structure/railing/grey{ dir = 1 @@ -8306,41 +8306,41 @@ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Kc" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Kd" = ( /obj/machinery/light/spot/no_nightshift{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Kf" = ( /obj/machinery/door/airlock{ name = "Restroom" }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Kh" = ( /obj/effect/mist, /obj/effect/mist, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Ki" = ( /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "Kk" = ( /obj/machinery/recharge_station, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Km" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -8350,7 +8350,7 @@ dir = 8 }, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Ko" = ( /obj/structure/window/reinforced/full, /obj/effect/floor_decal/steeldecal/steel_decals5{ @@ -8360,13 +8360,13 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Kp" = ( /obj/machinery/turnstile/resort/premium{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Kq" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen{ @@ -8374,7 +8374,7 @@ pixel_y = 47 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Kr" = ( /obj/structure/table/marble, /obj/item/radio/intercom/entertainment{ @@ -8383,20 +8383,20 @@ pixel_y = 17 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ks" = ( /obj/effect/floor_decal/steeldecal/steel_decals5, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ku" = ( /turf/simulated/floor/water/river/deep/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Kw" = ( /obj/item/stool/padded, /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete17" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Ky" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 5 @@ -8432,7 +8432,7 @@ pixel_y = 1 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "Kz" = ( /obj/structure/railing, /obj/effect/floor_decal/river_beach_edge{ @@ -8440,48 +8440,48 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "KC" = ( /obj/machinery/door/airlock{ id_tag = "room2"; name = "Room 2" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "KE" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_corner_edge{ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "KF" = ( /obj/machinery/door/airlock{ id_tag = "room8"; name = "Room 8" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "KG" = ( /obj/machinery/door/airlock{ id_tag = "gaiarestroom2"; name = "Restroom" }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "KH" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "KI" = ( /turf/simulated/floor/water/beach, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "KL" = ( /obj/item/stack/ore, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "KN" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ @@ -8491,7 +8491,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "KO" = ( /obj/machinery/light/spot{ dir = 8; @@ -8501,48 +8501,48 @@ anchored = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "KP" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/green, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "KQ" = ( /obj/machinery/vending/dinnerware, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "KS" = ( /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "KT" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "KU" = ( /obj/machinery/door/airlock{ id_tag = "room15"; name = "Room 15" }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "KV" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "KW" = ( /obj/structure/flora/ausbushes/sparsegrass, /mob/living/simple_mob/animal/passive/bird/black_bird, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "KX" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "KY" = ( /obj/machinery/shower{ dir = 1 @@ -8558,19 +8558,19 @@ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "KZ" = ( /obj/structure/flora/rock, /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Lb" = ( /obj/effect/floor_decal/spline/plain, /obj/structure/table/woodentable, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Lc" = ( /obj/structure/railing/grey{ dir = 1 @@ -8579,21 +8579,21 @@ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Ld" = ( /obj/structure/table/hardwoodtable, /obj/machinery/computer/security/telescreen{ pixel_y = -45 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Le" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_coffee{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Lg" = ( /obj/structure/railing/grey{ dir = 4 @@ -8604,11 +8604,11 @@ /obj/structure/flora/tree/palm, /obj/item/reagent_containers/food/condiment/small/packet/pepper, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Li" = ( /obj/effect/floor_decal/steeldecal/steel_decals5, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Lj" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 @@ -8617,13 +8617,13 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Ll" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 }, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Lo" = ( /obj/item/stool/padded, /obj/item/stool/padded, @@ -8661,12 +8661,12 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "Lp" = ( /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "Lq" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ frequency = 1380; @@ -8676,25 +8676,25 @@ }, /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Lr" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Lt" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Lu" = ( /turf/simulated/floor/tiled/kafel_full/beige, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Lv" = ( /turf/simulated/wall, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Lw" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -8706,22 +8706,22 @@ /obj/item/reagent_containers/food/drinks/bottle/royaljelly, /obj/item/reagent_containers/food/drinks/bottle/royaljelly, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ly" = ( /obj/machinery/vending/cola, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Lz" = ( /obj/machinery/holoposter{ pixel_x = -32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "LA" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 8 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "LB" = ( /obj/structure/table/steel, /obj/item/storage/box/mousetraps{ @@ -8744,36 +8744,36 @@ pixel_y = -2 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "LD" = ( /turf/simulated/floor/water/shoreline{ dir = 9 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "LE" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/deep, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "LF" = ( /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "LG" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "LH" = ( /obj/structure/flora/pottedplant/subterranean, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "LK" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "LL" = ( /obj/structure/table/bench/marble, /obj/effect/mist, @@ -8791,7 +8791,7 @@ pixel_y = 36 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "LM" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 @@ -8803,132 +8803,132 @@ /obj/item/dice/d20, /obj/item/reagent_containers/food/drinks/bottle/small/beer, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "LO" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "LQ" = ( /obj/machinery/newscaster{ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "LT" = ( /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "LU" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "LW" = ( /obj/structure/catwalk, /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "LX" = ( /obj/structure/railing/grey{ dir = 8 }, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "LY" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/bluedouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "LZ" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ma" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Mb" = ( /obj/structure/railing, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Mc" = ( /obj/structure/flora/rock, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Me" = ( /obj/structure/simple_door/sandstone, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Mf" = ( /obj/machinery/light/small{ dir = 4 }, /obj/item/stool/padded, /turf/simulated/floor/carpet/patterened/orange, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Mg" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Mj" = ( /obj/structure/flora/pottedplant/thinbush, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "Mk" = ( /obj/structure/flora/ausbushes/genericbush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Mm" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Mn" = ( /obj/structure/railing, /turf/simulated/floor/tiled/kafel_full/blue, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Mq" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /obj/structure/table/standard, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Ms" = ( /obj/machinery/vending/hydroseeds, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Mt" = ( /turf/simulated/mineral/ignore_mapgen, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Mw" = ( /obj/machinery/door/window/northright, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Mx" = ( /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "My" = ( /obj/effect/mist, /obj/machinery/computer/security/telescreen{ pixel_y = 57 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "Mz" = ( /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "MB" = ( /obj/effect/floor_decal/techfloor{ dir = 8 @@ -8936,7 +8936,7 @@ /obj/structure/bed/double/padded, /obj/item/bedsheet/hosdouble, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "MC" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -8945,19 +8945,19 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ME" = ( /obj/structure/bed/chair/wood/wings{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "MF" = ( /obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "MH" = ( /obj/machinery/shower{ dir = 1 @@ -8973,17 +8973,17 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "MI" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "MJ" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 4 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ML" = ( /obj/structure/mirror{ dir = 4; @@ -8993,7 +8993,7 @@ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "MN" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/baguette, @@ -9002,11 +9002,11 @@ /obj/item/reagent_containers/food/snacks/baguette, /obj/item/reagent_containers/food/snacks/baguette, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "MO" = ( /obj/structure/closet/l3closet/janitor, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "MP" = ( /obj/structure/railing/grey{ dir = 1 @@ -9016,11 +9016,11 @@ }, /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "MQ" = ( /mob/living/simple_mob/animal/passive/fish/solarfish, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "MR" = ( /obj/machinery/button/remote/airlock{ id = "room3"; @@ -9033,24 +9033,24 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "MT" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "MV" = ( /obj/structure/flora/tree/palm, /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "MW" = ( /obj/structure/kitchenspike, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "MX" = ( /obj/structure/lattice, /turf/unsimulated/fake_space, @@ -9059,7 +9059,7 @@ /obj/structure/flora/tree/jungle, /mob/living/simple_mob/animal/passive/bird/black_bird, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Nb" = ( /obj/structure/table/woodentable, /obj/structure/window/reinforced, @@ -9068,28 +9068,28 @@ }, /obj/machinery/cash_register, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Nd" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 }, /obj/structure/bed/chair, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ne" = ( /obj/machinery/appliance/cooker/grill, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Nf" = ( /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Ng" = ( /obj/structure/closet/secure_closet/freezer/kitchen{ req_access = null }, /obj/machinery/light/spot, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Nh" = ( /obj/structure/railing{ dir = 8 @@ -9098,12 +9098,12 @@ pixel_x = 2 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ni" = ( /obj/structure/table/woodentable, /obj/item/storage/box/donkpockets, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Nk" = ( /obj/machinery/door/blast/shutters{ dir = 4; @@ -9111,12 +9111,12 @@ name = "Garage 1" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Nl" = ( /turf/simulated/floor/water/beach{ dir = 1 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Nm" = ( /obj/structure/railing{ dir = 1 @@ -9125,53 +9125,53 @@ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Np" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Nt" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Nx" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 5 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ny" = ( /turf/simulated/floor/water, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "Nz" = ( /obj/effect/mist, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "NA" = ( /obj/structure/closet/crate/bin{ anchored = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ND" = ( /obj/structure/bed/chair/wood/wings{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "NF" = ( /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "NG" = ( /obj/effect/floor_decal/industrial/warning/corner{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "NI" = ( /obj/structure/closet/chefcloset, /obj/item/glass_jar, @@ -9185,55 +9185,55 @@ /obj/item/packageWrap, /obj/item/packageWrap, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "NJ" = ( /turf/simulated/floor/concrete/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "NL" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "NM" = ( /obj/machinery/computer/security/telescreen{ pixel_y = 45 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "NN" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "NO" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "NS" = ( /turf/simulated/floor/water/beach/corner{ dir = 8 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "NU" = ( /turf/simulated/floor/tiled, -/area/class_m/outside) +/area/sector/class_m/outside) "NW" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "NX" = ( /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "NY" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "Oa" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/food/drinks/bottle/redeemersbrew, @@ -9242,46 +9242,46 @@ /obj/item/reagent_containers/food/drinks/bottle/redeemersbrew, /obj/item/reagent_containers/food/drinks/bottle/redeemersbrew, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Od" = ( /turf/simulated/floor/water/beach/corner, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Of" = ( /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Oh" = ( /obj/structure/bed/chair{ dir = 8 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Ol" = ( /obj/machinery/turnstile/resort/premium{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "On" = ( /turf/simulated/wall, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Or" = ( /obj/effect/mist, /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/sauna3) +/area/sector/class_m/inside/sauna3) "Os" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Ot" = ( /obj/structure/railing, /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Ou" = ( /obj/structure/table/rack, /obj/item/stack/material/plasteel{ @@ -9576,11 +9576,11 @@ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "Ov" = ( /obj/structure/dispenser/phoron, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Ow" = ( /obj/structure/bed/chair{ dir = 8; @@ -9588,13 +9588,13 @@ pixel_y = -6 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Ox" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Oy" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ @@ -9604,7 +9604,7 @@ dir = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "OA" = ( /obj/structure/railing/grey{ dir = 4 @@ -9615,82 +9615,82 @@ }, /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "OB" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "OC" = ( /obj/machinery/door/airlock{ id_tag = "room3"; name = "Room 3" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "OD" = ( /obj/structure/railing/grey, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "OF" = ( /obj/structure/table/marble, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "OG" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/double, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "OI" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 5 }, /obj/machinery/iv_drip, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "OJ" = ( /obj/structure/flora/ausbushes/grassybush, /mob/living/simple_mob/animal/passive/bird/parrot/white_caique, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "ON" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "OO" = ( /obj/structure/table/woodentable, /obj/structure/window/reinforced{ dir = 1 }, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "OQ" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "OR" = ( /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "OS" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "OU" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "OV" = ( /obj/structure/fans/tiny, /obj/machinery/turnstile/resort{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "OX" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/yellowdouble, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Pf" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -9703,19 +9703,19 @@ pixel_y = -55 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Pi" = ( /turf/simulated/floor/water/beach{ dir = 10 }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Pk" = ( /obj/structure/railing/grey{ dir = 8 }, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Pl" = ( /obj/structure/table/marble, /obj/machinery/vending/boozeomat{ @@ -9731,10 +9731,10 @@ pixel_y = 2 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Pq" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Ps" = ( /obj/structure/railing/grey{ dir = 1 @@ -9743,29 +9743,29 @@ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Pu" = ( /obj/structure/table/marble, /obj/structure/statue/marble/monkey, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Pw" = ( /obj/effect/catwalk_plated/dark, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "PA" = ( /obj/machinery/door/airlock/freezer{ name = "Kitchen Cold Room" }, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "PB" = ( /obj/structure/window/basic{ dir = 4 }, /obj/machinery/biogenerator, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "PC" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 10 @@ -9774,17 +9774,17 @@ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PE" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "PG" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/red, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "PH" = ( /obj/structure/window/reinforced/full, /obj/structure/curtain/open/bed, @@ -9792,41 +9792,41 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "PI" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PJ" = ( /obj/machinery/vending/dinnerware, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "PK" = ( /obj/machinery/light/spot/no_nightshift{ dir = 4 }, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "PL" = ( /obj/effect/floor_decal/industrial/warning/dust/corner{ dir = 8 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PM" = ( /obj/effect/floor_decal/river_beach_corner_edge{ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PN" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "PP" = ( /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PQ" = ( /obj/structure/bed/chair{ dir = 4; @@ -9834,72 +9834,72 @@ pixel_y = -6 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "PS" = ( /obj/machinery/media/jukebox, /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete15" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "PT" = ( /obj/effect/floor_decal/corner/blue/border, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "PU" = ( /obj/structure/railing, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PV" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 6 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "PX" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "PZ" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Qa" = ( /mob/living/simple_mob/animal/passive/bird/goldcrest, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Qb" = ( /turf/simulated/floor/water/beach{ dir = 4 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Qd" = ( /obj/structure/coatrack, /turf/simulated/floor/carpet/patterened/purple, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Qg" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Qh" = ( /turf/simulated/wall/wood, -/area/class_m/inside/sauna2) +/area/sector/class_m/inside/sauna2) "Qi" = ( /obj/item/radio/intercom/entertainment{ dir = 1; pixel_y = 23 }, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "Qk" = ( /turf/simulated/floor/water/shoreline{ dir = 1 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Ql" = ( /obj/structure/catwalk, /obj/structure/railing, @@ -9910,18 +9910,18 @@ dir = 10 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Qo" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Qp" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete20" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Qq" = ( /obj/machinery/light{ dir = 8; @@ -9934,18 +9934,18 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Qr" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "Qt" = ( /obj/machinery/vending/snack, /obj/effect/floor_decal/corner_steel_grid{ dir = 6 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Qu" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 10 @@ -9956,7 +9956,7 @@ }, /obj/machinery/vending/medical, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "Qv" = ( /obj/structure/railing/grey{ dir = 1 @@ -9965,7 +9965,7 @@ dir = 8 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Qw" = ( /obj/structure/bed/chair{ dir = 1 @@ -9973,68 +9973,68 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Qx" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/browndouble, /turf/simulated/floor/wood, -/area/class_m/inside/islandbeachhouse) +/area/sector/class_m/inside/islandbeachhouse) "Qy" = ( /obj/structure/railing/grey, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Qz" = ( /turf/simulated/wall, -/area/class_m/inside/maintenance/desert) +/area/sector/class_m/inside/maintenance/desert) "QC" = ( /obj/machinery/atm{ pixel_y = 32 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "QF" = ( /obj/structure/window/reinforced/full, /obj/structure/fans/tiny, /turf/simulated/floor/tiled, -/area/class_m/outside) +/area/sector/class_m/outside) "QL" = ( /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "QM" = ( /turf/simulated/wall, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "QN" = ( /turf/simulated/floor/carpet/patterened/red, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "QQ" = ( /obj/structure/sink{ dir = 4; pixel_x = 14 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "QU" = ( /obj/machinery/appliance/mixer/cereal, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "QX" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/effect/floor_decal/river_beach_edge{ dir = 9 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "QZ" = ( /turf/simulated/floor/carpet/patterened/magneta, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Rb" = ( /obj/machinery/appliance/mixer/candy, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Re" = ( /obj/structure/railing{ dir = 1 @@ -10043,78 +10043,78 @@ dir = 4 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Rf" = ( /obj/vehicle/ridden/boat{ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Rg" = ( /obj/structure/railing, /turf/simulated/floor/tiled/kafel_full/yellow, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Rh" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Rl" = ( /obj/machinery/light/small, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Rm" = ( /obj/structure/table/marble, /obj/machinery/reagentgrinder{ pixel_y = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Rn" = ( /obj/structure/fans/tiny, /obj/machinery/turnstile/resort{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Rp" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Rq" = ( /obj/structure/table/woodentable, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "Rr" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Rs" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/structure/table/marble, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Rv" = ( /obj/structure/railing/grey, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Rw" = ( /obj/structure/table/marble, /obj/machinery/recharger, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Rx" = ( /obj/structure/flora/pottedplant/tropical, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "RA" = ( /obj/machinery/shower{ pixel_y = 29 @@ -10122,7 +10122,7 @@ /obj/structure/curtain/open/shower, /obj/structure/window/reinforced/tinted/frosted, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "RB" = ( /obj/structure/table/marble, /obj/item/reagent_containers/dropper, @@ -10138,23 +10138,23 @@ pixel_x = 9 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "RE" = ( /turf/simulated/floor/water/beach{ dir = 10 }, -/area/class_m/outside) +/area/sector/class_m/outside) "RF" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "RH" = ( /obj/structure/table/marble, /obj/machinery/computer/security/telescreen, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "RI" = ( /obj/structure/window/basic, /obj/structure/window/basic{ @@ -10162,7 +10162,7 @@ }, /obj/machinery/vending/hydronutrients, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "RJ" = ( /obj/effect/floor_decal/corner/blue/border, /obj/structure/closet/medical_wall{ @@ -10170,122 +10170,122 @@ pixel_y = -32 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "RK" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "RL" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 6 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "RN" = ( /turf/simulated/floor/water/beach/corner{ dir = 1 }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "RP" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "RQ" = ( /obj/machinery/vending/cola, /obj/effect/floor_decal/corner_steel_grid{ dir = 6 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "RR" = ( /obj/structure/railing/grey, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "RS" = ( /obj/machinery/door/window/northleft, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "RW" = ( /obj/effect/mist, /obj/machinery/computer/security/telescreen{ pixel_y = 57 }, /turf/simulated/floor/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "RX" = ( /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "RZ" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Sa" = ( /turf/simulated/floor/water, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Sb" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Sc" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_m/inside/islandbeachhouse) +/area/sector/class_m/inside/islandbeachhouse) "Sd" = ( /mob/living/simple_mob/animal/passive/penguin/emperor, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Se" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 9 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Sg" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete23" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Sh" = ( /obj/structure/flora/ausbushes/genericbush, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Si" = ( /obj/structure/catwalk, /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Sk" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ppflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Sl" = ( /obj/structure/icecream_cart, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Sn" = ( /obj/structure/closet/secure_closet/freezer/meat, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "So" = ( /obj/machinery/appliance/cooker/oven, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Sp" = ( /turf/simulated/floor/water/beach{ dir = 4 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Sq" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -10293,11 +10293,11 @@ name = "Garage 9" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "St" = ( /obj/structure/railing, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Su" = ( /obj/structure/railing/grey{ dir = 4 @@ -10307,7 +10307,7 @@ }, /obj/structure/flora/tree/palm, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Sw" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 @@ -10317,18 +10317,18 @@ pixel_x = 64 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Sx" = ( /obj/structure/flora/ausbushes/lavendergrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Sy" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Sz" = ( /obj/machinery/shower{ dir = 1 @@ -10341,19 +10341,19 @@ dir = 5 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "SD" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 8 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "SE" = ( /obj/structure/flora/rock, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "SG" = ( /obj/effect/floor_decal/spline/plain{ dir = 10 @@ -10361,11 +10361,11 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "SH" = ( /obj/machinery/door/airlock, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "SJ" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -10374,39 +10374,39 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "SK" = ( /turf/simulated/floor/water/beach{ dir = 4 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "SN" = ( /obj/machinery/microwave, /obj/structure/table/marble, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "SQ" = ( /turf/simulated/floor/water/beach/corner, -/area/class_m/outside) +/area/sector/class_m/outside) "SS" = ( /obj/structure/railing/grey, /obj/effect/floor_decal/corner/black/diagonal{ alpha = 255 }, /turf/simulated/floor/tiled/white/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ST" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "SU" = ( /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "SV" = ( /turf/simulated/wall/wood, -/area/class_m/inside/sauna) +/area/sector/class_m/inside/sauna) "SW" = ( /obj/structure/railing{ dir = 1 @@ -10418,19 +10418,19 @@ dir = 8 }, /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "SX" = ( /obj/machinery/light/spot/no_nightshift, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "SZ" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 8 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Tb" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 @@ -10439,31 +10439,31 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Td" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust{ dir = 10 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Te" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/water/deep, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Tf" = ( /obj/item/stool/padded, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Tg" = ( /obj/structure/table/marble, /obj/machinery/microwave, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Th" = ( /obj/structure/table/marble, /obj/item/reagent_containers/food/condiment/small/saltshaker{ @@ -10491,10 +10491,10 @@ pixel_y = 16 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Tl" = ( /turf/simulated/floor/water/beach, -/area/class_m/outside) +/area/sector/class_m/outside) "Tm" = ( /obj/machinery/light/spot/no_nightshift{ dir = 8 @@ -10503,12 +10503,12 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Ts" = ( /obj/structure/flora/tree/palm, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Tt" = ( /obj/structure/table/marble, /obj/item/reagent_containers/food/condiment/small/saltshaker{ @@ -10535,38 +10535,38 @@ pixel_y = 16 }, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Tw" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "Tx" = ( /obj/structure/closet/wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Ty" = ( /turf/simulated/floor/water/beach{ dir = 5 }, -/area/class_m/outside/beach) +/area/sector/class_m/outside/beach) "Tz" = ( /turf/simulated/floor/water/beach/corner{ dir = 1 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "TB" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "TC" = ( /obj/machinery/chem_master/condimaster, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "TE" = ( /obj/machinery/light/spot, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "TF" = ( /obj/effect/floor_decal/corner/blue/border{ dir = 9 @@ -10584,13 +10584,13 @@ pixel_y = 6 }, /turf/simulated/floor/tiled/white, -/area/class_m/outside) +/area/sector/class_m/outside) "TG" = ( /obj/effect/floor_decal/industrial/loading{ dir = 8 }, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "TI" = ( /obj/structure/mirror{ dir = 4; @@ -10601,39 +10601,39 @@ pixel_x = 14 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "TK" = ( /obj/machinery/appliance/cooker/fryer, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "TM" = ( /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "TP" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "TQ" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "TR" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust{ dir = 6 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "TS" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 1 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "TT" = ( /obj/structure/railing{ dir = 4 @@ -10641,20 +10641,20 @@ /obj/structure/railing, /obj/structure/table/bench/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "TU" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "TX" = ( /obj/machinery/door/airlock{ id_tag = "room9"; name = "Room 9" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "TZ" = ( /obj/structure/railing/grey{ dir = 4 @@ -10663,38 +10663,38 @@ nightshift_allowed = 0 }, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Ud" = ( /turf/simulated/wall/planetary, -/area/class_m/outside) +/area/sector/class_m/outside) "Ui" = ( /obj/machinery/door/airlock{ name = "Bedroom" }, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Uj" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Uk" = ( /obj/machinery/gibber, /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ul" = ( /obj/structure/table/woodentable, /obj/item/flashlight/lamp/green, /turf/simulated/floor/wood, -/area/class_m/inside/islandbeachhouse) +/area/sector/class_m/inside/islandbeachhouse) "Um" = ( /obj/structure/table/bench/marble, /obj/structure/window/basic{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Un" = ( /obj/structure/flora/tree/palm{ pixel_x = 4; @@ -10709,41 +10709,41 @@ /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Us" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Ut" = ( /obj/machinery/door/airlock/glass{ name = "Automated Resort" }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Uv" = ( /obj/structure/bed/chair/sofa{ dir = 1 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Uw" = ( /obj/structure/railing, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/tiled/kafel_full/blue, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Uy" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Uz" = ( /obj/structure/table/marble, /turf/simulated/floor/tiled/dark, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "UA" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -10751,27 +10751,27 @@ /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/leafybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "UB" = ( /obj/structure/table/woodentable, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "UC" = ( /obj/machinery/portable_atmospherics/hydroponics/soil, /obj/machinery/portable_atmospherics/hydroponics/soil, /turf/simulated/floor/outdoors/dirt/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "UD" = ( /obj/structure/flora/pottedplant/stoutbush, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "UF" = ( /obj/structure/railing{ dir = 4 }, /obj/structure/table/glass, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "UG" = ( /obj/structure/railing/grey{ dir = 4 @@ -10781,7 +10781,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "UH" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 @@ -10793,12 +10793,12 @@ dir = 4 }, /turf/simulated/floor/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "UI" = ( /obj/structure/window/reinforced/full, /obj/structure/fans/tiny, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "UJ" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -10806,7 +10806,7 @@ name = "Garage 10" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "UQ" = ( /obj/machinery/light{ dir = 8; @@ -10819,7 +10819,7 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "UV" = ( /obj/structure/table/standard, /obj/item/toy/figure/secofficer{ @@ -10828,24 +10828,24 @@ /obj/item/dice/d20, /obj/item/reagent_containers/food/drinks/bottle/small/beer, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "UX" = ( /obj/machinery/media/jukebox, /obj/machinery/floor_light/changing/prebuilt{ on = 1 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Vd" = ( /obj/vehicle/ridden/boat{ dir = 4 }, /turf/simulated/floor/water/deep, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Ve" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "Vf" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -10854,33 +10854,33 @@ pixel_x = 26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Vh" = ( /obj/structure/table/sandstone, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Vi" = ( /turf/simulated/floor/carpet/bcarpet, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Vj" = ( /obj/structure/fans/tiny, /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Vu" = ( /mob/living/simple_mob/animal/passive/bird/parrot/budgerigar, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Vv" = ( /obj/machinery/holosign/exit, /turf/simulated/wall, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "Vw" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 4 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Vx" = ( /obj/effect/floor_decal/spline/plain{ dir = 4 @@ -10888,13 +10888,13 @@ /turf/simulated/floor/wood{ outdoors = 1 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Vz" = ( /obj/structure/catwalk, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "VB" = ( /obj/structure/closet/crate/hydroponics, /obj/item/material/minihoe, @@ -10905,25 +10905,25 @@ /obj/item/plant_analyzer, /obj/item/tool/wirecutters/clippers/trimmers, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "VC" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/browndouble, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "VF" = ( /turf/simulated/floor/water, -/area/class_m/outside) +/area/sector/class_m/outside) "VH" = ( /obj/effect/mist, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "VI" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/indoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "VJ" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 8 @@ -10932,28 +10932,28 @@ dir = 8 }, /turf/simulated/floor/concrete/tile/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "VN" = ( /obj/structure/flora/ausbushes/sparsegrass, /obj/structure/flora/ausbushes/ppflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "VP" = ( /turf/simulated/floor/water/shoreline{ dir = 8 }, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "VQ" = ( /obj/structure/table/hardwoodtable, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "VS" = ( /obj/machinery/door/airlock/multi_tile/glass{ name = "Winter Wonderland" }, /obj/structure/fans/tiny, /turf/simulated/floor/tiled, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "VT" = ( /obj/structure/table/rack, /obj/structure/window/reinforced{ @@ -10964,33 +10964,33 @@ /obj/item/reagent_containers/glass/bottle/lotion, /obj/item/reagent_containers/glass/bottle/lotion, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "VU" = ( /obj/machinery/door/airlock/glass{ name = "Desert Resort" }, /turf/simulated/floor/tiled, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "VV" = ( /obj/structure/table/hardwoodtable, /obj/machinery/computer/security/telescreen{ pixel_y = 35 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "VX" = ( /obj/effect/floor_decal/industrial/warning{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "VY" = ( /obj/structure/railing/grey{ dir = 8 }, /obj/structure/railing/grey, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "VZ" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 5 @@ -10999,30 +10999,30 @@ dir = 1 }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Wb" = ( /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Wd" = ( /obj/machinery/media/jukebox, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "We" = ( /obj/machinery/door/airlock{ id_tag = "room6"; name = "Room 6" }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Wf" = ( /obj/structure/grille, /obj/structure/foamedmetal, /turf/simulated/floor, -/area/class_m/inside/maintenance/desert) +/area/sector/class_m/inside/maintenance/desert) "Wh" = ( /obj/structure/railing, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/docks) +/area/sector/class_m/outside/docks) "Wi" = ( /obj/machinery/button/remote/airlock{ id = "room4"; @@ -11035,7 +11035,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Wj" = ( /obj/machinery/button/remote/airlock{ id = "room8"; @@ -11048,64 +11048,64 @@ nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "Wk" = ( /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Wl" = ( /obj/structure/flora/rock, /obj/effect/mist, /turf/simulated/floor/water/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Wn" = ( /obj/structure/table/sandstone, /obj/item/reagent_containers/glass/bottle/lotion, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Wp" = ( /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Ws" = ( /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/floor/wood/outdoors, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Ww" = ( /obj/structure/catwalk, /obj/structure/railing, /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Wx" = ( /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Wy" = ( /obj/structure/closet/athletic_mixed, /obj/item/melee/umbrella/random, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "Wz" = ( /obj/structure/table/rack/shelf/steel, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "WA" = ( /obj/effect/floor_decal/industrial/warning/corner, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "WB" = ( /turf/simulated/wall, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "WD" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 9 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "WE" = ( /turf/simulated/floor/concrete/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "WJ" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/structure/railing{ @@ -11113,7 +11113,7 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "WM" = ( /obj/structure/mirror{ dir = 4; @@ -11124,17 +11124,17 @@ pixel_x = -14 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "WN" = ( /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "WO" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/tiled, -/area/class_m/inside) +/area/sector/class_m/inside) "WR" = ( /obj/machinery/shower{ dir = 1 @@ -11150,57 +11150,57 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "WS" = ( /obj/machinery/light/spot/no_nightshift{ dir = 8 }, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "WU" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_edge{ dir = 5 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "WZ" = ( /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Xa" = ( /obj/structure/railing/grey, /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Xb" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/brflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Xc" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Xd" = ( /turf/simulated/wall/planetary, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "Xf" = ( /turf/simulated/floor/concrete/tile/outdoors{ icon_state = "concrete17" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Xh" = ( /turf/simulated/wall/sandstone, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Xi" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 4 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Xj" = ( /obj/structure/symbol/sa{ pixel_x = 32 @@ -11212,24 +11212,24 @@ dir = 4 }, /turf/simulated/floor/tiled/techfloor, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Xk" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "Xm" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/outdoors/gravsnow/lythios43c/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Xn" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Xo" = ( /obj/effect/floor_decal/corner_steel_grid/full{ dir = 8 @@ -11238,81 +11238,81 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Xp" = ( /turf/simulated/floor/water/beach{ dir = 8 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Xq" = ( /obj/effect/floor_decal/industrial/warning{ dir = 5 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Xr" = ( /obj/structure/bed/double/padded, /obj/item/bedsheet/purpledouble, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Xs" = ( /obj/structure/flora/ausbushes/fullgrass, /obj/structure/flora/ausbushes/stalkybush, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Xt" = ( /turf/simulated/floor/water/beach{ dir = 5 }, -/area/class_m/outside) +/area/sector/class_m/outside) "Xw" = ( /turf/simulated/floor/water/deep, -/area/class_m/outside) +/area/sector/class_m/outside) "Xy" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/tiled/white, -/area/class_m/inside/bathroom) +/area/sector/class_m/inside/bathroom) "Xz" = ( /obj/structure/bed/chair/wood/wings{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "XC" = ( /turf/simulated/floor/tiled/freezer, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "XD" = ( /turf/simulated/floor/carpet/patterened/purple, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "XE" = ( /mob/living/simple_mob/animal/sif/glitterfly, /turf/simulated/floor/outdoors/snow, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "XG" = ( /obj/structure/catwalk, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "XH" = ( /obj/structure/closet/wardrobe, /turf/simulated/floor/wood, -/area/class_m/inside/igloos) +/area/sector/class_m/inside/igloos) "XI" = ( /obj/machinery/light/spot{ dir = 1; nightshift_allowed = 0 }, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "XJ" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust{ dir = 10 }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "XK" = ( /obj/machinery/power/thermoregulator, /obj/effect/map_effect/interval/effect_emitter/steam, @@ -11324,20 +11324,20 @@ }, /obj/structure/railing, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance/winter) +/area/sector/class_m/inside/maintenance/winter) "XL" = ( /turf/simulated/wall, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "XM" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/tiled/kafel_full/purple, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "XN" = ( /obj/structure/closet/secure_closet/personal, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "XO" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 8 @@ -11349,7 +11349,7 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "XU" = ( /obj/structure/table/standard, /obj/item/toy/figure/secofficer{ @@ -11360,18 +11360,18 @@ }, /obj/item/reagent_containers/food/drinks/bottle/small/beer, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "XW" = ( /obj/effect/floor_decal/steeldecal/steel_decals5{ dir = 1 }, /obj/effect/floor_decal/steeldecal/steel_decals5, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "XY" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "XZ" = ( /obj/effect/floor_decal/spline/plain{ dir = 6 @@ -11381,11 +11381,11 @@ }, /obj/structure/catwalk, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Yb" = ( /obj/structure/railing/grey, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Yd" = ( /obj/structure/flora/ausbushes/stalkybush, /obj/machinery/light/spot{ @@ -11393,7 +11393,7 @@ nightshift_allowed = 0 }, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ye" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 @@ -11405,32 +11405,32 @@ /obj/item/reagent_containers/food/snacks/frenchonionsoup, /obj/item/reagent_containers/food/snacks/frenchonionsoup, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Yh" = ( /mob/living/simple_mob/animal/passive/bird/black_bird, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Yi" = ( /obj/structure/closet/crate/freezer/rations, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "Yk" = ( /obj/item/stack/ore, /turf/simulated/floor/outdoors/dirt, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Yl" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Ym" = ( /obj/machinery/light/spot{ dir = 4; nightshift_allowed = 0 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Yn" = ( /obj/structure/table/sandstone, /obj/item/reagent_containers/food/condiment/small/packet/sugar, @@ -11444,7 +11444,7 @@ /obj/item/reagent_containers/food/condiment/small/packet/sugar, /obj/item/reagent_containers/food/condiment/small/packet/sugar, /turf/simulated/floor/wood, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Yo" = ( /obj/effect/floor_decal/spline/plain{ dir = 9 @@ -11452,20 +11452,20 @@ /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside) +/area/sector/class_m/outside) "Yp" = ( /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Yr" = ( /obj/structure/flora/ausbushes/ywflowers, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "Ys" = ( /obj/structure/bed/chair/sofa/black/right{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Yw" = ( /obj/structure/railing/grey{ dir = 1 @@ -11474,20 +11474,20 @@ dir = 4 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Yy" = ( /obj/structure/catwalk, /obj/effect/floor_decal/river_beach_edge{ dir = 10 }, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Yz" = ( /obj/structure/curtain/open/bed, /obj/spawner/window/borosillicate/full, /obj/structure/fans/tiny, /turf/simulated/floor/wood, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "YB" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/shrimpcocktail, @@ -11496,27 +11496,27 @@ /obj/item/reagent_containers/food/snacks/shrimpcocktail, /obj/item/reagent_containers/food/snacks/shrimpcocktail, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "YE" = ( /mob/living/simple_mob/animal/passive/bird/parrot/sulphur_cockatoo, /turf/simulated/floor/outdoors/grass, -/area/class_m/outside) +/area/sector/class_m/outside) "YF" = ( /obj/structure/memorial/small/left{ desc = "An obsidian memorial wall. Engraved on it is a group of humanoids of indeterminate species relaxing peacefull on a beach as the sunsets. Beneath is a quote from the founder of the Happy Days and Sunshine Corporation: 'Our mission: to make sure all species can find paradise'."; description_fluff = "" }, /turf/simulated/floor/concrete/tile/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "YH" = ( /obj/structure/fans/tiny, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "YI" = ( /obj/structure/flora/rock, /obj/effect/mist, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "YL" = ( /obj/structure/table/woodentable, /obj/machinery/vending/gaia, @@ -11524,7 +11524,7 @@ dir = 8 }, /turf/simulated/floor/carpet/patterened, -/area/class_m/inside/entrance) +/area/sector/class_m/inside/entrance) "YN" = ( /obj/structure/window/reinforced{ dir = 1 @@ -11537,19 +11537,19 @@ /obj/item/hand_labeler, /obj/item/hand_labeler, /turf/simulated/floor/wood, -/area/class_m/inside) +/area/sector/class_m/inside) "YO" = ( /turf/simulated/floor/water/beach{ dir = 1 }, -/area/class_m/outside/island2) +/area/sector/class_m/outside/island2) "YP" = ( /obj/effect/mist, /obj/machinery/light/flamp/noshade{ nightshift_allowed = 0 }, /turf/simulated/mineral/floor, -/area/class_m/inside/hotspringcaves) +/area/sector/class_m/inside/hotspringcaves) "YQ" = ( /obj/structure/railing{ dir = 1 @@ -11558,28 +11558,28 @@ dir = 8 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "YS" = ( /obj/effect/floor_decal/river_beach_corner_edge, /turf/simulated/floor/water/river/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "YT" = ( /obj/structure/table/marble, /turf/simulated/floor/wood, -/area/class_m/inside/cabin) +/area/sector/class_m/inside/cabin) "YU" = ( /obj/item/trash/cheesie, /turf/simulated/floor/tiled, -/area/class_m/inside/maintenance) +/area/sector/class_m/inside/maintenance) "YW" = ( /turf/simulated/floor/water/beach{ dir = 10 }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "YX" = ( /obj/structure/catwalk, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "YY" = ( /obj/machinery/light{ dir = 8; @@ -11592,54 +11592,54 @@ pixel_x = -26 }, /turf/simulated/floor/tiled/monowhite, -/area/class_m/inside/garage) +/area/sector/class_m/inside/garage) "Za" = ( /obj/effect/overlay/palmtree_r, /obj/effect/overlay/coconut, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "Zb" = ( /obj/structure/flora/ausbushes, /turf/simulated/floor/water/river/deep/south/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Zc" = ( /obj/structure/window/reinforced/full, /turf/simulated/floor/tiled, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Ze" = ( /obj/item/stack/ore, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Zf" = ( /obj/machinery/light/spot{ nightshift_allowed = 0 }, /obj/structure/flora/ausbushes/reedbush, /turf/simulated/floor/water/deep/indoors, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Zg" = ( /turf/simulated/mineral, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "Zi" = ( /turf/simulated/floor/carpet/patterened/blue, -/area/class_m/inside/vip_dorms) +/area/sector/class_m/inside/vip_dorms) "Zj" = ( /obj/structure/table/woodentable, /obj/effect/floor_decal/industrial/warning/dust{ dir = 6 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Zk" = ( /obj/effect/floor_decal/industrial/warning/dust, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Zn" = ( /mob/living/simple_mob/animal/sif/duck, /turf/simulated/floor/water/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "Zo" = ( /obj/structure/window/reinforced{ dir = 1 @@ -11649,38 +11649,38 @@ /obj/item/clothing/suit/storage/hooded/wintercoat, /obj/structure/closet/secure_closet/personal, /turf/simulated/floor/carpet, -/area/class_m/inside/coats) +/area/sector/class_m/inside/coats) "Zp" = ( /obj/structure/bed/chair/sofa/black/left{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "Zq" = ( /obj/structure/railing, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "Zs" = ( /obj/effect/floor_decal/industrial/warning{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_m/inside/hangars) +/area/sector/class_m/inside/hangars) "Zt" = ( /obj/structure/railing/grey{ dir = 1 }, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "Zu" = ( /turf/simulated/wall/wood, -/area/class_m/inside/islandbeachhouse) +/area/sector/class_m/inside/islandbeachhouse) "Zx" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 4 }, /turf/simulated/floor/concrete/rng/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ZC" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/snacks/sashimi, @@ -11689,28 +11689,28 @@ /obj/item/reagent_containers/food/snacks/sashimi, /obj/item/reagent_containers/food/snacks/sashimi, /turf/simulated/floor/carpet, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ZF" = ( /obj/structure/bed/padded, /turf/simulated/floor/outdoors/beach/sand/desert, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ZI" = ( /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/island) +/area/sector/class_m/outside/island) "ZK" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_m/inside/dorms) +/area/sector/class_m/inside/dorms) "ZL" = ( /obj/item/clothing/head/cone, /turf/simulated/floor/outdoors/beach/sand/desert{ name = "beach" }, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ZN" = ( /obj/effect/floor_decal/corner_steel_grid{ dir = 10 @@ -11719,7 +11719,7 @@ name = "Automated Resort" }, /turf/simulated/floor/tiled/monotile, -/area/class_m/inside/main) +/area/sector/class_m/inside/main) "ZO" = ( /obj/structure/railing{ dir = 4 @@ -11728,40 +11728,40 @@ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ZP" = ( /obj/structure/fans/tiny, /obj/machinery/door/airlock/glass{ name = "Desert Resort" }, /turf/simulated/floor/tiled, -/area/class_m/outside) +/area/sector/class_m/outside) "ZS" = ( /obj/structure/railing/grey{ dir = 4 }, /obj/structure/railing/grey, /turf/simulated/floor/water, -/area/class_m/outside/desert) +/area/sector/class_m/outside/desert) "ZU" = ( /obj/machinery/computer/security/telescreen{ pixel_y = 157 }, /obj/structure/table/hardwoodtable, /turf/simulated/floor/concrete/rng/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) "ZW" = ( /obj/structure/railing/grey{ dir = 4 }, /turf/simulated/floor/outdoors/ice/indoors, -/area/class_m/outside/winter) +/area/sector/class_m/outside/winter) "ZX" = ( /obj/effect/floor_decal/river_beach_edge{ dir = 1 }, /turf/simulated/floor/water/river/west/outdoors, -/area/class_m/outside) +/area/sector/class_m/outside) "ZZ" = ( /obj/item/radio/intercom{ dir = 1; @@ -11770,7 +11770,7 @@ }, /obj/structure/table/marble, /turf/simulated/floor/tiled/outdoors, -/area/class_m/outside/beachmiddle) +/area/sector/class_m/outside/beachmiddle) (1,1,1) = {" ua diff --git a/maps/sectors/mining_192/levels/mining_192.dmm b/maps/sectors/mining_192/levels/mining_192.dmm index 1f2e92d9c593..a5ae121203f6 100644 --- a/maps/sectors/mining_192/levels/mining_192.dmm +++ b/maps/sectors/mining_192/levels/mining_192.dmm @@ -1,31 +1,31 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/unsimulated/wall/mineral, -/area/class_g/explored) +/area/sector/class_g/explored) "b" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "mining_planet" }, /turf/simulated/mineral/floor/ignore_cavegen, -/area/class_g/explored) +/area/sector/class_g/explored) "c" = ( /turf/simulated/mineral, -/area/class_g/explored) +/area/sector/class_g/explored) "e" = ( /turf/simulated/mineral, -/area/class_g/unexplored) +/area/sector/class_g/unexplored) "n" = ( /turf/simulated/mineral/rich, -/area/class_g/unexplored) +/area/sector/class_g/unexplored) "q" = ( /turf/simulated/mineral/floor/ignore_cavegen, -/area/class_g/unexplored) +/area/sector/class_g/unexplored) "s" = ( /turf/simulated/wall, -/area/class_g/explored) +/area/sector/class_g/explored) "v" = ( /turf/simulated/mineral/floor, -/area/class_g/unexplored) +/area/sector/class_g/unexplored) "z" = ( /obj/machinery/embedded_controller/radio/simple_docking_controller{ frequency = 1380; @@ -34,23 +34,23 @@ pixel_y = 30 }, /turf/simulated/mineral/rich, -/area/class_g/explored) +/area/sector/class_g/explored) "B" = ( /obj/overmap/entity/visitable/sector/mining_planet, /turf/unsimulated/wall/mineral, -/area/class_g/explored) +/area/sector/class_g/explored) "E" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "airless" }, /turf/simulated/mineral/floor/ignore_cavegen, -/area/class_g/explored) +/area/sector/class_g/explored) "H" = ( /turf/simulated/mineral/floor/ignore_cavegen, -/area/class_g/explored) +/area/sector/class_g/explored) "K" = ( /turf/simulated/mineral/rich, -/area/class_g/explored) +/area/sector/class_g/explored) (1,1,1) = {" a diff --git a/maps/sectors/mining_192/mining_192-areas.dm b/maps/sectors/mining_192/mining_192-areas.dm new file mode 100644 index 000000000000..356ee5ee2721 --- /dev/null +++ b/maps/sectors/mining_192/mining_192-areas.dm @@ -0,0 +1,18 @@ + +// Class G world areas +/area/sector/class_g + name = "Class G World" + icon_state = "away" + requires_power = 1 + dynamic_lighting = 1 + +/area/sector/class_g/explored + name = "Class G World - Explored (E)" + icon_state = "red" + forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') + allow_worldgen_overwrite = TRUE + +/area/sector/class_g/unexplored + name = "Class G World - Unexplored (UE)" + icon_state = "yellow" + allow_worldgen_overwrite = TRUE diff --git a/maps/sectors/piratebase_192/piratebase_192-areas.dm b/maps/sectors/piratebase_192/piratebase_192-areas.dm new file mode 100644 index 000000000000..a7a329116266 --- /dev/null +++ b/maps/sectors/piratebase_192/piratebase_192-areas.dm @@ -0,0 +1,54 @@ + +/area/piratebase + name = "Pirate Base" + icon = 'icons/turf/areas.dmi' + icon_state = "dark" + forced_ambience = list('sound/ambience/tension/tension.ogg', 'sound/ambience/tension/horror.ogg') + +/area/piratebase/dock + name = "Pirate Base - Dock" + icon_state = "debrisexplored" + +/area/piratebase/sickbay + name = "Pirate Base - Sickbay" + icon_state = "debrisexplored" + +/area/piratebase/mess + name = "Pirate Base - Mess Hall" + icon_state = "debrisexplored" + +/area/piratebase/bunks + name = "Pirate Base - Bunks" + icon_state = "debrisexplored" + +/area/piratebase/captain + name = "Pirate Base - Captain's Quarters" + icon_state = "debrisexplored" + +/area/piratebase/vault + name = "Pirate Base - Vault" + icon_state = "debrisexplored" + +/area/piratebase/atmospherics + name = "Pirate Base - Atmospherics" + icon_state = "debrisexplored" + +/area/piratebase/construction + name = "Pirate Base - Construction Zone" + icon_state = "debrisexplored" + +/area/piratebase/mining + name = "Pirate Base - Mining Operations" + icon_state = "debrisexplored" + +/area/piratebase/power + name = "Pirate Base - Power Management" + icon_state = "debrisexplored" + +/area/piratebase/halls + name = "Pirate Base - Halls" + icon_state = "debrisexplored" + +/area/piratebase/brig + name = "Pirate Base - Brig" + icon_state = "debrisexplored" diff --git a/maps/sectors/wasteland_192/levels/wasteland_192.dmm b/maps/sectors/wasteland_192/levels/wasteland_192.dmm index 8bacb7236500..7e5a90a58743 100644 --- a/maps/sectors/wasteland_192/levels/wasteland_192.dmm +++ b/maps/sectors/wasteland_192/levels/wasteland_192.dmm @@ -1,63 +1,63 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "ai" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "aj" = ( /obj/mob_spawner/alien/hard, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "bn" = ( /obj/mob_spawner/carp/large, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "bq" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "bC" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "bX" = ( /obj/mob_spawner/alien/easy, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "ch" = ( /obj/mob_spawner/carp/medium, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "cj" = ( /obj/mob_spawner/carp/large, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "co" = ( /obj/structure/ore_box, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "cR" = ( /obj/mob_spawner/carp/large, /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "ds" = ( /obj/mob_spawner/carp/medium, /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "dJ" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "dQ" = ( /obj/mob_spawner/carp/small, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "dR" = ( /obj/mob_spawner/drone_spawner, /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "eb" = ( /obj/mob_spawner/hound_spawner, /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "ex" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "eL" = ( /obj/item/beartrap{ anchored = 1; @@ -65,86 +65,86 @@ icon_state = "beartrap1" }, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "fh" = ( /obj/structure/barricade/cutout/monky, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "fj" = ( /obj/machinery/light/spot, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "fm" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "fA" = ( /obj/machinery/light/spot/flicker, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "fO" = ( /obj/effect/debris/cleanable/blood/splatter, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "fQ" = ( /turf/simulated/wall/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "gc" = ( /obj/structure/sign/signnew/danger, /turf/simulated/wall/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "gk" = ( /obj/structure/fence/door/locked, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "gD" = ( /obj/structure/fence/cut/large{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "gM" = ( /obj/structure/fence/door/opened, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "gQ" = ( /obj/structure/fence/door, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "hr" = ( /obj/machinery/light/spot/flicker{ dir = 8 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "hM" = ( /obj/machinery/atmospherics/pipe/vent, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "hQ" = ( /obj/mob_spawner/alien/easy, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "hR" = ( /obj/structure/fence{ dir = 1 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "ic" = ( /obj/machinery/light/spot/flicker{ dir = 4 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "is" = ( /obj/structure/sandbag, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "iG" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "iT" = ( /obj/item/storage/briefcase/inflatable{ pixel_x = 3; @@ -158,18 +158,18 @@ }, /obj/structure/closet/crate/mimic/closet/cointoss, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "je" = ( /obj/structure/cable/orange{ icon_state = "0-2" }, /obj/machinery/power/smes/buildable/offmap_spawn/empty, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jh" = ( /obj/machinery/power/terminal{ dir = 8 @@ -178,7 +178,7 @@ icon_state = "0-2" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jo" = ( /obj/structure/cable/yellow{ icon_state = "4-8" @@ -188,7 +188,7 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jx" = ( /obj/machinery/power/port_gen/pacman/mrs{ anchored = 1 @@ -197,24 +197,24 @@ icon_state = "0-2" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jA" = ( /turf/simulated/mineral/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "jB" = ( /obj/structure/table/steel, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "jH" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jJ" = ( /obj/machinery/atmospherics/pipe/simple/visible/scrubbers{ dir = 5 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jK" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -227,59 +227,59 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "jN" = ( /obj/machinery/atmospherics/pipe/manifold/visible/supply{ dir = 1 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "kc" = ( /obj/machinery/atmospherics/pipe/simple/hidden/universal{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "kd" = ( /obj/machinery/atmospherics/portables_connector{ dir = 8 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "kW" = ( /turf/simulated/mineral/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "lf" = ( /obj/machinery/portable_atmospherics/canister/air/airlock{ start_pressure = 4559.63 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "lh" = ( /obj/machinery/light/spot{ dir = 4 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "lk" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "lu" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "lQ" = ( /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "lS" = ( /obj/machinery/floodlight, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "lU" = ( /obj/machinery/floodlight, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "lX" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -287,27 +287,27 @@ /obj/machinery/atmospherics/pipe/simple/visible/scrubbers, /obj/machinery/atmospherics/pipe/simple/visible/supply, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "mq" = ( /obj/machinery/portable_atmospherics/canister/air/airlock{ start_pressure = 4559.63 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "ms" = ( /turf/simulated/floor/outdoors/rocks/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "mB" = ( /obj/structure/fence/door/locked{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "mO" = ( /obj/structure/barricade, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "mR" = ( /obj/structure/table/rack, /obj/item/storage/toolbox/electrical{ @@ -320,17 +320,17 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "mU" = ( /obj/machinery/mech_recharger, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "ne" = ( /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "nG" = ( /obj/structure/table/steel_reinforced, /obj/machinery/cell_charger{ @@ -338,7 +338,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "nH" = ( /obj/machinery/recharger{ pixel_x = 5; @@ -347,12 +347,12 @@ /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "nP" = ( /obj/structure/reagent_dispensers/fueltank, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "nZ" = ( /obj/structure/cable/orange{ icon_state = "0-2" @@ -360,43 +360,43 @@ /obj/machinery/power/apc/north_mount, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "oa" = ( /obj/structure/fence{ dir = 1 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "od" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "ok" = ( /turf/simulated/wall/planetary/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "oA" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "oH" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "pf" = ( /obj/structure/fence/door/opened, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "pk" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "pp" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "pF" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -405,33 +405,33 @@ /obj/machinery/atmospherics/pipe/simple/visible/supply, /obj/structure/closet/crate/mimic/airlock/cointoss, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "ql" = ( /turf/simulated/floor/outdoors/rocks/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "qm" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "qr" = ( /obj/effect/shuttle_landmark/automatic{ docking_controller = "airless" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "qD" = ( /obj/machinery/light/spot{ dir = 8 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "qT" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "qW" = ( /obj/structure/table/steel_reinforced, /obj/machinery/light/spot/flicker{ @@ -439,23 +439,23 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "qZ" = ( /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "re" = ( /obj/structure/cable/orange{ icon_state = "0-2" }, /obj/machinery/power/apc/north_mount, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "rg" = ( /obj/structure/cable/orange{ icon_state = "2-4" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "rm" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -465,20 +465,20 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "rr" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /obj/machinery/door/airlock, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "rx" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "rS" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -493,7 +493,7 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "rX" = ( /obj/structure/cable/orange{ icon_state = "0-8" @@ -501,35 +501,35 @@ /obj/machinery/power/apc/north_mount, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "rZ" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "sa" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "si" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "sp" = ( /obj/effect/map_effect/radiation_emitter, /turf/simulated/floor/outdoors/rocks/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "sq" = ( /obj/machinery/light/spot/flicker{ dir = 4 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "sr" = ( /obj/structure/cable/orange{ icon_state = "2-4" @@ -538,19 +538,19 @@ dir = 1 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "sw" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "sE" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "sH" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -559,13 +559,13 @@ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "sK" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "to" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -574,21 +574,21 @@ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "tE" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 1 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "tJ" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "tQ" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -596,7 +596,7 @@ /obj/effect/gibspawner/robot, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "ur" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -606,7 +606,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "uH" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -615,13 +615,13 @@ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "uO" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "uS" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -630,7 +630,7 @@ icon_state = "1-4" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "vi" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -639,52 +639,52 @@ icon_state = "1-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "vr" = ( /obj/structure/dispenser/oxygen, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "vy" = ( /obj/structure/table/rack, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "vz" = ( /obj/machinery/light{ dir = 4 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "vA" = ( /obj/effect/map_effect/radiation_emitter/strong, /turf/simulated/floor/outdoors/rocks/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "vG" = ( /obj/structure/fence/cut/large, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "wl" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "wt" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "wK" = ( /obj/effect/decal/mecha_wreckage/ripley, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "xc" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "xd" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -692,41 +692,41 @@ dir = 8 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "xt" = ( /obj/structure/sandbag, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "xz" = ( /obj/structure/table/bench/steel, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "xM" = ( /obj/structure/sandbag, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "xP" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/structure/closet/crate/secure/bin, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "xY" = ( /obj/structure/barricade, /obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "ym" = ( /obj/structure/fence/cut/medium, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "yq" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "yw" = ( /obj/machinery/light/spot/flicker{ dir = 8 @@ -735,13 +735,13 @@ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "yx" = ( /obj/effect/floor_decal/industrial/warning/dust{ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "yA" = ( /obj/machinery/light/spot{ dir = 4 @@ -750,40 +750,40 @@ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "yF" = ( /obj/machinery/light/spot/flicker, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "zp" = ( /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "zr" = ( /obj/structure/grille/broken, /obj/item/material/shard, /obj/item/material/shard, /obj/item/material/shard, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "zJ" = ( /obj/structure/table/steel, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "zK" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "zP" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/effect/debris/cleanable/blood/splatter, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Af" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Am" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -791,25 +791,25 @@ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Av" = ( /obj/machinery/light/spot{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "AD" = ( /obj/mob_spawner/carp/small, /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "AG" = ( /obj/structure/barricade, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "AM" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "AQ" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -818,14 +818,14 @@ /obj/machinery/atmospherics/pipe/simple/hidden/supply, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "AY" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Ba" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -838,7 +838,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Bi" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 8 @@ -846,7 +846,7 @@ /obj/structure/table/bench/steel, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Bk" = ( /obj/structure/grille/broken, /obj/item/material/shard, @@ -854,41 +854,41 @@ /obj/item/material/shard, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Bo" = ( /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Bp" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "BE" = ( /obj/machinery/light, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Cd" = ( /obj/machinery/light, /obj/structure/table/steel, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Cn" = ( /obj/effect/debris/cleanable/blood/xeno, /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "CE" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "CF" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -899,7 +899,7 @@ /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "CL" = ( /obj/machinery/light{ dir = 4 @@ -907,18 +907,18 @@ /obj/structure/table/steel_reinforced, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "CR" = ( /obj/machinery/light/spot, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "CW" = ( /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "CX" = ( /obj/structure/barricade, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "CZ" = ( /obj/item/stack/material/wood{ amount = 10 @@ -926,17 +926,17 @@ /obj/item/beartrap, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Dm" = ( /obj/machinery/light/spot/flicker, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "DW" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Ex" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "EF" = ( /obj/machinery/air_alarm/alarms_hidden{ pixel_y = 28 @@ -947,7 +947,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "EI" = ( /obj/structure/cable/orange{ icon_state = "0-4" @@ -956,7 +956,7 @@ /obj/structure/closet/secure_closet/personal, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "EK" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -969,46 +969,46 @@ /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/effect/debris/cleanable/blood/splatter, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "EP" = ( /obj/structure/bed/chair/comfy/black, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Fe" = ( /obj/structure/closet/secure_closet/freezer/meat, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Fr" = ( /obj/structure/table/steel_reinforced, /obj/machinery/microwave, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Ft" = ( /obj/machinery/light/spot/flicker{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "FB" = ( /obj/structure/sign/signnew/canisters, /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "FM" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "FV" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Gp" = ( /obj/structure/fence/door/locked, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Gu" = ( /obj/machinery/light/spot/flicker{ dir = 8 @@ -1017,26 +1017,26 @@ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "GM" = ( /obj/effect/floor_decal/rust, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Hh" = ( /obj/machinery/light{ dir = 8 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Hl" = ( /obj/machinery/atmospherics/component/unary/vent_pump/on{ dir = 4 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "HM" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -1047,7 +1047,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "HY" = ( /obj/machinery/light{ dir = 4 @@ -1055,51 +1055,51 @@ /obj/structure/table/woodentable, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Ig" = ( /obj/machinery/atmospherics/portables_connector{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Ik" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Iq" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "IF" = ( /obj/machinery/atmospherics/component/binary/pump{ dir = 8 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "IK" = ( /obj/machinery/atmospherics/pipe/manifold/visible{ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "IM" = ( /obj/machinery/atmospherics/pipe/tank/phoron{ dir = 8; start_pressure = 1215.9 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "IO" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Jc" = ( /obj/structure/bed{ desc = "Not the most comfy, but useful for napping when no one is in the brig."; @@ -1107,12 +1107,12 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Jf" = ( /obj/structure/closet/secure_closet/personal, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Jh" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -1122,20 +1122,20 @@ /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Jj" = ( /obj/structure/bed/chair/comfy/black{ dir = 1 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "JA" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "JG" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Kc" = ( /obj/machinery/shower{ pixel_y = 16 @@ -1152,7 +1152,7 @@ dir = 1 }, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Ki" = ( /obj/machinery/light/small/flicker{ dir = 1 @@ -1161,7 +1161,7 @@ /obj/random/soap, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Kn" = ( /obj/item/beartrap{ anchored = 1; @@ -1169,31 +1169,31 @@ icon_state = "beartrap1" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Ko" = ( /obj/structure/fence{ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "KI" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "KK" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "KQ" = ( /obj/machinery/atmospherics/component/binary/pump{ dir = 1 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Lo" = ( /obj/machinery/atmospherics/portables_connector, /obj/effect/floor_decal/industrial/outline/red, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "LO" = ( /obj/structure/fence{ dir = 1 @@ -1205,14 +1205,14 @@ pixel_y = 30 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "LZ" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 4 }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Me" = ( /obj/structure/cable/orange{ icon_state = "1-4" @@ -1226,7 +1226,7 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Mh" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -1242,7 +1242,7 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Mk" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -1256,7 +1256,7 @@ /obj/machinery/door/airlock, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Mm" = ( /obj/structure/cable/orange{ icon_state = "4-8" @@ -1269,7 +1269,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "My" = ( /obj/structure/cable/orange{ icon_state = "0-8" @@ -1280,29 +1280,29 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Mz" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "MG" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "NC" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 9 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "NP" = ( /obj/structure/barricade, /obj/structure/cable/orange{ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "NT" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/item/ammo_casing/spent, @@ -1310,12 +1310,12 @@ /obj/item/ammo_casing/spent, /obj/effect/debris/cleanable/blood/splatter, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Ok" = ( /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /obj/effect/gibspawner/human, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bunk_room) +/area/sector/class_d/wildcat_mining_base/interior/bunk_room) "Os" = ( /obj/machinery/atmospherics/component/unary/vent_scrubber/on{ dir = 1 @@ -1330,7 +1330,7 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "Ot" = ( /obj/machinery/air_alarm/alarms_hidden{ dir = 8; @@ -1341,36 +1341,36 @@ }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/bathroom) +/area/sector/class_d/wildcat_mining_base/interior/bathroom) "ON" = ( /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Pl" = ( /obj/structure/fence/door/locked{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Pz" = ( /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "PJ" = ( /obj/structure/cable/orange{ icon_state = "2-4" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "PQ" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /obj/effect/floor_decal/corner_kafel/yellow/diagonal, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/wildcat_mining_base/interior/main_room) +/area/sector/class_d/wildcat_mining_base/interior/main_room) "Qb" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -1380,7 +1380,7 @@ }, /obj/machinery/atmospherics/pipe/simple/visible/supply, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/interior/utility_room) +/area/sector/class_d/wildcat_mining_base/interior/utility_room) "Qm" = ( /obj/structure/fence/door/locked{ dir = 4 @@ -1389,47 +1389,47 @@ icon_state = "4-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Qn" = ( /obj/structure/cable/orange{ icon_state = "1-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Qo" = ( /obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Qw" = ( /obj/item/beartrap, /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "QJ" = ( /obj/structure/fence/cut/large, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "QK" = ( /obj/structure/sandbag, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "QN" = ( /obj/structure/cable/orange{ icon_state = "1-2" }, /obj/structure/sandbag, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "QS" = ( /obj/structure/closet/crate/secure/phoron{ name = "fuel crate"; req_one_access = list(67) }, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "QV" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, @@ -1439,7 +1439,7 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Re" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -1450,7 +1450,7 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "RA" = ( /obj/structure/cable/orange{ icon_state = "1-2" @@ -1459,26 +1459,26 @@ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Sy" = ( /obj/machinery/portable_atmospherics/canister/phoron, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "SQ" = ( /obj/effect/debris/cleanable/blood/splatter, /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "SU" = ( /obj/machinery/power/apc/east_mount, /obj/structure/cable/orange, /turf/simulated/floor/classd/indoors, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Tu" = ( /turf/simulated/mineral/classd, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "TE" = ( /obj/structure/fence/door{ dir = 4 @@ -1487,38 +1487,38 @@ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "TJ" = ( /obj/structure/cable/orange{ icon_state = "1-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "TV" = ( /obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Us" = ( /obj/structure/fence/door{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Uv" = ( /obj/structure/fence/door/locked{ dir = 4 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "UA" = ( /obj/machinery/light/spot{ dir = 1 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "UC" = ( /obj/item/beartrap{ anchored = 1; @@ -1526,35 +1526,35 @@ icon_state = "beartrap1" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/refueling_outbuilding) +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding) "Vi" = ( /obj/structure/fence{ dir = 4 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Vn" = ( /obj/item/beartrap, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Vt" = ( /obj/structure/fence/cut/medium{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "VH" = ( /obj/structure/sign/signnew/secure, /turf/simulated/wall/classd/indoors, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "VI" = ( /obj/structure/cable/orange{ icon_state = "1-4" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Wb" = ( /obj/structure/fence/door/locked{ dir = 4 @@ -1563,44 +1563,44 @@ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "We" = ( /obj/structure/cable/orange{ icon_state = "4-8" }, /obj/effect/debris/cleanable/blood/splatter, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Wl" = ( /obj/structure/closet/crate/mimic/airlock/dangerous, /obj/structure/cable/orange{ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WE" = ( /obj/machinery/power/apc/north_mount, /obj/structure/cable/orange{ icon_state = "0-8" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WG" = ( /obj/structure/closet/crate, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WI" = ( /obj/effect/floor_decal/rust, /obj/random/humanoidremains, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WJ" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "WK" = ( /obj/random/multiple/large_corp_crate/no_weapons, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WM" = ( /obj/structure/closet/crate/mimic/guaranteed, /obj/item/stack/material/wood{ @@ -1610,7 +1610,7 @@ amount = 10 }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "WN" = ( /obj/structure/closet/crate{ name = "materials crate" @@ -1618,56 +1618,56 @@ /obj/item/stack/cable_coil, /obj/item/stack/material/glass, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Xj" = ( /obj/structure/plasticflaps, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Xt" = ( /obj/random/humanoidremains, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Xx" = ( /obj/structure/closet/crate/mimic/guaranteed, /obj/random/maintenance/security, /obj/random/maintenance/security, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Xy" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/maintenance/clean, /obj/random/maintenance/clean, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "XH" = ( /obj/random/multiple/corp_crate/no_weapons, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "XJ" = ( /turf/simulated/mineral/classd, -/area/class_d/unexplored/underground) +/area/sector/class_d/unexplored/underground) "XO" = ( /obj/structure/closet/crate/mimic/dangerous, /obj/random/maintenance/cargo, /obj/random/maintenance/cargo, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "XU" = ( /obj/machinery/floodlight, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "XY" = ( /obj/structure/closet/crate/mimic/dangerous, /obj/random/maintenance/engineering, /obj/random/maintenance/engineering, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Yd" = ( /obj/structure/closet/crate{ name = "MRE crate" }, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_workshop) +/area/sector/class_d/wildcat_mining_base/exterior_workshop) "Yo" = ( /obj/structure/fence{ dir = 4 @@ -1675,17 +1675,17 @@ /obj/effect/floor_decal/rust, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "YD" = ( /obj/machinery/light/spot/flicker{ dir = 1 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "YK" = ( /obj/mob_spawner/alien/medium, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "YL" = ( /obj/effect/gibspawner/human, /obj/item/ammo_casing/spent, @@ -1696,18 +1696,18 @@ /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "YM" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) "Zh" = ( /obj/overmap/entity/visitable/sector/classd, /turf/simulated/mineral/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "ZQ" = ( /turf/simulated/floor/classd, -/area/class_d/wildcat_mining_base/exterior_power) +/area/sector/class_d/wildcat_mining_base/exterior_power) (1,1,1) = {" ok diff --git a/maps/sectors/wasteland_192/wasteland_192-areas.dm b/maps/sectors/wasteland_192/wasteland_192-areas.dm new file mode 100644 index 000000000000..bacb215139e0 --- /dev/null +++ b/maps/sectors/wasteland_192/wasteland_192-areas.dm @@ -0,0 +1,76 @@ +// Class D world areas +/area/sector/class_d + name = "Class D World" + icon_state = "away" + requires_power = 1 + dynamic_lighting = 1 + +/area/sector/class_d/explored + name = "Class D World - Explored (E)" + icon_state = "explored" + allow_worldgen_overwrite = TRUE + +/area/sector/class_d/unexplored + name = "Class D World - Unexplored (UE)" + icon_state = "unexplored" + allow_worldgen_overwrite = TRUE + +/area/sector/class_d/unexplored/underground // Caves would be protected from weather. Still valid for POI generation do to being a dependent of /area/poi_d/unexplored + +/area/sector/class_d/explored/underground + +/area/sector/class_d/wildcat_mining_base + name = "Abandoned Facility" + icon_state = "blue" + requires_power = TRUE + +/area/sector/class_d/wildcat_mining_base/exterior_power + name = "Exterior Power" + +/area/sector/class_d/wildcat_mining_base/refueling_outbuilding + name = "Refueling Outbuilding" + +/area/sector/class_d/wildcat_mining_base/warehouse + name = "Warehouse" + +/area/sector/class_d/wildcat_mining_base/exterior_workshop + name = "Exterior Workshop" + +/area/sector/class_d/wildcat_mining_base/interior + +/area/sector/class_d/wildcat_mining_base/interior/main_room + name = "Main Room" + +/area/sector/class_d/wildcat_mining_base/interior/utility_room + name = "Utility Room" + +/area/sector/class_d/wildcat_mining_base/interior/bunk_room + name = "Bunk Room" + +/area/sector/class_d/wildcat_mining_base/interior/bathroom + name = "Bathroom" + +/area/sector/class_d/POIs/ship + name = "Crashed Ship Fragment" + +/area/sector/class_d/plains + name = "Plains" + +/area/sector/class_d/crater + name = "Crater" + +/area/sector/class_d/Mountain + name = "Mountain" + +/area/sector/class_d/Crevices + name = "Crevices" + +/area/sector/class_d/POIs/solar_farm + name = "Prefab Solar Farm" + +/area/sector/class_d/POIs/landing_pad + name = "Prefab Homestead" + requires_power = FALSE + +/area/sector/class_d/POIs/reactor + name = "Prefab Reactor" diff --git a/maps/sectors/wasteland_192/wasteland_192.dm b/maps/sectors/wasteland_192/wasteland_192.dm index 87131d864cb5..a057f1e4c1ef 100644 --- a/maps/sectors/wasteland_192/wasteland_192.dm +++ b/maps/sectors/wasteland_192/wasteland_192.dm @@ -18,7 +18,7 @@ injections = list( new /datum/map_injection/legacy_seed_submaps( 150, - /area/class_d/unexplored, + /area/sector/class_d/unexplored, /datum/map_template/submap/level_specific/class_d, ), ) diff --git a/maps/submaps/level_specific/class_d/DecoupledEngineD.dmm b/maps/submaps/level_specific/class_d/DecoupledEngineD.dmm index 924ec272138f..73562211d14a 100644 --- a/maps/submaps/level_specific/class_d/DecoupledEngineD.dmm +++ b/maps/submaps/level_specific/class_d/DecoupledEngineD.dmm @@ -4,15 +4,15 @@ /area/template_noop) "ab" = ( /turf/template_noop, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ac" = ( /obj/item/fuel_assembly/deuterium, /turf/template_noop, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ae" = ( /obj/item/extinguisher, /turf/template_noop, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "af" = ( /obj/item/material/shard/phoron, /turf/template_noop, @@ -20,81 +20,81 @@ "ag" = ( /obj/machinery/power/rad_collector, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ah" = ( /obj/item/arrow/rod, /obj/item/stack/material/steel, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ak" = ( /obj/structure/lattice, /obj/structure/girder/displaced, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "al" = ( /obj/projectile/bullet/magnetic/fuelrod, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "am" = ( /obj/item/arrow/rod, /turf/template_noop, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ap" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aq" = ( /obj/structure/girder, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ar" = ( /obj/structure/sign/poi/engineright{ dir = 1 }, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "as" = ( /obj/structure/sign/poi/engineleft{ dir = 1 }, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "au" = ( /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "av" = ( /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aw" = ( /obj/structure/girder, /obj/item/stack/material/steel, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ax" = ( /obj/structure/lattice, /obj/structure/grille/broken, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ay" = ( /obj/effect/floor_decal/rust, /obj/item/stack/material/steel, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "az" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 6 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aA" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aB" = ( /obj/structure/shuttle/engine/heater{ dir = 4 @@ -105,15 +105,15 @@ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aC" = ( /obj/structure/ghost_pod/manual/lost_drone/dogborg, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aD" = ( /obj/structure/grille, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aE" = ( /obj/structure/grille, /obj/structure/window/reinforced{ @@ -121,31 +121,31 @@ }, /obj/structure/window/reinforced, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aF" = ( /obj/structure/sign/warning/radioactive{ dir = 8 }, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aG" = ( /obj/machinery/fusion_fuel_compressor, /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/cobweb, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aH" = ( /obj/machinery/fusion_fuel_injector/mapped, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aI" = ( /obj/effect/debris/cleanable/blood/oil/streak{ amount = 0 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aJ" = ( /obj/machinery/power/rad_collector, /obj/effect/floor_decal/rust, @@ -153,14 +153,14 @@ dir = 9 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aK" = ( /obj/effect/floor_decal/rust, /obj/effect/floor_decal/industrial/warning{ dir = 5 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aL" = ( /obj/structure/grille/broken, /obj/structure/window/phoronreinforced{ @@ -169,12 +169,12 @@ /obj/item/material/shard/phoron, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aM" = ( /obj/machinery/atmospherics/pipe/manifold4w/visible, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aN" = ( /obj/structure/shuttle/engine/heater{ dir = 4 @@ -184,25 +184,25 @@ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aO" = ( /obj/structure/shuttle/engine/propulsion{ dir = 4; icon_state = "propulsion_r" }, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aP" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aQ" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Engine Access"; req_one_access = list(11) }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aR" = ( /obj/structure/closet/crate/oldreactor{ anchored = 1 @@ -212,14 +212,14 @@ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aS" = ( /obj/structure/closet/crate/oldreactor{ anchored = 1 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aT" = ( /obj/item/poi/brokenoldreactor{ anchored = 1 @@ -229,12 +229,12 @@ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aU" = ( /obj/machinery/atmospherics/pipe/simple/visible, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aV" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ @@ -244,31 +244,31 @@ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aW" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 5 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aX" = ( /obj/structure/shuttle/engine/router, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "aZ" = ( /obj/item/stack/material/steel, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "ba" = ( /obj/item/stack/rods, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bb" = ( /obj/structure/grille, /obj/structure/window/reinforced, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bc" = ( /obj/structure/grille, /obj/structure/window/reinforced, @@ -279,17 +279,17 @@ dir = 1 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bd" = ( /obj/machinery/atmospherics/pipe/tank/carbon_dioxide, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "be" = ( /obj/effect/floor_decal/rust, /obj/projectile/bullet/magnetic/fuelrod, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bf" = ( /obj/machinery/power/rad_collector, /obj/structure/window/phoronreinforced, @@ -301,14 +301,14 @@ dir = 10 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bg" = ( /obj/machinery/power/rad_collector, /obj/structure/window/phoronreinforced, /obj/effect/floor_decal/rust, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bh" = ( /obj/machinery/power/rad_collector, /obj/structure/window/phoronreinforced{ @@ -320,32 +320,32 @@ dir = 6 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bi" = ( /obj/structure/shuttle/engine/propulsion{ dir = 4 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bj" = ( /obj/machinery/atmospherics/tvalve/digital{ dir = 8 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bk" = ( /obj/machinery/atmospherics/component/binary/pump{ dir = 8 }, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bl" = ( /obj/machinery/atmospherics/pipe/manifold/visible, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bm" = ( /obj/machinery/atmospherics/pipe/simple/visible{ dir = 4 @@ -359,34 +359,34 @@ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bn" = ( /obj/structure/shuttle/engine/propulsion{ dir = 4; icon_state = "propulsion_l" }, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bo" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/crate/radiation, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bp" = ( /obj/effect/debris/cleanable/blood/oil, /obj/effect/floor_decal/rust, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bq" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /obj/item/rcd, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "br" = ( /obj/structure/sign/warning/radioactive, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bs" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ @@ -397,7 +397,7 @@ }, /obj/structure/window/phoronreinforced, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bt" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ @@ -405,7 +405,7 @@ }, /obj/structure/window/phoronreinforced, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bu" = ( /obj/structure/grille, /obj/structure/window/phoronreinforced{ @@ -416,39 +416,39 @@ }, /obj/structure/window/phoronreinforced, /turf/simulated/floor/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bv" = ( /obj/structure/sign/poi/engineleft, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bw" = ( /obj/structure/sign/poi/engineright, /turf/simulated/wall/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bx" = ( /obj/structure/girder, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "by" = ( /obj/structure/girder/displaced, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bA" = ( /obj/item/arrow/rod, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bB" = ( /obj/item/fuel_assembly/deuterium, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bC" = ( /obj/item/material/shard/phoron, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "bE" = ( /obj/mob_spawner/alien/medium, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "gU" = ( /obj/item/fuel_assembly/deuterium, /turf/template_noop, @@ -456,10 +456,10 @@ "sU" = ( /obj/structure/lattice, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) "WD" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/ship) +/area/sector/class_d/POIs/ship) (1,1,1) = {" aa diff --git a/maps/submaps/level_specific/class_d/EpodD.dmm b/maps/submaps/level_specific/class_d/EpodD.dmm index ca95160828d6..1216797de282 100644 --- a/maps/submaps/level_specific/class_d/EpodD.dmm +++ b/maps/submaps/level_specific/class_d/EpodD.dmm @@ -4,11 +4,11 @@ /area/template_noop) "e" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/structure/inflatable/door, /turf/simulated/shuttle/floor, -/area/class_d/explored) +/area/sector/class_d/explored) "p" = ( /obj/structure/bed/chair{ dir = 4 @@ -21,37 +21,37 @@ pixel_y = 28 }, /turf/simulated/shuttle/floor, -/area/class_d/explored) +/area/sector/class_d/explored) "r" = ( /obj/structure/door_assembly{ icon_state = "door_as_gext3" }, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "u" = ( /obj/item/tool/crowbar/red, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "v" = ( /obj/structure/shuttle/engine/propulsion/burst{ dir = 8 }, /turf/simulated/shuttle/wall, -/area/class_d/explored) +/area/sector/class_d/explored) "w" = ( /obj/structure/bed/chair{ dir = 4 }, /turf/simulated/shuttle/floor, -/area/class_d/explored) +/area/sector/class_d/explored) "z" = ( /obj/structure/grille, /obj/structure/shuttle/window, /turf/simulated/shuttle/floor, -/area/class_d/explored) +/area/sector/class_d/explored) "C" = ( /turf/simulated/shuttle/wall, -/area/class_d/explored) +/area/sector/class_d/explored) "D" = ( /obj/random/humanoidremains, /obj/item/clothing/suit/space/emergency{ @@ -63,7 +63,7 @@ /obj/item/tank/emergency/oxygen, /obj/item/clothing/mask/breath, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "K" = ( /obj/random/humanoidremains, /obj/structure/bed/chair{ @@ -71,7 +71,7 @@ }, /obj/effect/debris/cleanable/blood, /turf/simulated/shuttle/floor, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm b/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm index 2cdce55d3610..10ce2e4e4566 100644 --- a/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm +++ b/maps/submaps/level_specific/class_d/Possesed_mech_cave.dmm @@ -2,25 +2,25 @@ "aF" = ( /obj/item/ammo_casing/spent, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "bZ" = ( /obj/machinery/floodlight, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "cj" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "dN" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "ea" = ( /obj/item/ammo_casing/spent, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "ep" = ( /obj/item/beartrap{ anchored = 1; @@ -28,20 +28,20 @@ icon_state = "beartrap1" }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "et" = ( /obj/structure/table/steel_reinforced, /obj/item/storage/firstaid/combat, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "eY" = ( /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "gV" = ( /obj/structure/closet/crate/secure/loot, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "jz" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, @@ -49,119 +49,119 @@ amount = 10 }, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "jW" = ( /obj/structure/fence/door/opened{ dir = 4 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "jX" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/structure/lattice, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "lC" = ( /obj/structure/closet/crate/miningcar, /obj/random/plushielarge, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "lJ" = ( /obj/item/ammo_casing/spent, /obj/structure/lattice, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "nS" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "oi" = ( /obj/structure/table/rack, /obj/random/multiple/underdark/miningdrills, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "sB" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "sP" = ( /obj/item/ammo_casing/spent, /obj/structure/foamedmetal, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "sX" = ( /obj/effect/gibspawner/human, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "tb" = ( /obj/item/vehicle_module/tool/drill/diamonddrill, /obj/structure/table/rack, /obj/item/gps/survival/on, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "uy" = ( /obj/structure/fence/cut/large, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "vI" = ( /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "xj" = ( /obj/machinery/mining/drill{ drill_id = 666 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "yh" = ( /obj/structure/fence/cut/medium{ dir = 8 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "yo" = ( /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "yC" = ( /obj/structure/closet/crate, /obj/item/clothing/suit/sexyminer, /obj/item/clothing/suit/sexyminer, /obj/item/clothing/suit/sexyminer, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "AP" = ( /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "AR" = ( /obj/item/beartrap, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "CE" = ( /obj/item/stack/material/wood{ amount = 10 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Ew" = ( /obj/effect/debris/cleanable/blood/xeno, /obj/item/beartrap, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "EC" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "FG" = ( /obj/structure/ore_box, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Gl" = ( /obj/structure/table/rack, /obj/item/ammo_casing/a12g/flare, @@ -172,130 +172,130 @@ /obj/item/ammo_casing/a12g/flare, /obj/item/gun/projectile/ballistic/shotgun/flare, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "GP" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Ia" = ( /obj/structure/fence/cut/large{ dir = 4 }, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "IN" = ( /obj/structure/table/steel_reinforced, /obj/item/toy/figure/miner, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Jc" = ( /obj/effect/debris/cleanable/blood/xeno, /obj/structure/lattice, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Ky" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /mob/living/simple_mob/mechanical/mecha/ripley/pirate/last_stand_merc, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "KW" = ( /obj/structure/table/steel_reinforced, /obj/item/storage/box/flare, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Ot" = ( /obj/structure/barricade, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Pz" = ( /obj/machinery/mining/brace, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "PI" = ( /obj/structure/table/steel_reinforced, /obj/item/storage/firstaid/surgery, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "PU" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Qd" = ( /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Rm" = ( /obj/structure/barricade, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Ru" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Sg" = ( /obj/item/ammo_casing/spent, /obj/effect/debris/cleanable/blood/xeno, /obj/structure/lattice, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Sl" = ( /obj/structure/closet/crate/miningcar, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "To" = ( /obj/item/ammo_casing/spent, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "TN" = ( /obj/structure/fence/corner, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Vr" = ( /obj/structure/foamedmetal, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "VV" = ( /obj/random/outcrop, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "WS" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "WZ" = ( /obj/item/beartrap, /obj/effect/debris/cleanable/blood/xeno, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "XC" = ( /obj/structure/lattice, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "XI" = ( /obj/structure/sign/signnew/danger, /turf/simulated/mineral/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Yl" = ( /obj/effect/gibspawner/robot, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Yp" = ( /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /obj/item/ammo_casing/spent, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "Zr" = ( /obj/machinery/floodlight, /turf/simulated/floor/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) "ZU" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored/underground) +/area/sector/class_d/explored/underground) (1,1,1) = {" dN diff --git a/maps/submaps/level_specific/class_d/SupplyDrop1D.dmm b/maps/submaps/level_specific/class_d/SupplyDrop1D.dmm index 6f5af0f53a40..24b10d225e84 100644 --- a/maps/submaps/level_specific/class_d/SupplyDrop1D.dmm +++ b/maps/submaps/level_specific/class_d/SupplyDrop1D.dmm @@ -1,28 +1,28 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/mineral/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "b" = ( /turf/template_noop, /area/template_noop) "d" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/droppod_door{ dir = 1 }, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /turf/simulated/floor/reinforced, -/area/class_d/explored) +/area/sector/class_d/explored) "g" = ( /obj/structure/droppod_door{ dir = 8 }, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/structure/closet/crate, /obj/item/gun/projectile/energy/stunrevolver, @@ -40,20 +40,20 @@ /obj/item/flame/lighter/random, /obj/item/gps, /turf/simulated/floor/reinforced, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/structure/droppod_door{ dir = 4 }, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "j" = ( /obj/structure/droppod_door, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "k" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/SupplyDrop2D.dmm b/maps/submaps/level_specific/class_d/SupplyDrop2D.dmm index f2d9663a1e31..2d1e0d00e938 100644 --- a/maps/submaps/level_specific/class_d/SupplyDrop2D.dmm +++ b/maps/submaps/level_specific/class_d/SupplyDrop2D.dmm @@ -4,43 +4,43 @@ /area/template_noop) "b" = ( /turf/template_noop, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/structure/girder/displaced, /turf/template_noop, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /turf/simulated/wall/titanium, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "g" = ( /obj/structure/loot_pile/maint/junk, /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/item/flashlight, /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/structure/loot_pile/maint/technical, /obj/item/cell/basic/tier_3/weapon/empty, /obj/item/cell/basic/tier_3/weapon/empty, /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "j" = ( /obj/structure/loot_pile/maint/technical, /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "k" = ( /obj/structure/girder, /turf/template_noop, -/area/class_d/explored) +/area/sector/class_d/explored) "m" = ( /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/classd, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/broken_reactor_D.dmm b/maps/submaps/level_specific/class_d/broken_reactor_D.dmm index bd2263fd42df..57677f577743 100644 --- a/maps/submaps/level_specific/class_d/broken_reactor_D.dmm +++ b/maps/submaps/level_specific/class_d/broken_reactor_D.dmm @@ -1,54 +1,54 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/template_noop, -/area/class_d/explored) +/area/sector/class_d/explored) "b" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /obj/machinery/door/airlock/glass/engineering, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/sign/warning/radioactive, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /obj/structure/sign/warning/radioactive, /obj/effect/map_effect/interval/sound_emitter/geiger/high, /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "g" = ( /obj/item/geiger_counter, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/effect/map_effect/radiation_emitter/strong, /obj/item/poi/brokenoldreactor, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/effect/map_effect/interval/sound_emitter/geiger/ext, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "n" = ( /obj/random/tool/power, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "r" = ( /obj/mob_spawner/drone_spawner, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/cave1D.dmm b/maps/submaps/level_specific/class_d/cave1D.dmm index 39a28b2a5285..74a94609a174 100644 --- a/maps/submaps/level_specific/class_d/cave1D.dmm +++ b/maps/submaps/level_specific/class_d/cave1D.dmm @@ -5,37 +5,37 @@ "q" = ( /obj/random/roguemineloot, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "s" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "u" = ( /obj/item/storage/bag/ore, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "K" = ( /obj/random/obstruction, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "M" = ( /obj/random/outcrop, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "N" = ( /obj/structure/closet/crate/miningcar, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "R" = ( /obj/item/flashlight/lantern, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "S" = ( /obj/random/obstruction, /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "W" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/cave2D.dmm b/maps/submaps/level_specific/class_d/cave2D.dmm index 4a4ff4cca596..0b1867971086 100644 --- a/maps/submaps/level_specific/class_d/cave2D.dmm +++ b/maps/submaps/level_specific/class_d/cave2D.dmm @@ -6,155 +6,155 @@ /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/drone, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/structure/alien/weeds, /obj/random/multiple/minevault, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "j" = ( /obj/structure/alien/weeds, /obj/random/multiple/voidsuit/mining, /obj/random/humanoidremains, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "m" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "n" = ( /obj/structure/alien/weeds, /obj/random/tetheraid, /obj/item/gun/projectile/energy/phasegun/pistol, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "p" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "q" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "r" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "s" = ( /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "t" = ( /obj/structure/simple_door/resin, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "w" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "y" = ( /obj/structure/alien/weeds, /obj/structure/alien/resin/wall, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "A" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/acid_spitter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "B" = ( /obj/structure/alien/weeds, /obj/item/storage/secure/briefcase/money, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "D" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /obj/random/humanoidremains, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "E" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /obj/random/energy, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "H" = ( /obj/structure/alien/weeds, /obj/random/trash_pile, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "I" = ( /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/sprinter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "K" = ( /obj/structure/alien/weeds, /obj/random/medical/pillbottle, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "L" = ( /obj/structure/alien/weeds, /obj/random/humanoidremains, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "M" = ( /obj/structure/alien/resin/wall, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "O" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /obj/random/tetheraid, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "P" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Q" = ( /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/vanguard, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "R" = ( /obj/structure/alien/weeds, /obj/random/energy, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "S" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/neurotoxin_spitter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "T" = ( /obj/structure/alien/resin/wall, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "W" = ( /obj/structure/alien/weeds, /obj/random/medical, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "X" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds/node, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Z" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds, /obj/structure/simple_door/resin, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/cave3D.dmm b/maps/submaps/level_specific/class_d/cave3D.dmm index 033584b47acd..a017a3cc1ac7 100644 --- a/maps/submaps/level_specific/class_d/cave3D.dmm +++ b/maps/submaps/level_specific/class_d/cave3D.dmm @@ -4,28 +4,28 @@ /area/template_noop) "c" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "n" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/drinkbottle, /obj/random/drinkbottle, /obj/random/drinkbottle, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "p" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/ammo_all, /obj/random/ammo_all, /obj/random/ammo_all, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "q" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/medical/pillbottle, /obj/random/medical/pillbottle, /obj/random/medical/pillbottle, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "r" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/cash, @@ -34,14 +34,14 @@ /obj/random/cash, /obj/random/cash, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "z" = ( /obj/random/humanoidremains, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "T" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/drone_hive_D.dmm b/maps/submaps/level_specific/class_d/drone_hive_D.dmm index d77238c88b62..4b361a59a951 100644 --- a/maps/submaps/level_specific/class_d/drone_hive_D.dmm +++ b/maps/submaps/level_specific/class_d/drone_hive_D.dmm @@ -1,48 +1,48 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /turf/template_noop, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "d" = ( /obj/effect/decal/remains/tajaran, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "e" = ( /obj/effect/decal/remains/tajaran, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "f" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "g" = ( /obj/effect/decal/remains/deer, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "h" = ( /obj/structure/ore_box, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "i" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "l" = ( /obj/mob_spawner/drone_spawner, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "m" = ( /obj/structure/barricade, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "n" = ( /obj/machinery/door/airlock/multi_tile/glass, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "v" = ( /obj/machinery/drone_fabricator/derelict, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) "B" = ( /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/POIs/reactor) +/area/sector/class_d/POIs/reactor) (1,1,1) = {" b diff --git a/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm b/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm index 730cef6412c4..5ca4f86f0bae 100644 --- a/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm +++ b/maps/submaps/level_specific/class_d/hiddenbunkerD.dmm @@ -4,85 +4,85 @@ dir = 1 }, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "bD" = ( /obj/machinery/door/airlock, /turf/simulated/floor/tiled/white, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "da" = ( /turf/simulated/mineral/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "dI" = ( /obj/random/trash_pile, /obj/structure/closet/cabinet, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "ga" = ( /obj/item/stool/padded, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "gP" = ( /obj/machinery/vending/cola, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "gT" = ( /obj/random/trash, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "gW" = ( /obj/machinery/door/airlock, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "hw" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 }, /turf/simulated/wall, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "hZ" = ( /obj/machinery/atmospherics/component/unary/vent_pump/high_volume, /obj/map_helper/airlock/atmos/chamber_pump, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "is" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "js" = ( /obj/structure/sign/warning{ pixel_x = 32 }, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "jx" = ( /obj/random/trash_pile, /turf/simulated/floor/airless, -/area/class_d/explored) +/area/sector/class_d/explored) "jF" = ( /obj/structure/table/reinforced, /obj/item/storage/box/shotgunshells/large, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "jG" = ( /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "kp" = ( /obj/machinery/vending/boozeomat, /turf/simulated/wall, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "kP" = ( /obj/machinery/light, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "mn" = ( /turf/template_noop, /area/template_noop) "no" = ( /obj/structure/table/marble, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "nC" = ( /obj/machinery/door/airlock/external/glass{ frequency = 804; @@ -92,62 +92,62 @@ }, /obj/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "pq" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 4 }, /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "pJ" = ( /obj/machinery/vending/snack, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "qa" = ( /obj/structure/toilet{ pixel_y = 15 }, /turf/simulated/floor/tiled/white, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "qm" = ( /obj/structure/closet/secure_closet/freezer/meat, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "rc" = ( /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled/white, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "uD" = ( /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "vP" = ( /obj/structure/table/marble, /obj/item/reagent_containers/food/condiment/small/saltshaker, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "vX" = ( /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/classd/indoors, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "wt" = ( /obj/structure/table/reinforced, /obj/item/storage/belt/security/tactical/bandolier, /obj/item/storage/belt/security/tactical/bandolier, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "xq" = ( /obj/structure/closet/gimmick/tacticool, /obj/item/material/knife/tacknife, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "yw" = ( /obj/structure/table/reinforced, /obj/item/ammo_magazine/a45/tommy, /obj/item/ammo_magazine/a45/tommy, /obj/item/ammo_magazine/a45/tommy, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "zH" = ( /obj/machinery/appliance/cooker/fryer, /obj/item/reagent_containers/cooking_container/fryer, @@ -155,7 +155,7 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "zZ" = ( /obj/machinery/access_button{ frequency = 804; @@ -165,45 +165,45 @@ /turf/simulated/wall{ can_open = 1 }, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Ac" = ( /obj/machinery/door/airlock/freezer, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "As" = ( /obj/structure/curtain/open/shower, /obj/machinery/shower{ pixel_y = 16 }, /turf/simulated/floor/tiled/white, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "BE" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "CA" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/clotting, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "CG" = ( /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Df" = ( /obj/structure/bed, /obj/item/bedsheet, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Di" = ( /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "DS" = ( /turf/template_noop, -/area/class_d/unexplored) +/area/sector/class_d/unexplored) "Ex" = ( /obj/machinery/embedded_controller/radio/airlock/docking_port{ frequency = 804; @@ -213,89 +213,89 @@ }, /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "FF" = ( /obj/structure/table/reinforced, /obj/item/storage/firstaid/combat, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Hi" = ( /obj/structure/closet/crate/freezer/rations, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "HQ" = ( /obj/machinery/door/airlock/vault/bolted, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "HS" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "HX" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Ij" = ( /obj/random/trash, /obj/random/trash, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Jh" = ( /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "JG" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "KB" = ( /turf/simulated/wall, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "LA" = ( /turf/simulated/wall/r_wall, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "LW" = ( /obj/machinery/atmospherics/portables_connector{ dir = 1 }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Mc" = ( /obj/structure/sign/warning{ pixel_x = 32 }, /obj/random/trash, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Nd" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 8 }, /turf/simulated/wall, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "NS" = ( /obj/machinery/appliance/cooker/oven, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Ot" = ( /obj/structure/table/standard{ name = "plastic table frame" }, /obj/machinery/microwave, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Pc" = ( /obj/structure/table/rack/shelf, /obj/item/storage/toolbox/syndicate, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Ph" = ( /obj/machinery/vending/dinnerware, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "PI" = ( /turf/simulated/wall{ can_open = 1 }, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "QW" = ( /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 @@ -305,21 +305,21 @@ }, /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "RE" = ( /obj/structure/closet/secure_closet/freezer/fridge, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Tf" = ( /mob/living/simple_mob/humanoid/merc/melee/sword/space, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "TB" = ( /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "TG" = ( /obj/machinery/access_button{ frequency = 804; @@ -327,7 +327,7 @@ pixel_y = 25 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "TI" = ( /obj/structure/table/reinforced, /obj/item/gun/projectile/ballistic/automatic/tommygun, @@ -335,18 +335,18 @@ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Us" = ( /mob/living/simple_mob/humanoid/merc/ranged/space/heavy, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Vq" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/structure/table/rack/shelf, /obj/item/clothing/gloves/yellow, /obj/item/clothing/gloves/yellow, /turf/simulated/floor/plating, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "VY" = ( /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ dir = 8; @@ -362,11 +362,11 @@ pixel_y = 6 }, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Wd" = ( /obj/random/trash, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Xh" = ( /obj/structure/sink{ dir = 8; @@ -376,7 +376,7 @@ pixel_x = -30 }, /turf/simulated/floor/tiled/white, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "XL" = ( /obj/structure/table/reinforced, /obj/random/ammo, @@ -385,11 +385,11 @@ /obj/random/ammo, /obj/random/ammo, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "XO" = ( /obj/random/trash_pile, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "XU" = ( /obj/machinery/door/airlock/external/glass{ frequency = 804; @@ -402,17 +402,17 @@ }, /obj/map_helper/airlock/door/int_door, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Ys" = ( /obj/structure/bed, /obj/structure/bed, /obj/item/bedsheet, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "YM" = ( /mob/living/simple_mob/humanoid/merc/ranged/space/shotgun/auto, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) "Zm" = ( /obj/machinery/door/airlock/external/glass{ frequency = 804; @@ -422,7 +422,7 @@ }, /obj/map_helper/airlock/door/ext_door, /turf/simulated/floor/tiled, -/area/class_d/Mountain) +/area/sector/class_d/Mountain) (1,1,1) = {" mn diff --git a/maps/submaps/level_specific/class_d/landing_padD.dmm b/maps/submaps/level_specific/class_d/landing_padD.dmm index 444dcf6d2845..22ca2d708a5c 100644 --- a/maps/submaps/level_specific/class_d/landing_padD.dmm +++ b/maps/submaps/level_specific/class_d/landing_padD.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/wall, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "b" = ( /obj/machinery/embedded_controller/radio/airlock/docking_port{ frequency = 1998; @@ -16,7 +16,7 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "d" = ( /obj/machinery/door/airlock/glass_external/public{ frequency = 1998; @@ -26,13 +26,13 @@ }, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "e" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 6 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "f" = ( /obj/machinery/door/airlock/glass_external/public{ frequency = 1998; @@ -41,7 +41,7 @@ locked = 1 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "g" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -51,7 +51,7 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "h" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard{ @@ -61,7 +61,7 @@ pixel_y = 6 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "i" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/loot_pile/surface/medicine_cabinet/fresh{ @@ -71,22 +71,22 @@ pixel_y = 25 }, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "k" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/toolcloset, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "l" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 9 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "m" = ( /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "n" = ( /turf/template_noop, /area/template_noop) @@ -94,27 +94,27 @@ /obj/effect/debris/cleanable/dirt, /obj/structure/bed/chair/comfy/black, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "p" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "q" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "r" = ( /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "s" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock, /turf/simulated/floor/wood, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "t" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack, @@ -123,7 +123,7 @@ /obj/item/tank/oxygen, /obj/item/tank/oxygen, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "u" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/cabinet, @@ -138,32 +138,32 @@ /obj/item/ammo_magazine/a7_62mm/clip, /obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "v" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "w" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "x" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 }, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "y" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 5 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "z" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "A" = ( /obj/machinery/airlock_sensor{ frequency = 1998; @@ -177,7 +177,7 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "B" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ @@ -187,28 +187,28 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "C" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "D" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "E" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "F" = ( /obj/effect/wingrille_spawn/reinforced, /turf/simulated/wall, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "H" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/crate/freezer/rations, @@ -225,19 +225,19 @@ /obj/item/reagent_containers/food/snacks/liquid, /obj/item/reagent_containers/food/snacks/liquid, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "I" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/suit_storage_unit/standard_unit, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "J" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed/chair/comfy/black{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "K" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/curtain/open/shower, @@ -248,18 +248,18 @@ dir = 8 }, /turf/simulated/floor/tiled/kafel_full, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "L" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "M" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 10 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "N" = ( /obj/machinery/door/airlock/glass_external/public{ frequency = 1998; @@ -268,44 +268,44 @@ locked = 1 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "P" = ( /obj/machinery/floodlight, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "Q" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "R" = ( /obj/effect/floor_decal/techfloor/orange, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "S" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "T" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "U" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, /turf/simulated/floor/tiled/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "V" = ( /obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/outdoors/classd, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "W" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/portables_connector{ @@ -313,7 +313,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/plating, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "X" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard{ @@ -324,7 +324,7 @@ name = "Dusty Flier" }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "Y" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack, @@ -333,7 +333,7 @@ /obj/item/clothing/head/helmet/space, /obj/item/clothing/suit/space, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "Z" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed/double, @@ -342,7 +342,7 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) (1,1,1) = {" n diff --git a/maps/submaps/level_specific/class_d/matdropD.dmm b/maps/submaps/level_specific/class_d/matdropD.dmm index d84c56153736..2cad9b33a641 100644 --- a/maps/submaps/level_specific/class_d/matdropD.dmm +++ b/maps/submaps/level_specific/class_d/matdropD.dmm @@ -7,7 +7,7 @@ req_one_access = null }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "c" = ( /obj/structure/bed/chair{ dir = 4 @@ -16,21 +16,21 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "d" = ( /obj/mob_spawner/drone_spawner, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "g" = ( /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "i" = ( /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "k" = ( /obj/machinery/drone_fabricator/derelict, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "l" = ( /obj/structure/sink{ dir = 8; @@ -40,27 +40,27 @@ pixel_x = -30 }, /turf/simulated/floor/tiled/white, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "m" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "n" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "p" = ( /obj/machinery/door/airlock/maintenance/int, /turf/simulated/floor/tiled/white, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "q" = ( /obj/machinery/door/blast/shutters{ dir = 8; id = "matdropcargo" }, /turf/simulated/floor, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "r" = ( /obj/structure/closet/crate, /obj/machinery/light{ @@ -70,27 +70,27 @@ /obj/item/stack/cable_coil, /obj/item/stack/cable_coil, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "t" = ( /obj/structure/closet/crate, /obj/fiftyspawner/wood, /obj/fiftyspawner/wood, /obj/fiftyspawner/wood, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "u" = ( /obj/machinery/door/airlock/maintenance/cargo{ req_one_access = null }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "w" = ( /obj/structure/closet/crate, /obj/item/airlock_electronics, /obj/item/airlock_electronics, /obj/item/airlock_electronics, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "x" = ( /obj/structure/window/reinforced/full, /obj/structure/window/reinforced{ @@ -98,29 +98,29 @@ }, /obj/structure/grille, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "B" = ( /obj/structure/closet/crate, /obj/fiftyspawner/steel, /obj/fiftyspawner/steel, /obj/fiftyspawner/steel, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "D" = ( /obj/machinery/power/port_gen/pacman, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "E" = ( /obj/machinery/door/airlock/maintenance/int, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "F" = ( /obj/structure/table/standard, /obj/random/tech_supply, /obj/random/tech_supply, /obj/random/tech_supply, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "H" = ( /obj/machinery/door/airlock/glass_external{ frequency = null; @@ -129,37 +129,37 @@ locked = 1 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "J" = ( /obj/item/modular_computer/console{ dir = 8; icon_state = "broken" }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "M" = ( /obj/structure/closet/crate, /obj/fiftyspawner/phoron, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "N" = ( /turf/simulated/wall, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "P" = ( /obj/structure/bed, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "R" = ( /obj/machinery/light/small, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "S" = ( /obj/machinery/button/remote/airlock/survival_pod{ id = "matdrop"; pixel_y = 25 }, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "T" = ( /obj/machinery/button/remote/airlock/survival_pod{ dir = 4; @@ -169,7 +169,7 @@ /obj/structure/closet/crate, /obj/fiftyspawner/rods, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "V" = ( /obj/machinery/door/blast/shutters{ dir = 8; @@ -180,14 +180,14 @@ id = "matdropcargo" }, /turf/simulated/floor, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "W" = ( /obj/structure/closet/crate, /obj/fiftyspawner/rglass, /obj/fiftyspawner/rglass, /obj/fiftyspawner/rglass, /turf/simulated/floor/tiled, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "X" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, @@ -195,7 +195,7 @@ dir = 4 }, /turf/simulated/floor, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) "Y" = ( /obj/structure/toilet{ pixel_y = 15 @@ -204,7 +204,7 @@ pixel_x = -30 }, /turf/simulated/floor/tiled/white, -/area/class_d/POIs/landing_pad) +/area/sector/class_d/POIs/landing_pad) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/mechwreckD.dmm b/maps/submaps/level_specific/class_d/mechwreckD.dmm index 51f3262a6440..6ab3e725b43c 100644 --- a/maps/submaps/level_specific/class_d/mechwreckD.dmm +++ b/maps/submaps/level_specific/class_d/mechwreckD.dmm @@ -4,13 +4,13 @@ /area/template_noop) "c" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/effect/decal/mecha_wreckage/ripley, /obj/random/ammo_all, /obj/random/tool/alien, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/meteor.dmm b/maps/submaps/level_specific/class_d/meteor.dmm index 63b4476f1e65..159ec77cf6cc 100644 --- a/maps/submaps/level_specific/class_d/meteor.dmm +++ b/maps/submaps/level_specific/class_d/meteor.dmm @@ -5,18 +5,18 @@ "o" = ( /obj/random/outcrop, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "u" = ( /obj/structure/meteorite, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "w" = ( /obj/effect/floor_decal/asteroid, /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "Y" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/solar_farmD.dmm b/maps/submaps/level_specific/class_d/solar_farmD.dmm index 52ef611a6735..2a7d6efa5752 100644 --- a/maps/submaps/level_specific/class_d/solar_farmD.dmm +++ b/maps/submaps/level_specific/class_d/solar_farmD.dmm @@ -1,23 +1,23 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/classd, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/plating, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "e" = ( /obj/structure/fence/door, /turf/simulated/floor/plating, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "g" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "h" = ( /obj/structure/cable{ icon_state = "2-4" @@ -29,11 +29,11 @@ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "j" = ( /obj/machinery/power/solar_control, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "k" = ( /obj/structure/cable{ icon_state = "1-8" @@ -42,32 +42,32 @@ icon_state = "1-4" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "l" = ( /obj/structure/fence/door/opened{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "m" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ dir = 4 }, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "n" = ( /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "o" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "p" = ( /obj/structure/cable{ icon_state = "2-4" @@ -80,7 +80,7 @@ }, /obj/mob_spawner/drone_spawner, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "q" = ( /obj/machinery/power/terminal{ dir = 1 @@ -93,7 +93,7 @@ }, /obj/mob_spawner/drone_spawner, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "s" = ( /obj/structure/cable{ icon_state = "1-8" @@ -102,10 +102,10 @@ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "t" = ( /turf/simulated/wall/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "u" = ( /turf/template_noop, /area/template_noop) @@ -117,7 +117,7 @@ dir = 8 }, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "x" = ( /obj/structure/cable{ icon_state = "2-4" @@ -126,29 +126,29 @@ icon_state = "2-8" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "y" = ( /obj/structure/fence/cut/large{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "z" = ( /obj/machinery/power/solar, /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "B" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "C" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "E" = ( /obj/structure/closet/secure_closet/engineering_electrical{ icon_state = "secureengoff"; @@ -157,7 +157,7 @@ /obj/random/tool/alien, /obj/random/tool/alien, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "F" = ( /obj/structure/cable{ icon_state = "2-8" @@ -166,26 +166,26 @@ icon_state = "1-8" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "G" = ( /obj/structure/fence{ dir = 1 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "I" = ( /obj/mob_spawner/drone_spawner, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "K" = ( /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "L" = ( /obj/structure/fence/door/opened{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "N" = ( /obj/structure/cable{ icon_state = "1-4" @@ -194,7 +194,7 @@ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "O" = ( /obj/structure/cable{ icon_state = "1-2" @@ -203,7 +203,7 @@ req_one_access = null }, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "R" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ @@ -213,27 +213,27 @@ icon_state = "4-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "S" = ( /obj/machinery/power/solar, /obj/structure/cable{ dir = 4 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "T" = ( /obj/machinery/power/tracker, /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "U" = ( /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "V" = ( /obj/structure/cable{ icon_state = "1-8" @@ -245,17 +245,17 @@ icon_state = "1-2" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "W" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/wall/classd/indoors, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "Y" = ( /obj/structure/fence/door, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) "Z" = ( /obj/structure/cable{ icon_state = "2-8" @@ -267,7 +267,7 @@ icon_state = "4-8" }, /turf/simulated/floor/classd, -/area/class_d/POIs/solar_farm) +/area/sector/class_d/POIs/solar_farm) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/vault1D.dmm b/maps/submaps/level_specific/class_d/vault1D.dmm index 4a165bd00df7..1a51cc28ca6e 100644 --- a/maps/submaps/level_specific/class_d/vault1D.dmm +++ b/maps/submaps/level_specific/class_d/vault1D.dmm @@ -1,13 +1,13 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /turf/template_noop, /area/template_noop) "d" = ( /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/crate/mimic/cointoss, @@ -16,17 +16,17 @@ /obj/random/medical/lite, /obj/random/medical/lite, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/crate/mimic/safe, /obj/random/energy, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "N" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" b diff --git a/maps/submaps/level_specific/class_d/vault2D.dmm b/maps/submaps/level_specific/class_d/vault2D.dmm index df88a7848323..9eee04e78955 100644 --- a/maps/submaps/level_specific/class_d/vault2D.dmm +++ b/maps/submaps/level_specific/class_d/vault2D.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /turf/simulated/wall/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /obj/structure/closet/crate/mimic/dangerous, /obj/effect/debris/cleanable/dirt, @@ -11,11 +11,11 @@ /obj/random/roguemineloot, /obj/random/roguemineloot, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/closet/crate/mimic, /obj/effect/debris/cleanable/dirt, @@ -23,17 +23,17 @@ /obj/random/roguemineloot, /obj/random/roguemineloot, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /obj/structure/simple_door/silver, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/effect/debris/cleanable/dirt, /obj/random/junk, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" b diff --git a/maps/submaps/level_specific/class_d/vault3D.dmm b/maps/submaps/level_specific/class_d/vault3D.dmm index 5ebcf6b5fd9b..ee2dd4cef14c 100644 --- a/maps/submaps/level_specific/class_d/vault3D.dmm +++ b/maps/submaps/level_specific/class_d/vault3D.dmm @@ -4,20 +4,20 @@ /area/template_noop) "c" = ( /turf/simulated/wall/r_wall, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/effect/debris/cleanable/dirt, /obj/fiftyspawner/mhydrogen, /turf/simulated/floor/tiled/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "w" = ( /turf/simulated/mineral/vacuum, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/vault4D.dmm b/maps/submaps/level_specific/class_d/vault4D.dmm index 7edd9a893c8c..34dc819607fc 100644 --- a/maps/submaps/level_specific/class_d/vault4D.dmm +++ b/maps/submaps/level_specific/class_d/vault4D.dmm @@ -5,58 +5,58 @@ "b" = ( /obj/structure/alien/resin/wall, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /obj/structure/simple_door/resin, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "g" = ( /obj/structure/alien/weeds/node, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/structure/alien/weeds, /obj/random/multiple/minevault, /obj/fiftyspawner/uranium, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "j" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "k" = ( /obj/structure/alien/weeds, /obj/random/multiple/minevault, /obj/fiftyspawner/diamond, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "s" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /mob/living/simple_mob/animal/space/xenomorph/drone, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "Q" = ( /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/sprinter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "R" = ( /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/neurotoxin_spitter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_d/vault5D.dmm b/maps/submaps/level_specific/class_d/vault5D.dmm index f866ae96e458..2ea0d2b626ae 100644 --- a/maps/submaps/level_specific/class_d/vault5D.dmm +++ b/maps/submaps/level_specific/class_d/vault5D.dmm @@ -5,74 +5,74 @@ "b" = ( /obj/structure/alien/resin/wall, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "c" = ( /obj/structure/simple_door/resin, /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "d" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/item/gun/projectile/ballistic/p92x/large, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "e" = ( /obj/structure/alien/weeds, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "f" = ( /obj/structure/alien/weeds, /obj/item/clothing/suit/storage/vest/tactical, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "g" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/fiftyspawner/osmium, /mob/living/simple_mob/animal/space/xenomorph/neurotoxin_spitter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "h" = ( /obj/structure/alien/weeds, /obj/random/multiple/minevault, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "i" = ( /obj/structure/alien/weeds, /obj/structure/alien/egg, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "j" = ( /obj/structure/alien/weeds, /obj/structure/alien/weeds/node, /mob/living/simple_mob/animal/space/xenomorph/vanguard, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "k" = ( /obj/structure/alien/weeds, /obj/item/clothing/head/helmet/tac, /obj/item/gun/projectile/ballistic/SVD, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "A" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/fiftyspawner/durasteel, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "S" = ( /obj/structure/alien/weeds, /mob/living/simple_mob/animal/space/xenomorph/sprinter, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) "X" = ( /obj/structure/alien/weeds, /obj/structure/bed/nest, /obj/fiftyspawner/phoron, /mob/living/simple_mob/animal/space/xenomorph/warrior, /turf/simulated/mineral/floor/classd/indoors, -/area/class_d/explored) +/area/sector/class_d/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm b/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm index eba7790d3cc8..71cac0f8f562 100644 --- a/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm +++ b/maps/submaps/level_specific/class_h/AuxiliaryResearchFacility.dmm @@ -5,52 +5,52 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ag" = ( /obj/structure/bookcase/manuals/xenoarchaeology, /obj/structure/bookcase/manuals/research_and_development, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "al" = ( /obj/effect/floor_decal/carpet{ dir = 1; pixel_x = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "an" = ( /obj/structure/girder/displaced, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "ax" = ( /obj/effect/floor_decal/techfloor/orange/corner{ dir = 4 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "az" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/corner/red/border{ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "aA" = ( /obj/machinery/door/airlock/glass/security, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "aB" = ( /obj/effect/floor_decal/corner/red/border{ dir = 5 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "aC" = ( /obj/structure/bed/double, /obj/item/bedsheet/orangedouble, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "aG" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning{ @@ -58,26 +58,26 @@ }, /mob/living/simple_mob/mechanical/cyber_horror/plasma_cyber_horror, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "aI" = ( /turf/simulated/wall/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bi" = ( /obj/machinery/door/blast/regular/open{ dir = 4 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bt" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bF" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bL" = ( /obj/structure/railing{ dir = 1 @@ -86,24 +86,24 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bR" = ( /obj/effect/floor_decal/corner/red/border{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bX" = ( /obj/structure/simple_door/wood, /obj/structure/simple_door/silver, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "bY" = ( /obj/effect/floor_decal/corner/red/border{ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cl" = ( /obj/effect/floor_decal/techfloor{ dir = 10 @@ -115,17 +115,17 @@ dir = 1 }, /turf/simulated/floor, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cm" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cs" = ( /obj/structure/reagent_dispensers/watertank, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cx" = ( /obj/structure/table/rack, /obj/effect/debris/cleanable/dirt, @@ -133,30 +133,30 @@ /obj/item/grenade/simple/concussion/frag, /obj/item/grenade/simple/concussion/frag, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cA" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/catering/bar_coffee, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cE" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cF" = ( /obj/structure/bookcase, /turf/simulated/floor/carpet/purcarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "cO" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "db" = ( /mob/living/simple_mob/humanoid/merc/ranged/grenadier, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "dd" = ( /obj/effect/floor_decal/transit/orange{ dir = 8 @@ -165,28 +165,28 @@ dir = 1 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "du" = ( /obj/structure/undies_wardrobe, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "dF" = ( /obj/machinery/artifact_scanpad, /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "dH" = ( /obj/random/trash_pile, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "dW" = ( /obj/effect/floor_decal/techfloor/orange/corner{ dir = 1 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "eb" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, @@ -195,38 +195,38 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ec" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ed" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ek" = ( /obj/structure/table/bench/standard, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ex" = ( /obj/effect/floor_decal/techfloor/orange/corner, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "eD" = ( /obj/effect/debris/cleanable/blood, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fd" = ( /obj/structure/table/bench/wooden, /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "fe" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, @@ -234,36 +234,36 @@ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fk" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/flicker{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fm" = ( /obj/effect/floor_decal/rust, /obj/structure/anomaly_container, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fn" = ( /obj/effect/debris/cleanable/blood/tracks/footprints, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fo" = ( /obj/structure/table/standard, /obj/effect/floor_decal/corner/red/border{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fw" = ( /obj/structure/flora/pottedplant/large, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fD" = ( /obj/structure/table/bench/wooden, /obj/effect/debris/cleanable/dirt, @@ -271,46 +271,46 @@ dir = 4 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fE" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fI" = ( /obj/machinery/light/flicker{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "fT" = ( /obj/item/reagent_containers/glass/beaker, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "gp" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "gu" = ( /obj/structure/table/steel_reinforced, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "gU" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "gV" = ( /obj/machinery/light/flicker{ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "gX" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hn" = ( /obj/effect/floor_decal/carpet{ dir = 6 @@ -323,14 +323,14 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ho" = ( /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hr" = ( /obj/random/trash, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hw" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, @@ -338,11 +338,11 @@ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hL" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hO" = ( /obj/effect/floor_decal/carpet{ pixel_x = 16 @@ -350,7 +350,7 @@ /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hR" = ( /obj/structure/railing{ dir = 4 @@ -360,11 +360,11 @@ }, /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "hT" = ( /obj/structure/barricade, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "hZ" = ( /obj/machinery/button/remote/blast_door{ dir = 8; @@ -372,7 +372,7 @@ pixel_y = 5 }, /turf/simulated/wall/durasteel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "iB" = ( /obj/machinery/light/small/emergency{ dir = 4 @@ -382,53 +382,53 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "iC" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "iH" = ( /obj/effect/debris/cleanable/dirt, /obj/item/stolenpackage, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ja" = ( /mob/living/simple_mob/humanoid/merc/melee/sword, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jg" = ( /obj/effect/floor_decal/carpet{ dir = 5 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jk" = ( /obj/effect/floor_decal/techfloor/corner{ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jw" = ( /obj/structure/flora/pottedplant/large, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jC" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/mechanical/cyber_horror, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jD" = ( /obj/machinery/light, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jM" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/mechanical/cyber_horror/corgi, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "jN" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/catering/bar_alc, @@ -436,7 +436,7 @@ dir = 4 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ke" = ( /obj/structure/window/reinforced/full, /obj/structure/window/reinforced/holowindow{ @@ -447,7 +447,7 @@ }, /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kn" = ( /obj/effect/floor_decal/corner/red/border{ dir = 1 @@ -458,7 +458,7 @@ pixel_y = 22 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kq" = ( /obj/structure/table/standard, /obj/structure/bedsheetbin, @@ -466,43 +466,43 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ks" = ( /obj/effect/debris/cleanable/blood, /mob/living/simple_mob/mechanical/cyber_horror/tajaran, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ky" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood/drip, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kF" = ( /obj/machinery/light/small/flicker, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kM" = ( /obj/machinery/blackbox_recorder, /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kU" = ( /obj/machinery/lathe/autolathe, /obj/effect/floor_decal/corner/purple/border{ dir = 10 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "kW" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small/emergency{ dir = 4 }, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "la" = ( /obj/structure/railing{ dir = 8 @@ -512,31 +512,31 @@ }, /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "ld" = ( /obj/effect/debris/cleanable/dirt, /obj/item/stack/material/phoron, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lk" = ( /obj/machinery/dna_scannernew, /obj/effect/floor_decal/corner/purple/border{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lp" = ( /obj/effect/debris/cleanable/blood/gibs/robot/up, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lr" = ( /obj/structure/table/bench, /obj/effect/floor_decal/techfloor/orange{ dir = 9 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lz" = ( /obj/effect/floor_decal/carpet{ dir = 4; @@ -544,16 +544,16 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lH" = ( /obj/effect/floor_decal/rust, /obj/item/stack/material/phoron, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "lT" = ( /obj/effect/debris/cleanable/blood/drip, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "lZ" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, @@ -563,7 +563,7 @@ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "mk" = ( /obj/structure/table/standard, /obj/random/energy, @@ -571,7 +571,7 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "mx" = ( /obj/structure/grille, /obj/structure/window/reinforced/holowindow{ @@ -585,68 +585,68 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "mA" = ( /obj/structure/table/woodentable, /obj/item/storage/box/cups, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "nj" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "nw" = ( /obj/structure/closet/firecloset/full/double, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "nC" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "nF" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "nX" = ( /obj/structure/closet/hydrant, /turf/simulated/wall/r_wall, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "od" = ( /obj/item/stolenpackage, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "of" = ( /obj/structure/bookcase/manuals/xenoarchaeology, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "og" = ( /obj/structure/flora/tree/jungle_small, /obj/effect/floor_decal/techfloor/orange/corner{ dir = 8 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oh" = ( /obj/machinery/light/small/emergency{ dir = 8 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "op" = ( /obj/structure/table/steel, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "or" = ( /obj/structure/closet/l3closet/scientist/double, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ot" = ( /obj/structure/railing{ dir = 8 @@ -655,33 +655,33 @@ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ov" = ( /obj/structure/table/woodentable, /obj/item/flashlight/lamp/green, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oA" = ( /obj/effect/floor_decal/transit/orange{ dir = 8 }, /obj/effect/floor_decal/transit/orange, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oE" = ( /obj/structure/cryofeed{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oF" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/machinery/power/port_gen/pacman, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oR" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/decal/remains/human, @@ -689,22 +689,22 @@ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "oV" = ( /obj/structure/bed/double, /obj/item/bedsheet/orangedouble, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "pv" = ( /obj/structure/table/bench/padded, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "pw" = ( /mob/living/simple_mob/humanoid/merc/ranged/garand, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "pz" = ( /obj/effect/floor_decal/carpet{ dir = 10 @@ -717,53 +717,53 @@ pixel_x = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "pJ" = ( /obj/random/trash, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "pQ" = ( /obj/effect/debris/cleanable/blood/gibs/robot/down, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "qb" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/machinery/light, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "qf" = ( /obj/effect/floor_decal/carpet{ dir = 4; pixel_y = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "qD" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "qR" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "qW" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/wall/r_wall, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rg" = ( /obj/structure/barricade, /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rl" = ( /obj/effect/debris/cleanable/dirt, /obj/item/gun/projectile/energy/taser/xeno, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rm" = ( /obj/structure/railing{ dir = 1 @@ -772,13 +772,13 @@ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rn" = ( /obj/effect/floor_decal/transit/orange{ dir = 4 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rx" = ( /obj/effect/floor_decal/carpet{ dir = 8; @@ -791,12 +791,12 @@ pixel_x = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rG" = ( /obj/structure/table/bench/padded, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rH" = ( /obj/structure/table/standard, /obj/item/inducer/sci, @@ -804,59 +804,59 @@ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "rW" = ( /obj/machinery/optable, /obj/effect/floor_decal/industrial/danger/full, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "sg" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "sh" = ( /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "si" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "sk" = ( /obj/machinery/light/flicker{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "sq" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/humanoid/merc/ranged/garand, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "th" = ( /obj/structure/table/bench/wooden, /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "tr" = ( /obj/random/trash_pile, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "tv" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "tC" = ( /obj/structure/table/rack, /obj/item/gun/projectile/energy/sniperrifle, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "tE" = ( /obj/effect/floor_decal/carpet{ dir = 9 @@ -867,28 +867,28 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "tU" = ( /obj/structure/table/bench/wooden, /obj/effect/floor_decal/techfloor/orange{ dir = 6 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "up" = ( /obj/structure/flora/pottedplant/large, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "uI" = ( /obj/structure/table/rack, /obj/item/gun/projectile/ballistic/shotgun/doublebarrel, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "uP" = ( /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "uW" = ( /obj/structure/window/reinforced/holowindow{ dir = 1 @@ -902,20 +902,20 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "uY" = ( /obj/effect/debris/cleanable/blood, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "vd" = ( /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vt" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vu" = ( /obj/structure/table/bench/wooden, /obj/structure/table/bench/wooden, @@ -923,26 +923,26 @@ dir = 4 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vI" = ( /obj/effect/floor_decal/rust, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vS" = ( /obj/effect/floor_decal/transit/orange, /obj/effect/floor_decal/transit/orange{ dir = 4 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vV" = ( /obj/structure/closet/secure_closet/security, /obj/effect/floor_decal/corner/red/border{ dir = 9 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "vY" = ( /obj/structure/window/reinforced/holowindow{ dir = 1 @@ -955,18 +955,18 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wc" = ( /obj/effect/debris/cleanable/dirt, /obj/item/frame2/apc, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wg" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wo" = ( /obj/structure/table/rack, /obj/item/grenade/simple/spawner/manhacks/mercenary, @@ -977,11 +977,11 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wr" = ( /mob/living/simple_mob/mechanical/cyber_horror, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ww" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, @@ -989,75 +989,75 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wz" = ( /obj/machinery/light/small/emergency{ dir = 4 }, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wA" = ( /obj/machinery/mech_recharger, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wE" = ( /obj/effect/floor_decal/transit/orange{ dir = 8 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wR" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "wS" = ( /obj/structure/table/bench, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xc" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 5 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xl" = ( /obj/random/trash, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xy" = ( /obj/random/trash, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xA" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/mechanical/cyber_horror/vox, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xT" = ( /obj/machinery/door/airlock/security/armory, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "xX" = ( /obj/structure/table/bench, /obj/effect/floor_decal/techfloor/orange{ dir = 10 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "yb" = ( /obj/structure/table/marble, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "yo" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "yv" = ( /obj/structure/railing{ dir = 4 @@ -1065,13 +1065,13 @@ /obj/structure/railing, /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "yG" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "yO" = ( /obj/structure/table/glass, /obj/effect/debris/cleanable/dirt, @@ -1079,22 +1079,22 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zc" = ( /obj/random/trash, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zf" = ( /obj/effect/decal/remains/human, /obj/effect/floor_decal/techfloor/corner{ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zj" = ( /obj/machinery/door/airlock/maintenance/rnd, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zp" = ( /obj/structure/railing{ dir = 4 @@ -1104,7 +1104,7 @@ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zs" = ( /obj/structure/railing{ dir = 1 @@ -1114,37 +1114,37 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zF" = ( /obj/effect/debris/cleanable/blood/drip, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zK" = ( /obj/machinery/light/flicker, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zM" = ( /obj/effect/floor_decal/corner/red/border, /mob/living/simple_mob/mechanical/viscerator/mercenary, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "zY" = ( /obj/structure/table/marble, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Aa" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ag" = ( /obj/machinery/light/small/emergency{ dir = 1 }, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Al" = ( /obj/machinery/door/blast/regular{ dir = 4 @@ -1154,7 +1154,7 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Am" = ( /obj/machinery/shower{ dir = 1 @@ -1164,21 +1164,21 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ax" = ( /turf/simulated/wall/r_wall, -/area/class_h/explored) +/area/sector/class_h/explored) "AF" = ( /obj/machinery/light/small/emergency{ dir = 4 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "AK" = ( /obj/random/trash_pile, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "AT" = ( /obj/effect/floor_decal/carpet{ dir = 6 @@ -1191,31 +1191,31 @@ /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "AW" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Bf" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Bk" = ( /turf/simulated/mineral/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Bl" = ( /obj/effect/floor_decal/corner/purple/border{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Bx" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/humanoid/merc, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "BA" = ( /obj/effect/floor_decal/carpet{ dir = 9 @@ -1225,28 +1225,28 @@ pixel_x = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "BF" = ( /obj/effect/floor_decal/techfloor/corner, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "BR" = ( /obj/effect/debris/cleanable/blood/tracks/footprints, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "BU" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/humanoid/merc/melee/sword, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ca" = ( /obj/machinery/lathe/mecha_part_fabricator, /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Cn" = ( /obj/effect/floor_decal/carpet{ pixel_x = 16 @@ -1254,23 +1254,23 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Cp" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Cz" = ( /obj/effect/debris/cleanable/dirt, /obj/item/stack/material/durasteel, /obj/item/stack/material/durasteel, /obj/item/stack/material/durasteel, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "CC" = ( /obj/effect/decal/remains/human, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "CI" = ( /obj/effect/floor_decal/corner/red/border{ dir = 4 @@ -1279,11 +1279,11 @@ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "CL" = ( /obj/machinery/cryopod, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "CS" = ( /obj/structure/table/standard, /obj/machinery/recharger, @@ -1291,7 +1291,7 @@ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "CV" = ( /obj/effect/floor_decal/carpet{ dir = 5 @@ -1299,77 +1299,77 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "CX" = ( /obj/effect/debris/cleanable/blood/oil, /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Dl" = ( /obj/effect/floor_decal/corner/red/border, /mob/living/simple_mob/humanoid/merc/ranged/smg, /obj/machinery/light, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Dp" = ( /obj/structure/table/woodentable, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Dz" = ( /obj/effect/decal/remains/human, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "DA" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "DC" = ( /obj/structure/flora/pottedplant/large, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "DH" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "DM" = ( /obj/random/trash, /obj/random/trash_pile, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "DT" = ( /mob/living/simple_mob/humanoid/merc/ranged/deagle, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "Ef" = ( /obj/structure/table/marble, /obj/machinery/recharger, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ei" = ( /obj/effect/debris/cleanable/blood, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ej" = ( /obj/effect/floor_decal/corner/red/border, /mob/living/simple_mob/mechanical/viscerator/mercenary, /obj/machinery/light, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Er" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/techfloor/corner{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ED" = ( /obj/effect/floor_decal/carpet{ dir = 6 @@ -1380,18 +1380,18 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "EE" = ( /obj/machinery/photocopier, /obj/effect/floor_decal/corner/purple/border{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "EJ" = ( /mob/living/simple_mob/humanoid/merc/melee/sword, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Fg" = ( /obj/structure/railing{ dir = 4 @@ -1401,7 +1401,7 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Fl" = ( /obj/effect/floor_decal/carpet{ dir = 6 @@ -1411,73 +1411,73 @@ pixel_y = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Fo" = ( /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Fs" = ( /obj/structure/flora/pottedplant/large, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "FH" = ( /obj/machinery/dnaforensics, /obj/effect/floor_decal/corner/purple/border{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Gb" = ( /obj/structure/table/bench, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Gp" = ( /obj/structure/barricade, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "Gr" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Gt" = ( /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "GB" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/purcarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Hb" = ( /obj/item/stack/material/silver, /obj/item/stack/material/silver, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Hk" = ( /obj/effect/decal/remains/human, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Hm" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/water/deep/indoors, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ht" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/wall/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Hv" = ( /obj/structure/reagent_dispensers/acid, /turf/simulated/wall/durasteel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "HA" = ( /obj/effect/floor_decal/carpet{ dir = 5 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "HJ" = ( /obj/effect/floor_decal/techfloor{ dir = 6 @@ -1489,30 +1489,30 @@ dir = 1 }, /turf/simulated/floor, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "HL" = ( /obj/machinery/artifact_analyser, /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ii" = ( /obj/effect/floor_decal/carpet{ dir = 8; pixel_y = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ij" = ( /obj/structure/table/bench/wooden, /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "In" = ( /obj/structure/filingcabinet, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "IB" = ( /obj/effect/floor_decal/carpet{ dir = 8; @@ -1530,7 +1530,7 @@ /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "IO" = ( /obj/structure/table/rack, /obj/item/gun/projectile/energy/ionrifle/pistol, @@ -1538,90 +1538,90 @@ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "IP" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/item/stack/material/phoron, /obj/item/stack/material/phoron, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "IY" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Jq" = ( /obj/structure/closet/secure_closet/security, /obj/effect/floor_decal/corner/red/border{ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Jv" = ( /obj/structure/bookcase/manuals/medical, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Jy" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "JJ" = ( /obj/machinery/door/airlock/glass, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "JK" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small/flicker, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "JR" = ( /obj/structure/table/bench, /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "JT" = ( /obj/structure/table/steel_reinforced, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ke" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Kq" = ( /obj/structure/railing, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "KD" = ( /obj/effect/decal/remains/human, /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "KG" = ( /obj/item/vehicle_module/weapon/energy/laser/xray, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "KM" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "KS" = ( /obj/effect/floor_decal/rust, /mob/living/simple_mob/mechanical/cyber_horror/cat_cyber_horror, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "KT" = ( /obj/structure/railing{ dir = 8 @@ -1631,51 +1631,51 @@ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ld" = ( /obj/structure/coatrack, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Lm" = ( /obj/machinery/door/airlock/glass/research, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Lr" = ( /obj/structure/closet/hydrant, /turf/simulated/wall/iron, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Lx" = ( /obj/machinery/light, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ly" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood/oil, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "LC" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "LK" = ( /obj/machinery/light/small/flicker, /obj/effect/floor_decal/corner/purple/border{ dir = 6 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "LU" = ( /obj/structure/railing, /obj/effect/floor_decal/techfloor, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "LV" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ma" = ( /obj/machinery/door/blast/regular/open{ dir = 4 @@ -1688,70 +1688,70 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Mb" = ( /obj/effect/floor_decal/rust, /obj/item/stack/material/phoron, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Mg" = ( /obj/item/vehicle_module/repair_droid, /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Mh" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Mq" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "MC" = ( /obj/effect/floor_decal/industrial/danger, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "MN" = ( /turf/simulated/floor/carpet/purcarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "MP" = ( /obj/effect/debris/cleanable/blood, /obj/effect/floor_decal/techfloor/corner{ dir = 1 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "MX" = ( /obj/random/trash, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Na" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Nb" = ( /obj/effect/decal/remains/human, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "NC" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "NF" = ( /obj/random/trash_pile, /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "NU" = ( /obj/structure/grille, /obj/structure/window/reinforced/holowindow, @@ -1763,7 +1763,7 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "NX" = ( /obj/effect/floor_decal/carpet{ dir = 8; @@ -1777,11 +1777,11 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Oe" = ( /obj/structure/reagent_dispensers/fueltank, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "On" = ( /turf/template_noop, /area/template_noop) @@ -1796,19 +1796,19 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "OG" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/humanoid/merc/ranged/smg, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Pb" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Pg" = ( /obj/structure/table/standard, /obj/structure/bedsheetbin, @@ -1816,28 +1816,28 @@ dir = 9 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Pr" = ( /obj/random/trash_pile, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "Pu" = ( /obj/structure/undies_wardrobe, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "PF" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood/oil, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "PJ" = ( /obj/effect/decal/remains/robot, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "PK" = ( /obj/structure/simple_door/silver, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "PQ" = ( /obj/effect/floor_decal/techfloor{ dir = 5 @@ -1847,11 +1847,11 @@ dir = 8 }, /turf/simulated/floor, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Qy" = ( /obj/structure/closet/hydrant, /turf/simulated/wall/durasteel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "QT" = ( /obj/structure/table/rack, /obj/item/storage/box/shotgunammo/large, @@ -1859,39 +1859,39 @@ dir = 8 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "QY" = ( /obj/structure/table/bench/wooden, /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rb" = ( /obj/machinery/door/airlock/research, /obj/effect/debris/cleanable/blood/oil, /obj/structure/barricade, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rf" = ( /obj/machinery/light/flicker{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rk" = ( /obj/structure/anomaly_container, /obj/effect/floor_decal/corner/purple/border{ dir = 4 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rl" = ( /obj/effect/floor_decal/rust, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rm" = ( /obj/effect/floor_decal/carpet{ dir = 1; @@ -1899,33 +1899,33 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rq" = ( /obj/random/trash, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Rx" = ( /obj/structure/table/woodentable, /obj/item/reagent_containers/food/drinks/glass2/pitcher, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "RQ" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Sg" = ( /turf/simulated/floor/water/deep/indoors, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Sj" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/corner/purple/border{ dir = 5 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Sl" = ( /obj/structure/railing, /obj/structure/railing{ @@ -1933,7 +1933,7 @@ }, /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "Ss" = ( /obj/structure/railing{ dir = 1 @@ -1943,55 +1943,55 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Sv" = ( /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "SU" = ( /obj/item/storage/box/shotgunammo, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Te" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Tl" = ( /obj/effect/floor_decal/corner/purple/border{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Tm" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ts" = ( /obj/effect/floor_decal/corner/red/border, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Tu" = ( /turf/simulated/wall/solidrock, -/area/class_h/explored) +/area/sector/class_h/explored) "TG" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "TI" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "TK" = ( /turf/simulated/wall/iron, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "TM" = ( /mob/living/simple_mob/humanoid/merc/ranged/space, /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "TZ" = ( /obj/structure/window/reinforced/full, /obj/machinery/door/blast/regular/open{ @@ -2002,75 +2002,75 @@ dir = 1 }, /turf/simulated/floor/tiled/steel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Un" = ( /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Uu" = ( /obj/structure/anomaly_container, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Vp" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/techfloor/corner, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Vr" = ( /obj/structure/window/reinforced/holowindow{ dir = 4 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Vt" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VC" = ( /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VE" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VH" = ( /obj/random/trash, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VK" = ( /mob/living/simple_mob/humanoid/merc/ranged/poi, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VL" = ( /obj/effect/debris/cleanable/dirt, /obj/item/cell/basic/tier_1/medium, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VM" = ( /obj/structure/bookcase, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VO" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "VS" = ( /turf/simulated/wall/durasteel, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Wj" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/wall/iron, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Wk" = ( /obj/structure/table/woodentable, /obj/item/flashlight/lamp/green, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Wl" = ( /obj/structure/railing{ dir = 8 @@ -2080,72 +2080,72 @@ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Wv" = ( /obj/effect/floor_decal/rust, /obj/random/trash, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Xa" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/rust, /obj/item/stack/material/phoron, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Xt" = ( /obj/machinery/artifact_harvester, /obj/effect/floor_decal/corner/purple/border, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Xw" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/catering/bar_soft, /turf/simulated/floor/lino, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XD" = ( /obj/structure/table/glass, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XG" = ( /turf/simulated/floor/outdoors/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) "XK" = ( /obj/effect/floor_decal/industrial/warning{ dir = 1 }, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XP" = ( /obj/random/trash, /obj/effect/floor_decal/corner/red/border{ dir = 6 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XQ" = ( /obj/structure/flora/tree/jungle_small, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XR" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/floor_decal/techfloor/corner{ dir = 8 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XT" = ( /obj/structure/reagent_dispensers/peppertank, /turf/simulated/wall/r_wall, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XU" = ( /obj/effect/floor_decal/industrial/warning, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "XY" = ( /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yg" = ( /obj/effect/floor_decal/carpet{ dir = 10 @@ -2158,14 +2158,14 @@ pixel_y = 16 }, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yi" = ( /obj/effect/floor_decal/transit/orange, /obj/effect/floor_decal/transit/orange{ dir = 8 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yl" = ( /obj/effect/floor_decal/techfloor{ dir = 9 @@ -2175,22 +2175,22 @@ dir = 4 }, /turf/simulated/floor, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ym" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/reinforced, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yo" = ( /obj/machinery/light/small/flicker, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yv" = ( /obj/structure/railing{ dir = 4 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techmaint, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Yx" = ( /obj/effect/floor_decal/carpet{ dir = 4; @@ -2201,19 +2201,19 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/carpet/oracarpet, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YA" = ( /obj/random/trash_pile, /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YC" = ( /obj/effect/floor_decal/industrial/danger, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YH" = ( /obj/effect/floor_decal/transit/orange{ dir = 4 @@ -2222,35 +2222,35 @@ dir = 1 }, /turf/simulated/floor/grass, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YM" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YP" = ( /obj/structure/bed/chair/comfy/beige{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "YY" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Zc" = ( /obj/structure/table/bench/padded, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Ze" = ( /turf/simulated/wall, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Zl" = ( /turf/simulated/wall/r_wall, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "Zw" = ( /obj/structure/table/glass, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ZD" = ( /obj/structure/railing{ dir = 4 @@ -2259,7 +2259,7 @@ dir = 4 }, /turf/simulated/floor/tiled/dark, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ZG" = ( /obj/machinery/light/small/flicker{ dir = 1 @@ -2268,20 +2268,20 @@ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ZH" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/plating, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ZP" = ( /obj/structure/bookcase, /turf/simulated/floor/wood, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) "ZZ" = ( /obj/machinery/light/small/flicker, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/AuxiliaryResearchFacility) +/area/sector/class_h/POIs/AuxiliaryResearchFacility) (1,1,1) = {" On diff --git a/maps/submaps/level_specific/class_h/BoneyardH.dmm b/maps/submaps/level_specific/class_h/BoneyardH.dmm index ee8d10063ec9..3169d1860203 100644 --- a/maps/submaps/level_specific/class_h/BoneyardH.dmm +++ b/maps/submaps/level_specific/class_h/BoneyardH.dmm @@ -7,7 +7,7 @@ dir = 4 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "e" = ( /obj/structure/closet/coffin, /obj/item/clothing/gloves/ring/material/gold, @@ -23,42 +23,42 @@ /obj/item/bone/leg, /obj/item/bone/leg, /turf/simulated/floor/wmarble, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "i" = ( /obj/structure/fence/corner{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "j" = ( /obj/structure/fence/door/locked{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "k" = ( /obj/structure/fence/door/locked{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "l" = ( /obj/structure/fence/cut/large{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "n" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wmarble, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "s" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "v" = ( /obj/structure/fence/corner, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "y" = ( /obj/structure/closet/coffin, /obj/item/clothing/gloves/ring/material/silver, @@ -74,55 +74,55 @@ /obj/item/bone/leg, /obj/item/bone/leg, /turf/simulated/floor/wmarble, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "C" = ( /obj/structure/fence/corner{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "D" = ( /obj/item/material/gravemarker, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "F" = ( /obj/item/flame/lighter/zippo/engraved, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "H" = ( /turf/simulated/wall/sandstone, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "K" = ( /obj/structure/fence{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "O" = ( /obj/structure/fence/cut/large{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "T" = ( /obj/item/shovel, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "U" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "X" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) "Y" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/graveyard) +/area/sector/class_h/POIs/graveyard) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/BunkerH.dmm b/maps/submaps/level_specific/class_h/BunkerH.dmm index 416d86c95121..77db5710d1ec 100644 --- a/maps/submaps/level_specific/class_h/BunkerH.dmm +++ b/maps/submaps/level_specific/class_h/BunkerH.dmm @@ -2,7 +2,7 @@ "ae" = ( /obj/structure/table/wooden_reinforced, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "al" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard, @@ -11,27 +11,27 @@ id = "desert_bunker" }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "ar" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/anomaly_container, /obj/machinery/artifact, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "aM" = ( /obj/machinery/door/blast/regular{ id = "desert_bunker" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "bf" = ( /obj/machinery/vending/boozeomat{ req_access = list() }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "bx" = ( /obj/machinery/door/blast/regular{ dir = 4; @@ -39,12 +39,12 @@ }, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "bC" = ( /obj/structure/closet/radiation, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "cA" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_alc, @@ -53,35 +53,35 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "cP" = ( /obj/machinery/door/airlock/freezer{ req_one_access = list() }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "di" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/vending/sovietsoda, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "dx" = ( /obj/machinery/door/airlock, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "dA" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "dP" = ( /obj/structure/table/woodentable, /obj/random/drinkbottle, /obj/effect/debris/cleanable/dirt, /obj/machinery/light, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "eP" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood, @@ -90,29 +90,29 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "eQ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed, /obj/item/bedsheet/purple, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "fL" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "fP" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/blood, /obj/random/trash, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "gk" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/mechanical/mecha/mouse_tank, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "gX" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack/shelf/steel, @@ -122,26 +122,26 @@ /obj/random/junk, /obj/random/junk, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "gY" = ( /obj/machinery/light/small/emergency/flicker{ dir = 8 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "iM" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/wardrobe/black, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "jm" = ( /obj/structure/closet/secure_closet/freezer/meat{ req_access = list() }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "ko" = ( /obj/structure/mirror/long{ pixel_y = 32 @@ -151,75 +151,75 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "kZ" = ( /obj/machinery/door/airlock{ name = "Unisex Restrooms" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "mt" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small/emergency, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "oW" = ( /obj/structure/table/wooden_reinforced, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "pf" = ( /obj/structure/table/wooden_reinforced, /obj/random/drinkbottle, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "qa" = ( /obj/machinery/door/airlock/maintenance/int, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "ql" = ( /obj/machinery/light/small/emergency/flicker, /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "sk" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/decal/remains, /obj/random/trash, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "sB" = ( /obj/machinery/door/airlock, /obj/effect/debris/cleanable/dirt, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "sY" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/vending/tool, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "uZ" = ( /turf/simulated/wall/dungeon, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "vu" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/flicker{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "vw" = ( /obj/structure/table/standard, /obj/random/soap, /obj/random/soap, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "vQ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard, @@ -227,22 +227,22 @@ /obj/random/toolbox, /obj/random/toolbox, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "ws" = ( /obj/structure/curtain/open/shower, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "wE" = ( /obj/structure/janitorialcart, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "wK" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/salvageable/implant_container, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "wX" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack/shelf/steel, @@ -253,16 +253,16 @@ /obj/random/mre, /obj/random/mre, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "xe" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "xt" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack/shelf/steel, /obj/item/gun/projectile/energy/taser, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "ye" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/flicker{ @@ -271,13 +271,13 @@ /obj/structure/bed, /obj/item/bedsheet/brown, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "yK" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "zn" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/crate/bin, @@ -286,20 +286,20 @@ /obj/random/junk, /obj/random/junk, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "zp" = ( /obj/effect/debris/cleanable/greenglow, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "zx" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "zH" = ( /obj/effect/debris/cleanable/dirt, /obj/random/multiple/large_corp_crate, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Ae" = ( /obj/structure/mirror/long/left{ pixel_y = 32 @@ -310,44 +310,44 @@ /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "AW" = ( /obj/structure/table/wooden_reinforced, /obj/random/mre, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "AX" = ( /obj/structure/table/marble, /obj/machinery/microwave, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Bj" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small/emergency/flicker{ dir = 1 }, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "BW" = ( /obj/structure/curtain/open/shower, /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "CH" = ( /obj/item/stool/padded, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "CY" = ( /obj/structure/bed/chair/comfy/black{ dir = 1 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Dc" = ( /obj/structure/table/standard, /obj/item/towel/random, @@ -356,39 +356,39 @@ /obj/item/towel/random, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Dt" = ( /obj/structure/table/woodentable, /obj/random/mre, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "DJ" = ( /obj/effect/debris/cleanable/greenglow, /obj/structure/loot_pile/maint/trash, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Ex" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/wardrobe/grey, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "EP" = ( /turf/simulated/mineral/ignore_mapgen, -/area/class_h/explored) +/area/sector/class_h/explored) "FA" = ( /obj/structure/toilet{ dir = 1 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "FR" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed, /obj/item/bedsheet/red, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "FZ" = ( /obj/structure/table/marble, /obj/item/storage/box/donkpockets{ @@ -398,45 +398,45 @@ /obj/item/storage/box/donkpockets, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Gv" = ( /obj/structure/closet/crate/freezer/rations, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "GK" = ( /obj/machinery/light/small/emergency/flicker{ dir = 8 }, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Hq" = ( /turf/simulated/wall/solidrock, -/area/class_h/explored) +/area/sector/class_h/explored) "HC" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small/emergency/flicker, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "HO" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/decal/remains, /obj/effect/debris/cleanable/blood, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "If" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock/glass/security{ req_one_access = list() }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "IW" = ( /obj/effect/debris/cleanable/greenglow, /obj/structure/loot_pile/maint/trash, /obj/effect/map_effect/radiation_emitter, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "JH" = ( /obj/structure/mirror/long/right{ pixel_y = 32 @@ -446,12 +446,12 @@ }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Kk" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "KH" = ( /obj/machinery/light/small/emergency/flicker{ dir = 1 @@ -460,12 +460,12 @@ /obj/random/soap, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Lp" = ( /obj/effect/debris/cleanable/greenglow, /obj/effect/map_effect/radiation_emitter/strong, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Lq" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/flicker{ @@ -473,42 +473,42 @@ }, /obj/structure/salvageable/computer, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Lw" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/vore/aggressive/rat, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "LR" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Ma" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/wardrobe/pjs, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Mo" = ( /obj/effect/debris/cleanable/greenglow, /obj/structure/closet/crate/trashcart, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "MO" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "MP" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/vending/snack, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "NE" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed, /obj/item/bedsheet/orange, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "NM" = ( /obj/machinery/door/airlock/vault/bolted{ name = "High Security Door" @@ -519,12 +519,12 @@ name = "Blast Door" }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "OZ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/wardrobe/suit, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Pl" = ( /obj/structure/bed/chair/comfy/black{ dir = 8 @@ -532,34 +532,34 @@ /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/animal/passive/mouse/rat, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Py" = ( /obj/structure/closet/secure_closet/freezer/fridge{ req_access = list() }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Qb" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/decal/remains, /obj/effect/debris/cleanable/blood, /obj/structure/table/bench/steel, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "QZ" = ( /obj/effect/debris/cleanable/dirt, /obj/random/trash, /obj/structure/table/bench/steel, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Ra" = ( /obj/structure/bed/chair/comfy/black{ dir = 4 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Re" = ( /turf/template_noop, /area/template_noop) @@ -567,24 +567,24 @@ /obj/effect/debris/cleanable/dirt, /obj/machinery/light/flicker, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "RG" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock/engineering, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Sr" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/undies_wardrobe, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "SM" = ( /obj/machinery/shower{ dir = 1 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/techfloor/grid, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "SZ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard, @@ -592,50 +592,50 @@ /obj/random/tool/power, /obj/random/tool/power, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Tk" = ( /obj/structure/fence/door/locked, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Tl" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Ty" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed, /obj/item/bedsheet, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "TK" = ( /obj/structure/sign/signnew/radiation, /turf/simulated/wall/dungeon, -/area/class_h/explored) +/area/sector/class_h/explored) "Ur" = ( /obj/structure/sign/warning/lethal_turrets, /turf/simulated/wall/dungeon, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Uu" = ( /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Vw" = ( /obj/structure/table/marble, /obj/machinery/chemical_dispenser/catering/bar_soft, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "VI" = ( /obj/machinery/porta_turret/stationary, /obj/effect/floor_decal/rust, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Wd" = ( /obj/effect/debris/cleanable/greenglow, /obj/fiftyspawner/uranium, /obj/effect/map_effect/radiation_emitter/strong, /turf/simulated/mineral/floor/cave, -/area/class_h/explored) +/area/sector/class_h/explored) "Wg" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/button/remote/blast_door{ @@ -646,49 +646,49 @@ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Wu" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled/freezer, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "XH" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard, /obj/item/paper_bin, /obj/item/pen, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Yl" = ( /obj/effect/debris/cleanable/dirt, /mob/living/simple_mob/vore/aggressive/rat, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Yu" = ( /obj/structure/bed/chair/comfy/black, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "YR" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed/chair/office/dark{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Zb" = ( /obj/structure/table/marble, /obj/item/reagent_containers/food/drinks/shaker, /obj/item/reagent_containers/glass/rag, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) "Zh" = ( /obj/effect/floor_decal/rust, /obj/machinery/light/small/emergency{ dir = 1 }, /turf/simulated/floor/plating, -/area/class_h/POIs/vault) +/area/sector/class_h/POIs/vault) (1,1,1) = {" Re diff --git a/maps/submaps/level_specific/class_h/SupplyDrop1H.dmm b/maps/submaps/level_specific/class_h/SupplyDrop1H.dmm index 3096e7d7d4b5..740aed6bf173 100644 --- a/maps/submaps/level_specific/class_h/SupplyDrop1H.dmm +++ b/maps/submaps/level_specific/class_h/SupplyDrop1H.dmm @@ -4,22 +4,22 @@ /area/template_noop) "d" = ( /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "e" = ( /obj/structure/droppod_door{ dir = 1 }, /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "f" = ( /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "g" = ( /obj/structure/droppod_door{ dir = 8 }, /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "h" = ( /obj/structure/closet/crate, /obj/item/gun/projectile/energy/stunrevolver, @@ -37,20 +37,20 @@ /obj/item/flame/lighter/random, /obj/item/gps, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "i" = ( /obj/structure/droppod_door{ dir = 4 }, /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "j" = ( /obj/structure/droppod_door, /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "I" = ( /turf/simulated/floor/outdoors/beach/sand/dirt, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" I diff --git a/maps/submaps/level_specific/class_h/SupplyDrop2H.dmm b/maps/submaps/level_specific/class_h/SupplyDrop2H.dmm index e43b2874ebed..a3535ce98c7f 100644 --- a/maps/submaps/level_specific/class_h/SupplyDrop2H.dmm +++ b/maps/submaps/level_specific/class_h/SupplyDrop2H.dmm @@ -4,51 +4,51 @@ /area/template_noop) "b" = ( /turf/template_noop, -/area/class_h/explored) +/area/sector/class_h/explored) "c" = ( /turf/simulated/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "d" = ( /obj/structure/girder/displaced, /turf/template_noop, -/area/class_h/explored) +/area/sector/class_h/explored) "e" = ( /turf/simulated/wall/titanium, -/area/class_h/explored) +/area/sector/class_h/explored) "f" = ( /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "g" = ( /obj/structure/loot_pile/maint/junk, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "h" = ( /obj/item/flashlight, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "i" = ( /obj/structure/loot_pile/maint/technical, /obj/item/gps/internal/poi, /obj/item/cell/basic/tier_3/weapon/empty, /obj/item/cell/basic/tier_3/weapon/empty, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "j" = ( /obj/structure/loot_pile/maint/technical, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "k" = ( /obj/structure/girder, /turf/template_noop, -/area/class_h/explored) +/area/sector/class_h/explored) "l" = ( /obj/structure/loot_pile/maint/trash, /turf/simulated/floor/reinforced, -/area/class_h/explored) +/area/sector/class_h/explored) "m" = ( /obj/structure/loot_pile/maint/trash, /turf/simulated/floor, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/cave1H.dmm b/maps/submaps/level_specific/class_h/cave1H.dmm index 2e21b5776c81..0f8aa12efec6 100644 --- a/maps/submaps/level_specific/class_h/cave1H.dmm +++ b/maps/submaps/level_specific/class_h/cave1H.dmm @@ -5,58 +5,58 @@ "m" = ( /obj/random/multiple/ores, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "q" = ( /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "r" = ( /obj/item/storage/single_use/mre/random, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "s" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "u" = ( /obj/random/multiple/miningdrills, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "C" = ( /obj/random/multiple/ores, /obj/structure/closet/crate/miningcar, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "D" = ( /obj/structure/sink/puddle, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "E" = ( /obj/random/outcrop, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "K" = ( /obj/random/obstruction, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "M" = ( /obj/random/outcrop, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "N" = ( /obj/structure/closet/crate/miningcar, /obj/random/multiple/ores, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "R" = ( /obj/item/flashlight/lantern, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "S" = ( /obj/random/obstruction, /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "W" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/cave3H.dmm b/maps/submaps/level_specific/class_h/cave3H.dmm index 858237a87d5a..b5a4a6369648 100644 --- a/maps/submaps/level_specific/class_h/cave3H.dmm +++ b/maps/submaps/level_specific/class_h/cave3H.dmm @@ -4,28 +4,28 @@ /area/template_noop) "c" = ( /turf/simulated/mineral/vacuum, -/area/class_h/explored) +/area/sector/class_h/explored) "n" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/drinkbottle, /obj/random/drinkbottle, /obj/random/drinkbottle, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "p" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/ammo_all, /obj/random/ammo_all, /obj/random/ammo_all, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "q" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/medical/pillbottle, /obj/random/medical/pillbottle, /obj/random/medical/pillbottle, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "r" = ( /obj/structure/closet/crate/mimic/cointoss, /obj/random/cash, @@ -34,17 +34,17 @@ /obj/random/cash, /obj/random/cash, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "t" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "z" = ( /obj/random/humanoidremains, /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "T" = ( /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/covert_post.dmm b/maps/submaps/level_specific/class_h/covert_post.dmm index bf6975264f8a..cca16ddf1264 100644 --- a/maps/submaps/level_specific/class_h/covert_post.dmm +++ b/maps/submaps/level_specific/class_h/covert_post.dmm @@ -1,19 +1,19 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "b" = ( /obj/structure/table/bananium_reinforced, /obj/item/storage/box/donkpockets, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "c" = ( /obj/structure/filingcabinet/chestdrawer, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "d" = ( /turf/simulated/floor/bananium, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "f" = ( /obj/structure/table/bananium_reinforced, /obj/machinery/light, @@ -21,85 +21,85 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "g" = ( /obj/effect/floor_decal/spline/fancy/wood/corner{ dir = 1 }, /mob/living/simple_mob/humanoid/clown/commando/ranged, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "h" = ( /obj/structure/grille, /obj/structure/window/reinforced/full, /turf/simulated/floor/plating, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "i" = ( /obj/structure/closet/crate/bin, /obj/effect/floor_decal/spline/fancy/wood{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "j" = ( /obj/structure/table/bananium_reinforced, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "l" = ( /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "m" = ( /obj/machinery/papershredder, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "n" = ( /obj/structure/sink{ dir = 8; pixel_x = -12 }, /turf/simulated/floor/tiled/old_tile, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "o" = ( /obj/machinery/vending/cigarette, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "p" = ( /obj/structure/bed, /obj/item/bedsheet/clown, /obj/item/bananapeel, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "q" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "r" = ( /obj/structure/table/bananium_reinforced, /obj/item/folder/yellow, /obj/item/folder/yellow, /obj/item/clothing/ears/earmuffs, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "s" = ( /obj/structure/bed/chair/comfy/lime{ dir = 1 }, /mob/living/simple_mob/humanoid/clown/commando/melee, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "t" = ( /mob/living/simple_mob/humanoid/clown/commando/melee, /turf/simulated/floor/bananium, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "u" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "v" = ( /obj/machinery/computer/telecomms/monitor, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "w" = ( /obj/machinery/light/small{ dir = 4 @@ -108,31 +108,31 @@ dir = 8 }, /turf/simulated/floor/tiled/old_tile, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "x" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "y" = ( /turf/simulated/wall/r_wall, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "z" = ( /obj/machinery/door/airlock{ name = "Bathroom" }, /obj/item/bananapeel, /turf/simulated/floor/tiled/old_tile, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "A" = ( /obj/structure/table/bananium_reinforced, /obj/machinery/microwave, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "C" = ( /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "D" = ( /obj/machinery/light/small{ dir = 1 @@ -140,39 +140,39 @@ /obj/structure/table/bananium_reinforced, /obj/item/reagent_containers/food/snacks/clownburger, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "E" = ( /obj/machinery/door/airlock/glass{ name = "Monitoring Room" }, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "F" = ( /obj/structure/table/bananium_reinforced, /obj/item/flame/candle/everburn, /turf/simulated/floor/bananium, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "G" = ( /obj/structure/statue/bananium/clown{ name = "Shrine to the Honkmother" }, /turf/simulated/floor/bananium, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "H" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "I" = ( /obj/structure/table/bananium_reinforced, /obj/item/paper_bin, /obj/item/pen/crayon/rainbow, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "J" = ( /turf/simulated/mineral, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "L" = ( /obj/structure/bed/chair/comfy/lime{ dir = 4 @@ -181,20 +181,20 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "M" = ( /obj/machinery/light{ dir = 8 }, /obj/machinery/vending/coffee, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "N" = ( /obj/machinery/light{ dir = 8 }, /turf/simulated/floor/carpet/gaycarpet, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "O" = ( /obj/structure/table/bananium_reinforced, /obj/item/reagent_containers/food/snacks/pie, @@ -203,53 +203,53 @@ /obj/item/reagent_containers/food/snacks/pie, /obj/item/reagent_containers/food/snacks/pie, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "P" = ( /obj/structure/bed/chair/comfy/lime{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "R" = ( /obj/structure/bed, /obj/item/bedsheet/clown, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "S" = ( /mob/living/simple_mob/humanoid/clown/commando/melee, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "U" = ( /obj/item/bananapeel, /obj/machinery/door/airlock/bananium, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "V" = ( /mob/living/simple_mob/animal/passive/honkpet{ iff_factions = "clown"; name = "Hunkle" }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "W" = ( /obj/item/bananapeel, /obj/machinery/door/airlock/bananium, /turf/simulated/floor/bananium, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "X" = ( /mob/living/simple_mob/humanoid/clown/commando/ranged, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "Y" = ( /obj/machinery/light{ dir = 1 }, /turf/simulated/floor/tiled/white, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) "Z" = ( /obj/machinery/door/airlock/bananium, /turf/simulated/floor/wood, -/area/class_h/POIs/covert_post) +/area/sector/class_h/POIs/covert_post) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/desertruins1H.dmm b/maps/submaps/level_specific/class_h/desertruins1H.dmm index 5e87b5fb4f8a..2e7de0d79d4c 100644 --- a/maps/submaps/level_specific/class_h/desertruins1H.dmm +++ b/maps/submaps/level_specific/class_h/desertruins1H.dmm @@ -1,29 +1,29 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "c" = ( /turf/simulated/wall/sandstone, -/area/class_h/explored) +/area/sector/class_h/explored) "l" = ( /obj/structure/loot_pile/surface/bones, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "n" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "s" = ( /obj/item/bone, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "G" = ( /obj/structure/loot_pile/surface/bones, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "W" = ( /obj/item/bone, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "X" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" X diff --git a/maps/submaps/level_specific/class_h/desertruins2H.dmm b/maps/submaps/level_specific/class_h/desertruins2H.dmm index 5feaaeac8a05..984cea1d943e 100644 --- a/maps/submaps/level_specific/class_h/desertruins2H.dmm +++ b/maps/submaps/level_specific/class_h/desertruins2H.dmm @@ -1,27 +1,27 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "h" = ( /turf/simulated/wall/sandstone, -/area/class_h/explored) +/area/sector/class_h/explored) "I" = ( /obj/effect/floor_decal/plaque{ desc = "The carving that used to be here has worn beyond any recoginition."; name = "dusty plaque" }, /turf/simulated/wall/sandstone, -/area/class_h/explored) +/area/sector/class_h/explored) "U" = ( /obj/random/multiple/minevault, /obj/item/moneybag/vault, /turf/simulated/floor/bmarble, -/area/class_h/explored) +/area/sector/class_h/explored) "Z" = ( /turf/simulated/wall/sandstone{ can_open = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/desertruins3H.dmm b/maps/submaps/level_specific/class_h/desertruins3H.dmm index d4adaa6aa623..793f03da9000 100644 --- a/maps/submaps/level_specific/class_h/desertruins3H.dmm +++ b/maps/submaps/level_specific/class_h/desertruins3H.dmm @@ -1,158 +1,158 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "b" = ( /obj/random/multiple/treasure, /mob/living/simple_mob/faithless/cult, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "d" = ( /obj/effect/rune, /obj/random/humanoidremains, /turf/simulated/floor/bmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "e" = ( /obj/structure/simple_door/sandstone, /turf/simulated/floor/bmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "g" = ( /obj/effect/rune, /mob/living/simple_mob/construct/artificer/caster, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "j" = ( /obj/item/material/knife/ritual, /mob/living/simple_mob/construct/shade, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "k" = ( /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "l" = ( /obj/item/material/knife/ritual, /mob/living/simple_mob/creature/cult/strong, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "m" = ( /obj/effect/debris/cleanable/blood, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "n" = ( /obj/effect/rune, /turf/simulated/floor/bmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "o" = ( /obj/effect/rune, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "p" = ( /mob/living/simple_mob/construct/proteon, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "q" = ( /turf/simulated/wall/sandstone, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "r" = ( /obj/item/flame/candle/candelabra/everburn{ icon_state = "candelabra_lit" }, /turf/simulated/floor/bmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "s" = ( /turf/simulated/floor/bmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "u" = ( /obj/random/humanoidremains, /obj/effect/debris/cleanable/blood, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "x" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "y" = ( /obj/random/multiple/treasure, /mob/living/simple_mob/creature/cult/strong, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "z" = ( /obj/random/humanoidremains, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "A" = ( /obj/random/multiple/treasure, /mob/living/simple_mob/creature/cult, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "C" = ( /obj/item/flame/candle/candelabra/everburn{ icon_state = "candelabra_lit" }, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "E" = ( /obj/effect/debris/cleanable/blood, /mob/living/simple_mob/construct/proteon, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "H" = ( /obj/random/multiple/treasure, /mob/living/simple_mob/faithless/cult/strong, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "I" = ( /obj/structure/simple_door/sandstone, /turf/simulated/mineral/floor, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "N" = ( /mob/living/simple_mob/construct/shade, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "P" = ( /obj/structure/closet/coffin, /obj/random/roguemineloot, /obj/random/roguemineloot, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "Q" = ( /obj/effect/rune, /obj/random/humanoidremains, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "R" = ( /obj/effect/debris/cleanable/blood, /mob/living/simple_mob/construct/shade, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "S" = ( /obj/random/humanoidremains, /mob/living/simple_mob/faithless/cult/strong, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "T" = ( /obj/item/material/knife/ritual, /mob/living/simple_mob/construct/proteon, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "V" = ( /obj/effect/debris/cleanable/blood, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "W" = ( /obj/structure/simple_door/sandstone, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "X" = ( /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "Y" = ( /obj/item/material/knife/ritual, /turf/simulated/floor/plating, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) "Z" = ( /obj/random/humanoidremains, /turf/simulated/floor/wmarble, -/area/class_h/POIs/temple) +/area/sector/class_h/POIs/temple) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/desertruins4H.dmm b/maps/submaps/level_specific/class_h/desertruins4H.dmm index ff11ad290c19..e2df8de0196e 100644 --- a/maps/submaps/level_specific/class_h/desertruins4H.dmm +++ b/maps/submaps/level_specific/class_h/desertruins4H.dmm @@ -4,18 +4,18 @@ /area/template_noop) "b" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "c" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "d" = ( /obj/random/mob/spider/nurse, /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "e" = ( /turf/simulated/wall/sandstone, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "k" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -25,7 +25,7 @@ /obj/item/clothing/ears/earring/dangle/glass, /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "m" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -34,20 +34,20 @@ }, /obj/item/clothing/accessory/necklace, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "n" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "o" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "p" = ( /obj/random/mob/spider, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "q" = ( /turf/simulated/wall/sandstone, -/area/class_h/explored) +/area/sector/class_h/explored) "w" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -57,7 +57,7 @@ /obj/item/clothing/gloves/ring/material/iron, /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "H" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -66,23 +66,23 @@ }, /obj/item/clothing/ears/earring/stud/steel, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "K" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "L" = ( /turf/simulated/wall/sandstonediamond, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "N" = ( /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "O" = ( /obj/structure/table/marble, /obj/effect/decal/remains/mummy2, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "S" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -92,12 +92,12 @@ /obj/item/clothing/ears/skrell/chain, /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "T" = ( /obj/structure/table/marble, /obj/effect/decal/remains/mummy1, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "U" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn{ @@ -106,25 +106,25 @@ }, /obj/item/clothing/gloves/ring/material/silver, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "W" = ( /turf/simulated/wall/sandstone{ can_open = 1 }, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "X" = ( /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "Y" = ( /obj/random/mob/spider/mutant, /obj/structure/spider/stickyweb, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) "Z" = ( /obj/effect/decal/remains/mummy1, /obj/random/multiple/treasure, /turf/simulated/floor/wmarble, -/area/class_h/POIs/tomb) +/area/sector/class_h/POIs/tomb) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/desertsaloon.dmm b/maps/submaps/level_specific/class_h/desertsaloon.dmm index 1d5b71e9b15a..88e476cbdda1 100644 --- a/maps/submaps/level_specific/class_h/desertsaloon.dmm +++ b/maps/submaps/level_specific/class_h/desertsaloon.dmm @@ -5,12 +5,12 @@ dir = 4 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "bF" = ( /obj/structure/table/wooden_reinforced, /obj/machinery/chemical_dispenser/catering/bar_alc, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "cr" = ( /obj/structure/table/woodentable, /obj/random/cigarettes, @@ -19,7 +19,7 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "cR" = ( /obj/structure/bed/chair/wood{ dir = 8 @@ -30,39 +30,39 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "cW" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "cZ" = ( /obj/structure/table/gamblingtable, /obj/item/deck/cards, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "dc" = ( /obj/structure/bed/chair/wood, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "dM" = ( /obj/item/stool/padded, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "eY" = ( /mob/living/simple_mob/animal/giant_spider/pepper, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "gn" = ( /obj/machinery/vending/loadout/costume, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "gD" = ( /mob/living/simple_mob/animal/giant_spider/ion, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "io" = ( /turf/template_noop, /area/template_noop) @@ -70,13 +70,13 @@ /obj/structure/table/wooden_reinforced, /obj/random/cigarettes, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "jW" = ( /obj/structure/bed/chair/wood{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "kG" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 9 @@ -90,43 +90,43 @@ /obj/random/cash, /mob/living/simple_mob/animal/giant_spider/webslinger, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "ln" = ( /obj/structure/table/wooden_reinforced, /obj/item/reagent_containers/food/drinks/bottle/small/beer, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "lo" = ( /turf/simulated/floor/carpet/bcarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "lL" = ( /mob/living/simple_mob/animal/giant_spider/webslinger, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "lW" = ( /obj/structure/sink/kitchen{ name = "sink"; pixel_y = 28 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "nK" = ( /obj/structure/table/wooden_reinforced, /obj/structure/reagent_dispensers/beerkeg, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "pU" = ( /obj/structure/bed/chair/wood{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "qh" = ( /obj/effect/floor_decal/spline/fancy/wood/corner{ dir = 4 }, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "qA" = ( /obj/item/ammo_casing/spent{ pixel_y = -5 @@ -140,15 +140,15 @@ pixel_y = 7 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "rL" = ( /obj/structure/bed/chair/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "sl" = ( /obj/machinery/vending/boozeomat, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "td" = ( /obj/structure/railing{ dir = 8 @@ -158,7 +158,7 @@ }, /mob/living/simple_mob/animal/giant_spider/hunter, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "tl" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 8 @@ -168,7 +168,7 @@ }, /obj/structure/musician/piano, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "tt" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 10 @@ -178,13 +178,13 @@ }, /obj/structure/railing, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "ur" = ( /obj/structure/bed/chair/wood{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "uK" = ( /obj/structure/bed/chair/wood{ dir = 4 @@ -199,13 +199,13 @@ pixel_y = 7 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "wV" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "xI" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "zg" = ( /obj/structure/table/woodentable, /obj/structure/mirror/raider{ @@ -214,12 +214,12 @@ /obj/item/lipstick/random, /obj/machinery/light/small, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "zO" = ( /obj/structure/table/wooden_reinforced, /obj/random/drinkbottle, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Bp" = ( /obj/structure/table/woodentable, /obj/random/drinkbottle, @@ -227,7 +227,7 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Dp" = ( /obj/effect/floor_decal/spline/fancy/wood{ dir = 8 @@ -237,7 +237,7 @@ }, /obj/random/coin, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Et" = ( /obj/effect/floor_decal/spline/fancy/wood/corner{ dir = 8 @@ -245,31 +245,31 @@ /obj/spawner/corpse/clown, /obj/effect/debris/cleanable/blood, /turf/simulated/floor/carpet/blucarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "EJ" = ( /obj/random/coin, /turf/simulated/floor/carpet/bcarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "EY" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Fd" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Fm" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Ge" = ( /obj/machinery/media/jukebox, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Hz" = ( /obj/structure/table/woodentable, /obj/item/storage/dicecup, @@ -277,13 +277,13 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "HI" = ( /obj/structure/table/woodentable, /obj/machinery/light/small, /obj/random/cigarettes, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "HU" = ( /obj/structure/railing{ dir = 4 @@ -292,18 +292,18 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "IU" = ( /obj/machinery/light/small/flicker{ dir = 8 }, /obj/random/trash_pile, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Jp" = ( /mob/living/simple_mob/animal/giant_spider/nurse, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "JY" = ( /obj/structure/table/woodentable, /obj/random/drinkbottle, @@ -311,7 +311,7 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Kd" = ( /obj/structure/table/woodentable, /obj/structure/mirror{ @@ -322,18 +322,18 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Lw" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "LV" = ( /obj/structure/table/wooden_reinforced, /obj/item/storage/box/glasses/mug, /obj/item/storage/box/glasses/mug, /obj/item/storage/box/glasses/mug, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Mg" = ( /obj/structure/railing{ dir = 8 @@ -343,14 +343,14 @@ }, /mob/living/simple_mob/animal/giant_spider/nurse, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "NB" = ( /obj/random/cash, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/carpet/bcarpet, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "OS" = ( /obj/structure/railing{ dir = 4 @@ -360,20 +360,20 @@ }, /obj/machinery/light/small/flicker, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "PE" = ( /obj/structure/girder, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "PG" = ( /mob/living/simple_mob/animal/giant_spider/phorogenic, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "PU" = ( /obj/structure/railing, /obj/effect/floor_decal/spline/fancy/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Qs" = ( /obj/structure/table/wooden_reinforced, /obj/item/reagent_containers/food/drinks/drinkingglass/shotglass, @@ -381,10 +381,10 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "TY" = ( /turf/simulated/wall/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Up" = ( /obj/structure/railing{ dir = 8 @@ -393,21 +393,21 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "UZ" = ( /mob/living/simple_mob/animal/giant_spider/lurker, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Vw" = ( /mob/living/simple_mob/animal/giant_spider/tunneler, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "WE" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Zm" = ( /obj/structure/closet/cabinet, /obj/random/projectile/shotgun, @@ -416,7 +416,7 @@ /obj/item/ammo_magazine/a12g/clip/beanbag, /obj/item/ammo_magazine/a12g/clip/beanbag, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) "Zt" = ( /obj/structure/table/woodentable, /obj/random/drinkbottle, @@ -424,7 +424,7 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/saloon) +/area/sector/class_h/POIs/saloon) (1,1,1) = {" io diff --git a/maps/submaps/level_specific/class_h/farmsH.dmm b/maps/submaps/level_specific/class_h/farmsH.dmm index dd655cc92b8a..cefddbcadd75 100644 --- a/maps/submaps/level_specific/class_h/farmsH.dmm +++ b/maps/submaps/level_specific/class_h/farmsH.dmm @@ -1,11 +1,11 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "d" = ( /obj/item/corncob, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "f" = ( /obj/structure/table/woodentable, /obj/item/flame/lighter/zippo, @@ -13,7 +13,7 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "g" = ( /obj/structure/closet/crate, /obj/item/reagent_containers/food/condiment/flour, @@ -26,41 +26,41 @@ /obj/item/reagent_containers/food/condiment/flour, /obj/item/reagent_containers/food/condiment/flour, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "h" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "m" = ( /obj/structure/sink/puddle, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "o" = ( /turf/simulated/wall/sandstone, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "p" = ( /obj/machinery/vending/hydronutrients{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "r" = ( /obj/structure/bed/chair/wood/wings{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "s" = ( /obj/structure/table/woodentable, /obj/machinery/microwave, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "v" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "w" = ( /obj/item/bedsheet/browndouble, /obj/structure/bed/double, @@ -68,29 +68,29 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "y" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "z" = ( /obj/structure/bonfire, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "A" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "F" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "J" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/explored) +/area/sector/class_h/explored) "K" = ( /obj/structure/closet/crate, /obj/fiftyspawner/log, @@ -100,10 +100,10 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "M" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "N" = ( /obj/structure/closet/cabinet, /obj/item/clothing/under/frontier, @@ -118,29 +118,29 @@ /obj/item/gun/projectile/ballistic/shotgun/doublebarrel/pellet, /obj/item/storage/box/shotgunshells, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "O" = ( /turf/simulated/floor/outdoors/beach/sand/desert/indoors, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "P" = ( /obj/structure/railing, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "S" = ( /obj/machinery/botany, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "U" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "W" = ( /obj/machinery/vending/hydroseeds, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) "Z" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/wood, -/area/class_h/POIs/dirt_farm) +/area/sector/class_h/POIs/dirt_farm) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/highnoonH.dmm b/maps/submaps/level_specific/class_h/highnoonH.dmm index 0a0f649513a5..d2d3bf3bab63 100644 --- a/maps/submaps/level_specific/class_h/highnoonH.dmm +++ b/maps/submaps/level_specific/class_h/highnoonH.dmm @@ -2,31 +2,31 @@ "ai" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "aN" = ( /obj/structure/table/rack/shelf, /obj/item/ammo_magazine/a7_62mm/clip/hunter, /obj/item/ammo_magazine/a7_62mm/clip/hunter, /obj/item/ammo_magazine/a7_62mm/clip/hunter, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "bT" = ( /mob/living/simple_mob/animal/giant_spider/tunneler, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "cX" = ( /obj/structure/girder, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "dt" = ( /obj/structure/table/rack/shelf, /obj/random/toolbox, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "dv" = ( /mob/living/simple_mob/animal/giant_spider/carrier, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "dy" = ( /obj/structure/table/woodentable, /obj/fiftyspawner/phoron, @@ -34,31 +34,31 @@ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "dI" = ( /obj/structure/bed/padded, /obj/spawner/corpse/syndicatesoldier, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "fG" = ( /obj/structure/closet/wardrobe/grey, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "fX" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "hI" = ( /obj/structure/toilet{ dir = 4; pixel_x = -10 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "hP" = ( /mob/living/simple_mob/animal/giant_spider/ion, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "iO" = ( /obj/structure/table/gamblingtable, /obj/item/deck/cards, @@ -70,60 +70,60 @@ /obj/random/cash, /obj/random/cash, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "nG" = ( /obj/machinery/light/small, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "nU" = ( /obj/structure/table/woodentable, /obj/item/storage/box/shotgunshells, /obj/item/storage/box/shotgunshells, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "ou" = ( /turf/simulated/wall/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "oL" = ( /obj/machinery/light/flamp/noshade, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "oU" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "pP" = ( /obj/structure/bed, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "qh" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "rw" = ( /obj/random/multiple/minevault, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "rR" = ( /obj/structure/table/rack/shelf, /obj/item/gun/projectile/ballistic/shotgun/pump/rifle, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "tN" = ( /mob/living/simple_mob/animal/giant_spider/pepper, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "tV" = ( /obj/structure/closet/wardrobe/white, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "ua" = ( /obj/structure/table/woodentable, /obj/machinery/chemical_dispenser/catering/bar_alc, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "ug" = ( /obj/structure/window/reinforced{ dir = 1 @@ -133,81 +133,81 @@ }, /obj/structure/bed/pod, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "vV" = ( /obj/structure/reagent_dispensers/beerkeg, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "wL" = ( /obj/structure/table/woodentable, /obj/item/flashlight/lamp/green, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "wR" = ( /obj/structure/bed/padded, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "xz" = ( /obj/structure/table/rack/shelf, /obj/item/ammo_magazine/a7_62mm/clip, /obj/item/ammo_magazine/a7_62mm/clip, /obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "yT" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Ab" = ( /obj/item/moneybag/vault, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Ao" = ( /obj/random/multiple/large_corp_crate/no_weapons, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Bf" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Ep" = ( /obj/structure/bed/chair/comfy/blue{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Eu" = ( /obj/machinery/door/window/holowindoor, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Gm" = ( /obj/structure/bed/chair/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Gz" = ( /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "GA" = ( /obj/structure/table/woodentable, /obj/item/clothing/accessory/stethoscope, /obj/random/medical/pillbottle, /obj/random/medical/pillbottle, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "GS" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "KK" = ( /obj/structure/bed/chair/wood{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "LP" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ @@ -215,61 +215,61 @@ }, /obj/structure/bed/pod, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "NK" = ( /obj/structure/table/woodentable, /obj/item/clothing/accessory/badge/sheriff, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Pd" = ( /obj/structure/closet/wardrobe/red, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "PP" = ( /obj/structure/table/woodentable, /obj/random/firstaid, /obj/random/firstaid, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "PR" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "QP" = ( /mob/living/simple_mob/animal/giant_spider/webslinger, /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "RG" = ( /obj/random/multiple/corp_crate/no_weapons, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "RY" = ( /mob/living/simple_mob/animal/giant_spider/nurse, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Sy" = ( /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "SP" = ( /obj/structure/bed/double, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "SU" = ( /obj/structure/table/rack/shelf, /obj/item/ammo_magazine/a7_62mm/clip/ap, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Tk" = ( /obj/machinery/vending/boozeomat, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "TA" = ( /obj/structure/closet/wardrobe/yellow, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "TN" = ( /obj/structure/table/woodentable, /obj/item/gun/projectile/ballistic/revolver/detective45, @@ -277,10 +277,10 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) "Xx" = ( /turf/simulated/floor/outdoors/beach/sand/dirtlight, -/area/class_h/POIs/WW_Town) +/area/sector/class_h/POIs/WW_Town) (1,1,1) = {" GS diff --git a/maps/submaps/level_specific/class_h/landing_padH.dmm b/maps/submaps/level_specific/class_h/landing_padH.dmm index ceb2cf6df2c4..29c550290457 100644 --- a/maps/submaps/level_specific/class_h/landing_padH.dmm +++ b/maps/submaps/level_specific/class_h/landing_padH.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/simulated/wall, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ab" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/component/unary/vent_pump/high_volume, @@ -9,21 +9,21 @@ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ad" = ( /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/door/airlock/glass_external/public, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ae" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 8 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "af" = ( /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ag" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/manifold/hidden{ @@ -33,7 +33,7 @@ dir = 4 }, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ah" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard{ @@ -43,7 +43,7 @@ pixel_y = 6 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ai" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/loot_pile/surface/medicine_cabinet/fresh{ @@ -53,16 +53,16 @@ pixel_y = 25 }, /turf/simulated/floor/tiled/kafel_full, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ak" = ( /obj/effect/floor_decal/rust, /obj/structure/closet/toolcloset, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "am" = ( /obj/effect/wingrille_spawn/reinforced, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "an" = ( /turf/template_noop, /area/template_noop) @@ -70,16 +70,16 @@ /obj/effect/debris/cleanable/dirt, /obj/structure/bed/chair/comfy/black, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ap" = ( /obj/effect/floor_decal/techfloor/orange, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "as" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock, /turf/simulated/floor/wood, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "at" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack, @@ -88,39 +88,39 @@ /obj/item/tank/oxygen, /obj/item/tank/oxygen, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "av" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/door/airlock, /turf/simulated/floor/tiled/kafel_full, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aw" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ax" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden{ dir = 6 }, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "ay" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 10 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "az" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aA" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/pipe/manifold/hidden{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aB" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/component/unary/vent_pump/high_volume{ @@ -129,23 +129,23 @@ id_tag = "rnd_s_airlock_pump" }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aC" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aD" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small{ dir = 8 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aF" = ( /obj/effect/wingrille_spawn/reinforced, /turf/simulated/wall, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aG" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/cabinet, @@ -160,19 +160,19 @@ /obj/item/ammo_magazine/a7_62mm/clip, /obj/item/ammo_magazine/a7_62mm/clip, /turf/simulated/floor/wood, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aI" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/suit_cycler/vintage, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aJ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed/chair/comfy/black{ dir = 1 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aK" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/curtain/open/shower, @@ -183,49 +183,49 @@ dir = 8 }, /turf/simulated/floor/tiled/kafel_full, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aL" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/atmospherics/pipe/simple/hidden, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aN" = ( /obj/machinery/door/airlock/glass_external/public, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aO" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 6 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aP" = ( /obj/machinery/floodlight, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aQ" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aS" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/pipe/simple/hidden, /obj/machinery/door/airlock/maintenance/common, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aT" = ( /obj/effect/debris/cleanable/dirt, /obj/machinery/light/small{ dir = 4 }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aV" = ( /obj/machinery/light/spot{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aW" = ( /obj/effect/floor_decal/rust, /obj/machinery/atmospherics/portables_connector{ @@ -233,7 +233,7 @@ }, /obj/machinery/portable_atmospherics/canister/air/airlock, /turf/simulated/floor/plating, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aX" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/standard{ @@ -244,7 +244,7 @@ name = "Dusty Flier" }, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aY" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/table/rack, @@ -253,7 +253,7 @@ /obj/item/clothing/head/helmet/space, /obj/item/clothing/suit/space, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "aZ" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/bed/double, @@ -262,19 +262,19 @@ dir = 4 }, /turf/simulated/floor/wood, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "mM" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 5 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "vN" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 1 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "Hg" = ( /obj/effect/debris/cleanable/dirt, /obj/structure/closet/crate/freezer/rations, @@ -282,19 +282,19 @@ /obj/item/storage/box/donkpockets, /obj/item/storage/box/donkpockets, /turf/simulated/floor/tiled, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "NC" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 4 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) "Tb" = ( /obj/effect/floor_decal/techfloor/orange{ dir = 9 }, /turf/simulated/floor/tiled/outdoors, -/area/class_h/POIs/landing_pad) +/area/sector/class_h/POIs/landing_pad) (1,1,1) = {" an diff --git a/maps/submaps/level_specific/class_h/minesH.dmm b/maps/submaps/level_specific/class_h/minesH.dmm index 632a81adefd5..25ec682527ad 100644 --- a/maps/submaps/level_specific/class_h/minesH.dmm +++ b/maps/submaps/level_specific/class_h/minesH.dmm @@ -8,14 +8,14 @@ amount = 8 }, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "e" = ( /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "f" = ( /mob/living/simple_mob/animal/giant_spider/nurse/queen, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "g" = ( /obj/structure/closet/crate/miningcar, /obj/random/roguemineloot, @@ -24,38 +24,38 @@ amount = 4 }, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "h" = ( /obj/random/outcrop, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "j" = ( /obj/structure/loot_pile/mecha/ripley, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "m" = ( /obj/random/obstruction, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "o" = ( /turf/simulated/mineral/ignore_mapgen, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "p" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "q" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "r" = ( /obj/random/mob/spider/nurse, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "s" = ( /obj/structure/spider/stickyweb/dark, /obj/structure/outcrop/gold, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "v" = ( /obj/structure/closet/crate/miningcar, /obj/random/roguemineloot, @@ -64,40 +64,40 @@ amount = 5 }, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "y" = ( /obj/structure/spider/stickyweb/dark, /obj/structure/spider/eggcluster, /obj/structure/spider/cocoon, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "z" = ( /obj/random/mob/spider/nurse, /obj/structure/spider/stickyweb/dark, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "A" = ( /obj/structure/spider/stickyweb, /obj/structure/spider/cocoon, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "B" = ( /obj/structure/spider/stickyweb, /obj/structure/spider/eggcluster, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "C" = ( /obj/structure/spider/stickyweb/dark, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "E" = ( /obj/structure/outcrop/gold, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "F" = ( /obj/random/powercell, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "G" = ( /obj/structure/closet/crate/miningcar, /obj/random/roguemineloot, @@ -108,63 +108,63 @@ amount = 4 }, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "H" = ( /obj/random/multiple/minevault, /obj/item/stack/ore/gold{ amount = 10 }, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "J" = ( /obj/item/pickaxe/diamond, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "M" = ( /obj/structure/spider/stickyweb/dark, /obj/structure/spider/cocoon, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "O" = ( /obj/structure/spider/stickyweb, /obj/structure/outcrop/gold, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "P" = ( /obj/random/mob/spider/mutant, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "R" = ( /obj/random/mob/spider/nurse, /obj/structure/spider/stickyweb, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "S" = ( /obj/structure/spider/stickyweb, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "U" = ( /turf/simulated/wall/solidrock, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "V" = ( /obj/random/multiple/mechtool, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "W" = ( /obj/random/mob/spider/nurse, /obj/structure/spider/stickyweb, /obj/structure/spider/cocoon, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "X" = ( /obj/random/mob/spider, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) "Z" = ( /obj/structure/spider/stickyweb/dark, /obj/random/multiple/miningdrills, /turf/simulated/mineral/floor/cave, -/area/class_h/POIs/goldmine) +/area/sector/class_h/POIs/goldmine) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/oasisH.dmm b/maps/submaps/level_specific/class_h/oasisH.dmm index 2547de9c6ace..5c74cb44dedd 100644 --- a/maps/submaps/level_specific/class_h/oasisH.dmm +++ b/maps/submaps/level_specific/class_h/oasisH.dmm @@ -1,70 +1,70 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "b" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "e" = ( /turf/simulated/floor/water/shoreline{ dir = 9 }, -/area/class_h/explored) +/area/sector/class_h/explored) "g" = ( /turf/simulated/floor/water/shoreline, -/area/class_h/explored) +/area/sector/class_h/explored) "h" = ( /obj/random/outcrop, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "i" = ( /turf/simulated/floor/water/shoreline{ dir = 10 }, -/area/class_h/explored) +/area/sector/class_h/explored) "j" = ( /turf/simulated/floor/water, -/area/class_h/explored) +/area/sector/class_h/explored) "q" = ( /turf/simulated/floor/water/shoreline{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) "s" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 8 }, -/area/class_h/explored) +/area/sector/class_h/explored) "u" = ( /turf/simulated/floor/water/shoreline{ dir = 5 }, -/area/class_h/explored) +/area/sector/class_h/explored) "A" = ( /turf/simulated/floor/water/shoreline{ dir = 8 }, -/area/class_h/explored) +/area/sector/class_h/explored) "B" = ( /turf/simulated/floor/water/shoreline{ dir = 6 }, -/area/class_h/explored) +/area/sector/class_h/explored) "C" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) "I" = ( /turf/simulated/floor/water/shoreline/corner, -/area/class_h/explored) +/area/sector/class_h/explored) "N" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 4 }, -/area/class_h/explored) +/area/sector/class_h/explored) "V" = ( /turf/simulated/floor/water/shoreline{ dir = 4 }, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" b diff --git a/maps/submaps/level_specific/class_h/ranchH.dmm b/maps/submaps/level_specific/class_h/ranchH.dmm index 63ce39720298..23c31e876cc1 100644 --- a/maps/submaps/level_specific/class_h/ranchH.dmm +++ b/maps/submaps/level_specific/class_h/ranchH.dmm @@ -1,15 +1,15 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "b" = ( /obj/structure/flora/ausbushes/fullgrass, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "d" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/water, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "f" = ( /obj/structure/bed/double, /obj/item/bedsheet/browndouble, @@ -17,27 +17,27 @@ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "g" = ( /obj/structure/table/woodentable, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "i" = ( /mob/living/simple_mob/animal/passive/chicken, /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "k" = ( /obj/structure/flora/ausbushes/grassybush, /mob/living/simple_mob/animal/passive/cow, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "m" = ( /obj/structure/simple_door/wood, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "n" = ( /obj/structure/closet/crate/freezer, /obj/item/storage/fancy/egg_box, @@ -45,40 +45,40 @@ /obj/item/storage/fancy/egg_box, /obj/item/storage/fancy/egg_box, /turf/simulated/floor/outdoors/beach/sand/dirt, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "o" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "p" = ( /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "v" = ( /turf/simulated/floor/outdoors/beach/sand/dirt, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "w" = ( /mob/living/simple_mob/animal/passive/chicken, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "z" = ( /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "A" = ( /turf/simulated/floor/holofloor/beach/water, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "B" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "E" = ( /obj/structure/railing{ dir = 1 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "F" = ( /obj/structure/closet/crate/freezer, /obj/item/reagent_containers/food/drinks/milk, @@ -86,24 +86,24 @@ /obj/item/reagent_containers/food/drinks/milk, /obj/item/reagent_containers/food/drinks/milk, /turf/simulated/floor/outdoors/beach/sand/dirt, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "I" = ( /mob/living/simple_mob/animal/passive/cow, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "J" = ( /obj/structure/flora/ausbushes/fullgrass, /mob/living/simple_mob/animal/passive/chicken, /turf/simulated/floor/outdoors/grass, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "K" = ( /obj/structure/railing, /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "M" = ( /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "N" = ( /obj/structure/table/rack/shelf, /obj/item/reagent_containers/glass/bucket/wood, @@ -116,11 +116,11 @@ /obj/random/mre, /obj/random/mre, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "P" = ( /obj/structure/flora/ausbushes/fernybush, /turf/simulated/floor/holofloor/beach/water, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "Q" = ( /obj/structure/closet/cabinet, /obj/item/gun/projectile/ballistic/shotgun/pump/rifle/lever/vintage, @@ -144,39 +144,39 @@ /obj/item/clothing/head/cowboy_hat/wide, /obj/item/clothing/head/cowboy_hat/wide, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "R" = ( /obj/machinery/light/small{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "S" = ( /obj/structure/railing, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "T" = ( /turf/simulated/wall/sandstone, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "U" = ( /obj/structure/flora/ausbushes/sparsegrass, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "W" = ( /turf/simulated/floor/water, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "X" = ( /obj/structure/railing{ dir = 8 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) "Y" = ( /obj/structure/railing{ dir = 4 }, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/ranch) +/area/sector/class_h/POIs/ranch) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/rocks1H.dmm b/maps/submaps/level_specific/class_h/rocks1H.dmm index e02f6fdf1df5..f23a41d2541b 100644 --- a/maps/submaps/level_specific/class_h/rocks1H.dmm +++ b/maps/submaps/level_specific/class_h/rocks1H.dmm @@ -1,18 +1,18 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "w" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "D" = ( /obj/random/mob/spider/mutant, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "X" = ( /mob/living/simple_mob/animal/giant_spider, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/rocks2H.dmm b/maps/submaps/level_specific/class_h/rocks2H.dmm index 8a6876ef5162..455d9e987523 100644 --- a/maps/submaps/level_specific/class_h/rocks2H.dmm +++ b/maps/submaps/level_specific/class_h/rocks2H.dmm @@ -1,18 +1,18 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "p" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "r" = ( /obj/random/mob/spider, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "T" = ( /obj/random/mob/spider/mutant, /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_h/solar_farmH.dmm b/maps/submaps/level_specific/class_h/solar_farmH.dmm index 339957f5bd46..6afc325f1dd4 100644 --- a/maps/submaps/level_specific/class_h/solar_farmH.dmm +++ b/maps/submaps/level_specific/class_h/solar_farmH.dmm @@ -1,23 +1,23 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "b" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "c" = ( /obj/structure/fence{ dir = 4 }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "e" = ( /obj/structure/fence/door, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "h" = ( /obj/structure/cable{ icon_state = "2-4" @@ -29,11 +29,11 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "j" = ( /obj/machinery/power/solar_control, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "k" = ( /obj/structure/cable{ icon_state = "1-8" @@ -42,32 +42,32 @@ icon_state = "1-4" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "l" = ( /obj/structure/fence/door/opened{ dir = 8 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "m" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ dir = 4 }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "n" = ( /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "o" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "p" = ( /obj/structure/cable{ icon_state = "2-4" @@ -80,7 +80,7 @@ }, /mob/living/simple_mob/mechanical/corrupt_maint_drone, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "q" = ( /obj/machinery/power/terminal{ dir = 1 @@ -93,7 +93,7 @@ }, /mob/living/simple_mob/mechanical/corrupt_maint_drone, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "s" = ( /obj/structure/cable{ icon_state = "1-8" @@ -102,7 +102,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "u" = ( /turf/template_noop, /area/template_noop) @@ -117,7 +117,7 @@ dir = 8 }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "x" = ( /obj/structure/cable{ icon_state = "2-4" @@ -126,23 +126,23 @@ icon_state = "2-8" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "z" = ( /obj/machinery/power/solar, /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "B" = ( /turf/simulated/wall, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "C" = ( /obj/structure/cable{ icon_state = "1-2" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "E" = ( /obj/structure/closet/secure_closet/engineering_electrical{ icon_state = "secureengoff"; @@ -151,7 +151,7 @@ /obj/random/tool/alien, /obj/random/tool/alien, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "F" = ( /obj/structure/cable{ icon_state = "2-8" @@ -160,26 +160,26 @@ icon_state = "1-8" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "G" = ( /obj/structure/fence{ dir = 1 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "H" = ( /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "I" = ( /mob/living/simple_mob/mechanical/corrupt_maint_drone, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "L" = ( /obj/structure/fence/door/opened{ dir = 4 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "N" = ( /obj/structure/cable{ icon_state = "1-4" @@ -188,7 +188,7 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "O" = ( /obj/structure/cable{ icon_state = "1-2" @@ -197,7 +197,7 @@ req_one_access = null }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "R" = ( /obj/machinery/power/smes/buildable, /obj/structure/cable{ @@ -207,27 +207,27 @@ icon_state = "4-8" }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "S" = ( /obj/machinery/power/solar, /obj/structure/cable{ dir = 4 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "T" = ( /obj/machinery/power/tracker, /obj/structure/cable{ dir = 8 }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "U" = ( /obj/structure/cable{ icon_state = "2-8" }, /turf/simulated/floor/plating, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "V" = ( /obj/structure/cable{ icon_state = "1-8" @@ -239,13 +239,13 @@ icon_state = "1-2" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "W" = ( /obj/structure/cable{ icon_state = "4-8" }, /turf/simulated/wall, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) "Z" = ( /obj/structure/cable{ icon_state = "2-8" @@ -257,7 +257,7 @@ icon_state = "4-8" }, /turf/simulated/floor/plating/outdoors, -/area/class_h/POIs/solar_farm) +/area/sector/class_h/POIs/solar_farm) (1,1,1) = {" u diff --git a/maps/submaps/level_specific/class_h/springcaveH.dmm b/maps/submaps/level_specific/class_h/springcaveH.dmm index 125c30ba9363..6b6a62827e09 100644 --- a/maps/submaps/level_specific/class_h/springcaveH.dmm +++ b/maps/submaps/level_specific/class_h/springcaveH.dmm @@ -1,47 +1,47 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/beach/sand/lowdesert, -/area/class_h/explored) +/area/sector/class_h/explored) "d" = ( /turf/simulated/mineral, -/area/class_h/explored) +/area/sector/class_h/explored) "i" = ( /obj/random/outcrop, /turf/simulated/floor/water, -/area/class_h/explored) +/area/sector/class_h/explored) "o" = ( /obj/random/outcrop, /turf/simulated/floor/water/shoreline{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) "v" = ( /turf/simulated/floor/water/shoreline/corner{ dir = 4 }, -/area/class_h/explored) +/area/sector/class_h/explored) "B" = ( /turf/simulated/floor/water, -/area/class_h/explored) +/area/sector/class_h/explored) "C" = ( /turf/simulated/mineral/floor, -/area/class_h/explored) +/area/sector/class_h/explored) "S" = ( /obj/random/outcrop, /turf/simulated/floor/water/shoreline{ dir = 9 }, -/area/class_h/explored) +/area/sector/class_h/explored) "V" = ( /turf/simulated/floor/water/shoreline{ dir = 9 }, -/area/class_h/explored) +/area/sector/class_h/explored) "Y" = ( /turf/simulated/floor/water/shoreline{ dir = 1 }, -/area/class_h/explored) +/area/sector/class_h/explored) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_p/archaictemple.dmm b/maps/submaps/level_specific/class_p/archaictemple.dmm index 38cdb672e6df..e80dc7e8dd7f 100644 --- a/maps/submaps/level_specific/class_p/archaictemple.dmm +++ b/maps/submaps/level_specific/class_p/archaictemple.dmm @@ -3,29 +3,29 @@ /obj/structure/bed, /obj/item/bedsheet/purple, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "bp" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/trap/delayed/wmarble{ id = "west_hall_4" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "bv" = ( /obj/structure/bed, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "bJ" = ( /obj/effect/trap/pop_up/buzzsaw{ id = "vault" }, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ct" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/trap/delayed/bmarble{ id = "east_hall_2" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "cz" = ( /obj/effect/trap/pop_up/flame{ id = "entry_corridor" @@ -33,44 +33,44 @@ /turf/simulated/floor/trap/phoron{ id = "entry_corridor" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "dv" = ( /turf/simulated/floor/trap/delayed/wmarble{ id = "east_hall_1" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "dN" = ( /obj/effect/trap/pop_up/flame{ id = "entry_corridor" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ef" = ( /obj/structure/simple_door/hardwood, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "et" = ( /obj/structure/prop/prism/externalcont, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "eJ" = ( /obj/structure/table/marble, /obj/item/flame/candle/black, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "fB" = ( /obj/structure/table/rack/steel, /obj/fiftyspawner/gold, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "fQ" = ( /turf/simulated/floor/outdoors/mud/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "fS" = ( /obj/structure/prop/prism/incremental, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "gr" = ( /turf/template_noop, /area/template_noop) @@ -78,56 +78,56 @@ /obj/structure/table/hardwoodtable, /obj/item/flame/candle/everburn/black, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "gS" = ( /obj/structure/boulder, /turf/simulated/floor/outdoors/grass/heavy/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "gV" = ( /obj/effect/trap/pit/deep{ id = "tunnel_easthigh" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "hQ" = ( /obj/structure/table/hardwoodtable, /obj/item/flame/candle/everburn/black, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ik" = ( /obj/structure/statue/marble/male{ name = "eroded male statue" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "is" = ( /obj/effect/trap/pit/deep{ id = "tunnel_westhigh" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "iV" = ( /obj/structure/bookcase, /obj/item/book, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "iX" = ( /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "jo" = ( /turf/simulated/floor/trap/delayed/phoron{ id = "entry_corridor" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "jJ" = ( /obj/effect/trap/pop_up/thrower, /turf/simulated/mineral/cave, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "jS" = ( /obj/structure/table/hardwoodtable, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ky" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -142,64 +142,64 @@ }, /obj/item/gun/projectile/energy/puzzle_key, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "kE" = ( /obj/structure/table/rack/steel, /obj/fiftyspawner/silver, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "kJ" = ( /obj/structure/table/marble, /obj/item/coin/uranium, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "kT" = ( /obj/effect/trap/pit/tentacle{ id = "headmaster_desk" }, /obj/effect/ceiling, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "kV" = ( /obj/structure/table/hardwoodtable, /obj/effect/debris/cleanable/dirt, /obj/machinery/artifact, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "lf" = ( /obj/effect/ceiling, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "lh" = ( /obj/structure/statue/marble/female{ name = "eroded female statue" }, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "md" = ( /obj/structure/table/hardwoodtable, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "mp" = ( /obj/structure/table/rack/steel, /obj/item/reagent_containers/food/drinks/golden_cup{ name = "ritual chalice" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "mr" = ( /obj/effect/trap/pop_up/spear{ id = "west_hall_3" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "mx" = ( /obj/structure/simple_door/phoron, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "my" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -210,12 +210,12 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_class_south" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "mN" = ( /obj/structure/table/marble, /obj/item/coin/diamond, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "na" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -230,7 +230,7 @@ }, /obj/random/tool/alien, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "nd" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -241,76 +241,76 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_westlow" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "nD" = ( /obj/structure/simple_door/phoron, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "nE" = ( /obj/structure/prop/lock/projectile{ lockID = "dmirr" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "nK" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "nX" = ( /obj/structure/table/bench/wooden, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "od" = ( /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "oq" = ( /obj/structure/statue/marble/male{ density = 0; name = "shimmering male statue" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ot" = ( /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "oH" = ( /obj/structure/boulder, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "oW" = ( /obj/structure/table/rack/steel, /obj/fiftyspawner/phoron, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "oZ" = ( /obj/effect/trap/pit/punji{ id = "west_hall_2" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "pe" = ( /obj/structure/prop/prism/externalcont{ degrees_from_north = 270 }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "qo" = ( /turf/simulated/wall/ironphoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "qE" = ( /obj/structure/table/rack/steel, /obj/item/ammo_casing/arrow/bronze{ name = "Arm of the Enemy" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rq" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/trap/delayed/wood{ id = "library_2" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rt" = ( /obj/structure/table/hardwoodtable, /obj/effect/debris/cleanable/dirt, @@ -326,41 +326,41 @@ }, /obj/random/great_helm, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ru" = ( /obj/structure/bed, /obj/item/bedsheet, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rE" = ( /obj/structure/simple_door/phoron, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rF" = ( /obj/structure/cult/tome, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rO" = ( /obj/structure/boulder, /turf/simulated/floor/outdoors/mud/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "rU" = ( /turf/simulated/floor/outdoors/snow, /area/template_noop) "se" = ( /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "sj" = ( /obj/structure/prop/prism/incremental/externalcont{ dialID = "bchar" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "so" = ( /obj/structure/table/rack/steel, /obj/item/gun/projectile/magic/wand/death, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "sH" = ( /obj/structure/table/marble, /obj/item/gun/projectile/energy/staff/focus{ @@ -372,7 +372,7 @@ pixel_y = -32 }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "sW" = ( /obj/structure/prop/prismcontrol{ dialID = "anak"; @@ -380,7 +380,7 @@ }, /obj/structure/table/marble, /turf/simulated/floor/outdoors/mud/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "tc" = ( /obj/machinery/door/blast/puzzle{ color = "#CBA713"; @@ -395,60 +395,60 @@ name = "The Tomb of the Forgotten One" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "te" = ( /obj/structure/table/hardwoodtable, /obj/machinery/artifact, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "tt" = ( /obj/structure/simple_door/phoron, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "tw" = ( /obj/effect/trap/pit{ id = "west_hall_4" }, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "tY" = ( /obj/structure/bed/chair/wood/wings{ dir = 4 }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "uh" = ( /obj/structure/statue/marble/female{ name = "eroded female statue" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "uk" = ( /obj/structure/statue/marble/female{ name = "eroded female statue" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "vy" = ( /obj/structure/table/rack/steel, /obj/item/clothing/head/wizard/amp{ name = "Circlet of the Conquered" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "vD" = ( /turf/simulated/floor/diamond, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "we" = ( /obj/structure/table/marble, /obj/item/flame/candle/everburn/black, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "xl" = ( /turf/simulated/floor/trap/delayed/crystal{ id = "entry_corridor" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "xx" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -463,18 +463,18 @@ }, /obj/item/archaeological_find, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "xO" = ( /obj/structure/simple_door/gold, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "xQ" = ( /obj/effect/trap/pit/deep{ id = "tunnel_class_south" }, /obj/effect/ceiling, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "xV" = ( /obj/structure/window/reinforced/polarized/full{ color = "#222222"; @@ -485,117 +485,117 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_easthigh" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "yg" = ( /obj/structure/bookcase, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "yt" = ( /turf/simulated/floor/outdoors/ice/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "yw" = ( /obj/structure/statue/marble/male{ name = "eroded male statue" }, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "yz" = ( /obj/structure/bookcase, /obj/item/book, /obj/item/book, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zg" = ( /obj/structure/table/hardwoodtable, /obj/item/spellbook/oneuse/smoke, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zk" = ( /obj/structure/table/hardwoodtable, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zm" = ( /obj/structure/bookcase, /obj/item/spellbook/oneuse/charge, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zu" = ( /obj/structure/table/marble, /obj/item/coin/phoron, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zz" = ( /obj/effect/trap/pop_up/spear{ id = "west_hall_3" }, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zC" = ( /turf/simulated/floor/water/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "zY" = ( /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ac" = ( /obj/structure/table/marble, /obj/item/coin/copper, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ak" = ( /obj/structure/table/bench/wooden, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ar" = ( /obj/effect/trap/launcher/fireball{ dir = 4; id = "entry_corridor" }, /turf/simulated/wall/dungeon, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "At" = ( /obj/effect/debris/cleanable/blood/drip, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Au" = ( /obj/effect/trap/launcher/fireball{ dir = 8; id = "master_trigger" }, /turf/simulated/wall/dungeon, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "AM" = ( /obj/structure/statue/marble/male{ name = "eroded male statue" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Bj" = ( /obj/structure/table/rack/steel, /obj/item/coin/supermatter{ name = "pulsating coin" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Bk" = ( /obj/structure/boulder, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "BF" = ( /obj/structure/closet/cabinet, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "BP" = ( /obj/structure/boulder, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "BS" = ( /obj/effect/trap/pit/deep{ id = "tunnel_class_north" }, /obj/effect/ceiling, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ci" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -610,11 +610,11 @@ }, /obj/random/crusader_armor, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Dl" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Dy" = ( /obj/machinery/door/blast/puzzle{ color = "#1F1A04"; @@ -629,29 +629,29 @@ name = "enchanted door" }, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "DA" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "DI" = ( /obj/effect/trap/pop_up/spear{ id = "west_hall_1" }, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ee" = ( /obj/structure/statue/marble/female{ name = "eroded female statue" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "EY" = ( /obj/structure/simple_door/hardwood, /turf/simulated/floor/trap/wood{ id = "west_hall_3" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "EZ" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -663,10 +663,10 @@ }, /obj/item/material/shard/phoron, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fg" = ( /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fh" = ( /obj/structure/window/reinforced/polarized/full{ color = "#222222"; @@ -677,65 +677,65 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_westhigh" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fp" = ( /obj/structure/bed/chair/wood/wings{ dir = 8 }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fq" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/trap/pop_up/pillar{ id = "display_room" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fu" = ( /obj/structure/bed/chair/wood/wings{ dir = 8 }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Fw" = ( /turf/simulated/floor/trap/delayed/wood{ id = "library_1" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "FF" = ( /obj/effect/trap/pit/deep{ id = "tunnel_eastlow" }, /obj/effect/ceiling, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "FY" = ( /obj/structure/bed/chair/wood/wings, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "GF" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "GP" = ( /obj/effect/trap/pit/bone_breaker, /obj/effect/trap/pit/blood/deep{ id = "library_2" }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "GY" = ( /obj/structure/prop/lock/projectile{ lockID = "anak" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "He" = ( /obj/structure/table/hardwoodtable, /obj/item/flame/candle/everburn/black, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Hh" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -743,16 +743,16 @@ opacity = 1 }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Hp" = ( /obj/effect/ceiling, /turf/simulated/mineral/cave, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Hw" = ( /turf/simulated/floor/trap/wmarble{ id = "east_hall_1" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "HB" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -764,18 +764,18 @@ /obj/structure/window/phoronbasic, /obj/item/material/shard/phoron, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "HM" = ( /obj/effect/trap/pop_up/pillar{ id = "display_room" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ia" = ( /obj/structure/boulder, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ij" = ( /turf/simulated/mineral/cave, /area/template_noop) @@ -785,15 +785,15 @@ name = "Blood of the Foe" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ID" = ( /turf/simulated/floor/water/acid/deep/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "IE" = ( /turf/simulated/floor/trap/phoron{ id = "entry_corridor" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Jg" = ( /obj/effect/trap/launcher/fireball_aoe/finite{ dir = 1; @@ -801,75 +801,75 @@ pixel_y = -32 }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Jv" = ( /turf/simulated/floor/trap/gold{ id = "vault" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Jw" = ( /obj/structure/bed/chair/wood/wings{ dir = 1 }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Jy" = ( /obj/structure/prop/prism/externalcont{ degrees_from_north = 180; dialID = null }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "JL" = ( /turf/simulated/floor/trap/phoron{ id = "master_trigger" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "JP" = ( /obj/structure/table/hardwoodtable, /turf/simulated/floor/wmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "JT" = ( /turf/simulated/floor/trap/delayed/gold{ id = "master_trigger" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "JU" = ( /obj/structure/table/marble, /obj/item/flame/candle/candelabra/everburn, /turf/simulated/floor/outdoors/mud/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Kf" = ( /obj/effect/trap/pop_up/spear{ id = "west_hall_3" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Kl" = ( /obj/structure/statue/marble/male{ name = "eroded male statue" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ks" = ( /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ku" = ( /obj/structure/simple_door/gold, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Kv" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "KP" = ( /obj/effect/trap/launcher/dart{ dir = 1; id = "east_hall_2" }, /turf/simulated/wall/dungeon, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "KQ" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -886,27 +886,27 @@ name = "The Claw of Birnam Doomsayer" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "La" = ( /obj/structure/simple_door/hardwood, /turf/simulated/floor/trap/wood{ id = "headmaster_office" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Lh" = ( /obj/structure/table/hardwoodtable, /obj/item/flame/candle/black, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "LP" = ( /obj/structure/prop/prism/incremental{ degrees_from_north = 180 }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Mq" = ( /turf/simulated/wall/dungeon, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Mx" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -917,7 +917,7 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_class_north" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Nk" = ( /obj/machinery/door/blast/puzzle{ color = "#4D4D4D"; @@ -932,32 +932,32 @@ name = "Vault of B'Chardamz" }, /turf/simulated/floor/diamond, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Nt" = ( /obj/structure/table/hardwoodtable, /obj/machinery/artifact, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "NS" = ( /turf/simulated/floor/trap/delayed/wmarble{ id = "west_hall_1" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "NT" = ( /obj/structure/table/rack/steel, /obj/item/necromantic_stone{ name = "Stone of the Betrayer" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ol" = ( /obj/effect/debris/cleanable/generic, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Oo" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "OG" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -974,37 +974,37 @@ name = "Xeq'quinnh's Crystal Blade" }, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "OI" = ( /obj/structure/prop/prism/incremental/externalcont{ degrees_from_north = 180; dialID = "anak" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "OJ" = ( /obj/structure/boulder, /obj/effect/floor_decal/rust, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "OM" = ( /obj/structure/table/hardwoodtable, /obj/effect/debris/cleanable/dirt, /obj/item/book, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Pe" = ( /obj/effect/trap/pit/blood/deep{ id = "library_2" }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Pm" = ( /obj/effect/trap/pit/blood/deep{ id = "library_1" }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Pq" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -1019,28 +1019,28 @@ }, /obj/item/material/knife/machete/hatchet/unathiknife, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Py" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "PM" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "PU" = ( /obj/effect/trap/pit/deep{ id = "tunnel_westlow" }, /obj/effect/ceiling, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "QV" = ( /obj/structure/bed, /obj/effect/debris/cleanable/dirt, /obj/item/bedsheet/purple, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Rv" = ( /obj/structure/table/marble, /obj/structure/prop/prismcontrol{ @@ -1048,39 +1048,39 @@ name = "The Blind Wheel of B'chardamz" }, /turf/simulated/floor/diamond, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Sc" = ( /turf/simulated/floor/trap/delayed/crystal{ id = "display_room" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Sz" = ( /obj/structure/table/hardwoodtable, /obj/item/flame/candle/black, /turf/simulated/floor/bmarble, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Tw" = ( /obj/structure/statue/marble/female{ density = 0; name = "shimmering female statue" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "TF" = ( /obj/structure/table/rack/steel, /obj/machinery/artifact, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "TM" = ( /turf/simulated/mineral/cave, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ua" = ( /obj/effect/trap/pop_up/flame{ id = "entry_corridor" }, /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Ug" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -1091,7 +1091,7 @@ /turf/simulated/floor/trap/delayed/plating{ id = "tunnel_eastlow" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Uh" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -1103,7 +1103,7 @@ /obj/item/material/shard/phoron, /obj/item/material/shard/phoron, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Us" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -1118,27 +1118,27 @@ }, /obj/item/archaeological_find, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "UJ" = ( /obj/effect/floor_decal/rust, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "UR" = ( /obj/effect/trap/pop_up/pillar{ id = "display_room" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Vb" = ( /turf/simulated/floor/trap/wood{ id = "headmaster_desk" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Vk" = ( /turf/simulated/floor/trap/wmarble{ id = "east_hall_2" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Vq" = ( /obj/structure/table/marble, /obj/item/scrying{ @@ -1147,25 +1147,25 @@ name = "The Gate of Dmirr" }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "VM" = ( /obj/effect/debris/cleanable/dirt, /turf/simulated/floor/trap/delayed/crystal{ id = "display_room" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Wc" = ( /obj/structure/simple_door/hardwood, /turf/simulated/floor/trap/wood{ id = "west_hall_2" }, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "WM" = ( /obj/structure/prop/lock/projectile{ lockID = "bchar" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Xi" = ( /obj/structure/table/hardwoodtable, /obj/structure/window/phoronbasic{ @@ -1177,19 +1177,19 @@ /obj/item/material/shard/phoron, /obj/item/material/shard/phoron, /turf/simulated/floor/gold, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "XB" = ( /obj/effect/trap/pit/punji{ id = "west_hall_2" }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "XH" = ( /obj/effect/trap/pop_up/flame{ id = "entry_corridor" }, /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "XL" = ( /obj/structure/statue/bone{ desc = "A towering menhir of bone, perhaps the colossal fang of some fallen beast."; @@ -1197,20 +1197,20 @@ }, /obj/effect/debris/cleanable/greenglow, /turf/simulated/floor/outdoors/grass/heavy/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Yd" = ( /obj/effect/debris/cleanable/dirt, /obj/effect/trap/pit/blood/deep{ id = "library_1" }, /turf/simulated/floor/wood, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Yg" = ( /obj/effect/trap/launcher/dart{ id = "east_hall_1" }, /turf/simulated/wall/dungeon, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "YP" = ( /obj/structure/table/marble, /obj/item/clothing/suit/space/void/wizard{ @@ -1225,32 +1225,32 @@ pixel_y = -32 }, /turf/simulated/floor/silver, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "YS" = ( /obj/structure/prop/prism/incremental{ degrees_from_north = 45 }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Zc" = ( /turf/simulated/floor/crystal, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Zu" = ( /obj/effect/trap/pop_up/flame{ id = "entry_corridor" }, /turf/simulated/floor/phoron, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Zw" = ( /obj/effect/ceiling, /mob/living/simple_mob/living_statue{ name = "eroded male statue" }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "Zx" = ( /turf/simulated/floor/water/acid/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ZM" = ( /obj/structure/grille/cult, /obj/structure/window/reinforced/polarized/full{ @@ -1259,10 +1259,10 @@ opacity = 1 }, /turf/simulated/floor, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) "ZV" = ( /turf/simulated/floor/outdoors/grass/heavy/indoors, -/area/class_p/POIs/archaic_temple) +/area/sector/class_p/POIs/archaic_temple) (1,1,1) = {" gr diff --git a/maps/submaps/level_specific/class_p/ruins1.dmm b/maps/submaps/level_specific/class_p/ruins1.dmm index 5f20f08ed970..f91fd8700694 100644 --- a/maps/submaps/level_specific/class_p/ruins1.dmm +++ b/maps/submaps/level_specific/class_p/ruins1.dmm @@ -1,58 +1,58 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/snow, -/area/class_p/ruins) +/area/sector/class_p/ruins) "k" = ( /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "C" = ( /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/ruins) +/area/sector/class_p/ruins) "E" = ( /turf/simulated/wall/snowbrick, -/area/class_p/ruins) +/area/sector/class_p/ruins) "H" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor, -/area/class_p/ruins) +/area/sector/class_p/ruins) "N" = ( /obj/structure/closet/crate/secure/loot, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/ruins) +/area/sector/class_p/ruins) "Q" = ( /obj/structure/table/survival_pod, /obj/random/triumph/uncertain, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "R" = ( /obj/structure/table, /obj/random/triumph/uncertain, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "S" = ( /obj/structure/table, /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/ruins) +/area/sector/class_p/ruins) "T" = ( /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "W" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_p/ruins2.dmm b/maps/submaps/level_specific/class_p/ruins2.dmm index 409cc720e07d..f6e8f74dc2e7 100644 --- a/maps/submaps/level_specific/class_p/ruins2.dmm +++ b/maps/submaps/level_specific/class_p/ruins2.dmm @@ -1,41 +1,41 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/snow, -/area/class_p/ruins) +/area/sector/class_p/ruins) "f" = ( /obj/random/triumph/uncertain, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "m" = ( /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "r" = ( /obj/structure/closet/crate/secure/loot, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "v" = ( /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/ruins) +/area/sector/class_p/ruins) "x" = ( /turf/simulated/wall, -/area/class_p/ruins) +/area/sector/class_p/ruins) "E" = ( /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "G" = ( /obj/item/reagent_containers/food/snacks/sliceable/pizza/margherita, /obj/structure/table, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "K" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_p/ruins3.dmm b/maps/submaps/level_specific/class_p/ruins3.dmm index bb4a8d47c0da..ef8493bd3d13 100644 --- a/maps/submaps/level_specific/class_p/ruins3.dmm +++ b/maps/submaps/level_specific/class_p/ruins3.dmm @@ -1,47 +1,47 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/snow, -/area/class_p/ruins) +/area/sector/class_p/ruins) "j" = ( /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "m" = ( /turf/simulated/wall, -/area/class_p/ruins) +/area/sector/class_p/ruins) "F" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "L" = ( /obj/structure/table/gamblingtable, /obj/random/triumph/uncertain, /turf/simulated/floor/carpet/purcarpet, -/area/class_p/ruins) +/area/sector/class_p/ruins) "M" = ( /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "N" = ( /obj/structure/closet/crate/secure/loot, /turf/simulated/floor/wood, -/area/class_p/ruins) +/area/sector/class_p/ruins) "O" = ( /obj/structure/bed, /turf/simulated/floor/carpet/purcarpet, -/area/class_p/ruins) +/area/sector/class_p/ruins) "Q" = ( /obj/random/mob/robotic/hivebot{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "S" = ( /turf/simulated/floor/carpet/purcarpet, -/area/class_p/ruins) +/area/sector/class_p/ruins) "W" = ( /turf/simulated/floor/wood, -/area/class_p/ruins) +/area/sector/class_p/ruins) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_p/ruins4.dmm b/maps/submaps/level_specific/class_p/ruins4.dmm index abc3a46ad830..93c04847c6a8 100644 --- a/maps/submaps/level_specific/class_p/ruins4.dmm +++ b/maps/submaps/level_specific/class_p/ruins4.dmm @@ -1,50 +1,50 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/floor/outdoors/snow, -/area/class_p/ruins) +/area/sector/class_p/ruins) "e" = ( /obj/random/triumph/uncertain, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "m" = ( /obj/structure/spider/stickyweb, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "n" = ( /obj/random/mob/sif/hostile{ mob_faction = "frozen" }, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "s" = ( /obj/structure/spider/cocoon, /obj/random/triumph/uncertain, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "t" = ( /obj/structure/spider/stickyweb, /obj/structure/closet/crate/secure/loot, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "w" = ( /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "B" = ( /turf/simulated/wall, -/area/class_p/ruins) +/area/sector/class_p/ruins) "F" = ( /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "I" = ( /obj/random/mob/sif/hostile{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "S" = ( /obj/structure/spider/stickyweb, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) (1,1,1) = {" a diff --git a/maps/submaps/level_specific/class_p/ruins5.dmm b/maps/submaps/level_specific/class_p/ruins5.dmm index 386017bb2c45..bdb5d8a0c0a3 100644 --- a/maps/submaps/level_specific/class_p/ruins5.dmm +++ b/maps/submaps/level_specific/class_p/ruins5.dmm @@ -1,39 +1,39 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "a" = ( /turf/simulated/wall, -/area/class_p/ruins) +/area/sector/class_p/ruins) "f" = ( /turf/simulated/floor/tiled/old_tile/green{ color = "#63A83A"; icon_state = "tile_full" }, -/area/class_p/ruins) +/area/sector/class_p/ruins) "i" = ( /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "v" = ( /obj/structure/closet/crate/secure/loot, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "B" = ( /obj/structure/loot_pile/mecha/gygax, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "C" = ( /obj/random/mob/sif/hostile{ mob_faction = "frozen" }, /turf/simulated/floor/outdoors/snow/no_tree, -/area/class_p/ruins) +/area/sector/class_p/ruins) "G" = ( /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) "R" = ( /obj/random/mob/sif/hostile{ mob_faction = "frozen" }, /turf/simulated/floor/plating/outdoors, -/area/class_p/ruins) +/area/sector/class_p/ruins) (1,1,1) = {" a From 65aa2b74afbf156469de47d3d3c641e42aeaac04 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 27 Jun 2026 05:52:34 -0700 Subject: [PATCH 30/44] that --- citadel.dme | 1 + code/modules/jigsaw/jigsaw_buffer.dm | 24 +++++++++- code/modules/jigsaw/jigsaw_chain_generator.dm | 5 ++- .../jigsaw/jigsaw_chain_generator_config.dm | 45 +++++++++++++++++++ .../modules/jigsaw/jigsaw_generator_config.dm | 13 +++++- .../legacy_jigsaw_worldgen_hijinks.dm | 31 ++++++++++++- 6 files changed, 113 insertions(+), 6 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_chain_generator_config.dm diff --git a/citadel.dme b/citadel.dme index 2f61f889f366..b6f4d44f2a31 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3477,6 +3477,7 @@ #include "code\modules\integrated_electronics\~defines\~defines.dm" #include "code\modules\jigsaw\jigsaw_buffer.dm" #include "code\modules\jigsaw\jigsaw_chain_generator.dm" +#include "code\modules\jigsaw\jigsaw_chain_generator_config.dm" #include "code\modules\jigsaw\jigsaw_chain_generator_results.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" #include "code\modules\jigsaw\jigsaw_generator_config.dm" diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 80a0f7002582..3406c0ff8ad0 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -8,6 +8,12 @@ var/datum/prototype/jigsaw_template/template var/datum/dmm_context/context +/** + * * Does not fire off atom init. + */ +/datum/jigsaw_buffer_enqueued/proc/load_into_world(lower_left_x, lower_left_y) as /datum/dmm_context + #warn impl + /** * * All lists are immutable and potentially (likely) shared for efficiency. */ @@ -157,10 +163,24 @@ src.grid[real_grid_x + src.width * (real_grid_y - 1)] = new /datum/jigsaw_buffer_tile/block_off(real_grid_x, real_grid_y) continue +/datum/jigsaw_buffer/proc/load_into_world(lower_left_x, lower_left_y) + ASSERT(!src.loaded, "Buffer already loaded into world.") + loaded = TRUE + + var/list/datum/dmm_context/loaded_contexts = list() + + for(var/datum/jigsaw_buffer_enqueued/enqueued in src.enqueued) + var/datum/dmm_context/loaded_context = context.load_into_world(lower_left_x, lower_left_y) + loaded_contexts += loaded_context + context.execute_pre_init() -// var/idx = ceil(root.x / TURF_ALIGNMENT) + grid_width * (ceil(root.y / TURF_ALIGNMENT) - 1) + for(var/datum/dmm_context/loaded_context in loaded_contexts) + if(!SSatoms.initialized) + SSatoms.init_map_bounds(loaded_context.loaded_bounds) + loaded_context.execute_post_init() -#warn impl + for(var/datum/map_context/context in src.enqueued_contexts) + context.execute_post_init() /datum/jigsaw_buffer/proc/cleanup() for(var/i in 1 to length(grid)) diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index f74abe7d2e32..dffe7a9fb888 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -5,9 +5,10 @@ * Runs multiple generator cycles on a buffer. */ /datum/jigsaw_chain_generator - var/prepared = FALSE - var/list/datum/jigsaw_generator_config/run_generator_configs = list() + var/datum/jigsaw_chain_generator_config/config +/datum/jigsaw_chain_generator/New(datum/jigsaw_chain_generator_config/config) + src.config = config /datum/jigsaw_chain_generator/proc/prepare() SHOULD_NOT_OVERRIDE(TRUE) diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm new file mode 100644 index 000000000000..54461d7d19c4 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -0,0 +1,45 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Runs multiple generator cycles on a buffer. + */ +/datum/jigsaw_chain_generator_config + var/prepared = FALSE + + /** + * Tile budget. + * * Overrules [tile_budget_ratio] if set. + * * Limits the total number of tiles generated by the chain-generation. + */ + var/tile_budget + /** + * Tile budget as a ratio of available tiles. + * * Limits the total number of tiles generated by the chain-generation. + */ + var/tile_budget_ratio + /** + * Custom budgets, key-value list of string-number. + * * This is applied in parallel with the existing generator config budgets, so + * if this is lower, this is applied instead of that. + */ + var/list/custom_budgets = list() + +/datum/jigsaw_chain_generator_config/proc/prepare() + SHOULD_NOT_OVERRIDE(TRUE) + + if(prepared) + CRASH("double-prepare; not all chain-generators are idempotent for prepare_impl().") + prepared = TRUE + #warn impl + +/datum/jigsaw_chain_generator_config/proc/prepare_impl() + PROTECTED_PROC(TRUE) + +/datum/jigsaw_chain_generator_config/proc/get_generator_configs() as /list + SHOULD_CALL_PARENT(TRUE) + prepare() + +#warn impl + +/datum/jigsaw_chain_generator_config/literally_everything diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index b0064245fb2c..cdb06b8fe0b3 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -2,7 +2,18 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_generator_config - var/tile_budget = 0 + /** + * Tile budget. + * * Overrules [tile_budget_ratio] if set. + */ + var/tile_budget + /** + * Tile budget as a ratio of available tiles. + */ + var/tile_budget_ratio + /** + * Custom budgets, key-value list of string-number. + */ var/list/custom_budgets = list() /** diff --git a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm index 04a6e9921cc6..118edec785aa 100644 --- a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm +++ b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm @@ -6,5 +6,34 @@ * with layers, this is what you get. */ /datum/legacy_jigsaw_worldgen_hijinks + #warn impl -#warn impl +/datum/legacy_jigsaw_worldgen_hijinks/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) + ..() + + if(!dmm_context) + return + + if(dmm_context.loaded_bounds[MAP_MINZ] != dmm_context.loaded_bounds[MAP_MAXZ]) + CRASH("legacy_noise_ores only supports injection on a single Z-level at a time") + + // x/y low are aligned towards bottom left + var/aligned_x_low = max(floor(dmm_context.loaded_bounds[MAP_MINX] / TURF_ALIGNMENT) * TURF_ALIGNMENT, TURF_ALIGNMENT) + 1 + var/aligned_y_low = max(floor(dmm_context.loaded_bounds[MAP_MINY] / TURF_ALIGNMENT) * TURF_ALIGNMENT, TURF_ALIGNMENT) + 1 + + // x/y high are aligned towards top right + var/aligned_x_high = min(ceil(dmm_context.loaded_bounds[MAP_MAXX] / TURF_ALIGNMENT) * TURF_ALIGNMENT, world.maxx - TURF_ALIGNMENT) + var/aligned_y_high = min(ceil(dmm_context.loaded_bounds[MAP_MAXY] / TURF_ALIGNMENT) * TURF_ALIGNMENT, world.maxy - TURF_ALIGNMENT) + + var/aligned_width = aligned_x_high - aligned_x_low + var/aligned_height = aligned_y_high - aligned_y_low + + var/grid_width = (aligned_width + 1) / TURF_ALIGNMENT + var/grid_height = (aligned_height + 1) / TURF_ALIGNMENT + + ASSERT(ISINTEGER(grid_width) && ISINTEGER(grid_height), "Grid width/height must be integer.") + + var/datum/jigsaw_chain_generator/generator = new + var/datum/jigsaw_buffer/buffer = new(grid_width, grid_height) + + #warn impl From e0c9997a36653b4d708587f9d1b0536c1dca2a9d Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 27 Jun 2026 06:08:48 -0700 Subject: [PATCH 31/44] update --- code/modules/jigsaw/jigsaw_buffer.dm | 2 +- code/modules/jigsaw/jigsaw_chain_generator.dm | 12 +----------- code/modules/jigsaw/jigsaw_chain_generator_config.dm | 4 ++-- code/modules/jigsaw/jigsaw_pattern.dm | 11 +++++++++++ code/modules/jigsaw/jigsaw_template.dm | 2 +- code/modules/jigsaw/jigsaw_template_pack.dm | 4 ++-- .../jigsaw/map_helper/jigsaw_aligned_spawner.dm | 4 ++-- 7 files changed, 20 insertions(+), 19 deletions(-) diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 3406c0ff8ad0..e9f6a40675b9 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -46,7 +46,7 @@ var/list/west_require var/list/west_exclude -/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_buffer_tile/tile) +/datum/jigsaw_buffer_tile/enqueued/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_buffer_tile/tile) ..(grid_x, grid_y) src.enqueued = enqueued diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index dffe7a9fb888..5af44b1821a9 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -10,16 +10,6 @@ /datum/jigsaw_chain_generator/New(datum/jigsaw_chain_generator_config/config) src.config = config -/datum/jigsaw_chain_generator/proc/prepare() - SHOULD_NOT_OVERRIDE(TRUE) - - if(prepared) - CRASH("double-prepare; not all chain-generators are idempotent for prepare_impl().") - prepared = TRUE - #warn impl - -/datum/jigsaw_chain_generator/proc/prepare_impl() - PROTECTED_PROC(TRUE) - +/datum/jigsaw_chain_generator/proc/ #warn impl diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index 54461d7d19c4..f8b62a78e7e3 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -29,9 +29,9 @@ SHOULD_NOT_OVERRIDE(TRUE) if(prepared) - CRASH("double-prepare; not all chain-generators are idempotent for prepare_impl().") + return prepared = TRUE - #warn impl + prepare_impl() /datum/jigsaw_chain_generator_config/proc/prepare_impl() PROTECTED_PROC(TRUE) diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index d61d2119ed1a..573e2f375ee6 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -13,6 +13,17 @@ */ var/list/datum/jigsaw_tile/pattern + /** + * Set if we have + * 1. no holes + * 2. no concave spots inside + * + * basically, if we're a rectangle. + * this stops the grid generator from having to fit us over more spts than + * it needs to. + */ + var/convex_optimizations = FALSE + /datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width src.height = height diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 5a2a79dac725..91264a1fcf21 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -86,7 +86,7 @@ var/datum/prototype/jigsaw_template/template /datum/prototype/jigsaw_template/override/prepare() - var/datum/prototype/jigsaw_template/resolved = fetch_cached_jigsaw_template(template) + var/datum/prototype/jigsaw_template/resolved = RSjigsaw_templates.fetch_local_or_throw(template) if(!resolved) CRASH("Invalid template override: [template]") resolved.prepare() diff --git a/code/modules/jigsaw/jigsaw_template_pack.dm b/code/modules/jigsaw/jigsaw_template_pack.dm index e13e465f5738..8bf23e873074 100644 --- a/code/modules/jigsaw/jigsaw_template_pack.dm +++ b/code/modules/jigsaw/jigsaw_template_pack.dm @@ -9,14 +9,14 @@ /datum/prototype/jigsaw_template_pack/proc/validate_templates() for(var/resolvable in src.templates) - var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + var/datum/prototype/jigsaw_template/template = RSjigsaw_templates.fetch_local_or_throw(resolvable) if(!template) CRASH("Invalid template '[resolvable]' detected in pack.") /datum/prototype/jigsaw_template_pack/proc/resolve_templates() as /list var/list/datum/prototype/jigsaw_template/resolved = list() for(var/resolvable in src.templates) - var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(resolvable) + var/datum/prototype/jigsaw_template/template = RSjigsaw_templates.fetch_local_or_throw(resolvable) if(!template) continue resolved += template diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 5d6c6db5ae8b..747eee65a0e4 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -8,7 +8,7 @@ early = TRUE - var/datum/jigsaw_generator_preset/preset = /datum/prototype/jigsaw_generator_preset/empty + var/datum/prototype/jigsaw_generator_preset/preset = /datum/prototype/jigsaw_generator_preset/empty var/respect_worldgen_overwrite_flags = TRUE /** @@ -19,7 +19,7 @@ var/tile_radius = 48 /obj/map_helper/jigsaw_aligned_spawner/New() - preset = RSjigsaw_presets.fetch_local_or_throw(preset) + preset = RSjigsaw_generator_presets.fetch_local_or_throw(preset) ..() /obj/map_helper/jigsaw_aligned_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) From a4bc19a6335313db04214f7892cc9b7d5983555e Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 27 Jun 2026 21:41:46 -0700 Subject: [PATCH 32/44] update --- code/__DEFINES/jigsaw.dm | 4 ---- code/modules/jigsaw/jigsaw_template.dm | 9 ++++----- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/code/__DEFINES/jigsaw.dm b/code/__DEFINES/jigsaw.dm index ff8cb9d74a7f..5a058e555cca 100644 --- a/code/__DEFINES/jigsaw.dm +++ b/code/__DEFINES/jigsaw.dm @@ -3,10 +3,6 @@ // --- Defines for 'jigsaw' module, a procedural dungeon / map generator. --- -#if TURF_ALIGNMENT != 8 - #error jigsaw maps were designed for 8x8 alignment. if you change this, rework .. everything? -#endif - //* Priorities *// /** diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 91264a1fcf21..19092273e85b 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -1,6 +1,10 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// +#if TURF_ALIGNMENT != 8 + #error jigsaw maps were designed for 8x8 alignment. if you change this, rework .. everything? +#endif + /** * A template for jigsaw generation. * * Templates are a multiple of alignment in width/height, plus one for border. This is @@ -14,11 +18,6 @@ var/name = "Dungeon Fragment" /// path on disk var/path - /// alignment - /// * alignment is the minimum size and must be a multiple of the actual size. - /// * generations must only use templates with the same alignment. - /// * templates are emplaced with one tile of overlap for their alignment. - var/alignment = 8 /// load priority /// * lower loads first, so anything with walls that are meant /// to be joinable via trampling should be lower priority From 240a93c019450e913b54cb7ecb6fcfb27401e4fc Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 28 Jun 2026 16:54:22 -0700 Subject: [PATCH 33/44] next for match --- code/modules/jigsaw/jigsaw_buffer.dm | 123 ++++++++++++++++++ code/modules/jigsaw/jigsaw_pattern.dm | 11 -- code/modules/jigsaw/jigsaw_template.dm | 15 ++- .../modules/jigsaw/jigsaw_template_pattern.dm | 2 +- .../fixed_template_seeding_target.dm | 43 +++++- .../modules/mapping/map_system/map_context.dm | 2 +- 6 files changed, 176 insertions(+), 20 deletions(-) diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index e9f6a40675b9..11b36dbf59ea 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -191,3 +191,126 @@ QDEL_LIST(enqueued) QDEL_LIST(enqueued_contexts) + +/datum/jigsaw_buffer/proc/template_fits_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) + var/width = template.width + var/height = template.height + + var/sideways = orientation & (EAST|WEST) + var/real_width = sideways? height : width + var/real_height = sideways? width : height + + if(lower_left_grid_x < 1 || lower_left_grid_y < 1) + return FALSE + if(lower_left_grid_x + real_width - 1 > src.width) + return FALSE + if(lower_left_grid_y + real_height - 1 > src.height) + return FALSE + + // sweep direction is static for the jigsaw pattern, + // and dependent on orientation for the buffer + + // since this is a hot loop, it's unrolled for performance + // SOUTH is treated as neutral due to BYOND defaulting to SOUTH. + + switch(orientation) + if(NORTH) + // 180 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (width - x) + var/real_y = lower_left_grid_y + (height - y) + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + if(SOUTH) + // 0 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + x - 1 + var/real_y = lower_left_grid_y + y - 1 + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + if(EAST) + // 270 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (height - y) + var/real_y = lower_left_grid_y + x - 1 + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + if(WEST) + // 90 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (y - 1) + var/real_y = lower_left_grid_y + (width - x) + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + return TRUE + +/** + * @return TRUE / FALSE + */ +/datum/jigsaw_buffer/proc/emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) + if(!template_fits_at(template, lower_left_grid_x, lower_left_grid_y, orientation)) + return FALSE + return unsafe_emplace_template_at(template, lower_left_grid_x, lower_left_grid_y, orientation) + +/datum/jigsaw_buffer/proc/unsafe_emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) + + // sweep direction is static for the jigsaw pattern, + // and dependent on orientation for the buffer + + // since this is a hot loop, it's unrolled for performance + // SOUTH is treated as neutral due to BYOND defaulting to SOUTH. + + switch(orientation) + if(NORTH) + // 180 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (width - x) + var/real_y = lower_left_grid_y + (height - y) + src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile/enqueued(real_x, real_y, new /datum/jigsaw_buffer_enqueued(template, lower_left_grid_x, lower_left_grid_y, orientation), template.pattern[x + width * (y - 1)]) + if(tile) + return FALSE + + if(SOUTH) + // 0 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + x - 1 + var/real_y = lower_left_grid_y + y - 1 + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + if(EAST) + // 270 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (height - y) + var/real_y = lower_left_grid_y + x - 1 + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + if(WEST) + // 90 deg CW + for(var/x in 1 to width) + for(var/y in 1 to height) + var/real_x = lower_left_grid_x + (y - 1) + var/real_y = lower_left_grid_y + (width - x) + var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] + if(tile) + return FALSE + + return TRUE diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index 573e2f375ee6..d61d2119ed1a 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -13,17 +13,6 @@ */ var/list/datum/jigsaw_tile/pattern - /** - * Set if we have - * 1. no holes - * 2. no concave spots inside - * - * basically, if we're a rectangle. - * this stops the grid generator from having to fit us over more spts than - * it needs to. - */ - var/convex_optimizations = FALSE - /datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width src.height = height diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 19092273e85b..671193ebbcf5 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -55,21 +55,26 @@ /// parsed map if held var/datum/dmm_parsed/parsed +/** + * Should be called before being used by the generator. + */ /datum/prototype/jigsaw_template/proc/prepare() return /datum/prototype/jigsaw_template/proc/unload_cache() parsed = null + resultant_pattern = null /datum/prototype/jigsaw_template/proc/load_cached() - if(parsed) - return - parsed = new(path) + if(!parsed) + parsed = new(path) + if(!resultant_pattern) + #warn this and more? + resultant_pattern = pattern.get_pattern() /datum/prototype/jigsaw_template/override name = null path = null - alignment = null offset_x = null offset_y = null @@ -94,8 +99,6 @@ src.name = resolved.name if(isnull(src.path)) src.path = resolved.path - if(isnull(src.alignment)) - src.alignment = resolved.alignment if(isnull(src.offset_x)) src.offset_x = resolved.offset_x diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index dec288a1bee9..dd9695d58ae4 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -13,7 +13,7 @@ * Returns a potentially-cached pattern. */ /datum/jigsaw_template_pattern/proc/get_pattern() as /datum/jigsaw_pattern - return new /datum/jigsaw_pattern(0, 0) + return new /datum/jigsaw_pattern(0, 0, override_tile_cost) #warn emplace diff --git a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm index 59ce78d2e32e..e0b5cff6e190 100644 --- a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm +++ b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm @@ -26,12 +26,53 @@ /obj/map_helper/fixed_template_seeding_target/proc/emplace_template(datum/map_template/template, datum/dmm_context/context) SHOULD_NOT_OVERRIDE(TRUE) + if(emplaced) + CRASH("attempted to double-emplace template [template] into [src] ([REF(src)]) at coords [COORD(src)]") + emplaced = TRUE do_emplace_template(template, context) /obj/map_helper/fixed_template_seeding_target/proc/do_emplace_template(datum/map_template/template, datum/dmm_context/context) PROTECTED_PROC(TRUE) -#warn impl + CRASH("not implemented") /obj/map_helper/fixed_template_seeding_target/corner_aligned + #warn sprite for this and subtypes + + icon_x_dimension = 96 + icon_y_dimension = 96 + +/obj/map_helper/fixed_template_seeding_target/corner_aligned/do_emplace_template(datum/map_template/template, datum/dmm_context/context) + PROTECTED_PROC(TRUE) + + // we're always on the corner, so we just have to align it with us and do orientation stuff + + template.load_standalone(target_corner, orientation = ORIENTATION_SOUTH) + + var/width = template.width + var/height = template.height + var/sideways = orientation & (EAST|WEST) + var/real_width = sideways? height : width + var/real_height = sideways? width : height + #warn impl; do dirs too + icons + +/obj/map_helper/fixed_template_seeding_target/corner_aligned/bottom_left + icon_state = "bottom_left" + pixel_x = 0 + pixel_y = 0 + +/obj/map_helper/fixed_template_seeding_target/corner_aligned/bottom_right + icon_state = "bottom_right" + pixel_x = -64 + pixel_y = 0 + +/obj/map_helper/fixed_template_seeding_target/corner_aligned/top_left + icon_state = "top_left" + pixel_x = 0 + pixel_y = -64 + +/obj/map_helper/fixed_template_seeding_target/corner_aligned/top_right + icon_state = "top_right" + pixel_x = -64 + pixel_y = -64 diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 96f4ca8580f3..c20ea8885d89 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -61,7 +61,7 @@ /// collected gear markers var/list/obj/map_helper/gear_marker/distributed/collected_distributed_gear_markers /// collected gear markers - var/list/obj/map_helper/gear_marker/stamped/collected_stamped_gear_markers_by_role + var/list/obj/map_helper/gear_marker/role/collected_role_gear_markers_by_role /// collected role markers var/list/obj/map_helper/role_marker/collected_role_markers_by_tag /// collected fixed template seeding targets From 0a78c63111c85f485db2f96a68a8628c03faf333 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Fri, 10 Jul 2026 02:03:49 -0700 Subject: [PATCH 34/44] hm --- .../subsystem/mapping/mapping-levels.dm | 3 + code/modules/jigsaw/jigsaw_buffer.dm | 59 +++++++-------- code/modules/jigsaw/jigsaw_chain_generator.dm | 20 ++++- .../jigsaw/jigsaw_chain_generator_results.dm | 2 - .../jigsaw/jigsaw_generator_results.dm | 10 ++- code/modules/jigsaw/jigsaw_pattern.dm | 74 +++++++++++++++++++ .../modules/jigsaw/jigsaw_template_pattern.dm | 24 +++--- code/modules/jigsaw/jigsaw_tile.dm | 8 +- .../mapping/map_system/map_level-load.dm | 1 - maps/sectors/miaphus/miaphus.dm | 2 +- 10 files changed, 151 insertions(+), 52 deletions(-) diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index 2e38c422b7d0..18ebd53fd972 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -291,6 +291,9 @@ // immediately update munltiz cache rebuild_multiz_lookup(instance.z_index) + // fire on loaded + instance.on_loaded(map_context, dmm_context, instance.z_index) + // fire pre-init hooks dmm_context.execute_pre_init() diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 11b36dbf59ea..9ca20cf92005 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -23,51 +23,52 @@ var/blocked_off = FALSE -/datum/jigsaw_buffer_tile/New(grid_x, grid_y) - src.grid_x = grid_x - src.grid_y = grid_y - -/datum/jigsaw_buffer_tile/enqueued + /** + * * Nullable + */ var/datum/jigsaw_buffer_enqueued/enqueued - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude -/datum/jigsaw_buffer_tile/enqueued/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_buffer_tile/tile) - ..(grid_x, grid_y) +/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile) + src.grid_x = grid_x + src.grid_y = grid_y - src.enqueued = enqueued + if(enqueued) + src.enqueued = enqueued - src.north_match = tile.north_match - src.north_require = tile.north_require - src.north_exclude = tile.north_exclude + if(tile) + src.north_tags = tile.north_tags + src.north_require = tile.north_require + src.north_exclude = tile.north_exclude - src.south_match = tile.south_match - src.south_require = tile.south_require - src.south_exclude = tile.south_exclude + src.south_tags = tile.south_tags + src.south_require = tile.south_require + src.south_exclude = tile.south_exclude - src.east_match = tile.east_match - src.east_require = tile.east_require - src.east_exclude = tile.east_exclude + src.east_tags = tile.east_tags + src.east_require = tile.east_require + src.east_exclude = tile.east_exclude - src.west_match = tile.west_match - src.west_require = tile.west_require - src.west_exclude = tile.west_exclude + src.west_tags = tile.west_tags + src.west_require = tile.west_require + src.west_exclude = tile.west_exclude -/datum/jigsaw_buffer_tile/enqueued/Destroy() +/datum/jigsaw_buffer_tile/Destroy() src.enqueued = null return ..() @@ -170,9 +171,9 @@ var/list/datum/dmm_context/loaded_contexts = list() for(var/datum/jigsaw_buffer_enqueued/enqueued in src.enqueued) - var/datum/dmm_context/loaded_context = context.load_into_world(lower_left_x, lower_left_y) + var/datum/dmm_context/loaded_context = enqueued.load_into_world(lower_left_x, lower_left_y) loaded_contexts += loaded_context - context.execute_pre_init() + loaded_context.execute_pre_init() for(var/datum/dmm_context/loaded_context in loaded_contexts) if(!SSatoms.initialized) @@ -193,8 +194,8 @@ QDEL_LIST(enqueued_contexts) /datum/jigsaw_buffer/proc/template_fits_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) - var/width = template.width - var/height = template.height + var/width = template.resultant_pattern.width + var/height = template.resultant_pattern.height var/sideways = orientation & (EAST|WEST) var/real_width = sideways? height : width diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index 5af44b1821a9..516ca966cd5f 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -10,6 +10,22 @@ /datum/jigsaw_chain_generator/New(datum/jigsaw_chain_generator_config/config) src.config = config -/datum/jigsaw_chain_generator/proc/ +/datum/jigsaw_chain_generator/proc/generate(datum/jigsaw_buffer/buffer) + var/datum/jigsaw_chain_generator_results/results = new -#warn impl + config.prepare() + var/list/datum/jigsaw_generator_config/generator_configs = config.get_generator_configs() + + for(var/datum/jigsaw_generator_config/generator_config in generator_configs) + var/datum/jigsaw_generator/generator = new(generator_config) + var/datum/jigsaw_generator_results/generator_results = generator.generate(buffer) + + results.add(generator_results) + results.total_approximate_ms_used += generator_results.approximate_ms_used + results.total_tile_budget_used += generator_results.tile_budget_used + for(var/key in generator_results.custom_budget_used) + results.total_custom_budget_used[i] += generator_results.custom_budget_used[i] + + return results + + #warn impl diff --git a/code/modules/jigsaw/jigsaw_chain_generator_results.dm b/code/modules/jigsaw/jigsaw_chain_generator_results.dm index 8124ff03b2c4..c9e82be24818 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_results.dm @@ -7,5 +7,3 @@ var/tmp/total_approximate_ms_used = 0 var/tmp/total_tile_budget_used = 0 var/tmp/list/total_custom_budgets_used = list() - -#warn impl diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index c402c290de66..5254f7f44d4c 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -2,8 +2,16 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_generator_results - var/approximate_ms_used = 0 + /** + * Considered failed. + * * To ensure nothing was placed, you should still check the other variables. + * Failing to place required templates (Even if some were already placed) is considered a failure. + */ + var/failed = FALSE + var/list/datum/prototype/jigsaw_template/placed_counts = list() + + var/approximate_ms_used = 0 var/tile_budget_used = 0 var/list/custom_budgets_used = list() diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index d61d2119ed1a..acc066c4ba2c 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -13,6 +13,24 @@ */ var/list/datum/jigsaw_tile/pattern + /** + * Calculated attachment points. + * * [tag] = list(x, y, orientation, list(tags)) + * * orientation is facing away from the join point; this allows + * whatever is checking for valid joins to not have to rotate its own sense of sided-ness. + * * this allows a 'fast' linear list match/check for a given tag + * rather than needing to rescan every time + * * calculated the first time we need it + * * x and y are in grid tiles, and are the offsets. '0, 0, NORTH, list(...)' + * means the bottom left tile's SOUTH side has those tags, because + * this allways an easy alignment check (as a NORTH side of a tile needs to match it). + * * As another example, `3, 0, WEST, list(...)` means the **fourth** tile (0-indexed for offset!) + * from the left, on the bottom row, has those tags on the EAST side. + * * As another example, `1, 2, SOUTH, list(...)` means the second tile from the left, + * third from the bottom, has those tags on the NORTH side. + */ + var/list/tmp/datum/jigsaw_pattern/calculated_attachment_points + /datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width src.height = height @@ -31,3 +49,59 @@ cached_tile_cost += 1 return cached_tile_cost + +/datum/jigsaw_pattern/proc/get_attachment_points() + if(calculated_attachment_points) + return calculated_attachment_points + + calculated_attachment_points = list() + + for(var/x in 1 to width) + for(var/y in 1 to height) + var/datum/jigsaw_tile/tile = pattern[(y - 1) * width + x] + + // north + if(tile.north_tags) + var/is_edge = y == height || !pattern[(y) * width + x] + if(is_edge) + calculated_attachment_points[++calculated_attachment_points.len] = list( + x - 1, + y - 1, + SOUTH, + tile.north_tags, + ) + + // south + if(tile.south_tags) + var/is_edge = y == 1 || !pattern[(y - 2) * width + x] + if(is_edge) + calculated_attachment_points[++calculated_attachment_points.len] = list( + x - 1, + y - 1, + NORTH, + tile.south_tags, + ) + + // east + if(tile.east_tags) + var/is_edge = x == width || !pattern[(y - 1) * width + (x + 1)] + if(is_edge) + calculated_attachment_points[++calculated_attachment_points.len] = list( + x - 1, + y - 1, + WEST, + tile.east_tags, + ) + + // west + if(tile.west_tags) + var/is_edge = x == 1 || !pattern[(y - 1) * width + (x - 1)] + if(is_edge) + calculated_attachment_points[++calculated_attachment_points.len] = list( + x - 1, + y - 1, + EAST, + tile.west_tags, + ) + + return calculated_attachment_points diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index dd9695d58ae4..9922a650edec 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -56,19 +56,19 @@ width = 1 height = 1 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude @@ -76,7 +76,7 @@ width = 2 height = 2 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude var/list/south_left_match @@ -86,7 +86,7 @@ var/list/south_right_require var/list/south_right_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude var/list/north_left_match @@ -96,7 +96,7 @@ var/list/north_right_require var/list/north_right_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude var/list/east_top_match @@ -106,7 +106,7 @@ var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude var/list/west_top_match @@ -120,7 +120,7 @@ width = 3 height = 3 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude var/list/south_left_match @@ -133,7 +133,7 @@ var/list/south_right_require var/list/south_right_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude var/list/north_left_match @@ -146,7 +146,7 @@ var/list/north_right_require var/list/north_right_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude var/list/east_top_match @@ -159,7 +159,7 @@ var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude var/list/west_top_match diff --git a/code/modules/jigsaw/jigsaw_tile.dm b/code/modules/jigsaw/jigsaw_tile.dm index 60837c712205..30b6f49ef463 100644 --- a/code/modules/jigsaw/jigsaw_tile.dm +++ b/code/modules/jigsaw/jigsaw_tile.dm @@ -13,18 +13,18 @@ * * Exclude is tags that must NOT be present on the other side of the adjacent tile */ /datum/jigsaw_tile - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude diff --git a/code/modules/mapping/map_system/map_level-load.dm b/code/modules/mapping/map_system/map_level-load.dm index 4b97e069560b..91bcb40c79a9 100644 --- a/code/modules/mapping/map_system/map_level-load.dm +++ b/code/modules/mapping/map_system/map_level-load.dm @@ -17,7 +17,6 @@ * * dmm_context - context for this level's own base dmm * * z_index - zlevel we loaded on */ -#warn audit calls /datum/map_level/proc/on_loaded(datum/map_context/map_context, datum/dmm_context/dmm_context, z_level) SHOULD_CALL_PARENT(TRUE) diff --git a/maps/sectors/miaphus/miaphus.dm b/maps/sectors/miaphus/miaphus.dm index e730789000ca..27583046e79f 100644 --- a/maps/sectors/miaphus/miaphus.dm +++ b/maps/sectors/miaphus/miaphus.dm @@ -14,7 +14,7 @@ /datum/map_level/sector/miaphus base_turf = /turf/simulated/floor/outdoors/beach/sand/desert - traits = list( + traits = lwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwist( ZTRAIT_GRAVITY, ) planet_path = /datum/planet/miaphus From 9bb44a4c876db8d229e8195365876cd973515eeb Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 15 Jul 2026 04:03:06 -0700 Subject: [PATCH 35/44] those --- code/modules/jigsaw/jigsaw_buffer.dm | 148 ++++++++++--- .../modules/jigsaw/jigsaw_generator_config.dm | 11 +- .../modules/jigsaw/jigsaw_template_pattern.dm | 206 +++++++++++++++--- .../map_helper/jigsaw_aligned_spawner.dm | 2 +- maps/sectors/miaphus/miaphus.dm | 2 +- 5 files changed, 304 insertions(+), 65 deletions(-) diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 9ca20cf92005..f31664969882 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -4,6 +4,9 @@ /datum/jigsaw_buffer_enqueued var/lower_left_grid_x var/lower_left_grid_y + /** + * * Starts at SOUTH. + */ var/orientation var/datum/prototype/jigsaw_template/template var/datum/dmm_context/context @@ -44,7 +47,7 @@ var/list/west_require var/list/west_exclude -/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile) +/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile, orientation) src.grid_x = grid_x src.grid_y = grid_y @@ -52,21 +55,87 @@ src.enqueued = enqueued if(tile) - src.north_tags = tile.north_tags - src.north_require = tile.north_require - src.north_exclude = tile.north_exclude + switch(orientation) + // yeah so the fun part + // these get rotated based on orientation + // because these are always true-north (oriented to the buffer as a whole) + + if(SOUTH) + // 0 deg clockwise + + src.north_tags = tile.north_tags + src.north_require = tile.north_require + src.north_exclude = tile.north_exclude + + src.south_tags = tile.south_tags + src.south_require = tile.south_require + src.south_exclude = tile.south_exclude + + src.east_tags = tile.east_tags + src.east_require = tile.east_require + src.east_exclude = tile.east_exclude + + src.west_tags = tile.west_tags + src.west_require = tile.west_require + src.west_exclude = tile.west_exclude + + if(NORTH) + // 180 deg clockwise + + src.north_tags = tile.south_tags + src.north_require = tile.south_require + src.north_exclude = tile.south_exclude + + src.south_tags = tile.north_tags + src.south_require = tile.north_require + src.south_exclude = tile.north_exclude + + src.east_tags = tile.west_tags + src.east_require = tile.west_require + src.east_exclude = tile.west_exclude + + src.west_tags = tile.east_tags + src.west_require = tile.east_require + src.west_exclude = tile.east_exclude + + if(EAST) + // 270 deg clockwise / 90 deg counterclockwise + + src.north_tags = tile.east_tags + src.north_require = tile.east_require + src.north_exclude = tile.east_exclude + + src.south_tags = tile.west_tags + src.south_require = tile.west_require + src.south_exclude = tile.west_exclude + + src.east_tags = tile.south_tags + src.east_require = tile.south_require + src.east_exclude = tile.south_exclude + + src.west_tags = tile.north_tags + src.west_require = tile.north_require + src.west_exclude = tile.north_exclude - src.south_tags = tile.south_tags - src.south_require = tile.south_require - src.south_exclude = tile.south_exclude + if(WEST) + // 90 deg clockwise / 270 deg counterclockwise - src.east_tags = tile.east_tags - src.east_require = tile.east_require - src.east_exclude = tile.east_exclude + src.north_tags = tile.west_tags + src.north_require = tile.west_require + src.north_exclude = tile.west_exclude + + src.south_tags = tile.east_tags + src.south_require = tile.east_require + src.south_exclude = tile.east_exclude + + src.east_tags = tile.north_tags + src.east_require = tile.north_require + src.east_exclude = tile.north_exclude + + src.west_tags = tile.south_tags + src.west_require = tile.south_require + src.west_exclude = tile.south_exclude - src.west_tags = tile.west_tags - src.west_require = tile.west_require - src.west_exclude = tile.west_exclude /datum/jigsaw_buffer_tile/Destroy() src.enqueued = null @@ -130,7 +199,7 @@ return TRUE -/datum/jigsaw_buffer/proc/block_off_according_to_world_at(lower_left_x, lower_left_y, respect_worldgen_overwrite_flags) +/datum/jigsaw_buffer/proc/block_off_according_to_world_at(lower_left_x, lower_left_y, z, respect_worldgen_overwrite_flags) // scan for obstructions var/x_low = lower_left_x var/y_low = lower_left_y @@ -194,6 +263,8 @@ QDEL_LIST(enqueued_contexts) /datum/jigsaw_buffer/proc/template_fits_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) + template.load_cached() + var/width = template.resultant_pattern.width var/height = template.resultant_pattern.height @@ -273,6 +344,15 @@ // since this is a hot loop, it's unrolled for performance // SOUTH is treated as neutral due to BYOND defaulting to SOUTH. + var/datum/jigsaw_buffer_enqueued/enqueued = new /datum/jigsaw_buffer_enqueued( + template, + lower_left_grid_x, + lower_left_grid_y, + orientation + ) + + var/list/pattern = template.resultant_pattern.pattern + switch(orientation) if(NORTH) // 180 deg CW @@ -280,9 +360,13 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (width - x) var/real_y = lower_left_grid_y + (height - y) - src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile/enqueued(real_x, real_y, new /datum/jigsaw_buffer_enqueued(template, lower_left_grid_x, lower_left_grid_y, orientation), template.pattern[x + width * (y - 1)]) - if(tile) - return FALSE + src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + real_x, + real_y, + enqueued, + pattern[x + width * (y - 1)], + NORTH, + ) if(SOUTH) // 0 deg CW @@ -290,9 +374,13 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + x - 1 var/real_y = lower_left_grid_y + y - 1 - var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] - if(tile) - return FALSE + src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + real_x, + real_y, + enqueued, + pattern[x + width * (y - 1)], + SOUTH, + ) if(EAST) // 270 deg CW @@ -300,9 +388,13 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (height - y) var/real_y = lower_left_grid_y + x - 1 - var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] - if(tile) - return FALSE + src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + real_x, + real_y, + enqueued, + pattern[x + width * (y - 1)], + EAST, + ) if(WEST) // 90 deg CW @@ -310,8 +402,12 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (y - 1) var/real_y = lower_left_grid_y + (width - x) - var/datum/jigsaw_buffer_tile/tile = src.grid[real_x + src.width * (real_y - 1)] - if(tile) - return FALSE + src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + real_x, + real_y, + enqueued, + pattern[x + width * (y - 1)], + WEST, + ) return TRUE diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index cdb06b8fe0b3..415c7e0e719a 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -37,11 +37,6 @@ return result /datum/jigsaw_template_resultant_config - /// alignment - /// * this is minimum dimensions (width and height); width and height of - /// all templates must be in alignment multiples plus one tile of border in each side - var/alignment = 8 - /// always start with these templates, if exists /// * may be typepaths or instances /// * this ignores budget and will not take from it. @@ -74,11 +69,11 @@ /datum/jigsaw_template_config/everything/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new - results.budgets = budgets.Copy() + result.budgets = budgets.Copy() for(var/datum/prototype/jigsaw_template/path as anything in subtypesof(/datum/prototype/jigsaw_template)) if(path.abstract_type == path) continue - var/datum/prototype/jigsaw_template/template = fetch_cached_jigsaw_template(path) + var/datum/prototype/jigsaw_template/template = RSjigsaw_templates.fetch_local_or_throw(path) result.weighted_templates[template] = 1 return result @@ -109,5 +104,5 @@ result.weighted_templates = weighted_templates.Copy() result.priority_templates = priority_templates.Copy() result.required_templates = required_templates.Copy() - results.budgets = budgets.Copy() + result.budgets = budgets.Copy() return result diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index 9922a650edec..32452da74a37 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -15,9 +15,6 @@ /datum/jigsaw_template_pattern/proc/get_pattern() as /datum/jigsaw_pattern return new /datum/jigsaw_pattern(0, 0, override_tile_cost) - -#warn emplace - /** * rect bounding box over the template. the template is lower-left * aligned to this box. @@ -37,46 +34,56 @@ */ var/height - /** - * If for whatever reason you need to offset (in alignment multiples), this lets you do it. - * As an example, you can offset -1, -1 for a three-by-three on a 1x1 to effectively - * center it. - * * This is in alignment multiples, not tiles. - */ - var/x_offset = 0 - /** - * If for whatever reason you need to offset (in alignment multiples), this lets you do it. - * As an example, you can offset -1, -1 for a three-by-three on a 1x1 to effectively - * center it. - * * This is in alignment multiples, not tiles. - */ - var/y_offset = 0 +/datum/jigsaw_template_pattern/rect/get_pattern() + var/datum/jigsaw_pattern/pattern = new(width, height, override_tile_cost) + return pattern /datum/jigsaw_template_pattern/rect/s_1x1 width = 1 height = 1 - var/list/south_tags + var/list/south_match var/list/south_require var/list/south_exclude - var/list/north_tags + var/list/north_match var/list/north_require var/list/north_exclude - var/list/east_tags + var/list/east_match var/list/east_require var/list/east_exclude - var/list/west_tags + var/list/west_match var/list/west_require var/list/west_exclude +/datum/jigsaw_template_pattern/rect/s_1x1/get_pattern() + var/datum/jigsaw_pattern/pattern = ..() + + var/datum/jigsaw_tile/tile = new + tile.north_exclude = north_exclude + tile.north_require = north_require + tile.north_match = north_match + tile.south_exclude = south_exclude + tile.south_require = south_require + tile.south_match = south_match + tile.east_exclude = east_exclude + tile.east_require = east_require + tile.east_match = east_match + tile.west_exclude = west_exclude + tile.west_require = west_require + tile.west_match = west_match + + pattern.pattern[1] = tile + + return pattern + /datum/jigsaw_template_pattern/rect/s_2x2 width = 2 height = 2 - var/list/south_tags + var/list/south_match var/list/south_require var/list/south_exclude var/list/south_left_match @@ -86,7 +93,7 @@ var/list/south_right_require var/list/south_right_exclude - var/list/north_tags + var/list/north_match var/list/north_require var/list/north_exclude var/list/north_left_match @@ -96,7 +103,7 @@ var/list/north_right_require var/list/north_right_exclude - var/list/east_tags + var/list/east_match var/list/east_require var/list/east_exclude var/list/east_top_match @@ -106,7 +113,7 @@ var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_tags + var/list/west_match var/list/west_require var/list/west_exclude var/list/west_top_match @@ -116,11 +123,63 @@ var/list/west_bottom_require var/list/west_bottom_exclude + +/datum/jigsaw_template_pattern/rect/s_2x2/get_pattern() + var/datum/jigsaw_pattern/pattern = ..() + + var/datum/jigsaw_tile/tile + + // top left + tile = new + tile.north_exclude = north_left_exclude || north_exclude + tile.north_require = north_left_require || north_require + tile.north_match = north_left_match || north_match + tile.west_exclude = west_top_exclude || west_exclude + tile.west_require = west_top_require || west_require + tile.west_match = west_top_match || west_match + + pattern.pattern[3] = tile + + // top right + tile = new + tile.north_exclude = north_right_exclude || north_exclude + tile.north_require = north_right_require || north_require + tile.north_match = north_right_match || north_match + tile.east_exclude = east_top_exclude || east_exclude + tile.east_require = east_top_require || east_require + tile.east_match = east_top_match || east_match + + pattern.pattern[4] = tile + + // bottom left + tile = new + tile.south_exclude = south_left_exclude || south_exclude + tile.south_require = south_left_require || south_require + tile.south_match = south_left_match || south_match + tile.west_exclude = west_bottom_exclude || west_exclude + tile.west_require = west_bottom_require || west_require + tile.west_match = west_bottom_match || west_match + + pattern.pattern[1] = tile + + // bottom right + tile = new + tile.south_exclude = south_right_exclude || south_exclude + tile.south_require = south_right_require || south_require + tile.south_match = south_right_match || south_match + tile.east_exclude = east_bottom_exclude || east_exclude + tile.east_require = east_bottom_require || east_require + tile.east_match = east_bottom_match || east_match + + pattern.pattern[2] = tile + + return pattern + /datum/jigsaw_template_pattern/rect/s_3x3 width = 3 height = 3 - var/list/south_tags + var/list/south_match var/list/south_require var/list/south_exclude var/list/south_left_match @@ -133,7 +192,7 @@ var/list/south_right_require var/list/south_right_exclude - var/list/north_tags + var/list/north_match var/list/north_require var/list/north_exclude var/list/north_left_match @@ -146,7 +205,7 @@ var/list/north_right_require var/list/north_right_exclude - var/list/east_tags + var/list/east_match var/list/east_require var/list/east_exclude var/list/east_top_match @@ -159,7 +218,7 @@ var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_tags + var/list/west_match var/list/west_require var/list/west_exclude var/list/west_top_match @@ -171,3 +230,92 @@ var/list/west_bottom_match var/list/west_bottom_require var/list/west_bottom_exclude + +/datum/jigsaw_template_pattern/rect/s_3x3/get_pattern() + var/datum/jigsaw_pattern/pattern = ..() + + var/datum/jigsaw_tile/tile + + // bottom left + tile = new + tile.south_exclude = south_left_exclude || south_exclude + tile.south_require = south_left_require || south_require + tile.south_match = south_left_match || south_match + tile.west_exclude = west_bottom_exclude || west_exclude + tile.west_require = west_bottom_require || west_require + tile.west_match = west_bottom_match || west_match + + pattern.pattern[(1 - 1) + 1] = tile + + // bottom middle + tile = new + tile.south_exclude = south_middle_exclude || south_exclude + tile.south_require = south_middle_require || south_require + tile.south_match = south_middle_match || south_match + + pattern.pattern[(1 - 1) + 2] = tile + + // bottom right + tile = new + tile.south_exclude = south_right_exclude || south_exclude + tile.south_require = south_right_require || south_require + tile.south_match = south_right_match || south_match + tile.east_exclude = east_bottom_exclude || east_exclude + tile.east_require = east_bottom_require || east_require + tile.east_match = east_bottom_match || east_match + + pattern.pattern[(1 - 1) + 3] = tile + + // middle left + tile = new + tile.west_exclude = west_middle_exclude || west_exclude + tile.west_require = west_middle_require || west_require + tile.west_match = west_middle_match || west_match + + pattern.pattern[(2 - 1) + 1] = tile + + // middle middle + tile = new + + pattern.pattern[(2 - 1) + 2] = tile + + // middle right + tile = new + tile.east_exclude = east_middle_exclude || east_exclude + tile.east_require = east_middle_require || east_require + tile.east_match = east_middle_match || east_match + + pattern.pattern[(2 - 1) + 3] = tile + + // top left + tile = new + tile.north_exclude = north_left_exclude || north_exclude + tile.north_require = north_left_require || north_require + tile.north_match = north_left_match || north_match + tile.west_exclude = west_top_exclude || west_exclude + tile.west_require = west_top_require || west_require + tile.west_match = west_top_match || west_match + + pattern.pattern[(3 - 1) + 1] = tile + + // top middle + tile = new + tile.north_exclude = north_middle_exclude || north_exclude + tile.north_require = north_middle_require || north_require + tile.north_match = north_middle_match || north_match + + pattern.pattern[(3 - 1) + 2] = tile + + // top right + tile = new + tile.north_exclude = north_right_exclude || north_exclude + tile.north_require = north_right_require || north_require + tile.north_match = north_right_match || north_match + tile.east_exclude = east_top_exclude || east_exclude + tile.east_require = east_top_require || east_require + tile.east_match = east_top_match || east_match + + pattern.pattern[(3 - 1) + 3] = tile + + return pattern + diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 747eee65a0e4..01a3beadfa55 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -61,7 +61,7 @@ ASSERT(buffer.fits_in_world_at(aligned_x_low, aligned_y_low), "Buffer must fit in world at aligned coordinates.") - buffer.block_off_according_to_world_at(aligned_x_low, aligned_y_low, respect_worldgen_overwrite_flags) + buffer.block_off_according_to_world_at(aligned_x_low, aligned_y_low, z, respect_worldgen_overwrite_flags) // generate var/datum/jigsaw_generator/generator = new(preset.get_config()) diff --git a/maps/sectors/miaphus/miaphus.dm b/maps/sectors/miaphus/miaphus.dm index 27583046e79f..e730789000ca 100644 --- a/maps/sectors/miaphus/miaphus.dm +++ b/maps/sectors/miaphus/miaphus.dm @@ -14,7 +14,7 @@ /datum/map_level/sector/miaphus base_turf = /turf/simulated/floor/outdoors/beach/sand/desert - traits = lwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwist( + traits = list( ZTRAIT_GRAVITY, ) planet_path = /datum/planet/miaphus From 303dd0fc9b09cc23365bc3bd171f7b9786de058b Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 18 Jul 2026 09:17:14 -0700 Subject: [PATCH 36/44] one less arg is good --- citadel.dme | 7 + .../subsystem/mapping/mapping-levels.dm | 5 - .../subsystem/mapping/mapping-maps.dm | 3 - code/modules/jigsaw/jigsaw_buffer.dm | 155 +----------------- code/modules/jigsaw/jigsaw_buffer_enqueued.dm | 44 +++++ code/modules/jigsaw/jigsaw_buffer_tile.dm | 128 +++++++++++++++ .../jigsaw/jigsaw_chain_generator_config.dm | 38 ++++- ...jigsaw_chain_generator_resultant_config.dm | 33 ++++ .../modules/jigsaw/jigsaw_generator_config.dm | 92 +---------- .../modules/jigsaw/jigsaw_generator_preset.dm | 11 +- .../jigsaw/jigsaw_generator_results.dm | 13 +- code/modules/jigsaw/jigsaw_spawn_config.dm | 14 ++ .../jigsaw/jigsaw_spawn_resultant_config.dm | 12 ++ code/modules/jigsaw/jigsaw_template.dm | 8 + code/modules/jigsaw/jigsaw_template_config.dm | 43 +++++ .../jigsaw_template_resultant_config.dm | 20 +++ code/modules/mapping/dmm_suite/dmm_context.dm | 8 + code/modules/mapping/dmm_suite/dmm_parsed.dm | 14 +- code/modules/mapping/map_system/map.dm | 6 - .../modules/mapping/map_system/map_context.dm | 8 + 20 files changed, 407 insertions(+), 255 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_buffer_enqueued.dm create mode 100644 code/modules/jigsaw/jigsaw_buffer_tile.dm create mode 100644 code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm create mode 100644 code/modules/jigsaw/jigsaw_spawn_config.dm create mode 100644 code/modules/jigsaw/jigsaw_spawn_resultant_config.dm create mode 100644 code/modules/jigsaw/jigsaw_template_config.dm create mode 100644 code/modules/jigsaw/jigsaw_template_resultant_config.dm diff --git a/citadel.dme b/citadel.dme index b6f4d44f2a31..6879c1cd631c 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3476,17 +3476,24 @@ #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" #include "code\modules\jigsaw\jigsaw_buffer.dm" +#include "code\modules\jigsaw\jigsaw_buffer_enqueued.dm" +#include "code\modules\jigsaw\jigsaw_buffer_tile.dm" #include "code\modules\jigsaw\jigsaw_chain_generator.dm" #include "code\modules\jigsaw\jigsaw_chain_generator_config.dm" +#include "code\modules\jigsaw\jigsaw_chain_generator_resultant_config.dm" #include "code\modules\jigsaw\jigsaw_chain_generator_results.dm" #include "code\modules\jigsaw\jigsaw_generator.dm" #include "code\modules\jigsaw\jigsaw_generator_config.dm" #include "code\modules\jigsaw\jigsaw_generator_preset.dm" #include "code\modules\jigsaw\jigsaw_generator_results.dm" #include "code\modules\jigsaw\jigsaw_pattern.dm" +#include "code\modules\jigsaw\jigsaw_spawn_config.dm" +#include "code\modules\jigsaw\jigsaw_spawn_resultant_config.dm" #include "code\modules\jigsaw\jigsaw_template.dm" +#include "code\modules\jigsaw\jigsaw_template_config.dm" #include "code\modules\jigsaw\jigsaw_template_pack.dm" #include "code\modules\jigsaw\jigsaw_template_pattern.dm" +#include "code\modules\jigsaw\jigsaw_template_resultant_config.dm" #include "code\modules\jigsaw\jigsaw_tile.dm" #include "code\modules\jigsaw\map_helper\jigsaw_aligned_spawner.dm" #include "code\modules\keybindings\bindings_atom.dm" diff --git a/code/controllers/subsystem/mapping/mapping-levels.dm b/code/controllers/subsystem/mapping/mapping-levels.dm index 18ebd53fd972..8c0ba2d90fe1 100644 --- a/code/controllers/subsystem/mapping/mapping-levels.dm +++ b/code/controllers/subsystem/mapping/mapping-levels.dm @@ -196,14 +196,12 @@ * @params * * instance - level to load * * use_dmm_context - use the given map_context for the loader. This is used to create the dmm_context for the level. - * * use_area_cache - use the given list as the area cache for the DMM loader. if none is provided, one will be created. * * @return loaded context, or null on fail */ /datum/controller/subsystem/mapping/proc/load_level( datum/map_level/instance, datum/map_context/map_context, - list/use_area_cache, ) UNTIL(!map_system_mutex) map_system_mutex = TRUE @@ -211,7 +209,6 @@ var/datum/dmm_context/dmm_context = load_level_impl( instance, map_context, - use_area_cache, ) if(!dmm_context) @@ -228,7 +225,6 @@ /datum/controller/subsystem/mapping/proc/load_level_impl( datum/map_level/instance, datum/map_context/map_context, - list/use_area_cache, ) RETURN_TYPE(/datum/dmm_context) PRIVATE_PROC(TRUE) @@ -279,7 +275,6 @@ no_changeturf = TRUE, place_on_top = FALSE, orientation = instance.load_orientation, - area_cache = use_area_cache, context = dmm_context, ) diff --git a/code/controllers/subsystem/mapping/mapping-maps.dm b/code/controllers/subsystem/mapping/mapping-maps.dm index 7de592c136c5..5e0089dd945e 100644 --- a/code/controllers/subsystem/mapping/mapping-maps.dm +++ b/code/controllers/subsystem/mapping/mapping-maps.dm @@ -104,13 +104,10 @@ for(var/datum/map_injection/injection as anything in loading_map.injections) context.register_injection(injection) - var/list/map_use_area_cache = loading_map.load_shared_area_cache ? list() : null - for(var/datum/map_level/level as anything in loading_map.get_sorted_levels()) var/datum/dmm_context/level_context = load_level_impl( level, context, - map_use_area_cache, ) if(isnull(level_context)) emit_fatal_log("load - failed to load level '[level.id]' in map '[instance.id]") diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index f31664969882..675b4016420b 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -1,149 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/jigsaw_buffer_enqueued - var/lower_left_grid_x - var/lower_left_grid_y - /** - * * Starts at SOUTH. - */ - var/orientation - var/datum/prototype/jigsaw_template/template - var/datum/dmm_context/context - -/** - * * Does not fire off atom init. - */ -/datum/jigsaw_buffer_enqueued/proc/load_into_world(lower_left_x, lower_left_y) as /datum/dmm_context - #warn impl - -/** - * * All lists are immutable and potentially (likely) shared for efficiency. - */ -/datum/jigsaw_buffer_tile - var/grid_x - var/grid_y - - var/blocked_off = FALSE - - /** - * * Nullable - */ - var/datum/jigsaw_buffer_enqueued/enqueued - - var/list/north_tags - var/list/north_require - var/list/north_exclude - - var/list/south_tags - var/list/south_require - var/list/south_exclude - - var/list/east_tags - var/list/east_require - var/list/east_exclude - - var/list/west_tags - var/list/west_require - var/list/west_exclude - -/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile, orientation) - src.grid_x = grid_x - src.grid_y = grid_y - - if(enqueued) - src.enqueued = enqueued - - if(tile) - switch(orientation) - // yeah so the fun part - // these get rotated based on orientation - // because these are always true-north (oriented to the buffer as a whole) - - if(SOUTH) - // 0 deg clockwise - - src.north_tags = tile.north_tags - src.north_require = tile.north_require - src.north_exclude = tile.north_exclude - - src.south_tags = tile.south_tags - src.south_require = tile.south_require - src.south_exclude = tile.south_exclude - - src.east_tags = tile.east_tags - src.east_require = tile.east_require - src.east_exclude = tile.east_exclude - - src.west_tags = tile.west_tags - src.west_require = tile.west_require - src.west_exclude = tile.west_exclude - - if(NORTH) - // 180 deg clockwise - - src.north_tags = tile.south_tags - src.north_require = tile.south_require - src.north_exclude = tile.south_exclude - - src.south_tags = tile.north_tags - src.south_require = tile.north_require - src.south_exclude = tile.north_exclude - - src.east_tags = tile.west_tags - src.east_require = tile.west_require - src.east_exclude = tile.west_exclude - - src.west_tags = tile.east_tags - src.west_require = tile.east_require - src.west_exclude = tile.east_exclude - - if(EAST) - // 270 deg clockwise / 90 deg counterclockwise - - src.north_tags = tile.east_tags - src.north_require = tile.east_require - src.north_exclude = tile.east_exclude - - src.south_tags = tile.west_tags - src.south_require = tile.west_require - src.south_exclude = tile.west_exclude - - src.east_tags = tile.south_tags - src.east_require = tile.south_require - src.east_exclude = tile.south_exclude - - src.west_tags = tile.north_tags - src.west_require = tile.north_require - src.west_exclude = tile.north_exclude - - if(WEST) - // 90 deg clockwise / 270 deg counterclockwise - - src.north_tags = tile.west_tags - src.north_require = tile.west_require - src.north_exclude = tile.west_exclude - - src.south_tags = tile.east_tags - src.south_require = tile.east_require - src.south_exclude = tile.east_exclude - - src.east_tags = tile.north_tags - src.east_require = tile.north_require - src.east_exclude = tile.north_exclude - - src.west_tags = tile.south_tags - src.west_require = tile.south_require - src.west_exclude = tile.south_exclude - - -/datum/jigsaw_buffer_tile/Destroy() - src.enqueued = null - return ..() - -/datum/jigsaw_buffer_tile/block_off - blocked_off = TRUE - /** * Datum used to hold current state for a jigsaw dungeon generation. */ @@ -262,6 +119,9 @@ QDEL_LIST(enqueued) QDEL_LIST(enqueued_contexts) +/datum/jigsaw_buffer/proc/enqueue_map_context(datum/map_context/context) + src.enqueued_contexts += context + /datum/jigsaw_buffer/proc/template_fits_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) template.load_cached() @@ -331,12 +191,12 @@ /** * @return TRUE / FALSE */ -/datum/jigsaw_buffer/proc/emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) +/datum/jigsaw_buffer/proc/emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) if(!template_fits_at(template, lower_left_grid_x, lower_left_grid_y, orientation)) return FALSE - return unsafe_emplace_template_at(template, lower_left_grid_x, lower_left_grid_y, orientation) + return unsafe_emplace_template_at(template, lower_left_grid_x, lower_left_grid_y, orientation, context) -/datum/jigsaw_buffer/proc/unsafe_emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation) +/datum/jigsaw_buffer/proc/unsafe_emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) // sweep direction is static for the jigsaw pattern, // and dependent on orientation for the buffer @@ -348,7 +208,8 @@ template, lower_left_grid_x, lower_left_grid_y, - orientation + orientation, + context, ) var/list/pattern = template.resultant_pattern.pattern diff --git a/code/modules/jigsaw/jigsaw_buffer_enqueued.dm b/code/modules/jigsaw/jigsaw_buffer_enqueued.dm new file mode 100644 index 000000000000..8a7b401da7fa --- /dev/null +++ b/code/modules/jigsaw/jigsaw_buffer_enqueued.dm @@ -0,0 +1,44 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_buffer_enqueued + var/lower_left_grid_x + var/lower_left_grid_y + /** + * * Starts at SOUTH. + */ + var/orientation + var/datum/prototype/jigsaw_template/template + var/datum/dmm_context/context + +/datum/jigsaw_buffer_enqueued/New(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) + src.template = template + src.lower_left_grid_x = lower_left_grid_x + src.lower_left_grid_y = lower_left_grid_y + src.orientation = orientation + src.context = context + +/datum/jigsaw_buffer_enqueued/Destroy() + src.template = null + src.context = null + return ..() + +/** + * * Does not fire off atom init. + */ +/datum/jigsaw_buffer_enqueued/proc/load_into_world(lower_left_x, lower_left_y, z) as /datum/dmm_context + // get the real offset'd relative grid coordinates from lower left + var/ll_grid_x = src.lower_left_grid_x + src.template.offset_x + var/ll_grid_y = src.lower_left_grid_y + src.template.offset_y + + // translate to world coordinates, with the lower left grid x / y 1 / 1 being + // at the provided lower left x/y. + + var/ll_real_x = lower_left_x + (ll_grid_x - 1) * TURF_ALIGNMENT + var/ll_real_y = lower_left_y + (ll_grid_y - 1) * TURF_ALIGNMENT + + // load + template.load_cached() + var/datum/dmm_parsed/parsed_map = template.parsed + + return parsed_map.load(ll_real_x, ll_real_y, z, orientation = src.orientation, context = src.context) diff --git a/code/modules/jigsaw/jigsaw_buffer_tile.dm b/code/modules/jigsaw/jigsaw_buffer_tile.dm new file mode 100644 index 000000000000..9622eb3eff45 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_buffer_tile.dm @@ -0,0 +1,128 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * * All lists are immutable and potentially (likely) shared for efficiency. + */ +/datum/jigsaw_buffer_tile + var/grid_x + var/grid_y + + var/blocked_off = FALSE + + /** + * * Nullable + */ + var/datum/jigsaw_buffer_enqueued/enqueued + + var/list/north_tags + var/list/north_require + var/list/north_exclude + + var/list/south_tags + var/list/south_require + var/list/south_exclude + + var/list/east_tags + var/list/east_require + var/list/east_exclude + + var/list/west_tags + var/list/west_require + var/list/west_exclude + +/datum/jigsaw_buffer_tile/New(grid_x, grid_y, datum/jigsaw_buffer_enqueued/enqueued, datum/jigsaw_tile/tile, orientation) + src.grid_x = grid_x + src.grid_y = grid_y + + if(enqueued) + src.enqueued = enqueued + + if(tile) + switch(orientation) + // yeah so the fun part + // these get rotated based on orientation + // because these are always true-north (oriented to the buffer as a whole) + + if(SOUTH) + // 0 deg clockwise + + src.north_tags = tile.north_tags + src.north_require = tile.north_require + src.north_exclude = tile.north_exclude + + src.south_tags = tile.south_tags + src.south_require = tile.south_require + src.south_exclude = tile.south_exclude + + src.east_tags = tile.east_tags + src.east_require = tile.east_require + src.east_exclude = tile.east_exclude + + src.west_tags = tile.west_tags + src.west_require = tile.west_require + src.west_exclude = tile.west_exclude + + if(NORTH) + // 180 deg clockwise + + src.north_tags = tile.south_tags + src.north_require = tile.south_require + src.north_exclude = tile.south_exclude + + src.south_tags = tile.north_tags + src.south_require = tile.north_require + src.south_exclude = tile.north_exclude + + src.east_tags = tile.west_tags + src.east_require = tile.west_require + src.east_exclude = tile.west_exclude + + src.west_tags = tile.east_tags + src.west_require = tile.east_require + src.west_exclude = tile.east_exclude + + if(EAST) + // 270 deg clockwise / 90 deg counterclockwise + + src.north_tags = tile.east_tags + src.north_require = tile.east_require + src.north_exclude = tile.east_exclude + + src.south_tags = tile.west_tags + src.south_require = tile.west_require + src.south_exclude = tile.west_exclude + + src.east_tags = tile.south_tags + src.east_require = tile.south_require + src.east_exclude = tile.south_exclude + + src.west_tags = tile.north_tags + src.west_require = tile.north_require + src.west_exclude = tile.north_exclude + + if(WEST) + // 90 deg clockwise / 270 deg counterclockwise + + src.north_tags = tile.west_tags + src.north_require = tile.west_require + src.north_exclude = tile.west_exclude + + src.south_tags = tile.east_tags + src.south_require = tile.east_require + src.south_exclude = tile.east_exclude + + src.east_tags = tile.north_tags + src.east_require = tile.north_require + src.east_exclude = tile.north_exclude + + src.west_tags = tile.south_tags + src.west_require = tile.south_require + src.west_exclude = tile.south_exclude + +/datum/jigsaw_buffer_tile/Destroy() + src.enqueued = null + return ..() + +/datum/jigsaw_buffer_tile/block_off + blocked_off = TRUE diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index f8b62a78e7e3..869e03cfc251 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -25,6 +25,18 @@ */ var/list/custom_budgets = list() + /** + * A list of generator config-literals to use. + * * Associate to number for weight. None = 1 weight. + */ + var/list/datum/jigsaw_generator_config/configs = list() + + /** + * A list of resolvables for presets to use. + * * Associate to number for weight. None = 1 weight. + */ + var/list/datum/prototype/jigsaw_generator_preset/presets = list() + /datum/jigsaw_chain_generator_config/proc/prepare() SHOULD_NOT_OVERRIDE(TRUE) @@ -40,6 +52,30 @@ SHOULD_CALL_PARENT(TRUE) prepare() -#warn impl + var/list/datum/jigsaw_generator_config/generator_configs = list() + + for(var/datum/jigsaw_generator_config/config in configs) + generator_configs += config + + for(var/datum/prototype/jigsaw_generator_preset/preset in presets) + generator_configs += preset.get_config() + + return generator_configs + +/datum/jigsaw_chain_generator_config/weighted_pick /datum/jigsaw_chain_generator_config/literally_everything + +/datum/jigsaw_chain_generator_config/literally_everything/get_generator_configs() + var/list/datum/jigsaw_generator_config/generator_configs = list() + + for(var/datum/jigsaw_generator_config/config in configs) + generator_configs += config + + for(var/datum/prototype/jigsaw_generator_preset/preset in presets) + generator_configs += preset.get_config() + + return generator_configs + + +/datum/jigsaw_chain_generator_config diff --git a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm new file mode 100644 index 000000000000..b0c13e2da98b --- /dev/null +++ b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm @@ -0,0 +1,33 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_chain_generator_resultant_config + /** + * Tile budget. + * * Overrules [tile_budget_ratio] if set. + * * Limits the total number of tiles generated by the chain-generation. + */ + var/tile_budget + /** + * Tile budget as a ratio of available tiles. + * * Limits the total number of tiles generated by the chain-generation. + */ + var/tile_budget_ratio + /** + * Custom budgets, key-value list of string-number. + * * This is applied in parallel with the existing generator config budgets, so + * if this is lower, this is applied instead of that. + */ + var/list/custom_budgets = list() + + /** + * A list of generator config-literals to use until out of budget or time expired. + * * Associate to number for weight. None = 1 weight. + * * This list should be read only for its contents, because configs might be + * directly linked in. + */ + var/list/datum/jigsaw_generator_config/configs = list() + +/datum/jigsaw_chain_generator_resultant_config/Destroy() + configs = null + return ..() diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index 415c7e0e719a..8d1b8418ba1b 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -22,87 +22,13 @@ */ var/datum/turf_auto_marker_config/auto_marker_config -/datum/jigsaw_spawn_resultant_config - -/datum/jigsaw_spawn_config - -/datum/jigsaw_spawn_config/proc/get_resultant_config() as /datum/jigsaw_spawn_resultant_config - return new /datum/jigsaw_spawn_resultant_config - -/datum/jigsaw_spawn_config/specific - -/datum/jigsaw_spawn_config/specific/get_resultant_config() - var/datum/jigsaw_spawn_resultant_config/result = new - - return result - -/datum/jigsaw_template_resultant_config - /// always start with these templates, if exists - /// * may be typepaths or instances - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/initial_templates = list() - /// ***attempt*** to place these templates, associate to count - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/priority_templates = list() - /// require placement of these templates, associate to count - /// * if any of these fail to place, the generation fails - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/required_templates = list() - - /// templates to use, weighted. - /// * may be typepaths or instances - /// * this are constrained by budgets. - var/list/datum/prototype/jigsaw_template/weighted_templates = list() - - /// allowed costs - /// * only used for weighted templates - var/list/budgets = list() - -/datum/jigsaw_template_config - -/datum/jigsaw_template_config/proc/get_resultant_config() as /datum/jigsaw_template_resultant_config - return new /datum/jigsaw_template_resultant_config - -/datum/jigsaw_template_config/everything - /// allowed costs - var/list/budgets = list() - -/datum/jigsaw_template_config/everything/get_resultant_config() - var/datum/jigsaw_template_resultant_config/result = new - result.budgets = budgets.Copy() - for(var/datum/prototype/jigsaw_template/path as anything in subtypesof(/datum/prototype/jigsaw_template)) - if(path.abstract_type == path) - continue - var/datum/prototype/jigsaw_template/template = RSjigsaw_templates.fetch_local_or_throw(path) - result.weighted_templates[template] = 1 - return result - -/datum/jigsaw_template_config/specific - /// always start with these templates, if exists - /// * may be typepaths or instances - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/initial_templates = list() - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/priority_templates = list() - /// require placement of these templates, associate to count - /// * if any of these fail to place, the generation fails - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/required_templates = list() - - /// templates to use, weighted. - /// * may be typepaths or instances - /// * this are constrained by budgets. - var/list/datum/prototype/jigsaw_template/weighted_templates = list() - - /// allowed costs - /// * only used for weighted templates - var/list/budgets = list() + /** + * Template config + */ + var/datum/jigsaw_template_config/template_config -/datum/jigsaw_template_config/specific/get_resultant_config() - var/datum/jigsaw_template_resultant_config/result = new - result.initial_templates = initial_templates.Copy() - result.weighted_templates = weighted_templates.Copy() - result.priority_templates = priority_templates.Copy() - result.required_templates = required_templates.Copy() - result.budgets = budgets.Copy() - return result + /** + * Spawn configs to use. + * * If more than one is specified, one is chosen at random. + */ + var/list/datum/jigsaw_spawn_config/spawn_configs = list() diff --git a/code/modules/jigsaw/jigsaw_generator_preset.dm b/code/modules/jigsaw/jigsaw_generator_preset.dm index ad0166352015..e85d28a068ef 100644 --- a/code/modules/jigsaw/jigsaw_generator_preset.dm +++ b/code/modules/jigsaw/jigsaw_generator_preset.dm @@ -7,9 +7,16 @@ var/name = "Unknown Preset" var/desc = "Some kind of preset." - var/datum/jigsaw_generator_config/config = new + var/datum/jigsaw_generator_config/config + var/config_type = /datum/jigsaw_generator_config -#warn impl +/datum/prototype/jigsaw_generator_preset/New() + create_config() + ..() + +/datum/prototype/jigsaw_generator_preset/proc/create_config() + if(!config && config_type) + config = new config_type /datum/prototype/jigsaw_generator_preset/proc/get_config() return config diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index 5254f7f44d4c..ec78dee5bd2c 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -15,4 +15,15 @@ var/tile_budget_used = 0 var/list/custom_budgets_used = list() -#warn impl +/datum/jigsaw_generator_results/serialize() + . = ..() + .["failed"] = failed + + var/list/placed_counts_serialized = list() + for(var/datum/prototype/jigsaw_template/template in placed_counts) + placed_counts_serialized[template.id] = placed_counts[template] + .["placed_counts"] = placed_counts_serialized + + .["approximate_ms_used"] = approximate_ms_used + .["tile_budget_used"] = tile_budget_used + .["custom_budgets_used"] = custom_budgets_used.Copy() diff --git a/code/modules/jigsaw/jigsaw_spawn_config.dm b/code/modules/jigsaw/jigsaw_spawn_config.dm new file mode 100644 index 000000000000..21fa022fb88b --- /dev/null +++ b/code/modules/jigsaw/jigsaw_spawn_config.dm @@ -0,0 +1,14 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_spawn_config + +/datum/jigsaw_spawn_config/proc/get_resultant_config() as /datum/jigsaw_spawn_resultant_config + return new /datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_config/dynamic + +/datum/jigsaw_spawn_config/dynamic/get_resultant_config() + var/datum/jigsaw_spawn_resultant_config/result = new + + return result diff --git a/code/modules/jigsaw/jigsaw_spawn_resultant_config.dm b/code/modules/jigsaw/jigsaw_spawn_resultant_config.dm new file mode 100644 index 000000000000..19044c0982c6 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_spawn_resultant_config.dm @@ -0,0 +1,12 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_spawn_resultant_config + +/datum/jigsaw_spawn_resultant_config/clone() + var/datum/jigsaw_spawn_resultant_config/result = new + + return result + +/datum/jigsaw_spawn_resultant_config/proc/merge_from(datum/jigsaw_spawn_resultant_config/other) + return diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 671193ebbcf5..4b4612110f13 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -36,10 +36,18 @@ /// Offset the actual load from the lower-left (direction relative) of /// the aligned pattern. /// * This is in tiles, not alignment multiples. + /// * Patterns start at lower-left-aligned-to-lower-left, and SOUTH. + /// This means that a 2x3 (width/height) pattern in SOUTH orientation + /// should ideally represent a 2x3 chunk dmm. + /// * Setting offset will let you shift the actual load (relative to SOUTH). var/offset_x = 0 /// Offset the actual load from the lower-left (direction relative) of /// the aligned pattern. /// * This is in tiles, not alignment multiples. + /// * Patterns start at lower-left-aligned-to-lower-left, and SOUTH. + /// This means that a 2x3 (width/height) pattern in SOUTH orientation + /// should ideally represent a 2x3 chunk dmm. + /// * Setting offset will let you shift the actual load (relative to SOUTH). var/offset_y = 0 /// display name diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_template_config.dm new file mode 100644 index 000000000000..6db09c1a84ba --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template_config.dm @@ -0,0 +1,43 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_template_config + +/datum/jigsaw_template_config/proc/get_resultant_config() as /datum/jigsaw_template_resultant_config + return new /datum/jigsaw_template_resultant_config + +/datum/jigsaw_template_config/everything + +/datum/jigsaw_template_config/everything/get_resultant_config() + var/datum/jigsaw_template_resultant_config/result = new + for(var/datum/prototype/jigsaw_template/path as anything in subtypesof(/datum/prototype/jigsaw_template)) + if(path.abstract_type == path) + continue + var/datum/prototype/jigsaw_template/template = RSjigsaw_templates.fetch_local_or_throw(path) + result.weighted_templates[template] = 1 + return result + +/datum/jigsaw_template_config/specific + /// always start with these templates, if exists + /// * may be typepaths or instances + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/initial_templates = list() + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/priority_templates = list() + /// require placement of these templates, associate to count + /// * if any of these fail to place, the generation fails + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/required_templates = list() + + /// templates to use, weighted. + /// * may be typepaths or instances + /// * this are constrained by budgets. + var/list/datum/prototype/jigsaw_template/weighted_templates = list() + +/datum/jigsaw_template_config/specific/get_resultant_config() + var/datum/jigsaw_template_resultant_config/result = new + result.initial_templates = initial_templates.Copy() + result.weighted_templates = weighted_templates.Copy() + result.priority_templates = priority_templates.Copy() + result.required_templates = required_templates.Copy() + return result diff --git a/code/modules/jigsaw/jigsaw_template_resultant_config.dm b/code/modules/jigsaw/jigsaw_template_resultant_config.dm new file mode 100644 index 000000000000..1a9803fee4eb --- /dev/null +++ b/code/modules/jigsaw/jigsaw_template_resultant_config.dm @@ -0,0 +1,20 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_template_resultant_config + /// always start with these templates, if exists + /// * may be typepaths or instances + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/initial_templates = list() + /// ***attempt*** to place these templates, associate to count + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/priority_templates = list() + /// require placement of these templates, associate to count + /// * if any of these fail to place, the generation fails + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/required_templates = list() + + /// templates to use, weighted. + /// * may be typepaths or instances + /// * this are constrained by budgets. + var/list/datum/prototype/jigsaw_template/weighted_templates = list() diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 72f644ce463c..0ec035aee0a0 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -44,6 +44,14 @@ /// * natural orientation is SOUTH var/loaded_orientation + //* modifiable and used by loader *// + + /** + * K-V type --> area instance lookup for areas. + * * Defaults to map_context.area_cache. + */ + var/list/area_cache + //* used by loader *// /** diff --git a/code/modules/mapping/dmm_suite/dmm_parsed.dm b/code/modules/mapping/dmm_suite/dmm_parsed.dm index 2ed3175a919e..f87419343327 100644 --- a/code/modules/mapping/dmm_suite/dmm_parsed.dm +++ b/code/modules/mapping/dmm_suite/dmm_parsed.dm @@ -29,13 +29,12 @@ * * no_changeturf - do not call [turf/AfterChange] when loading turfs. * * place_on_top - use PlaceOnTop instead of ChangeTurf * * orientation - cardinal dir to do. default is south. - * * area_cache - override area cache and provide your own, usually used to ensure multiple loadings share the same /area's. * - * @return /datum/dmm_parsed instance + * @return /datum/dmm_context instance */ -/proc/load_map(map, ll_x, ll_y, ll_z, x_lower, y_lower, x_upper, y_upper, z_lower, z_upper, no_changeturf, place_on_top, orientation, list/area_cache) +/proc/load_map(map, ll_x, ll_y, ll_z, x_lower, y_lower, x_upper, y_upper, z_lower, z_upper, no_changeturf, place_on_top, orientation) var/datum/dmm_parsed/parsed = new(map, x_lower, x_upper, y_lower, y_upper, z_lower, z_upper) - return parsed.load(ll_x, ll_y, ll_z, no_changeturf = no_changeturf, place_on_top = place_on_top, orientation = orientation, area_cache = area_cache) + return parsed.load(ll_x, ll_y, ll_z, no_changeturf = no_changeturf, place_on_top = place_on_top, orientation = orientation) /** * parses a dmm map @@ -288,17 +287,18 @@ * * no_changeturf - do not call [turf/AfterChange] when loading turfs. * * place_on_top - use PlaceOnTop instead of ChangeTurf * * orientation - orientation to load. the 'natural' orientation is SOUTH. Any other orientation rotates it with respect from SOUTH to it. - * * area_cache - override area cache and provide your own, used to make sure multiple loadings share the same areas if two areas are the same type. * * context - value to push to preloader's dmm context, used by atoms during preloading_from_mapload() to perform various things like mangling their linkage IDs * - * @return bounds list of load, or null if failed. + * @return loaded /datum/dmm_context */ -/datum/dmm_parsed/proc/load(x, y, z, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, z_lower = -INFINITY, z_upper = INFINITY, no_changeturf, place_on_top, orientation = SOUTH, list/area_cache, datum/dmm_context/context) +/datum/dmm_parsed/proc/load(x, y, z, x_lower = -INFINITY, x_upper = INFINITY, y_lower = -INFINITY, y_upper = INFINITY, z_lower = -INFINITY, z_upper = INFINITY, no_changeturf, place_on_top, orientation = SOUTH, datum/dmm_context/context) // we always have context, even if we don't if(isnull(context)) context = new . = context + var/list/area_cache = context?.area_cache || context?.map_context?.area_cache + var/static/loading = FALSE UNTIL(!loading) Master.StartLoadingMap() diff --git a/code/modules/mapping/map_system/map.dm b/code/modules/mapping/map_system/map.dm index f3067042e688..8197b0d23b92 100644 --- a/code/modules/mapping/map_system/map.dm +++ b/code/modules/mapping/map_system/map.dm @@ -90,9 +90,6 @@ var/load_auto_crop = FALSE /// center us if we're smaller than world size var/load_auto_center = TRUE - /// use map-wide area cache instead of individual level area caches; has no effect on submap loading, only level loading. - /// * don't touch this unless you know what you're doing. - var/load_shared_area_cache = TRUE /// Default auto-marker options. var/datum/turf_auto_marker_config/load_auto_marker_config = new @@ -178,7 +175,6 @@ .["load_auto_crop"] = load_auto_crop .["load_auto_center"] = load_auto_center .["load_orientation"] = load_orientation - .["load_shared_area_cache"] = load_shared_area_cache /datum/map/deserialize(list/data) if(loaded) @@ -210,8 +206,6 @@ load_auto_center = data["load_auto_center"] if(!isnull(data["load_orientation"])) load_orientation = data["load_orientation"] - if(!isnull(data["load_shared_area_cache"])) - load_shared_area_cache = data["load_shared_area_cache"] // todo: implement clone() diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index c20ea8885d89..be2e0dbc1dd0 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -56,6 +56,14 @@ /// All dmm_context's loaded var/list/datum/dmm_context/loaded_dmm_contexts = list() + //* Modifiable during load *// + + /** + * A cache of type --> area for areas to use during load. + * * Keyed by typepath, edits to variables are ignored. + */ + var/list/area_cache = list() + //* Bespoke 'collected' values. *// /// collected gear markers From 254e9df1f0e10819561d5c175ebb5ffc8a4f32de Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 18 Jul 2026 09:44:25 -0700 Subject: [PATCH 37/44] That --- code/game/turfs/misc/auto_marker.dm | 13 ++ .../admin/verbs/game/load_custom_overmap.dm | 8 +- code/modules/jigsaw/jigsaw_buffer.dm | 7 ++ code/modules/jigsaw/jigsaw_chain_generator.dm | 65 ++++++++-- .../jigsaw/jigsaw_chain_generator_config.dm | 50 ++------ ...jigsaw_chain_generator_resultant_config.dm | 15 ++- .../modules/jigsaw/jigsaw_generator_config.dm | 14 +++ code/modules/jigsaw/jigsaw_template.dm | 2 - code/modules/jigsaw/jigsaw_template_config.dm | 28 +++-- .../modules/jigsaw/jigsaw_template_pattern.dm | 112 +++++++++--------- .../jigsaw_template_resultant_config.dm | 10 +- .../map_helper/jigsaw_aligned_spawner.dm | 7 ++ .../legacy_jigsaw_worldgen_hijinks.dm | 4 +- 13 files changed, 204 insertions(+), 131 deletions(-) diff --git a/code/game/turfs/misc/auto_marker.dm b/code/game/turfs/misc/auto_marker.dm index d531e8fe8e34..bfe9cdc3207f 100644 --- a/code/game/turfs/misc/auto_marker.dm +++ b/code/game/turfs/misc/auto_marker.dm @@ -10,6 +10,19 @@ var/outdoors_rock_very_dense_type = /turf/simulated/mineral var/outdoors_liquid_type = /turf/simulated/floor/water +/datum/turf_auto_marker_config/clone() + var/datum/turf_auto_marker_config/clone = new + + clone.outdoors_floor_type = src.outdoors_floor_type + clone.outdoors_floor_stripped_type = src.outdoors_floor_stripped_type + clone.outdoors_floor_very_stripped_type = src.outdoors_floor_very_stripped_type + clone.outdoors_rock_type = src.outdoors_rock_type + clone.outdoors_rock_dense_type = src.outdoors_rock_dense_type + clone.outdoors_rock_very_dense_type = src.outdoors_rock_very_dense_type + clone.outdoors_liquid_type = src.outdoors_liquid_type + + return clone + /** * automatic markers that replace themselves on mapload */ diff --git a/code/modules/admin/verbs/game/load_custom_overmap.dm b/code/modules/admin/verbs/game/load_custom_overmap.dm index 0d51d821087f..c8ca1e84985d 100644 --- a/code/modules/admin/verbs/game/load_custom_overmap.dm +++ b/code/modules/admin/verbs/game/load_custom_overmap.dm @@ -55,13 +55,15 @@ ADMIN_VERB_DEF(load_custom_overmap, R_ADMIN, "Load Custom Overmap", "Load a cust var/datum/overmap/creating = new("loaded-[rand(1, 1000000)]", template) creating.initialize() // loaded, load the map template in there + var/datum/dmm_context/context = new + context.area_cache = list( + (/area/overmap) = creating.area, + ) var/datum/dmm_context/loaded_context = parsed_map.load( creating.reservation.bottom_left_coords[1], creating.reservation.bottom_left_coords[2], creating.reservation.bottom_left_coords[3], - area_cache = list( - (/area/overmap) = creating.area, - ), + context = context, ) // initialize SSatoms.init_map_bounds(loaded_context.loaded_bounds) diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 675b4016420b..29d57a77772e 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -56,6 +56,13 @@ return TRUE +/datum/jigsaw_buffer/proc/get_empty_tile_count() + var/count = 0 + for(var/i in 1 to length(grid)) + if(!grid[i]) + count++ + return count + /datum/jigsaw_buffer/proc/block_off_according_to_world_at(lower_left_x, lower_left_y, z, respect_worldgen_overwrite_flags) // scan for obstructions var/x_low = lower_left_x diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index 516ca966cd5f..e5484e108ea8 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -12,20 +12,67 @@ /datum/jigsaw_chain_generator/proc/generate(datum/jigsaw_buffer/buffer) var/datum/jigsaw_chain_generator_results/results = new + var/datum/jigsaw_chain_generator_resultant_config/resultant_config = config.get_resultant_config() - config.prepare() - var/list/datum/jigsaw_generator_config/generator_configs = config.get_generator_configs() + var/tile_budget_left + if(!isnull(resultant_config.tile_budget)) + tile_budget_left = resultant_config.tile_budget + else if(!isnull(resultant_config.tile_budget_ratio)) + tile_budget_left = ceil(buffer.get_total_tile_count() * resultant_config.tile_budget_ratio) + else + tile_budget_left = 0 - for(var/datum/jigsaw_generator_config/generator_config in generator_configs) - var/datum/jigsaw_generator/generator = new(generator_config) + if(tile_budget_left <= 0) + return results + + var/list/custom_budgets_left = resultant_config.custom_budgets.Copy() + + var/iteration_limit = 100 + + // owned ref, may modify + var/list/datum/jigsaw_generator_config/push_configs = resultant_config.explicit_configs.Copy() + // borrowed ref, do not modify + var/list/datum/jigsaw_generator_config/weighted_configs = resultant_config.weighted_configs + + do + iteration_limit-- + + var/datum/jigsaw_generator_config/use_config + + for(var/key in push_configs) + if(push_configs[key] <= 0) + push_configs -= key + + if(length(push_configs)) + var/datum/jigsaw_generator_config/config = pick(push_configs) + + push_configs[config]-- + if(push_configs[config] <= 0) + push_configs -= config + + use_config = config + else + use_config = pickweight(weighted_configs) + + if(!use_config) + break + + var/datum/jigsaw_generator_config/modified_config = use_config.clone() + modified_config.tile_budget = tile_budget_left + modified_config.custom_budgets = custom_budgets_left + + var/datum/jigsaw_generator/generator = new(use_config) var/datum/jigsaw_generator_results/generator_results = generator.generate(buffer) - results.add(generator_results) + results.results += generator_results results.total_approximate_ms_used += generator_results.approximate_ms_used results.total_tile_budget_used += generator_results.tile_budget_used - for(var/key in generator_results.custom_budget_used) - results.total_custom_budget_used[i] += generator_results.custom_budget_used[i] + for(var/key in generator_results.custom_budgets_used) + results.custom_budgets_used[key] += generator_results.custom_budgets_used[key] + custom_budgets_left[key] -= generator_results.custom_budgets_used[key] - return results + tile_budget_left -= generator_results.tile_budget_used + + while(tile_budget_left > 0 && iteration_limit > 0) - #warn impl + return results diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index 869e03cfc251..1782951a3e9c 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -25,6 +25,15 @@ */ var/list/custom_budgets = list() +/datum/jigsaw_chain_generator_config/proc/get_resultant_config() as /datum/jigsaw_chain_generator_resultant_config + SHOULD_CALL_PARENT(TRUE) + + var/datum/jigsaw_chain_generator_resultant_config/result = new + return result + +#warn below + +/datum/jigsaw_chain_generator_config/weighted_pick /** * A list of generator config-literals to use. * * Associate to number for weight. None = 1 weight. @@ -37,45 +46,4 @@ */ var/list/datum/prototype/jigsaw_generator_preset/presets = list() -/datum/jigsaw_chain_generator_config/proc/prepare() - SHOULD_NOT_OVERRIDE(TRUE) - - if(prepared) - return - prepared = TRUE - prepare_impl() - -/datum/jigsaw_chain_generator_config/proc/prepare_impl() - PROTECTED_PROC(TRUE) - -/datum/jigsaw_chain_generator_config/proc/get_generator_configs() as /list - SHOULD_CALL_PARENT(TRUE) - prepare() - - var/list/datum/jigsaw_generator_config/generator_configs = list() - - for(var/datum/jigsaw_generator_config/config in configs) - generator_configs += config - - for(var/datum/prototype/jigsaw_generator_preset/preset in presets) - generator_configs += preset.get_config() - - return generator_configs - -/datum/jigsaw_chain_generator_config/weighted_pick - /datum/jigsaw_chain_generator_config/literally_everything - -/datum/jigsaw_chain_generator_config/literally_everything/get_generator_configs() - var/list/datum/jigsaw_generator_config/generator_configs = list() - - for(var/datum/jigsaw_generator_config/config in configs) - generator_configs += config - - for(var/datum/prototype/jigsaw_generator_preset/preset in presets) - generator_configs += preset.get_config() - - return generator_configs - - -/datum/jigsaw_chain_generator_config diff --git a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm index b0c13e2da98b..95c1295bd52a 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm @@ -17,17 +17,24 @@ * Custom budgets, key-value list of string-number. * * This is applied in parallel with the existing generator config budgets, so * if this is lower, this is applied instead of that. + * * The list itself may be modified. */ var/list/custom_budgets = list() + /** + * A list of generator configs to try to emplace + * * The list itself may be modified, but not its elements. + */ + var/list/datum/jigsaw_generator_config/explicit_configs = list() + /** * A list of generator config-literals to use until out of budget or time expired. * * Associate to number for weight. None = 1 weight. - * * This list should be read only for its contents, because configs might be - * directly linked in. + * * The list itself may be modified, but not its elements. */ - var/list/datum/jigsaw_generator_config/configs = list() + var/list/datum/jigsaw_generator_config/weighted_configs = list() /datum/jigsaw_chain_generator_resultant_config/Destroy() - configs = null + explicit_configs = null + weighted_configs = null return ..() diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index 8d1b8418ba1b..8949c65a9e9a 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -13,6 +13,7 @@ var/tile_budget_ratio /** * Custom budgets, key-value list of string-number. + * * This list may not be edited by the generator. */ var/list/custom_budgets = list() @@ -30,5 +31,18 @@ /** * Spawn configs to use. * * If more than one is specified, one is chosen at random. + * * This list may not be edited by the generator. */ var/list/datum/jigsaw_spawn_config/spawn_configs = list() + +/datum/jigsaw_generator_config/clone() + var/datum/jigsaw_generator_config/clone = new + + clone.tile_budget = src.tile_budget + clone.tile_budget_ratio = src.tile_budget_ratio + clone.custom_budgets = src.custom_budgets.Copy() + clone.auto_marker_config = src.auto_marker_config.clone() + clone.template_config = src.template_config.clone() + clone.spawn_configs = deep_clone_list(src.spawn_configs) + + return clone diff --git a/code/modules/jigsaw/jigsaw_template.dm b/code/modules/jigsaw/jigsaw_template.dm index 4b4612110f13..d3811f5511dd 100644 --- a/code/modules/jigsaw/jigsaw_template.dm +++ b/code/modules/jigsaw/jigsaw_template.dm @@ -26,7 +26,6 @@ /// pattern var/datum/jigsaw_template_pattern/pattern - #warn impl /// cached resultant pattern var/tmp/datum/jigsaw_pattern/resultant_pattern @@ -77,7 +76,6 @@ if(!parsed) parsed = new(path) if(!resultant_pattern) - #warn this and more? resultant_pattern = pattern.get_pattern() /datum/prototype/jigsaw_template/override diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_template_config.dm index 6db09c1a84ba..8890b351c8e7 100644 --- a/code/modules/jigsaw/jigsaw_template_config.dm +++ b/code/modules/jigsaw/jigsaw_template_config.dm @@ -3,11 +3,19 @@ /datum/jigsaw_template_config +/datum/jigsaw_template_config/clone() + var/datum/jigsaw_template_config/clone = new type + return clone + /datum/jigsaw_template_config/proc/get_resultant_config() as /datum/jigsaw_template_resultant_config return new /datum/jigsaw_template_resultant_config /datum/jigsaw_template_config/everything +/datum/jigsaw_template_config/everything/clone() + var/datum/jigsaw_template_config/everything/clone = new + return clone + /datum/jigsaw_template_config/everything/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new for(var/datum/prototype/jigsaw_template/path as anything in subtypesof(/datum/prototype/jigsaw_template)) @@ -18,25 +26,31 @@ return result /datum/jigsaw_template_config/specific - /// always start with these templates, if exists - /// * may be typepaths or instances - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/initial_templates = list() - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails /// * this ignores budget and will not take from it. var/list/datum/prototype/jigsaw_template/required_templates = list() + /// attempt placement of these before weighted templates, but not before required + /// * this ignores budget and will not take from it. + /// * may be typepaths or instances + var/list/datum/prototype/jigsaw_template/priority_templates = list() /// templates to use, weighted. /// * may be typepaths or instances /// * this are constrained by budgets. var/list/datum/prototype/jigsaw_template/weighted_templates = list() +/datum/jigsaw_template_config/specific/clone() + var/datum/jigsaw_template_config/specific/clone = ..() + + clone.weighted_templates = src.weighted_templates.Copy() + clone.priority_templates = src.priority_templates.Copy() + clone.required_templates = src.required_templates.Copy() + + return clone + /datum/jigsaw_template_config/specific/get_resultant_config() var/datum/jigsaw_template_resultant_config/result = new - result.initial_templates = initial_templates.Copy() result.weighted_templates = weighted_templates.Copy() result.priority_templates = priority_templates.Copy() result.required_templates = required_templates.Copy() diff --git a/code/modules/jigsaw/jigsaw_template_pattern.dm b/code/modules/jigsaw/jigsaw_template_pattern.dm index 32452da74a37..43c7fcb82efb 100644 --- a/code/modules/jigsaw/jigsaw_template_pattern.dm +++ b/code/modules/jigsaw/jigsaw_template_pattern.dm @@ -42,19 +42,19 @@ width = 1 height = 1 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude @@ -64,16 +64,16 @@ var/datum/jigsaw_tile/tile = new tile.north_exclude = north_exclude tile.north_require = north_require - tile.north_match = north_match + tile.north_tags = north_tags tile.south_exclude = south_exclude tile.south_require = south_require - tile.south_match = south_match + tile.south_tags = south_tags tile.east_exclude = east_exclude tile.east_require = east_require - tile.east_match = east_match + tile.east_tags = east_tags tile.west_exclude = west_exclude tile.west_require = west_require - tile.west_match = west_match + tile.west_tags = west_tags pattern.pattern[1] = tile @@ -83,43 +83,43 @@ width = 2 height = 2 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/south_left_match + var/list/south_left_tags var/list/south_left_require var/list/south_left_exclude - var/list/south_right_match + var/list/south_right_tags var/list/south_right_require var/list/south_right_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/north_left_match + var/list/north_left_tags var/list/north_left_require var/list/north_left_exclude - var/list/north_right_match + var/list/north_right_tags var/list/north_right_require var/list/north_right_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/east_top_match + var/list/east_top_tags var/list/east_top_require var/list/east_top_exclude - var/list/east_bottom_match + var/list/east_bottom_tags var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude - var/list/west_top_match + var/list/west_top_tags var/list/west_top_require var/list/west_top_exclude - var/list/west_bottom_match + var/list/west_bottom_tags var/list/west_bottom_require var/list/west_bottom_exclude @@ -133,10 +133,10 @@ tile = new tile.north_exclude = north_left_exclude || north_exclude tile.north_require = north_left_require || north_require - tile.north_match = north_left_match || north_match + tile.north_tags = north_left_tags || north_tags tile.west_exclude = west_top_exclude || west_exclude tile.west_require = west_top_require || west_require - tile.west_match = west_top_match || west_match + tile.west_tags = west_top_tags || west_tags pattern.pattern[3] = tile @@ -144,10 +144,10 @@ tile = new tile.north_exclude = north_right_exclude || north_exclude tile.north_require = north_right_require || north_require - tile.north_match = north_right_match || north_match + tile.north_tags = north_right_tags || north_tags tile.east_exclude = east_top_exclude || east_exclude tile.east_require = east_top_require || east_require - tile.east_match = east_top_match || east_match + tile.east_tags = east_top_tags || east_tags pattern.pattern[4] = tile @@ -155,10 +155,10 @@ tile = new tile.south_exclude = south_left_exclude || south_exclude tile.south_require = south_left_require || south_require - tile.south_match = south_left_match || south_match + tile.south_tags = south_left_tags || south_tags tile.west_exclude = west_bottom_exclude || west_exclude tile.west_require = west_bottom_require || west_require - tile.west_match = west_bottom_match || west_match + tile.west_tags = west_bottom_tags || west_tags pattern.pattern[1] = tile @@ -166,10 +166,10 @@ tile = new tile.south_exclude = south_right_exclude || south_exclude tile.south_require = south_right_require || south_require - tile.south_match = south_right_match || south_match + tile.south_tags = south_right_tags || south_tags tile.east_exclude = east_bottom_exclude || east_exclude tile.east_require = east_bottom_require || east_require - tile.east_match = east_bottom_match || east_match + tile.east_tags = east_bottom_tags || east_tags pattern.pattern[2] = tile @@ -179,55 +179,55 @@ width = 3 height = 3 - var/list/south_match + var/list/south_tags var/list/south_require var/list/south_exclude - var/list/south_left_match + var/list/south_left_tags var/list/south_left_require var/list/south_left_exclude - var/list/south_middle_match + var/list/south_middle_tags var/list/south_middle_require var/list/south_middle_exclude - var/list/south_right_match + var/list/south_right_tags var/list/south_right_require var/list/south_right_exclude - var/list/north_match + var/list/north_tags var/list/north_require var/list/north_exclude - var/list/north_left_match + var/list/north_left_tags var/list/north_left_require var/list/north_left_exclude - var/list/north_middle_match + var/list/north_middle_tags var/list/north_middle_require var/list/north_middle_exclude - var/list/north_right_match + var/list/north_right_tags var/list/north_right_require var/list/north_right_exclude - var/list/east_match + var/list/east_tags var/list/east_require var/list/east_exclude - var/list/east_top_match + var/list/east_top_tags var/list/east_top_require var/list/east_top_exclude - var/list/east_middle_match + var/list/east_middle_tags var/list/east_middle_require var/list/east_middle_exclude - var/list/east_bottom_match + var/list/east_bottom_tags var/list/east_bottom_require var/list/east_bottom_exclude - var/list/west_match + var/list/west_tags var/list/west_require var/list/west_exclude - var/list/west_top_match + var/list/west_top_tags var/list/west_top_require var/list/west_top_exclude - var/list/west_middle_match + var/list/west_middle_tags var/list/west_middle_require var/list/west_middle_exclude - var/list/west_bottom_match + var/list/west_bottom_tags var/list/west_bottom_require var/list/west_bottom_exclude @@ -240,10 +240,10 @@ tile = new tile.south_exclude = south_left_exclude || south_exclude tile.south_require = south_left_require || south_require - tile.south_match = south_left_match || south_match + tile.south_tags = south_left_tags || south_tags tile.west_exclude = west_bottom_exclude || west_exclude tile.west_require = west_bottom_require || west_require - tile.west_match = west_bottom_match || west_match + tile.west_tags = west_bottom_tags || west_tags pattern.pattern[(1 - 1) + 1] = tile @@ -251,7 +251,7 @@ tile = new tile.south_exclude = south_middle_exclude || south_exclude tile.south_require = south_middle_require || south_require - tile.south_match = south_middle_match || south_match + tile.south_tags = south_middle_tags || south_tags pattern.pattern[(1 - 1) + 2] = tile @@ -259,10 +259,10 @@ tile = new tile.south_exclude = south_right_exclude || south_exclude tile.south_require = south_right_require || south_require - tile.south_match = south_right_match || south_match + tile.south_tags = south_right_tags || south_tags tile.east_exclude = east_bottom_exclude || east_exclude tile.east_require = east_bottom_require || east_require - tile.east_match = east_bottom_match || east_match + tile.east_tags = east_bottom_tags || east_tags pattern.pattern[(1 - 1) + 3] = tile @@ -270,7 +270,7 @@ tile = new tile.west_exclude = west_middle_exclude || west_exclude tile.west_require = west_middle_require || west_require - tile.west_match = west_middle_match || west_match + tile.west_tags = west_middle_tags || west_tags pattern.pattern[(2 - 1) + 1] = tile @@ -283,7 +283,7 @@ tile = new tile.east_exclude = east_middle_exclude || east_exclude tile.east_require = east_middle_require || east_require - tile.east_match = east_middle_match || east_match + tile.east_tags = east_middle_tags || east_tags pattern.pattern[(2 - 1) + 3] = tile @@ -291,10 +291,10 @@ tile = new tile.north_exclude = north_left_exclude || north_exclude tile.north_require = north_left_require || north_require - tile.north_match = north_left_match || north_match + tile.north_tags = north_left_tags || north_tags tile.west_exclude = west_top_exclude || west_exclude tile.west_require = west_top_require || west_require - tile.west_match = west_top_match || west_match + tile.west_tags = west_top_tags || west_tags pattern.pattern[(3 - 1) + 1] = tile @@ -302,7 +302,7 @@ tile = new tile.north_exclude = north_middle_exclude || north_exclude tile.north_require = north_middle_require || north_require - tile.north_match = north_middle_match || north_match + tile.north_tags = north_middle_tags || north_tags pattern.pattern[(3 - 1) + 2] = tile @@ -310,10 +310,10 @@ tile = new tile.north_exclude = north_right_exclude || north_exclude tile.north_require = north_right_require || north_require - tile.north_match = north_right_match || north_match + tile.north_tags = north_right_tags || north_tags tile.east_exclude = east_top_exclude || east_exclude tile.east_require = east_top_require || east_require - tile.east_match = east_top_match || east_match + tile.east_tags = east_top_tags || east_tags pattern.pattern[(3 - 1) + 3] = tile diff --git a/code/modules/jigsaw/jigsaw_template_resultant_config.dm b/code/modules/jigsaw/jigsaw_template_resultant_config.dm index 1a9803fee4eb..a1b6158e0e1f 100644 --- a/code/modules/jigsaw/jigsaw_template_resultant_config.dm +++ b/code/modules/jigsaw/jigsaw_template_resultant_config.dm @@ -2,17 +2,13 @@ //* Copyright (c) 2026 Citadel Station Developers *// /datum/jigsaw_template_resultant_config - /// always start with these templates, if exists - /// * may be typepaths or instances - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/initial_templates = list() - /// ***attempt*** to place these templates, associate to count - /// * this ignores budget and will not take from it. - var/list/datum/prototype/jigsaw_template/priority_templates = list() /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails /// * this ignores budget and will not take from it. var/list/datum/prototype/jigsaw_template/required_templates = list() + /// attempt to place these templates, associate to count + /// * this ignores budget and will not take from it. + var/list/datum/prototype/jigsaw_template/priority_templates = list() /// templates to use, weighted. /// * may be typepaths or instances diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 01a3beadfa55..ce67b00a9d31 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -69,3 +69,10 @@ #warn generate #warn apply + +/obj/map_helper/jigsaw_aligned_spawner/anything + +/obj/map_helper/jigsaw_aligned_spawner/anything/New() + + +#warn impl diff --git a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm index 118edec785aa..432ccd82c1cb 100644 --- a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm +++ b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm @@ -5,10 +5,10 @@ * Until we get a proper world generation API (map_injections are not enough for worldgen) * with layers, this is what you get. */ -/datum/legacy_jigsaw_worldgen_hijinks +/datum/map_injection/legacy_jigsaw_worldgen_hijinks #warn impl -/datum/legacy_jigsaw_worldgen_hijinks/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) +/datum/map_injection/legacy_jigsaw_worldgen_hijinks/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) ..() if(!dmm_context) From cc235468c6118931c956493111c4edbc0df36e8b Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sat, 18 Jul 2026 10:08:33 -0700 Subject: [PATCH 38/44] now for algorithm --- code/modules/jigsaw/jigsaw_chain_generator.dm | 12 ++-- .../jigsaw/jigsaw_chain_generator_config.dm | 28 ++++++++- code/modules/jigsaw/jigsaw_generator.dm | 3 +- .../jigsaw/jigsaw_generator_results.dm | 14 +++++ .../map_helper/jigsaw_aligned_spawner.dm | 53 ++++++++++++++---- icons/modules/jigsaw/map_helpers_3x3.dmi | Bin 0 -> 641 bytes 6 files changed, 88 insertions(+), 22 deletions(-) create mode 100644 icons/modules/jigsaw/map_helpers_3x3.dmi diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index e5484e108ea8..08ee0615b7fd 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -18,7 +18,7 @@ if(!isnull(resultant_config.tile_budget)) tile_budget_left = resultant_config.tile_budget else if(!isnull(resultant_config.tile_budget_ratio)) - tile_budget_left = ceil(buffer.get_total_tile_count() * resultant_config.tile_budget_ratio) + tile_budget_left = ceil(buffer.get_empty_tile_count() * resultant_config.tile_budget_ratio) else tile_budget_left = 0 @@ -30,9 +30,9 @@ var/iteration_limit = 100 // owned ref, may modify - var/list/datum/jigsaw_generator_config/push_configs = resultant_config.explicit_configs.Copy() + var/list/push_configs = resultant_config.explicit_configs.Copy() // borrowed ref, do not modify - var/list/datum/jigsaw_generator_config/weighted_configs = resultant_config.weighted_configs + var/list/weighted_configs = resultant_config.weighted_configs do iteration_limit-- @@ -46,7 +46,7 @@ if(length(push_configs)) var/datum/jigsaw_generator_config/config = pick(push_configs) - push_configs[config]-- + push_configs[config] -= 1 if(push_configs[config] <= 0) push_configs -= config @@ -61,14 +61,14 @@ modified_config.tile_budget = tile_budget_left modified_config.custom_budgets = custom_budgets_left - var/datum/jigsaw_generator/generator = new(use_config) + var/datum/jigsaw_generator/generator = new(modified_config) var/datum/jigsaw_generator_results/generator_results = generator.generate(buffer) results.results += generator_results results.total_approximate_ms_used += generator_results.approximate_ms_used results.total_tile_budget_used += generator_results.tile_budget_used for(var/key in generator_results.custom_budgets_used) - results.custom_budgets_used[key] += generator_results.custom_budgets_used[key] + results.total_custom_budgets_used[key] += generator_results.custom_budgets_used[key] custom_budgets_left[key] -= generator_results.custom_budgets_used[key] tile_budget_left -= generator_results.tile_budget_used diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index 1782951a3e9c..0b6aa5d76815 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -29,9 +29,12 @@ SHOULD_CALL_PARENT(TRUE) var/datum/jigsaw_chain_generator_resultant_config/result = new - return result -#warn below + result.tile_budget = src.tile_budget + result.tile_budget_ratio = src.tile_budget_ratio + result.custom_budgets = src.custom_budgets.Copy() + + return result /datum/jigsaw_chain_generator_config/weighted_pick /** @@ -46,4 +49,25 @@ */ var/list/datum/prototype/jigsaw_generator_preset/presets = list() +/datum/jigsaw_chain_generator_config/weighted_pick/get_resultant_config() as /datum/jigsaw_chain_generator_resultant_config + var/datum/jigsaw_chain_generator_resultant_config/result = ..() + + result.weighted_configs = configs.Copy() + + for(var/key in presets) + var/datum/prototype/jigsaw_generator_preset/preset = RSjigsaw_generator_presets.fetch_local_or_throw(key) + var/datum/jigsaw_generator_config/config = preset.get_config() + result.weighted_configs[config] += presets[key] + + return result + /datum/jigsaw_chain_generator_config/literally_everything + +/datum/jigsaw_chain_generator_config/literally_everything/get_resultant_config() as /datum/jigsaw_chain_generator_resultant_config + var/datum/jigsaw_chain_generator_resultant_config/result = ..() + + for(var/datum/prototype/jigsaw_generator_preset/preset as anything in RSjigsaw_generator_presets.fetch_subtypes_immutable(/datum/prototype/jigsaw_generator_preset)) + var/datum/jigsaw_generator_config/config = preset.get_config() + result.weighted_configs[config] = 1 + + return result diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index c01e9a7e2e16..74348fd0fd9b 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -10,8 +10,7 @@ /datum/jigsaw_generator/New(datum/jigsaw_generator_config/config) src.config = config -/datum/jigsaw_generator/proc/get_available_templates() - return list() +/datum/jigsaw_generator/proc/generate(datum/jigsaw_buffer/buffer) #warn impl diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index ec78dee5bd2c..4e63b095ac72 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -27,3 +27,17 @@ .["approximate_ms_used"] = approximate_ms_used .["tile_budget_used"] = tile_budget_used .["custom_budgets_used"] = custom_budgets_used.Copy() + +/datum/jigsaw_generator_results/proc/merge_from(datum/jigsaw_generator_results/other) + SHOULD_CALL_PARENT(TRUE) + + failed = failed || other.failed + + for(var/datum/prototype/jigsaw_template/template in other.placed_counts) + placed_counts[template] += other.placed_counts[template] + + approximate_ms_used += other.approximate_ms_used + tile_budget_used += other.tile_budget_used + + for(var/key in other.custom_budgets_used) + custom_budgets_used[key] += other.custom_budgets_used[key] diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index ce67b00a9d31..095ddaa07477 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -3,12 +3,12 @@ /obj/map_helper/jigsaw_aligned_spawner name = "Jigsaw Dungeon Spawner" - desc = "Automatically emplaces a jigsaw dungeon on mapload." - #warn sprite + desc = "Automatically emplaces jigsaw dungeon(s) on mapload." + icon = 'icons/modules/jigsaw/map_helpers.dmi' + icon_state = "spawner" early = TRUE - var/datum/prototype/jigsaw_generator_preset/preset = /datum/prototype/jigsaw_generator_preset/empty var/respect_worldgen_overwrite_flags = TRUE /** @@ -18,10 +18,6 @@ */ var/tile_radius = 48 -/obj/map_helper/jigsaw_aligned_spawner/New() - preset = RSjigsaw_generator_presets.fetch_local_or_throw(preset) - ..() - /obj/map_helper/jigsaw_aligned_spawner/map_initializations(datum/dmm_context/dmm_context, datum/map_context/map_context) ..() generate() @@ -63,16 +59,49 @@ buffer.block_off_according_to_world_at(aligned_x_low, aligned_y_low, z, respect_worldgen_overwrite_flags) + var/datum/jigsaw_generator_results/results = generate_buffer(buffer) + + buffer.load_into_world( + aligned_x_low, + aligned_y_low, + z, + ) + +/obj/map_helper/jigsaw_aligned_spawner/proc/generate_buffer(datum/jigsaw_buffer/buffer) as /datum/jigsaw_generator_results + return + +/obj/map_helper/jigsaw_aligned_spawner/specific + var/datum/prototype/jigsaw_generator_preset/preset = /datum/prototype/jigsaw_generator_preset/empty + +/obj/map_helper/jigsaw_aligned_spawner/specific/New() + preset = RSjigsaw_generator_presets.fetch_local_or_throw(preset) + ..() + +/obj/map_helper/jigsaw_aligned_spawner/specific/generate_buffer(datum/jigsaw_buffer/buffer) // generate var/datum/jigsaw_generator/generator = new(preset.get_config()) + return generator.generate(buffer) - #warn generate +/obj/map_helper/jigsaw_aligned_spawner/anything - #warn apply +/obj/map_helper/jigsaw_aligned_spawner/anything/generate_buffer(datum/jigsaw_buffer/buffer) + var/list/datum/prototype/jigsaw_generator_preset/presets = RSjigsaw_generator_presets.fetch_subtypes_mutable(/datum/prototype/jigsaw_generator_preset) -/obj/map_helper/jigsaw_aligned_spawner/anything + var/datum/jigsaw_generator_results/overall_results = new + var/iterations = 100 + + while(iterations > 0) + iterations-- + + var/datum/prototype/jigsaw_generator_preset/preset = SAFEPICK(presets) + if(!preset) + break -/obj/map_helper/jigsaw_aligned_spawner/anything/New() + var/datum/jigsaw_chain_generator/generator = new(preset.get_chain_config()) + var/datum/jigsaw_generator_results/results = generator.generate(buffer) + overall_results.merge_from(results) + if(!results.failed) + break -#warn impl + return results diff --git a/icons/modules/jigsaw/map_helpers_3x3.dmi b/icons/modules/jigsaw/map_helpers_3x3.dmi new file mode 100644 index 0000000000000000000000000000000000000000..d83ad8ffaae67368594e9fcd86e2afa26039e616 GIT binary patch literal 641 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGo`BfniB`&GO$wiq3C7Jno3=9=> zRFCiFYETeiyKwWji2OEpM;2ba#FplL%@=fKe>tkg?_cAG(bwR~ zbzgLBEsKVaa_51M98dlA_8Ewz)Ya^@@Dz&nk>s-NwEa1`-aKMX+qO2l#+%ae7oFZ| zGcYio^>lFzshIQj&cWP61`-a5!B1z+G-48(ZQyBkl8@(r36BH+)YV&fTZ862x39au zRy0W2{;>*Q$#(nr z$m%b5KH|TAYReqvA`ayP>WRt~qAiD+xBSyPz`W%g#I(cAJ%0_h)`a)4XUt_x$Y_|h z{=czK!|p}$VgKh99MKP+zQv1y{qHs<#(nGG^8LzPZ6|oyKd$W%F86FW`+xs}TcVr~ z{9ZhcX+jPv%)o<-)K;pzEWY!#mhFS3UNSH~=6+pJKDVjy*4%P4KVX_-@O1TaS?83{ F1OSDL{mB3T literal 0 HcmV?d00001 From 992e6f64100932264637b8850b7b11d01b495c85 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Sun, 19 Jul 2026 18:32:50 -0700 Subject: [PATCH 39/44] the beloathed n^2 --- citadel.dme | 1 + code/modules/jigsaw/jigsaw_algorithm.dm | 299 ++++++++++++++++++ code/modules/jigsaw/jigsaw_chain_generator.dm | 8 +- .../jigsaw/jigsaw_chain_generator_config.dm | 29 +- ...jigsaw_chain_generator_resultant_config.dm | 36 ++- code/modules/jigsaw/jigsaw_generator.dm | 67 +--- .../modules/jigsaw/jigsaw_generator_config.dm | 25 ++ .../jigsaw/jigsaw_generator_results.dm | 4 + code/modules/jigsaw/jigsaw_pattern.dm | 16 +- code/modules/jigsaw/jigsaw_template_config.dm | 4 + .../jigsaw_template_resultant_config.dm | 3 + .../map_helper/jigsaw_aligned_spawner.dm | 8 +- .../fixed_template_seeding_target.dm | 2 +- .../modules/mapping/map_system/map_context.dm | 5 + 14 files changed, 420 insertions(+), 87 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_algorithm.dm diff --git a/citadel.dme b/citadel.dme index 6879c1cd631c..59da0f524155 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3475,6 +3475,7 @@ #include "code\modules\integrated_electronics\tools\debugger.dm" #include "code\modules\integrated_electronics\tools\wirer.dm" #include "code\modules\integrated_electronics\~defines\~defines.dm" +#include "code\modules\jigsaw\jigsaw_algorithm.dm" #include "code\modules\jigsaw\jigsaw_buffer.dm" #include "code\modules\jigsaw\jigsaw_buffer_enqueued.dm" #include "code\modules\jigsaw\jigsaw_buffer_tile.dm" diff --git a/code/modules/jigsaw/jigsaw_algorithm.dm b/code/modules/jigsaw/jigsaw_algorithm.dm new file mode 100644 index 000000000000..44135d3c17e9 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_algorithm.dm @@ -0,0 +1,299 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_algorithm + +/datum/jigsaw_algorithm/proc/execute(datum/jigsaw_buffer/buffer, datum/jigsaw_generator_config/config) as /datum/jigsaw_generator_results + return new /datum/jigsaw_generator_results + +/datum/jigsaw_algorithm/proc/normalize_resultant_template_config(datum/jigsaw_template_resultant_config/config) + for(var/key in config.required_templates) + var/datum/prototype/jigsaw_template/template = key + template.load_cached() + + if(config.required_templates[key] <= 0) + config.required_templates -= key + + for(var/key in config.priority_templates) + var/datum/prototype/jigsaw_template/template = key + template.load_cached() + + if(config.priority_templates[key] <= 0) + config.priority_templates -= key + + for(var/key in config.weighted_templates) + var/datum/prototype/jigsaw_template/template = key + template.load_cached() + +/datum/jigsaw_algorithm/general + +/datum/jigsaw_algorithm/general/execute(datum/jigsaw_buffer/buffer, datum/jigsaw_generator_config/config) + var/datum/jigsaw_generator_results/results = new + + var/datum/map_context/map_context = new + map_context.auto_marker_config = config.auto_marker_config + + var/datum/jigsaw_template_resultant_config/resultant_template_config = config.template_config.get_resultant_config() + + var/tile_budget_left = config.get_tile_budget(buffer.get_empty_tile_count()) + + var/list/custom_budgets_left = config.custom_budgets.Copy() + + var/total_tick_usage = 0 + + // give the server a bit of reprieve first if needed, this is generally called + // right after other stuff is copied so we might already be over + // tick budget if we're very unlucky + CHECK_TICK + + var/iterations = 100 + + /** + * list of open tiles to attempt attachment for. + * * content is list(x, y, dir). + * * dir is to the other tile, so the other tile needs to match reverse dir. + */ + var/list/open_tiles = list() + var/datum/prototype/jigsaw_template/next_template + var/any_passed = FALSE + + do + iterations-- + + var/pick_begin = TICK_USAGE + var/list/picked = pick_next_template(buffer, resultant_template_config, tile_budget_left, custom_budgets_left) + var/pick_end = TICK_USAGE + total_tick_usage += pick_end - pick_begin + + var/datum/prototype/jigsaw_template/next_template = picked[1] + var/next_required = picked[2] + + if(!next_template) + break + + var/datum/jigsaw_generator_results/template_results = try_place_template(buffer, next_template, open_tiles, map_context) + + results.merge_from(template_results) + + if(template_results.failed) + if(next_required) + results.failed = TRUE + break + else + any_passed = TRUE + // update budgets + tile_budget_left -= template_results.tile_budget_used + for(var/key in template_results.custom_budgets_used) + custom_budgets_left[key] -= template_results.custom_budgets_used[key] + + while(iterations > 0) + + // TODO: run spawn configs + + results.approximate_ms_used += TICK_USAGE_TO_MS(total_tick_usage) + + if(any_passed) + buffer.enqueue_map_context(map_context) + + return results + +/datum/jigsaw_algorithm/general/proc/try_place_template(datum/jigsaw_buffer/buffer, datum/prototype/jigsaw_template/template, list/open_tiles, datum/map_context/map_context) as /datum/jigsaw_generator_results + var/datum/jigsaw_generator_results/results = new + var/datum/dmm_context/dmm_context = map_context.create_blank_dmm_context() + + results.failed = TRUE + + var/tick_usage_used = 0 + + var/iterations = 1000 + var/list/indices = list() + + do { + var/shuffle_indices_begin = TICK_USAGE + + for(var/i in 1 to length(open_tiles)) + indices += i + shuffle_inplace(indices) + + var/shuffle_indices_end = TICK_USAGE + tick_usage_used += shuffle_indices_end - shuffle_indices_begin + } while(FALSE) + + var/datum/jigsaw_pattern/computed_pattern = template.resultant_pattern + + while(length(indices)) + var/pick_n_take_begin = TICK_USAGE + + var/index = pick_n_take(indices) + var/list/open_tile = open_tiles[index] + var/x = open_tile[1] + var/y = open_tile[2] + var/dir = open_tile[3] + + var/datum/jigsaw_buffer_tile/tile = buffer.grid[x + buffer.width * (y - 1)] + if(!tile) + CRASH("invalid tile at [x] [y] [dir].") + + var/list/our_tags + var/list/our_require + var/list/our_exclude + + var/pick_n_take_end = TICK_USAGE + tick_usage_used += pick_n_take_end - pick_n_take_begin + CHECK_TICK + + // check bounds and get tag match + switch(dir) + if(NORTH) + if(y == buffer.height) + continue + var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + buffer.width * y] + if(other_tile) + // already filled + continue + our_tags = tile.north_tags + our_require = tile.north_require + our_exclude = tile.north_exclude + + if(SOUTH) + if(y == 1) + continue + var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + buffer.width * (y - 2)] + if(other_tile) + // already filled + continue + our_tags = tile.south_tags + our_require = tile.south_require + our_exclude = tile.south_exclude + + if(EAST) + if(x == buffer.width) + continue + var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + 1 + buffer.width * (y - 1)] + if(other_tile) + // already filled + continue + our_tags = tile.east_tags + our_require = tile.east_require + our_exclude = tile.east_exclude + + if(WEST) + if(x == 1) + continue + var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x - 1 + buffer.width * (y - 1)] + if(other_tile) + // already filled + continue + our_tags = tile.west_tags + our_require = tile.west_require + our_exclude = tile.west_exclude + + // we got the tags, try to match against the template + var/match_begin = TICK_USAGE + + var/matched = FALSE + var/their_x_offset + var/their_y_offset + var/their_dir + + // cache for speed + var/list/attachment_points = computed_pattern.calculated_attachment_points + for(var/i in 1 to length(attachment_points)) + var/list/attachment_point = attachment_points[i] + + var/list/their_tags = attachment_point[4] + var/list/their_require = attachment_point[5] + var/list/their_exclude = attachment_point[6] + + // match tags + // lack of require = anything goes + var/tag_pass = (!length(our_tags & their_exclude)) && (!length(our_exclude & their_tags)) && \ + (length(our_require & their_tags) == length(our_require)) && (!length(their_require & our_tags) == length(their_require)) + + if(!tag_pass) + continue + + // attempt emplace after aligning + their_x_offset = attachment_point[1] + their_y_offset = attachment_point[2] + their_dir = attachment_point[3] + matched = TRUE + break + + var/match_end = TICK_USAGE + tick_usage_used += match_end - match_begin + CHECK_TICK + + if(!matched) + continue + + var/emplaced = FALSE + var/emplace_begin = TICK_USAGE + + // now attempt emplace + #warn compute x/y + emplaced = buffer.emplace_template_at(template, computed_x, computed_y, their_dir, dmm_context) + + var/emplace_end = TICK_USAGE + tick_usage_used += emplace_end - emplace_begin + CHECK_TICK + + if(emplaced) + results.success = TRUE + break + else + // failed to emplace, try next attachment point + continue + + results.approximate_ms_used += TICK_USAGE_TO_MS(tick_usage_used) + + if(results.failed) + qdel(dmm_context) + else + map_context.register_dmm_context(dmm_context) + + return results + +/** + * @return list(template, required) + */ +/datum/jigsaw_algorithm/general/proc/pick_next_template(datum/jigsaw_buffer/buffer, datum/jigsaw_template_resultant_config/resultant, tile_budget_left, list/custom_budgets_left) + // non-weighted templates only get one try each + + if(length(resultant.required_templates)) + var/datum/prototype/jigsaw_template/template = pick(resultant.required_templates) + resultant.required_templates[template] -= 1 + if(resultant.required_templates[template] <= 0) + resultant.required_templates -= template + return list(template, TRUE) + + if(length(resultant.priority_templates)) + var/datum/prototype/jigsaw_template/template = pick(resultant.priority_templates) + resultant.priority_templates[template] -= 1 + if(resultant.priority_templates[template] <= 0) + resultant.priority_templates -= template + return list(template, FALSE) + + var/list/datum/prototype/jigsaw_template/valid_weighted_templates = list() + for(var/datum/prototype/jigsaw_template/template as anything in resultant.weighted_templates) + if(template.resultant_pattern.cached_tile_cost > tile_budget_left) + resultant.weighted_templates -= template + continue + + if(template.custom_budgets) + var/valid = TRUE + for(var/key in template.custom_budgets) + if(template.custom_budgets[key] > custom_budgets_left[key]) + valid = FALSE + break + + if(!valid) + resultant.weighted_templates -= template + continue + + valid_weighted_templates[template] = resultant.weighted_templates[template] + + return list( + pickweight(valid_weighted_templates), + FALSE, + ) diff --git a/code/modules/jigsaw/jigsaw_chain_generator.dm b/code/modules/jigsaw/jigsaw_chain_generator.dm index 08ee0615b7fd..188d78d97bd7 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator.dm @@ -14,13 +14,7 @@ var/datum/jigsaw_chain_generator_results/results = new var/datum/jigsaw_chain_generator_resultant_config/resultant_config = config.get_resultant_config() - var/tile_budget_left - if(!isnull(resultant_config.tile_budget)) - tile_budget_left = resultant_config.tile_budget - else if(!isnull(resultant_config.tile_budget_ratio)) - tile_budget_left = ceil(buffer.get_empty_tile_count() * resultant_config.tile_budget_ratio) - else - tile_budget_left = 0 + var/tile_budget_left = resultant_config.get_tile_budget(buffer.get_empty_tile_count()) if(tile_budget_left <= 0) return results diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index 0b6aa5d76815..11707a5ccaad 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -10,18 +10,33 @@ /** * Tile budget. * * Overrules [tile_budget_ratio] if set. - * * Limits the total number of tiles generated by the chain-generation. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget /** * Tile budget as a ratio of available tiles. - * * Limits the total number of tiles generated by the chain-generation. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget_ratio + /** + * Tile budget gaussian center. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_gaussian_center + /** + * Tile budget gaussian standard deviation. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_gaussian_stddev /** * Custom budgets, key-value list of string-number. - * * This is applied in parallel with the existing generator config budgets, so - * if this is lower, this is applied instead of that. + * * This list may not be edited by the generator. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/list/custom_budgets = list() @@ -32,6 +47,8 @@ result.tile_budget = src.tile_budget result.tile_budget_ratio = src.tile_budget_ratio + result.tile_budget_cap_gaussian_center = src.tile_budget_cap_gaussian_center + result.tile_budget_cap_gaussian_stddev = src.tile_budget_cap_gaussian_stddev result.custom_budgets = src.custom_budgets.Copy() return result @@ -49,7 +66,7 @@ */ var/list/datum/prototype/jigsaw_generator_preset/presets = list() -/datum/jigsaw_chain_generator_config/weighted_pick/get_resultant_config() as /datum/jigsaw_chain_generator_resultant_config +/datum/jigsaw_chain_generator_config/weighted_pick/get_resultant_config() var/datum/jigsaw_chain_generator_resultant_config/result = ..() result.weighted_configs = configs.Copy() @@ -63,7 +80,7 @@ /datum/jigsaw_chain_generator_config/literally_everything -/datum/jigsaw_chain_generator_config/literally_everything/get_resultant_config() as /datum/jigsaw_chain_generator_resultant_config +/datum/jigsaw_chain_generator_config/literally_everything/get_resultant_config() var/datum/jigsaw_chain_generator_resultant_config/result = ..() for(var/datum/prototype/jigsaw_generator_preset/preset as anything in RSjigsaw_generator_presets.fetch_subtypes_immutable(/datum/prototype/jigsaw_generator_preset)) diff --git a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm index 95c1295bd52a..7cc18819fe88 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm @@ -5,19 +5,33 @@ /** * Tile budget. * * Overrules [tile_budget_ratio] if set. - * * Limits the total number of tiles generated by the chain-generation. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget /** * Tile budget as a ratio of available tiles. - * * Limits the total number of tiles generated by the chain-generation. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget_ratio + /** + * Tile budget gaussian center. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_gaussian_center + /** + * Tile budget gaussian standard deviation. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_gaussian_stddev /** * Custom budgets, key-value list of string-number. - * * This is applied in parallel with the existing generator config budgets, so - * if this is lower, this is applied instead of that. - * * The list itself may be modified. + * * This list may not be edited by the generator. + * * This is ignored for required / priority templates, but they still count against it. + * * This is applied in parallel to the jigsaw generator config's limits. */ var/list/custom_budgets = list() @@ -38,3 +52,15 @@ explicit_configs = null weighted_configs = null return ..() + +/datum/jigsaw_chain_generator_resultant_config/proc/get_tile_budget(free_tiles) + . = INFINITY + + if(!isnull(tile_budget)) + . = tile_budget + else if(!isnull(tile_budget_ratio)) + . = ceil(free_tiles * tile_budget_ratio) + + if(!isnull(tile_budget_cap_gaussian_center) && !isnull(tile_budget_cap_gaussian_stddev)) + var/gaussian_cap = gaussian(tile_budget_cap_gaussian_center, tile_budget_cap_gaussian_stddev) + . = min(., gaussian_cap) diff --git a/code/modules/jigsaw/jigsaw_generator.dm b/code/modules/jigsaw/jigsaw_generator.dm index 74348fd0fd9b..174a41ecb727 100644 --- a/code/modules/jigsaw/jigsaw_generator.dm +++ b/code/modules/jigsaw/jigsaw_generator.dm @@ -6,72 +6,11 @@ */ /datum/jigsaw_generator var/datum/jigsaw_generator_config/config + var/algorithm_type = /datum/jigsaw_algorithm/general /datum/jigsaw_generator/New(datum/jigsaw_generator_config/config) src.config = config /datum/jigsaw_generator/proc/generate(datum/jigsaw_buffer/buffer) - -#warn impl - -/datum/jigsaw_generator/proc/generate_from_initial_piece(datum/prototype/jigsaw_template/initial_piece, turf/lower_left, orientation) - -/datum/jigsaw_generator/proc/generate_at_turf_centered(turf/center, radius_horizontal_tiles, radius_vertical_tiles) - if(isnull(radius_vertical_tiles)) - radius_vertical_tiles = radius_horizontal_tiles - -/datum/jigsaw_generator/proc/generate_at_turf_lower_left(turf/lower_left, width, height) - - -/datum/jigsaw_generator/proc/generate_impl(datum/jigsaw_generation/generation) - var/contextual_zlev = get_z(contextual_center) - if(!contextual_zlev) - CRASH("Invalid contextual center.") - - var/datum/turf_auto_marker_config/auto_marker_config = auto_marker_config - if(!auto_marker_config) - var/datum/map/map = SSmapping.level_get_map(contextual_zlev) - if(map) - auto_marker_config = map.load_auto_marker_config - - if(!auto_marker_config) - stack_trace("Could not autodetect turf auto-marker configuration, and it was not provided. Defaulting.") - auto_marker_config = new - - var/datum/jigsaw_template_resultant_config/templates = template_config.get_resultant_config() - - // first, check if it has at least one valid template already emplaced - // if it doesn't, we have to put one so the broadphase can act on something at all. - if(!length(generation.broadphase_enqueued)) - generate_impl_place_initial_piece(generation, templates, contextual_center) - - // seed templates - generate_impl_seed_grid(generation, templates) - - // emplace templates - generate_impl_emplace_grid(generation, templates) - - // cleanup - generation.cleanup() - -/datum/jigsaw_generator/proc/generate_impl_place_initial_piece(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates, turf/contextual_center) - #warn impl - -/datum/jigsaw_generator/proc/generate_impl_seed_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) - #warn impl - -/datum/jigsaw_generator/proc/generate_impl_emplace_grid(datum/jigsaw_generation/generation, datum/jigsaw_template_resultant_config/templates) - // place templates down - for(var/datum/jigsaw_buffer_enqueued/placement in generation.enqueued) - var/datum/prototype/jigsaw_template/template = placement.template - var/datum/dmm_context/context = new - #warn impl context stuff - - template.load_cached() - template.parsed.load( - placement.lower_left_x, - placement.lower_left_y, - placement.lower_left_z, - orientation = placement.orientation, - context = context - ) + var/datum/jigsaw_algorithm/algorithm = new src.algorithm_type + return algorithm.execute(buffer, config) diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index 8949c65a9e9a..a11a2643c172 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -5,15 +5,28 @@ /** * Tile budget. * * Overrules [tile_budget_ratio] if set. + * * This is ignored for required / priority templates, but they still count against it. */ var/tile_budget /** * Tile budget as a ratio of available tiles. + * * This is ignored for required / priority templates, but they still count against it. */ var/tile_budget_ratio + /** + * Tile budget gaussian center. + * * Applied as min() to 'ratio' budget / tile budget if set. + */ + var/tile_budget_cap_gaussian_center + /** + * Tile budget gaussian standard deviation. + * * Applied as min() to 'ratio' budget / tile budget if set. + */ + var/tile_budget_cap_gaussian_stddev /** * Custom budgets, key-value list of string-number. * * This list may not be edited by the generator. + * * This is ignored for required / priority templates, but they still count against it. */ var/list/custom_budgets = list() @@ -46,3 +59,15 @@ clone.spawn_configs = deep_clone_list(src.spawn_configs) return clone + +/datum/jigsaw_generator_config/proc/get_tile_budget(free_tiles) + . = INFINITY + + if(!isnull(tile_budget)) + . = tile_budget + else if(!isnull(tile_budget_ratio)) + . = ceil(free_tiles * tile_budget_ratio) + + if(!isnull(tile_budget_cap_gaussian_center) && !isnull(tile_budget_cap_gaussian_stddev)) + var/gaussian_cap = gaussian(tile_budget_cap_gaussian_center, tile_budget_cap_gaussian_stddev) + . = min(., gaussian_cap) diff --git a/code/modules/jigsaw/jigsaw_generator_results.dm b/code/modules/jigsaw/jigsaw_generator_results.dm index 4e63b095ac72..ee7b00c597d8 100644 --- a/code/modules/jigsaw/jigsaw_generator_results.dm +++ b/code/modules/jigsaw/jigsaw_generator_results.dm @@ -11,6 +11,10 @@ var/list/datum/prototype/jigsaw_template/placed_counts = list() + /** + * * this generally only tracks time spent in-algorithm. + * preparing / copying beforehand is unfortunately untracked. + */ var/approximate_ms_used = 0 var/tile_budget_used = 0 var/list/custom_budgets_used = list() diff --git a/code/modules/jigsaw/jigsaw_pattern.dm b/code/modules/jigsaw/jigsaw_pattern.dm index acc066c4ba2c..b671f6ea300c 100644 --- a/code/modules/jigsaw/jigsaw_pattern.dm +++ b/code/modules/jigsaw/jigsaw_pattern.dm @@ -15,7 +15,7 @@ /** * Calculated attachment points. - * * [tag] = list(x, y, orientation, list(tags)) + * * list( list(x, y, orientation, list(match tags), list(require tags), list(exclude tags))... ) * * orientation is facing away from the join point; this allows * whatever is checking for valid joins to not have to rotate its own sense of sided-ness. * * this allows a 'fast' linear list match/check for a given tag @@ -29,7 +29,7 @@ * * As another example, `1, 2, SOUTH, list(...)` means the second tile from the left, * third from the bottom, has those tags on the NORTH side. */ - var/list/tmp/datum/jigsaw_pattern/calculated_attachment_points + var/list/calculated_attachment_points /datum/jigsaw_pattern/New(width, height, override_tile_cost) src.width = width @@ -38,6 +38,10 @@ src.pattern = new /list(width * height) +/datum/jigsaw_pattern/proc/drop_cache() + cached_tile_cost = null + calculated_attachment_points = null + /datum/jigsaw_pattern/proc/get_tile_cost() if(!isnull(override_tile_cost)) return override_tile_cost @@ -69,6 +73,8 @@ y - 1, SOUTH, tile.north_tags, + tile.north_require, + tile.north_exclude, ) // south @@ -80,6 +86,8 @@ y - 1, NORTH, tile.south_tags, + tile.south_require, + tile.south_exclude, ) // east @@ -91,6 +99,8 @@ y - 1, WEST, tile.east_tags, + tile.east_require, + tile.east_exclude, ) // west @@ -102,6 +112,8 @@ y - 1, EAST, tile.west_tags, + tile.west_require, + tile.west_exclude, ) return calculated_attachment_points diff --git a/code/modules/jigsaw/jigsaw_template_config.dm b/code/modules/jigsaw/jigsaw_template_config.dm index 8890b351c8e7..393838022407 100644 --- a/code/modules/jigsaw/jigsaw_template_config.dm +++ b/code/modules/jigsaw/jigsaw_template_config.dm @@ -12,6 +12,8 @@ /datum/jigsaw_template_config/everything +#warn add pack support? + /datum/jigsaw_template_config/everything/clone() var/datum/jigsaw_template_config/everything/clone = new return clone @@ -40,6 +42,8 @@ /// * this are constrained by budgets. var/list/datum/prototype/jigsaw_template/weighted_templates = list() +#warn add pack support? + /datum/jigsaw_template_config/specific/clone() var/datum/jigsaw_template_config/specific/clone = ..() diff --git a/code/modules/jigsaw/jigsaw_template_resultant_config.dm b/code/modules/jigsaw/jigsaw_template_resultant_config.dm index a1b6158e0e1f..e3b311bdb462 100644 --- a/code/modules/jigsaw/jigsaw_template_resultant_config.dm +++ b/code/modules/jigsaw/jigsaw_template_resultant_config.dm @@ -5,12 +5,15 @@ /// require placement of these templates, associate to count /// * if any of these fail to place, the generation fails /// * this ignores budget and will not take from it. + /// * The list but not its elements may be modified. var/list/datum/prototype/jigsaw_template/required_templates = list() /// attempt to place these templates, associate to count /// * this ignores budget and will not take from it. + /// * The list but not its elements may be modified. var/list/datum/prototype/jigsaw_template/priority_templates = list() /// templates to use, weighted. /// * may be typepaths or instances /// * this are constrained by budgets. + /// * The list but not its elements may be modified. var/list/datum/prototype/jigsaw_template/weighted_templates = list() diff --git a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm index 095ddaa07477..af581e2fdfa0 100644 --- a/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm +++ b/code/modules/jigsaw/map_helper/jigsaw_aligned_spawner.dm @@ -89,6 +89,7 @@ var/datum/jigsaw_generator_results/overall_results = new var/iterations = 100 + var/failed = TRUE while(iterations > 0) iterations-- @@ -97,11 +98,14 @@ if(!preset) break - var/datum/jigsaw_chain_generator/generator = new(preset.get_chain_config()) + var/datum/jigsaw_chain_generator/generator = new(preset.get_config()) var/datum/jigsaw_generator_results/results = generator.generate(buffer) overall_results.merge_from(results) if(!results.failed) + failed = FALSE break - return results + overall_results.failed = failed + + return overall_results diff --git a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm index e0b5cff6e190..2b4674b28c91 100644 --- a/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm +++ b/code/modules/mapping/map_helpers/fixed_template_seeding_target.dm @@ -47,7 +47,7 @@ // we're always on the corner, so we just have to align it with us and do orientation stuff - template.load_standalone(target_corner, orientation = ORIENTATION_SOUTH) + template.load_standalone(target_corner, orientation = SOUTH) var/width = template.width var/height = template.height diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index be2e0dbc1dd0..4f28b0389305 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -98,6 +98,11 @@ loaded_dmm_contexts += context return context +/datum/map_context/proc/register_dmm_context(datum/dmm_context/context) + if(context in loaded_dmm_contexts) + CRASH("dmm_context already registered") + loaded_dmm_contexts |= context + /datum/map_context/proc/register_injection(datum/map_injection/injection) if(injection in injections) CRASH("injection already registered") From 6f8cc538698f559dd9b2e2815688d3f94ae7ecd8 Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Mon, 20 Jul 2026 08:53:32 -0700 Subject: [PATCH 40/44] that --- citadel.dme | 2 + code/__DEFINES/jigsaw.dm | 15 +++ code/modules/jigsaw/jigsaw_algorithm.dm | 108 +++++++++++++++--- code/modules/jigsaw/jigsaw_buffer.dm | 22 ++-- code/modules/jigsaw/jigsaw_buffer_enqueued.dm | 3 + code/modules/jigsaw/jigsaw_spawn_pack.dm | 7 ++ .../modules/jigsaw/map_helper/jigsaw_spawn.dm | 66 +++++++++++ code/modules/mapping/dmm_suite/dmm_context.dm | 19 +++ .../mapping/map_helpers/gear_marker.dm | 4 +- .../modules/mapping/map_system/map_context.dm | 7 ++ 10 files changed, 230 insertions(+), 23 deletions(-) create mode 100644 code/modules/jigsaw/jigsaw_spawn_pack.dm create mode 100644 code/modules/jigsaw/map_helper/jigsaw_spawn.dm diff --git a/citadel.dme b/citadel.dme index 59da0f524155..0b990eeecb10 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3489,6 +3489,7 @@ #include "code\modules\jigsaw\jigsaw_generator_results.dm" #include "code\modules\jigsaw\jigsaw_pattern.dm" #include "code\modules\jigsaw\jigsaw_spawn_config.dm" +#include "code\modules\jigsaw\jigsaw_spawn_pack.dm" #include "code\modules\jigsaw\jigsaw_spawn_resultant_config.dm" #include "code\modules\jigsaw\jigsaw_template.dm" #include "code\modules\jigsaw\jigsaw_template_config.dm" @@ -3497,6 +3498,7 @@ #include "code\modules\jigsaw\jigsaw_template_resultant_config.dm" #include "code\modules\jigsaw\jigsaw_tile.dm" #include "code\modules\jigsaw\map_helper\jigsaw_aligned_spawner.dm" +#include "code\modules\jigsaw\map_helper\jigsaw_spawn.dm" #include "code\modules\keybindings\bindings_atom.dm" #include "code\modules\keybindings\bindings_client.dm" #include "code\modules\keybindings\focus.dm" diff --git a/code/__DEFINES/jigsaw.dm b/code/__DEFINES/jigsaw.dm index 5a058e555cca..44093ff952c7 100644 --- a/code/__DEFINES/jigsaw.dm +++ b/code/__DEFINES/jigsaw.dm @@ -59,3 +59,18 @@ * * The lack of JOIN_AIRTIGHT doesn't imply JOIN_LEAKY. */ #define JIGSAW_MATCH_JOIN_LEAKY "join-leaky" + +//* Spawn Tags *// + +#define JIGSAW_SPAWN_TAG_MOB "mob" +#define JIGSAW_SPAWN_TAG_MOB_BOSS "mob-boss" +#define JIGSAW_SPAWN_TAG_MOB_RANGED "mob-ranged" +#define JIGSAW_SPAWN_TAG_MOB_MELEE "mob-melee" + +#define JIGSAW_SPAWN_TAG_ITEM "item" +#define JIGSAW_SPAWN_TAG_ITEM_GUN "item-gun" +#define JIGSAW_SPAWN_TAG_ITEM_MELEE "item-melee" +#define JIGSAW_SPAWN_TAG_ITEM_ARMOR "item-armor" +#define JIGSAW_SPAWN_TAG_ITEM_SPACESUIT "item-spacesuit" +#define JIGSAW_SPAWN_TAG_ITEM_MEDICAL "item-medical" +#define JIGSAW_SPAWN_TAG_ITEM_MATERIALS "item-materials" diff --git a/code/modules/jigsaw/jigsaw_algorithm.dm b/code/modules/jigsaw/jigsaw_algorithm.dm index 44135d3c17e9..e9c556d30086 100644 --- a/code/modules/jigsaw/jigsaw_algorithm.dm +++ b/code/modules/jigsaw/jigsaw_algorithm.dm @@ -71,7 +71,9 @@ if(!next_template) break - var/datum/jigsaw_generator_results/template_results = try_place_template(buffer, next_template, open_tiles, map_context) + var/datum/jigsaw_generator_results/template_results = any_passed ? \ + try_place_initial(buffer, next_template, open_tiles, map_context) : \ + try_place_template(buffer, next_template, open_tiles, map_context) results.merge_from(template_results) @@ -86,6 +88,11 @@ for(var/key in template_results.custom_budgets_used) custom_budgets_left[key] -= template_results.custom_budgets_used[key] + var/prune_begin = TICK_USAGE + prune_open_tiles(buffer, open_tiles) + var/prune_end = TICK_USAGE + total_tick_usage += prune_end - prune_begin + while(iterations > 0) // TODO: run spawn configs @@ -148,9 +155,6 @@ if(y == buffer.height) continue var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + buffer.width * y] - if(other_tile) - // already filled - continue our_tags = tile.north_tags our_require = tile.north_require our_exclude = tile.north_exclude @@ -159,9 +163,6 @@ if(y == 1) continue var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + buffer.width * (y - 2)] - if(other_tile) - // already filled - continue our_tags = tile.south_tags our_require = tile.south_require our_exclude = tile.south_exclude @@ -170,9 +171,6 @@ if(x == buffer.width) continue var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x + 1 + buffer.width * (y - 1)] - if(other_tile) - // already filled - continue our_tags = tile.east_tags our_require = tile.east_require our_exclude = tile.east_exclude @@ -181,9 +179,6 @@ if(x == 1) continue var/datum/jigsaw_buffer_tile/other_tile = buffer.grid[x - 1 + buffer.width * (y - 1)] - if(other_tile) - // already filled - continue our_tags = tile.west_tags our_require = tile.west_require our_exclude = tile.west_exclude @@ -231,6 +226,8 @@ var/emplace_begin = TICK_USAGE // now attempt emplace + + #warn compute x/y emplaced = buffer.emplace_template_at(template, computed_x, computed_y, their_dir, dmm_context) @@ -239,7 +236,7 @@ CHECK_TICK if(emplaced) - results.success = TRUE + results.failed = FALSE break else // failed to emplace, try next attachment point @@ -254,6 +251,89 @@ return results +/datum/jigsaw_algorithm/general/proc/prune_open_tiles(datum/jigsaw_buffer/buffer, list/open_tiles) + // prune open tiles that are no longer valid + for(var/i in length(open_tiles) to 1 step -1) + var/list/open_tile = open_tiles[i] + var/x = open_tile[1] + var/y = open_tile[2] + var/dir = open_tile[3] + + switch(dir) + if(NORTH) + if(y == buffer.height || buffer.grid[x + buffer.width * y]) + open_tiles.Cut(i, i + 1) + + if(SOUTH) + if(y == 1 || buffer.grid[x + buffer.width * (y - 2)]) + open_tiles.Cut(i, i + 1) + + if(EAST) + if(x == buffer.width || buffer.grid[x + 1 + buffer.width * (y - 1)]) + open_tiles.Cut(i, i + 1) + + if(WEST) + if(x == 1 || buffer.grid[x - 1 + buffer.width * (y - 1)]) + open_tiles.Cut(i, i + 1) + +/datum/jigsaw_algorithm/general/proc/try_place_initial(datum/jigsaw_buffer/buffer, datum/prototype/jigsaw_template/template, list/open_tiles, datum/map_context/context) as /datum/jigsaw_generator_results + var/datum/jigsaw_generator_results/results = new + + var/tick_used = 0 + + var/iterations = 100 + while(iterations > 0) + iterations-- + + CHECK_TICK + + var/place_begin = TICK_USAGE + + var/dir = pick(SOUTH, EAST, NORTH, WEST) + var/sideways = dir & (EAST|WEST) + var/width = sideways ? template.resultant_pattern.height : template.resultant_pattern.width + var/height = sideways ? template.resultant_pattern.width : template.resultant_pattern.height + + // this ignores dir but i don't care tbh + var/x = rand(1, buffer.width - width + 1) + var/y = rand(1, buffer.height - height + 1) + + var/datum/jigsaw_buffer_enqueued/enqueued = buffer.emplace_template_at(template, x, y, dir, dmm_context) + + if(enqueued) + results.failed = FALSE + enqueue_open_tiles(open_tiles, enqueued) + break + + var/place_end = TICK_USAGE + tick_used += place_end - place_begin + + results.approximate_ms_used += TICK_USAGE_TO_MS(tick_used) + + if(!results.failed) + #warn dmm context + + return results + +/datum/jigsaw_algorithm/general/proc/enqueue_open_tiles(list/open_tiles, datum/jigsaw_buffer_enqueued/enqueued) + // this is technically hugely inefficient + // but this is fine for now + // we just enqueue every single tile as part of the enqueued + // the filter on the try-place-template will automatically deal with it + for(var/i in 1 to length(enqueued.tiles)) + var/datum/jigsaw_buffer_tile/tile = enqueued.tiles[i] + var/x = tile.grid_x + var/y = tile.grid_y + + if(tile.north_tags) + open_tiles += list(x, y, NORTH) + if(tile.south_tags) + open_tiles += list(x, y, SOUTH) + if(tile.east_tags) + open_tiles += list(x, y, EAST) + if(tile.west_tags) + open_tiles += list(x, y, WEST) + /** * @return list(template, required) */ diff --git a/code/modules/jigsaw/jigsaw_buffer.dm b/code/modules/jigsaw/jigsaw_buffer.dm index 29d57a77772e..7dd8fece8a09 100644 --- a/code/modules/jigsaw/jigsaw_buffer.dm +++ b/code/modules/jigsaw/jigsaw_buffer.dm @@ -196,11 +196,11 @@ return TRUE /** - * @return TRUE / FALSE + * @return /datum/jigsaw_buffer_tile if successful, null if not. */ /datum/jigsaw_buffer/proc/emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) if(!template_fits_at(template, lower_left_grid_x, lower_left_grid_y, orientation)) - return FALSE + return null return unsafe_emplace_template_at(template, lower_left_grid_x, lower_left_grid_y, orientation, context) /datum/jigsaw_buffer/proc/unsafe_emplace_template_at(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) @@ -228,13 +228,15 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (width - x) var/real_y = lower_left_grid_y + (height - y) - src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + var/datum/jigsaw_buffer_tile/created = new /datum/jigsaw_buffer_tile( real_x, real_y, enqueued, pattern[x + width * (y - 1)], NORTH, ) + src.grid[real_x + src.width * (real_y - 1)] = created + enqueued.tiles += created if(SOUTH) // 0 deg CW @@ -242,13 +244,15 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + x - 1 var/real_y = lower_left_grid_y + y - 1 - src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + var/datum/jigsaw_buffer_tile/created = new /datum/jigsaw_buffer_tile( real_x, real_y, enqueued, pattern[x + width * (y - 1)], SOUTH, ) + src.grid[real_x + src.width * (real_y - 1)] = created + enqueued.tiles += created if(EAST) // 270 deg CW @@ -256,13 +260,15 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (height - y) var/real_y = lower_left_grid_y + x - 1 - src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + var/datum/jigsaw_buffer_tile/created = new /datum/jigsaw_buffer_tile( real_x, real_y, enqueued, pattern[x + width * (y - 1)], EAST, ) + src.grid[real_x + src.width * (real_y - 1)] = created + enqueued.tiles += created if(WEST) // 90 deg CW @@ -270,12 +276,14 @@ for(var/y in 1 to height) var/real_x = lower_left_grid_x + (y - 1) var/real_y = lower_left_grid_y + (width - x) - src.grid[real_x + src.width * (real_y - 1)] = new /datum/jigsaw_buffer_tile( + var/datum/jigsaw_buffer_tile/created = new /datum/jigsaw_buffer_tile( real_x, real_y, enqueued, pattern[x + width * (y - 1)], WEST, ) + src.grid[real_x + src.width * (real_y - 1)] = created + enqueued.tiles += created - return TRUE + return enqueued diff --git a/code/modules/jigsaw/jigsaw_buffer_enqueued.dm b/code/modules/jigsaw/jigsaw_buffer_enqueued.dm index 8a7b401da7fa..03d1f0015df7 100644 --- a/code/modules/jigsaw/jigsaw_buffer_enqueued.dm +++ b/code/modules/jigsaw/jigsaw_buffer_enqueued.dm @@ -11,6 +11,8 @@ var/datum/prototype/jigsaw_template/template var/datum/dmm_context/context + var/list/datum/jigsaw_buffer_tile/tiles = list() + /datum/jigsaw_buffer_enqueued/New(datum/prototype/jigsaw_template/template, lower_left_grid_x, lower_left_grid_y, orientation, datum/dmm_context/context) src.template = template src.lower_left_grid_x = lower_left_grid_x @@ -21,6 +23,7 @@ /datum/jigsaw_buffer_enqueued/Destroy() src.template = null src.context = null + src.tiles = null return ..() /** diff --git a/code/modules/jigsaw/jigsaw_spawn_pack.dm b/code/modules/jigsaw/jigsaw_spawn_pack.dm new file mode 100644 index 000000000000..c46c182c06e1 --- /dev/null +++ b/code/modules/jigsaw/jigsaw_spawn_pack.dm @@ -0,0 +1,7 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/datum/jigsaw_spawn_pack + + +#warn impl diff --git a/code/modules/jigsaw/map_helper/jigsaw_spawn.dm b/code/modules/jigsaw/map_helper/jigsaw_spawn.dm new file mode 100644 index 000000000000..a1f7ae208f63 --- /dev/null +++ b/code/modules/jigsaw/map_helper/jigsaw_spawn.dm @@ -0,0 +1,66 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/obj/map_helper/jigsaw_spawn + #warn sprite + + var/allow_mob = FALSE + var/allow_item = FALSE + + var/list/spawn_tags + var/list/priority_tags + +/obj/map_helper/jigsaw_spawn/mob_spawn + spawn_tags = list( + JIGSAW_SPAWN_TAG_MOB, + ) + +/obj/map_helper/jigsaw_spawn/mob_spawn/prefer_boss + priority_tags = list( + JIGSAW_SPAWN_TAG_MOB_BOSS, + ) + +/obj/map_helper/jigsaw_spawn/mob_spawn/prefer_ranged + priority_tags = list( + JIGSAW_SPAWN_TAG_MOB_RANGED, + ) + +/obj/map_helper/jigsaw_spawn/mob_spawn/prefer_melee + priority_tags = list( + JIGSAW_SPAWN_TAG_MOB_MELEE, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn + spawn_tags = list( + JIGSAW_SPAWN_TAG_ITEM, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_gun + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_GUN, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_melee + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_MELEE, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_armor + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_ARMOR, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_spacesuit + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_SPACESUIT, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_materials + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_MATERIALS, + ) + +/obj/map_helper/jigsaw_spawn/item_spawn/prefer_medical + priority_tags = list( + JIGSAW_SPAWN_TAG_ITEM_MEDICAL, + ) diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 0ec035aee0a0..93a4e4f6b7c3 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -93,6 +93,25 @@ /// * This can be null. var/datum/dmm_parsed/loaded_dmm + //* bespoke 'collected' values *// + + var/list/obj/map_helper/jigsaw_spawn/collected_jigsaw_spawns + +/datum/dmm_context/Destroy() + if(map_context) + if(map_context.loaded_dmm_contexts) + map_context.loaded_dmm_contexts -= src + map_context = null + auto_marker_config = null + injections = null + pre_init_callbacks = null + post_init_callbacks = null + area_cache = null + + collected_jigsaw_spawns = null + + return ..() + /datum/dmm_context/proc/mark_used() if(used) stack_trace("a dmm_context was reused; this is not allowed and will result in bugs.") diff --git a/code/modules/mapping/map_helpers/gear_marker.dm b/code/modules/mapping/map_helpers/gear_marker.dm index b9f33c258955..ce8851c16894 100644 --- a/code/modules/mapping/map_helpers/gear_marker.dm +++ b/code/modules/mapping/map_helpers/gear_marker.dm @@ -217,8 +217,8 @@ GLOBAL_REAL_LIST(distributed_gear_marker_usage_weights) = list( var/role_allow_overflow = TRUE /obj/map_helper/gear_marker/role/preloading_from_mapload(datum/dmm_context/context) - LAZYINITLIST(context.map_context.collected_stamped_gear_markers_by_role[role_tag]) - context.map_context.collected_stamped_gear_markers_by_role[role_tag] += src + LAZYINITLIST(context.map_context.collected_role_gear_markers_by_role[role_tag]) + context.map_context.collected_role_gear_markers_by_role[role_tag] += src return ..() /** diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 4f28b0389305..471365afe3b2 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -82,6 +82,13 @@ pre_init_callbacks = null post_init_callbacks = null loaded_dmm_contexts = null + area_cache = null + + collected_distributed_gear_markers = \ + collected_role_gear_markers_by_role = \ + collected_role_markers_by_tag = \ + collected_fixed_template_seeding_targets = null + return ..() /datum/map_context/proc/create_blank_dmm_context() From 646db54461546d690b033583d8011669f5f32ead Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Tue, 21 Jul 2026 08:57:21 -0700 Subject: [PATCH 41/44] that --- code/game/machinery/doors/door.dm | 13 ++++++++++++- code/modules/jigsaw/jigsaw_algorithm.dm | 13 +++++++++---- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 25183a883d72..7ce2d316d083 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -30,6 +30,7 @@ * If set, erase us on mapload if an airlock is already there. */ var/tmp/map_impl_erase_if_another_door_exists = FALSE + var/tmp/map_impl_erase_if_another_door_active = FALSE //* Legacy Below *// var/mineral @@ -56,9 +57,19 @@ var/reinforcing = 0 -#warn mapload trample +/obj/machinery/door/New() + ..() + + if(map_impl_erase_if_another_door_exists) + for(var/obj/machinery/door/other in locs) + if(other != src) + map_impl_erase_if_another_door_active = TRUE + break /obj/machinery/door/Initialize(mapload, newdir) + if(mapload && map_impl_erase_if_another_door_active) + return INITIALIZE_HINT_QDEL + . = ..() if(density) layer = closed_layer diff --git a/code/modules/jigsaw/jigsaw_algorithm.dm b/code/modules/jigsaw/jigsaw_algorithm.dm index e9c556d30086..011fe8274a5f 100644 --- a/code/modules/jigsaw/jigsaw_algorithm.dm +++ b/code/modules/jigsaw/jigsaw_algorithm.dm @@ -71,14 +71,16 @@ if(!next_template) break - var/datum/jigsaw_generator_results/template_results = any_passed ? \ + var/placing_initial = !any_passed + + var/datum/jigsaw_generator_results/template_results = placing_initial ? \ try_place_initial(buffer, next_template, open_tiles, map_context) : \ try_place_template(buffer, next_template, open_tiles, map_context) results.merge_from(template_results) if(template_results.failed) - if(next_required) + if(next_required || placing_initial) results.failed = TRUE break else @@ -278,10 +280,11 @@ /datum/jigsaw_algorithm/general/proc/try_place_initial(datum/jigsaw_buffer/buffer, datum/prototype/jigsaw_template/template, list/open_tiles, datum/map_context/context) as /datum/jigsaw_generator_results var/datum/jigsaw_generator_results/results = new + var/datum/dmm_context/dmm_context = context.create_blank_dmm_context() var/tick_used = 0 - var/iterations = 100 + var/iterations = 400 while(iterations > 0) iterations-- @@ -311,7 +314,9 @@ results.approximate_ms_used += TICK_USAGE_TO_MS(tick_used) if(!results.failed) - #warn dmm context + context.register_dmm_context(dmm_context) + else + qdel(dmm_context) return results From cfbfac0e40343138d396dc9c8fb22452cc3d09ae Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 22 Jul 2026 08:35:28 -0700 Subject: [PATCH 42/44] off the fucking rails --- citadel.dme | 2 + code/game/machinery/doors/door.dm | 19 ------ code/game/turfs/misc/auto_marker.dm | 22 ------- code/modules/jigsaw/jigsaw_algorithm.dm | 60 ++++++++++++++++- .../jigsaw/jigsaw_chain_generator_config.dm | 14 ++++ ...jigsaw_chain_generator_resultant_config.dm | 16 +++++ .../modules/jigsaw/jigsaw_generator_config.dm | 2 +- code/modules/jigsaw/jigsaw_tile.dm | 6 +- code/modules/mapping/auto_marker_config.dm | 56 ++++++++++++++++ code/modules/mapping/dmm_suite/dmm_context.dm | 2 +- .../legacy_jigsaw_worldgen_hijinks.dm | 10 ++- code/modules/mapping/map_system/map.dm | 2 +- .../modules/mapping/map_system/map_context.dm | 8 +-- code/modules/mapping/spawner/door.dm | 56 ++++++++++++++++ code/modules/mapping/spawner/window.dm | 65 ++++++++++++++++++- 15 files changed, 284 insertions(+), 56 deletions(-) create mode 100644 code/modules/mapping/auto_marker_config.dm create mode 100644 code/modules/mapping/spawner/door.dm diff --git a/citadel.dme b/citadel.dme index 6e37c407346e..a636b6837ab1 100644 --- a/citadel.dme +++ b/citadel.dme @@ -3670,6 +3670,7 @@ #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\culture.dm" #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\origin.dm" #include "code\modules\lore_hardcoded\species\xenomorph_hybrid\religion.dm" +#include "code\modules\mapping\auto_marker_config.dm" #include "code\modules\mapping\map_generation.dm" #include "code\modules\mapping\dmm_suite\dmm_context.dm" #include "code\modules\mapping\dmm_suite\dmm_orientation.dm" @@ -3723,6 +3724,7 @@ #include "code\modules\mapping\map_tests\map_test.dm" #include "code\modules\mapping\map_tests\tests\airlock_linkage_test.dm" #include "code\modules\mapping\spawner\_spawner.dm" +#include "code\modules\mapping\spawner\door.dm" #include "code\modules\mapping\spawner\gateway.dm" #include "code\modules\mapping\spawner\tcomms_relay.dm" #include "code\modules\mapping\spawner\window.dm" diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 7ce2d316d083..b3eb479346b7 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -25,13 +25,6 @@ hit_sound_brute = 'sound/weapons/smash.ogg' - //* Preload *// - /** - * If set, erase us on mapload if an airlock is already there. - */ - var/tmp/map_impl_erase_if_another_door_exists = FALSE - var/tmp/map_impl_erase_if_another_door_active = FALSE - //* Legacy Below *// var/mineral var/open_layer = DOOR_OPEN_LAYER @@ -57,19 +50,7 @@ var/reinforcing = 0 -/obj/machinery/door/New() - ..() - - if(map_impl_erase_if_another_door_exists) - for(var/obj/machinery/door/other in locs) - if(other != src) - map_impl_erase_if_another_door_active = TRUE - break - /obj/machinery/door/Initialize(mapload, newdir) - if(mapload && map_impl_erase_if_another_door_active) - return INITIALIZE_HINT_QDEL - . = ..() if(density) layer = closed_layer diff --git a/code/game/turfs/misc/auto_marker.dm b/code/game/turfs/misc/auto_marker.dm index bfe9cdc3207f..1151ee8b1d51 100644 --- a/code/game/turfs/misc/auto_marker.dm +++ b/code/game/turfs/misc/auto_marker.dm @@ -1,28 +1,6 @@ //* This file is explicitly licensed under the MIT license. *// //* Copyright (c) 2026 Citadel Station Developers *// -/datum/turf_auto_marker_config - var/outdoors_floor_type = /turf/simulated/floor/tiled - var/outdoors_floor_stripped_type = /turf/simulated/floor/plating - var/outdoors_floor_very_stripped_type = /turf/simulated/floor/plating - var/outdoors_rock_type = /turf/simulated/mineral - var/outdoors_rock_dense_type = /turf/simulated/mineral - var/outdoors_rock_very_dense_type = /turf/simulated/mineral - var/outdoors_liquid_type = /turf/simulated/floor/water - -/datum/turf_auto_marker_config/clone() - var/datum/turf_auto_marker_config/clone = new - - clone.outdoors_floor_type = src.outdoors_floor_type - clone.outdoors_floor_stripped_type = src.outdoors_floor_stripped_type - clone.outdoors_floor_very_stripped_type = src.outdoors_floor_very_stripped_type - clone.outdoors_rock_type = src.outdoors_rock_type - clone.outdoors_rock_dense_type = src.outdoors_rock_dense_type - clone.outdoors_rock_very_dense_type = src.outdoors_rock_very_dense_type - clone.outdoors_liquid_type = src.outdoors_liquid_type - - return clone - /** * automatic markers that replace themselves on mapload */ diff --git a/code/modules/jigsaw/jigsaw_algorithm.dm b/code/modules/jigsaw/jigsaw_algorithm.dm index 011fe8274a5f..722fe53a7d16 100644 --- a/code/modules/jigsaw/jigsaw_algorithm.dm +++ b/code/modules/jigsaw/jigsaw_algorithm.dm @@ -204,8 +204,10 @@ // match tags // lack of require = anything goes - var/tag_pass = (!length(our_tags & their_exclude)) && (!length(our_exclude & their_tags)) && \ - (length(our_require & their_tags) == length(our_require)) && (!length(their_require & our_tags) == length(their_require)) + var/tag_pass = (!their_exclude || !length(our_tags & their_exclude)) && \ + (!our_exclude || !length(our_exclude & their_tags)) && \ + (!our_require || (length(our_require & their_tags) == length(our_require))) && \ + (!their_require || (length(their_require & our_tags) == length(their_require))) if(!tag_pass) continue @@ -229,8 +231,60 @@ // now attempt emplace + // compute x/y + // the position of our open tile is the tile that has an attachment point, + // not the tile that the attachment is connecting on + + // so, the template's attachment point should end up offset by one towards the open tile's facing direction + + var/align_to_x + var/align_to_y + + switch(dir) + if(NORTH) + align_to_x = x + align_to_y = y + 1 + + if(SOUTH) + align_to_x = x + align_to_y = y - 1 + + if(EAST) + align_to_x = x + 1 + align_to_y = y + + if(WEST) + align_to_x = x - 1 + align_to_y = y + + var/computed_x + var/computed_y + + // compute rotation angle as clockwise rotation from their_dir to dir + var/rotation_angle = dir2angle(dir) - dir2angle(their_dir) + if (rotation_angle < 0) + rotation_angle += 360 + + switch(rotation_angle) + if(rotation_angle == 0) + computed_x = align_to_x - their_x_offset + computed_y = align_to_y - their_y_offset + + if(rotation_angle == 180) + #warn this + computed_x = align_to_x - their_x_offset + computed_y = align_to_y - their_y_offset + + if(rotation_angle == 90) + #warn this + computed_x = align_to_x - their_x_offset + computed_y = align_to_y - their_y_offset + + if(rotation_angle == 270) + #warn this + computed_x = align_to_x - their_x_offset + computed_y = align_to_y - their_y_offset - #warn compute x/y emplaced = buffer.emplace_template_at(template, computed_x, computed_y, their_dir, dmm_context) var/emplace_end = TICK_USAGE diff --git a/code/modules/jigsaw/jigsaw_chain_generator_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_config.dm index 11707a5ccaad..d70405a473fe 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_config.dm @@ -32,6 +32,18 @@ * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget_cap_gaussian_stddev + /** + * Tile budget gaussian center. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_ratio_gaussian_center + /** + * Tile budget gaussian standard deviation. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_ratio_gaussian_stddev /** * Custom budgets, key-value list of string-number. * * This list may not be edited by the generator. @@ -49,6 +61,8 @@ result.tile_budget_ratio = src.tile_budget_ratio result.tile_budget_cap_gaussian_center = src.tile_budget_cap_gaussian_center result.tile_budget_cap_gaussian_stddev = src.tile_budget_cap_gaussian_stddev + result.tile_budget_cap_ratio_gaussian_center = src.tile_budget_cap_ratio_gaussian_center + result.tile_budget_cap_ratio_gaussian_stddev = src.tile_budget_cap_ratio_gaussian_stddev result.custom_budgets = src.custom_budgets.Copy() return result diff --git a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm index 7cc18819fe88..64fbaef1dc98 100644 --- a/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm +++ b/code/modules/jigsaw/jigsaw_chain_generator_resultant_config.dm @@ -27,6 +27,18 @@ * * This is applied in parallel to the jigsaw generator config's limits. */ var/tile_budget_cap_gaussian_stddev + /** + * Tile budget gaussian center. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_ratio_gaussian_center + /** + * Tile budget gaussian standard deviation. + * * Applied as min() to 'ratio' budget / tile budget if set. + * * This is applied in parallel to the jigsaw generator config's limits. + */ + var/tile_budget_cap_ratio_gaussian_stddev /** * Custom budgets, key-value list of string-number. * * This list may not be edited by the generator. @@ -64,3 +76,7 @@ if(!isnull(tile_budget_cap_gaussian_center) && !isnull(tile_budget_cap_gaussian_stddev)) var/gaussian_cap = gaussian(tile_budget_cap_gaussian_center, tile_budget_cap_gaussian_stddev) . = min(., gaussian_cap) + + if(!isnull(tile_budget_cap_ratio_gaussian_center) && !isnull(tile_budget_cap_ratio_gaussian_stddev)) + var/gaussian_cap = gaussian(tile_budget_cap_ratio_gaussian_center, tile_budget_cap_ratio_gaussian_stddev) + . = min(., ceil(free_tiles * gaussian_cap)) diff --git a/code/modules/jigsaw/jigsaw_generator_config.dm b/code/modules/jigsaw/jigsaw_generator_config.dm index a11a2643c172..efb0f832a5e5 100644 --- a/code/modules/jigsaw/jigsaw_generator_config.dm +++ b/code/modules/jigsaw/jigsaw_generator_config.dm @@ -34,7 +34,7 @@ * Set to override auto-marker settings. Otherwise, this uses * the map's auto-marker config. */ - var/datum/turf_auto_marker_config/auto_marker_config + var/datum/auto_marker_config/auto_marker_config /** * Template config diff --git a/code/modules/jigsaw/jigsaw_tile.dm b/code/modules/jigsaw/jigsaw_tile.dm index 30b6f49ef463..75046b4ebfa4 100644 --- a/code/modules/jigsaw/jigsaw_tile.dm +++ b/code/modules/jigsaw/jigsaw_tile.dm @@ -8,9 +8,13 @@ * * The match / require / exclude lists are used to determine if this tile can be placed * next to another tile. * * All lists are immutable and potentially (likely) shared for efficiency. - * * Match is tags for that side of ourselves. + * * Tags is tags for that side of ourselves. * * Require is tags that must be present on the other side of the adjacent tile. * * Exclude is tags that must NOT be present on the other side of the adjacent tile + * * Tags must be set on a side for it to be joinable. + * * Technically, required / exclude is not enforced for non-joinable sides, + * but currently a border of 1 tile is placed around each ruin + * so it's fine. */ /datum/jigsaw_tile var/list/north_tags diff --git a/code/modules/mapping/auto_marker_config.dm b/code/modules/mapping/auto_marker_config.dm new file mode 100644 index 000000000000..e61ea2ecba14 --- /dev/null +++ b/code/modules/mapping/auto_marker_config.dm @@ -0,0 +1,56 @@ +//* This file is explicitly licensed under the MIT license. *// +//* Copyright (c) 2026 Citadel Station Developers *// + +/** + * Configuration that allows types to dynamically replace themselves on + * mapload to dynamically retheme a room. + */ +/datum/auto_marker_config + var/outdoors_floor_type = /turf/simulated/floor/tiled + var/outdoors_floor_stripped_type = /turf/simulated/floor/plating + var/outdoors_floor_very_stripped_type = /turf/simulated/floor/plating + + var/outdoors_rock_type = /turf/simulated/mineral + var/outdoors_rock_dense_type = /turf/simulated/mineral + var/outdoors_rock_very_dense_type = /turf/simulated/mineral + + var/outdoors_liquid_type = /turf/simulated/floor/water + + var/door_type = /obj/structure/simple_door/wood + var/secure_door_type = /obj/structure/simple_door/iron + var/external_door_type = /obj/structure/simple_door/wood + + var/airlock_type = /obj/machinery/door/airlock/glass + var/secure_airlock_type = /obj/machinery/door/airlock/vault + var/external_airlock_type = /obj/machinery/door/airlock/external + + var/window_type = /obj/structure/window + var/reinforced_window_type = /obj/structure/window/reinforced + var/borosillicate_window_type = /obj/structure/window/phoronreinforced + +/datum/auto_marker_config/clone() + var/datum/auto_marker_config/clone = new + + clone.outdoors_floor_type = src.outdoors_floor_type + clone.outdoors_floor_stripped_type = src.outdoors_floor_stripped_type + clone.outdoors_floor_very_stripped_type = src.outdoors_floor_very_stripped_type + + clone.outdoors_rock_type = src.outdoors_rock_type + clone.outdoors_rock_dense_type = src.outdoors_rock_dense_type + clone.outdoors_rock_very_dense_type = src.outdoors_rock_very_dense_type + + clone.outdoors_liquid_type = src.outdoors_liquid_type + + clone.door_type = src.door_type + clone.secure_door_type = src.secure_door_type + clone.external_door_type = src.external_door_type + + clone.airlock_type = src.airlock_type + clone.secure_airlock_type = src.secure_airlock_type + clone.external_airlock_type = src.external_airlock_type + + clone.window_type = src.window_type + clone.reinforced_window_type = src.reinforced_window_type + clone.borosillicate_window_type = src.borosillicate_window_type + + return clone diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index 93a4e4f6b7c3..c89a02dc04d8 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -28,7 +28,7 @@ /** * Auto marker config to use for this load. */ - var/datum/turf_auto_marker_config/auto_marker_config + var/datum/auto_marker_config/auto_marker_config /** * Set to identify the area we're loading. Used by things like * automatic area naming. diff --git a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm index 432ccd82c1cb..635be891cde9 100644 --- a/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm +++ b/code/modules/mapping/map_injection/legacy_jigsaw_worldgen_hijinks.dm @@ -6,6 +6,10 @@ * with layers, this is what you get. */ /datum/map_injection/legacy_jigsaw_worldgen_hijinks + var/datum/jigsaw_chain_generator_config/config = new /datum/jigsaw_chain_generator_config/literally_everything{ + tile_budget_cap_ratio_gaussian_center = 0.4; + tile_budget_cap_ratio_gaussian_stddev = 0.1; + } #warn impl /datum/map_injection/legacy_jigsaw_worldgen_hijinks/on_map_pre_init(datum/map_context/map_context, datum/dmm_context/dmm_context) @@ -36,4 +40,8 @@ var/datum/jigsaw_chain_generator/generator = new var/datum/jigsaw_buffer/buffer = new(grid_width, grid_height) - #warn impl + buffer.block_off_according_to_world_at(aligned_x_low, aligned_y_low, dmm_context.loaded_bounds[MAP_MINZ], TRUE) + + var/datum/jigsaw_chain_generator_results/results = generator.generate(buffer) + + log_game("legacy_jigsaw_worldgen_hijinks: emplaced on zlevel [dmm_context.loaded_bounds[MAP_MINZ]] with ~[results.total_tile_budget_used] tile budget used. Data: [json_encode(results.serialize())]") diff --git a/code/modules/mapping/map_system/map.dm b/code/modules/mapping/map_system/map.dm index 8197b0d23b92..250a6d7dbaee 100644 --- a/code/modules/mapping/map_system/map.dm +++ b/code/modules/mapping/map_system/map.dm @@ -91,7 +91,7 @@ /// center us if we're smaller than world size var/load_auto_center = TRUE /// Default auto-marker options. - var/datum/turf_auto_marker_config/load_auto_marker_config = new + var/datum/auto_marker_config/load_auto_marker_config = new //* Injections *// /** diff --git a/code/modules/mapping/map_system/map_context.dm b/code/modules/mapping/map_system/map_context.dm index 471365afe3b2..67e4064bf5b4 100644 --- a/code/modules/mapping/map_system/map_context.dm +++ b/code/modules/mapping/map_system/map_context.dm @@ -20,9 +20,11 @@ var/mangling_id /** - * Turf auto_marker configuration. + * Auto marker configuration, used to dynamically + * configure types of turfs and objects to theme + * a room. */ - var/datum/turf_auto_marker_config/auto_marker_config + var/datum/auto_marker_config/auto_marker_config /** * Injections to fire @@ -75,8 +77,6 @@ /// collected fixed template seeding targets var/list/obj/map_helper/fixed_template_seeding_target/collected_fixed_template_seeding_targets -#warn hook all - /datum/map_context/Destroy() injections = null pre_init_callbacks = null diff --git a/code/modules/mapping/spawner/door.dm b/code/modules/mapping/spawner/door.dm new file mode 100644 index 000000000000..d610f7494aee --- /dev/null +++ b/code/modules/mapping/spawner/door.dm @@ -0,0 +1,56 @@ +/obj/spawner/door + #warn impl / sprite + + //* Preload *// + + /** + * If set, erase us on mapload if an airlock is already there. + */ + var/tmp/map_impl_erase_if_another_door_exists = FALSE + var/tmp/map_impl_erase_if_another_door_active = FALSE + +/obj/spawner/door/New() + if(map_impl_erase_if_another_door_exists) + for(var/obj/machinery/door/other in locs) + if(other != src) + map_impl_erase_if_another_door_active = TRUE + break + for(var/obj/spawner/door/other in locs) + if(other != src) + map_impl_erase_if_another_door_active = TRUE + break + ..() + +/obj/spawner/door/Initialize(mapload, newdir) + if(mapload && map_impl_erase_if_another_door_active) + return INITIALIZE_HINT_QDEL + return ..() + +/obj/spawner/door/Spawn() + +#warn impl all + +/obj/spawner/door/proc/get_spawn_path() + CRASH("not implemented") + +/obj/spawner/door/specific + //* Type *// + + /// Door type to spawn + var/door_type = /obj/machinery/door/airlock + +//* Auto Marker Based *// + +/obj/spawner/door/auto + +/obj/spawner/door/auto/secure + +/obj/spawner/door/auto/external + +/obj/spawner/door/auto/airlock + +/obj/spawner/door/auto/airlock/secure + +/obj/spawner/door/auto/airlock/external + +#warn auto marker config diff --git a/code/modules/mapping/spawner/window.dm b/code/modules/mapping/spawner/window.dm index e044e908822f..5244d7d5ddfd 100644 --- a/code/modules/mapping/spawner/window.dm +++ b/code/modules/mapping/spawner/window.dm @@ -3,10 +3,13 @@ icon_state = "window_grille_pane" layer = WINDOW_LAYER + //* Preload *// /** - * If set, will erase ourselves if a conflicting window exists + * If set, will erase ourselves if a conflicting window exists on mapload. + * * Useful for templates. */ var/tmp/map_impl_erase_if_another_window_exists = FALSE + var/tmp/map_impl_erase_if_another_window_active = FALSE /// found dirs var/found_dirs = NONE @@ -39,9 +42,23 @@ /// todo: rename to electrochromatic_id var/id -#warn trample? +/obj/spawner/window/New() + if(map_impl_erase_if_another_window_exists) + if(locate(/obj/structure/window) in loc) + map_impl_erase_if_another_window_active = TRUE + else if(locate(/obj/structure/grille) in loc) + map_impl_erase_if_another_window_active = TRUE + else + for(var/obj/spawner/window/spawner in loc) + if(spawner != src) + map_impl_erase_if_another_window_active = TRUE + break + ..() /obj/spawner/window/Initialize(mapload) + if(map_impl_erase_if_another_window_active) + qdel(src) + return INITIALIZE_HINT_QDEL if(!full_window) find_dirs() return ..() @@ -69,7 +86,8 @@ if(!isnull(low_wall_stripe_color)) low_wall.stripe_color = low_wall_stripe_color - var/new_window = new window_full_path(loc) + // force full window via diagonal dir + var/new_window = new window_full_path(loc, NORTHEAST) if(id && istype(new_window, /obj/structure/window/reinforced/polarized)) var/obj/structure/window/reinforced/polarized/P = new_window P.id = id @@ -273,3 +291,44 @@ /obj/spawner/window/low_wall/nogrille/firelocks/transparent firelocks_use_glass = TRUE + +//* Auto Marker Based *// + +/obj/spawner/window/auto + +/obj/spawner/window/auto/preloading_from_mapload(datum/dmm_context/context) + . = ..() + +/obj/spawner/window/auto/proc/load_from_auto_marker_config(datum/turf_auto_marker_config/auto_marker_config) + +/obj/spawner/window/auto/low_wall + +/obj/spawner/window/auto/low_wall/firelocks + +/obj/spawner/window/auto/low_wall/firelocks/transparent + +/obj/spawner/window/auto/low_wall/reinforced + +/obj/spawner/window/auto/low_wall/reinforced/firelocks + +/obj/spawner/window/auto/low_wall/reinforced/firelocks/transparent + +/obj/spawner/window/auto/low_wall/borosillicate + +/obj/spawner/window/auto/low_wall/borosillicate/firelocks + +/obj/spawner/window/auto/low_wall/borosillicate/firelocks/transparent + +/obj/spawner/window/auto/full + +/obj/spawner/window/auto/full/firelocks + +/obj/spawner/window/auto/full/reinforced + +/obj/spawner/window/auto/full/reinforced/firelocks + +/obj/spawner/window/auto/full/borosillicate + +/obj/spawner/window/auto/full/borosillicate/firelocks + +#warn auto marker config From c63ee0710f1ba561736703bedd0acaaefa9b8cff Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 22 Jul 2026 08:45:00 -0700 Subject: [PATCH 43/44] augh --- code/modules/jigsaw/jigsaw_algorithm.dm | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/code/modules/jigsaw/jigsaw_algorithm.dm b/code/modules/jigsaw/jigsaw_algorithm.dm index 722fe53a7d16..5a5cd67d26b5 100644 --- a/code/modules/jigsaw/jigsaw_algorithm.dm +++ b/code/modules/jigsaw/jigsaw_algorithm.dm @@ -185,6 +185,12 @@ our_require = tile.west_require our_exclude = tile.west_exclude + var/list/attachment_points_left = computed_pattern.calculated_attachment_points.Copy() + while(length(attachment_points_left)) + #warn impl + + #warn this entire thing needs to be wrapped in a tick checked function, use above variable + // we got the tags, try to match against the template var/match_begin = TICK_USAGE @@ -271,17 +277,17 @@ computed_y = align_to_y - their_y_offset if(rotation_angle == 180) - #warn this + #warn this is wrong computed_x = align_to_x - their_x_offset computed_y = align_to_y - their_y_offset if(rotation_angle == 90) - #warn this + #warn this is wrong computed_x = align_to_x - their_x_offset computed_y = align_to_y - their_y_offset if(rotation_angle == 270) - #warn this + #warn this is wrong computed_x = align_to_x - their_x_offset computed_y = align_to_y - their_y_offset @@ -307,6 +313,9 @@ return results +/datum/jigsaw_algorithm/general/proc/compute_next_possible_attachment_point(list/attachment_points_left, datum/jigsaw_generator_results/results) as /list + #warn impl + /datum/jigsaw_algorithm/general/proc/prune_open_tiles(datum/jigsaw_buffer/buffer, list/open_tiles) // prune open tiles that are no longer valid for(var/i in length(open_tiles) to 1 step -1) From 9c15922e8d43d8fd91cd325a68c6d9ef9a9e7fbf Mon Sep 17 00:00:00 2001 From: silicons <2003111+silicons@users.noreply.github.com> Date: Wed, 22 Jul 2026 09:03:40 -0700 Subject: [PATCH 44/44] That --- code/modules/mapping/dmm_suite/dmm_context.dm | 3 +++ code/modules/mapping/dmm_suite/dmm_parsed.dm | 2 ++ code/modules/mapping/spawner/window.dm | 27 ++++++++++++++++++- 3 files changed, 31 insertions(+), 1 deletion(-) diff --git a/code/modules/mapping/dmm_suite/dmm_context.dm b/code/modules/mapping/dmm_suite/dmm_context.dm index c89a02dc04d8..4172328804ae 100644 --- a/code/modules/mapping/dmm_suite/dmm_context.dm +++ b/code/modules/mapping/dmm_suite/dmm_context.dm @@ -112,6 +112,9 @@ return ..() +/datum/dmm_context/proc/prepare() + auto_marker_config = map_context?.auto_marker_config || new /datum/auto_marker_config + /datum/dmm_context/proc/mark_used() if(used) stack_trace("a dmm_context was reused; this is not allowed and will result in bugs.") diff --git a/code/modules/mapping/dmm_suite/dmm_parsed.dm b/code/modules/mapping/dmm_suite/dmm_parsed.dm index f87419343327..e2d594c52ec7 100644 --- a/code/modules/mapping/dmm_suite/dmm_parsed.dm +++ b/code/modules/mapping/dmm_suite/dmm_parsed.dm @@ -297,6 +297,8 @@ context = new . = context + context.prepare() + var/list/area_cache = context?.area_cache || context?.map_context?.area_cache var/static/loading = FALSE diff --git a/code/modules/mapping/spawner/window.dm b/code/modules/mapping/spawner/window.dm index 5244d7d5ddfd..f2c78db0ba0a 100644 --- a/code/modules/mapping/spawner/window.dm +++ b/code/modules/mapping/spawner/window.dm @@ -298,11 +298,35 @@ /obj/spawner/window/auto/preloading_from_mapload(datum/dmm_context/context) . = ..() + load_from_auto_marker_config(context.map_context.auto_marker_config) -/obj/spawner/window/auto/proc/load_from_auto_marker_config(datum/turf_auto_marker_config/auto_marker_config) +/obj/spawner/window/auto/proc/load_from_auto_marker_config(datum/auto_marker_config/auto_marker_config) + window_pane_path = auto_marker_config.window_type + +#warn below + +/obj/spawner/window/auto/firelocks + firelocks = TRUE + +/obj/spawner/window/auto/firelocks/transparent + firelocks_use_glass = TRUE + +/obj/spawner/window/auto/reinforced + +/obj/spawner/window/auto/reinforced/firelocks + +/obj/spawner/window/auto/reinforced/firelocks/transparent + +/obj/spawner/window/auto/borosillicate + +/obj/spawner/window/auto/borosillicate/firelocks + +/obj/spawner/window/auto/borosillicate/firelocks/transparent /obj/spawner/window/auto/low_wall +/obj/spawner/window/auto/low_wall/load_from_auto_marker_config(datum/turf_auto_marker_config/auto_marker_config) + /obj/spawner/window/auto/low_wall/firelocks /obj/spawner/window/auto/low_wall/firelocks/transparent @@ -331,4 +355,5 @@ /obj/spawner/window/auto/full/borosillicate/firelocks + #warn auto marker config