diff --git a/.travis.yml b/.travis.yml
index e2bc4a5192..2559dcab32 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -22,6 +22,7 @@ addons:
- libc6-i386
- libgcc1:i386
- libstdc++6:i386
+ - libssl-dev:i386
before_script:
- chmod +x ./install-byond.sh
diff --git a/code/__defines/_compile_options.dm b/code/__defines/_compile_options.dm
index 229d0b94ad..10a6485c44 100644
--- a/code/__defines/_compile_options.dm
+++ b/code/__defines/_compile_options.dm
@@ -7,6 +7,10 @@
2 for preloading absolutely everything;
*/
+#define RUST_G "rust_g" // If uncommented, we will use the rust-g (https://github.com/tgstation/rust-g) native library for fast
+ // logging. This requires you to have the rust_g.dll or rust_g (renamed from librust_g.so) installed in the root folder or BYOND/bin
+ // The define's value should be the name of library file.
+
// ZAS Compile Options
//#define ZASDBG // Uncomment to turn on super detailed ZAS debugging that probably won't even compile.
#define MULTIZAS // Uncomment to turn on Multi-Z ZAS Support!
diff --git a/code/__defines/misc.dm b/code/__defines/misc.dm
index 6058200915..79848c748a 100644
--- a/code/__defines/misc.dm
+++ b/code/__defines/misc.dm
@@ -21,6 +21,9 @@
#define SEE_INVISIBLE_MINIMUM 5
#define INVISIBILITY_MAXIMUM 100
+// For the client FPS pref and anywhere else
+#define MAX_CLIENT_FPS 200
+
// Some arbitrary defines to be used by self-pruning global lists. (see master_controller)
#define PROCESS_KILL 26 // Used to trigger removal from a processing list.
#define MAX_GEAR_COST 15 // Used in chargen for accessory loadout limit.
@@ -237,3 +240,17 @@
#define USE_FAIL_INCAPACITATED 5
#define USE_FAIL_NOT_IN_USER 6
#define USE_FAIL_IS_SILICON 7
+
+//'Normal'ness v v v
+//Various types of colorblindness R2R R2G R2B G2R G2G G2B B2R B2G B2B
+#define MATRIX_Monochromia list(0.33, 0.33, 0.33, 0.59, 0.59, 0.59, 0.11, 0.11, 0.11)
+#define MATRIX_Protanopia list(0.57, 0.43, 0, 0.56, 0.44, 0, 0, 0.24, 0.76)
+#define MATRIX_Protanomaly list(0.82, 0.18, 0, 0.33, 0.67, 0, 0, 0.13, 0.88)
+#define MATRIX_Deuteranopia list(0.63, 0.38, 0, 0.70, 0.30, 0, 0, 0.30, 0.70)
+#define MATRIX_Deuteranomaly list(0.80, 0.20, 0, 0.26, 0.74, 0, 0, 0.14, 0.86)
+#define MATRIX_Tritanopia list(0.95, 0.05, 0, 0, 0.43, 0.57, 0, 0.48, 0.53)
+#define MATRIX_Tritanomaly list(0.97, 0.03, 0, 0, 0.73, 0.27, 0, 0.18, 0.82)
+#define MATRIX_Achromatopsia list(0.30, 0.59, 0.11, 0.30, 0.59, 0.11, 0.30, 0.59, 0.11)
+#define MATRIX_Achromatomaly list(0.62, 0.32, 0.06, 0.16, 0.78, 0.06, 0.16, 0.32, 0.52)
+#define MATRIX_Vulp_Colorblind list(0.50, 0.40, 0.10, 0.50, 0.40, 0.10, 0, 0.20, 0.80)
+#define MATRIX_Taj_Colorblind list(0.40, 0.20, 0.40, 0.40, 0.60, 0, 0.20, 0.20, 0.60)
diff --git a/code/__defines/misc_vr.dm b/code/__defines/misc_vr.dm
index ed2f27978a..600bf5be2b 100644
--- a/code/__defines/misc_vr.dm
+++ b/code/__defines/misc_vr.dm
@@ -20,6 +20,11 @@
#define STARTING_SPECIES_POINTS 1
#define MAX_SPECIES_TRAITS 5
+// Xenochimera thing mostly
+#define REVIVING_NOW 1
+#define REVIVING_DONE 2
+#define REVIVING_COOLDOWN 3
+
// Resleeving Mind Record Status
#define MR_NORMAL 0
#define MR_UNSURE 1
@@ -33,6 +38,9 @@
//Assistant/Visitor/Whatever
#define USELESS_JOB "Visitor"
+//Herm Gender
+#define HERM "herm"
+
// Bluespace shelter deploy checks
#define SHELTER_DEPLOY_ALLOWED "allowed"
#define SHELTER_DEPLOY_BAD_TURFS "bad turfs"
diff --git a/code/__defines/mobs.dm b/code/__defines/mobs.dm
index 6d466e9930..23e0825299 100644
--- a/code/__defines/mobs.dm
+++ b/code/__defines/mobs.dm
@@ -293,16 +293,13 @@
#define VIS_CH_SPECIAL 13
#define VIS_CH_STATUS_OOC 14
-#define VIS_D_COLORBLIND 15
-#define VIS_D_COLORBLINDI 16
+#define VIS_ADMIN1 15
+#define VIS_ADMIN2 16
+#define VIS_ADMIN3 17
-#define VIS_ADMIN1 17
-#define VIS_ADMIN2 18
-#define VIS_ADMIN3 19
+#define VIS_MESONS 18
-#define VIS_MESONS 20
-
-#define VIS_COUNT 20 //Must be highest number from above.
+#define VIS_COUNT 18 //Must be highest number from above.
//Some mob icon layering defines
#define BODY_LAYER -100
diff --git a/code/__defines/mobs_vr.dm b/code/__defines/mobs_vr.dm
index eee6220f8b..d80d22df36 100644
--- a/code/__defines/mobs_vr.dm
+++ b/code/__defines/mobs_vr.dm
@@ -1,13 +1,13 @@
#undef VIS_COUNT
-#define VIS_CH_STATUS_R 21
-#define VIS_CH_HEALTH_VR 22
-#define VIS_CH_BACKUP 23
-#define VIS_CH_VANTAG 24
+#define VIS_CH_STATUS_R 19
+#define VIS_CH_HEALTH_VR 20
+#define VIS_CH_BACKUP 21
+#define VIS_CH_VANTAG 22
-#define VIS_AUGMENTED 25
+#define VIS_AUGMENTED 23
-#define VIS_COUNT 25
+#define VIS_COUNT 23
//Protean organs
#define O_ORCH "orchestrator"
diff --git a/code/_helpers/global_lists.dm b/code/_helpers/global_lists.dm
index 903c7d3d68..34a58f18ca 100644
--- a/code/_helpers/global_lists.dm
+++ b/code/_helpers/global_lists.dm
@@ -24,8 +24,8 @@ var/global/list/joblist = list() //list of all jobstypes, minus borg and AI
var/global/list/turfs = list() //list of all turfs
-#define all_genders_define_list list(MALE,FEMALE,PLURAL,NEUTER)
-#define all_genders_text_list list("Male","Female","Plural","Neuter")
+#define all_genders_define_list list(MALE,FEMALE,PLURAL,NEUTER,HERM) //VOREStaton Edit
+#define all_genders_text_list list("Male","Female","Plural","Neuter","Herm") //VOREStation Edit
//Languages/species/whitelist.
var/global/list/all_species[0]
diff --git a/code/_helpers/global_lists_vr.dm b/code/_helpers/global_lists_vr.dm
index 64393508af..77abcaa617 100644
--- a/code/_helpers/global_lists_vr.dm
+++ b/code/_helpers/global_lists_vr.dm
@@ -161,6 +161,215 @@ var/global/list/edible_trash = list(/obj/item/trash,
/obj/item/device/mmi/digital/posibrain,
/obj/item/device/aicard)
+var/global/list/cont_flavors = list(
+ "Generic" = cont_flavors_generic,
+ "Acrid" = cont_flavors_acrid,
+ "Dirty" = cont_flavors_dirty,
+ "Musky" = cont_flavors_musky,
+ "Smelly" = cont_flavors_smelly,
+ "Wet" = cont_flavors_wet)
+
+var/global/list/cont_flavors_generic = list("acrid",
+ "bedraggled",
+ "begrimed",
+ "churned",
+ "contaminated",
+ "cruddy",
+ "damp",
+ "digested",
+ "dirty",
+ "disgusting",
+ "drenched",
+ "drippy",
+ "filthy",
+ "foul",
+ "funky",
+ "gloppy",
+ "gooey",
+ "grimy",
+ "gross",
+ "gruesome",
+ "gunky",
+ "icky",
+ "juicy",
+ "messy",
+ "mucky",
+ "mushy",
+ "nasty",
+ "noxious",
+ "oozing",
+ "pungent",
+ "putrescent",
+ "putrid",
+ "repulsive",
+ "saucy",
+ "slimy",
+ "sloppy",
+ "sloshed",
+ "sludgy",
+ "smeary",
+ "smelly",
+ "smudgy",
+ "smutty",
+ "soaked",
+ "soggy",
+ "soiled",
+ "sopping",
+ "squashy",
+ "squishy",
+ "stained",
+ "sticky",
+ "stinky",
+ "tainted",
+ "tarnished",
+ "unclean",
+ "unsanitary",
+ "unsavory",
+ "yucky")
+
+var/global/list/cont_flavors_wet = list("damp",
+ "drenched",
+ "drippy",
+ "gloppy",
+ "gooey",
+ "juicy",
+ "oozing",
+ "slimy",
+ "slobbery",
+ "sloppy",
+ "sloshed",
+ "sloughy",
+ "sludgy",
+ "slushy",
+ "soaked",
+ "soggy",
+ "sopping",
+ "squashy",
+ "squishy",
+ "sticky")
+
+var/global/list/cont_flavors_smelly = list("disgusting",
+ "filthy",
+ "foul",
+ "funky",
+ "gross",
+ "icky",
+ "malodorous",
+ "nasty",
+ "niffy",
+ "noxious",
+ "pungent",
+ "putrescent",
+ "putrid",
+ "rancid",
+ "reeking",
+ "repulsive",
+ "smelly",
+ "stenchy",
+ "stinky",
+ "unsavory",
+ "whiffy",
+ "yucky")
+
+var/global/list/cont_flavors_acrid = list("acrid",
+ "caustic",
+ "churned",
+ "chymous",
+ "digested",
+ "discolored",
+ "disgusting",
+ "drippy",
+ "foul",
+ "gloppy",
+ "gooey",
+ "grimy",
+ "gross",
+ "gruesome",
+ "icky",
+ "mucky",
+ "mushy",
+ "nasty",
+ "noxious",
+ "oozing",
+ "pungent",
+ "putrescent",
+ "putrid",
+ "repulsive",
+ "saucy",
+ "slimy",
+ "sloppy",
+ "sloshed",
+ "sludgy",
+ "slushy",
+ "smelly",
+ "smudgy",
+ "soupy",
+ "squashy",
+ "squishy",
+ "stained",
+ "sticky",
+ "tainted",
+ "unsavory",
+ "yucky")
+
+var/global/list/cont_flavors_dirty = list("bedraggled",
+ "begrimed",
+ "besmirched",
+ "blemished",
+ "contaminated",
+ "cruddy",
+ "dirty",
+ "discolored",
+ "filthy",
+ "gloppy",
+ "gooey",
+ "grimy",
+ "gross",
+ "grubby",
+ "gruesome",
+ "gunky",
+ "messy",
+ "mucky",
+ "mushy",
+ "nasty",
+ "saucy",
+ "slimy",
+ "sloppy",
+ "sludgy",
+ "smeary",
+ "smudgy",
+ "smutty",
+ "soiled",
+ "stained",
+ "sticky",
+ "tainted",
+ "tarnished",
+ "unclean",
+ "unsanitary",
+ "unsavory")
+
+var/global/list/cont_flavors_musky = list("drenched",
+ "drippy",
+ "funky",
+ "gooey",
+ "juicy",
+ "messy",
+ "musky",
+ "nasty",
+ "raunchy",
+ "saucy",
+ "slimy",
+ "sloppy",
+ "slushy",
+ "smeary",
+ "smelly",
+ "smutty",
+ "soggy",
+ "squashy",
+ "squishy",
+ "sticky",
+ "tainted")
+
/hook/startup/proc/init_vore_datum_ref_lists()
var/paths
diff --git a/code/_helpers/logging.dm b/code/_helpers/logging.dm
index ee8949f535..c771de02ef 100644
--- a/code/_helpers/logging.dm
+++ b/code/_helpers/logging.dm
@@ -1,38 +1,51 @@
//print an error message to world.log
+// Fall back to using old format if we are not using rust-g
+#ifdef RUST_G
+ #define WRITE_LOG(log, text) call(RUST_G, "log_write")(log, text)
+#else
+ #define WRITE_LOG(log, text) log << "\[[time_stamp()]][text]"
+#endif
-// On Linux/Unix systems the line endings are LF, on windows it's CRLF, admins that don't use notepad++
-// will get logs that are one big line if the system is Linux and they are using notepad. This solves it by adding CR to every line ending
-// in the logs. ascii character 13 = CR
-
-/var/global/log_end= world.system_type == UNIX ? ascii2text(13) : ""
+/* For logging round startup. */
+/proc/start_log(log)
+ #ifndef RUST_G
+ log = file(log)
+ #endif
+ WRITE_LOG(log, "START: Starting up [log_path].")
+ return log
+/* Close open log handles. This should be called as late as possible, and no logging should hapen after. */
+/proc/shutdown_logging()
+ #ifdef RUST_G
+ call(RUST_G, "log_close_all")()
+ #endif
/proc/error(msg)
- world.log << "## ERROR: [msg][log_end]"
+ world.log << "## ERROR: [msg]"
#define WARNING(MSG) warning("[MSG] in [__FILE__] at line [__LINE__] src: [src] usr: [usr].")
//print a warning message to world.log
/proc/warning(msg)
- world.log << "## WARNING: [msg][log_end]"
+ world.log << "## WARNING: [msg]"
//print a testing-mode debug message to world.log
/proc/testing(msg)
- world.log << "## TESTING: [msg][log_end]"
+ world.log << "## TESTING: [msg]"
/proc/log_admin(text)
admin_log.Add(text)
if (config.log_admin)
- diary << "\[[time_stamp()]]ADMIN: [text][log_end]"
+ WRITE_LOG(diary, "ADMIN: [text]")
/proc/log_adminpm(text, client/source, client/dest)
admin_log.Add(text)
if (config.log_admin)
- diary << "\[[time_stamp()]]ADMINPM: [key_name(source)]->[key_name(dest)]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "ADMINPM: [key_name(source)]->[key_name(dest)]: [html_decode(text)]")
/proc/log_debug(text)
if (config.log_debug)
- debug_log << "\[[time_stamp()]]DEBUG: [text][log_end]"
+ WRITE_LOG(debug_log, "DEBUG: [text]")
for(var/client/C in admins)
if(C.is_preference_enabled(/datum/client_preference/debug/show_debug_logs))
@@ -40,89 +53,97 @@
/proc/log_game(text)
if (config.log_game)
- diary << "\[[time_stamp()]]GAME: [text][log_end]"
+ WRITE_LOG(diary, "GAME: [text]")
/proc/log_vote(text)
if (config.log_vote)
- diary << "\[[time_stamp()]]VOTE: [text][log_end]"
+ WRITE_LOG(diary, "VOTE: [text]")
/proc/log_access_in(client/new_client)
if (config.log_access)
var/message = "[key_name(new_client)] - IP:[new_client.address] - CID:[new_client.computer_id] - BYOND v[new_client.byond_version]"
- diary << "\[[time_stamp()]]ACCESS IN: [message][log_end]"
+ WRITE_LOG(diary, "ACCESS IN: [message]")
/proc/log_access_out(mob/last_mob)
if (config.log_access)
var/message = "[key_name(last_mob)] - IP:[last_mob.lastKnownIP] - CID:Logged Out - BYOND Logged Out"
- diary << "\[[time_stamp()]]ACCESS OUT: [message][log_end]"
+ WRITE_LOG(diary, "ACCESS OUT: [message]")
/proc/log_say(text, mob/speaker)
if (config.log_say)
- diary << "\[[time_stamp()]]SAY: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "SAY: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_ooc(text, client/user)
if (config.log_ooc)
- diary << "\[[time_stamp()]]OOC: [user.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "OOC: [user.simple_info_line()]: [html_decode(text)]")
/proc/log_aooc(text, client/user)
if (config.log_ooc)
- diary << "\[[time_stamp()]]AOOC: [user.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "AOOC: [user.simple_info_line()]: [html_decode(text)]")
/proc/log_looc(text, client/user)
if (config.log_ooc)
- diary << "\[[time_stamp()]]LOOC: [user.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "LOOC: [user.simple_info_line()]: [html_decode(text)]")
/proc/log_whisper(text, mob/speaker)
if (config.log_whisper)
- diary << "\[[time_stamp()]]WHISPER: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "WHISPER: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_emote(text, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]EMOTE: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "EMOTE: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_attack(attacker, defender, message)
if (config.log_attack)
- diary << "\[[time_stamp()]]ATTACK: [attacker] against [defender]: [message][log_end]"
+ WRITE_LOG(diary, "ATTACK: [attacker] against [defender]: [message]")
/proc/log_adminsay(text, mob/speaker)
if (config.log_adminchat)
- diary << "\[[time_stamp()]]ADMINSAY: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "ADMINSAY: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_modsay(text, mob/speaker)
if (config.log_adminchat)
- diary << "\[[time_stamp()]]MODSAY: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "MODSAY: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_eventsay(text, mob/speaker)
if (config.log_adminchat)
- diary << "\[[time_stamp()]]EVENTSAY: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "EVENTSAY: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_ghostsay(text, mob/speaker)
if (config.log_say)
- diary << "\[[time_stamp()]]DEADCHAT: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "DEADCHAT: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_ghostemote(text, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "DEADEMOTE: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_adminwarn(text)
if (config.log_adminwarn)
- diary << "\[[time_stamp()]]ADMINWARN: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "ADMINWARN: [html_decode(text)]")
/proc/log_pda(text, mob/speaker)
if (config.log_pda)
- diary << "\[[time_stamp()]]PDA: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "PDA: [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_to_dd(text)
world.log << text //this comes before the config check because it can't possibly runtime
if(config.log_world_output)
- diary << "\[[time_stamp()]]DD_OUTPUT: [text][log_end]"
+ WRITE_LOG(diary, "DD_OUTPUT: [text]")
/proc/log_error(text)
world.log << text
- error_log << "\[[time_stamp()]]RUNTIME: [text][log_end]"
+ WRITE_LOG(error_log, "RUNTIME: [text]")
/proc/log_misc(text)
- diary << "\[[time_stamp()]]MISC: [text][log_end]"
+ WRITE_LOG(diary, "MISC: [text]")
+
+/proc/log_topic(text)
+ if(Debug2)
+ WRITE_LOG(diary, "TOPIC: [text]")
+
+/proc/log_href(text)
+ // Configs are checked by caller
+ WRITE_LOG(href_logfile, "HREF: [text]")
/proc/log_unit_test(text)
world.log << "## UNIT_TEST: [text]"
diff --git a/code/_helpers/logging_vr.dm b/code/_helpers/logging_vr.dm
index 66a91e0c2e..aa117125dc 100644
--- a/code/_helpers/logging_vr.dm
+++ b/code/_helpers/logging_vr.dm
@@ -1,11 +1,11 @@
/proc/log_nsay(text, inside, mob/speaker)
if (config.log_say)
- diary << "\[[time_stamp()]]NSAY (NIF:[inside]): [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "NSAY (NIF:[inside]): [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_nme(text, inside, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]NME (NIF:[inside]): [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "NME (NIF:[inside]): [speaker.simple_info_line()]: [html_decode(text)]")
/proc/log_subtle(text, mob/speaker)
if (config.log_emote)
- diary << "\[[time_stamp()]]SUBTLE: [speaker.simple_info_line()]: [html_decode(text)][log_end]"
+ WRITE_LOG(diary, "SUBTLE: [speaker.simple_info_line()]: [html_decode(text)]")
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index aa2186ab94..1bc1a04c60 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1478,6 +1478,24 @@ var/mob/dview/dview_mob = new
CRASH(msg)
+//This is used to force compiletime errors if you incorrectly supply variable names. Crafty!
+#define NAMEOF(datum, X) (#X || ##datum.##X)
+
+//Creates a callback with the specific purpose of setting a variable
+#define VARSET_CALLBACK(datum, var, var_value) CALLBACK(GLOBAL_PROC, /proc/___callbackvarset, weakref(##datum), NAMEOF(##datum, ##var), ##var_value)
+
+//Helper for the above
+/proc/___callbackvarset(list_or_datum, var_name, var_value)
+ if(isweakref(list_or_datum))
+ var/weakref/wr = list_or_datum
+ list_or_datum = wr.resolve()
+ if(!list_or_datum)
+ return
+ if(length(list_or_datum))
+ list_or_datum[var_name] = var_value
+ return
+ var/datum/D = list_or_datum
+ D.vars[var_name] = var_value
diff --git a/code/controllers/Processes/scheduler.dm b/code/controllers/Processes/scheduler.dm
index a2a2f5f925..c852264bb7 100644
--- a/code/controllers/Processes/scheduler.dm
+++ b/code/controllers/Processes/scheduler.dm
@@ -58,6 +58,9 @@
/proc/schedule_task_in(var/in_time, var/procedure, var/list/arguments = list())
return schedule_task(world.time + in_time, procedure, arguments)
+/proc/schedule_callback_in(var/in_time, var/datum/callback)
+ return schedule_callback(world.time + in_time, callback)
+
/proc/schedule_task_with_source_in(var/in_time, var/source, var/procedure, var/list/arguments = list())
return schedule_task_with_source(world.time + in_time, source, procedure, arguments)
@@ -66,6 +69,11 @@
scheduler.schedule(st)
return st
+/proc/schedule_callback(var/trigger_time, var/datum/callback)
+ var/datum/scheduled_task/callback/st = new/datum/scheduled_task/callback(trigger_time, callback, /proc/destroy_scheduled_task, list())
+ scheduler.schedule(st)
+ return st
+
/proc/schedule_task_with_source(var/trigger_time, var/source, var/procedure, var/list/arguments)
var/datum/scheduled_task/st = new/datum/scheduled_task/source(trigger_time, source, procedure, arguments, /proc/destroy_scheduled_task, list())
scheduler.schedule(st)
@@ -125,6 +133,15 @@
/datum/scheduled_task/proc/trigger_task_in(var/trigger_in)
src.trigger_time = world.time + trigger_in
+/datum/scheduled_task/callback
+ var/datum/callback/callback
+
+/datum/scheduled_task/callback/New(var/trigger_time, var/datum/callback, var/proc/task_after_process, var/list/task_after_process_args)
+ ..(trigger_time = trigger_time, task_after_process = task_after_process, task_after_process_args = task_after_process_args)
+
+/datum/scheduled_task/callback/process()
+ callback.Invoke()
+
/datum/scheduled_task/source
var/datum/source
diff --git a/code/datums/supplypacks/engineering_vr.dm b/code/datums/supplypacks/engineering_vr.dm
index 72b0073371..28faf96434 100644
--- a/code/datums/supplypacks/engineering_vr.dm
+++ b/code/datums/supplypacks/engineering_vr.dm
@@ -7,8 +7,7 @@
/datum/supply_packs/eng/radsuit
contains = list(
- /obj/item/clothing/suit/radiation = 2,
- /obj/item/clothing/suit/radiation/taur = 1,
+ /obj/item/clothing/suit/radiation = 3,
/obj/item/clothing/head/radiation = 3
)
diff --git a/code/datums/supplypacks/medical_vr.dm b/code/datums/supplypacks/medical_vr.dm
index b5e3a6bc57..989e89297b 100644
--- a/code/datums/supplypacks/medical_vr.dm
+++ b/code/datums/supplypacks/medical_vr.dm
@@ -1,13 +1,10 @@
/datum/supply_packs/med/medicalbiosuits
contains = list(
/obj/item/clothing/head/bio_hood/scientist = 3,
- /obj/item/clothing/suit/bio_suit/scientist = 2,
- /obj/item/clothing/suit/bio_suit/scientist/taur = 1,
- /obj/item/clothing/suit/bio_suit/virology = 2,
- /obj/item/clothing/suit/bio_suit/virology/taur = 1,
+ /obj/item/clothing/suit/bio_suit/scientist = 3,
+ /obj/item/clothing/suit/bio_suit/virology = 3,
/obj/item/clothing/head/bio_hood/virology = 3,
/obj/item/clothing/suit/bio_suit/cmo,
- /obj/item/clothing/suit/bio_suit/cmo/taur,
/obj/item/clothing/head/bio_hood/cmo,
/obj/item/clothing/shoes/white = 7,
/obj/item/clothing/mask/gas = 7,
@@ -20,8 +17,7 @@
/datum/supply_packs/med/virologybiosuits
name = "Virology biohazard gear"
contains = list(
- /obj/item/clothing/suit/bio_suit/virology = 2,
- /obj/item/clothing/suit/bio_suit/virology/taur = 1,
+ /obj/item/clothing/suit/bio_suit/virology = 3,
/obj/item/clothing/head/bio_hood/virology = 3,
/obj/item/clothing/mask/gas = 3,
/obj/item/weapon/tank/oxygen = 3,
diff --git a/code/datums/supplypacks/robotics_vr.dm b/code/datums/supplypacks/robotics_vr.dm
new file mode 100644
index 0000000000..24dc073874
--- /dev/null
+++ b/code/datums/supplypacks/robotics_vr.dm
@@ -0,0 +1,38 @@
+/datum/supply_packs/robotics/some_robolimbs
+ name = "Basic Robolimb Blueprints"
+ contains = list(
+ /obj/item/weapon/disk/limb/morpheus,
+ /obj/item/weapon/disk/limb/xion,
+ /obj/item/weapon/disk/limb/talon
+ )
+ cost = 15
+ containertype = /obj/structure/closet/crate/secure
+ containername = "Basic Robolimb Blueprint Crate"
+ access = access_robotics
+
+/datum/supply_packs/robotics/all_robolimbs
+ name = "Advanced Robolimb Blueprints"
+ contains = list(
+ /obj/item/weapon/disk/limb/bishop,
+ /obj/item/weapon/disk/limb/hephaestus,
+ /obj/item/weapon/disk/limb/morpheus,
+ /obj/item/weapon/disk/limb/veymed,
+ /obj/item/weapon/disk/limb/wardtakahashi,
+ /obj/item/weapon/disk/limb/xion,
+ /obj/item/weapon/disk/limb/zenghu,
+ /obj/item/weapon/disk/limb/talon,
+ /obj/item/weapon/disk/limb/dsi_tajaran,
+ /obj/item/weapon/disk/limb/dsi_lizard,
+ /obj/item/weapon/disk/limb/dsi_sergal,
+ /obj/item/weapon/disk/limb/dsi_nevrean,
+ /obj/item/weapon/disk/limb/dsi_vulpkanin,
+ /obj/item/weapon/disk/limb/dsi_akula,
+ /obj/item/weapon/disk/limb/dsi_spider,
+ /obj/item/weapon/disk/limb/dsi_teshari,
+ /obj/item/weapon/disk/limb/eggnerdltd,
+ /obj/item/weapon/disk/limb/eggnerdltdred
+ )
+ cost = 40
+ containertype = /obj/structure/closet/crate/secure
+ containername = "Advanced Robolimb Blueprint Crate"
+ access = access_robotics
\ No newline at end of file
diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm
index 595d2eeba2..4dbb5b847e 100644
--- a/code/datums/supplypacks/science_vr.dm
+++ b/code/datums/supplypacks/science_vr.dm
@@ -1,41 +1,3 @@
-/datum/supply_packs/sci/some_robolimbs
- name = "Basic Robolimb Blueprints"
- contains = list(
- /obj/item/weapon/disk/limb/morpheus,
- /obj/item/weapon/disk/limb/xion,
- /obj/item/weapon/disk/limb/talon
- )
- cost = 15
- containertype = /obj/structure/closet/crate/secure
- containername = "Basic Robolimb Blueprint Crate"
- access = access_robotics
-
-/datum/supply_packs/sci/all_robolimbs
- name = "Advanced Robolimb Blueprints"
- contains = list(
- /obj/item/weapon/disk/limb/bishop,
- /obj/item/weapon/disk/limb/hephaestus,
- /obj/item/weapon/disk/limb/morpheus,
- /obj/item/weapon/disk/limb/veymed,
- /obj/item/weapon/disk/limb/wardtakahashi,
- /obj/item/weapon/disk/limb/xion,
- /obj/item/weapon/disk/limb/zenghu,
- /obj/item/weapon/disk/limb/talon,
- /obj/item/weapon/disk/limb/dsi_tajaran,
- /obj/item/weapon/disk/limb/dsi_lizard,
- /obj/item/weapon/disk/limb/dsi_sergal,
- /obj/item/weapon/disk/limb/dsi_nevrean,
- /obj/item/weapon/disk/limb/dsi_vulpkanin,
- /obj/item/weapon/disk/limb/dsi_akula,
- /obj/item/weapon/disk/limb/dsi_spider,
- /obj/item/weapon/disk/limb/dsi_teshari,
- /obj/item/weapon/disk/limb/eggnerdltd,
- /obj/item/weapon/disk/limb/eggnerdltdred
- )
- cost = 40
- containertype = /obj/structure/closet/crate/secure
- containername = "Advanced Robolimb Blueprint Crate"
- access = access_robotics
/*
/datum/supply_packs/sci/dune_buggy
name = "Exploration Dune Buggy"
diff --git a/code/datums/supplypacks/security_vr.dm b/code/datums/supplypacks/security_vr.dm
index 20629de0b4..4c77b42e06 100644
--- a/code/datums/supplypacks/security_vr.dm
+++ b/code/datums/supplypacks/security_vr.dm
@@ -20,8 +20,7 @@
contains = list(
/obj/item/clothing/head/bio_hood/security = 3,
/obj/item/clothing/under/rank/security = 3,
- /obj/item/clothing/suit/bio_suit/security = 2,
- /obj/item/clothing/suit/bio_suit/security/taur = 1,
+ /obj/item/clothing/suit/bio_suit/security = 3,
/obj/item/clothing/shoes/white = 3,
/obj/item/clothing/mask/gas = 3,
/obj/item/weapon/tank/oxygen = 3,
diff --git a/code/datums/supplypacks/voidsuits_vr.dm b/code/datums/supplypacks/voidsuits_vr.dm
index d4b3ec9bf5..cad6438ee3 100644
--- a/code/datums/supplypacks/voidsuits_vr.dm
+++ b/code/datums/supplypacks/voidsuits_vr.dm
@@ -1,7 +1,6 @@
/datum/supply_packs/voidsuits/atmos
contains = list(
- /obj/item/clothing/suit/space/void/atmos = 2,
- /obj/item/clothing/suit/space/void/atmos/taur = 1,
+ /obj/item/clothing/suit/space/void/atmos = 3,
/obj/item/clothing/head/helmet/space/void/atmos = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -10,8 +9,7 @@
/datum/supply_packs/voidsuits/engineering
contains = list(
- /obj/item/clothing/suit/space/void/engineering = 2,
- /obj/item/clothing/suit/space/void/engineering/taur = 1,
+ /obj/item/clothing/suit/space/void/engineering = 3,
/obj/item/clothing/head/helmet/space/void/engineering = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -20,8 +18,7 @@
/datum/supply_packs/voidsuits/medical
contains = list(
- /obj/item/clothing/suit/space/void/medical = 2,
- /obj/item/clothing/suit/space/void/medical/taur = 1,
+ /obj/item/clothing/suit/space/void/medical = 3,
/obj/item/clothing/head/helmet/space/void/medical = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -30,19 +27,16 @@
/datum/supply_packs/voidsuits/medical/alt
contains = list(
- /obj/item/clothing/suit/space/void/medical/alt = 2,
- /obj/item/clothing/suit/space/void/medical/alt/taur = 1,
+ /obj/item/clothing/suit/space/void/medical/alt = 3,
/obj/item/clothing/head/helmet/space/void/medical/alt = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
/obj/item/weapon/tank/oxygen = 3
)
-
/datum/supply_packs/voidsuits/security
contains = list(
- /obj/item/clothing/suit/space/void/security = 2,
- /obj/item/clothing/suit/space/void/security/taur =1,
+ /obj/item/clothing/suit/space/void/security = 3,
/obj/item/clothing/head/helmet/space/void/security = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -51,8 +45,7 @@
/datum/supply_packs/voidsuits/security/crowd
contains = list(
- /obj/item/clothing/suit/space/void/security/riot = 2,
- /obj/item/clothing/suit/space/void/security/riot/taur = 1,
+ /obj/item/clothing/suit/space/void/security/riot = 3,
/obj/item/clothing/head/helmet/space/void/security/riot = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -61,8 +54,7 @@
/datum/supply_packs/voidsuits/security/alt
contains = list(
- /obj/item/clothing/suit/space/void/security/alt = 2,
- /obj/item/clothing/suit/space/void/security/alt/taur =1,
+ /obj/item/clothing/suit/space/void/security/alt = 3,
/obj/item/clothing/head/helmet/space/void/security/alt = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/clothing/shoes/magboots = 3,
@@ -72,8 +64,7 @@
/datum/supply_packs/voidsuits/supply
name = "Mining voidsuits"
contains = list(
- /obj/item/clothing/suit/space/void/mining = 2,
- /obj/item/clothing/suit/space/void/mining/taur = 1,
+ /obj/item/clothing/suit/space/void/mining = 3,
/obj/item/clothing/head/helmet/space/void/mining = 3,
/obj/item/clothing/mask/breath = 3,
/obj/item/weapon/tank/oxygen = 3
diff --git a/code/game/machinery/cryo.dm b/code/game/machinery/cryo.dm
index f7ab7e7a7e..6c68620644 100644
--- a/code/game/machinery/cryo.dm
+++ b/code/game/machinery/cryo.dm
@@ -197,13 +197,16 @@
var/obj/item/weapon/grab/grab = G
if(!ismob(grab.affecting))
return
+ if(occupant)
+ to_chat(user,"\The [src] is already occupied by [occupant].")
for(var/mob/living/simple_animal/slime/M in range(1,grab.affecting))
if(M.victim == grab.affecting)
usr << "[grab.affecting.name] will not fit into the cryo because they have a slime latched onto their head."
return
var/mob/M = grab.affecting
- if(put_mob(M))
- qdel(grab)
+ qdel(grab)
+ put_mob(M)
+
return
/obj/machinery/atmospherics/unary/cryo_cell/MouseDrop_T(var/mob/target, var/mob/user) //Allows borgs to put people into cryo without external assistance
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index ea4f8c1e69..a519394232 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -94,8 +94,8 @@
dat += "View storage log.
"
if(allow_items)
dat += "View objects.
"
- dat += "Recover object.
"
- dat += "Recover all objects.
"
+ //dat += "Recover object.
" //VOREStation Removal - Just log them.
+ //dat += "Recover all objects.
" //VOREStation Removal
user << browse(dat, "window=cryopod_console")
onclose(user, "cryopod_console")
@@ -122,8 +122,10 @@
if(!allow_items) return
var/dat = "Recently stored objects
"
- for(var/obj/item/I in frozen_items)
- dat += "[I.name]
"
+ //VOREStation Edit Start
+ for(var/I in frozen_items)
+ dat += "[I]
"
+ //VOREStation Edit End
dat += "
"
user << browse(dat, "window=cryoitems")
@@ -240,7 +242,7 @@
on_store_name = "Robotic Storage Oversight"
on_enter_occupant_message = "The storage unit broadcasts a sleep signal to you. Your systems start to shut down, and you enter low-power mode."
allow_occupant_types = list(/mob/living/silicon/robot)
- disallow_occupant_types = list(/mob/living/silicon/robot/drone)
+ //disallow_occupant_types = list(/mob/living/silicon/robot/drone) //VOREStation Removal - Why? How else do they leave?
applies_stasis = 0
/obj/machinery/cryopod/robot/door
@@ -429,12 +431,14 @@
if(!preserve)
qdel(W)
else
+ log_special_item(W,to_despawn) //VOREStation Add
+ /* VOREStation Removal - We do our own thing.
if(control_computer && control_computer.allow_items)
control_computer.frozen_items += W
W.loc = control_computer //VOREStation Edit
else
W.forceMove(src.loc)
-
+ VOREStation Removal End */
for(var/obj/structure/B in items)
if(istype(B,/obj/structure/bed))
qdel(B)
diff --git a/code/game/machinery/cryopod_vr.dm b/code/game/machinery/cryopod_vr.dm
index 51fa134ac1..b6aa3e227f 100644
--- a/code/game/machinery/cryopod_vr.dm
+++ b/code/game/machinery/cryopod_vr.dm
@@ -31,4 +31,30 @@
/obj/machinery/computer/cryopod/dorms
name = "residential oversight console"
desc = "An interface between visitors and the residential oversight systems tasked with keeping track of all visitors in the residential district."
-*/
\ No newline at end of file
+*/
+
+/obj/machinery/cryopod/proc/log_special_item(var/atom/movable/item,var/mob/to_despawn)
+ ASSERT(item && to_despawn)
+
+ var/loaded_from_key
+ var/char_name = to_despawn.name
+ var/item_name = item.name
+
+ // Best effort key aquisition
+ if(ishuman(to_despawn))
+ var/mob/living/carbon/human/H = to_despawn
+ if(H.original_player)
+ loaded_from_key = H.original_player
+
+ if(!loaded_from_key && to_despawn.mind && to_despawn.mind.loaded_from_ckey)
+ loaded_from_key = to_despawn.mind.loaded_from_ckey
+
+ else
+ loaded_from_key = "INVALID"
+
+ // Log to harrass them later
+ log_game("CRYO [loaded_from_key]/([to_despawn.name]) cryo'd with [item_name] ([item.type])")
+ qdel(item)
+
+ if(control_computer && control_computer.allow_items)
+ control_computer.frozen_items += "[item_name] ([char_name])"
diff --git a/code/game/machinery/suit_storage_unit_vr.dm b/code/game/machinery/suit_storage_unit_vr.dm
index abab98b8f1..964d80b258 100644
--- a/code/game/machinery/suit_storage_unit_vr.dm
+++ b/code/game/machinery/suit_storage_unit_vr.dm
@@ -1,2 +1,19 @@
/obj/machinery/suit_cycler
- species = list("Human","Skrell","Unathi","Tajara", "Teshari", "Nevrean", "Akula", "Sergal", "Flatland Zorren", "Highlander Zorren", "Vulpkanin", "Promethean", "Xenomorph Hybrid", "Xenochimera","Vasilissan", "Rapala") //Added xenochimera while I was at it. Someone put in an issue about it.
+ species = list(
+ SPECIES_HUMAN,
+ SPECIES_SKRELL,
+ SPECIES_UNATHI,
+ SPECIES_TAJ,
+ SPECIES_TESHARI,
+ SPECIES_AKULA,
+ SPECIES_ALRAUNE,
+ SPECIES_NEVREAN,
+ SPECIES_RAPALA,
+ SPECIES_SERGAL,
+ SPECIES_VASILISSAN,
+ SPECIES_VULPKANIN,
+ SPECIES_XENOCHIMERA,
+ SPECIES_XENOHYBRID,
+ SPECIES_ZORREN_FLAT,
+ SPECIES_ZORREN_HIGH
+ )
diff --git a/code/game/objects/items/weapons/traps_vr.dm b/code/game/objects/items/weapons/traps_vr.dm
new file mode 100644
index 0000000000..f1338f691d
--- /dev/null
+++ b/code/game/objects/items/weapons/traps_vr.dm
@@ -0,0 +1,18 @@
+/obj/item/weapon/beartrap
+ slot_flags = SLOT_MASK
+ item_icons = list(
+ slot_wear_mask_str = 'icons/mob/mask_vr.dmi'
+ )
+
+/obj/item/weapon/beartrap/equipped()
+ if(ishuman(src.loc))
+ var/mob/living/carbon/human/H = src.loc
+ if(H.wear_mask == src)
+ H.verbs |= /mob/living/proc/shred_limb_temp
+ else
+ H.verbs -= /mob/living/proc/shred_limb_temp
+ ..()
+
+/obj/item/weapon/beartrap/dropped(var/mob/user)
+ user.verbs -= /mob/living/proc/shred_limb_temp
+ ..()
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm b/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm
index fdc6163459..e69de29bb2 100644
--- a/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/l3closet_vr.dm
@@ -1,27 +0,0 @@
-/obj/structure/closet/l3closet/virology/New()
- ..()
- new /obj/item/clothing/suit/bio_suit/virology/taur(src)
- new /obj/item/clothing/head/bio_hood/virology(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/weapon/tank/oxygen(src)
-
-
-/obj/structure/closet/l3closet/security/New()
- ..()
- new /obj/item/clothing/suit/bio_suit/security/taur(src)
- new /obj/item/clothing/head/bio_hood/security(src)
-
-
-/obj/structure/closet/l3closet/janitor/New()
- ..()
- new /obj/item/clothing/suit/bio_suit/janitor/taur(src)
- new /obj/item/clothing/head/bio_hood/janitor(src)
- new /obj/item/clothing/mask/gas(src)
- new /obj/item/weapon/tank/emergency/oxygen/engi(src)
-
-
-/obj/structure/closet/l3closet/scientist/New()
- ..()
- new /obj/item/clothing/suit/bio_suit/scientist/taur(src)
- new /obj/item/clothing/head/bio_hood/scientist(src)
-
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm
index d9f0dcc092..c1e40dab11 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets_vr.dm
@@ -1,13 +1,11 @@
/obj/structure/closet/radiation/New()
..()
- new /obj/item/clothing/suit/radiation/taur(src)
new /obj/item/clothing/head/radiation(src)
new /obj/item/device/geiger(src)
/obj/structure/closet/bombcloset/New()
..()
- new /obj/item/clothing/suit/bomb_suit/taur(src)
new /obj/item/clothing/under/color/black(src)
new /obj/item/clothing/shoes/black(src )
new /obj/item/clothing/head/bomb_hood(src)
@@ -15,7 +13,6 @@
/obj/structure/closet/bombclosetsecurity/New()
..()
- new /obj/item/clothing/suit/bomb_suit/taur/security(src)
new /obj/item/clothing/under/rank/security(src)
new /obj/item/clothing/shoes/brown(src)
new /obj/item/clothing/head/bomb_hood/security(src)
diff --git a/code/game/objects/structures/crates_lockers/largecrate_vr.dm b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
index 014b49b522..134aad487f 100644
--- a/code/game/objects/structures/crates_lockers/largecrate_vr.dm
+++ b/code/game/objects/structures/crates_lockers/largecrate_vr.dm
@@ -48,13 +48,13 @@
/mob/living/simple_animal/hostile/frog,
/mob/living/simple_animal/horse,
/mob/living/simple_animal/hostile/panther,
- /mob/living/simple_animal/hostile/snake,
+ /mob/living/simple_animal/hostile/giant_snake,
/mob/living/simple_animal/hostile/wolf,
/mob/living/simple_animal/hostile/bear;0.5,
/mob/living/simple_animal/hostile/bear/brown;0.5,
/mob/living/simple_animal/hostile/carp,
/mob/living/simple_animal/hostile/mimic,
- /mob/living/simple_animal/hostile/rous,
+ /mob/living/simple_animal/hostile/rat,
/mob/living/simple_animal/otie;0.5)
..()
@@ -73,7 +73,7 @@
/mob/living/simple_animal/hostile/alien/sentinel,
/mob/living/simple_animal/hostile/alien/queen,
/mob/living/simple_animal/otie/feral,
- /mob/living/simple_animal/hostile/badboi)
+ /mob/living/simple_animal/hostile/corrupthound)
..()
/obj/structure/largecrate/animal/guardbeast
diff --git a/code/game/objects/structures/signs.dm b/code/game/objects/structures/signs.dm
index b180b88603..d94da02813 100644
--- a/code/game/objects/structures/signs.dm
+++ b/code/game/objects/structures/signs.dm
@@ -387,6 +387,18 @@
icon = 'icons/obj/christmas.dmi'
icon_state = "doorwreath"
+/obj/structure/sign/hostilefauna
+ icon = 'icons/obj/decals_vr.dmi'
+ name = "\improper Caution: Hostile fauna"
+ desc = "This sign warns of hostile life forms in the area."
+ icon_state = "h_fauna"
+
+/obj/structure/sign/graffiti/pisoff
+ icon = 'icons/obj/decals_vr.dmi'
+ name = "\improper PIS OFF"
+ desc = "This sign bears some rather rude looking graffiti instructing you to PIS OFF."
+ icon_state = "pisoff"
+
//Eris signs
/obj/structure/sign/ironhammer
diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm
index 0506d647be..9c88e740a7 100644
--- a/code/modules/awaymissions/loot_vr.dm
+++ b/code/modules/awaymissions/loot_vr.dm
@@ -365,7 +365,7 @@
icon_state = "da"
/obj/structure/symbol/em
- desc = "It looks like the letter 'Y' with an underline."
+ desc = "It looks kind of like a cup. Specifically, a martini glass."
icon_state = "em"
/obj/structure/symbol/es
@@ -381,7 +381,7 @@
icon_state = "gu"
/obj/structure/symbol/lo
- desc = "It looks kind of like a cup. Specifically, a martini glass."
+ desc = "It looks like the letter 'Y' with an underline."
icon_state = "lo"
/obj/structure/symbol/pr
diff --git a/code/modules/client/client procs.dm b/code/modules/client/client procs.dm
index deefc6eb7d..c734da46fe 100644
--- a/code/modules/client/client procs.dm
+++ b/code/modules/client/client procs.dm
@@ -64,7 +64,7 @@
//Logs all hrefs
if(config && config.log_hrefs && href_logfile)
- href_logfile << "[time2text(world.timeofday,"hh:mm")] [src] (usr:[usr]) || [hsrc ? "[hsrc] " : ""][href]
"
+ href_logfile << "[src] (usr:[usr]) || [hsrc ? "[hsrc] " : ""][href]"
switch(href_list["_src_"])
if("holder") hsrc = holder
diff --git a/code/modules/client/preference_setup/global/01_ui.dm b/code/modules/client/preference_setup/global/01_ui.dm
index 29502ec985..5b1314d05f 100644
--- a/code/modules/client/preference_setup/global/01_ui.dm
+++ b/code/modules/client/preference_setup/global/01_ui.dm
@@ -8,6 +8,7 @@
S["UI_style_alpha"] >> pref.UI_style_alpha
S["ooccolor"] >> pref.ooccolor
S["tooltipstyle"] >> pref.tooltipstyle
+ S["client_fps"] >> pref.client_fps
/datum/category_item/player_setup_item/player_global/ui/save_preferences(var/savefile/S)
S["UI_style"] << pref.UI_style
@@ -15,6 +16,7 @@
S["UI_style_alpha"] << pref.UI_style_alpha
S["ooccolor"] << pref.ooccolor
S["tooltipstyle"] << pref.tooltipstyle
+ S["client_fps"] << pref.client_fps
/datum/category_item/player_setup_item/player_global/ui/sanitize_preferences()
pref.UI_style = sanitize_inlist(pref.UI_style, all_ui_styles, initial(pref.UI_style))
@@ -22,6 +24,7 @@
pref.UI_style_alpha = sanitize_integer(pref.UI_style_alpha, 0, 255, initial(pref.UI_style_alpha))
pref.ooccolor = sanitize_hexcolor(pref.ooccolor, initial(pref.ooccolor))
pref.tooltipstyle = sanitize_inlist(pref.tooltipstyle, all_tooltip_styles, initial(pref.tooltipstyle))
+ pref.client_fps = sanitize_integer(pref.client_fps, 0, MAX_CLIENT_FPS, initial(pref.client_fps))
/datum/category_item/player_setup_item/player_global/ui/content(var/mob/user)
. = "UI Style: [pref.UI_style]
"
@@ -29,6 +32,7 @@
. += "-Color: [pref.UI_style_color] reset
"
. += "-Alpha(transparency): [pref.UI_style_alpha] reset
"
. += "Tooltip Style: [pref.tooltipstyle]
"
+ . += "Client FPS: [pref.client_fps]
"
if(can_select_ooc_color(user))
. += "OOC Color: "
if(pref.ooccolor == initial(pref.ooccolor))
@@ -62,11 +66,20 @@
return TOPIC_REFRESH
else if(href_list["select_tooltip_style"])
- var/tooltip_style_new = input(user, "Choose tooltip style.", "Character Preference", pref.tooltipstyle) as null|anything in all_tooltip_styles
+ var/tooltip_style_new = input(user, "Choose tooltip style.", "Global Preference", pref.tooltipstyle) as null|anything in all_tooltip_styles
if(!tooltip_style_new || !CanUseTopic(user)) return TOPIC_NOACTION
pref.tooltipstyle = tooltip_style_new
return TOPIC_REFRESH
+ else if(href_list["select_client_fps"])
+ var/fps_new = input(user, "Input Client FPS (1-200, 0 uses server FPS)", "Global Preference", pref.client_fps) as null|num
+ if(isnull(fps_new) || !CanUseTopic(user)) return TOPIC_NOACTION
+ if(fps_new < 0 || fps_new > MAX_CLIENT_FPS) return TOPIC_NOACTION
+ pref.client_fps = fps_new
+ if(pref.client)
+ pref.client.fps = fps_new
+ return TOPIC_REFRESH
+
else if(href_list["reset"])
switch(href_list["reset"])
if("ui")
diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm
index 22d04295ad..d0aefa286f 100644
--- a/code/modules/client/preferences.dm
+++ b/code/modules/client/preferences.dm
@@ -22,6 +22,7 @@ datum/preferences
var/UI_style_color = "#ffffff"
var/UI_style_alpha = 255
var/tooltipstyle = "Midnight" //Style for popup tooltips
+ var/client_fps = 0
//character preferences
var/real_name //our character's name
diff --git a/code/modules/clothing/clothing_vr.dm b/code/modules/clothing/clothing_vr.dm
index fd0beeddf3..e0472d23b9 100644
--- a/code/modules/clothing/clothing_vr.dm
+++ b/code/modules/clothing/clothing_vr.dm
@@ -99,11 +99,33 @@
)
//"Spider" = 'icons/mob/species/spider/mask_vr.dmi' Add this later when they have custom mask sprites and everything.
+//Switch to taur sprites if a taur equips
+/obj/item/clothing/suit
+ var/taurized = FALSE //Easier than trying to 'compare icons' to see if it's a taur suit
+
+/obj/item/clothing/suit/equipped(var/mob/user, var/slot)
+ var/normalize = TRUE
+
+ //Pyramid of doom-y. Improve somehow?
+ if(!taurized && slot == slot_wear_suit && ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(isTaurTail(H.tail_style))
+ var/datum/sprite_accessory/tail/taur/taurtail = H.tail_style
+ if(taurtail.suit_sprites && (get_worn_icon_state(slot_wear_suit_str) in icon_states(taurtail.suit_sprites)))
+ icon_override = taurtail.suit_sprites
+ normalize = FALSE
+ taurized = TRUE
+
+ if(normalize && taurized)
+ icon_override = initial(icon_override)
+ taurized = FALSE
+
+ return ..()
+
// Taur suits need to be shifted so its centered on their taur half.
-// TODO - Instead of just assuming this junk, shift some of the data onto the taur tail datum.
/obj/item/clothing/suit/make_worn_icon(var/body_type,var/slot_name,var/inhands,var/default_icon,var/default_layer = 0)
var/image/standing = ..()
- if(icon_override && icon_override == 'icons/mob/taursuits_vr.dmi')
+ if(taurized) //Special snowflake var on suits
standing.pixel_x = -16
standing.layer = BODY_LAYER + 15 // 15 is above tail layer, so will not be covered by taurbody.
return standing
diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
index 494c54d05a..d71d7cd6fa 100644
--- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
@@ -32,300 +32,6 @@
SPECIES_VOX = 'icons/mob/species/vox/suit.dmi'
)
-/obj/item/clothing/suit/space/rig
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(icon_state == "security_rig_sealed")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-horse_sealed" //They have to toggle the chest piece off then on again for this to show up.
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "security_rig_sealed"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "engineering_rig_sealed")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "engineering_rig_sealed"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "science_rig_sealed")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "science_rig_sealed"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "medical_rig_sealed")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "medical_rig_sealed"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "security_rig")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "breacher_rig_cheap-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "security_rig"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "engineering_rig")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "industrial_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "engineering_rig"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "science_rig")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-wolf_sealed"
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "science_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "science_rig"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "medical_rig")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "medical_rig"
- pixel_x = 0
- update_icon()
- return 1
- else
- return 1
-
-
-
-/obj/item/clothing/suit/space/rig/ce
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(icon_state == "ce_rig")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "ce_rig"
- pixel_x = 0
- update_icon()
- return 1
- else if(icon_state == "ce_rig_sealed")
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-horse_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-wolf_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "ce_rig-naga_sealed"
- pixel_x = -16
- update_icon()
- return 1
- else
- icon = 'icons/obj/clothing/suits.dmi'
- icon_override = null
- icon_state = "ce_rig_sealed"
- pixel_x = 0
- update_icon()
- return 1
- else
- return 1
-
/obj/item/clothing/head/helmet/space/rig
phoronproof = 1
/obj/item/clothing/gloves/gauntlets/rig
diff --git a/code/modules/clothing/spacesuits/void/void_vr.dm b/code/modules/clothing/spacesuits/void/void_vr.dm
index 51f29be19a..616bef8c33 100644
--- a/code/modules/clothing/spacesuits/void/void_vr.dm
+++ b/code/modules/clothing/spacesuits/void/void_vr.dm
@@ -73,298 +73,3 @@
// This variable is normally used to set the icon_override when the suit is refitted,
// however the species spritesheet now means we no longer need that anyway!
sprite_sheets_refit = list()
-
-
-
-/obj/item/clothing/suit/space/void/merc/taur
- name = "taur specific blood-red voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "syndie-horse"
- item_state = "syndie-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "syndie-wolf"
- item_state = "syndie-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "syndie-naga"
- item_state = "syndie-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/medical/taur
- name = "taur specific medical voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical-horse"
- item_state = "medical-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical-wolf"
- item_state = "medical-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medical-naga"
- item_state = "medical-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/medical/alt/taur
- name = "taur specific streamlined medical voidsuit"
- desc = "A more recent model of Vey-Med voidsuit, featuring the latest in radiation shielding technology. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medicalalt-horse"
- item_state = "medicalalt-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medicalalt-wolf"
- item_state = "medicalalt-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "medicalalt-naga"
- item_state = "medicalalt-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/engineering/taur
- name = "taur specific engineering voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "engineering-horse"
- item_state = "engineering-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "engineering-wolf"
- item_state = "engineering-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "engineering-naga"
- item_state = "engineering-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-
-/obj/item/clothing/suit/space/void/security/taur
- name = "taur specific security voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "security-horse"
- item_state = "security-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "security-wolf"
- item_state = "security-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "security-naga"
- item_state = "security-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/security/alt/taur
- name = "taur specific riot security voidsuit"
- desc = "A heavily armored voidsuit. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- armor = list(melee = 70, bullet = 20, laser = 30, energy = 5, bomb = 35, bio = 100, rad = 10)
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityalt-horse"
- item_state = "securityalt-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityalt-wolf"
- item_state = "securityalt-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityalt-naga"
- item_state = "securityalt-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/security/riot/taur
- name = "taur specific crowd control voidsuit"
- desc = "A high-tech space suit. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityriot-horse"
- item_state = "securityriot-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityriot-wolf"
- item_state = "securityriot-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "securityriot-naga"
- item_state = "securityriot-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/atmos/taur
- name = "taur specific atmospherics voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "atmos-horse"
- item_state = "atmos-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "atmos-wolf"
- item_state = "atmos-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "atmos-naga"
- item_state = "atmos-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/obj/item/clothing/suit/space/void/mining/taur
- name = "taur specific mining voidsuit"
- desc = "A high-tech space suit. It says has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "mining-horse"
- item_state = "mining-horse"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "mining-wolf"
- item_state = "mining-wolf"
- pixel_x = -16
- update_icon()
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "mining-naga"
- item_state = "mining-naga"
- pixel_x = -16
- update_icon()
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
diff --git a/code/modules/clothing/suits/armor_vr.dm b/code/modules/clothing/suits/armor_vr.dm
index a70a33f872..349b0e01e7 100644
--- a/code/modules/clothing/suits/armor_vr.dm
+++ b/code/modules/clothing/suits/armor_vr.dm
@@ -16,20 +16,15 @@
name = "wolf-taur armor vest"
desc = "An armored vest that protects against some damage. It appears to be created for a wolf-taur."
species_restricted = null //Species restricted since all it cares about is a taur half
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
+ icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "heavy_wolf_armor"
+ item_state = "heavy_wolf_armor"
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- if(icon_state == "serdy_armor") //This is to prevent Serdy's custom armor from turning into heavy_wolf_armor
- return ..()
- icon_override = 'icons/mob/taursuits_vr.dmi' //Just in case
- icon_state = "heavy_wolf_armor" //Just in case
- pixel_x = -16
return ..()
else
- H << "You need to have a wolf-taur half to wear this."
+ to_chat(H,"You need to have a wolf-taur half to wear this.")
return 0
// HoS armor improved by Vorestation to be slightly better than normal security stuff.
diff --git a/code/modules/clothing/suits/bio_vr.dm b/code/modules/clothing/suits/bio_vr.dm
index 799ea429da..e69de29bb2 100644
--- a/code/modules/clothing/suits/bio_vr.dm
+++ b/code/modules/clothing/suits/bio_vr.dm
@@ -1,101 +0,0 @@
-//Biosuits for use with taurs (Currently only nagas)
-
-//Virology biosuit, green stripe
-/obj/item/clothing/suit/bio_suit/virology/taur
- name = "taur specific bio suit"
- desc = "A suit that protects against biological contamination. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bioviro-naga"
- item_state = "bioviro-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-//Security biosuit, grey with red stripe across the chest
-/obj/item/clothing/suit/bio_suit/security/taur
- name = "taur specific bio suit"
- desc = "A suit that protects against biological contamination. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "biosec-naga"
- item_state = "biosec-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-//Janitor's biosuit, grey with purple arms
-/obj/item/clothing/suit/bio_suit/janitor/taur
- name = "taur specific bio suit"
- desc = "A suit that protects against biological contamination. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "biojan-naga"
- item_state = "biojan-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-//Scientist's biosuit, white with a pink-ish hue
-/obj/item/clothing/suit/bio_suit/scientist/taur
- name = "taur specific bio suit"
- desc = "A suit that protects against biological contamination. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "biosci-naga"
- item_state = "biosci-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-//CMO's biosuit, blue stripe
-/obj/item/clothing/suit/bio_suit/cmo/taur
- name = "taur specific bio suit"
- desc = "A suit that protects against biological contamination. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS
- flags_inv = HIDEGLOVES|HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- species_restricted = null //Species restricted since all it cares about is a taur half
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "biocmo-naga"
- item_state = "biocmo-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
\ No newline at end of file
diff --git a/code/modules/clothing/suits/utility_vr.dm b/code/modules/clothing/suits/utility_vr.dm
index be67b06bf2..c1982a58ce 100644
--- a/code/modules/clothing/suits/utility_vr.dm
+++ b/code/modules/clothing/suits/utility_vr.dm
@@ -1,130 +1,3 @@
-/*
- * Contains:
- * Bomb protection
- * Radiation protection
- */
-
-/*
- * Bomb protection
- */
-
-/obj/item/clothing/suit/bomb_suit/taur
- name = "taur specific bomb suit"
- desc = "A suit designed for safety when handling explosives. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- w_class = ITEMSIZE_LARGE//bulky item
- gas_transfer_coefficient = 0.01
- permeability_coefficient = 0.01
- slowdown = 2
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 100, bio = 0, rad = 0)
- flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
- heat_protection = UPPER_TORSO|LOWER_TORSO
- max_heat_protection_temperature = ARMOR_MAX_HEAT_PROTECTION_TEMPERATURE
- siemens_coefficient = 0
-
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-horse"
- item_state = "bombsuit-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-wolf"
- item_state = "bombsuit-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-naga"
- item_state = "bombsuit-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-
/obj/item/clothing/head/bomb_hood/security
icon_state = "bombsuitsec"
body_parts_covered = HEAD
-
-/obj/item/clothing/suit/bomb_suit/taur/security
- allowed = list(/obj/item/weapon/gun/energy,/obj/item/weapon/melee/baton,/obj/item/weapon/handcuffs)
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-horse"
- item_state = "bombsuit-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-wolf"
- item_state = "bombsuit-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "bombsuit-naga"
- item_state = "bombsuit-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
-
-/*
- * Radiation protection
- */
-
-/obj/item/clothing/suit/radiation/taur
- name = "taur specific radiation suit"
- desc = "A suit that protects against radiation. Label: Made with lead, do not eat insulation. It has a sticker saying one size fits all taurs on it. Below the sticker, it states that it only fits horses, wolves, and naga taurs."
- w_class = ITEMSIZE_LARGE//bulky item
- gas_transfer_coefficient = 0.90
- permeability_coefficient = 0.50
- body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS|HANDS|FEET
- allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency/oxygen,/obj/item/clothing/head/radiation,/obj/item/clothing/mask/gas)
- slowdown = 1.5
- armor = list(melee = 0, bullet = 0, laser = 0,energy = 0, bomb = 0, bio = 60, rad = 100)
- flags_inv = HIDEJUMPSUIT|HIDETAIL|HIDETIE|HIDEHOLSTER
-
- species_restricted = null
- mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/horse))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "radsuit-horse"
- item_state = "radsuit-horse"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "radsuit-wolf"
- item_state = "radsuit-wolf"
- pixel_x = -16
- return 1
- else if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/naga))
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "radsuit-naga"
- item_state = "radsuit-naga"
- pixel_x = -16
- return 1
- else
- H << "You need to have a horse, wolf, or naga half to wear this."
- return 0
\ No newline at end of file
diff --git a/code/modules/integrated_electronics/subtypes/input.dm b/code/modules/integrated_electronics/subtypes/input.dm
index 3ef22e0a5c..ac9a0e13f9 100644
--- a/code/modules/integrated_electronics/subtypes/input.dm
+++ b/code/modules/integrated_electronics/subtypes/input.dm
@@ -20,7 +20,7 @@
/obj/item/integrated_circuit/input/button/ask_for_input(mob/user) //Bit misleading name for this specific use.
- to_chat(user, "You press the button labeled '[src.name]'.")
+ to_chat(user, "You press the button labeled '[src.displayed_name]'.")
activate_pin(1)
/obj/item/integrated_circuit/input/toggle_button
@@ -38,7 +38,7 @@
set_pin_data(IC_OUTPUT, 1, !get_pin_data(IC_OUTPUT, 1))
push_data()
activate_pin(1)
- to_chat(user, "You toggle the button labeled '[src.name]' [get_pin_data(IC_OUTPUT, 1) ? "on" : "off"].")
+ to_chat(user, "You toggle the button labeled '[src.displayed_name]' [get_pin_data(IC_OUTPUT, 1) ? "on" : "off"].")
/obj/item/integrated_circuit/input/numberpad
name = "number pad"
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index 7be58e782a..49fee10945 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -571,7 +571,7 @@ var/list/mining_overlay_cache = list()
new /obj/item/stack/material/uranium(src, rand(5,25))
/turf/simulated/mineral/proc/make_ore(var/rare_ore)
- if(mineral)
+ if(mineral || ignore_mapgen) //VOREStation Edit - Makes sense, doesn't it?
return
var/mineral_name
diff --git a/code/modules/mining/shelter_atoms.dm b/code/modules/mining/shelter_atoms.dm
index 656f8f7ad1..3fefac54ab 100644
--- a/code/modules/mining/shelter_atoms.dm
+++ b/code/modules/mining/shelter_atoms.dm
@@ -118,6 +118,7 @@
//Sleeper
/obj/machinery/sleeper/survival_pod
+ desc = "A limited functionality sleeper, all it can do is put patients into stasis. It lacks the medication and configuration of the larger units."
icon = 'icons/obj/survival_pod.dmi'
icon_state = "sleeper"
stasis_level = 100 //Just one setting
diff --git a/code/modules/mob/_modifiers/traits.dm b/code/modules/mob/_modifiers/traits.dm
index 453c17f321..e510798001 100644
--- a/code/modules/mob/_modifiers/traits.dm
+++ b/code/modules/mob/_modifiers/traits.dm
@@ -82,4 +82,22 @@
name = "Smaller"
desc = "Your body is smaller than average."
- icon_scale_percent = 0.9
\ No newline at end of file
+ icon_scale_percent = 0.9
+
+/datum/modifier/trait/colorblind_taj
+ name = "Colorblind - B+R"
+ desc = "You are colorblind. You have a minor issue with blue colors and have difficulty recognizing them from red colors."
+
+ client_color = MATRIX_Taj_Colorblind
+
+/datum/modifier/trait/colorblind_vulp
+ name = "Colorblind - G+R"
+ desc = "You are colorblind. You have a severe issue with green colors and have difficulty recognizing them from red colors."
+
+ client_color = MATRIX_Vulp_Colorblind
+
+/datum/modifier/trait/colorblind_mono
+ name = "Colorblind - Mono"
+ desc = "You are colorblind. Your condition is rare, but you can see no colors at all."
+
+ client_color = MATRIX_Monochromia
diff --git a/code/modules/mob/gender_vr.dm b/code/modules/mob/gender_vr.dm
new file mode 100644
index 0000000000..8312458d08
--- /dev/null
+++ b/code/modules/mob/gender_vr.dm
@@ -0,0 +1,14 @@
+/datum/gender/herm
+ key = "herm"
+
+ He = "Shi"
+ he = "shi"
+ His = "Hir"
+ his = "hir"
+ him = "hir"
+ has = "has"
+ is = "is"
+ does = "does"
+ himself = "hirself"
+ s = "s"
+ hes = "shi's"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/emote_vr.dm b/code/modules/mob/living/carbon/human/emote_vr.dm
index 46a12d0d8c..a637dff787 100644
--- a/code/modules/mob/living/carbon/human/emote_vr.dm
+++ b/code/modules/mob/living/carbon/human/emote_vr.dm
@@ -99,7 +99,7 @@
set name = "Set Gender Identity"
set desc = "Sets the pronouns when examined and performing an emote."
set category = "IC"
- var/new_gender_identity = input("Please select a gender Identity.") as null|anything in list(FEMALE, MALE, NEUTER, PLURAL)
+ var/new_gender_identity = input("Please select a gender Identity.") as null|anything in list(FEMALE, MALE, NEUTER, PLURAL, HERM)
if(!new_gender_identity)
return 0
change_gender_identity(new_gender_identity)
@@ -110,4 +110,4 @@
set category = "IC"
set desc = "Switch tail layer on top."
tail_alt = !tail_alt
- update_tail_showing()
\ No newline at end of file
+ update_tail_showing()
diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm
index d976dc50b1..44488ae319 100644
--- a/code/modules/mob/living/carbon/human/examine_vr.dm
+++ b/code/modules/mob/living/carbon/human/examine_vr.dm
@@ -35,6 +35,12 @@
t_he = "it"
t_His = "Its"
t_his = "its"
+ if(HERM)
+ t_He = "Shi"
+ t_he = "shi"
+ t_His = "Hir"
+ t_his = "hir"
+ t_heavy = "curvy"
switch(weight_examine)
if(0 to 74)
@@ -88,6 +94,10 @@
t_He = "It"
t_his = "its"
t_His = "Its"
+ if(HERM)
+ t_He = "Shi"
+ t_his = "hir"
+ t_His = "Hir"
switch(nutrition_examine)
if(0 to 49)
message = "[t_He] [t_is] starving! You can hear [t_his] stomach snarling from across the room!\n"
diff --git a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
index c5b13db327..fd167fc2da 100644
--- a/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
+++ b/code/modules/mob/living/carbon/human/species/species_shapeshift.dm
@@ -130,7 +130,7 @@ var/list/wrapped_species_by_ref = list()
if(!new_gender)
return
- var/new_gender_identity = input("Please select a gender Identity.", "Shapeshifter Gender Identity") as null|anything in list(FEMALE, MALE, NEUTER, PLURAL)
+ var/new_gender_identity = input("Please select a gender Identity.", "Shapeshifter Gender Identity") as null|anything in list(FEMALE, MALE, NEUTER, PLURAL, HERM) //VOREStation Edit
if(!new_gender_identity)
return
diff --git a/code/modules/mob/living/carbon/human/species/station/prometheans.dm b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
index 740d72987f..a6047c94c8 100644
--- a/code/modules/mob/living/carbon/human/species/station/prometheans.dm
+++ b/code/modules/mob/living/carbon/human/species/station/prometheans.dm
@@ -184,6 +184,8 @@ VOREStation Removal End */
t_she = "They are"
else if(H.identifying_gender == NEUTER)
t_she = "It is"
+ else if(H.identifying_gender == HERM) //VOREStation Edit
+ t_she = "Shi is"
switch(stored_shock_by_ref["\ref[H]"])
if(1 to 10)
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
index 15916485cd..0526dc52cd 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_abilities_vr.dm
@@ -1,137 +1,151 @@
-/mob/living/carbon/human/proc/begin_reconstitute_form() //Scree's race ability.in exchange for: No cloning.
+/mob/living/carbon/human/proc/reconstitute_form() //Scree's race ability.in exchange for: No cloning.
set name = "Reconstitute Form"
set category = "Abilities"
- if(world.time < last_special)
- return
-
- last_special = world.time + 50 //To prevent button spam.
-
+ // Sanity is mostly handled in chimera_regenerate()
+
var/confirm = alert(usr, "Are you sure you want to completely reconstruct your form? This process can take up to twenty minutes, depending on how hungry you are, and you will be unable to move.", "Confirm Regeneration", "Yes", "No")
if(confirm == "Yes")
chimera_regenerate()
/mob/living/carbon/human/proc/chimera_regenerate()
- var/nutrition_used = nutrition/2
-
- if(reviving == TRUE) //If they're already unable to
- to_chat(src, "You are already reconstructing, or your body is currently recovering from the intense process of your previous reconstitution.")
- return
-
- if(stat == DEAD) //Uh oh, you died!
- if(hasnutriment()) //Let's hope you have nutriment in you.... If not
- var/time = (240+960/(1 + nutrition_used/75))
- reviving = TRUE
- to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.")
- //don't need all the weakened, does_not_breathe, canmove, heal IB crap here like you do for live ones'cause they're DEAD.
-
- spawn(time SECONDS)
- if(src) //Runtime prevention.
- if (stat == DEAD) // let's make sure they've not been defibbed or whatever
- to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch.")
- verbs += /mob/living/carbon/human/proc/hatch
- return
- else // their revive got aborted by being made not-dead. Remove their cooldown.
- to_chat(src, "Your body has recovered from its ordeal, ready to regenerate itself again.")
- reviving = FALSE
- return
- else
- return //Something went wrong.
- else //Dead until nutrition injected.
- to_chat(src, "Your body is too damaged to regenerate without additional nutrients to feed what few living cells remain.")
+ //If they're already regenerating
+ switch(reviving)
+ if(REVIVING_NOW)
+ to_chat(src, "You are already reconstructing, just wait for the reconstruction to finish!")
+ return
+ if(REVIVING_DONE)
+ to_chat(src, "Your reconstruction is done, but you need to hatch now.")
+ return
+ if(REVIVING_COOLDOWN)
+ to_chat(src, "You can't use that ability again so soon!")
return
- else if(stat != DEAD) //If they're alive at the time of regenerating.
- var/time = (240+960/(1 + nutrition_used/75))
- weakened = 10000 //Since it takes 1 tick to lose one weaken. Due to prior rounding errors, you'd sometimes unweaken before regenning. This fixes that.
- reviving = TRUE
- canmove = 0 //Make them unable to move. In case they somehow get up before the delay.
- to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.")
- does_not_breathe = 1 //effectively makes them spaceworthy while regenning
+ var/nutrition_used = nutrition * 0.5
+ var/time = (240+960/(1 + nutrition_used/75))
- spawn(time SECONDS)
- if(stat != DEAD) //If they're still alive after regenning.
- to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..")
- verbs += /mob/living/carbon/human/proc/hatch
- return
- else if(stat == DEAD)
- if(hasnutriment()) //Let's hope you have nutriment in you.... If not
- to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..")
- verbs += /mob/living/carbon/human/proc/hatch
- return
- else //Dead until nutrition injected.
- to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
- reviving = FALSE // so they can try again when they're given a kickstart
- return
- else
- return //Something went wrong
+ //Clicked regen while dead.
+ if(stat == DEAD)
+
+ //Has nutrition and dead, allow regen.
+ if(hasnutriment())
+ to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.")
+
+ //Scary spawnerization.
+ reviving = REVIVING_NOW
+ spawn(time SECONDS)
+ // Was dead, now not dead.
+ if(stat != DEAD)
+ to_chat(src, "Your body has recovered from its ordeal, ready to regenerate itself again.")
+ reviving = 0 //Not bool
+
+ // Was dead, still dead.
+ else
+ to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch.")
+ verbs |= /mob/living/carbon/human/proc/hatch
+ reviving = REVIVING_DONE
+
+ //Dead until nutrition injected.
+ else
+ to_chat(src, "Your body is too damaged to regenerate without additional nutrients to feed what few living cells remain.")
+
+ //Clicked regen while NOT dead
else
- return //Something went wrong
+ to_chat(src, "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds.")
+
+ //Waiting for regen after being alive
+ reviving = REVIVING_NOW
+ spawn(time SECONDS)
+
+ //If they're still alive after regenning.
+ if(stat != DEAD)
+ to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..")
+ verbs |= /mob/living/carbon/human/proc/hatch
+ reviving = REVIVING_DONE
+
+ //Was alive, now dead
+ else if(hasnutriment())
+ to_chat(src, "Consciousness begins to stir as your new body awakens, ready to hatch..")
+ verbs |= /mob/living/carbon/human/proc/hatch
+ reviving = REVIVING_DONE
+
+ //Dead until nutrition injected.
+ else
+ to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
+ reviving = 0 //Not boolean
/mob/living/carbon/human/proc/hasnutriment()
if (bloodstr.has_reagent("nutriment", 30) || src.bloodstr.has_reagent("protein", 15)) //protein needs half as much. For reference, a steak contains 9u protein.
- return 1
+ return TRUE
else if (ingested.has_reagent("nutriment", 60) || src.ingested.has_reagent("protein", 30)) //try forcefeeding them, why not. Less effective.
- return 1
- else return 0
+ return TRUE
+ else return FALSE
/mob/living/carbon/human/proc/hatch()
set name = "Hatch"
set category = "Abilities"
- if(world.time < last_special)
+ if(reviving != REVIVING_DONE)
+ //Hwhat?
+ verbs -= /mob/living/carbon/human/proc/hatch
return
- last_special = world.time + 50 //To prevent button spam.
-
var/confirm = alert(usr, "Are you sure you want to hatch right now? This will be very obvious to anyone in view.", "Confirm Regeneration", "Yes", "No")
if(confirm == "Yes")
- if(stat == DEAD) //Uh oh, you died!
- if(hasnutriment()) //Let's hope you have nutriment in you.... If not
- if(src) //Runtime prevention.
- chimera_hatch()
- visible_message("The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.
") //Bloody hell...
- brainloss += 10 //Reviving from dead means you take a lil' brainloss on top of whatever was healed in the revive.
- return
- else
- return //Runtime prevention
- else //don't have nutriment to hatch! Or you somehow died in between completing your revive and hitting hatch.
- to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
- reviving = FALSE // so they can try again when they're given a kickstart
+
+ //Dead when hatching
+ if(stat == DEAD)
+ //Check again for nutriment (necessary?)
+ if(hasnutriment())
+ chimera_hatch()
+ adjustBrainLoss(10) // if they're reviving from dead, they come back with 10 brainloss on top of whatever's unhealed.
+ visible_message("The lifeless husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.
") //Bloody hell...
return
- else if(stat != DEAD) //If they're alive at the time of regenerating.
+ //Don't have nutriment to hatch! Or you somehow died in between completing your revive and hitting hatch.
+ else
+ to_chat(src, "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process.")
+ verbs -= /mob/living/carbon/human/proc/hatch
+ reviving = 0 //So they can try again when they're given a kickstart
+
+ //Alive when hatching
+ else
chimera_hatch()
visible_message("The dormant husk of [src] bursts open, revealing a new, intact copy in the pool of viscera.
") //Bloody hell...
- return
- else
- return //Runtime prevention.
/mob/living/carbon/human/proc/chimera_hatch()
- nutrition -= nutrition/2 //Cut their nutrition in half.
- var/old_nutrition = nutrition //Since the game is being annoying.
+ verbs -= /mob/living/carbon/human/proc/hatch
to_chat(src, "Your new body awakens, bursting free from your old skin.")
- var/T = get_turf(src)
- new /obj/effect/gibspawner/human/scree(T)
- var/braindamage = brainloss/2 //If you have 100 brainloss, it gives you 50.
- does_not_breathe = 0 //start breathing again
- revive() // I did have special snowflake code, but this is easier.
- weakened = 2 //Not going to let you get up immediately. 2 ticks before you get up. Overrides the above 10000 weaken.
+
+ //Modify and record values (half nutrition and braindamage)
+ var/old_nutrition = nutrition * 0.5
+ var/braindamage = (brainloss * 0.5) //Can only heal half brain damage.
+
+ //I did have special snowflake code, but this is easier.
+ revive()
mutations.Remove(HUSK)
nutrition = old_nutrition
- brainloss = braindamage //Gives them half their prior brain damage.
- update_canmove()
+ setBrainLoss(braindamage)
+
+ //Drop everything
for(var/obj/item/W in src)
drop_from_inventory(W)
- spawn(3600 SECONDS) //1 hour wait until you can revive.
- reviving = FALSE
- to_chat(src, "Your body has recovered from the strenuous effort of rebuilding itself.")
- verbs -= /mob/living/carbon/human/proc/hatch
- return
-/obj/effect/gibspawner/human/scree
- fleshcolor = "#14AD8B" //Scree blood.
+ //Unfreeze some things
+ does_not_breathe = FALSE
+ update_canmove()
+ weakened = 2
+
+ //Visual effects
+ var/T = get_turf(src)
+ new /obj/effect/gibspawner/human/xenochimera(T)
+
+ reviving = REVIVING_COOLDOWN
+ schedule_callback_in(1 HOUR, VARSET_CALLBACK(src, reviving, 0))
+
+/obj/effect/gibspawner/human/xenochimera
+ fleshcolor = "#14AD8B"
bloodcolor = "#14AD8B"
/mob/living/carbon/human/proc/getlightlevel() //easier than having the same code in like three places
@@ -141,7 +155,7 @@
else return 0
/mob/living/carbon/human/proc/handle_feral()
- if(handling_hal) return //avoid conflict with actual hallucinations
+ if(handling_hal) return
handling_hal = 1
if(client && feral >= 10) // largely a copy of handle_hallucinations() without the fake attackers. Unlike hallucinations, only fires once - if they're still feral they'll get hit again anyway.
@@ -650,7 +664,7 @@
var/list/choices = list()
for(var/mob/living/carbon/human/M in oviewers(1))
choices += M
-
+
if(!choices.len)
to_chat(src,"There's nobody nearby to use this on.")
@@ -698,7 +712,7 @@
if(can_shred(T) != T)
to_chat(src,"Looks like you lost your chance...")
return
-
+
//Removing an internal organ
if(T_int && T_int.damage >= 25) //Internal organ and it's been severely damaged
T.apply_damage(15, BRUTE, T_ext) //Damage the external organ they're going through.
@@ -713,7 +727,7 @@
//Removing an external organ
else if(!T_int && (T_ext.damage >= 25 || T_ext.brute_dam >= 25))
T_ext.droplimb(1,DROPLIMB_EDGE) //Clean cut so it doesn't kill the prey completely.
-
+
//Is it groin/chest? You can't remove those.
if(T_ext.cannot_amputate)
T.apply_damage(25, BRUTE, T_ext)
@@ -726,14 +740,20 @@
visible_message("[src] tears off [T]'s [T_ext.name]!","You tear off [T]'s [T_ext.name]!")
//Not targeting an internal organ w/ > 25 damage , and the limb doesn't have < 25 damage.
- else
+ else
if(T_int)
T_int.damage = 25 //Internal organs can only take damage, not brute damage.
T.apply_damage(25, BRUTE, T_ext)
visible_message("[src] severely damages [T]'s [T_ext.name]!")
-
+
add_attack_logs(src,T,"Shredded (hardvore)")
+/mob/living/proc/shred_limb_temp()
+ set name = "Damage/Remove Prey's Organ (beartrap)"
+ set desc = "Severely damages prey's organ. If the limb is already severely damaged, it will be torn off."
+ set category = "Abilities"
+ shred_limb()
+
/mob/living/proc/flying_toggle()
set name = "Toggle Flight"
set desc = "While flying over open spaces, you will use up some nutrition. If you run out nutrition, you will fall. Additionally, you can't fly if you are too heavy."
diff --git a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
index 56a35acc96..aa8af0e273 100644
--- a/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
+++ b/code/modules/mob/living/carbon/human/species/station/station_special_vr.dm
@@ -22,7 +22,7 @@
tail = "tail" //Scree's tail. Can be disabled in the vore tab by choosing "hide species specific tail sprite"
icobase_tail = 1
inherent_verbs = list(
- /mob/living/carbon/human/proc/begin_reconstitute_form,
+ /mob/living/carbon/human/proc/reconstitute_form,
/mob/living/carbon/human/proc/sonar_ping,
/mob/living/carbon/human/proc/succubus_drain,
/mob/living/carbon/human/proc/succubus_drain_finalize,
@@ -40,9 +40,9 @@
Most, if not all chimeras possess the ability to undergo some type of regeneration process, at the cost of energy."
hazard_low_pressure = -1 //Prevents them from dying normally in space. Special code handled below.
- cold_level_1 = -5000 // All cold debuffs are handled below in handle_environment_special
- cold_level_2 = -5000
- cold_level_3 = -5000
+ cold_level_1 = -1 // All cold debuffs are handled below in handle_environment_special
+ cold_level_2 = -1
+ cold_level_3 = -1
//primitive_form = "Farwa"
@@ -56,142 +56,198 @@
/datum/species/xenochimera/handle_environment_special(var/mob/living/carbon/human/H)
- if(H.stat == 2) // If they're dead they won't think about being all feral and won't need all the code below.
- return
+ //If they're KO'd/dead, they're probably not thinking a lot about much of anything.
+ if(!H.stat)
+ handle_feralness(H)
-//handle feral triggers
-
- if(H.nutrition <= 200||H.traumatic_shock > min(60, H.nutrition/10)) // Stress factors are in play
- // If they're hungry, give nag messages.
- if (!istype(H.loc, /mob)) // if they're in a mob, skip the hunger stuff so it doesn't mess with drain/absorption modes.
- if(H.nutrition < 200 && H.nutrition > 150)
- if(prob(0.5)) //A bit of an issue, not too bad.
- H << "You feel rather hungry. It might be a good idea to find some some food..."
-
- else if(H.nutrition <= 150 && H.nutrition > 100)
- if(prob(0.5)) //Getting closer, should probably eat some food about now...
- H << "You feel like you're going to snap and give in to your hunger soon... It would be for the best to find some [pick("food","prey")] to eat..."
-
- else if(H.nutrition <= 100) //Should've eaten sooner!
- if(H.feral == 0)
- H << "Something in your mind flips, your instincts taking over, no longer able to fully comprehend your surroundings as survival becomes your primary concern - you must feed, survive, there is nothing else. Hunt. Eat. Hide. Repeat."
- log_and_message_admins("has gone feral due to hunger.", H)
- H.feral += 5 //just put them over the threshold by a decent amount for the first chunk.
- if(H.stat == CONSCIOUS)
- H.emote("twitch")
- if(H.feral + H.nutrition < 150) //Feralness increases while this hungry, capped at 50-150 depending on hunger.
- H.feral += 1
-
- // If they're hurt, chance of snapping. Not if they're straight-up KO'd though.
- if (H.stat == CONSCIOUS && H.traumatic_shock >=min(60, H.nutrition/10)) //at 360 nutrition, this is 30 brute/burn, or 18 halloss. Capped at 50 brute/30 halloss - if they take THAT much, no amount of satiation will help them. Also they're fat.
- if (2.5*H.halloss >= H.traumatic_shock) //If the majority of their shock is due to halloss, greater chance of snapping.
- if(prob(min(10,(0.2 * H.traumatic_shock))))
- if(H.feral == 0)
- H << "The pain! It stings! Got to get away! Your instincts take over, urging you to flee, to hide, to go to ground, get away from here..."
- log_and_message_admins("has gone feral due to halloss.", H)
- H.feral = max(H.feral, H.halloss) //if already more feral than their halloss justifies, don't increase it.
- H.emote("twitch")
- else if(prob(min(10,(0.1 * H.traumatic_shock))))
- H.emote("twitch")
- if(H.feral == 0)
- H << "Your fight-or-flight response kicks in, your injuries too much to simply ignore - you need to flee, to hide, survive at all costs - or destroy whatever is threatening you."
- H.feral = 2*H.traumatic_shock //Make 'em snap.
- log_and_message_admins("has gone feral due to injury.", H)
- else
- H.feral = max(H.feral, H.traumatic_shock * 2) //keep feralness up to match the current injury state.
-
- else if (H.jitteriness >= 100) //No stress factors, but there's coffee. Keeps them mildly feral while they're all jittery.
- if(H.feral == 0)
- H << "Suddenly, something flips - everything that moves is... potential prey. A plaything. This is great! Time to hunt!"
- log_and_message_admins("has gone feral due to jitteriness.", H)
- if(H.stat == CONSCIOUS)
- H.emote("twitch")
- H.feral = max(H.feral, H.jitteriness-100) //they'll be twitchy and pouncy while they're under the influence, and feralness won't wear off until they're calm.
+ //While regenerating
+ if(H.reviving && H.reviving != REVIVING_COOLDOWN)
+ H.weakened = 5
+ H.canmove = 0
+ H.does_not_breathe = TRUE
+ //Cold/pressure effects when not regenerating
else
- if (H.feral > 0) //still feral, but all stress factors are gone. Calm them down.
- H.feral -= 1
- if (H.feral <=0) //check if they're unferalled
- H.feral = 0
- H << "Your thoughts start clearing, your feral urges having passed - for the time being, at least."
- log_and_message_admins("is no longer feral.", H)
+ var/datum/gas_mixture/environment = H.loc.return_air()
+ var/pressure2 = environment.return_pressure()
+ var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2)
-// handle what happens while feral
+ //Very low pressure damage
+ if(adjusted_pressure2 <= 20)
+ H.take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
- if(H.feral > 0) //do the following if feral, otherwise no effects.
- var/light_amount = H.getlightlevel() //how much light there is in the place
+ //Cold hurts and gives them pain messages, eventually weakening and paralysing, but doesn't damage or trigger feral.
+ //NB: 'body_temperature' used here is the 'setpoint' species var
+ var/temp_diff = body_temperature - H.bodytemperature
+ if(temp_diff >= 50)
+ H.shock_stage = min(H.shock_stage + (temp_diff/20), 160) // Divided by 20 is the same as previous numbers, but a full scale
+ H.eye_blurry = max(5,H.eye_blurry)
- H.shock_stage = max(H.shock_stage-(H.feral/20), 0) //if they lose enough health to hit softcrit, handle_shock() will keep resetting this. Otherwise, pissed off critters will lose shock faster than they gain it.
- if(light_amount <= 0.5) // in the darkness. No need for custom scene-protection checks as it's just an occational infomessage.
- if(prob(2)) //periodic nagmessages just to remind 'em they're still feral
- if (H.traumatic_shock >=min(60, H.nutrition/10)) // if hurt, tell 'em to heal up
- H << " This place seems safe, secure, hidden, a place to lick your wounds and recover..."
- else if(H.nutrition <= 100) //If hungry, nag them to go and find someone or something to eat.
- H << " Secure in your hiding place, your hunger still gnaws at you. You need to catch some food..."
- else if(H.jitteriness >= 100)
- H << " sneakysneakyyesyesyescleverhidingfindthingsyessssss"
- else //otherwise, just tell them to keep hiding.
- H << " ...safe..."
- else // must be in a lit area
- var/list/nearby = oviewers(H)
- if (nearby.len) // someone's nearby
- if(prob(1)) // 1 in 100 chance of doing something so as not to interrupt scenes
- var/mob/M = pick(nearby)
- if (H.traumatic_shock >=min(60, H.nutrition/10)) //tell 'em to be wary of a random person
- H << " You're hurt, in danger, exposed, and [M] looks to be a little too close for comfort..."
- else if(H.nutrition <= 250 || H.jitteriness > 0) //tell them a random person in view looks like food. It CAN happen when you're not hungry enough to be feral, especially if coffee is involved.
- H << " Every movement, every flick, every sight and sound has your full attention, your hunting instincts on high alert... In fact, [M] looks extremely appetizing..."
- if(H.stat == CONSCIOUS)
+/datum/species/xenochimera/proc/handle_feralness(var/mob/living/carbon/human/H)
+
+ //Low-ish nutrition has messages and eventually feral
+ var/hungry = H.nutrition <= 200
+
+ //At 360 nutrition, this is 30 brute/burn, or 18 halloss. Capped at 50 brute/30 halloss - if they take THAT much, no amount of satiation will help them. Also they're fat.
+ var/shock = H.traumatic_shock > min(60, H.nutrition/10)
+
+ //Caffeinated xenochimera can become feral and have special messages
+ var/jittery = H.jitteriness >= 100
+
+ //To reduce distant object references
+ var/feral = H.feral
+
+//Handle feral triggers and pre-feral messages
+ if(!feral && (hungry || shock || jittery))
+
+ // If they're hungry, give nag messages (when not bellied)
+ if(H.nutrition >= 100 && prob(0.5) && !isbelly(H.loc))
+ switch(H.nutrition)
+ if(150 to 200)
+ to_chat(H,"You feel rather hungry. It might be a good idea to find some some food...")
+ if(100 to 150)
+ to_chat(H,"You feel like you're going to snap and give in to your hunger soon... It would be for the best to find some [pick("food","prey")] to eat...")
+
+ // Going feral due to hunger
+ else if(H.nutrition < 100 && !isbelly(H.loc))
+ to_chat(H,"Something in your mind flips, your instincts taking over, no longer able to fully comprehend your surroundings as survival becomes your primary concern - you must feed, survive, there is nothing else. Hunt. Eat. Hide. Repeat.")
+ log_and_message_admins("has gone feral due to hunger.", H)
+ feral = 5
+ if(!H.stat)
+ H.emote("twitch")
+
+ // If they're hurt, chance of snapping.
+ else if(shock)
+
+ //If the majority of their shock is due to halloss, greater chance of snapping.
+ if(2.5*H.halloss >= H.traumatic_shock)
+ if(prob(min(10,(0.2 * H.traumatic_shock))))
+ to_chat(H,"The pain! It stings! Got to get away! Your instincts take over, urging you to flee, to hide, to go to ground, get away from here...")
+ log_and_message_admins("has gone feral due to halloss.", H)
+ feral = 5
+ if(!H.stat)
H.emote("twitch")
+
+ //Majority due to other damage sources
+ else if(prob(min(10,(0.1 * H.traumatic_shock))))
+ to_chat(H,"Your fight-or-flight response kicks in, your injuries too much to simply ignore - you need to flee, to hide, survive at all costs - or destroy whatever is threatening you.")
+ feral = 5
+ log_and_message_admins("has gone feral due to injury.", H)
+ if(!H.stat)
+ H.emote("twitch")
+
+ //No hungry or shock, but jittery
+ else if(jittery)
+ to_chat(H,"Suddenly, something flips - everything that moves is... potential prey. A plaything. This is great! Time to hunt!")
+ feral = 5
+ log_and_message_admins("has gone feral due to jitteriness.", H)
+ if(!H.stat)
+ H.emote("twitch")
+
+// Handle being feral
+ if(feral)
+
+ //Shock due to mostly halloss. More feral.
+ if(shock && 2.5*H.halloss >= H.traumatic_shock)
+ feral = max(feral, H.halloss)
+
+ //Shock due to mostly injury. More feral.
+ else if(shock)
+ feral = max(feral, H.traumatic_shock * 2)
+
+ //Still jittery? More feral.
+ if(jittery)
+ feral = max(feral, H.jitteriness-100)
+
+ //Still hungry? More feral.
+ if(H.feral + H.nutrition < 150)
+ feral++
+ else
+ feral = max(0,--feral)
+
+ //Set our real mob's var to our temp var
+ H.feral = feral
+
+ //Did we just finish being feral?
+ if(!feral)
+ to_chat(H,"Your thoughts start clearing, your feral urges having passed - for the time being, at least.")
+ log_and_message_admins("is no longer feral.", H)
+ return
+
+ //If they lose enough health to hit softcrit, handle_shock() will keep resetting this. Otherwise, pissed off critters will lose shock faster than they gain it.
+ H.shock_stage = max(H.shock_stage-(feral/20), 0)
+
+ //Handle light/dark areas
+ var/turf/T = get_turf(H)
+ if(!T)
+ return //Nullspace
+ var/darkish = T.get_lumcount() <= 0.1
+
+ //Don't bother doing heavy lifting if we weren't going to give emotes anyway.
+ if(!prob(1))
+
+ //This is basically the 'lite' version of the below block.
+ var/list/nearby = H.living_mobs(world.view)
+
+ //Not in the dark and out in the open.
+ if(!darkish && isturf(H.loc))
+
+ //Always handle feral if nobody's around and not in the dark.
+ if(!nearby.len)
H.handle_feral()
- else // nobody around
- H.handle_feral()
- if(prob(2)) //periodic nagmessages
- if(H.nutrition <= 100) //If hungry, nag them to go and find someone or something to eat.
- H << " Confusing sights and sounds and smells surround you - scary and disorienting it may be, but the drive to hunt, to feed, to survive, compels you."
- if(H.stat == CONSCIOUS)
- H.emote("twitch")
- else if(H.jitteriness >= 100)
- H << " yesyesyesyesyesyesgetthethingGETTHETHINGfindfoodsfindpreypounceyesyesyes"
- if(H.stat == CONSCIOUS)
- H.emote("twitch")
- else //otherwise, just tell them to hide.
- H << " Confusing sights and sounds and smells surround you, this place is wrong, confusing, frightening. You need to hide, go to ground..."
- if(H.stat == CONSCIOUS)
- H.emote("twitch")
+ //Rarely handle feral if someone is around
+ else if(prob(1))
+ H.handle_feral()
-//////////////////////////////////////////////////////////////////////////////////////////
-///////////WIP CODE TO MAKE XENOCHIMERAS NOT DIE IN SPACE WHILE REGENNING BELOW/////////// //I put WIP, but what I really meant to put was "Finished"
-//////////////////////////////////////////////////////////////////////////////////////////
+ //And bail
+ return
- var/datum/gas_mixture/environment = H.loc.return_air()
- var/pressure2 = environment.return_pressure()
- var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2)
+ // In the darkness or "hidden". No need for custom scene-protection checks as it's just an occational infomessage.
+ if(darkish || !isturf(H.loc))
+ // If hurt, tell 'em to heal up
+ if (shock)
+ to_chat(H,"This place seems safe, secure, hidden, a place to lick your wounds and recover...")
- if(adjusted_pressure2 <= 20 && H.does_not_breathe) //If they're in a enviroment with no pressure and are not breathing (See: regenerating), don't kill them.
- //This is just to prevent them from taking damage if they're in stasis.
+ //If hungry, nag them to go and find someone or something to eat.
+ else if(hungry)
+ to_chat(H,"Secure in your hiding place, your hunger still gnaws at you. You need to catch some food...")
- else if(adjusted_pressure2 <= 20) //If they're in an enviroment with no pressure and are NOT in stasis, damage them.
- H.take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
+ //If jittery, etc
+ else if(jittery)
+ to_chat(H,"sneakysneakyyesyesyescleverhidingfindthingsyessssss")
- if(H.bodytemperature <= 260 && H.does_not_breathe) //If they're regenerating, don't give them them the negative cold effects
- //This is just here to prevent them from getting cold effects
+ //Otherwise, just tell them to keep hiding.
+ else
+ to_chat(H,"...safe...")
+
+ // NOT in the darkness
+ else
+
+ //Twitch twitch
+ if(!H.stat)
+ H.emote("twitch")
+
+ var/list/nearby = H.living_mobs(world.view)
+
+ // Someone/something nearby
+ if(nearby.len)
+ var/M = pick(nearby)
+ if(shock)
+ to_chat(H,"You're hurt, in danger, exposed, and [M] looks to be a little too close for comfort...")
+ else if(hungry || jittery)
+ to_chat(H,"Every movement, every flick, every sight and sound has your full attention, your hunting instincts on high alert... In fact, [M] looks extremely appetizing...")
+
+ // Nobody around
+ else
+ if(hungry)
+ to_chat(H,"Confusing sights and sounds and smells surround you - scary and disorienting it may be, but the drive to hunt, to feed, to survive, compels you.")
+ else if(jittery)
+ to_chat(H,"yesyesyesyesyesyesgetthethingGETTHETHINGfindfoodsfindpreypounceyesyesyes")
+ else
+ to_chat(H,"Confusing sights and sounds and smells surround you, this place is wrong, confusing, frightening. You need to hide, go to ground...")
- else if(H.bodytemperature <= 260) //If they're not in stasis and are cold. Don't really have to add in an exception to cryo cells, as the effects aren't anything /too/ horrible.
- var/coldshock = 0
- if(H.bodytemperature <= 260 && H.bodytemperature >= 200) //Chilly.
- coldshock = 4 //This will begin to knock them out until they run out of oxygen and suffocate or until someone finds them.
- H.eye_blurry = 5 //Blurry vision in the cold.
- if(H.bodytemperature <= 199 && H.bodytemperature >= 100) //Extremely cold. Even in somewhere like the server room it takes a while for bodytemp to drop this low.
- coldshock = 8
- H.eye_blurry = 5
- if(H.bodytemperature <= 99) //Insanely cold.
- coldshock = 16
- H.eye_blurry = 5
- H.shock_stage = min(H.shock_stage + coldshock, 160) //cold hurts and gives them pain messages, eventually weakening and paralysing, but doesn't damage or trigger feral.
- return
/datum/species/xenochimera/proc/produceCopy(var/datum/species/to_copy,var/list/traits,var/mob/living/carbon/human/H)
ASSERT(to_copy)
@@ -272,10 +328,10 @@
Before they were found they built great cities out of their silk, being united and subjugated in warring factions under great “Star Queens” \
Who forced the working class to build huge, towering cities to attempt to reach the stars, which they worship as gems of great spiritual and magical significance."
- hazard_low_pressure = -1 //Prevents them from dying normally in space. Special code handled below.
- cold_level_1 = -5000 // All cold debuffs are handled below in handle_environment_special
- cold_level_2 = -5000
- cold_level_3 = -5000
+ hazard_low_pressure = 20 //Prevents them from dying normally in space. Special code handled below.
+ cold_level_1 = -1 // All cold debuffs are handled below in handle_environment_special
+ cold_level_2 = -1
+ cold_level_3 = -1
//primitive_form = "Monkey" //I dunno. Replace this in the future.
@@ -288,16 +344,9 @@
blood_color = "#0952EF" //Spiders have blue blood.
/datum/species/spider/handle_environment_special(var/mob/living/carbon/human/H)
- if(H.stat == 2) // If they're dead they won't need anything.
+ if(H.stat == DEAD) // If they're dead they won't need anything.
return
- var/datum/gas_mixture/environment = H.loc.return_air()
- var/pressure2 = environment.return_pressure()
- var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2)
-
- if(adjusted_pressure2 <= 20) //If they're in an enviroment with no pressure and are NOT in stasis, like a stasis bodybag, damage them.
- H.take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
-
if(H.bodytemperature <= 260) //If they're really cold, they go into stasis.
var/coldshock = 0
if(H.bodytemperature <= 260 && H.bodytemperature >= 200) //Chilly.
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
index f8fdcc79cb..a177eeacb7 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/negative.dm
@@ -118,11 +118,13 @@
desc = "You simply can't see colors at all, period. You are 100% colorblind."
cost = -3
+/datum/modifier/colorblindness_mono
+ name = "Colorblindness (Monochromancy)"
+ desc = "You simply can't see colors at all, period. You are 100% colorblind."
+
/datum/trait/colorblind/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
- if(!H.plane_holder)
- H.plane_holder = new(H)
- H.plane_holder.set_vis(VIS_D_COLORBLIND,TRUE) //The default is monocrhomia, no need to set values
+ H.add_modifier(/datum/modifier/trait/colorblind_mono)
/datum/trait/colorblind/para_vulp
name = "Colorblindness (Para Vulp)"
@@ -131,7 +133,7 @@
/datum/trait/colorblind/para_vulp/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
- H.plane_holder.alter_values(VIS_D_COLORBLIND,list("variety" = "Paradise Vulp"))
+ H.add_modifier(/datum/modifier/trait/colorblind_vulp)
/datum/trait/colorblind/para_taj
name = "Colorblindness (Para Taj)"
@@ -140,4 +142,4 @@
/datum/trait/colorblind/para_taj/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..(S,H)
- H.plane_holder.alter_values(VIS_D_COLORBLIND,list("variety" = "Paradise Taj"))
+ H.add_modifier(/datum/modifier/trait/colorblind_taj)
diff --git a/code/modules/mob/living/living.dm b/code/modules/mob/living/living.dm
index e18a498246..266b8ed1f5 100644
--- a/code/modules/mob/living/living.dm
+++ b/code/modules/mob/living/living.dm
@@ -1124,6 +1124,9 @@ default behaviour is:
var/list/colors_to_blend = list()
for(var/datum/modifier/M in modifiers)
if(!isnull(M.client_color))
+ if(islist(M.client_color)) //It's a color matrix! Forget it. Just use that one.
+ animate(client, color = M.client_color, time = 10)
+ return
colors_to_blend += M.client_color
if(colors_to_blend.len)
diff --git a/code/modules/mob/living/silicon/robot/drone/drone_vr.dm b/code/modules/mob/living/silicon/robot/drone/drone_vr.dm
deleted file mode 100644
index 77e2a4ed41..0000000000
--- a/code/modules/mob/living/silicon/robot/drone/drone_vr.dm
+++ /dev/null
@@ -1,9 +0,0 @@
-/mob/living/silicon/robot/drone
- can_enter_vent_with = list(
- /obj/item/device/radio/borg,
- /obj/machinery/camera,
- /obj/item/device/camera/siliconcam/drone_camera,
- /obj/item/weapon/robot_module/drone,
- /obj/item/weapon/cell,
- /obj/screen/movable/ability_master,
- /obj/item/weapon/card/id/synthetic)
diff --git a/code/modules/mob/living/simple_animal/vore/badboi.dm b/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm
similarity index 82%
rename from code/modules/mob/living/simple_animal/vore/badboi.dm
rename to code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm
index 7a48eed575..a7ee0bcd7d 100644
--- a/code/modules/mob/living/simple_animal/vore/badboi.dm
+++ b/code/modules/mob/living/simple_animal/vore/corrupt_hounds.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/hostile/badboi
+/mob/living/simple_animal/hostile/corrupthound
name = "corrupt hound"
desc = "Good boy machine broke. This is definitely no good news for the organic lifeforms in vicinity."
icon = 'icons/mob/vore64x32.dmi'
@@ -48,6 +48,9 @@
minbodytemp = 150
maxbodytemp = 900
+ var/image/eye_layer = null
+
+
vore_active = TRUE
vore_capacity = 1
vore_pounce_chance = 15
@@ -57,7 +60,7 @@
loot_list = list(/obj/item/borg/upgrade/syndicate = 6, /obj/item/borg/upgrade/vtec = 6, /obj/item/weapon/material/knife/ritual = 6, /obj/item/weapon/disk/nifsoft/compliance = 6)
-/mob/living/simple_animal/hostile/badboi/prettyboi
+/mob/living/simple_animal/hostile/corrupthound/prettyboi
name = "corrupt corrupt hound"
desc = "Bad boy machine broke as well. Seems an attempt was made to achieve a less threatening look, and this one is definitely having some conflicting feelings about it."
icon_state = "prettyboi"
@@ -76,18 +79,37 @@
say_got_target = list("HERE COMES BIG MEAN HUG MACHINE!", "I'LL BE GENTLE!", "FUEL ME FRIEND!", "I*M SO SORRY!", "YUMMY TREAT DETECTED!", "LOVE ME!", "Not again. NOT AGAIN!")
-/mob/living/simple_animal/hostile/badboi/isSynthetic()
+/mob/living/simple_animal/hostile/corrupthound/isSynthetic()
return TRUE
-/mob/living/simple_animal/hostile/badboi/speech_bubble_appearance()
+/mob/living/simple_animal/hostile/corrupthound/speech_bubble_appearance()
return "synthetic_evil"
-/mob/living/simple_animal/hostile/badboi/PunchTarget()
+/mob/living/simple_animal/hostile/corrupthound/PunchTarget()
if(istype(target_mob,/mob/living/simple_animal/mouse))
return EatTarget()
else ..()
-/mob/living/simple_animal/hostile/badboi/death(gibbed, deathmessage = "shudders and collapses!")
+/mob/living/simple_animal/hostile/corrupthound/proc/add_eyes()
+ if(!eye_layer)
+ eye_layer = image(icon, "badboi-eyes")
+ eye_layer.plane = PLANE_LIGHTING_ABOVE
+ add_overlay(eye_layer)
+
+/mob/living/simple_animal/hostile/corrupthound/proc/remove_eyes()
+ cut_overlay(eye_layer)
+
+/mob/living/simple_animal/hostile/corrupthound/New()
+ add_eyes()
+ ..()
+
+/mob/living/simple_animal/hostile/corrupthound/death(gibbed, deathmessage = "shudders and collapses!")
.=..()
resting = 0
icon_state = icon_dead
+
+/mob/living/simple_animal/hostile/corrupthound/update_icon()
+ . = ..()
+ remove_eyes()
+ if(stat == CONSCIOUS && !resting)
+ add_eyes()
diff --git a/code/modules/mob/living/simple_animal/vore/otie.dm b/code/modules/mob/living/simple_animal/vore/otie.dm
index 766ed7a4ae..3a2601ef46 100644
--- a/code/modules/mob/living/simple_animal/vore/otie.dm
+++ b/code/modules/mob/living/simple_animal/vore/otie.dm
@@ -46,6 +46,9 @@
pixel_x = -16
pixel_y = 0
+ var/glowyeyes = FALSE
+ var/image/eye_layer = null
+ var/eyetype
var/mob/living/carbon/human/friend
var/tamed = 0
var/tame_chance = 50 //It's a fiddy-fiddy default you may get a buddy pal or you may get mauled and ate. Win-win!
@@ -78,6 +81,8 @@
max_co2 = 0
min_n2 = 0
max_n2 = 0
+ glowyeyes = TRUE
+ eyetype = "photie"
/mob/living/simple_animal/otie/friendly //gets the pet2tame feature and doesn't kill you right away
name = "otie"
@@ -109,6 +114,8 @@
max_co2 = 0
min_n2 = 0
max_n2 = 0
+ glowyeyes = TRUE
+ eyetype = "photie"
/mob/living/simple_animal/otie/security //tame by default unless you're a marked crimester. can be befriended to follow with pets tho.
name = "guard otie"
@@ -121,6 +128,8 @@
maxHealth = 200 //armored or something
health = 200
tamed = 1
+ glowyeyes = TRUE
+ eyetype = "sotie"
loot_list = list(/obj/item/clothing/glasses/sunglasses/sechud,/obj/item/clothing/suit/armor/vest/alt)
vore_pounce_chance = 60 // Good boys don't do too much police brutality.
@@ -144,6 +153,8 @@
max_co2 = 0
min_n2 = 0
max_n2 = 0
+ glowyeyes = TRUE
+ eyetype = "sotie"
/mob/living/simple_animal/otie/PunchTarget()
if(istype(target_mob,/mob/living/simple_animal/mouse))
@@ -315,8 +326,27 @@
else
..()
-/mob/living/simple_animal/otie/death(gibbed, deathmessage = "dies!")
- resting = 0
- icon_state = icon_dead
- update_icon()
+/mob/living/simple_animal/otie/proc/add_eyes()
+ if(!eye_layer)
+ eye_layer = image(icon, "[eyetype]-eyes")
+ eye_layer.plane = PLANE_LIGHTING_ABOVE
+ add_overlay(eye_layer)
+
+/mob/living/simple_animal/otie/proc/remove_eyes()
+ cut_overlay(eye_layer)
+
+/mob/living/simple_animal/otie/New()
+ if(glowyeyes)
+ add_eyes()
..()
+
+/mob/living/simple_animal/otie/update_icon()
+ . = ..()
+ remove_eyes()
+ if(glowyeyes && stat == CONSCIOUS && !resting)
+ add_eyes()
+
+/mob/living/simple_animal/otie/death(gibbed, deathmessage = "dies!")
+ .=..()
+ resting = 0
+ icon_state = icon_dead
\ No newline at end of file
diff --git a/code/modules/mob/living/simple_animal/vore/rous.dm b/code/modules/mob/living/simple_animal/vore/rat.dm
similarity index 93%
rename from code/modules/mob/living/simple_animal/vore/rous.dm
rename to code/modules/mob/living/simple_animal/vore/rat.dm
index 9b47810f36..804e5b107c 100644
--- a/code/modules/mob/living/simple_animal/vore/rous.dm
+++ b/code/modules/mob/living/simple_animal/vore/rat.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/hostile/rous
+/mob/living/simple_animal/hostile/rat
name = "giant rat"
desc = "In what passes for a hierarchy among verminous rodents, this one is king."
tt_desc = "Mus muscular"
@@ -41,6 +41,6 @@
vore_pounce_chance = 45
vore_icons = SA_ICON_LIVING | SA_ICON_REST
-/mob/living/simple_animal/hostile/rous/death()
+/mob/living/simple_animal/hostile/rat/death()
playsound(src, 'sound/effects/mouse_squeak_loud.ogg', 50, 1)
..()
diff --git a/code/modules/mob/living/simple_animal/vore/wah.dm b/code/modules/mob/living/simple_animal/vore/redpanda.dm
similarity index 92%
rename from code/modules/mob/living/simple_animal/vore/wah.dm
rename to code/modules/mob/living/simple_animal/vore/redpanda.dm
index 316441edd7..6047425f18 100644
--- a/code/modules/mob/living/simple_animal/vore/wah.dm
+++ b/code/modules/mob/living/simple_animal/vore/redpanda.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/wah
+/mob/living/simple_animal/redpanda
name = "red panda"
desc = "It's a wah! Beware of doom pounce!"
tt_desc = "Ailurus fulgens"
@@ -29,7 +29,7 @@
emote_see = list("trundles around","rears up onto their hind legs and pounces a bug")
// Activate Noms!
-/mob/living/simple_animal/wah
+/mob/living/simple_animal/redpanda
vore_active = 1
vore_bump_chance = 10
vore_bump_emote = "playfully lunges at"
@@ -37,7 +37,7 @@
vore_default_mode = DM_HOLD // above will only matter if someone toggles it anyway
vore_icons = SA_ICON_LIVING
-/mob/living/simple_animal/wah/fae
+/mob/living/simple_animal/redpanda/fae
name = "dark wah"
desc = "Ominous, but still cute!"
tt_desc = "Ailurus brattus"
diff --git a/code/modules/mob/living/simple_animal/vore/snake.dm b/code/modules/mob/living/simple_animal/vore/snake.dm
index 7f753bc92f..8d60989478 100644
--- a/code/modules/mob/living/simple_animal/vore/snake.dm
+++ b/code/modules/mob/living/simple_animal/vore/snake.dm
@@ -1,4 +1,4 @@
-/mob/living/simple_animal/hostile/snake
+/mob/living/simple_animal/hostile/giant_snake
name = "giant snake"
desc = "Snakes. Why did it have to be snakes?"
icon = 'icons/mob/vore64x64.dmi'
@@ -21,7 +21,7 @@
pixel_y = -16
// Activate Noms!
-/mob/living/simple_animal/hostile/snake
+/mob/living/simple_animal/hostile/giant_snake
vore_active = 1
vore_pounce_chance = 25
vore_icons = SA_ICON_LIVING
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index 9f316ba184..098a88ab42 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -34,6 +34,11 @@
if(hud_used) qdel(hud_used) //remove the hud objects
hud_used = new /datum/hud(src)
+ if(client.prefs && client.prefs.client_fps)
+ client.fps = client.prefs.client_fps
+ else
+ client.fps = 0 // Results in using the server FPS
+
next_move = 1
disconnect_time = null //clear the disconnect time
sight |= SEE_SELF
diff --git a/code/modules/mob/mob_planes.dm b/code/modules/mob/mob_planes.dm
index 8ffc15bc9f..9d252f762a 100644
--- a/code/modules/mob/mob_planes.dm
+++ b/code/modules/mob/mob_planes.dm
@@ -31,9 +31,6 @@
plane_masters[VIS_ADMIN2] = new /obj/screen/plane_master{plane = PLANE_ADMIN2} //For admin use
plane_masters[VIS_ADMIN3] = new /obj/screen/plane_master{plane = PLANE_ADMIN3} //For admin use
- plane_masters[VIS_D_COLORBLIND] = new /obj/screen/plane_master/colorblindness //Colorblindness (affects world)
- plane_masters[VIS_D_COLORBLINDI]= new /obj/screen/plane_master/colorblindness/items //Colorblindness (items in HUD, subplane of above, don't toggle)
-
plane_masters[VIS_MESONS] = new /obj/screen/plane_master{plane = PLANE_MESONS} //Meson-specific things like open ceilings.
..()
@@ -151,56 +148,3 @@
/obj/screen/plane_master/ghosts
plane = PLANE_GHOSTS
desired_alpha = 127 //When enabled, they're like half-transparent
-
-//'Normal'ness v v v
-//Various types of colorblindness R2R R2G R2B G2R G2G G2B B2R B2G B2B
-#define MATRIX_Monochromia list(0.33, 0.33, 0.33, 0.59, 0.59, 0.59, 0.11, 0.11, 0.11)
-#define MATRIX_Protanopia list(0.57, 0.43, 0, 0.56, 0.44, 0, 0, 0.24, 0.76)
-#define MATRIX_Protanomaly list(0.82, 0.18, 0, 0.33, 0.67, 0, 0, 0.13, 0.88)
-#define MATRIX_Deuteranopia list(0.63, 0.38, 0, 0.70, 0.30, 0, 0, 0.30, 0.70)
-#define MATRIX_Deuteranomaly list(0.80, 0.20, 0, 0.26, 0.74, 0, 0, 0.14, 0.86)
-#define MATRIX_Tritanopia list(0.95, 0.05, 0, 0, 0.43, 0.57, 0, 0.48, 0.53)
-#define MATRIX_Tritanomaly list(0.97, 0.03, 0, 0, 0.73, 0.27, 0, 0.18, 0.82)
-#define MATRIX_Achromatopsia list(0.30, 0.59, 0.11, 0.30, 0.59, 0.11, 0.30, 0.59, 0.11)
-#define MATRIX_Achromatomaly list(0.62, 0.32, 0.06, 0.16, 0.78, 0.06, 0.16, 0.32, 0.52)
-#define MATRIX_Vulp_Colorblind list(0.50, 0.40, 0.10, 0.50, 0.40, 0.10, 0, 0.20, 0.80)
-#define MATRIX_Taj_Colorblind list(0.40, 0.20, 0.40, 0.40, 0.60, 0, 0.20, 0.20, 0.60)
-
-/////////////////
-//Colorblindness uses special color shenanigans
-/obj/screen/plane_master/colorblindness
- plane = PLANE_WORLD //Affects the main game world
- color = MATRIX_Monochromia
- alpha = 255 //Starts out nice and opaque
- invisibility = 101 //Can't see it usually
- mouse_opacity = 1 //Don't make entire world not visible pls
- invis_toggle = TRUE
- sub_planes = list(VIS_D_COLORBLINDI)
- var/list/varieties = list(
- "Monochromia" = MATRIX_Monochromia,
- "Protanopia" = MATRIX_Protanopia,
- "Protanomaly" = MATRIX_Protanomaly,
- "Deuteranopia" = MATRIX_Deuteranopia,
- "Deuteranomaly" = MATRIX_Deuteranomaly,
- "Tritanopia" = MATRIX_Tritanopia,
- "Tritanomaly" = MATRIX_Tritanomaly,
- "Achromatopsia" = MATRIX_Achromatopsia,
- "Achromatomaly" = MATRIX_Achromatomaly,
- "Paradise Vulp" = MATRIX_Vulp_Colorblind,
- "Paradise Taj" = MATRIX_Taj_Colorblind
- )
-
-/obj/screen/plane_master/colorblindness/alter_plane_values(var/variety = null)
- var/new_matrix = varieties[variety]
- if(!new_matrix) return
-
- color = new_matrix
-
-/obj/screen/plane_master/colorblindness/proc/debug_variety()
- var/choice = input(usr,"Pick a type of colorblindness","Which?") as null|anything in varieties
- if(choice)
- color = varieties[choice]
-
-/obj/screen/plane_master/colorblindness/items
- plane = PLANE_PLAYER_HUD_ITEMS
- sub_planes = null
diff --git a/code/modules/mob/say_vr.dm b/code/modules/mob/say_vr.dm
index f38c20bb82..0608b26cce 100644
--- a/code/modules/mob/say_vr.dm
+++ b/code/modules/mob/say_vr.dm
@@ -42,6 +42,8 @@
return
if (message)
+ message = say_emphasis(message)
+
var/list/vis = get_mobs_and_objs_in_view_fast(get_turf(src),1,2) //Turf, Range, and type 2 is emote
var/list/vis_mobs = vis["mobs"]
var/list/vis_objs = vis["objs"]
diff --git a/code/modules/nifsoft/software/13_soulcatcher.dm b/code/modules/nifsoft/software/13_soulcatcher.dm
index 672710a07c..9d2be6bdd2 100644
--- a/code/modules/nifsoft/software/13_soulcatcher.dm
+++ b/code/modules/nifsoft/software/13_soulcatcher.dm
@@ -356,12 +356,10 @@
return ..(direction)
/mob/living/carbon/brain/caught_soul/say(var/message)
- if(parent_mob) return ..()
if(silent) return FALSE
soulcatcher.say_into(message,src,eyeobj)
/mob/living/carbon/brain/caught_soul/emote(var/act,var/m_type=1,var/message = null)
- if(parent_mob) return ..()
if(silent) return FALSE
if (act == "me")
if(silent)
diff --git a/code/modules/organs/robolimbs.dm b/code/modules/organs/robolimbs.dm
index d10ed6e755..92e102d921 100644
--- a/code/modules/organs/robolimbs.dm
+++ b/code/modules/organs/robolimbs.dm
@@ -42,7 +42,7 @@ var/const/standard_monitor_styles = "blank=ipc_blank;\
var/lifelike // If set, appears organic.
var/skin_tone // If set, applies skin tone rather than part color
var/blood_color = "#030303"
- var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN) //VOREStation Edit
+ var/list/species_cannot_use = list(SPECIES_TESHARI, SPECIES_PROMETHEAN, SPECIES_XENOCHIMERA) //VOREStation Edit
var/list/monitor_styles //If empty, the model of limbs offers a head compatible with monitors.
var/parts = BP_ALL //Defines what parts said brand can replace on a body.
var/health_hud_intensity = 1 // Intensity modifier for the health GUI indicator.
diff --git a/code/modules/reagents/Chemistry-Machinery.dm b/code/modules/reagents/Chemistry-Machinery.dm
index 3587e2f36a..60179e895f 100644
--- a/code/modules/reagents/Chemistry-Machinery.dm
+++ b/code/modules/reagents/Chemistry-Machinery.dm
@@ -327,6 +327,12 @@
if(default_deconstruction_crowbar(user, O))
return
+ //vorestation edit start - for solargrubs
+ if (istype(O, /obj/item/device/multitool))
+ return ..()
+ //vorestation edit end
+
+
if (istype(O,/obj/item/weapon/reagent_containers/glass) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/glass2) || \
istype(O,/obj/item/weapon/reagent_containers/food/drinks/shaker))
diff --git a/code/modules/reagents/Chemistry-Recipes_vr.dm b/code/modules/reagents/Chemistry-Recipes_vr.dm
index fe8731a0a1..58f49f3fc7 100644
--- a/code/modules/reagents/Chemistry-Recipes_vr.dm
+++ b/code/modules/reagents/Chemistry-Recipes_vr.dm
@@ -56,7 +56,7 @@
/datum/chemical_reaction/xenolazarus/on_reaction(var/datum/reagents/holder, var/created_volume) //literally all this does is mash the regenerate button
if(ishuman(holder.my_atom))
var/mob/living/carbon/human/H = holder.my_atom
- if(H.stat == DEAD && (/mob/living/carbon/human/proc/begin_reconstitute_form in H.verbs)) //no magical regen for non-regenners, and can't force the reaction on live ones
+ if(H.stat == DEAD && (/mob/living/carbon/human/proc/reconstitute_form in H.verbs)) //no magical regen for non-regenners, and can't force the reaction on live ones
if(H.hasnutriment()) // make sure it actually has the conditions to revive
if(!H.reviving) // if it's not reviving, start doing so
H.visible_message("[H] shudders briefly, then relaxes, faint movements stirring within.")
@@ -320,7 +320,8 @@
var/mob_path = /mob/living/simple_animal
var/blocked = list(
/mob/living/simple_animal/hostile/mimic,
- /mob/living/simple_animal/hostile/alien/queen
+ /mob/living/simple_animal/hostile/alien/queen,
+ /mob/living/simple_animal/shadekin
)//exclusion list for things you don't want the reaction to create.
var/list/voremobs = typesof(mob_path) - mob_path - blocked // list of possible hostile mobs
diff --git a/code/modules/resleeving/infocore_records.dm b/code/modules/resleeving/infocore_records.dm
index caa1e61540..db9bbfa8ea 100644
--- a/code/modules/resleeving/infocore_records.dm
+++ b/code/modules/resleeving/infocore_records.dm
@@ -76,6 +76,7 @@
var/body_oocnotes
var/list/limb_data = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO)
var/list/organ_data = list(O_HEART, O_EYES, O_LUNGS, O_BRAIN)
+ var/list/genetic_modifiers = list()
var/toocomplex
var/sizemult
var/weight
@@ -174,6 +175,12 @@
//Just set the data to this. 0:normal, 1:assisted, 2:mechanical, 3:digital
organ_data[org] = I.robotic
+ //Genetic modifiers
+ for(var/modifier in M.modifiers)
+ var/datum/modifier/mod = modifier
+ if(mod.flags & MODIFIER_GENETIC)
+ genetic_modifiers.Add(mod.type)
+
if(add_to_db)
SStranscore.add_body(src)
@@ -204,6 +211,7 @@
src.body_oocnotes = orig.body_oocnotes
src.limb_data = orig.limb_data.Copy()
src.organ_data = orig.organ_data.Copy()
+ src.genetic_modifiers = orig.genetic_modifiers.Copy()
src.toocomplex = orig.toocomplex
src.sizemult = orig.sizemult
src.aflags = orig.aflags
diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm
index 08bdc863cd..ced1dcc634 100644
--- a/code/modules/resleeving/machines.dm
+++ b/code/modules/resleeving/machines.dm
@@ -69,6 +69,10 @@
H.dna = R.dna.Clone()
H.original_player = current_project.ckey
+ //Apply genetic modifiers
+ for(var/modifier_type in R.genetic_modifiers)
+ H.add_modifier(modifier_type)
+
//Apply damage
H.adjustCloneLoss((H.getMaxHealth() - config.health_threshold_dead)*0.75)
H.Paralyse(4)
diff --git a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
index 107af3d080..0b2487a2a7 100644
--- a/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
+++ b/code/modules/vore/appearance/sprite_accessories_taur_vr.dm
@@ -105,6 +105,8 @@
do_colouration = 1 // Yes color, using tail color
color_blend_mode = ICON_MULTIPLY // The sprites for taurs are designed for ICON_MULTIPLY
+ var/icon/suit_sprites = null //File for suit sprites, if any.
+
//Could do nested lists but it started becoming a nightmare. It'd be more fun for lookups of a_intent and m_intent, but then subtypes need to
//duplicate all the messages, and it starts getting awkward. These are singletons, anyway!
@@ -142,6 +144,7 @@
/datum/sprite_accessory/tail/taur/wolf
name = "Wolf (Taur)"
icon_state = "wolf_s"
+ suit_sprites = 'icons/mob/taursuits_wolf_vr.dmi'
/datum/sprite_accessory/tail/taur/wolf/wolf_2c
name = "Wolf dual-color (Taur)"
@@ -156,6 +159,7 @@
/datum/sprite_accessory/tail/taur/naga
name = "Naga (Taur)"
icon_state = "naga_s"
+ suit_sprites = 'icons/mob/taursuits_naga_vr.dmi'
msg_owner_help_walk = "You carefully slither around %prey."
msg_prey_help_walk = "%owner's huge tail slithers past beside you!"
@@ -192,6 +196,7 @@
/datum/sprite_accessory/tail/taur/horse
name = "Horse (Taur)"
icon_state = "horse_s"
+ suit_sprites = 'icons/mob/taursuits_horse_vr.dmi'
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -216,6 +221,7 @@
/datum/sprite_accessory/tail/taur/cow
name = "Cow (Taur)"
icon_state = "cow_s"
+ suit_sprites = 'icons/mob/taursuits_cow_vr.dmi'
msg_owner_disarm_run = "You quickly push %prey to the ground with your hoof!"
msg_prey_disarm_run = "%owner pushes you down to the ground with their hoof!"
@@ -255,6 +261,7 @@
/datum/sprite_accessory/tail/taur/lizard
name = "Lizard (Taur)"
icon_state = "lizard_s"
+ suit_sprites = 'icons/mob/taursuits_lizard_vr.dmi'
/datum/sprite_accessory/tail/taur/lizard/lizard_2c
name = "Lizard dual-color (Taur)"
diff --git a/code/modules/vore/eating/belly_obj_vr.dm b/code/modules/vore/eating/belly_obj_vr.dm
index 0d4c9705f9..4b1d8ef0a5 100644
--- a/code/modules/vore/eating/belly_obj_vr.dm
+++ b/code/modules/vore/eating/belly_obj_vr.dm
@@ -33,6 +33,7 @@
var/transferlocation // Location that the prey is released if they struggle and get dropped off.
var/release_sound = TRUE // Boolean for now, maybe replace with something else later
var/mode_flags = 0 // Stripping, numbing, etc.
+ var/cont_flavor = "Generic" // Selected contamination mode.
//I don't think we've ever altered these lists. making them static until someone actually overrides them somewhere.
//Actual full digest modes
@@ -41,7 +42,7 @@
var/tmp/static/list/mode_flag_list = list("Numbing" = DM_FLAG_NUMBING, "Itemweak" = DM_FLAG_ITEMWEAK, "Stripping" = DM_FLAG_STRIPPING)
//Transformation modes
var/tmp/static/list/transform_modes = list(DM_TRANSFORM_MALE,DM_TRANSFORM_FEMALE,DM_TRANSFORM_KEEP_GENDER,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR,DM_TRANSFORM_CHANGE_SPECIES_AND_TAUR_EGG,DM_TRANSFORM_REPLICA,DM_TRANSFORM_REPLICA_EGG,DM_TRANSFORM_KEEP_GENDER_EGG,DM_TRANSFORM_MALE_EGG,DM_TRANSFORM_FEMALE_EGG, DM_EGG)
-
+
//List of slots that stripping handles strips
var/tmp/static/list/slots = list(slot_back,slot_handcuffed,slot_l_store,slot_r_store,slot_wear_mask,slot_l_hand,slot_r_hand,slot_wear_id,slot_glasses,slot_gloves,slot_head,slot_shoes,slot_belt,slot_wear_suit,slot_w_uniform,slot_s_store,slot_l_ear,slot_r_ear)
@@ -136,7 +137,8 @@
"digest_messages_prey",
"examine_messages",
"emote_lists",
- "mode_flags"
+ "mode_flags",
+ "cont_flavor"
)
/obj/belly/New(var/newloc)
@@ -371,7 +373,7 @@
var/obj/item/I = M.get_equipped_item(slot = slot)
if(I)
M.unEquip(I,force = TRUE)
- I.gurgle_contaminate(contents, owner) //We do an initial contamination pass to get stuff like IDs wet.
+ I.gurgle_contaminate(contents, cont_flavor) //We do an initial contamination pass to get stuff like IDs wet.
if(mode_flags & DM_FLAG_ITEMWEAK)
items_preserved |= I
@@ -576,6 +578,7 @@
if(!(content in src) || !istype(target))
return
content.forceMove(target)
+ items_preserved -= content
if(!silent && target.vore_sound && !recent_sound)
var/soundfile = vore_sounds[target.vore_sound]
if(soundfile)
@@ -611,6 +614,7 @@
dupe.bulge_size = bulge_size
dupe.shrink_grow_size = shrink_grow_size
dupe.mode_flags = mode_flags
+ dupe.cont_flavor = cont_flavor
//// Object-holding variables
//struggle_messages_outside - strings
diff --git a/code/modules/vore/eating/bellymodes_vr.dm b/code/modules/vore/eating/bellymodes_vr.dm
index 1dff971638..39219aa1ad 100644
--- a/code/modules/vore/eating/bellymodes_vr.dm
+++ b/code/modules/vore/eating/bellymodes_vr.dm
@@ -38,8 +38,9 @@
if(isitem(A) && !did_an_item)
var/obj/item/I = A
if(mode_flags & DM_FLAG_ITEMWEAK)
- I.gurgle_contaminate(contents, owner)
+ I.gurgle_contaminate(contents, cont_flavor)
items_preserved |= I
+ to_update = TRUE
else
digest_item(I)
to_update = TRUE
@@ -52,11 +53,11 @@
if(L.absorbed)
L.Weaken(5)
-
+
//Handle 'human'
if(ishuman(L))
var/mob/living/carbon/human/H = L
-
+
//Numbing flag
if(mode_flags & DM_FLAG_NUMBING)
if(H.bloodstr.get_reagent_amount("numbenzyme") < 2)
@@ -69,7 +70,7 @@
if(I)
H.unEquip(I,force = TRUE)
if(mode_flags & DM_FLAG_ITEMWEAK)
- I.gurgle_contaminate(contents, owner)
+ I.gurgle_contaminate(contents, cont_flavor)
items_preserved |= I
else
digest_item(I)
@@ -96,6 +97,7 @@
if(M.stat == DEAD)
var/digest_alert_owner = pick(digest_messages_owner)
var/digest_alert_prey = pick(digest_messages_prey)
+ var/compensation = M.getOxyLoss() //How much of the prey's damage was caused by passive crit oxyloss to compensate the lost nutrition.
//Replace placeholder vars
digest_alert_owner = replacetext(digest_alert_owner,"%pred",owner)
@@ -113,7 +115,14 @@
play_sound = pick(death_sounds)
digestion_death(M)
owner.update_icons()
+ if(compensation > 0)
+ if(isrobot(owner))
+ var/mob/living/silicon/robot/R = owner
+ R.cell.charge += 25*compensation
+ else
+ owner.nutrition += 4.5*compensation
to_update = TRUE
+
continue
// Deal digestion damage (and feed the pred)
@@ -124,11 +133,12 @@
var/difference = owner.size_multiplier / M.size_multiplier
if(isrobot(owner))
var/mob/living/silicon/robot/R = owner
- R.cell.charge += 20*(digest_brute+digest_burn)
+ R.cell.charge += 25*(digest_brute+digest_burn)
if(offset) // If any different than default weight, multiply the % of offset.
- owner.nutrition += offset*(2*(digest_brute+digest_burn)/difference) // 9.5 nutrition per digestion tick if they're 130 pounds and it's same size. 10.2 per digestion tick if they're 140 and it's same size. Etc etc.
+ owner.nutrition += offset*(4.5*(digest_brute+digest_burn)/difference) //4.5 nutrition points per health point. Normal same size 100+100 health prey with average weight would give 900 points if the digestion was instant. With all the size/weight offset taxes plus over time oxyloss+hunger taxes deducted with non-instant digestion, this should be enough to not leave the pred starved.
else
- owner.nutrition += 2*(digest_brute+digest_burn)/difference
+ owner.nutrition += 4.5*(digest_brute+digest_burn)/difference
+
//////////////////////////// DM_ABSORB ////////////////////////////
else if(digest_mode == DM_ABSORB)
@@ -154,7 +164,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(M.absorbed && owner.nutrition >= 100)
M.absorbed = 0
to_chat(M,"You suddenly feel solid again ")
@@ -167,7 +177,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10)) //Less often than gurgles. People might leave this on forever.
play_sound = pick(digestion_sounds)
@@ -181,13 +191,13 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10)) //Infinite gurgles!
play_sound = pick(digestion_sounds)
if(M.size_multiplier > shrink_grow_size) //Shrink until smol.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick.
-
+
if(M.nutrition >= 100) //Absorbing bodymass results in nutrition if possible.
var/oldnutrition = (M.nutrition * 0.05)
M.nutrition = (M.nutrition * 0.95)
@@ -198,7 +208,7 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10))
play_sound = pick(digestion_sounds)
@@ -212,14 +222,14 @@
for (var/target in touchable_mobs)
var/mob/living/M = target
-
+
if(prob(10))
play_sound = pick(digestion_sounds)
if(M.size_multiplier > shrink_grow_size && owner.size_multiplier < 2) //Grow until either pred is large or prey is small.
owner.resize(owner.size_multiplier+0.01) //Grow by 1% per tick.
M.resize(M.size_multiplier-0.01) //Shrink by 1% per tick
-
+
if(M.nutrition >= 100)
var/oldnutrition = (M.nutrition * 0.05)
M.nutrition = (M.nutrition * 0.95)
@@ -227,7 +237,7 @@
///////////////////////////// DM_HEAL /////////////////////////////
else if(digest_mode == DM_HEAL)
-
+
if(prob(50)) //Wet heals! The secret is you can leave this on for gurgle noises for fun.
play_sound = pick(digestion_sounds)
@@ -260,5 +270,5 @@
M.updateVRPanel()
if(owner.client)
owner.updateVRPanel()
-
+
return SSBELLIES_PROCESSED
diff --git a/code/modules/vore/eating/contaminate_vr.dm b/code/modules/vore/eating/contaminate_vr.dm
index bf51ca9d59..92964b519b 100644
--- a/code/modules/vore/eating/contaminate_vr.dm
+++ b/code/modules/vore/eating/contaminate_vr.dm
@@ -5,20 +5,21 @@ var/image/gurgled_overlay = image('icons/effects/sludgeoverlay_vr.dmi')
var/cleanname
var/cleandesc
-/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null)
+/obj/item/proc/gurgle_contaminate(var/atom/movable/item_storage = null, var/cont_flavor = "Generic")
if(!can_gurgle())
return FALSE
if(!gurgled)
gurgled = TRUE
overlays += gurgled_overlay
- var/gurgleflavor = pick("soggy","soaked","dirty","nasty","slimy","drenched","sloppy","grimy","sludgy","stinky","mucky","stained","soiled","filthy","saucy","foul","icky","tarnished","unsanitary","messy","begrimed","cruddy","funky","disgusting","repulsive","noxious","gruesome","gross","putrid","yucky","tainted","putrescent","unsavory","smelly","smutty","acrid","pungent","unclean","contaminated","gunky","gooey","sticky","drippy","oozing","sloshed","digested","sopping","damp","gloppy","begraggled","churned")
+ var/list/pickfrom = cont_flavors[cont_flavor]
+ var/gurgleflavor = pick(pickfrom)
cleanname = src.name
cleandesc = src.desc
name = "[gurgleflavor] [cleanname]"
desc = "[cleandesc] It seems to be covered in ominously foul residue and needs a wash."
for(var/obj/item/O in contents)
- O.gurgle_contaminate(item_storage)
+ O.gurgle_contaminate(item_storage, cont_flavor)
return TRUE
/obj/item/proc/can_gurgle()
diff --git a/code/modules/vore/eating/vorepanel_vr.dm b/code/modules/vore/eating/vorepanel_vr.dm
index 31a9e7e476..b7ee064846 100644
--- a/code/modules/vore/eating/vorepanel_vr.dm
+++ b/code/modules/vore/eating/vorepanel_vr.dm
@@ -204,6 +204,9 @@
dat += " [english_list(flag_list)]"
else
dat += " None"
+ if(selected.mode_flags & DM_FLAG_ITEMWEAK)
+ dat += "
Contamination Mode:"
+ dat += "[selected.cont_flavor]"
//Belly verb
dat += "
Vore Verb:"
@@ -514,14 +517,14 @@
var/new_mode = input("Choose Mode (currently [selected.digest_mode])") as null|anything in menu_list
if(!new_mode)
return 0
-
+
if(new_mode == DM_TRANSFORM) //Snowflek submenu
var/list/tf_list = selected.transform_modes
var/new_tf_mode = input("Choose TF Mode (currently [selected.tf_mode])") as null|anything in tf_list
if(!new_tf_mode)
return 0
selected.tf_mode = new_tf_mode
-
+
selected.digest_mode = new_mode
selected.items_preserved.Cut() //Re-evaltuate all items in belly on belly-mode change
@@ -533,6 +536,13 @@
selected.mode_flags ^= selected.mode_flag_list[toggle_addon]
selected.items_preserved.Cut() //Re-evaltuate all items in belly on addon toggle
+ if(href_list["b_cont_flavor"])
+ var/list/menu_list = cont_flavors.Copy()
+ var/new_flavor = input("Choose Contamination Mode (currently [selected.cont_flavor])") as null|anything in menu_list
+ if(!new_flavor)
+ return 0
+ selected.cont_flavor = new_flavor
+
if(href_list["b_desc"])
var/new_desc = html_encode(input(usr,"Belly Description ([BELLIES_DESC_MAX] char limit):","New Description",selected.desc) as message|null)
diff --git a/code/modules/vore/fluffstuff/custom_clothes_vr.dm b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
index 539d9f2613..5dfb9bfec8 100644
--- a/code/modules/vore/fluffstuff/custom_clothes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_clothes_vr.dm
@@ -1313,18 +1313,13 @@ Departamental Swimsuits, for general use
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie
name = "Handmade Winter Suit"
desc = "A durable, but somewhat ragged lower portion of a snow suit fitted for a wolftaur."
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
+ icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "jessiecoat"
+ item_state = "jessiecoat"
/obj/item/clothing/suit/storage/hooded/wintercoat/jessie/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- if(icon_state == "jessiecoat")
- return ..()
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "jessiecoat"
- pixel_x = -16
return ..()
else
to_chat(H, "You need to have a wolf-taur half to wear this.")
@@ -1335,19 +1330,13 @@ Departamental Swimsuits, for general use
name = "Kat's Fox Taur Armor"
desc = "A set of security armor, light weight and easy to run in for a Taur, this item protects the \
entire body."
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
+ icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "katesuit"
item_state_slots = null
/obj/item/clothing/suit/armor/vest/wolftaur/kate/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(..())
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- if(icon_state == "katesuit")
- return ..()
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "katesuit"
- pixel_x = -16
return ..()
else
to_chat(H, "You need to have a wolf-taur half to wear this.")
@@ -1359,25 +1348,12 @@ Departamental Swimsuits, for general use
desc = "Taur engineering voidsuit. Recolored navy blue and white. Slightly tweaked as well to \
get close to having security voidsuit protection as possible with a slight reduction in movement \
speed to compensate for custom padding and armor Kateryna made herself."
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
+ icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "lilithsuit"
+ item_state = "lilithsuit"
species_restricted = null
armor = list(melee = 40, bullet = 20, laser = 20,energy = 5, bomb = 35, bio = 100, rad = 20)
-/obj/item/clothing/suit/space/void/engineering/kate/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..())
- if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- if(icon_state == "lilithsuit")
- return ..()
- icon_override = 'icons/mob/taursuits_vr.dmi'
- icon_state = "lilithsuit"
- pixel_x = -16
- return ..()
- else
- to_chat(H, "You need to have a wolf-taur half to wear this.")
- return 0
-
//samanthafyre:Kateryna Petrovitch
/obj/item/clothing/head/helmet/space/fluff/kate
name = "Kat's Navy Engineer Helmet"
@@ -1785,17 +1761,16 @@ Departamental Swimsuits, for general use
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 0, rad = 0)
desc = "A series of armor plates painted black, deployed from a back-mounted module. They fit smoothly over the unit's armor plates and projects a skintight bubble shield over the unit's uncovered parts. Faceplate and coolant unit not included."
species_restricted = null
- icon = 'icons/mob/taursuits_vr.dmi'
- icon_override = 'icons/mob/taursuits_vr.dmi'
+ icon = 'icons/mob/taursuits_lizard_vr.dmi'
icon_state = "hasd_suit"
item_state = "hasd_suit"
pixel_x = -16
mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
- if(..() && istype(H) && H.ckey == "silencedmp5a5" && istype(H.tail_style, /datum/sprite_accessory/tail/taur/lizard/synthlizard))
+ if(..() && istype(H) && H.ckey == "silencedmp5a5")
return 1
else
- H << "This suit is not designed for you."
+ to_chat(H,"This suit is not designed for you.")
return 0
//Zigfe:Zaoozaoo Xrimxuqmqixzix
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 72869a69b4..6749e54554 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -354,15 +354,13 @@
name = "KSS-8 security armor"
desc = "A set of armor made from pieces of many other armors. There are two orange holobadges on it, one on the chestplate, one on the steel flank plates. The holobadges appear to be russian in origin. 'Kosmicheskaya Stantsiya-8' is printed in faded white letters on one side, along the spine. It smells strongly of dog."
species_restricted = null //Species restricted since all it cares about is a taur half
- icon_override = 'icons/mob/taursuits_vr.dmi' //Needs to be this since it's 64*32
+ icon = 'icons/mob/taursuits_wolf_vr.dmi'
icon_state = "serdy_armor"
+ item_state = "serdy_armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS //It's a full body suit, minus hands and feet. Arms and legs should be protected, not just the torso. Retains normal security armor values still.
/obj/item/clothing/suit/armor/vest/wolftaur/serdy/mob_can_equip(var/mob/living/carbon/human/H, slot, disable_warning = 0)
if(istype(H) && istype(H.tail_style, /datum/sprite_accessory/tail/taur/wolf))
- icon_override = 'icons/mob/taursuits_vr.dmi' //Just in case
- icon_state = "serdy_armor" //Just in case
- pixel_x = -16
return ..()
else
to_chat(H, "You need to have a wolf-taur half to wear this.")
@@ -1976,6 +1974,26 @@
icon_state = "modkit"
from_helmet = /obj/item/clothing/head/helmet/space/void/security
- from_suit = /obj/item/clothing/suit/space/void/security/taur
+ from_suit = /obj/item/clothing/suit/space/void/security
to_helmet = /obj/item/clothing/head/helmet/space/void/security/hasd
- to_suit = /obj/item/clothing/suit/space/void/security/hasd
\ No newline at end of file
+ to_suit = /obj/item/clothing/suit/space/void/security/hasd
+
+//InterroLouis - Kai Highlands
+/obj/item/borg/upgrade/modkit/chassis_mod/kai
+ name = "kai chassis"
+ desc = "Makes your KA green. All the fun of having a more powerful KA without actually having a more powerful KA."
+ cost = 0
+ denied_type = /obj/item/borg/upgrade/modkit/chassis_mod
+ chassis_icon = "kineticgun_K"
+ chassis_name = "Kai-netic Accelerator"
+ var/chassis_desc = "A self recharging, ranged mining tool that does increased damage in low temperature. Capable of holding up to six slots worth of mod kits. It seems to have been painted an ugly green, and has a small image of a bird scratched crudely into the stock."
+ var/chassis_icon_file = 'icons/vore/custom_guns_vr.dmi'
+
+/obj/item/borg/upgrade/modkit/chassis_mod/kai/install(obj/item/weapon/gun/energy/kinetic_accelerator/KA, mob/user)
+ KA.desc = chassis_desc
+ KA.icon = chassis_icon_file
+ ..()
+/obj/item/borg/upgrade/modkit/chassis_mod/kai/uninstall(obj/item/weapon/gun/energy/kinetic_accelerator/KA)
+ KA.desc = initial(KA.desc)
+ KA.icon = initial(KA.icon)
+ ..()
\ No newline at end of file
diff --git a/code/world.dm b/code/world.dm
index 4cf2220863..82efff29a8 100644
--- a/code/world.dm
+++ b/code/world.dm
@@ -43,11 +43,11 @@ var/global/datum/global_init/init = new ()
world.log << "Map Loading Complete"
//logs
log_path += time2text(world.realtime, "YYYY/MM-Month/DD-Day/round-hh-mm-ss")
- diary = file("[log_path].log")
- href_logfile = file("[log_path]-hrefs.htm")
- error_log = file("[log_path]-error.log")
- debug_log = file("[log_path]-debug.log")
- debug_log << "[log_end]\n[log_end]\nStarting up. [time_stamp()][log_end]\n---------------------[log_end]"
+ diary = start_log("[log_path].log")
+ href_logfile = start_log("[log_path]-hrefs.htm")
+ error_log = start_log("[log_path]-error.log")
+ debug_log = start_log("[log_path]-debug.log")
+
changelog_hash = md5('html/changelog.html') //used for telling if the changelog has changed recently
if(byond_version < RECOMMENDED_VERSION)
@@ -59,8 +59,9 @@ var/global/datum/global_init/init = new ()
// dumb and hardcoded but I don't care~
config.server_name += " #[(world.port % 1000) / 100]"
- if(config && config.log_runtime)
- log = file("data/logs/runtime/[time2text(world.realtime,"YYYY-MM-DD-(hh-mm-ss)")]-runtime.log")
+ // TODO - Figure out what this is. Can you assign to world.log?
+ // if(config && config.log_runtime)
+ // log = file("data/logs/runtime/[time2text(world.realtime,"YYYY-MM-DD-(hh-mm-ss)")]-runtime.log")
callHook("startup")
//Emergency Fix
@@ -147,7 +148,7 @@ var/world_topic_spam_protect_ip = "0.0.0.0"
var/world_topic_spam_protect_time = world.timeofday
/world/Topic(T, addr, master, key)
- debug_log << "TOPIC: \"[T]\", from:[addr], master:[master], key:[key][log_end]"
+ log_topic("\"[T]\", from:[addr], master:[master], key:[key]")
if (T == "ping")
var/x = 1
@@ -447,7 +448,7 @@ var/world_topic_spam_protect_time = world.timeofday
var/query = queryparams["query"]
var/auth = queryparams["auth"]
log_debug("API: Request Received - from:[addr], master:[master], key:[key]")
- diary << "TOPIC: \"[T]\", from:[addr], master:[master], key:[key], auth:[auth] [log_end]"
+ log_topic("TOPIC: \"[T]\", from:[addr], master:[master], key:[key], auth:[auth]")
if(!isnull(config.authedservers[addr]))
var/datum/shippingservers/S = config.authedservers[addr]
@@ -504,6 +505,7 @@ var/world_topic_spam_protect_time = world.timeofday
if(config.server) //if you set a server location in config.txt, it sends you there instead of trying to reconnect to the same world address. -- NeoFite
C << link("byond://[config.server]")
+ shutdown_logging() // Past this point, no logging procs can be used, at risk of data loss.
..(reason)
/hook/startup/proc/loadMode()
diff --git a/config/alienwhitelist.txt b/config/alienwhitelist.txt
index 4b85716ea9..2b6dad6982 100644
--- a/config/alienwhitelist.txt
+++ b/config/alienwhitelist.txt
@@ -5,6 +5,7 @@ azmodan412 - Xenochimera
azmodan412 - Xenomorph Hybrid
bothnevarbackwards - Diona
cameron653 - Xenomorph Hybrid
+funnyman2003 - Xenochimera
hawkerthegreat - Vox
inuzari - Diona
jemli - Gutter
diff --git a/config/custom_items.txt b/config/custom_items.txt
index 5bb846a569..b22deca991 100644
--- a/config/custom_items.txt
+++ b/config/custom_items.txt
@@ -230,6 +230,12 @@ character_name: Alva Karlholm
item_path: /obj/item/weapon/storage/box/fluff/alva
}
+{
+ckey: interrolouis
+character_name: Kai Highlands
+/obj/item/borg/upgrade/modkit/chassis_mod/kai
+}
+
{
ckey: ivymoomoo
character_name: Ivy Baladeva
diff --git a/icons/mob/mask_vr.dmi b/icons/mob/mask_vr.dmi
index 3315852358..0d3c0479b2 100644
Binary files a/icons/mob/mask_vr.dmi and b/icons/mob/mask_vr.dmi differ
diff --git a/icons/mob/taursuits_cow_vr.dmi b/icons/mob/taursuits_cow_vr.dmi
new file mode 100644
index 0000000000..a369157df2
Binary files /dev/null and b/icons/mob/taursuits_cow_vr.dmi differ
diff --git a/icons/mob/taursuits_horse_vr.dmi b/icons/mob/taursuits_horse_vr.dmi
new file mode 100644
index 0000000000..7a67ec72a2
Binary files /dev/null and b/icons/mob/taursuits_horse_vr.dmi differ
diff --git a/icons/mob/taursuits_lizard_vr.dmi b/icons/mob/taursuits_lizard_vr.dmi
new file mode 100644
index 0000000000..67628994de
Binary files /dev/null and b/icons/mob/taursuits_lizard_vr.dmi differ
diff --git a/icons/mob/taursuits_naga_vr.dmi b/icons/mob/taursuits_naga_vr.dmi
new file mode 100644
index 0000000000..49cc236089
Binary files /dev/null and b/icons/mob/taursuits_naga_vr.dmi differ
diff --git a/icons/mob/taursuits_vr.dmi b/icons/mob/taursuits_vr.dmi
deleted file mode 100644
index a8e376bfcb..0000000000
Binary files a/icons/mob/taursuits_vr.dmi and /dev/null differ
diff --git a/icons/mob/taursuits_wolf_vr.dmi b/icons/mob/taursuits_wolf_vr.dmi
new file mode 100644
index 0000000000..d5099056b5
Binary files /dev/null and b/icons/mob/taursuits_wolf_vr.dmi differ
diff --git a/icons/mob/vore64x32.dmi b/icons/mob/vore64x32.dmi
index 8302072f35..1d73c742cb 100644
Binary files a/icons/mob/vore64x32.dmi and b/icons/mob/vore64x32.dmi differ
diff --git a/icons/obj/decals_vr.dmi b/icons/obj/decals_vr.dmi
index bacf45990c..6b05d6a003 100644
Binary files a/icons/obj/decals_vr.dmi and b/icons/obj/decals_vr.dmi differ
diff --git a/icons/virgoicon.png b/icons/virgoicon.png
new file mode 100644
index 0000000000..3b3b8e9a98
Binary files /dev/null and b/icons/virgoicon.png differ
diff --git a/icons/vore/custom_guns_vr.dmi b/icons/vore/custom_guns_vr.dmi
index dfd79ab451..c09ac65d22 100644
Binary files a/icons/vore/custom_guns_vr.dmi and b/icons/vore/custom_guns_vr.dmi differ
diff --git a/interface/skin.dmf b/interface/skin.dmf
index ea7d069105..3c5d690093 100644
--- a/interface/skin.dmf
+++ b/interface/skin.dmf
@@ -1815,7 +1815,7 @@ window "mainwindow"
right-click = false
saved-params = "pos;size;is-minimized;is-maximized"
on-size = ""
- title = "Space Station 13"
+ title = "VOREStation"
titlebar = true
statusbar = true
can-close = true
@@ -1825,7 +1825,7 @@ window "mainwindow"
is-minimized = false
is-maximized = true
can-scroll = none
- icon = 'icons\\ss13_64.png'
+ icon = 'icons\\virgoicon.png'
image = ""
image-mode = stretch
keep-aspect = false
diff --git a/maps/submaps/engine_submaps/engine_singulo.dmm b/maps/submaps/engine_submaps/engine_singulo.dmm
index 351a60bbb4..805e0d6396 100644
--- a/maps/submaps/engine_submaps/engine_singulo.dmm
+++ b/maps/submaps/engine_submaps/engine_singulo.dmm
@@ -1,170 +1,2616 @@
-"aa" = (/turf/template_noop,/area/template_noop)
-"ab" = (/turf/space,/area/space)
-"ac" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
-"ad" = (/obj/structure/lattice,/turf/space,/area/space)
-"ae" = (/turf/simulated/wall/r_wall,/area/engineering/engine_gas)
-"af" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room)
-"ag" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/engineering/engine_gas)
-"ah" = (/obj/machinery/field_generator,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact";},/turf/simulated/floor,/area/engineering/engine_gas)
-"ai" = (/obj/machinery/field_generator,/turf/simulated/floor,/area/engineering/engine_gas)
-"aj" = (/turf/simulated/floor/airless,/area/space)
-"ak" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless,/area/space)
-"al" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/space)
-"am" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless,/area/space)
-"an" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless,/area/space)
-"ao" = (/obj/structure/closet/emcloset,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eng_north_airlock"; pixel_x = 24; pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_north_pump"; tag_chamber_sensor = "eng_north_sensor"; tag_exterior_door = "eng_north_outer"; tag_interior_door = "eng_north_inner"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"ap" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map";},/turf/simulated/floor,/area/engineering/engine_gas)
-"aq" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/dispenser/phoron,/turf/simulated/floor,/area/engineering/engine_gas)
-"ar" = (/obj/machinery/power/emitter{anchored = 1; state = 1},/obj/structure/cable/cyan,/turf/simulated/floor/airless,/area/space)
-"as" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/rust/mono_rusted1,/turf/simulated/floor/airless,/area/space)
-"at" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_north_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(10,11,13)},/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_north_outer"; locked = 1; name = "Engine North Airlock Exterior"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"au" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_north_pump"},/obj/machinery/light/small,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_north_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"av" = (/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_north_inner"; locked = 1; name = "Engine North Airlock Interior"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"aw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_north_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 26; req_one_access = list(10,11)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact";},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ax" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/yellow/border{dir = 5},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ay" = (/obj/structure/cable/cyan{d1 = 0; d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -28},/turf/simulated/floor,/area/engineering/engine_gas)
-"az" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Power"; name_tag = "Engine Power"},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/engineering/engine_gas)
-"aA" = (/obj/machinery/camera/network/engine{dir = 1},/turf/simulated/floor,/area/engineering/engine_gas)
-"aB" = (/obj/machinery/camera/network/engine{dir = 8},/turf/space,/area/space)
-"aC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room)
-"aD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aE" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aF" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/engineering/engine_gas)
-"aG" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor,/area/engineering/engine_room)
-"aH" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/engine_room)
-"aI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aK" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/yellow/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aL" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aM" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light_switch{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0;},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aN" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aO" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/yellow/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aP" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_room)
-"aQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aR" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aS" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals_central5{icon_state = "steel_decals_central5"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aV" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aW" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aX" = (/obj/machinery/field_generator{anchored = 1; state = 1},/turf/simulated/floor/airless,/area/space)
-"aY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aZ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; dir = 1; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -4; pixel_y = -24; req_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ba" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bb" = (/obj/machinery/camera/network/engine{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/borderfloor/corner2,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bc" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"be" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bf" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/submap/pa_room)
-"bg" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor,/area/submap/pa_room)
-"bh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/submap/pa_room)
-"bi" = (/turf/simulated/wall/r_wall,/area/submap/pa_room)
-"bj" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bl" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bm" = (/turf/simulated/wall/r_wall,/area/template_noop)
-"bn" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/turf/simulated/floor,/area/submap/pa_room)
-"bo" = (/obj/effect/floor_decal/techfloor/orange{dir = 5},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bp" = (/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bq" = (/obj/effect/floor_decal/steeldecal,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"br" = (/obj/machinery/light{dir = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "EngineRadiatorViewport"; name = "Viewport Blast Doors"; pixel_x = -4; pixel_y = 24; req_access = list(10)},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bs" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bt" = (/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bu" = (/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_x = 5; pixel_y = 5},/obj/item/weapon/book/manual/engineering_singularity_safety,/turf/template_noop,/area/template_noop)
-"bv" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/engineering/taur,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/turf/template_noop,/area/template_noop)
-"bw" = (/obj/effect/floor_decal/techfloor/orange/corner{icon_state = "techfloororange_corners"; dir = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bx" = (/obj/structure/particle_accelerator/particle_emitter/left{dir = 8},/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"by" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bz" = (/obj/machinery/particle_accelerator/control_box,/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bA" = (/obj/effect/floor_decal/techfloor/orange{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bC" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/submap/pa_room)
-"bD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bE" = (/obj/machinery/the_singularitygen,/turf/simulated/floor/airless,/area/space)
-"bF" = (/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bG" = (/obj/structure/particle_accelerator/particle_emitter/center{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bH" = (/obj/structure/particle_accelerator/power_box{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bI" = (/obj/structure/particle_accelerator/fuel_chamber{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bJ" = (/obj/structure/particle_accelerator/end_cap{dir = 8},/obj/effect/floor_decal/techfloor/orange{dir = 4},/obj/effect/floor_decal/techfloor/hole{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bK" = (/obj/machinery/camera/network/engine{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bL" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/submap/pa_room)
-"bM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bN" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bO" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -6; pixel_y = 7; req_access = list(10)},/obj/machinery/button/remote/blast_door{name = "Engine Monitoring Room Blast Doors"; desc = "A remote control-switch for the engine control room blast doors."; pixel_x = 5; pixel_y = 7; req_access = list(10); id = "EngineBlast"},/turf/template_noop,/area/template_noop)
-"bP" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/techfloor/orange/corner,/turf/simulated/floor,/area/submap/pa_room)
-"bQ" = (/obj/effect/floor_decal/techfloor/orange/corner,/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bR" = (/obj/structure/particle_accelerator/particle_emitter/right{dir = 8},/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bS" = (/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bT" = (/obj/effect/floor_decal/techfloor/orange,/obj/effect/floor_decal/techfloor/hole,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bU" = (/obj/effect/floor_decal/techfloor/orange{icon_state = "techfloororange_edges"; dir = 6},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bW" = (/obj/effect/floor_decal/techfloor/orange{icon_state = "techfloororange_edges"; dir = 6},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bX" = (/obj/machinery/light,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; dir = 1; id = "EngineRadiatorViewport"; name = "Viewport Blast Doors"; pixel_x = -4; pixel_y = -24; req_access = list(10)},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bY" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/effect/floor_decal/steeldecal/steel_decals8,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bZ" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced,/turf/simulated/floor,/area/submap/pa_room)
-"ca" = (/obj/machinery/door/airlock/glass_engineering,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"cb" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cc" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -4; pixel_y = 24; req_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cd" = (/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ce" = (/obj/machinery/camera/network/engine,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ch" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"ci" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals_central5{icon_state = "steel_decals_central5"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ck" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cl" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cm" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/engine_room)
-"cn" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/yellow/bordercorner,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"co" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cp" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cq" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cr" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cs" = (/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 1},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless,/area/space)
-"ct" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_south_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 26; req_one_access = list(10,11,13)},/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_south_outer"; locked = 1; name = "Engine South Airlock Exterior"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cu" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_south_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_south_sensor"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cv" = (/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_south_inner"; locked = 1; name = "Engine South Airlock Interior"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_south_airlock"; name = "interior access button"; pixel_x = 8; pixel_y = -26; req_one_access = list(10,11)},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cw" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact";},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/yellow/bordercorner2,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cx" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cy" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/space)
-"cz" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/space)
-"cA" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/rust,/turf/simulated/floor/airless,/area/space)
-"cB" = (/obj/structure/closet/emcloset,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eng_south_airlock"; pixel_x = 24; pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_south_pump"; tag_chamber_sensor = "eng_south_sensor"; tag_exterior_door = "eng_south_outer"; tag_interior_door = "eng_south_inner"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cC" = (/turf/simulated/wall/r_wall,/area/space)
-"cD" = (/obj/structure/cable/cyan,/obj/machinery/power/emitter{anchored = 1; state = 1},/turf/simulated/floor/airless,/area/space)
-"cE" = (/obj/item/weapon/weldingtool,/turf/space,/area/space)
-"cF" = (/obj/structure/lattice,/obj/item/clothing/head/welding,/turf/space,/area/space)
-"cG" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/obj/item/stack/cable_coil/random,/turf/simulated/floor,/area/engineering/engine_room)
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/space,
+/area/space)
+"ac" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/space,
+/area/space)
+"ad" = (
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"ae" = (
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_gas)
+"af" = (
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_room)
+"ag" = (
+/obj/machinery/atmospherics/portables_connector{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister/air/airlock,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ah" = (
+/obj/machinery/field_generator,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ai" = (
+/obj/machinery/field_generator,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aj" = (
+/turf/simulated/floor/airless,
+/area/space)
+"ak" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"al" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"am" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"an" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"ao" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
+ frequency = 1379;
+ id_tag = "eng_north_airlock";
+ pixel_x = 24;
+ pixel_y = 0;
+ req_one_access = list(10,11);
+ tag_airpump = "eng_north_pump";
+ tag_chamber_sensor = "eng_north_sensor";
+ tag_exterior_door = "eng_north_outer";
+ tag_interior_door = "eng_north_inner"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"ap" = (
+/obj/machinery/portable_atmospherics/canister/phoron,
+/obj/machinery/atmospherics/pipe/manifold/hidden{
+ dir = 4;
+ icon_state = "map";
+
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aq" = (
+/obj/machinery/alarm{
+ dir = 8;
+ icon_state = "alarm0";
+ pixel_x = 24
+ },
+/obj/structure/dispenser/phoron,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ar" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ state = 1
+ },
+/obj/structure/cable/cyan,
+/turf/simulated/floor/airless,
+/area/space)
+"as" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/rust/mono_rusted1,
+/turf/simulated/floor/airless,
+/area/space)
+"at" = (
+/obj/machinery/access_button{
+ command = "cycle_exterior";
+ frequency = 1379;
+ master_tag = "eng_north_airlock";
+ name = "exterior access button";
+ pixel_x = -5;
+ pixel_y = -26;
+ req_one_access = list(10,11,13)
+ },
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_north_outer";
+ locked = 1;
+ name = "Engine North Airlock Exterior"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"au" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1379;
+ id_tag = "eng_north_pump"
+ },
+/obj/machinery/light/small,
+/obj/machinery/airlock_sensor{
+ frequency = 1379;
+ id_tag = "eng_north_sensor";
+ pixel_x = 0;
+ pixel_y = -25
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"av" = (
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_north_inner";
+ locked = 1;
+ name = "Engine North Airlock Interior"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"aw" = (
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1379;
+ master_tag = "eng_north_airlock";
+ name = "interior access button";
+ pixel_x = -28;
+ pixel_y = 26;
+ req_one_access = list(10,11)
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 0;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ax" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ay" = (
+/obj/structure/cable/cyan{
+ d1 = 0;
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "west bump";
+ pixel_x = -28
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"az" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/power/sensor{
+ name = "Powernet Sensor - Engine Power";
+ name_tag = "Engine Power"
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aA" = (
+/obj/machinery/camera/network/engine{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aB" = (
+/obj/machinery/camera/network/engine{
+ dir = 8
+ },
+/turf/space,
+/area/space)
+"aC" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'RADIOACTIVE AREA'";
+ icon_state = "radiation";
+ name = "RADIOACTIVE AREA";
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_room)
+"aD" = (
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/industrial/warning/corner{
+ icon_state = "warningcorner";
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/warning/corner{
+ icon_state = "warningcorner";
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aE" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aF" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aG" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aH" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aI" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aJ" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aK" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aL" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aM" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ icon_state = "borderfloor";
+ pixel_y = 0;
+
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aN" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aO" = (
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 5
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aP" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aQ" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aR" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 5;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aS" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aT" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aU" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals_central5{
+ icon_state = "steel_decals_central5";
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aV" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden{
+ dir = 4;
+ icon_state = "map";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aW" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aX" = (
+/obj/machinery/field_generator{
+ anchored = 1;
+ state = 1
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"aY" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aZ" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ dir = 1;
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -4;
+ pixel_y = -24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ba" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bb" = (
+/obj/machinery/camera/network/engine{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/borderfloor/corner2,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bc" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bd" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"be" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bf" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bg" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bh" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'RADIOACTIVE AREA'";
+ icon_state = "radiation";
+ name = "RADIOACTIVE AREA";
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/wall/r_wall,
+/area/submap/pa_room)
+"bi" = (
+/turf/simulated/wall/r_wall,
+/area/submap/pa_room)
+"bj" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/glass_engineering,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bk" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bl" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bm" = (
+/turf/simulated/wall/r_wall,
+/area/template_noop)
+"bn" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bo" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bp" = (
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bq" = (
+/obj/effect/floor_decal/steeldecal,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"br" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "EngineRadiatorViewport";
+ name = "Viewport Blast Doors";
+ pixel_x = -4;
+ pixel_y = 24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bs" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bt" = (
+/obj/structure/cable/cyan{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bu" = (
+/obj/item/weapon/book/manual/engineering_particle_accelerator{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/weapon/book/manual/engineering_singularity_safety,
+/turf/template_noop,
+/area/template_noop)
+"bv" = (
+/obj/structure/table/rack{
+ dir = 8;
+ layer = 2.6
+ },
+/obj/item/clothing/shoes/magboots,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/head/helmet/space/void/engineering,
+/obj/item/clothing/shoes/magboots,
+/obj/item/clothing/suit/space/void/engineering,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/head/helmet/space/void/engineering,
+/turf/template_noop,
+/area/template_noop)
+"bw" = (
+/obj/effect/floor_decal/techfloor/orange/corner{
+ icon_state = "techfloororange_corners";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bx" = (
+/obj/structure/particle_accelerator/particle_emitter/left{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"by" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bz" = (
+/obj/machinery/particle_accelerator/control_box,
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bA" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bB" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bC" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bD" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bE" = (
+/obj/machinery/the_singularitygen,
+/turf/simulated/floor/airless,
+/area/space)
+"bF" = (
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bG" = (
+/obj/structure/particle_accelerator/particle_emitter/center{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bH" = (
+/obj/structure/particle_accelerator/power_box{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bI" = (
+/obj/structure/particle_accelerator/fuel_chamber{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bJ" = (
+/obj/structure/particle_accelerator/end_cap{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 4
+ },
+/obj/effect/floor_decal/techfloor/hole{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bK" = (
+/obj/machinery/camera/network/engine{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bL" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bM" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bN" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bO" = (
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -6;
+ pixel_y = 7;
+ req_access = list(10)
+ },
+/obj/machinery/button/remote/blast_door{
+ name = "Engine Monitoring Room Blast Doors";
+ desc = "A remote control-switch for the engine control room blast doors.";
+ pixel_x = 5;
+ pixel_y = 7;
+ req_access = list(10);
+ id = "EngineBlast"
+ },
+/turf/template_noop,
+/area/template_noop)
+"bP" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/effect/floor_decal/techfloor/orange/corner,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bQ" = (
+/obj/effect/floor_decal/techfloor/orange/corner,
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bR" = (
+/obj/structure/particle_accelerator/particle_emitter/right{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bS" = (
+/obj/effect/floor_decal/techfloor/orange,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bT" = (
+/obj/effect/floor_decal/techfloor/orange,
+/obj/effect/floor_decal/techfloor/hole,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bU" = (
+/obj/effect/floor_decal/techfloor/orange{
+ icon_state = "techfloororange_edges";
+ dir = 6
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bV" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bW" = (
+/obj/effect/floor_decal/techfloor/orange{
+ icon_state = "techfloororange_edges";
+ dir = 6
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bX" = (
+/obj/machinery/light,
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ dir = 1;
+ id = "EngineRadiatorViewport";
+ name = "Viewport Blast Doors";
+ pixel_x = -4;
+ pixel_y = -24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bY" = (
+/obj/machinery/alarm{
+ dir = 8;
+ pixel_x = 25;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals8,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bZ" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"ca" = (
+/obj/machinery/door/airlock/glass_engineering,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"cb" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cc" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -4;
+ pixel_y = 24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cd" = (
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ce" = (
+/obj/machinery/camera/network/engine,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cf" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cg" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ch" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"ci" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cj" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals_central5{
+ icon_state = "steel_decals_central5";
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ck" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9;
+ pixel_y = 0
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 9;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cl" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cm" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/light/small,
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"cn" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/borderfloor/corner,
+/obj/effect/floor_decal/corner/yellow/bordercorner,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"co" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light,
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cp" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cq" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/alarm{
+ dir = 1;
+ icon_state = "alarm0";
+ pixel_y = -22
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cr" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 6
+ },
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cs" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ dir = 1;
+ state = 1
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"ct" = (
+/obj/machinery/access_button{
+ command = "cycle_exterior";
+ frequency = 1379;
+ master_tag = "eng_south_airlock";
+ name = "exterior access button";
+ pixel_x = -5;
+ pixel_y = 26;
+ req_one_access = list(10,11,13)
+ },
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_south_outer";
+ locked = 1;
+ name = "Engine South Airlock Exterior"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cu" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1379;
+ id_tag = "eng_south_pump"
+ },
+/obj/machinery/airlock_sensor{
+ frequency = 1379;
+ id_tag = "eng_south_sensor";
+ pixel_x = 0;
+ pixel_y = 25
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cv" = (
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_south_inner";
+ locked = 1;
+ name = "Engine South Airlock Interior"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1379;
+ master_tag = "eng_south_airlock";
+ name = "interior access button";
+ pixel_x = 8;
+ pixel_y = -26;
+ req_one_access = list(10,11)
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cw" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 0;
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 9;
+ icon_state = "intact";
+
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/obj/effect/floor_decal/borderfloor/corner2,
+/obj/effect/floor_decal/corner/yellow/bordercorner2,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cx" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cy" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cz" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cA" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/airless,
+/area/space)
+"cB" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
+ frequency = 1379;
+ id_tag = "eng_south_airlock";
+ pixel_x = 24;
+ pixel_y = 0;
+ req_one_access = list(10,11);
+ tag_airpump = "eng_south_pump";
+ tag_chamber_sensor = "eng_south_sensor";
+ tag_exterior_door = "eng_south_outer";
+ tag_interior_door = "eng_south_inner"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cC" = (
+/turf/simulated/wall/r_wall,
+/area/space)
+"cD" = (
+/obj/structure/cable/cyan,
+/obj/machinery/power/emitter{
+ anchored = 1;
+ state = 1
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cE" = (
+/obj/item/weapon/weldingtool,
+/turf/space,
+/area/space)
+"cF" = (
+/obj/structure/lattice,
+/obj/item/clothing/head/welding,
+/turf/space,
+/area/space)
+"cG" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/obj/item/stack/cable_coil/random,
+/turf/simulated/floor,
+/area/engineering/engine_room)
(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaabababababababababababababababababababababababababababaaaa
-aaacacacacacadacacacacacabababacacacacacacadacacacacacacaaaa
-aaacababababababababababababababababababababababababababaaaa
-aaacababababababababababababababababababababababababababaaaa
-aaadabababababababababababababababababababaeaeaeaeaeababaaaa
-aaacacacacacacacacacacacacacacacafafafababaeagahaiaeababaaaa
-aaacababajakalalalalalalalamalanafaoafafafaeagapaqaeababaaaa
-aaacabababarajajajajajajajcDadasatauavawaxaeayazaAaaaaaaaaaa
-aaacababababadabababababadababaBafafaCaDaEaeaeaFaeaaaaaaaaaa
-aaacabababcEadabababababadabababaGaHaIaJaKaLaMaNaOaaaaaaaaaa
-aaacababadadadadadadadadadadadabaGaPaQaRaSaTaUaVaWaaaaaaaaaa
-aaacadadadaXababababaXababaXcFabaGaPaYaZbabbbcbdbeaaaaaaaaaa
-aaacababadabababababadabababadbfbgbgbhbibjbibibkblbmbmaaaaaa
-aaacababadabababadadadabababadbnbobpbqbrbsbtbibkaEaabubvaaaa
-aaacababadaXadadajajajadababadbnbwbxbybzbAbBbCbDaEaaaaaaaaaa
-aaacababadababadajbEajadababadbnbFbGbHbIbJbKbLbMbNaaaabOaaaa
-aaacababadababadajajajadadaXadbPbQbRbSbTbUbVbCbDaEaaaaaaaaaa
-aaacababadabababadadadabababadbPbWbpbpbXbpbYbibkaEaaaaaaaaaa
-aaacababadabababadabababababadbZbgbgbhbicabibibkcbbmbmaaaaaa
-aaacadadadaXababaXababababaXadabaGaPcGcccdcecfcgbaaaaaaaaaaa
-aaacababadadadadadadadadadadadabaGaPchciaTaTcjckclaaaaaaaaaa
-aaacababababadabababababadabababaGcmaYaJcncocpcqcraaaaaaaaaa
-aaacababababadabababababadababaBafafaCaDaEafafafafaaaaaaaaaa
-aaacabababcsajajajajajajajcsadakctcucvcwcxafaaaaaaaaaaaaaaaa
-aaacabadajcyalalalalalalalczalcAafcBafafafafaaaaaaaaaaaaaaaa
-aaacadadcCcCcCcCcCcCcCcCcCcCcCcCafafaCaaaaaaaaaaaaaaaaaaaaaa
-aaacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+aa
+ab
+ac
+ac
+ac
+ad
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+aa
+"}
+(3,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+aa
+"}
+(4,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ad
+ad
+ab
+aa
+"}
+(5,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+aj
+ab
+ab
+ab
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ab
+aj
+cC
+ab
+aa
+"}
+(6,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ak
+ar
+ab
+cE
+ad
+aX
+ab
+ab
+aX
+ab
+ab
+ab
+ab
+aX
+ad
+ab
+ab
+cs
+cy
+cC
+ab
+aa
+"}
+(7,1,1) = {"
+aa
+aa
+ab
+ad
+ab
+ab
+ab
+ac
+al
+aj
+ad
+ad
+ad
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+ad
+ad
+ad
+aj
+al
+cC
+ab
+aa
+"}
+(8,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+ad
+ab
+ab
+ab
+ad
+ad
+ad
+ab
+ab
+ab
+ad
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(9,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+ad
+ab
+ab
+ad
+aj
+aj
+aj
+ad
+ad
+aX
+ad
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(10,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+ad
+ab
+ab
+ad
+aj
+bE
+aj
+ad
+ab
+ab
+ad
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(11,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+ad
+aX
+ad
+ad
+aj
+aj
+aj
+ad
+ab
+ab
+ad
+ab
+ab
+aj
+al
+cC
+aa
+aa
+"}
+(12,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+ad
+ab
+ab
+ab
+ad
+ad
+ad
+ab
+ab
+ab
+ad
+ab
+ab
+aj
+al
+cC
+aa
+aa
+"}
+(13,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+al
+aj
+ad
+ad
+ad
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ad
+ad
+ad
+aj
+al
+cC
+aa
+aa
+"}
+(14,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+am
+cD
+ab
+ab
+ad
+aX
+ab
+ab
+ab
+ab
+aX
+ab
+ab
+aX
+ad
+ab
+ab
+cs
+cz
+cC
+aa
+aa
+"}
+(15,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+al
+ad
+ab
+ab
+ad
+cF
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ad
+ab
+ab
+ad
+al
+cC
+aa
+aa
+"}
+(16,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+an
+as
+aB
+ab
+ab
+ab
+bf
+bn
+bn
+bn
+bP
+bP
+bZ
+ab
+ab
+ab
+aB
+ak
+cA
+cC
+aa
+aa
+"}
+(17,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+af
+at
+af
+aG
+aG
+aG
+bg
+bo
+bw
+bF
+bQ
+bW
+bg
+aG
+aG
+aG
+af
+ct
+af
+af
+aa
+aa
+"}
+(18,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+ao
+au
+af
+aH
+aP
+aP
+bg
+bp
+bx
+bG
+bR
+bp
+bg
+aP
+aP
+cm
+af
+cu
+cB
+af
+aa
+aa
+"}
+(19,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+af
+av
+aC
+aI
+aQ
+aY
+bh
+bq
+by
+bH
+bS
+bp
+bh
+cG
+ch
+aY
+aC
+cv
+af
+aC
+aa
+aa
+"}
+(20,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+af
+aw
+aD
+aJ
+aR
+aZ
+bi
+br
+bz
+bI
+bT
+bX
+bi
+cc
+ci
+aJ
+aD
+cw
+af
+aa
+aa
+aa
+"}
+(21,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+af
+ax
+aE
+aK
+aS
+ba
+bj
+bs
+bA
+bJ
+bU
+bp
+ca
+cd
+aT
+cn
+aE
+cx
+af
+aa
+aa
+aa
+"}
+(22,1,1) = {"
+aa
+aa
+ab
+ad
+ab
+ab
+ae
+ae
+ae
+ae
+ae
+aL
+aT
+bb
+bi
+bt
+bB
+bK
+bV
+bY
+bi
+ce
+aT
+co
+af
+af
+af
+aa
+aa
+aa
+"}
+(23,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ag
+ag
+ay
+ae
+aM
+aU
+bc
+bi
+bi
+bC
+bL
+bC
+bi
+bi
+cf
+cj
+cp
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(24,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ah
+ap
+az
+aF
+aN
+aV
+bd
+bk
+bk
+bD
+bM
+bD
+bk
+bk
+cg
+ck
+cq
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(25,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ai
+aq
+aA
+ae
+aO
+aW
+be
+bl
+aE
+aE
+bN
+aE
+aE
+cb
+ba
+cl
+cr
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(26,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ae
+ae
+aa
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(27,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+bm
+bu
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(28,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+bv
+aa
+bO
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(29,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(30,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
"}
diff --git a/maps/submaps/engine_submaps/engine_tesla.dmm b/maps/submaps/engine_submaps/engine_tesla.dmm
index 6921f0ea26..ea577bbf79 100644
--- a/maps/submaps/engine_submaps/engine_tesla.dmm
+++ b/maps/submaps/engine_submaps/engine_tesla.dmm
@@ -1,182 +1,2783 @@
-"aa" = (/turf/template_noop,/area/template_noop)
-"ab" = (/turf/space,/area/space)
-"ac" = (/obj/structure/lattice,/obj/structure/grille,/turf/space,/area/space)
-"ad" = (/obj/structure/lattice,/turf/space,/area/space)
-"ae" = (/turf/simulated/wall/r_wall,/area/engineering/engine_gas)
-"af" = (/turf/simulated/wall/r_wall,/area/engineering/engine_room)
-"ag" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor,/area/engineering/engine_gas)
-"ah" = (/obj/machinery/field_generator,/obj/machinery/light/small{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact";},/turf/simulated/floor,/area/engineering/engine_gas)
-"ai" = (/obj/machinery/field_generator,/turf/simulated/floor,/area/engineering/engine_gas)
-"aj" = (/turf/simulated/floor/airless,/area/space)
-"ak" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless,/area/space)
-"al" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/space)
-"am" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/airless,/area/space)
-"an" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless,/area/space)
-"ao" = (/obj/structure/closet/emcloset,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eng_north_airlock"; pixel_x = 24; pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_north_pump"; tag_chamber_sensor = "eng_north_sensor"; tag_exterior_door = "eng_north_outer"; tag_interior_door = "eng_north_inner"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"ap" = (/obj/machinery/portable_atmospherics/canister/phoron,/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map";},/turf/simulated/floor,/area/engineering/engine_gas)
-"aq" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/dispenser/phoron,/turf/simulated/floor,/area/engineering/engine_gas)
-"ar" = (/obj/structure/cable/cyan,/obj/machinery/power/emitter{anchored = 1; state = 1},/turf/simulated/floor/airless,/area/space)
-"as" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/rust/mono_rusted1,/turf/simulated/floor/airless,/area/space)
-"at" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_north_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = -26; req_one_access = list(10,11,13)},/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_north_outer"; locked = 1; name = "Engine North Airlock Exterior"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"au" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_north_pump"},/obj/machinery/light/small,/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_north_sensor"; pixel_x = 0; pixel_y = -25},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"av" = (/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_north_inner"; locked = 1; name = "Engine North Airlock Interior"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"aw" = (/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_north_airlock"; name = "interior access button"; pixel_x = -28; pixel_y = 26; req_one_access = list(10,11)},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = 32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact";},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 4},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ax" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/yellow/border{dir = 5},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ay" = (/obj/structure/cable/cyan{d1 = 0; d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 8; name = "west bump"; pixel_x = -28},/turf/simulated/floor,/area/engineering/engine_gas)
-"az" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Power"; name_tag = "Engine Power"},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/engineering/engine_gas)
-"aA" = (/obj/machinery/camera/network/engine{dir = 1},/obj/structure/table/standard,/obj/item/weapon/circuitboard/tesla_coil{pixel_x = -2; pixel_y = -2},/obj/item/weapon/circuitboard/tesla_coil{pixel_x = 2; pixel_y = 2},/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/capacitor{pixel_x = -2; pixel_y = 2},/turf/simulated/floor,/area/engineering/engine_gas)
-"aB" = (/obj/machinery/camera/network/engine{dir = 8},/turf/space,/area/space)
-"aC" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/engineering/engine_room)
-"aD" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 1},/obj/effect/floor_decal/industrial/warning/corner{icon_state = "warningcorner"; dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aE" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aF" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/engineering,/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor,/area/engineering/engine_gas)
-"aG" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor,/area/engineering/engine_room)
-"aH" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/engineering/engine_room)
-"aI" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aJ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aK" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/yellow/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aL" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aM" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light_switch{pixel_y = 24},/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0;},/obj/effect/floor_decal/corner/yellow/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aN" = (/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aO" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/yellow/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aP" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/engineering/engine_room)
-"aQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aR" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aS" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aT" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aU" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals_central5{icon_state = "steel_decals_central5"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aV" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/manifold/hidden{dir = 4; icon_state = "map";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aW" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"aX" = (/obj/machinery/field_generator{anchored = 1; state = 1},/turf/simulated/floor/airless,/area/space)
-"aY" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"aZ" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; dir = 1; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -4; pixel_y = -24; req_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ba" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bb" = (/obj/machinery/camera/network/engine{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/borderfloor/corner2,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bc" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bd" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor/corner{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"be" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bf" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/submap/pa_room)
-"bg" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/turf/simulated/floor,/area/submap/pa_room)
-"bh" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'RADIOACTIVE AREA'"; icon_state = "radiation"; name = "RADIOACTIVE AREA"; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/submap/pa_room)
-"bi" = (/turf/simulated/wall/r_wall,/area/submap/pa_room)
-"bj" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/glass_engineering,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bk" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bl" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bm" = (/turf/simulated/wall/r_wall,/area/template_noop)
-"bn" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/turf/simulated/floor,/area/submap/pa_room)
-"bo" = (/obj/effect/floor_decal/techfloor/orange{dir = 5},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bp" = (/obj/item/weapon/screwdriver,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bq" = (/obj/effect/floor_decal/steeldecal,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"br" = (/obj/machinery/light{dir = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "EngineRadiatorViewport"; name = "Viewport Blast Doors"; pixel_x = -4; pixel_y = 24; req_access = list(10)},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bs" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bt" = (/obj/structure/cable/cyan{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/machinery/light_switch{pixel_y = 24},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bu" = (/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_x = 5; pixel_y = 5},/obj/item/weapon/book/manual/tesla_engine,/turf/template_noop,/area/template_noop)
-"bv" = (/obj/structure/table/rack{dir = 8; layer = 2.6},/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/engineering/taur,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/engineering,/obj/item/clothing/mask/breath,/obj/item/clothing/head/helmet/space/void/engineering,/turf/template_noop,/area/template_noop)
-"bw" = (/obj/effect/floor_decal/techfloor/orange/corner{icon_state = "techfloororange_corners"; dir = 4},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bx" = (/obj/structure/particle_accelerator/particle_emitter/left{dir = 8},/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"by" = (/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bz" = (/obj/machinery/particle_accelerator/control_box,/obj/effect/floor_decal/techfloor/orange{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bA" = (/obj/effect/floor_decal/techfloor/orange{dir = 5},/obj/item/stack/cable_coil/random,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bB" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bC" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/submap/pa_room)
-"bD" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bE" = (/obj/machinery/the_singularitygen/tesla{anchored = 1},/turf/simulated/floor/airless,/area/space)
-"bF" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/submap/pa_room)
-"bG" = (/obj/structure/particle_accelerator/particle_emitter/center{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bH" = (/obj/structure/particle_accelerator/power_box{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bI" = (/obj/structure/particle_accelerator/fuel_chamber{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bJ" = (/obj/structure/particle_accelerator/end_cap{dir = 8},/obj/effect/floor_decal/techfloor/orange{dir = 4},/obj/effect/floor_decal/techfloor/hole{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bK" = (/obj/machinery/camera/network/engine{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bL" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor,/area/submap/pa_room)
-"bM" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bN" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"bO" = (/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -6; pixel_y = 7; req_access = list(10)},/obj/machinery/button/remote/blast_door{name = "Engine Monitoring Room Blast Doors"; desc = "A remote control-switch for the engine control room blast doors."; pixel_x = 5; pixel_y = 7; req_access = list(10); id = "EngineBlast"},/turf/template_noop,/area/template_noop)
-"bP" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "EngineRadiatorViewport"; name = "Engine Radiator Viewport Shutter"; opacity = 0},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/techfloor/orange/corner,/turf/simulated/floor,/area/submap/pa_room)
-"bQ" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bR" = (/obj/structure/particle_accelerator/particle_emitter/right{dir = 8},/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bS" = (/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bT" = (/obj/effect/floor_decal/techfloor/orange,/obj/effect/floor_decal/techfloor/hole,/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bU" = (/obj/effect/floor_decal/techfloor/orange{icon_state = "techfloororange_edges"; dir = 6},/turf/simulated/floor/tiled/techfloor,/area/submap/pa_room)
-"bV" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bW" = (/obj/effect/floor_decal/techfloor/orange/corner,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bX" = (/obj/effect/floor_decal/techfloor/orange{icon_state = "techfloororange_edges"; dir = 6},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor/grid,/area/submap/pa_room)
-"bY" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/effect/floor_decal/steeldecal/steel_decals8,/obj/structure/table/standard,/obj/item/weapon/book/manual/tesla_engine,/obj/item/weapon/book/manual/engineering_particle_accelerator{pixel_x = 5; pixel_y = 5},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"bZ" = (/obj/structure/grille,/obj/structure/window/reinforced/full,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced,/turf/simulated/floor,/area/submap/pa_room)
-"ca" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"cb" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cc" = (/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; id = "SupermatterPort"; name = "Radiation Collector Blast Doors"; pixel_x = -4; pixel_y = 24; req_access = list(10)},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cd" = (/obj/machinery/light,/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for the engine charging port."; dir = 1; id = "EngineRadiatorViewport"; name = "Viewport Blast Doors"; pixel_x = -4; pixel_y = -24; req_access = list(10)},/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"ce" = (/obj/machinery/camera/network/engine,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cf" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/floor_decal/borderfloor{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cg" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden,/obj/effect/floor_decal/borderfloor/corner{dir = 1},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ch" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/yellow{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/door/blast/regular{density = 0; dir = 2; icon_state = "pdoor0"; id = "SupermatterPort"; layer = 3.3; name = "Reactor Blast Door"; opacity = 0},/turf/simulated/floor,/area/engineering/engine_room)
-"ci" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cj" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals_central5{icon_state = "steel_decals_central5"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"ck" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact";},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cl" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cm" = (/obj/machinery/power/rad_collector,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/light/small,/turf/simulated/floor,/area/engineering/engine_room)
-"cn" = (/obj/structure/cable/cyan{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/borderfloor/corner,/obj/effect/floor_decal/corner/yellow/bordercorner,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"co" = (/obj/machinery/power/tesla_coil,/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/airless,/area/space)
-"cp" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cq" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cr" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cs" = (/obj/machinery/power/emitter{anchored = 1; dir = 1; state = 1},/obj/structure/cable/cyan{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless,/area/space)
-"ct" = (/obj/machinery/access_button{command = "cycle_exterior"; frequency = 1379; master_tag = "eng_south_airlock"; name = "exterior access button"; pixel_x = -5; pixel_y = 26; req_one_access = list(10,11,13)},/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_south_outer"; locked = 1; name = "Engine South Airlock Exterior"},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cu" = (/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 4; frequency = 1379; id_tag = "eng_south_pump"},/obj/machinery/airlock_sensor{frequency = 1379; id_tag = "eng_south_sensor"; pixel_x = 0; pixel_y = 25},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cv" = (/obj/machinery/door/airlock/glass_external{frequency = 1379; icon_state = "door_locked"; id_tag = "eng_south_inner"; locked = 1; name = "Engine South Airlock Interior"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/access_button{command = "cycle_interior"; frequency = 1379; master_tag = "eng_south_airlock"; name = "interior access button"; pixel_x = 8; pixel_y = -26; req_one_access = list(10,11)},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cw" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/sign/securearea{desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; layer = 4; name = "EXTERNAL AIRLOCK"; pixel_x = 0; pixel_y = -32},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 9; icon_state = "intact";},/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/yellow/bordercorner2,/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cx" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/yellow/border{dir = 6},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cy" = (/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/item/weapon/extinguisher,/turf/simulated/floor/airless,/area/space)
-"cz" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/airless,/area/space)
-"cA" = (/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/rust,/turf/simulated/floor/airless,/area/space)
-"cB" = (/obj/structure/closet/emcloset,/obj/machinery/embedded_controller/radio/airlock/airlock_controller{frequency = 1379; id_tag = "eng_south_airlock"; pixel_x = 24; pixel_y = 0; req_one_access = list(10,11); tag_airpump = "eng_south_pump"; tag_chamber_sensor = "eng_south_sensor"; tag_exterior_door = "eng_south_outer"; tag_interior_door = "eng_south_inner"},/turf/simulated/floor/tiled/dark,/area/engineering/engine_room)
-"cC" = (/turf/simulated/wall/r_wall,/area/space)
-"cD" = (/obj/structure/lattice,/obj/machinery/power/grounding_rod,/turf/space,/area/space)
-"cE" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/machinery/power/grounding_rod{anchored = 1},/turf/simulated/floor,/area/engineering/engine_room)
-"cF" = (/obj/machinery/power/emitter{anchored = 1; state = 1},/obj/structure/cable/cyan,/turf/simulated/floor/airless,/area/space)
-"cG" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"cH" = (/obj/machinery/door/airlock/glass_engineering,/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/submap/pa_room)
-"cI" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cJ" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/obj/structure/cable/yellow{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cK" = (/obj/structure/cable/yellow{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/airless,/area/space)
-"cL" = (/obj/structure/cable/yellow{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/airless,/area/space)
-"cM" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/light,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/turf/simulated/floor/tiled,/area/engineering/engine_room)
-"cN" = (/obj/structure/cable/yellow{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/airless,/area/space)
-"cO" = (/obj/machinery/power/tesla_coil,/obj/structure/cable/yellow,/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/airless,/area/space)
-"cP" = (/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/obj/structure/cable/yellow,/turf/simulated/floor/airless,/area/space)
-"cQ" = (/obj/structure/cable/yellow{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/airless,/area/space)
-"cR" = (/obj/structure/lattice,/obj/item/clothing/head/welding,/turf/space,/area/space)
-"cS" = (/obj/item/weapon/weldingtool,/turf/simulated/floor/airless,/area/space)
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"aa" = (
+/turf/template_noop,
+/area/template_noop)
+"ab" = (
+/turf/space,
+/area/space)
+"ac" = (
+/obj/structure/lattice,
+/obj/structure/grille,
+/turf/space,
+/area/space)
+"ad" = (
+/obj/structure/lattice,
+/turf/space,
+/area/space)
+"ae" = (
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_gas)
+"af" = (
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_room)
+"ag" = (
+/obj/machinery/atmospherics/portables_connector{
+ dir = 4
+ },
+/obj/machinery/portable_atmospherics/canister/air/airlock,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ah" = (
+/obj/machinery/field_generator,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ai" = (
+/obj/machinery/field_generator,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aj" = (
+/turf/simulated/floor/airless,
+/area/space)
+"ak" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"al" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"am" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"an" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"ao" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
+ frequency = 1379;
+ id_tag = "eng_north_airlock";
+ pixel_x = 24;
+ pixel_y = 0;
+ req_one_access = list(10,11);
+ tag_airpump = "eng_north_pump";
+ tag_chamber_sensor = "eng_north_sensor";
+ tag_exterior_door = "eng_north_outer";
+ tag_interior_door = "eng_north_inner"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"ap" = (
+/obj/machinery/portable_atmospherics/canister/phoron,
+/obj/machinery/atmospherics/pipe/manifold/hidden{
+ dir = 4;
+ icon_state = "map";
+
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aq" = (
+/obj/machinery/alarm{
+ dir = 8;
+ icon_state = "alarm0";
+ pixel_x = 24
+ },
+/obj/structure/dispenser/phoron,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"ar" = (
+/obj/structure/cable/cyan,
+/obj/machinery/power/emitter{
+ anchored = 1;
+ state = 1
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"as" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/rust/mono_rusted1,
+/turf/simulated/floor/airless,
+/area/space)
+"at" = (
+/obj/machinery/access_button{
+ command = "cycle_exterior";
+ frequency = 1379;
+ master_tag = "eng_north_airlock";
+ name = "exterior access button";
+ pixel_x = -5;
+ pixel_y = -26;
+ req_one_access = list(10,11,13)
+ },
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_north_outer";
+ locked = 1;
+ name = "Engine North Airlock Exterior"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"au" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1379;
+ id_tag = "eng_north_pump"
+ },
+/obj/machinery/light/small,
+/obj/machinery/airlock_sensor{
+ frequency = 1379;
+ id_tag = "eng_north_sensor";
+ pixel_x = 0;
+ pixel_y = -25
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"av" = (
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_north_inner";
+ locked = 1;
+ name = "Engine North Airlock Interior"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"aw" = (
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1379;
+ master_tag = "eng_north_airlock";
+ name = "interior access button";
+ pixel_x = -28;
+ pixel_y = 26;
+ req_one_access = list(10,11)
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 0;
+ pixel_y = 32
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ax" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ay" = (
+/obj/structure/cable/cyan{
+ d1 = 0;
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/apc{
+ dir = 8;
+ name = "west bump";
+ pixel_x = -28
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"az" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/power/sensor{
+ name = "Powernet Sensor - Engine Power";
+ name_tag = "Engine Power"
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aA" = (
+/obj/machinery/camera/network/engine{
+ dir = 1
+ },
+/obj/structure/table/standard,
+/obj/item/weapon/circuitboard/tesla_coil{
+ pixel_x = -2;
+ pixel_y = -2
+ },
+/obj/item/weapon/circuitboard/tesla_coil{
+ pixel_x = 2;
+ pixel_y = 2
+ },
+/obj/item/weapon/stock_parts/capacitor,
+/obj/item/weapon/stock_parts/capacitor{
+ pixel_x = -2;
+ pixel_y = 2
+ },
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aB" = (
+/obj/machinery/camera/network/engine{
+ dir = 8
+ },
+/turf/space,
+/area/space)
+"aC" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'RADIOACTIVE AREA'";
+ icon_state = "radiation";
+ name = "RADIOACTIVE AREA";
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/wall/r_wall,
+/area/engineering/engine_room)
+"aD" = (
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/industrial/warning/corner{
+ icon_state = "warningcorner";
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/warning/corner{
+ icon_state = "warningcorner";
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aE" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aF" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/engineering,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor,
+/area/engineering/engine_gas)
+"aG" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aH" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aI" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aJ" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aK" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aL" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aM" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1;
+ icon_state = "borderfloor";
+ pixel_y = 0;
+
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aN" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aO" = (
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 5
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aP" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aQ" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aR" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 5;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aS" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aT" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aU" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals_central5{
+ icon_state = "steel_decals_central5";
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aV" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden{
+ dir = 4;
+ icon_state = "map";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aW" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"aX" = (
+/obj/machinery/field_generator{
+ anchored = 1;
+ state = 1
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"aY" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"aZ" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ dir = 1;
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -4;
+ pixel_y = -24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ba" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bb" = (
+/obj/machinery/camera/network/engine{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/borderfloor/corner2,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bc" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bd" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"be" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bf" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bg" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bh" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'RADIOACTIVE AREA'";
+ icon_state = "radiation";
+ name = "RADIOACTIVE AREA";
+ pixel_x = 0;
+ pixel_y = 0
+ },
+/turf/simulated/wall/r_wall,
+/area/submap/pa_room)
+"bi" = (
+/turf/simulated/wall/r_wall,
+/area/submap/pa_room)
+"bj" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/airlock/glass_engineering,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bk" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bl" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bm" = (
+/turf/simulated/wall/r_wall,
+/area/template_noop)
+"bn" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bo" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 5
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bp" = (
+/obj/item/weapon/screwdriver,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bq" = (
+/obj/effect/floor_decal/steeldecal,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"br" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "EngineRadiatorViewport";
+ name = "Viewport Blast Doors";
+ pixel_x = -4;
+ pixel_y = 24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bs" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bt" = (
+/obj/structure/cable/cyan{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/machinery/light_switch{
+ pixel_y = 24
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bu" = (
+/obj/item/weapon/book/manual/engineering_particle_accelerator{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/weapon/book/manual/tesla_engine,
+/turf/template_noop,
+/area/template_noop)
+"bv" = (
+/obj/structure/table/rack{
+ dir = 8;
+ layer = 2.6
+ },
+/obj/item/clothing/shoes/magboots,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/head/helmet/space/void/engineering,
+/obj/item/clothing/shoes/magboots,
+/obj/item/clothing/suit/space/void/engineering,
+/obj/item/clothing/mask/breath,
+/obj/item/clothing/head/helmet/space/void/engineering,
+/turf/template_noop,
+/area/template_noop)
+"bw" = (
+/obj/effect/floor_decal/techfloor/orange/corner{
+ icon_state = "techfloororange_corners";
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bx" = (
+/obj/structure/particle_accelerator/particle_emitter/left{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"by" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bz" = (
+/obj/machinery/particle_accelerator/control_box,
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bA" = (
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 5
+ },
+/obj/item/stack/cable_coil/random,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bB" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bC" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bD" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bE" = (
+/obj/machinery/the_singularitygen/tesla{
+ anchored = 1
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"bF" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bG" = (
+/obj/structure/particle_accelerator/particle_emitter/center{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bH" = (
+/obj/structure/particle_accelerator/power_box{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bI" = (
+/obj/structure/particle_accelerator/fuel_chamber{
+ dir = 8
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bJ" = (
+/obj/structure/particle_accelerator/end_cap{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange{
+ dir = 4
+ },
+/obj/effect/floor_decal/techfloor/hole{
+ dir = 4
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bK" = (
+/obj/machinery/camera/network/engine{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bL" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bM" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/manifold4w/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor{
+ dir = 8
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bN" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"bO" = (
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -6;
+ pixel_y = 7;
+ req_access = list(10)
+ },
+/obj/machinery/button/remote/blast_door{
+ name = "Engine Monitoring Room Blast Doors";
+ desc = "A remote control-switch for the engine control room blast doors.";
+ pixel_x = 5;
+ pixel_y = 7;
+ req_access = list(10);
+ id = "EngineBlast"
+ },
+/turf/template_noop,
+/area/template_noop)
+"bP" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ icon_state = "pdoor0";
+ id = "EngineRadiatorViewport";
+ name = "Engine Radiator Viewport Shutter";
+ opacity = 0
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/effect/floor_decal/techfloor/orange/corner,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"bQ" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bR" = (
+/obj/structure/particle_accelerator/particle_emitter/right{
+ dir = 8
+ },
+/obj/effect/floor_decal/techfloor/orange,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bS" = (
+/obj/effect/floor_decal/techfloor/orange,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bT" = (
+/obj/effect/floor_decal/techfloor/orange,
+/obj/effect/floor_decal/techfloor/hole,
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bU" = (
+/obj/effect/floor_decal/techfloor/orange{
+ icon_state = "techfloororange_edges";
+ dir = 6
+ },
+/turf/simulated/floor/tiled/techfloor,
+/area/submap/pa_room)
+"bV" = (
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bW" = (
+/obj/effect/floor_decal/techfloor/orange/corner,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bX" = (
+/obj/effect/floor_decal/techfloor/orange{
+ icon_state = "techfloororange_edges";
+ dir = 6
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled/techfloor/grid,
+/area/submap/pa_room)
+"bY" = (
+/obj/machinery/alarm{
+ dir = 8;
+ pixel_x = 25;
+ pixel_y = 0
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals8,
+/obj/structure/table/standard,
+/obj/item/weapon/book/manual/tesla_engine,
+/obj/item/weapon/book/manual/engineering_particle_accelerator{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"bZ" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 8;
+ health = 1e+006
+ },
+/obj/structure/window/reinforced,
+/turf/simulated/floor,
+/area/submap/pa_room)
+"ca" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"cb" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/light{
+ dir = 4;
+ icon_state = "tube1";
+ pixel_x = 0
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cc" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ id = "SupermatterPort";
+ name = "Radiation Collector Blast Doors";
+ pixel_x = -4;
+ pixel_y = 24;
+ req_access = list(10)
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cd" = (
+/obj/machinery/light,
+/obj/machinery/button/remote/blast_door{
+ desc = "A remote control-switch for the engine charging port.";
+ dir = 1;
+ id = "EngineRadiatorViewport";
+ name = "Viewport Blast Doors";
+ pixel_x = -4;
+ pixel_y = -24;
+ req_access = list(10)
+ },
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"ce" = (
+/obj/machinery/camera/network/engine,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cf" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cg" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden,
+/obj/effect/floor_decal/borderfloor/corner{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ch" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/door/blast/regular{
+ density = 0;
+ dir = 2;
+ icon_state = "pdoor0";
+ id = "SupermatterPort";
+ layer = 3.3;
+ name = "Reactor Blast Door";
+ opacity = 0
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"ci" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cj" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals_central5{
+ icon_state = "steel_decals_central5";
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 5
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"ck" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9;
+ pixel_y = 0
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 9;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cl" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/bordercorner2{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cm" = (
+/obj/machinery/power/rad_collector,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/light/small,
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"cn" = (
+/obj/structure/cable/cyan{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/effect/floor_decal/borderfloor/corner,
+/obj/effect/floor_decal/corner/yellow/bordercorner,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"co" = (
+/obj/machinery/power/tesla_coil,
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cp" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 1
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cq" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/alarm{
+ dir = 1;
+ icon_state = "alarm0";
+ pixel_y = -22
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cr" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 6
+ },
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/obj/structure/reagent_dispensers/fueltank,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cs" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ dir = 1;
+ state = 1
+ },
+/obj/structure/cable/cyan{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"ct" = (
+/obj/machinery/access_button{
+ command = "cycle_exterior";
+ frequency = 1379;
+ master_tag = "eng_south_airlock";
+ name = "exterior access button";
+ pixel_x = -5;
+ pixel_y = 26;
+ req_one_access = list(10,11,13)
+ },
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_south_outer";
+ locked = 1;
+ name = "Engine South Airlock Exterior"
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cu" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 4;
+ frequency = 1379;
+ id_tag = "eng_south_pump"
+ },
+/obj/machinery/airlock_sensor{
+ frequency = 1379;
+ id_tag = "eng_south_sensor";
+ pixel_x = 0;
+ pixel_y = 25
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cv" = (
+/obj/machinery/door/airlock/glass_external{
+ frequency = 1379;
+ icon_state = "door_locked";
+ id_tag = "eng_south_inner";
+ locked = 1;
+ name = "Engine South Airlock Interior"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1379;
+ master_tag = "eng_south_airlock";
+ name = "interior access button";
+ pixel_x = 8;
+ pixel_y = -26;
+ req_one_access = list(10,11)
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cw" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 0;
+ pixel_y = -32
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 9;
+ icon_state = "intact";
+
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/obj/effect/floor_decal/borderfloor/corner2,
+/obj/effect/floor_decal/corner/yellow/bordercorner2,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cx" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 6
+ },
+/obj/effect/floor_decal/corner/yellow/border{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cy" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/item/weapon/extinguisher,
+/turf/simulated/floor/airless,
+/area/space)
+"cz" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cA" = (
+/obj/structure/cable/cyan{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/effect/floor_decal/rust,
+/turf/simulated/floor/airless,
+/area/space)
+"cB" = (
+/obj/structure/closet/emcloset,
+/obj/machinery/embedded_controller/radio/airlock/airlock_controller{
+ frequency = 1379;
+ id_tag = "eng_south_airlock";
+ pixel_x = 24;
+ pixel_y = 0;
+ req_one_access = list(10,11);
+ tag_airpump = "eng_south_pump";
+ tag_chamber_sensor = "eng_south_sensor";
+ tag_exterior_door = "eng_south_outer";
+ tag_interior_door = "eng_south_inner"
+ },
+/turf/simulated/floor/tiled/dark,
+/area/engineering/engine_room)
+"cC" = (
+/turf/simulated/wall/r_wall,
+/area/space)
+"cD" = (
+/obj/structure/lattice,
+/obj/machinery/power/grounding_rod,
+/turf/space,
+/area/space)
+"cE" = (
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/machinery/power/grounding_rod{
+ anchored = 1
+ },
+/turf/simulated/floor,
+/area/engineering/engine_room)
+"cF" = (
+/obj/machinery/power/emitter{
+ anchored = 1;
+ state = 1
+ },
+/obj/structure/cable/cyan,
+/turf/simulated/floor/airless,
+/area/space)
+"cG" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"cH" = (
+/obj/machinery/door/airlock/glass_engineering,
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/submap/pa_room)
+"cI" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cJ" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 4
+ },
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cK" = (
+/obj/structure/cable/yellow{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cL" = (
+/obj/structure/cable/yellow{
+ d1 = 2;
+ d2 = 8;
+ icon_state = "2-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cM" = (
+/obj/structure/cable/cyan{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/machinery/light,
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/yellow/border,
+/turf/simulated/floor/tiled,
+/area/engineering/engine_room)
+"cN" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cO" = (
+/obj/machinery/power/tesla_coil,
+/obj/structure/cable/yellow,
+/obj/structure/cable/yellow{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cP" = (
+/obj/structure/cable/yellow{
+ d2 = 4;
+ icon_state = "0-4"
+ },
+/obj/structure/cable/yellow{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/obj/structure/cable/yellow,
+/turf/simulated/floor/airless,
+/area/space)
+"cQ" = (
+/obj/structure/cable/yellow{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/airless,
+/area/space)
+"cR" = (
+/obj/structure/lattice,
+/obj/item/clothing/head/welding,
+/turf/space,
+/area/space)
+"cS" = (
+/obj/item/weapon/weldingtool,
+/turf/simulated/floor/airless,
+/area/space)
(1,1,1) = {"
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaabababababababababababababababababababababababababababaaaa
-aaacacacacacadacacacacacabababacacacacacacadacacacacacacaaaa
-aaacababababababababababababababababababababababababababaaaa
-aaacababababababababababababababababababababababababababaaaa
-aaadabababababababababababababababababababaeaeaeaeaeababaaaa
-aaacacacacacacacacacacacacacacacafafafababaeagahaiaeababaaaa
-aaacababajakalalalalalalalamalanafaoafafafaeagapaqaeababaaaa
-aaacabababcFajajajajajajajaradasatauavawaxaeayazaAaaaaaaaaaa
-aaacababababadabababababadababaBafafaCaDaEaeaeaFaeaaaaaaaaaa
-aaacababababadabababababadabababaGaHaIaJaKaLaMaNaOaaaaaaaaaa
-aaacababajajajajajcocKcKcKcKcLabaGcEaQaRaSaTaUaVaWaaaaaaaaaa
-aaaccDadajaXababababaXababaXcNabaGaPaYaZbabbbcbdbeaaaaaaaaaa
-aaacababajabababababadabababcNbfbgbgbhbibjbibibkblbmbmaaaaaa
-aaacababajabababcRadadabababcObnbobpbqbrbsbtbibkaEaabubvaaaa
-aaacababajaXadadajajajadababcNbnbwbxbybzbAbBbCbDaEaaaaaaaaaa
-aaacababajababadajbEajadababcPbFbQbGbHbIbJbKbLbMbNaaaabOaaaa
-aaacababajababadajajajadadaXcNbPbWbRbSbTbUbVbCbDaEaaaaaaaaaa
-aaacababajabababadadadabababcObPbXcacacdcGbYbibkaEaaaaaaaaaa
-aaacababcSabababadabababababcNbZbgbgbhbicHbibibkcbbmbmaaaaaa
-aaaccDadajaXababaXababababaXcNabaGaPaIcccIcecfcgbaaaaaaaaaaa
-aaacababajajajajajcocKcKcKcKcQabaGcEchcicJaTcjckclaaaaaaaaaa
-aaacababababadabababababadabababaGcmaYaJcncMcpcqcraaaaaaaaaa
-aaacababababadabababababadababaBafafaCaDaEafafafafaaaaaaaaaa
-aaacabababcsajajajajajajajcsadakctcucvcwcxafaaaaaaaaaaaaaaaa
-aaacabadajcyalalalalalalalczalcAafcBafafafafaaaaaaaaaaaaaaaa
-aaacadadcCcCcCcCcCcCcCcCcCcCcCcCafafaCaaaaaaaaaaaaaaaaaaaaaa
-aaacababababababababaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(2,1,1) = {"
+aa
+aa
+ab
+ac
+ac
+ac
+ad
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+ac
+aa
+"}
+(3,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+cD
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+cD
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+aa
+"}
+(4,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ad
+ad
+ab
+aa
+"}
+(5,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+aj
+ab
+ab
+ab
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+aj
+cS
+aj
+aj
+ab
+ab
+ab
+aj
+cC
+ab
+aa
+"}
+(6,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+ak
+cF
+ab
+ab
+aj
+aX
+ab
+ab
+aX
+ab
+ab
+ab
+ab
+aX
+aj
+ab
+ab
+cs
+cy
+cC
+ab
+aa
+"}
+(7,1,1) = {"
+aa
+aa
+ab
+ad
+ab
+ab
+ab
+ac
+al
+aj
+ad
+ad
+aj
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+ab
+ab
+aj
+ad
+ad
+aj
+al
+cC
+ab
+aa
+"}
+(8,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+aj
+ab
+ab
+ab
+ad
+ad
+ad
+ab
+ab
+ab
+aj
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(9,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+aj
+ab
+ab
+cR
+aj
+aj
+aj
+ad
+ad
+aX
+aj
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(10,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+co
+ab
+ab
+ad
+aj
+bE
+aj
+ad
+ab
+ab
+co
+ab
+ab
+aj
+al
+cC
+ab
+aa
+"}
+(11,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+cK
+aX
+ad
+ad
+aj
+aj
+aj
+ad
+ab
+ab
+cK
+ab
+ab
+aj
+al
+cC
+aa
+aa
+"}
+(12,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+al
+aj
+ab
+ab
+cK
+ab
+ab
+ab
+ad
+ad
+ad
+ab
+ab
+ab
+cK
+ab
+ab
+aj
+al
+cC
+aa
+aa
+"}
+(13,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+al
+aj
+ad
+ad
+cK
+ab
+ab
+ab
+ab
+ab
+ad
+ab
+ab
+ab
+cK
+ad
+ad
+aj
+al
+cC
+aa
+aa
+"}
+(14,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+am
+ar
+ab
+ab
+cK
+aX
+ab
+ab
+ab
+ab
+aX
+ab
+ab
+aX
+cK
+ab
+ab
+cs
+cz
+cC
+aa
+aa
+"}
+(15,1,1) = {"
+aa
+aa
+ab
+ab
+ab
+ab
+ab
+ac
+al
+ad
+ab
+ab
+cL
+cN
+cN
+cO
+cN
+cP
+cN
+cO
+cN
+cN
+cQ
+ab
+ab
+ad
+al
+cC
+aa
+aa
+"}
+(16,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ac
+an
+as
+aB
+ab
+ab
+ab
+bf
+bn
+bn
+bF
+bP
+bP
+bZ
+ab
+ab
+ab
+aB
+ak
+cA
+cC
+aa
+aa
+"}
+(17,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+af
+at
+af
+aG
+aG
+aG
+bg
+bo
+bw
+bQ
+bW
+bX
+bg
+aG
+aG
+aG
+af
+ct
+af
+af
+aa
+aa
+"}
+(18,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+ao
+au
+af
+aH
+cE
+aP
+bg
+bp
+bx
+bG
+bR
+ca
+bg
+aP
+cE
+cm
+af
+cu
+cB
+af
+aa
+aa
+"}
+(19,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+af
+af
+av
+aC
+aI
+aQ
+aY
+bh
+bq
+by
+bH
+bS
+ca
+bh
+aI
+ch
+aY
+aC
+cv
+af
+aC
+aa
+aa
+"}
+(20,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+af
+aw
+aD
+aJ
+aR
+aZ
+bi
+br
+bz
+bI
+bT
+cd
+bi
+cc
+ci
+aJ
+aD
+cw
+af
+aa
+aa
+aa
+"}
+(21,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+af
+ax
+aE
+aK
+aS
+ba
+bj
+bs
+bA
+bJ
+bU
+cG
+cH
+cI
+cJ
+cn
+aE
+cx
+af
+aa
+aa
+aa
+"}
+(22,1,1) = {"
+aa
+aa
+ab
+ad
+ab
+ab
+ae
+ae
+ae
+ae
+ae
+aL
+aT
+bb
+bi
+bt
+bB
+bK
+bV
+bY
+bi
+ce
+aT
+cM
+af
+af
+af
+aa
+aa
+aa
+"}
+(23,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ag
+ag
+ay
+ae
+aM
+aU
+bc
+bi
+bi
+bC
+bL
+bC
+bi
+bi
+cf
+cj
+cp
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(24,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ah
+ap
+az
+aF
+aN
+aV
+bd
+bk
+bk
+bD
+bM
+bD
+bk
+bk
+cg
+ck
+cq
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(25,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ai
+aq
+aA
+ae
+aO
+aW
+be
+bl
+aE
+aE
+bN
+aE
+aE
+cb
+ba
+cl
+cr
+af
+aa
+aa
+aa
+aa
+aa
+"}
+(26,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ae
+ae
+ae
+aa
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(27,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+bm
+bu
+aa
+aa
+aa
+aa
+bm
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(28,1,1) = {"
+aa
+aa
+ab
+ac
+ab
+ab
+ab
+ab
+ab
+aa
+aa
+aa
+aa
+aa
+aa
+bv
+aa
+bO
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(29,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+"}
+(30,1,1) = {"
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
+aa
"}
diff --git a/maps/tether/submaps/_tether_submaps.dm b/maps/tether/submaps/_tether_submaps.dm
index 762e3e187a..18be57a76f 100644
--- a/maps/tether/submaps/_tether_submaps.dm
+++ b/maps/tether/submaps/_tether_submaps.dm
@@ -35,13 +35,13 @@
/datum/map_z_level/tether_lateload/underdark
name = "Underdark"
- flags = MAP_LEVEL_STATION|MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
+ flags = MAP_LEVEL_CONTACT|MAP_LEVEL_PLAYER
/datum/map_template/tether_lateload/tether_underdark/on_map_loaded(z)
. = ..()
+ seed_submaps(list(z), 100, /area/mine/unexplored/underdark, /datum/map_template/underdark)
new /datum/random_map/automata/cave_system/no_cracks(null, 1, 1, z, world.maxx, world.maxy) // Create the mining Z-level.
new /datum/random_map/noise/ore(null, 1, 1, z, 64, 64) // Create the mining ore distribution map.
- seed_submaps(list(z), 100, /area/mine/unexplored/underdark, /datum/map_template/underdark)
//////////////////////////////////////////////////////////////////////////////
/// Away Missions
diff --git a/maps/tether/submaps/admin_use/spa.dmm b/maps/tether/submaps/admin_use/spa.dmm
index ded0c7995e..b8784719b3 100644
--- a/maps/tether/submaps/admin_use/spa.dmm
+++ b/maps/tether/submaps/admin_use/spa.dmm
@@ -623,7 +623,7 @@
},
/area/space)
"bW" = (
-/mob/living/simple_animal/wah,
+/mob/living/simple_animal/redpanda,
/turf/simulated/floor/grass,
/area/submap/spa)
"bX" = (
diff --git a/maps/tether/submaps/aerostat/_aerostat.dm b/maps/tether/submaps/aerostat/_aerostat.dm
index 0200052956..6b754e8593 100644
--- a/maps/tether/submaps/aerostat/_aerostat.dm
+++ b/maps/tether/submaps/aerostat/_aerostat.dm
@@ -67,7 +67,7 @@
/mob/living/simple_animal/hostile/hivebot/range = 3,
/mob/living/simple_animal/hostile/hivebot/range/ion = 3,
/mob/living/simple_animal/hostile/hivebot/range/laser = 3,
- /mob/living/simple_animal/hostile/badboi = 1
+ /mob/living/simple_animal/hostile/corrupthound = 1
)
/obj/tether_away_spawner/aerostat_surface
@@ -80,7 +80,7 @@
mobs_to_pick_from = list(
/mob/living/simple_animal/hostile/jelly = 3,
/mob/living/simple_animal/hostile/viscerator = 2,
- /mob/living/simple_animal/hostile/badboi = 1
+ /mob/living/simple_animal/hostile/corrupthound = 1
)
/obj/structure/old_roboprinter
diff --git a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm
index fb2cb01a75..e7977a3af5 100644
--- a/maps/tether/submaps/aerostat/submaps/Rockybase.dmm
+++ b/maps/tether/submaps/aerostat/submaps/Rockybase.dmm
@@ -1,16 +1,17 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"aa" = (
/mob/living/simple_animal/hostile/viscerator{
+ maxbodytemp = 900;
returns_home = 1
},
-/turf/template_noop,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
/area/template_noop)
"ab" = (
/turf/template_noop,
/area/template_noop)
"ac" = (
/obj/effect/decal/remains,
-/turf/template_noop,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
/area/submap/virgo2/Rockybase)
"ad" = (
/turf/template_noop,
@@ -22,9 +23,11 @@
"af" = (
/mob/living/simple_animal/hostile/malf_drone{
desc = "An automated combat drone with an aged apperance.";
+ faction = "syndicate";
+ maxbodytemp = 900;
returns_home = 1
},
-/turf/template_noop,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
/area/submap/virgo2/Rockybase)
"ag" = (
/turf/simulated/mineral/ignore_mapgen/virgo2,
@@ -356,6 +359,8 @@
"bl" = (
/mob/living/simple_animal/hostile/malf_drone{
desc = "An automated combat drone with an aged apperance.";
+ faction = "syndicate";
+ maxbodytemp = 900;
returns_home = 1
},
/turf/simulated/floor/tiled/techfloor/virgo2,
@@ -575,7 +580,9 @@
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"bZ" = (
-/obj/machinery/drone_fabricator,
+/obj/machinery/drone_fabricator{
+ fabricator_tag = "Unknown Location"
+ },
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"ca" = (
@@ -657,7 +664,9 @@
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"co" = (
-/mob/living/simple_animal/hostile/mecha/malf_drone,
+/mob/living/simple_animal/hostile/mecha/malf_drone{
+ faction = "syndicate"
+ },
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
"cp" = (
@@ -755,15 +764,6 @@
/obj/structure/closet/secure_closet/medical3,
/turf/simulated/floor/tiled/techfloor/virgo2,
/area/submap/virgo2/Rockybase)
-"cz" = (
-/obj/effect/decal/cleanable/dirt,
-/obj/effect/decal/cleanable/dirt,
-/mob/living/simple_animal/hostile/malf_drone{
- desc = "An automated combat drone with an aged apperance.";
- returns_home = 1
- },
-/turf/simulated/floor/tiled/techfloor/virgo2,
-/area/submap/virgo2/Rockybase)
"cA" = (
/obj/structure/closet/secure_closet/hydroponics,
/turf/simulated/floor/tiled/techfloor/virgo2,
@@ -833,11 +833,31 @@
/area/submap/virgo2/Rockybase)
"cT" = (
/obj/effect/decal/remains,
-/turf/template_noop,
+/turf/simulated/mineral/floor/ignore_mapgen/virgo2,
/area/template_noop)
(1,1,1) = {"
aa
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
+bz
ab
ab
ab
@@ -845,38 +865,18 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bz
aa
"}
(2,1,1) = {"
-ab
+bz
ac
-ad
-ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
+cO
+cO
ad
ad
ad
@@ -885,27 +885,27 @@ ag
ag
ag
ag
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ab
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+bz
"}
(3,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ad
ad
ag
@@ -928,16 +928,16 @@ ag
ag
ag
ag
-ad
-ad
+cO
+cO
cT
"}
(4,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -961,15 +961,15 @@ ag
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(5,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -993,15 +993,15 @@ al
ag
ag
ag
-ad
+cO
ab
"}
(6,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -1025,15 +1025,15 @@ al
ag
ag
ag
-ad
+cO
ab
"}
(7,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -1057,15 +1057,15 @@ al
ag
ag
ag
-ad
+cO
ab
"}
(8,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -1089,15 +1089,15 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(9,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ad
ag
ag
@@ -1121,15 +1121,15 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(10,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
ad
ad
ag
@@ -1154,15 +1154,15 @@ ag
ag
ag
ag
-ab
+bz
"}
(11,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
ad
ag
ag
@@ -1186,15 +1186,15 @@ ag
ag
ag
ag
-ab
+bz
"}
(12,1,1) = {"
ab
-ad
-ad
-ad
+cO
+cO
+cO
af
-ad
+cO
ad
ag
ag
@@ -1218,15 +1218,15 @@ ag
ag
ag
ag
-ab
+bz
"}
(13,1,1) = {"
ab
-ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
+cO
ad
ag
ag
@@ -1250,15 +1250,15 @@ ag
ag
ag
ag
-ab
+bz
"}
(14,1,1) = {"
ab
+cO
ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
ag
ag
ag
@@ -1282,15 +1282,15 @@ ag
ag
ag
ag
-ab
+bz
"}
(15,1,1) = {"
ab
+cO
ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
ag
ag
ag
@@ -1313,16 +1313,16 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(16,1,1) = {"
ab
+cO
ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
ag
ag
ag
@@ -1345,16 +1345,16 @@ al
ag
ag
af
-ad
-ab
+cO
+bz
"}
(17,1,1) = {"
-ab
-ad
-ad
-ad
-ad
+bz
+cO
ad
+cO
+cO
+cO
ag
ag
ag
@@ -1376,17 +1376,17 @@ cB
al
ag
ag
-ad
-ad
-ab
+cO
+cO
+bz
"}
(18,1,1) = {"
-ab
-ad
-ad
-ad
+bz
ad
ad
+cO
+cO
+cO
ag
ag
ag
@@ -1408,17 +1408,17 @@ ao
al
ag
ag
-ad
-ad
-ab
+cO
+cO
+bz
"}
(19,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
ad
ag
ag
@@ -1440,17 +1440,17 @@ cB
al
ag
ag
-ad
-ad
-ab
+cO
+cO
+bz
"}
(20,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
ad
ad
ag
@@ -1473,16 +1473,16 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(21,1,1) = {"
aa
-ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
+cO
cO
cO
ag
@@ -1505,11 +1505,11 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(22,1,1) = {"
-ab
+bz
ad
ad
ad
@@ -1537,7 +1537,7 @@ al
ag
ag
ag
-ad
+cO
aa
"}
(23,1,1) = {"
@@ -1569,8 +1569,8 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(24,1,1) = {"
bz
@@ -1601,8 +1601,8 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(25,1,1) = {"
an
@@ -1633,8 +1633,8 @@ al
ag
ag
ag
-ad
-ab
+cO
+bz
"}
(26,1,1) = {"
an
@@ -1664,8 +1664,8 @@ cF
al
ag
ag
-ad
-ad
+cO
+cO
ab
"}
(27,1,1) = {"
@@ -1696,8 +1696,8 @@ cG
al
ag
ag
-ad
-ad
+cO
+cO
ab
"}
(28,1,1) = {"
@@ -1728,8 +1728,8 @@ bq
al
ag
ag
-ad
-ad
+cO
+cO
ab
"}
(29,1,1) = {"
@@ -1760,8 +1760,8 @@ al
al
ag
ag
-ad
-ad
+cO
+cO
ab
"}
(30,1,1) = {"
@@ -1792,7 +1792,7 @@ cH
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -1824,7 +1824,7 @@ ao
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -1855,8 +1855,8 @@ ao
cI
al
ag
-ad
-ad
+cO
+cO
ad
ab
"}
@@ -1883,12 +1883,12 @@ bL
bO
ch
ct
-cz
+ch
ao
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -1920,7 +1920,7 @@ ao
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -1952,7 +1952,7 @@ cJ
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -1983,8 +1983,8 @@ bU
bW
al
ag
-ad
-ad
+cO
+cO
ad
ab
"}
@@ -1992,8 +1992,8 @@ ab
ab
ad
ad
-ad
-ad
+cO
+cO
cO
cO
cO
@@ -2015,8 +2015,8 @@ bU
cJ
al
ag
-ad
-ad
+cO
+cO
ad
ab
"}
@@ -2024,9 +2024,9 @@ ab
ab
ad
ad
-ad
-ad
-ad
+cO
+cO
+cO
cO
cO
ag
@@ -2047,8 +2047,8 @@ bU
cK
al
ag
-ad
-ad
+cO
+cO
ad
ab
"}
@@ -2056,9 +2056,9 @@ ab
ab
ad
ad
-ad
-ad
-ad
+cO
+cO
+cO
ad
ad
ag
@@ -2080,7 +2080,7 @@ bO
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -2088,9 +2088,9 @@ ab
ab
ad
ad
-ad
-ad
-ad
+cO
+cO
+cO
ad
ag
ag
@@ -2112,7 +2112,7 @@ cL
al
ag
ag
-ad
+cO
ad
ab
"}
@@ -2120,9 +2120,9 @@ ab
ab
ad
ad
-ad
-ad
-ad
+cO
+cO
+cO
ad
ag
ag
@@ -2144,17 +2144,17 @@ al
al
ag
ag
-ad
+cO
ad
ab
"}
(42,1,1) = {"
ab
-ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2176,17 +2176,17 @@ cM
al
ag
ag
-ad
+cO
ad
ab
"}
(43,1,1) = {"
ab
-ad
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2208,17 +2208,17 @@ cN
al
ag
ag
-ad
+cO
ad
ab
"}
(44,1,1) = {"
ab
ac
-ad
-ad
-ad
-ad
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2240,18 +2240,18 @@ al
al
ag
ag
-ad
+cO
ad
ab
"}
(45,1,1) = {"
-ab
-ad
-ad
+bz
+cO
+cO
af
-ad
-ad
-ad
+cO
+cO
+cO
ag
ag
ag
@@ -2272,18 +2272,18 @@ al
ag
ag
ag
-ad
+cO
ad
ab
"}
(46,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2303,19 +2303,19 @@ ag
ag
ag
ag
-ad
-ad
-ad
+cO
+cO
+cO
cT
"}
(47,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2331,23 +2331,23 @@ ag
ag
ag
ag
-ad
+cO
ag
-ad
-ad
-ad
-ad
-ad
-ab
+cO
+cO
+cO
+cO
+cO
+bz
"}
(48,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
+cO
+cO
+cO
+cO
ag
ag
ag
@@ -2361,64 +2361,64 @@ ag
ag
ag
ag
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ab
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+bz
"}
(49,1,1) = {"
-ab
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
-ad
+bz
+cO
+cO
ad
ad
ad
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
+cO
af
-ad
-ad
+cO
+cO
ad
ad
ab
"}
(50,1,1) = {"
aa
+bz
+bz
ab
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+bz
+bz
+bz
+bz
+bz
+bz
+bz
ab
ab
ab
diff --git a/maps/tether/submaps/beach/_beach.dm b/maps/tether/submaps/beach/_beach.dm
index 6e100c868c..321716e3ad 100644
--- a/maps/tether/submaps/beach/_beach.dm
+++ b/maps/tether/submaps/beach/_beach.dm
@@ -95,7 +95,7 @@
prob_fall = 25 //Chance goes down by this much each time it spawns one (not defining and prob_spawn 100 means they spawn as soon as one dies)
guard = 40 //They'll stay within this range (not defining this disables them staying nearby and they will wander the map (and through step teleports))
mobs_to_pick_from = list(
- /mob/living/simple_animal/snake = 3, //Snakes are 3x more likely to spawn than,
+ /mob/living/simple_animal/hostile/giant_snake = 3, //Snakes are 3x more likely to spawn than,
/mob/living/simple_animal/hostile/frog = 1 //these frogs are, with these values
)
diff --git a/maps/tether/submaps/tether_underdark.dmm b/maps/tether/submaps/tether_underdark.dmm
index cebd9d3b3c..7035de0296 100644
--- a/maps/tether/submaps/tether_underdark.dmm
+++ b/maps/tether/submaps/tether_underdark.dmm
@@ -23,6 +23,12 @@
ignore_mapgen = 1
},
/area/mine/explored/underdark)
+"d" = (
+/obj/effect/decal/remains/deer,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
+/area/mine/explored/underdark)
"e" = (
/turf/unsimulated/mineral/virgo3b,
/area/mine/explored/underdark)
@@ -184,6 +190,47 @@
"J" = (
/turf/simulated/mineral/floor/virgo3b,
/area/mine/unexplored/underdark)
+"K" = (
+/obj/structure/sign/graffiti/pisoff{
+ pixel_x = 5;
+ pixel_y = 3
+ },
+/turf/simulated/wall/r_wall,
+/area/mine/explored/underdark)
+"L" = (
+/obj/structure/sign/hostilefauna,
+/turf/simulated/wall/r_wall,
+/area/mine/explored/underdark)
+"N" = (
+/obj/effect/decal/remains/posi,
+/turf/simulated/floor/outdoors/dirt/virgo3b,
+/area/mine/explored/underdark)
+"R" = (
+/obj/item/weapon/bone,
+/turf/simulated/floor/outdoors/dirt/virgo3b,
+/area/mine/explored/underdark)
+"S" = (
+/obj/item/weapon/bone,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
+/area/mine/explored/underdark)
+"T" = (
+/obj/effect/decal/remains/mouse,
+/turf/simulated/floor/outdoors/dirt/virgo3b,
+/area/mine/explored/underdark)
+"W" = (
+/obj/item/weapon/bone/skull,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
+/area/mine/explored/underdark)
+"Z" = (
+/obj/effect/decal/remains/ribcage,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
+/area/mine/explored/underdark)
(1,1,1) = {"
e
@@ -16115,7 +16162,7 @@ g
c
c
h
-c
+W
f
f
f
@@ -16535,7 +16582,7 @@ g
g
g
c
-c
+S
c
c
c
@@ -16677,7 +16724,7 @@ g
c
c
c
-h
+K
c
c
c
@@ -16956,7 +17003,7 @@ g
g
g
g
-c
+Z
c
c
c
@@ -17385,7 +17432,7 @@ c
s
s
H
-c
+d
g
g
g
@@ -17526,7 +17573,7 @@ h
h
s
G
-h
+L
h
g
g
@@ -17663,7 +17710,7 @@ g
g
g
g
-o
+T
o
B
o
@@ -17805,7 +17852,7 @@ g
g
g
o
-o
+R
o
o
o
@@ -17944,7 +17991,7 @@ g
g
h
g
-o
+N
o
o
o
@@ -19088,7 +19135,7 @@ o
o
o
o
-o
+R
h
g
g
diff --git a/maps/tether/submaps/underdark_pois/hard_mob.dmm b/maps/tether/submaps/underdark_pois/hard_mob.dmm
index 0ff94f7d86..51fb0f8242 100644
--- a/maps/tether/submaps/underdark_pois/hard_mob.dmm
+++ b/maps/tether/submaps/underdark_pois/hard_mob.dmm
@@ -1,13 +1,17 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
-/turf/simulated/mineral/floor/virgo3b,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
/area/mine/explored/underdark)
"b" = (
/turf/simulated/mineral/virgo3b/rich,
/area/mine/explored/underdark)
"c" = (
/obj/tether_away_spawner/underdark_hard,
-/turf/simulated/mineral/floor/virgo3b,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
/area/mine/explored/underdark)
(1,1,1) = {"
diff --git a/maps/tether/submaps/underdark_pois/normal_mob.dmm b/maps/tether/submaps/underdark_pois/normal_mob.dmm
index f29ab634e2..b733670804 100644
--- a/maps/tether/submaps/underdark_pois/normal_mob.dmm
+++ b/maps/tether/submaps/underdark_pois/normal_mob.dmm
@@ -1,13 +1,17 @@
//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
"a" = (
-/turf/simulated/mineral/floor/virgo3b,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
/area/mine/explored/underdark)
"b" = (
/turf/simulated/mineral/virgo3b/rich,
/area/mine/explored/underdark)
"c" = (
/obj/tether_away_spawner/underdark_normal,
-/turf/simulated/mineral/floor/virgo3b,
+/turf/simulated/mineral/floor/virgo3b{
+ ignore_mapgen = 1
+ },
/area/mine/explored/underdark)
(1,1,1) = {"
diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm
index a3c8db4fdd..dd6c96bb59 100644
--- a/maps/tether/tether-01-surface1.dmm
+++ b/maps/tether/tether-01-surface1.dmm
@@ -150,8 +150,16 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
- icon_state = "intact";
-
+ icon_state = "intact"
+ },
+/obj/machinery/light_switch{
+ pixel_x = -25;
+ pixel_y = 25
+ },
+/obj/structure/cable/green{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/mining_main/airlock)
@@ -168,9 +176,6 @@
/turf/simulated/floor/tiled/techmaint,
/area/tether/surfacebase/mining_main/airlock)
"aax" = (
-/obj/machinery/light_switch{
- pixel_x = 25
- },
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 9
},
@@ -186,6 +191,14 @@
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 9
},
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/structure/cable/green{
+ icon_state = "0-8"
+ },
/turf/simulated/floor/tiled,
/area/tether/surfacebase/mining_main/airlock)
"aay" = (
@@ -328,11 +341,6 @@
d2 = 2;
icon_state = "1-2"
},
-/obj/structure/cable/green{
- d1 = 2;
- d2 = 8;
- icon_state = "2-8"
- },
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 5
},
@@ -352,19 +360,9 @@
/obj/structure/railing{
dir = 4
},
-/obj/machinery/power/apc{
- dir = 2;
- name = "south bump";
- pixel_y = -28
- },
-/obj/structure/cable/green{
- d2 = 4;
- icon_state = "0-4"
- },
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 5;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/atmospherics/unary/vent_pump/high_volume{
dir = 4;
@@ -1499,8 +1497,7 @@
"adl" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/floodlight,
/turf/simulated/floor/plating,
@@ -1508,8 +1505,7 @@
"adm" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 6;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/effect/decal/cleanable/dirt,
/obj/machinery/alarm{
@@ -1869,8 +1865,6 @@
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void/mining,
/obj/item/weapon/mining_scanner,
-/obj/item/clothing/suit/space/void/mining/taur,
-/obj/item/clothing/head/helmet/space/void/mining,
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/brown/border,
/turf/simulated/floor/tiled,
@@ -1881,8 +1875,6 @@
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void/mining,
/obj/item/weapon/mining_scanner,
-/obj/item/clothing/suit/space/void/mining/taur,
-/obj/item/clothing/head/helmet/space/void/mining,
/obj/effect/floor_decal/borderfloor{
dir = 6
},
@@ -3875,8 +3867,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 9;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
@@ -5867,8 +5858,7 @@
/obj/structure/extinguisher_cabinet{
dir = 8;
icon_state = "extinguisher_closed";
- pixel_x = 30;
-
+ pixel_x = 30
},
/obj/effect/floor_decal/borderfloor/corner2{
dir = 5
@@ -8583,8 +8573,7 @@
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/alarm{
dir = 8;
@@ -9013,8 +9002,7 @@
"awy" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 9;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/floodlight,
/turf/simulated/floor/plating,
@@ -9491,8 +9479,7 @@
/obj/machinery/computer/guestpass{
dir = 2;
icon_state = "guest";
- pixel_y = 28;
-
+ pixel_y = 28
},
/obj/structure/disposalpipe/segment{
dir = 4
@@ -10814,8 +10801,7 @@
},
/obj/machinery/camera/network/northern_star{
dir = 8;
- icon_state = "camera";
-
+ icon_state = "camera"
},
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 4
@@ -10886,8 +10872,7 @@
/obj/structure/extinguisher_cabinet{
dir = 1;
icon_state = "extinguisher_closed";
- pixel_y = -32;
-
+ pixel_y = -32
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/north_stairs_one)
@@ -11639,26 +11624,22 @@
/obj/structure/sign/directions/medical{
dir = 1;
icon_state = "direction_med";
- pixel_y = 8;
-
+ pixel_y = 8
},
/obj/structure/sign/directions/science{
dir = 1;
icon_state = "direction_sci";
- pixel_y = 3;
-
+ pixel_y = 3
},
/obj/structure/sign/directions/security{
dir = 1;
icon_state = "direction_sec";
- pixel_y = -4;
-
+ pixel_y = -4
},
/obj/structure/sign/directions/engineering{
dir = 1;
icon_state = "direction_eng";
- pixel_y = -10;
-
+ pixel_y = -10
},
/turf/simulated/wall,
/area/tether/surfacebase/north_stairs_one)
@@ -11850,8 +11831,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 5;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/turf/simulated/floor/tiled,
/area/storage/surface_eva/external)
@@ -11930,8 +11910,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 8
@@ -13419,8 +13398,7 @@
},
/obj/machinery/camera/network/northern_star{
dir = 8;
- icon_state = "camera";
-
+ icon_state = "camera"
},
/obj/effect/floor_decal/borderfloor{
dir = 4
@@ -14295,7 +14273,9 @@
/turf/simulated/floor/tiled/steel_dirty,
/area/engineering/drone_fabrication)
"aIa" = (
-/obj/machinery/drone_fabricator,
+/obj/machinery/drone_fabricator{
+ fabricator_tag = "Near Atmosia"
+ },
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
@@ -15329,8 +15309,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/obj/effect/floor_decal/borderfloor{
dir = 8
@@ -15592,7 +15571,6 @@
"aOF" = (
/obj/effect/floor_decal/industrial/outline,
/turf/simulated/floor/tiled{
-
icon_state = "techmaint"
},
/area/security/checkpoint)
@@ -15808,14 +15786,12 @@
dir = 6
},
/turf/simulated/floor/tiled{
-
icon_state = "monotile"
},
/area/security/checkpoint)
"aQM" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled{
-
icon_state = "techmaint"
},
/area/security/checkpoint)
@@ -15991,8 +15967,7 @@
dir = 8;
icon_state = "phoron_map";
name = "Xenoflora Waste Buffer";
- start_pressure = 0;
-
+ start_pressure = 0
},
/turf/simulated/floor/tiled/techfloor,
/area/maintenance/lower/xenoflora)
@@ -16014,8 +15989,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/atrium_one)
@@ -16076,8 +16050,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/atrium_one)
@@ -16307,8 +16280,7 @@
},
/obj/machinery/camera/network/northern_star{
dir = 8;
- icon_state = "camera";
-
+ icon_state = "camera"
},
/turf/simulated/floor/tiled,
/area/hallway/lower/first_west)
@@ -16444,8 +16416,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/tram)
@@ -16736,7 +16707,6 @@
dir = 4
},
/turf/simulated/floor/tiled{
-
icon_state = "monotile"
},
/area/security/checkpoint)
@@ -19116,8 +19086,7 @@
/obj/structure/extinguisher_cabinet{
dir = 8;
icon_state = "extinguisher_closed";
- pixel_x = 30;
-
+ pixel_x = 30
},
/obj/effect/floor_decal/borderfloor{
dir = 6
@@ -19137,8 +19106,7 @@
/obj/effect/floor_decal/borderfloor/corner2{
dir = 10;
icon_state = "borderfloorcorner2";
- pixel_x = 0;
-
+ pixel_x = 0
},
/obj/effect/floor_decal/corner/lightgrey/bordercorner2{
dir = 10
@@ -19266,8 +19234,7 @@
/obj/structure/extinguisher_cabinet{
dir = 8;
icon_state = "extinguisher_closed";
- pixel_x = 30;
-
+ pixel_x = 30
},
/turf/simulated/floor/tiled,
/area/outpost/research/xenobiology)
@@ -19453,8 +19420,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/tram)
@@ -21055,8 +21021,7 @@
/area/tether/surfacebase/outside/outside1)
"bys" = (
/obj/structure/cable/heavyduty{
- icon_state = "1-8";
-
+ icon_state = "1-8"
},
/obj/structure/railing,
/obj/structure/railing{
@@ -21155,8 +21120,7 @@
/obj/machinery/computer/guestpass{
dir = 1;
icon_state = "guest";
- pixel_y = -28;
-
+ pixel_y = -28
},
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 1
@@ -21579,8 +21543,7 @@
"bEn" = (
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/turf/simulated/floor/plating,
/area/maintenance/asmaint2)
@@ -21925,8 +21888,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 10;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/obj/effect/floor_decal/industrial/warning,
/turf/simulated/floor/plating,
@@ -22585,8 +22547,7 @@
},
/obj/machinery/atmospherics/pipe/manifold/hidden{
dir = 8;
- icon_state = "map";
-
+ icon_state = "map"
},
/turf/simulated/floor/tiled,
/area/rnd/external)
@@ -22836,8 +22797,7 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 5;
- icon_state = "intact";
-
+ icon_state = "intact"
},
/turf/simulated/floor/tiled,
/area/rnd/external)
@@ -23669,7 +23629,6 @@
/area/crew_quarters/sleep/Dorm_6)
"bVx" = (
/obj/machinery/atmospherics/pipe/simple/visible/red{
-
icon_state = "intact";
dir = 6
},
@@ -24044,7 +24003,6 @@
/obj/machinery/atmospherics/unary/outlet_injector{
dir = 4;
icon_state = "map_injector";
-
use_power = 1;
volume_rate = 700
},
@@ -24082,8 +24040,7 @@
},
/obj/machinery/atmospherics/valve/digital/open{
dir = 4;
- icon_state = "map_valve1";
-
+ icon_state = "map_valve1"
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/atmos/processing)
@@ -24101,7 +24058,6 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/visible/black{
-
icon_state = "intact";
dir = 6
},
@@ -24160,8 +24116,7 @@
/obj/machinery/atmospherics/pipe/zpipe/up{
dir = 4;
icon_state = "up";
- level = 2;
-
+ level = 2
},
/turf/simulated/floor/tiled/techmaint,
/area/engineering/atmos/processing)
@@ -24283,8 +24238,7 @@
/obj/structure/extinguisher_cabinet{
dir = 4;
icon_state = "extinguisher_closed";
- pixel_x = -30;
-
+ pixel_x = -30
},
/obj/machinery/atmospherics/portables_connector,
/turf/simulated/floor/tiled/techfloor,
@@ -24387,7 +24341,6 @@
/area/crew_quarters/sleep/Dorm_4)
"bZc" = (
/obj/machinery/atmospherics/pipe/simple/visible/red{
-
icon_state = "intact";
dir = 5
},
@@ -24415,7 +24368,6 @@
dir = 1
},
/obj/machinery/atmospherics/pipe/manifold/visible/red{
-
icon_state = "map";
dir = 1
},
@@ -24441,7 +24393,6 @@
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/visible/blue{
-
icon_state = "intact";
dir = 9
},
@@ -24598,7 +24549,6 @@
/area/crew_quarters/sleep/Dorm_4)
"cae" = (
/obj/machinery/atmospherics/pipe/cap/visible{
-
icon_state = "cap";
dir = 8
},
@@ -24664,7 +24614,6 @@
"caH" = (
/obj/machinery/meter,
/obj/machinery/atmospherics/pipe/manifold/visible/black{
-
icon_state = "map";
dir = 4
},
@@ -24695,8 +24644,7 @@
/obj/structure/extinguisher_cabinet{
dir = 8;
icon_state = "extinguisher_closed";
- pixel_x = 30;
-
+ pixel_x = 30
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/atmos/processing)
@@ -24851,7 +24799,6 @@
/area/engineering/atmos/processing)
"cbE" = (
/obj/machinery/atmospherics/pipe/manifold/visible/black{
-
icon_state = "map";
dir = 4
},
@@ -24991,7 +24938,6 @@
dir = 5
},
/obj/machinery/atmospherics/pipe/cap/visible{
-
icon_state = "cap";
dir = 8
},
@@ -25169,7 +25115,6 @@
/area/crew_quarters/sleep/Dorm_2)
"cdf" = (
/obj/machinery/door/airlock/multi_tile/metal/mait{
-
name = "Atmospherics Maintenance";
icon_state = "door_closed";
dir = 2;
@@ -25180,7 +25125,6 @@
/area/engineering/atmos/intake)
"cdh" = (
/obj/machinery/atmospherics/unary/vent_scrubber{
-
icon_state = "map_scrubber_off";
dir = 4
},
@@ -25188,7 +25132,6 @@
/area/engineering/atmos/intake)
"cdk" = (
/obj/machinery/atmospherics/binary/pump/high_power/on{
-
icon_state = "map_on";
dir = 1
},
@@ -25242,7 +25185,6 @@
/area/outpost/research/xenobiology)
"cdu" = (
/obj/machinery/atmospherics/binary/pump/high_power/on{
-
icon_state = "map_on";
dir = 1
},
@@ -25396,8 +25338,7 @@
/obj/machinery/atmospherics/binary/pump/high_power/on{
dir = 4;
icon_state = "map_on";
- name = "Waste to Filtering";
-
+ name = "Waste to Filtering"
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/atmos/processing)
@@ -25432,7 +25373,6 @@
pixel_y = -25
},
/obj/machinery/atmospherics/pipe/simple/visible/black{
-
icon_state = "intact";
dir = 9
},
@@ -25506,8 +25446,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -25520,8 +25459,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -25534,8 +25472,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -25548,8 +25485,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -25562,8 +25498,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -25576,8 +25511,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/grey/border{
icon_state = "bordercolor";
@@ -27457,8 +27391,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
@@ -27540,8 +27473,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
@@ -27808,8 +27740,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
@@ -28179,8 +28110,7 @@
/obj/effect/floor_decal/borderfloor{
dir = 1;
icon_state = "borderfloor";
- pixel_y = 0;
-
+ pixel_y = 0
},
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
@@ -28223,8 +28153,7 @@
/obj/structure/extinguisher_cabinet{
dir = 1;
icon_state = "extinguisher_closed";
- pixel_y = -32;
-
+ pixel_y = -32
},
/turf/simulated/floor/tiled,
/area/hallway/lower/first_west)
@@ -28365,8 +28294,7 @@
/obj/effect/floor_decal/borderfloor/corner2{
dir = 10;
icon_state = "borderfloorcorner2";
- pixel_x = 0;
-
+ pixel_x = 0
},
/obj/effect/floor_decal/corner/lightgrey/bordercorner2{
dir = 10
diff --git a/maps/tether/tether-02-surface2.dmm b/maps/tether/tether-02-surface2.dmm
index 7558680532..6149a55198 100644
--- a/maps/tether/tether-02-surface2.dmm
+++ b/maps/tether/tether-02-surface2.dmm
@@ -3078,7 +3078,7 @@
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/turf/simulated/open,
/area/tether/surfacebase/north_staires_two)
@@ -3179,25 +3179,25 @@
dir = 1;
icon_state = "direction_med";
pixel_y = 8;
-
+
},
/obj/structure/sign/directions/science{
dir = 1;
icon_state = "direction_sci";
pixel_y = 3;
-
+
},
/obj/structure/sign/directions/security{
dir = 1;
icon_state = "direction_sec";
pixel_y = -4;
-
+
},
/obj/structure/sign/directions/engineering{
dir = 4;
icon_state = "direction_eng";
pixel_y = -10;
-
+
},
/turf/simulated/wall,
/area/tether/surfacebase/north_staires_two)
@@ -4396,7 +4396,7 @@
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/turf/simulated/floor/tiled/techmaint,
/area/tether/surfacebase/atrium_two)
@@ -4718,7 +4718,6 @@
"kt" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/floor_decal/industrial/danger{
-
icon_state = "danger";
dir = 8
},
@@ -5267,7 +5266,7 @@
dir = 4;
icon_state = "extinguisher_closed";
pixel_x = -30;
-
+
},
/turf/simulated/floor/tiled,
/area/rnd/research/testingrange)
@@ -6577,13 +6576,11 @@
"oe" = (
/obj/structure/table/reinforced,
/obj/machinery/door/window/eastleft{
-
name = "Janitorial Desk";
icon_state = "left";
dir = 2
},
/obj/machinery/door/window/eastleft{
-
name = "Janitorial Desk";
icon_state = "left";
dir = 1
@@ -7581,7 +7578,7 @@
dir = 4;
icon_state = "extinguisher_closed";
pixel_x = -30;
-
+
},
/turf/simulated/floor/tiled,
/area/rnd/lockers)
@@ -8690,7 +8687,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled,
/area/engineering/lower/lobby)
@@ -9573,7 +9570,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
icon_state = "intact";
-
+
},
/obj/effect/floor_decal/steeldecal/steel_decals_central4,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -10205,7 +10202,7 @@
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/turf/simulated/floor/tiled/techfloor,
/area/rnd/workshop)
@@ -10594,7 +10591,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/yellow{
dir = 5;
icon_state = "intact";
-
+
},
/obj/structure/cable/cyan{
d1 = 1;
@@ -10888,7 +10885,7 @@
dir = 1;
icon_state = "guest";
pixel_y = -28;
-
+
},
/turf/simulated/floor/tiled,
/area/rnd/research)
@@ -11186,7 +11183,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 5;
icon_state = "intact";
-
+
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
@@ -11237,7 +11234,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 10;
icon_state = "intact";
-
+
},
/obj/structure/cable/cyan{
d1 = 1;
@@ -12016,7 +12013,6 @@
/area/engineering/atmos/hallway)
"wQ" = (
/obj/machinery/computer/atmos_alert{
-
icon_state = "computer";
dir = 1
},
@@ -12039,7 +12035,6 @@
/area/engineering/atmos/monitoring)
"wT" = (
/obj/machinery/computer/rcon{
-
icon_state = "computer";
dir = 1
},
@@ -12053,7 +12048,6 @@
/area/engineering/atmos/monitoring)
"wV" = (
/obj/machinery/computer/power_monitor{
-
icon_state = "computer";
dir = 1
},
@@ -12234,7 +12228,7 @@
/obj/machinery/atmospherics/pipe/manifold/hidden{
dir = 8;
icon_state = "map";
-
+
},
/turf/simulated/floor/tiled/techfloor,
/area/server)
@@ -12242,7 +12236,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9;
icon_state = "intact";
-
+
},
/obj/effect/floor_decal/techfloor{
dir = 4
@@ -12381,7 +12375,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
dir = 5;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled,
/area/engineering/atmos/hallway)
@@ -13885,7 +13879,7 @@
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/turf/simulated/floor/tiled/steel_dirty,
/area/rnd/research_storage)
@@ -14130,7 +14124,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/green{
dir = 5;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/atmos)
@@ -14145,13 +14139,13 @@
/obj/machinery/atmospherics/pipe/simple/visible/green{
dir = 9;
icon_state = "intact";
-
+
},
/obj/structure/extinguisher_cabinet{
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/turf/simulated/floor/tiled/techmaint,
/area/engineering/atmos)
@@ -14257,7 +14251,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/green{
dir = 9;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled/techfloor,
/area/engineering/atmos)
@@ -14334,7 +14328,6 @@
/area/engineering/atmos)
"Bv" = (
/obj/machinery/atmospherics/binary/pump/high_power/on{
-
icon_state = "map_on";
dir = 1
},
@@ -14392,7 +14385,6 @@
/area/engineering/atmos)
"BD" = (
/obj/machinery/atmospherics/binary/pump/high_power/on{
-
icon_state = "map_on";
dir = 4
},
@@ -14449,7 +14441,7 @@
/obj/machinery/atmospherics/valve/digital/open{
dir = 4;
icon_state = "map_valve1";
-
+
},
/turf/simulated/floor/tiled/techmaint,
/area/engineering/atmos)
@@ -14501,7 +14493,6 @@
/area/engineering/atmos)
"BU" = (
/obj/machinery/atmospherics/pipe/simple/visible/green{
-
icon_state = "intact";
dir = 5
},
@@ -14609,7 +14600,7 @@
/obj/machinery/atmospherics/pipe/simple/visible/green{
dir = 9;
icon_state = "intact";
-
+
},
/obj/effect/floor_decal/industrial/warning{
dir = 4
@@ -14899,7 +14890,6 @@
dir = 8
},
/obj/machinery/atmospherics/pipe/cap/visible{
-
icon_state = "cap";
dir = 1
},
@@ -15069,7 +15059,7 @@
dir = 8;
icon_state = "extinguisher_closed";
pixel_x = 30;
-
+
},
/obj/effect/floor_decal/techfloor{
dir = 6
@@ -15579,8 +15569,6 @@
},
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/suit/space/void/atmos/taur,
-/obj/item/clothing/head/helmet/space/void/atmos,
/obj/item/clothing/suit/space/void/atmos,
/obj/item/clothing/head/helmet/space/void/atmos,
/turf/simulated/floor/tiled/techfloor,
@@ -15601,8 +15589,6 @@
},
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/mask/breath,
-/obj/item/clothing/suit/space/void/atmos/taur,
-/obj/item/clothing/head/helmet/space/void/atmos,
/obj/item/clothing/suit/space/void/atmos,
/obj/item/clothing/head/helmet/space/void/atmos,
/turf/simulated/floor/tiled/techfloor,
@@ -15976,7 +15962,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 5;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled,
/area/tcommsat/computer)
@@ -15999,7 +15985,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 10;
icon_state = "intact";
-
+
},
/turf/simulated/floor/tiled,
/area/tcommsat/computer)
@@ -16673,7 +16659,7 @@
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 5;
icon_state = "intact";
-
+
},
/obj/machinery/airlock_sensor/airlock_exterior{
frequency = 1381;
@@ -17676,7 +17662,7 @@
dir = 1;
icon_state = "borderfloor";
pixel_y = 0;
-
+
},
/obj/effect/floor_decal/corner/lime/border{
dir = 1
@@ -18033,7 +18019,7 @@
dir = 1;
icon_state = "borderfloor";
pixel_y = 0;
-
+
},
/obj/effect/floor_decal/corner/lime/border{
dir = 1
diff --git a/maps/tether/tether-05-station1.dmm b/maps/tether/tether-05-station1.dmm
index 0c6526b390..9714362a80 100644
--- a/maps/tether/tether-05-station1.dmm
+++ b/maps/tether/tether-05-station1.dmm
@@ -374,9 +374,7 @@
/turf/simulated/floor/tiled/techmaint,
/area/engineering/engine_smes)
"aaY" = (
-/obj/structure/frame{
- anchored = 0
- },
+/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/shuttle/floor/darkred,
/area/shuttle/excursion/tether)
"aaZ" = (
@@ -5074,11 +5072,9 @@
/obj/machinery/atmospherics/pipe/simple/visible/yellow{
dir = 10
},
-/obj/machinery/atmospherics/pipe/tank/air{
- dir = 4;
- icon_state = "air_map";
- start_pressure = 300;
- volume = 20000
+/obj/machinery/portable_atmospherics/canister/air/airlock,
+/obj/machinery/atmospherics/portables_connector{
+ dir = 4
},
/turf/simulated/shuttle/floor/darkred,
/area/shuttle/excursion/tether)
@@ -7378,7 +7374,7 @@
"avf" = (
/obj/effect/floor_decal/industrial/warning,
/turf/simulated/floor/airless,
-/area/engineering/engineering_airlock)
+/area/space)
"avg" = (
/obj/structure/cable/green{
d1 = 4;
@@ -9442,9 +9438,8 @@
req_one_access = list(11,24)
},
/obj/effect/floor_decal/industrial/warning/corner,
-/obj/machinery/light/small,
/turf/simulated/floor/airless,
-/area/engineering/engineering_airlock)
+/area/space)
"aAR" = (
/obj/structure/window/reinforced{
dir = 8;
@@ -9460,10 +9455,6 @@
req_access = list(24)
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/atmos/taur,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/atmos,
-/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/void/atmos,
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void/atmos,
@@ -9500,10 +9491,6 @@
req_access = list(24)
},
/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/atmos/taur,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/atmos,
-/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/void/atmos,
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void/atmos,
@@ -11228,29 +11215,6 @@
/obj/item/clothing/head/helmet/space/void/engineering,
/turf/simulated/floor/tiled,
/area/engineering/engine_eva)
-"aFM" = (
-/obj/structure/window/reinforced{
- dir = 8;
- health = 1e+006
- },
-/obj/structure/table/rack{
- dir = 8;
- layer = 2.6
- },
-/obj/machinery/door/window/northleft{
- name = "Engineering Hardsuits";
- req_access = list(11)
- },
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/engineering/taur,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/engineering,
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/engineering,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/engineering,
-/turf/simulated/floor/tiled,
-/area/engineering/engine_eva)
"aFO" = (
/obj/structure/window/reinforced{
dir = 4
@@ -11269,28 +11233,6 @@
/obj/item/clothing/head/helmet/space/void/engineering,
/turf/simulated/floor/tiled,
/area/engineering/engine_eva)
-"aFR" = (
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/table/rack{
- dir = 8;
- layer = 2.6
- },
-/obj/machinery/door/window/northright{
- name = "Engineering Hardsuits";
- req_access = list(11)
- },
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/engineering/taur,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/engineering,
-/obj/item/clothing/shoes/magboots,
-/obj/item/clothing/suit/space/void/engineering,
-/obj/item/clothing/mask/breath,
-/obj/item/clothing/head/helmet/space/void/engineering,
-/turf/simulated/floor/tiled,
-/area/engineering/engine_eva)
"aFT" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
@@ -20944,8 +20886,8 @@
/obj/structure/table/rack/shelf,
/obj/item/weapon/tank/oxygen,
/obj/item/device/suit_cooling_unit,
-/obj/item/clothing/suit/space,
-/obj/item/clothing/head/helmet/space,
+/obj/item/clothing/suit/space/void,
+/obj/item/clothing/head/helmet/space/void,
/obj/effect/floor_decal/steeldecal/steel_decals9,
/obj/effect/floor_decal/steeldecal/steel_decals9{
dir = 4
@@ -21617,20 +21559,6 @@
},
/turf/simulated/floor/tiled,
/area/tether/station/explorer_meeting)
-"hgY" = (
-/obj/machinery/washing_machine,
-/obj/effect/floor_decal/steeldecal/steel_decals9,
-/obj/effect/floor_decal/steeldecal/steel_decals9{
- dir = 4
- },
-/obj/effect/floor_decal/steeldecal/steel_decals9{
- dir = 1
- },
-/obj/effect/floor_decal/steeldecal/steel_decals9{
- dir = 8
- },
-/turf/simulated/floor/tiled,
-/area/tether/station/explorer_meeting)
"hJg" = (
/obj/structure/table/woodentable,
/obj/item/weapon/paper_bin{
@@ -21657,6 +21585,9 @@
},
/turf/simulated/floor/tiled,
/area/tether/station/explorer_meeting)
+"jjb" = (
+/turf/simulated/mineral/vacuum,
+/area/tether/station/explorer_meeting)
"jop" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/purple/border,
@@ -21670,6 +21601,7 @@
/obj/item/device/taperecorder,
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/purple/border,
+/obj/item/weapon/paper_bin,
/turf/simulated/floor/tiled,
/area/tether/station/explorer_meeting)
"jDS" = (
@@ -21974,6 +21906,7 @@
icon_state = "bordercolor";
dir = 5
},
+/obj/machinery/washing_machine,
/turf/simulated/floor/tiled,
/area/tether/station/explorer_meeting)
"rhA" = (
@@ -22091,6 +22024,20 @@
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/turf/simulated/floor/tiled,
/area/tether/station/explorer_meeting)
+"tWI" = (
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9{
+ dir = 8
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals9,
+/obj/machinery/portable_atmospherics/canister/oxygen,
+/turf/simulated/floor/tiled,
+/area/tether/station/explorer_prep)
"uzS" = (
/obj/structure/table/woodentable,
/obj/item/weapon/folder/blue,
@@ -27132,7 +27079,7 @@ aue
aAS
auA
auA
-aFM
+aFL
aSC
aoq
aLy
@@ -27274,7 +27221,7 @@ aue
aBl
auB
avj
-aFR
+aFO
aSC
aTK
aLG
@@ -34510,7 +34457,7 @@ aaU
avK
qgR
aad
-aac
+aae
aaT
aAC
acp
@@ -34652,7 +34599,7 @@ aap
avK
qgR
aad
-aac
+aae
aaT
aAF
acp
@@ -34794,7 +34741,7 @@ afd
ate
qgR
aad
-aac
+aae
aaT
aAE
act
@@ -34936,7 +34883,7 @@ arw
vrH
auU
aad
-aac
+aae
aaT
aAL
aCx
@@ -35078,7 +35025,7 @@ nxL
coV
abc
aad
-aac
+aae
aaT
aAH
aCw
@@ -36208,7 +36155,7 @@ bQJ
bQT
bQJ
bQJ
-aiv
+bQJ
aiv
jDS
wLj
@@ -36349,9 +36296,9 @@ aei
bQK
bQK
bQK
+tWI
jZJ
-aiv
-hgY
+nYM
uDP
mFo
mFo
@@ -36487,13 +36434,13 @@ aaa
aaa
aaa
aac
-aac
+aei
aiv
aiv
aiv
aiv
aiv
-hgY
+nYM
qzk
dMN
mcn
@@ -36634,13 +36581,13 @@ aac
aac
aac
aac
+jjb
nYM
dvn
ggi
ggi
ggi
ggi
-ggi
wSk
ash
amg
diff --git a/maps/tether/tether-06-station2.dmm b/maps/tether/tether-06-station2.dmm
index 9afea299c7..6bd9ba45f0 100644
--- a/maps/tether/tether-06-station2.dmm
+++ b/maps/tether/tether-06-station2.dmm
@@ -7690,40 +7690,23 @@
/obj/effect/floor_decal/steeldecal/steel_decals7,
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
-"nj" = (
-/obj/structure/disposalpipe/segment{
+"nk" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/lightgrey/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 4
},
+/obj/effect/floor_decal/steeldecal/steel_decals7,
/obj/machinery/light{
dir = 1
},
-/obj/effect/floor_decal/borderfloor{
- dir = 1
- },
-/obj/effect/floor_decal/corner/lightgrey/border{
- dir = 1
- },
-/obj/effect/floor_decal/steeldecal/steel_decals7{
- dir = 4
- },
-/obj/effect/floor_decal/steeldecal/steel_decals7,
-/turf/simulated/floor/tiled,
-/area/hallway/station/starboard)
-"nk" = (
/obj/structure/disposalpipe/segment{
- dir = 8;
- icon_state = "pipe-c"
- },
-/obj/effect/floor_decal/borderfloor{
- dir = 1
- },
-/obj/effect/floor_decal/corner/lightgrey/border{
- dir = 1
- },
-/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 4
},
-/obj/effect/floor_decal/steeldecal/steel_decals7,
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
"nl" = (
@@ -7746,33 +7729,37 @@
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
},
-/obj/effect/floor_decal/borderfloor/corner2{
+/obj/effect/floor_decal/steeldecal/steel_decals7{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7,
+/obj/structure/disposalpipe/segment{
+ dir = 8;
+ icon_state = "pipe-c"
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/starboard)
+"nn" = (
+/obj/effect/floor_decal/borderfloor{
dir = 1
},
-/obj/effect/floor_decal/corner/lightgrey/bordercorner2{
+/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
},
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 4
},
/obj/effect/floor_decal/steeldecal/steel_decals7,
-/turf/simulated/floor/tiled,
-/area/hallway/station/starboard)
-"nn" = (
/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
},
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
- dir = 8
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
},
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 4
- },
-/obj/effect/floor_decal/steeldecal/steel_decals4{
- dir = 9
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
},
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
@@ -7784,34 +7771,44 @@
dir = 1
},
/obj/effect/floor_decal/borderfloor/corner2{
- dir = 4
+ dir = 1
},
/obj/effect/floor_decal/corner/lightgrey/bordercorner2{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
+ dir = 1
},
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 4
},
/obj/effect/floor_decal/steeldecal/steel_decals7,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
"np" = (
-/obj/effect/floor_decal/borderfloor{
- dir = 1
- },
-/obj/effect/floor_decal/corner/lightgrey/border{
- dir = 1
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 4
},
-/obj/effect/floor_decal/steeldecal/steel_decals7{
- dir = 4
+/obj/effect/floor_decal/steeldecal/steel_decals4{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
},
-/obj/effect/floor_decal/steeldecal/steel_decals7,
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
"nq" = (
@@ -7821,13 +7818,19 @@
/obj/effect/floor_decal/corner/lightgrey/border{
dir = 1
},
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 10
+/obj/effect/floor_decal/borderfloor/corner2{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/lightgrey/bordercorner2{
+ dir = 4
},
/obj/effect/floor_decal/steeldecal/steel_decals7{
dir = 4
},
/obj/effect/floor_decal/steeldecal/steel_decals7,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 10
+ },
/turf/simulated/floor/tiled,
/area/hallway/station/starboard)
"nr" = (
@@ -8903,7 +8906,8 @@
/obj/machinery/door/airlock/glass_command{
id_tag = "evadoors";
name = "E.V.A.";
- req_one_access = list(18)
+ req_access = list();
+ req_one_access = list(18,19,43,67)
},
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/tiled/steel_grid,
@@ -8924,7 +8928,8 @@
/obj/machinery/door/airlock/glass_command{
id_tag = "evadoors";
name = "E.V.A.";
- req_one_access = list(18)
+ req_access = list();
+ req_one_access = list(18,19,43,67)
},
/obj/machinery/door/firedoor/glass,
/obj/structure/cable/green{
@@ -9141,7 +9146,6 @@
/obj/item/clothing/head/helmet/space/void/medical,
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/void/medical,
-/obj/item/clothing/suit/space/void/medical/taur,
/obj/item/clothing/head/helmet/space/void/medical,
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
@@ -9265,7 +9269,6 @@
/obj/item/clothing/head/helmet/space/void/security,
/obj/item/clothing/shoes/magboots,
/obj/item/clothing/suit/space/void/security,
-/obj/item/clothing/suit/space/void/security/taur,
/obj/item/clothing/head/helmet/space/void/security,
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
@@ -10510,7 +10513,6 @@
/obj/item/clothing/suit/space/void/atmos,
/obj/item/clothing/mask/breath,
/obj/item/clothing/head/helmet/space/void/atmos,
-/obj/item/clothing/suit/space/void/atmos/taur,
/obj/item/clothing/head/helmet/space/void/atmos,
/turf/simulated/floor/tiled/dark,
/area/ai_monitored/storage/eva)
@@ -14424,7 +14426,7 @@
/area/bridge/meeting_room)
"ys" = (
/obj/machinery/camera/network/command{
- c_tag = "Head of Personnel Office";
+ c_tag = "Command Meeting Room East";
dir = 9
},
/turf/simulated/floor/wood,
@@ -17466,6 +17468,16 @@
/obj/structure/window/reinforced,
/turf/simulated/floor/plating,
/area/crew_quarters/medbreak)
+"Dl" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Dp" = (
/obj/item/weapon/paper,
/turf/simulated/floor,
@@ -17487,6 +17499,15 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"DN" = (
+/obj/structure/table/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"DR" = (
/obj/random/trash,
/obj/effect/floor_decal/techfloor{
@@ -17527,6 +17548,14 @@
/obj/random/maintenance/clean,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"EF" = (
+/obj/structure/table/steel,
+/obj/item/weapon/paper_bin{
+ pixel_x = -3;
+ pixel_y = 7
+ },
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"EH" = (
/obj/random/junk,
/obj/effect/floor_decal/techfloor{
@@ -17534,6 +17563,22 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"EJ" = (
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/lightgrey/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7,
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/starboard)
"Fe" = (
/obj/structure/table/glass,
/obj/item/weapon/surgical/scalpel,
@@ -17645,6 +17690,10 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Hk" = (
+/obj/random/junk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Ik" = (
/obj/machinery/light/small{
dir = 8
@@ -17680,6 +17729,21 @@
/obj/machinery/door/firedoor/glass,
/turf/simulated/floor/plating,
/area/maintenance/station/sec_lower)
+"JK" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"JL" = (
+/obj/structure/table/steel,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"JO" = (
/obj/machinery/door/airlock/maintenance/common,
/turf/simulated/floor,
@@ -17707,6 +17771,24 @@
/obj/item/roller,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"KV" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/catwalk,
+/obj/machinery/alarm{
+ dir = 8;
+ icon_state = "alarm0";
+ pixel_x = 24
+ },
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"KX" = (
+/obj/structure/ladder/up,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Lf" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/catwalk,
@@ -17716,6 +17798,9 @@
/obj/structure/inflatable,
/turf/simulated/mineral/floor/vacuum,
/area/mine/explored/upper_level)
+"Ll" = (
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Ln" = (
/obj/machinery/door/airlock/maintenance/common,
/obj/machinery/door/firedoor/glass,
@@ -17731,6 +17816,16 @@
/obj/random/maintenance/engineering,
/turf/simulated/floor/airless,
/area/maintenance/station/sec_lower)
+"LQ" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Mn" = (
/obj/structure/table/steel,
/turf/simulated/floor,
@@ -17886,6 +17981,12 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"OJ" = (
+/turf/simulated/wall,
+/area/maintenance/evahallway)
+"OQ" = (
+/turf/simulated/mineral/vacuum,
+/area/maintenance/evahallway)
"OY" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -17896,6 +17997,15 @@
/obj/structure/catwalk,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Pl" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Py" = (
/obj/structure/bed/chair{
dir = 4
@@ -18007,6 +18117,21 @@
/obj/structure/catwalk,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Rd" = (
+/obj/structure/cable{
+ d1 = 2;
+ d2 = 4;
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Rf" = (
/obj/structure/closet/crate,
/obj/random/junk,
@@ -18021,6 +18146,22 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"RA" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/catwalk,
+/obj/machinery/light/small,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"RB" = (
/obj/structure/grille,
/obj/structure/window/reinforced/full,
@@ -18088,6 +18229,15 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Sv" = (
+/obj/structure/table/steel,
+/obj/machinery/alarm{
+ dir = 8;
+ icon_state = "alarm0";
+ pixel_x = 24
+ },
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"SI" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/floor,
@@ -18099,6 +18249,40 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"SK" = (
+/obj/structure/table/rack{
+ dir = 8;
+ layer = 2.9
+ },
+/obj/random/maintenance/engineering,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"Ta" = (
+/obj/structure/table/steel,
+/obj/random/action_figure,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"Tf" = (
+/obj/structure/table/steel,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/engineering,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"Tl" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/starboard)
"Tm" = (
/obj/effect/floor_decal/techfloor{
dir = 8
@@ -18143,6 +18327,11 @@
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/plating,
/area/security/brig)
+"TB" = (
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"TW" = (
/obj/effect/floor_decal/techfloor{
dir = 1
@@ -18162,6 +18351,50 @@
/obj/structure/catwalk,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Uo" = (
+/obj/structure/table/steel,
+/obj/machinery/light/small{
+ dir = 8;
+ pixel_y = 0
+ },
+/turf/simulated/floor,
+/area/maintenance/evahallway)
+"Uu" = (
+/obj/structure/cable/green{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8"
+ },
+/obj/effect/floor_decal/borderfloor,
+/obj/effect/floor_decal/corner/lightgrey/border,
+/obj/effect/floor_decal/steeldecal/steel_decals7{
+ dir = 8
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7{
+ dir = 1
+ },
+/obj/structure/cable{
+ icon_state = "1-8"
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/starboard)
+"UB" = (
+/obj/structure/cable{
+ d2 = 8;
+ icon_state = "0-8"
+ },
+/obj/structure/cable{
+ icon_state = "16-0"
+ },
+/obj/machinery/atmospherics/pipe/zpipe/up/supply{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{
+ icon_state = "up-scrubbers";
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"UH" = (
/obj/effect/floor_decal/techfloor{
dir = 8
@@ -18182,6 +18415,10 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"UX" = (
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"UZ" = (
/obj/structure/inflatable,
/turf/simulated/floor,
@@ -18238,6 +18475,19 @@
},
/turf/simulated/floor/tiled/white,
/area/maintenance/station/sec_lower)
+"WI" = (
+/obj/structure/cable{
+ icon_state = "2-4"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
"Xc" = (
/obj/structure/table/glass,
/obj/item/weapon/storage/box/syringes{
@@ -18256,6 +18506,27 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Xw" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/floor_decal/borderfloor{
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/lightgrey/border{
+ dir = 1
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7{
+ dir = 4
+ },
+/obj/effect/floor_decal/steeldecal/steel_decals7,
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor/tiled,
+/area/hallway/station/starboard)
"XA" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -18340,6 +18611,15 @@
},
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"Zx" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/evahallway)
"ZE" = (
/obj/structure/table/steel,
/obj/random/maintenance/engineering,
@@ -18368,6 +18648,11 @@
/obj/effect/floor_decal/techfloor,
/turf/simulated/floor,
/area/maintenance/station/sec_lower)
+"ZX" = (
+/obj/structure/table/steel,
+/obj/item/weapon/pen,
+/turf/simulated/floor,
+/area/maintenance/evahallway)
(1,1,1) = {"
aa
@@ -30918,9 +31203,9 @@ dF
ek
bU
bg
-ac
-ac
-ac
+OQ
+OQ
+OQ
dE
hK
ip
@@ -31060,9 +31345,9 @@ dG
el
bU
bg
-ac
-ac
-ac
+UX
+KX
+OQ
dE
dE
dE
@@ -31202,22 +31487,22 @@ dH
dH
eL
bg
-ac
-ac
-ac
-ac
-ac
-ac
-iY
-iY
-kc
-ky
-kc
-lW
-iY
-nh
-nP
-oy
+UX
+OQ
+OQ
+OQ
+OQ
+OQ
+Rd
+JK
+Dl
+KV
+Pl
+Pl
+LQ
+Xw
+Tl
+Uu
oY
pw
qb
@@ -31344,20 +31629,20 @@ dI
em
em
bg
-ac
-ac
-ac
-ac
-ac
-ac
+UX
+UX
+UX
+WI
+JK
+JK
+RA
iY
-js
-kc
-kz
-kc
-lX
-my
-nj
+iY
+iY
+iY
+iY
+iY
+nh
nP
oy
oY
@@ -31486,19 +31771,19 @@ dJ
dJ
dJ
bg
-ac
-ac
-ac
-ac
-ac
-ac
+OJ
+OJ
+OQ
+UB
+OQ
+Ll
+iY
+iY
+kc
+ky
+kc
+lW
iY
-jt
-kd
-kA
-lr
-lY
-mz
nk
nP
oy
@@ -31629,19 +31914,19 @@ aP
aP
aP
ac
-ac
-ac
-ac
-ac
-ac
+OJ
+Hk
+Ll
+OQ
+Ll
iY
-ju
+js
kc
-kB
+kz
kc
-kc
-mA
-nl
+lX
+my
+EJ
nP
oz
oZ
@@ -31771,18 +32056,18 @@ aP
aP
aP
ac
-ac
-ac
-ac
-ac
-ac
-iY
-jv
-kc
-kC
-kc
-lZ
+OJ
+Ll
+Ll
+OQ
+Ll
iY
+jt
+kd
+kA
+lr
+lY
+mz
nm
nP
oA
@@ -31913,18 +32198,18 @@ aP
aP
aP
aP
-ac
-ac
-ac
-ac
-ac
+OJ
+OJ
+OJ
+OJ
+TB
iY
-jw
+ju
kc
-kD
-ls
-ma
-mB
+kB
+kc
+kc
+mA
nn
nR
oB
@@ -32055,17 +32340,17 @@ aP
aP
aP
aP
-ac
-ac
-ac
-ac
-ac
+Zx
+Ll
+Ll
+Uo
+Ll
iY
-jx
+jv
kc
-kE
+kC
kc
-mb
+lZ
iY
no
lJ
@@ -32197,18 +32482,18 @@ aP
aP
aP
aP
-ac
-ac
-ac
-ac
-ac
+OJ
+DN
+Ll
+EF
+Ll
iY
-jy
+jw
kc
-kF
-kc
-kc
-mA
+kD
+ls
+ma
+mB
np
nS
oD
@@ -32339,18 +32624,18 @@ aP
aP
aP
aP
-aP
-ac
-ac
-ac
-ac
+Zx
+Ll
+Ll
+ZX
+Ll
iY
-jt
-kd
-kG
-lr
+jx
kc
-mA
+kE
+kc
+mb
+iY
nq
nT
oE
@@ -32481,18 +32766,18 @@ aP
aP
aP
aP
-aP
-ac
-ac
-ac
-ac
+OJ
+SK
+Ll
+Ll
+Ll
iY
-jz
+jy
kc
-kz
+kF
kc
kc
-iY
+mA
nl
nU
ot
@@ -32623,18 +32908,18 @@ aP
aP
aP
aP
-aP
-ac
-ac
-ac
-ac
+Zx
+Ta
+JL
+Sv
+Tf
iY
-iY
-ke
-kH
+jt
+kd
+kG
+lr
kc
-mc
-iY
+mA
nr
nV
oF
@@ -32765,17 +33050,17 @@ aP
aP
aP
aP
-aP
-ac
-ac
-ac
-ac
-ac
-iY
-iY
-iY
-iY
+OJ
+OJ
+OJ
+OJ
+OJ
iY
+jz
+kc
+kz
+kc
+kc
iY
ns
ns
@@ -32912,13 +33197,13 @@ aa
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
-ac
+iY
+iY
+ke
+kH
+kc
+mc
+iY
ac
ac
ac
@@ -33055,12 +33340,12 @@ ac
ac
ac
ac
-ac
-ac
-ac
-ac
-ac
-ac
+iY
+iY
+iY
+iY
+iY
+iY
ac
ac
ac
diff --git a/maps/tether/tether-07-station3.dmm b/maps/tether/tether-07-station3.dmm
index 65c14a3614..fdf917305a 100644
--- a/maps/tether/tether-07-station3.dmm
+++ b/maps/tether/tether-07-station3.dmm
@@ -396,7 +396,9 @@
},
/obj/structure/table/steel,
/obj/machinery/recharger,
-/obj/machinery/camera/network/security,
+/obj/machinery/camera/network/security{
+ c_tag = "SEC - Blue Armory North"
+ },
/turf/simulated/floor/tiled/dark,
/area/security/armory/blue)
"aM" = (
@@ -867,6 +869,7 @@
pixel_y = -6
},
/obj/machinery/camera/network/security{
+ c_tag = "SEC - Blue Armory West";
dir = 4
},
/turf/simulated/floor/tiled/dark,
@@ -1651,7 +1654,7 @@
/obj/machinery/deployable/barrier,
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/camera/network/security{
- c_tag = "SEC - Head of Security's Office";
+ c_tag = "SEC - Blue Armory East";
dir = 1
},
/turf/simulated/floor/tiled/dark,
@@ -15965,7 +15968,7 @@
dir = 4
},
/obj/machinery/camera/network/medbay{
- c_tag = "MED - Break Room East";
+ c_tag = "MED - Chemistry";
dir = 8
},
/obj/machinery/atmospherics/unary/vent_pump/on{
@@ -22093,7 +22096,7 @@
},
/obj/machinery/disposal,
/obj/machinery/camera/network/medbay{
- c_tag = "MED - Break Room West";
+ c_tag = "MED - Recovery Room";
dir = 4
},
/turf/simulated/floor/tiled/white,
@@ -22805,11 +22808,143 @@
/obj/effect/landmark/map_data/virgo3b,
/turf/space,
/area/space)
+"Lc" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Ll" = (
+/obj/structure/closet/crate,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/engineering,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Lm" = (
+/turf/simulated/mineral/vacuum,
+/area/maintenance/station/ai)
+"Lp" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Lw" = (
+/obj/structure/bed/chair{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Lx" = (
+/obj/structure/table/steel,
+/obj/item/weapon/flame/candle,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"LV" = (
/obj/structure/table/woodentable,
/obj/item/weapon/clipboard,
/turf/simulated/floor/carpet/blue,
/area/medical/psych)
+"LW" = (
+/turf/simulated/mineral/floor/cave,
+/area/maintenance/station/ai)
+"LZ" = (
+/obj/machinery/door/airlock/external{
+ locked = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Mb" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Md" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Mk" = (
+/turf/simulated/wall,
+/area/maintenance/station/ai)
+"Mz" = (
+/obj/structure/closet/emcloset,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"MG" = (
+/obj/machinery/alarm{
+ dir = 4;
+ pixel_x = -23;
+ pixel_y = 0
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"MM" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/medical,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"MU" = (
+/obj/structure/sign/securearea{
+ desc = "A warning sign which reads 'EXTERNAL AIRLOCK'";
+ icon_state = "space";
+ layer = 4;
+ name = "EXTERNAL AIRLOCK";
+ pixel_x = 0;
+ pixel_y = -32
+ },
+/obj/structure/closet/emcloset,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"MW" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/railing,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Nd" = (
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ne" = (
+/obj/machinery/door/firedoor/glass,
+/obj/structure/lattice,
+/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/zpipe/down/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ icon_state = "32-4"
+ },
+/turf/simulated/open,
+/area/maintenance/station/ai)
+"Nk" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 4
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Nn" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 9;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
"Nw" = (
/obj/structure/table/standard,
/obj/item/device/healthanalyzer,
@@ -22844,6 +22979,201 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/surgery2)
+"NE" = (
+/obj/item/weapon/storage/laundry_basket,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ob" = (
+/obj/machinery/alarm{
+ frequency = 1441;
+ pixel_y = 22
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Of" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 6
+ },
+/obj/machinery/alarm{
+ dir = 4;
+ icon_state = "alarm0";
+ pixel_x = -22
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Oj" = (
+/obj/structure/bed/chair{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ok" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 4;
+ icon_state = "1-4"
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Oo" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ frequency = 1379;
+ id_tag = "eva_port_maint_pump"
+ },
+/obj/random/junk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Op" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
+ icon_state = "map";
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"OM" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"OX" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
+ icon_state = "map";
+ dir = 8
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Pg" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/cargo,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Pk" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 8;
+ icon_state = "1-8"
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ps" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/engineering,
+/obj/random/maintenance/clean,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"PS" = (
+/obj/machinery/atmospherics/portables_connector,
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"PU" = (
+/obj/structure/catwalk,
+/obj/machinery/light/small{
+ icon_state = "bulb1";
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"PV" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Qa" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 1;
+ frequency = 1379;
+ icon_state = "map_vent";
+ id_tag = "eva_port_maint_pump"
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Qi" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 5;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Qn" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Qq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Qs" = (
+/obj/machinery/meter,
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 10;
+ icon_state = "intact";
+
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"QC" = (
+/obj/structure/table/steel,
+/obj/random/maintenance,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"QG" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/obj/structure/catwalk,
+/obj/machinery/light/small{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"QY" = (
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"QZ" = (
+/obj/machinery/floodlight,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Rd" = (
+/obj/structure/railing,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Rs" = (
+/obj/random/junk,
+/turf/simulated/mineral/floor/cave,
+/area/maintenance/station/ai)
+"Rw" = (
+/obj/structure/catwalk,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"RB" = (
/obj/effect/floor_decal/steeldecal/steel_decals6{
dir = 10
@@ -22853,30 +23183,404 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/surgery)
+"RK" = (
+/obj/effect/floor_decal/industrial/warning,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"RV" = (
/obj/effect/floor_decal/industrial/loading{
dir = 1
},
/turf/simulated/floor/tiled/white,
/area/medical/surgery)
+"RY" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"RZ" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/simulated/mineral/vacuum,
+/area/maintenance/station/ai)
+"Sb" = (
+/obj/structure/catwalk,
+/obj/machinery/power/apc{
+ dir = 4;
+ name = "east bump";
+ pixel_x = 28
+ },
+/obj/structure/cable{
+ d2 = 2;
+ icon_state = "0-2"
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Sd" = (
+/obj/structure/closet/crate,
+/obj/item/weapon/pickaxe,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Sq" = (
+/obj/structure/catwalk,
+/obj/machinery/alarm{
+ frequency = 1441;
+ pixel_y = 22
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"St" = (
/obj/structure/closet/crate/bin,
/turf/simulated/floor/wood,
/area/medical/psych)
+"SD" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"SJ" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/clean,
+/obj/random/maintenance/research,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"SQ" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"SS" = (
+/obj/machinery/door/airlock/external{
+ locked = 1
+ },
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ta" = (
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ts" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 1
+ },
+/obj/random/junk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ua" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
+ icon_state = "map";
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"Uc" = (
/obj/effect/floor_decal/industrial/loading,
/turf/simulated/floor/tiled/white,
/area/medical/surgery)
+"Ud" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ue" = (
+/obj/machinery/atmospherics/pipe/manifold/hidden/cyan{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Uf" = (
+/obj/machinery/door/airlock/external{
+ locked = 1
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 4
+ },
+/obj/machinery/door/firedoor/glass,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Uj" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 1
+ },
+/obj/structure/closet/crate,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ux" = (
+/obj/machinery/door/firedoor/border_only,
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"UO" = (
+/obj/structure/cable{
+ d1 = 4;
+ d2 = 8;
+ icon_state = "4-8";
+ pixel_x = 0
+ },
+/obj/structure/catwalk,
+/obj/machinery/firealarm{
+ dir = 2;
+ layer = 3.3;
+ pixel_x = 0;
+ pixel_y = 26
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"US" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Vk" = (
+/obj/structure/ladder{
+ pixel_y = 16
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Vr" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/engineering,
+/obj/random/maintenance/clean,
+/obj/random/maintenance/medical,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Vu" = (
+/obj/structure/table/rack{
+ dir = 4
+ },
+/obj/random/maintenance/medical,
+/obj/random/maintenance/research,
+/obj/item/weapon/storage/toolbox,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Vy" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"VD" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ frequency = 1379;
+ id_tag = "eva_port_maint_pump"
+ },
+/obj/machinery/light/small{
+ icon_state = "bulb1";
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"VP" = (
+/obj/structure/table/rack{
+ dir = 4
+ },
+/obj/random/maintenance/clean,
+/obj/random/maintenance/engineering,
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"VW" = (
+/obj/structure/table/rack{
+ dir = 1
+ },
+/obj/random/maintenance/research,
+/obj/random/maintenance/engineering,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"WV" = (
+/obj/structure/cable{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Xd" = (
+/obj/random/obstruction,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Xj" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"Xk" = (
+/obj/structure/cable{
+ icon_state = "2-8"
+ },
+/obj/structure/catwalk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Xn" = (
+/obj/item/weapon/coin/gold,
+/obj/item/weapon/coin/silver,
+/obj/item/weapon/bone/skull,
+/mob/living/simple_animal/hostile/mimic/crate,
+/turf/simulated/mineral/floor/cave,
+/area/maintenance/station/ai)
+"Xu" = (
+/obj/machinery/atmospherics/unary/vent_pump/high_volume{
+ dir = 1;
+ frequency = 1379;
+ icon_state = "map_vent";
+ id_tag = "eva_port_maint_pump"
+ },
+/obj/random/junk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Xv" = (
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"XD" = (
+/obj/structure/railing{
+ dir = 4
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"XO" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/turf/simulated/wall,
+/area/maintenance/station/ai)
+"XY" = (
+/obj/structure/railing{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Yj" = (
+/obj/structure/closet/crate,
+/obj/machinery/alarm{
+ frequency = 1441;
+ pixel_y = 22
+ },
+/obj/item/clothing/accessory/tie/horrible,
+/obj/random/drinkbottle,
+/obj/item/weapon/flame/lighter/random,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Ym" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Yp" = (
+/obj/structure/bed/chair{
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Yr" = (
+/obj/random/junk,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Yx" = (
+/obj/structure/closet/crate,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Yz" = (
+/obj/structure/grille,
+/obj/structure/window/reinforced/full,
+/obj/machinery/door/firedoor/glass,
+/obj/structure/window/reinforced{
+ dir = 1
+ },
+/turf/simulated/floor/plating,
+/area/maintenance/station/ai)
+"YI" = (
+/turf/simulated/wall{
+ can_open = 1
+ },
+/area/maintenance/station/sec_upper)
+"YQ" = (
+/obj/machinery/door/firedoor/glass,
+/obj/structure/lattice,
+/turf/simulated/open,
+/area/maintenance/station/ai)
"Zb" = (
/obj/structure/grille,
/turf/simulated/floor/airless,
/area/mine/explored/upper_level)
+"Zr" = (
+/obj/structure/closet/crate,
+/obj/random/maintenance/clean,
+/obj/random/junk,
+/obj/random/maintenance/medical,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"Zx" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan,
+/obj/machinery/door/firedoor/glass,
+/obj/machinery/door/airlock/maintenance/common,
+/turf/simulated/floor,
+/area/maintenance/station/ai)
+"ZC" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/turf/simulated/floor,
+/area/maintenance/station/ai)
"ZR" = (
/obj/machinery/light{
dir = 4;
icon_state = "tube1"
},
-/turf/simulated/floor,
+/turf/simulated/floor/airless,
/area/security/nuke_storage)
"ZS" = (
/turf/simulated/floor/airless,
@@ -31624,7 +32328,7 @@ ob
ob
sU
sU
-uO
+uP
sq
vK
xC
@@ -32862,11 +33566,11 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Lm
+LW
+Rs
+LW
bm
bz
bV
@@ -33004,11 +33708,11 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Lm
+LW
+Lm
+LW
bm
bA
bW
@@ -33146,11 +33850,11 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Lm
+LW
+Lm
+Lm
bm
bB
bX
@@ -33288,11 +33992,11 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Lm
+LW
+LW
+Lm
bm
bm
bm
@@ -33430,15 +34134,15 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Lm
+LW
+LW
+LW
+LW
+Rs
+Rs
+Lm
aI
dD
dS
@@ -33571,14 +34275,14 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mk
+Mk
+Mk
+Mk
+Mk
+Mk
+Lm
aI
aI
aI
@@ -33713,14 +34417,14 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Yx
+MG
+Sd
+Mk
+SJ
+VW
+Lm
aI
cA
dh
@@ -33855,14 +34559,14 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Ta
+Ta
+Ta
+Mk
+Ta
+Ta
+Lm
aI
cB
aI
@@ -33997,15 +34701,15 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-aI
+Mk
+Nd
+Ta
+Ta
+Ux
+QY
+XY
+Ta
+YI
cC
bY
bY
@@ -34139,14 +34843,14 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Ta
+Ta
+Yr
+Mk
+QY
+XY
+Lm
bY
cD
bY
@@ -34281,14 +34985,14 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Vu
+Ta
+Ta
+Mk
+QY
+XY
+Lm
bY
cE
di
@@ -34423,14 +35127,14 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mk
+Mk
+Mk
+Mk
+QY
+XY
+Lm
bY
cF
dj
@@ -34569,10 +35273,10 @@ ab
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+QY
+XY
+Lm
bY
cG
dk
@@ -34711,10 +35415,10 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+Sq
+XY
+Lm
bY
cH
dk
@@ -34730,8 +35434,8 @@ gz
gX
hE
fP
-ab
-ab
+Lm
+Lm
iY
ki
ke
@@ -34853,10 +35557,10 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+QY
+XY
+Lm
bY
cI
dk
@@ -34872,8 +35576,8 @@ gy
gk
hF
fP
-ab
-ab
+LW
+LW
iY
kj
kL
@@ -34995,10 +35699,10 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+QY
+XY
+Lm
bY
cJ
dl
@@ -35014,8 +35718,8 @@ gk
gY
hG
fP
-ab
-ab
+LW
+Xn
iY
iY
iY
@@ -35137,10 +35841,10 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+QY
+XY
+Lm
bY
cK
dm
@@ -35156,12 +35860,12 @@ gA
gm
hH
fP
-ab
-ab
-ab
-ab
-ab
-ab
+LW
+Lm
+Lm
+Lm
+Lm
+Lm
lo
mI
no
@@ -35279,10 +35983,10 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
+Mk
+QY
+XY
+Lm
bY
bY
bY
@@ -35298,12 +36002,12 @@ fP
fP
fP
fP
-ab
-ab
-ab
-ab
-ab
-ab
+LW
+Xd
+XD
+XD
+XD
+Lm
lo
mJ
np
@@ -35421,31 +36125,31 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+PU
+Uj
+Lm
+Lm
+Lm
bY
bY
dU
bY
bY
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Lm
+Lm
+Lm
+Lm
+Lm
+Lm
+Lm
+Lm
+Lm
+Lm
+QY
+QY
+QY
+Lm
lr
mK
nq
@@ -35563,31 +36267,31 @@ aa
ab
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+QY
+QY
+QY
+Ts
+Lm
+Lm
bY
bY
bY
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Ll
+Ta
+Ta
+Ta
+Ta
+Zr
+Ta
+Rs
+Lm
+Vk
+Mk
+PU
+QY
+QY
+Lm
lr
mL
nr
@@ -35705,31 +36409,31 @@ aa
aa
ab
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Ta
+Ta
+QY
+QY
+Vy
+Lm
+Lm
+Lm
+Lm
+Ta
+XD
+XD
+XD
+XD
+XD
+XD
+XD
+RZ
+Ta
+Lm
+Lm
+Lm
+Ta
+Lm
lr
mM
ns
@@ -35847,31 +36551,31 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mb
+Qn
+Lw
+QY
+QY
+Vy
+Rs
+LW
+LW
+Rd
+QY
+QY
+Sb
+Ud
+Rw
+RY
+WV
+Ok
+XY
+Lm
+Lm
+Lm
+Ta
+Lm
lr
mN
nt
@@ -35991,29 +36695,29 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Yz
+QC
+Oj
+QY
+QY
+Vy
+XD
+XD
+MW
+QY
+Mk
+Mk
+Mk
+XO
+Mk
+Mk
+QG
+XY
+Lm
+Ne
+Ym
+Ta
+Lm
lr
mO
nu
@@ -36133,29 +36837,29 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mb
+Qn
+Ta
+QY
+QY
+QY
+QY
+QY
+QY
+Mk
+Yr
+Ta
+Md
+Yr
+Mk
+UO
+XY
+XD
+SQ
+Ta
+Lm
+Lm
lr
mP
nv
@@ -36277,26 +36981,26 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Xj
+Ta
+Mz
+Mk
+Mk
+Mk
+Mk
+Mk
+Mk
+Ob
+Ta
+SD
+Ta
+Mk
+Xk
+Ud
+Ud
+Pk
+Lm
+Lm
lr
lr
mQ
@@ -36420,25 +37124,25 @@ aa
aa
aa
aa
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mk
+Mk
+VP
+Of
+OX
+Qi
+Mk
+Ta
+Yr
+Ta
+Ta
+Mk
+Mk
+Mk
+ZC
+ZC
+Ta
+Lw
lr
lT
mR
@@ -36564,23 +37268,23 @@ aa
aa
ab
ab
+Mk
+PS
+Lc
+Nk
+Qq
+Zx
+Lp
+Op
+Ta
+Ta
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Ta
+Ta
+Ta
+Lx
lr
lU
mS
@@ -36706,23 +37410,23 @@ aa
aa
aa
ab
+Mk
+PS
+Lc
+Xv
+Yr
+Mk
+Ta
+Ta
+US
+MU
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Yj
+Ta
+Ta
+Yp
lr
lr
mT
@@ -36848,23 +37552,23 @@ aa
aa
aa
ab
+Mk
+Ta
+Qs
+Nn
+QZ
+Mk
+Mk
+Uf
+SS
+Mk
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+NE
+Ta
+Ta
+OM
lr
lr
mU
@@ -36990,24 +37694,24 @@ aa
aa
aa
ab
+Mk
+Mk
+Mk
+Mk
+Mk
+Mk
+Oo
+PV
+Ua
+Qa
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Ta
+Ta
+RK
+YQ
+Mk
ab
lr
lr
@@ -37137,19 +37841,19 @@ ab
ab
ab
ab
+Mk
+VD
+Ue
+Ue
+Xu
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Pg
+MM
+Vr
+Ps
+Mk
ab
ab
ab
@@ -37279,19 +37983,19 @@ aa
ab
ab
ab
+Mk
+Mk
+LZ
+LZ
+Mk
+Mk
ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mk
+Mk
+Mk
+Mk
+Mk
ab
ab
ab
@@ -37421,11 +38125,11 @@ aa
aa
aa
ab
-ab
-ab
-ab
-ab
-ab
+Mk
+Mk
+Mk
+Mk
+Mk
aa
aa
aa
diff --git a/maps/tether/tether-08-mining.dmm b/maps/tether/tether-08-mining.dmm
index 743a38432e..5f2765b0d2 100644
--- a/maps/tether/tether-08-mining.dmm
+++ b/maps/tether/tether-08-mining.dmm
@@ -177,7 +177,10 @@
dir = 8
},
/obj/machinery/recharge_station,
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aK" = (
/obj/structure/cable/green{
@@ -185,7 +188,10 @@
d2 = 8;
icon_state = "4-8"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aM" = (
/obj/machinery/power/apc{
@@ -198,7 +204,10 @@
d2 = 8;
icon_state = "0-8"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aW" = (
/obj/machinery/power/smes/buildable{
@@ -206,7 +215,10 @@
RCon_tag = "Mining Station"
},
/obj/structure/cable/green,
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aX" = (
/obj/structure/cable/yellow{
@@ -214,7 +226,10 @@
d2 = 8;
icon_state = "2-8"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aY" = (
/obj/structure/cable/green{
@@ -228,11 +243,17 @@
name = "Powernet Sensor - Mining Station";
name_tag = "Mining Station"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"aZ" = (
/obj/machinery/mech_recharger,
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"bg" = (
/obj/structure/cable/green{
@@ -245,19 +266,37 @@
d2 = 8;
icon_state = "1-8"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"bh" = (
-/obj/machinery/telecomms/relay/preset/mining,
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/obj/structure/table/steel,
+/obj/item/stack/material/phoron,
+/obj/item/stack/material/phoron,
+/obj/item/stack/material/phoron,
+/obj/item/stack/material/phoron,
+/obj/item/stack/material/phoron,
+/obj/item/stack/material/phoron,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"bi" = (
/obj/machinery/power/port_gen/pacman,
/obj/structure/cable/yellow,
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"bv" = (
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"bE" = (
/obj/effect/floor_decal/rust/steel_decals_rusted2,
@@ -323,7 +362,10 @@
d2 = 2;
icon_state = "0-2"
},
-/turf/simulated/floor/tiled/steel_dirty/virgo3b,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
/area/outpost/engineering/atmospherics)
"Nh" = (
/obj/structure/railing{
@@ -340,6 +382,13 @@
/obj/structure/railing,
/turf/simulated/floor/outdoors/grass/sif/virgo3b,
/area/mine/explored)
+"Uk" = (
+/obj/machinery/telecomms/relay/preset/underdark,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
+/area/outpost/engineering/atmospherics)
"Wy" = (
/obj/structure/railing{
icon_state = "railing0";
@@ -347,6 +396,13 @@
},
/turf/simulated/floor/outdoors/grass/sif/virgo3b,
/area/mine/explored)
+"ZV" = (
+/obj/machinery/telecomms/relay/preset/mining,
+/turf/simulated/floor/tiled/steel_dirty/virgo3b{
+ name = "shed floor";
+ outdoors = 0
+ },
+/area/outpost/engineering/atmospherics)
(1,1,1) = {"
aa
@@ -3879,7 +3935,7 @@ aC
aE
bg
bv
-bv
+ZV
ay
ab
ab
@@ -4021,7 +4077,7 @@ ao
ay
aM
aZ
-bv
+Uk
ay
al
ab
diff --git a/maps/tether/tether-10-colony.dmm b/maps/tether/tether-10-colony.dmm
index dea0bb2e22..c0d62c23b5 100644
--- a/maps/tether/tether-10-colony.dmm
+++ b/maps/tether/tether-10-colony.dmm
@@ -5460,8 +5460,8 @@
/obj/structure/table/rack{
dir = 4
},
-/obj/item/clothing/suit/space/void/security/taur,
-/obj/item/clothing/suit/space/void/security/taur,
+/obj/item/clothing/suit/space/void/security,
+/obj/item/clothing/suit/space/void/security,
/obj/item/clothing/head/helmet/space/void/security,
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/unsimulated/floor{
diff --git a/maps/tether/tether_areas2.dm b/maps/tether/tether_areas2.dm
index 8bbf26b078..870ad1e6ad 100644
--- a/maps/tether/tether_areas2.dm
+++ b/maps/tether/tether_areas2.dm
@@ -424,6 +424,9 @@
name = "\improper Micro Maintenance"
/area/maintenance/station/virology
name = "\improper Virology Maintenance"
+/area/maintenance/station/ai
+ name = "\improper AI Maintenance"
+ sound_env = SEWER_PIPE
/area/shuttle/tether/crash1
name = "\improper Crash Site 1"
diff --git a/maps/tether/tether_defines.dm b/maps/tether/tether_defines.dm
index f60b71cd96..019ad04348 100644
--- a/maps/tether/tether_defines.dm
+++ b/maps/tether/tether_defines.dm
@@ -18,7 +18,7 @@
//Turfmakers
#define VIRGO3B_SET_ATMOS nitrogen=VIRGO3B_MOL_N2;oxygen=VIRGO3B_MOL_O2;carbon_dioxide=VIRGO3B_MOL_CO2;phoron=VIRGO3B_MOL_PHORON;temperature=VIRGO3B_AVG_TEMP
-#define VIRGO3B_TURF_CREATE(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP;x/virgo3b/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
+#define VIRGO3B_TURF_CREATE(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP;x/virgo3b/outdoors=TRUE;x/virgo3b/update_graphic(list/graphic_add = null, list/graphic_remove = null) return 0
#define VIRGO3B_TURF_CREATE_UN(x) x/virgo3b/nitrogen=VIRGO3B_MOL_N2;x/virgo3b/oxygen=VIRGO3B_MOL_O2;x/virgo3b/carbon_dioxide=VIRGO3B_MOL_CO2;x/virgo3b/phoron=VIRGO3B_MOL_PHORON;x/virgo3b/temperature=VIRGO3B_AVG_TEMP
//Normal map defs
@@ -34,6 +34,7 @@
#define Z_LEVEL_CENTCOM 10
#define Z_LEVEL_MISC 11
#define Z_LEVEL_SHIPS 12
+#define Z_LEVEL_UNDERDARK 13
/datum/map/tether
name = "Virgo"
@@ -151,7 +152,7 @@
return ..()
// For making the 6-in-1 holomap, we calculate some offsets
-#define TETHER_MAP_SIZE 120 // Width and height of compiled in tether z levels.
+#define TETHER_MAP_SIZE 140 // Width and height of compiled in tether z levels.
#define TETHER_HOLOMAP_CENTER_GUTTER 40 // 40px central gutter between columns
#define TETHER_HOLOMAP_MARGIN_X ((HOLOMAP_ICON_SIZE - (2*TETHER_MAP_SIZE) - TETHER_HOLOMAP_CENTER_GUTTER) / 2) // 100
#define TETHER_HOLOMAP_MARGIN_Y ((HOLOMAP_ICON_SIZE - (3*TETHER_MAP_SIZE)) / 2) // 60
diff --git a/maps/tether/tether_telecomms.dm b/maps/tether/tether_telecomms.dm
index 5be5e73f62..0b93c8220f 100644
--- a/maps/tether/tether_telecomms.dm
+++ b/maps/tether/tether_telecomms.dm
@@ -38,13 +38,19 @@
id = "Science Outpost Relay"
listening_level = Z_LEVEL_SOLARS
autolinkers = list("sci_o_relay")
+
+/obj/machinery/telecomms/relay/preset/underdark
+ id = "Mining Underground Relay"
+ listening_level = Z_LEVEL_UNDERDARK
+ autolinkers = list("ud_relay")
+
// #### Hub ####
/obj/machinery/telecomms/hub/preset/tether
id = "Hub"
network = "tcommsat"
autolinkers = list("hub",
"tbl_relay", "tbm_relay", "tbh_relay", "tsl_relay", "tsm_relay", "tsh_relay",
- "c_relay", "m_relay", "r_relay", "sci_o_relay",
+ "c_relay", "m_relay", "r_relay", "sci_o_relay", "ud_relay",
"science", "medical", "supply", "service", "common", "command", "engineering", "security", "explorer", "unused",
"hb_relay", "receiverA", "broadcasterA"
)
diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm
index 46177a74c7..695b66d35a 100644
--- a/maps/tether/tether_things.dm
+++ b/maps/tether/tether_things.dm
@@ -243,7 +243,7 @@
var/mob/living/carbon/human/user = AM
var/choice = alert("Do you want to depart via the tram? Your character will leave the round.","Departure","Yes","No")
- if(user && choice == "Yes")
+ if(user && Adjacent(user) && choice == "Yes")
user.ghostize()
despawn_occupant(user)
@@ -407,7 +407,7 @@ var/global/list/latejoin_tram = list()
guard = 20
mobs_to_pick_from = list(
/mob/living/simple_animal/hostile/jelly = 3,
- /mob/living/simple_animal/hostile/giant_spider/electric = 1,
+ /mob/living/simple_animal/hostile/giant_spider/hunter = 1,
/mob/living/simple_animal/hostile/giant_spider/phorogenic = 1,
/mob/living/simple_animal/hostile/giant_spider/lurker = 1,
)
@@ -420,8 +420,8 @@ var/global/list/latejoin_tram = list()
prob_fall = 50
guard = 20
mobs_to_pick_from = list(
- /mob/living/simple_animal/hostile/badboi = 1,
- /mob/living/simple_animal/hostile/rous = 1,
+ /mob/living/simple_animal/hostile/corrupthound = 1,
+ /mob/living/simple_animal/hostile/rat = 1,
/mob/living/simple_animal/hostile/mimic = 1
)
@@ -436,6 +436,10 @@ var/global/list/latejoin_tram = list()
/mob/living/simple_animal/hostile/dragon = 1
)
+// Used at centcomm for the elevator
+/obj/machinery/cryopod/robot/door/dorms
+ spawnpoint_type = /datum/spawnpoint/tram
+
//
// ### Wall Machines On Full Windows ###
// To make sure wall-mounted machines placed on full-tile windows are clickable they must be above the window
diff --git a/maps/tether/tether_turfs.dm b/maps/tether/tether_turfs.dm
index 595dbaaa20..a705654025 100644
--- a/maps/tether/tether_turfs.dm
+++ b/maps/tether/tether_turfs.dm
@@ -4,22 +4,21 @@ VIRGO3B_TURF_CREATE(/turf/simulated/open)
edge_blending_priority = 0.5 //Turfs which also have e_b_p and higher than this will plop decorative edges onto this turf
/turf/simulated/open/virgo3b/New()
..()
- outdoor_turfs.Add(src)
+ if(outdoors)
+ outdoor_turfs.Add(src)
VIRGO3B_TURF_CREATE(/turf/simulated/floor)
-/turf/simulated/floor/virgo3b/New()
- ..()
- outdoor_turfs.Add(src)
/turf/simulated/floor/virgo3b_indoors
VIRGO3B_SET_ATMOS
/turf/simulated/floor/virgo3b_indoors/update_graphic(list/graphic_add = null, list/graphic_remove = null)
return 0
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced)
+VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/steel_dirty)
+
VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/dirt)
-
VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/rocks)
-
VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
/turf/simulated/floor/outdoors/grass/sif
turf_layers = list(
@@ -28,15 +27,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/floor/outdoors/grass/sif)
)
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/reinforced)
-/turf/simulated/floor/reinforced/virgo3b/New()
- ..()
- outdoor_turfs.Add(src)
-
-VIRGO3B_TURF_CREATE(/turf/simulated/floor/tiled/steel_dirty)
-/turf/simulated/floor/tiled/steel_dirty/virgo3b/New()
- ..()
- outdoor_turfs.Add(src)
// Overriding these for the sake of submaps that use them on other planets.
// This means that mining on tether base and space is oxygen-generating, but solars and mining should use the virgo3b subtype
@@ -66,7 +56,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral)
VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
//This proc is responsible for ore generation on surface turfs
/turf/simulated/mineral/virgo3b/make_ore(var/rare_ore)
- if(mineral)
+ if(mineral || ignore_mapgen)
return
var/mineral_name
if(rare_ore)
@@ -94,7 +84,7 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
update_icon()
/turf/simulated/mineral/virgo3b/rich/make_ore(var/rare_ore)
- if(mineral)
+ if(mineral || ignore_mapgen)
return
var/mineral_name
if(rare_ore)
@@ -120,16 +110,6 @@ VIRGO3B_TURF_CREATE(/turf/simulated/mineral/floor)
UpdateMineral()
update_icon()
-VIRGO3B_TURF_CREATE(/turf/simulated/shuttle/wall/dark/hard_corner)
-/turf/simulated/shuttle/wall/dark/hard_corner/virgo3b/New()
- ..()
- outdoor_turfs.Add(src)
-
-VIRGO3B_TURF_CREATE(/turf/simulated/shuttle/floor/black)
-/turf/simulated/shuttle/floor/black/virgo3b/New()
- ..()
- outdoor_turfs.Add(src)
-
//Unsimulated
/turf/unsimulated/wall/planetary/virgo3b
name = "facility wall"
diff --git a/nano/css/layout_default.css b/nano/css/layout_default.css
index 5fd86e155a..47002ef5d5 100644
--- a/nano/css/layout_default.css
+++ b/nano/css/layout_default.css
@@ -70,9 +70,9 @@ body {
position: absolute;
top: 50%;
left: 50%;
- margin: -240px 0 0 -240px; /* VOREStation Edit - Tether map is small */
- width: 120px; /* VOREStation Edit - Tether map is small */
- height: 120px; /* VOREStation Edit - Tether map is small */
+ margin: -280px 0 0 -280px; /* VOREStation Edit - Tether map is small */
+ width: 140px; /* VOREStation Edit - Tether map is small */
+ height: 140px; /* VOREStation Edit - Tether map is small */
overflow: hidden;
zoom: 4;
}
@@ -81,16 +81,16 @@ body {
position: absolute;
bottom: 1px;
left: 1px;
- width: 120px; /* VOREStation Edit - Tether map is small */
- height: 120px; /* VOREStation Edit - Tether map is small */
+ width: 140px; /* VOREStation Edit - Tether map is small */
+ height: 140px; /* VOREStation Edit - Tether map is small */
}
#uiMapContent {
position: absolute;
bottom: 0px;
left: 0px;
- width: 120px; /* VOREStation Edit - Tether map is small */
- height: 120px; /* VOREStation Edit - Tether map is small */
+ width: 140px; /* VOREStation Edit - Tether map is small */
+ height: 140px; /* VOREStation Edit - Tether map is small */
}
#uiMapFooter {
diff --git a/rust_g b/rust_g
new file mode 100644
index 0000000000..1a623a422f
Binary files /dev/null and b/rust_g differ
diff --git a/rust_g.dll b/rust_g.dll
new file mode 100644
index 0000000000..817a522b61
Binary files /dev/null and b/rust_g.dll differ
diff --git a/vorestation.dme b/vorestation.dme
index 1882ca8fbe..2ae3c0bb82 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -340,6 +340,7 @@
#include "code\datums\supplypacks\recreation.dm"
#include "code\datums\supplypacks\recreation_vr.dm"
#include "code\datums\supplypacks\robotics.dm"
+#include "code\datums\supplypacks\robotics_vr.dm"
#include "code\datums\supplypacks\science.dm"
#include "code\datums\supplypacks\science_vr.dm"
#include "code\datums\supplypacks\security.dm"
@@ -1055,6 +1056,7 @@
#include "code\game\objects\items\weapons\tools.dm"
#include "code\game\objects\items\weapons\towels.dm"
#include "code\game\objects\items\weapons\traps.dm"
+#include "code\game\objects\items\weapons\traps_vr.dm"
#include "code\game\objects\items\weapons\trays.dm"
#include "code\game\objects\items\weapons\weaponry.dm"
#include "code\game\objects\items\weapons\weldbackpack.dm"
@@ -1896,6 +1898,7 @@
#include "code\modules\mob\death.dm"
#include "code\modules\mob\emote.dm"
#include "code\modules\mob\gender.dm"
+#include "code\modules\mob\gender_vr.dm"
#include "code\modules\mob\hear_say.dm"
#include "code\modules\mob\holder.dm"
#include "code\modules\mob\inventory.dm"
@@ -2151,7 +2154,6 @@
#include "code\modules\mob\living\silicon\robot\drone\drone_items.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone_manufacturer.dm"
#include "code\modules\mob\living\silicon\robot\drone\drone_say.dm"
-#include "code\modules\mob\living\silicon\robot\drone\drone_vr.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\event.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\station.dm"
#include "code\modules\mob\living\silicon\robot\robot_modules\station_vr.dm"
@@ -2222,10 +2224,10 @@
#include "code\modules\mob\living\simple_animal\slime\slime.dm"
#include "code\modules\mob\living\simple_animal\slime\subtypes.dm"
#include "code\modules\mob\living\simple_animal\vore\awoo.dm"
-#include "code\modules\mob\living\simple_animal\vore\badboi.dm"
#include "code\modules\mob\living\simple_animal\vore\bee.dm"
#include "code\modules\mob\living\simple_animal\vore\carp.dm"
#include "code\modules\mob\living\simple_animal\vore\catgirl.dm"
+#include "code\modules\mob\living\simple_animal\vore\corrupt_hounds.dm"
#include "code\modules\mob\living\simple_animal\vore\deathclaw.dm"
#include "code\modules\mob\living\simple_animal\vore\dino.dm"
#include "code\modules\mob\living\simple_animal\vore\dragon.dm"
@@ -2236,11 +2238,11 @@
#include "code\modules\mob\living\simple_animal\vore\jelly.dm"
#include "code\modules\mob\living\simple_animal\vore\otie.dm"
#include "code\modules\mob\living\simple_animal\vore\panther.dm"
-#include "code\modules\mob\living\simple_animal\vore\rous.dm"
+#include "code\modules\mob\living\simple_animal\vore\rat.dm"
+#include "code\modules\mob\living\simple_animal\vore\redpanda.dm"
#include "code\modules\mob\living\simple_animal\vore\snake.dm"
#include "code\modules\mob\living\simple_animal\vore\solargrub.dm"
#include "code\modules\mob\living\simple_animal\vore\solargrub_larva.dm"
-#include "code\modules\mob\living\simple_animal\vore\wah.dm"
#include "code\modules\mob\living\simple_animal\vore\wolf.dm"
#include "code\modules\mob\living\simple_animal\vore\zz_vore_overrides.dm"
#include "code\modules\mob\living\simple_animal\vore\shadekin\_defines.dm"