diff --git a/code/ZAS/Phoron.dm b/code/ZAS/Phoron.dm
index acee6a8b65..1f7ed8c04a 100644
--- a/code/ZAS/Phoron.dm
+++ b/code/ZAS/Phoron.dm
@@ -117,6 +117,10 @@ obj/var/phoronproof = 0
if(burn_eyes && head && (head.body_parts_covered & EYES) && (head.item_flags & AIRTIGHT))
burn_eyes = 0
+ //VOREStation Edit - NIF Support
+ if(nif && nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION))
+ burn_eyes = 0
+
//If we still need to, burn their eyes
if(burn_eyes)
burn_eyes()
diff --git a/code/__defines/nifsoft.dm b/code/__defines/nifsoft.dm
new file mode 100644
index 0000000000..06d1b0c7aa
--- /dev/null
+++ b/code/__defines/nifsoft.dm
@@ -0,0 +1,104 @@
+// List indexes for software datum references on mobs
+// This also controls the order they are displayed in the NIF stat panel
+//AR Overlays
+#define NIF_CIVILIAN_AR 1
+#define NIF_MEDICAL_AR 2
+#define NIF_SECURITY_AR 3
+#define NIF_ENGINE_AR 4
+#define NIF_SCIENCE_AR 5
+#define NIF_OMNI_AR 6
+//Misc Vision
+#define NIF_CORRECTIVE_GLASS 7
+#define NIF_MESONS 8
+#define NIF_MATERIAL 9
+#define NIF_THERMALS 10
+#define NIF_NIGHTVIS 11
+#define NIF_UVFILTER 12
+#define NIF_FLASHPROT 13
+//Health-related
+#define NIF_CREWMONITOR 14
+#define NIF_ORGANIC_HEAL 15
+#define NIF_SYNTH_HEAL 16
+#define NIF_AUTOSTASIS 17 //These two are just part of
+#define NIF_MED_ALARM 18 //medichines right now
+#define NIF_TOXHEAL 19 //And this, for organics
+#define NIF_SPAREBREATH 20
+//Combat Related
+#define NIF_BRUTEARMOR 21
+#define NIF_BURNARMOR 22
+#define NIF_PAINKILLERS 23
+#define NIF_HARDCLAWS 24
+#define NIF_HIDDENLASER 25
+//Other
+#define NIF_COMMLINK 26
+#define NIF_APCCHARGE 27
+#define NIF_PRESSURE 28
+#define NIF_HEATSINK 29
+#define NIF_COMPLIANCE 30
+#define NIF_SIZECHANGE 31
+
+// Must be equal to the highest number above
+#define TOTAL_NIF_SOFTWARE 31
+
+//////////////////////
+// NIF flag list hints
+#define NIF_FLAGS_VISION 1
+#define NIF_FLAGS_HEALTH 2
+#define NIF_FLAGS_COMBAT 3
+#define NIF_FLAGS_OTHER 4
+
+// NIF flags
+//Vision
+#define NIF_V_AR_CIVILIAN 0x1
+#define NIF_V_AR_MEDICAL 0x2
+#define NIF_V_AR_SECURITY 0x4
+#define NIF_V_AR_ENGINE 0x8
+#define NIF_V_AR_SCIENCE 0x10
+#define NIF_V_AR_OMNI 0x20
+#define NIF_V_CORRECTIVE 0x40
+#define NIF_V_MESONS 0x80
+#define NIF_V_MATERIAL 0x100
+#define NIF_V_THERMALS 0x200
+#define NIF_V_NIGHTVIS 0x400
+#define NIF_V_UVFILTER 0x800
+#define NIF_V_FLASHPROT 0x1000
+
+//Health
+#define NIF_H_ORGREPAIR 0x1
+#define NIF_H_SYNTHREPAIR 0x2
+#define NIF_H_AUTOSTASIS 0x4 //These two are just part of
+#define NIF_H_ALERTMED 0x8 //medichines right now
+#define NIF_H_TOXREGEN 0x10
+#define NIF_H_SPAREBREATH 0x20
+
+//Combat
+#define NIF_C_BRUTEARMOR 0x1
+#define NIF_C_BURNARMOR 0x2
+#define NIF_C_PAINKILLERS 0x4
+#define NIF_C_HARDCLAWS 0x8
+#define NIF_C_HIDELASER 0x10
+
+//Other
+#define NIF_O_COMMLINK 0x1
+#define NIF_O_APCCHARGE 0x2
+#define NIF_O_PRESSURESEAL 0x4
+#define NIF_O_HEATSINKS 0x8
+
+///////////////////
+// applies_to flags
+#define NIF_ORGANIC 0x1
+#define NIF_SYNTHETIC 0x2
+
+/////////////
+// stat flags
+#define NIF_WORKING 0
+#define NIF_POWFAIL 1
+#define NIF_TEMPFAIL 2
+#define NIF_INSTALLING 3
+#define NIF_PREINSTALL 4
+
+///////////////////
+// tick_flags flags
+#define NIF_NEVERTICK 0
+#define NIF_ALWAYSTICK 1
+#define NIF_ACTIVETICK 2
diff --git a/code/_helpers/unsorted.dm b/code/_helpers/unsorted.dm
index 6fa9d4ec0c..2b75414a7e 100644
--- a/code/_helpers/unsorted.dm
+++ b/code/_helpers/unsorted.dm
@@ -1157,12 +1157,22 @@ proc/is_hot(obj/item/W as obj)
istype(W, /obj/item/weapon/surgical/bonesetter)
)
-//check if mob is lying down on something we can operate him on.
+// check if mob is lying down on something we can operate him on.
+// The RNG with table/rollerbeds comes into play in do_surgery() so that fail_step() can be used instead.
/proc/can_operate(mob/living/carbon/M)
- return (M.lying && \
- locate(/obj/machinery/optable, M.loc) || \
- (locate(/obj/structure/bed/roller, M.loc) && prob(75)) || \
- (locate(/obj/structure/table/, M.loc) && prob(66)))
+ return M.lying
+
+// Returns an instance of a valid surgery surface.
+/mob/living/proc/get_surgery_surface()
+ if(!lying)
+ return null // Not lying down means no surface.
+ var/obj/surface = null
+ for(var/obj/O in loc) // Looks for the best surface.
+ if(O.surgery_odds)
+ if(!surface || surface.surgery_odds < O)
+ surface = O
+ if(surface)
+ return surface
/proc/reverse_direction(var/dir)
switch(dir)
diff --git a/code/controllers/Processes/radiation.dm b/code/controllers/Processes/radiation.dm
new file mode 100644
index 0000000000..192acf5d5c
--- /dev/null
+++ b/code/controllers/Processes/radiation.dm
@@ -0,0 +1,56 @@
+/datum/controller/process/radiation
+ var/repository/radiation/linked = null
+
+/datum/controller/process/radiation/setup()
+ name = "radiation controller"
+ schedule_interval = 20 // every 2 seconds
+ linked = radiation_repository
+
+/datum/controller/process/radiation/doWork()
+ sources_decay()
+ cache_expires()
+ irradiate_targets()
+
+// Step 1 - Sources Decay
+/datum/controller/process/radiation/proc/sources_decay()
+ var/list/sources = linked.sources
+ for(var/thing in sources)
+ if(deleted(thing))
+ sources.Remove(thing)
+ continue
+ var/datum/radiation_source/S = thing
+ if(S.decay)
+ S.update_rad_power(S.rad_power - config.radiation_decay_rate)
+ if(S.rad_power <= config.radiation_lower_limit)
+ sources.Remove(S)
+ SCHECK // This scheck probably just wastes resources, but better safe than sorry in this case.
+
+// Step 2 - Cache Expires
+/datum/controller/process/radiation/proc/cache_expires()
+ var/list/resistance_cache = linked.resistance_cache
+ for(var/thing in resistance_cache)
+ if(deleted(thing))
+ resistance_cache.Remove(thing)
+ continue
+ var/turf/T = thing
+ if((length(T.contents) + 1) != resistance_cache[T])
+ resistance_cache.Remove(T) // If its stale REMOVE it! It will get added if its needed.
+ SCHECK
+
+ // Step 3 - Registered irradiatable things are checked for radiation
+/datum/controller/process/radiation/proc/irradiate_targets()
+ var/list/registered_listeners = living_mob_list // For now just use this. Nothing else is interested anyway.
+ if(length(linked.sources) > 0)
+ for(var/thing in registered_listeners)
+ if(deleted(thing))
+ continue
+ var/atom/A = thing
+ var/turf/T = get_turf(thing)
+ var/rads = linked.get_rads_at_turf(T)
+ if(rads)
+ A.rad_act(rads)
+ SCHECK
+
+/datum/controller/process/radiation/statProcess()
+ ..()
+ stat(null, "[linked.sources.len] sources, [linked.resistance_cache.len] cached turfs")
diff --git a/code/controllers/configuration.dm b/code/controllers/configuration.dm
index b03d3bc902..b3fed19c9a 100644
--- a/code/controllers/configuration.dm
+++ b/code/controllers/configuration.dm
@@ -220,6 +220,10 @@ var/list/gamemode_cache = list()
var/show_human_death_message = 1
+ var/radiation_decay_rate = 1 //How much radiation is reduced by each tick
+ var/radiation_resistance_multiplier = 6.5
+ var/radiation_lower_limit = 0.35 //If the radiation level for a turf would be below this, ignore it.
+
/datum/configuration/New()
var/list/L = typesof(/datum/game_mode) - /datum/game_mode
for (var/T in L)
@@ -720,6 +724,9 @@ var/list/gamemode_cache = list()
if(values.len > 0)
language_prefixes = values
+ if("radiation_lower_limit")
+ radiation_lower_limit = text2num(value)
+
else
log_misc("Unknown setting in configuration: '[name]'")
diff --git a/code/datums/autolathe/arms.dm b/code/datums/autolathe/arms.dm
index efe5791b11..b40bf27e47 100644
--- a/code/datums/autolathe/arms.dm
+++ b/code/datums/autolathe/arms.dm
@@ -8,29 +8,29 @@
/datum/category_item/autolathe/arms/shotgun_blanks
name = "ammunition (12g, blank)"
- path =/obj/item/ammo_casing/shotgun/blank
+ path =/obj/item/ammo_casing/a12g/blank
/datum/category_item/autolathe/arms/shotgun_beanbag
name = "ammunition (12g, beanbag)"
- path =/obj/item/ammo_casing/shotgun/beanbag
+ path =/obj/item/ammo_casing/a12g/beanbag
/datum/category_item/autolathe/arms/shotgun_flash
name = "ammunition (12g, flash)"
- path =/obj/item/ammo_casing/shotgun/flash
+ path =/obj/item/ammo_casing/a12g/flash
/datum/category_item/autolathe/arms/shotgun
name = "ammunition (12g, slug)"
- path =/obj/item/ammo_casing/shotgun
+ path =/obj/item/ammo_casing/a12g
hidden = 1
/datum/category_item/autolathe/arms/shotgun_pellet
name = "ammunition (12g, pellet)"
- path =/obj/item/ammo_casing/shotgun/pellet
+ path =/obj/item/ammo_casing/a12g/pellet
hidden = 1
/datum/category_item/autolathe/arms/stunshell
name = "ammunition (stun cartridge, shotgun)"
- path =/obj/item/ammo_casing/shotgun/stunshell
+ path =/obj/item/ammo_casing/a12g/stunshell
hidden = 1
//////////////////
@@ -49,119 +49,119 @@
/////// .45
/datum/category_item/autolathe/arms/pistol_45
name = "pistol magazine (.45)"
- path =/obj/item/ammo_magazine/c45m
+ path =/obj/item/ammo_magazine/m45
hidden = 1
/datum/category_item/autolathe/arms/pistol_45p
name = "pistol magazine (.45 practice)"
- path =/obj/item/ammo_magazine/c45m/practice
+ path =/obj/item/ammo_magazine/m45/practice
/datum/category_item/autolathe/arms/pistol_45r
name = "pistol magazine (.45 rubber)"
- path =/obj/item/ammo_magazine/c45m/rubber
+ path =/obj/item/ammo_magazine/m45/rubber
/datum/category_item/autolathe/arms/pistol_45f
name = "pistol magazine (.45 flash)"
- path =/obj/item/ammo_magazine/c45m/flash
+ path =/obj/item/ammo_magazine/m45/flash
/datum/category_item/autolathe/arms/pistol_45uzi
name = "uzi magazine (.45)"
- path =/obj/item/ammo_magazine/c45uzi
+ path =/obj/item/ammo_magazine/m45uzi
hidden = 1
/datum/category_item/autolathe/arms/tommymag
name = "Tommygun magazine (.45)"
- path =/obj/item/ammo_magazine/tommymag
+ path =/obj/item/ammo_magazine/m45tommy
hidden = 1
/datum/category_item/autolathe/arms/tommydrum
name = "Tommygun drum magazine (.45)"
- path =/obj/item/ammo_magazine/tommydrum
+ path =/obj/item/ammo_magazine/m45tommydrum
hidden = 1
/////// 9mm
-/obj/item/ammo_magazine/mc9mm/flash
- ammo_type =/obj/item/ammo_casing/c9mmf
+/obj/item/ammo_magazine/m9mm/flash
+ ammo_type =/obj/item/ammo_casing/a9mmf
-/obj/item/ammo_magazine/mc9mm/rubber
+/obj/item/ammo_magazine/m9mm/rubber
name = "magazine (9mm rubber)"
- ammo_type =/obj/item/ammo_casing/c9mmr
+ ammo_type =/obj/item/ammo_casing/a9mmr
-/obj/item/ammo_magazine/mc9mm/practice
+/obj/item/ammo_magazine/m9mm/practice
name = "magazine (9mm practice)"
- ammo_type =/obj/item/ammo_casing/c9mmp
+ ammo_type =/obj/item/ammo_casing/a9mmp
/datum/category_item/autolathe/arms/pistol_9mm
name = "pistol magazine (9mm)"
- path =/obj/item/ammo_magazine/mc9mm
+ path =/obj/item/ammo_magazine/m9mm
hidden = 1
/datum/category_item/autolathe/arms/pistol_9mmr
name = "pistol magazine (9mm rubber)"
- path =/obj/item/ammo_magazine/mc9mm/rubber
+ path =/obj/item/ammo_magazine/m9mm/rubber
/datum/category_item/autolathe/arms/pistol_9mmp
name = "pistol magazine (9mm practice)"
- path =/obj/item/ammo_magazine/mc9mm/practice
+ path =/obj/item/ammo_magazine/m9mm/practice
/datum/category_item/autolathe/arms/pistol_9mmf
name = "pistol magazine (9mm flash)"
- path =/obj/item/ammo_magazine/mc9mm/flash
+ path =/obj/item/ammo_magazine/m9mm/flash
/datum/category_item/autolathe/arms/smg_9mm
name = "top-mounted SMG magazine (9mm)"
- path =/obj/item/ammo_magazine/mc9mmt
+ path =/obj/item/ammo_magazine/m9mmt
hidden = 1
/datum/category_item/autolathe/arms/smg_9mmr
name = "top-mounted SMG magazine (9mm rubber)"
- path =/obj/item/ammo_magazine/mc9mmt/rubber
+ path =/obj/item/ammo_magazine/m9mmt/rubber
/datum/category_item/autolathe/arms/smg_9mmp
name = "top-mounted SMG magazine (9mm practice)"
- path =/obj/item/ammo_magazine/mc9mmt/practice
+ path =/obj/item/ammo_magazine/m9mmt/practice
/datum/category_item/autolathe/arms/smg_9mmf
name = "top-mounted SMG magazine (9mm flash)"
- path =/obj/item/ammo_magazine/mc9mmt/flash
+ path =/obj/item/ammo_magazine/m9mmt/flash
/////// 10mm
/datum/category_item/autolathe/arms/smg_10mm
name = "SMG magazine (10mm)"
- path =/obj/item/ammo_magazine/a10mm
+ path =/obj/item/ammo_magazine/m10mm
hidden = 1
/datum/category_item/autolathe/arms/pistol_50
name = "pistol magazine (.50AE)"
- path =/obj/item/ammo_magazine/a50
+ path =/obj/item/ammo_magazine/m50
hidden = 1
/////// 5.56mm
/datum/category_item/autolathe/arms/rifle_556
name = "rifle magazine (5.56mm)"
- path =/obj/item/ammo_magazine/c556
+ path =/obj/item/ammo_magazine/m556
hidden = 1
/datum/category_item/autolathe/arms/rifle_556p
name = "rifle magazine (5.56mm practice)"
- path =/obj/item/ammo_magazine/c556/practice
+ path =/obj/item/ammo_magazine/m556/practice
/datum/category_item/autolathe/arms/machinegun_556
name = "machinegun box magazine (5.56)"
- path =/obj/item/ammo_magazine/a556
+ path =/obj/item/ammo_magazine/m556saw
hidden = 1
/////// 7.62
/datum/category_item/autolathe/arms/rifle_762
name = "rifle magazine (7.62mm)"
- path =/obj/item/ammo_magazine/c762
+ path =/obj/item/ammo_magazine/m762
hidden = 1
/datum/category_item/autolathe/arms/shotgun_magazine
name = "24rnd shotgun magazine (12g)"
- path =/obj/item/ammo_magazine/g12
+ path =/obj/item/ammo_magazine/m12gdrum
hidden = 1
/*
@@ -188,57 +188,57 @@
/datum/category_item/autolathe/arms/pistol_45
name = "pistol magazine (.45)"
- path =/obj/item/ammo_magazine/c45m/empty
+ path =/obj/item/ammo_magazine/m45/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/pistol_45uzi
name = "uzi magazine (.45)"
- path =/obj/item/ammo_magazine/c45uzi/empty
+ path =/obj/item/ammo_magazine/m45uzi/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/tommymag
name = "Tommygun magazine (.45)"
- path =/obj/item/ammo_magazine/tommymag/empty
+ path =/obj/item/ammo_magazine/m45tommy/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/tommydrum
name = "Tommygun drum magazine (.45)"
- path =/obj/item/ammo_magazine/tommydrum/empty
+ path =/obj/item/ammo_magazine/m45tommydrum/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_9mm
name = "pistol magazine (9mm)"
- path =/obj/item/ammo_magazine/mc9mm/empty
+ path =/obj/item/ammo_magazine/m9mm/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/smg_9mm
name = "top-mounted SMG magazine (9mm)"
- path =/obj/item/ammo_magazine/mc9mmt/empty
+ path =/obj/item/ammo_magazine/m9mmt/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/smg_10mm
name = "SMG magazine (10mm)"
- path =/obj/item/ammo_magazine/a10mm/empty
+ path =/obj/item/ammo_magazine/m10mm/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_50
name = "pistol magazine (.50AE)"
- path =/obj/item/ammo_magazine/a50/empty
+ path =/obj/item/ammo_magazine/m50/empty
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/rifle_556
name = "10rnd rifle magazine (5.56mm)"
- path =/obj/item/ammo_magazine/a556/empty
+ path =/obj/item/ammo_magazine/m556saw/empty
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/rifle_556m
name = "20rnd rifle magazine (5.56mm)"
- path =/obj/item/ammo_magazine/a556m/empty
+ path =/obj/item/ammo_magazine/m556sawm/empty
category = "Arms and Ammunition"
hidden = 1
@@ -250,7 +250,7 @@
/datum/category_item/autolathe/arms/rifle_762
name = "20rnd rifle magazine (7.62mm)"
- path =/obj/item/ammo_magazine/c762/empty
+ path =/obj/item/ammo_magazine/m762/empty
category = "Arms and Ammunition"
hidden = 1
@@ -262,7 +262,7 @@
/datum/category_item/autolathe/arms/shotgun_magazine
name = "24rnd shotgun magazine (12g)"
- path =/obj/item/ammo_magazine/g12/empty
+ path =/obj/item/ammo_magazine/m12gdrum/empty
category = "Arms and Ammunition"
hidden = 1*/
@@ -272,17 +272,17 @@
/datum/category_item/autolathe/arms/speedloader_357
name = "speedloader (.357)"
- path =/obj/item/ammo_magazine/a357
+ path =/obj/item/ammo_magazine/s357
hidden = 1
/datum/category_item/autolathe/arms/speedloader_38
name = "speedloader (.38)"
- path =/obj/item/ammo_magazine/c38
+ path =/obj/item/ammo_magazine/s38
hidden = 1
/datum/category_item/autolathe/arms/speedloader_38r
name = "speedloader (.38 rubber)"
- path =/obj/item/ammo_magazine/c38/rubber
+ path =/obj/item/ammo_magazine/s38/rubber
// Commented out until metal exploits with autolathe is fixed.
/*/datum/category_item/autolathe/arms/pistol_clip_45
@@ -335,35 +335,35 @@
/datum/category_item/autolathe/arms/pistol_clip_10mm
name = "ammo clip (10mm)"
- path =/obj/item/ammo_magazine/clip/a10mm
+ path =/obj/item/ammo_magazine/clip/c10mm
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/pistol_clip_50
name = "ammo clip (.50AE)"
- path =/obj/item/ammo_magazine/clip/a50
+ path =/obj/item/ammo_magazine/clip/c50
category = "Arms and Ammunition"
hidden = 1
*/
/datum/category_item/autolathe/arms/rifle_clip_556
name = "ammo clip (5.56mm)"
- path =/obj/item/ammo_magazine/clip/a556
+ path =/obj/item/ammo_magazine/clip/c556
category = "Arms and Ammunition"
hidden = 1
/datum/category_item/autolathe/arms/rifle_clip_556_practice
name = "ammo clip (5.56mm practice)"
- path =/obj/item/ammo_magazine/clip/a556/practice
+ path =/obj/item/ammo_magazine/clip/c556/practice
category = "Arms and Ammunition"
/datum/category_item/autolathe/arms/rifle_clip_762
name = "ammo clip (7.62mm)"
- path =/obj/item/ammo_magazine/clip/a762
+ path =/obj/item/ammo_magazine/clip/c762
hidden = 1
/datum/category_item/autolathe/arms/rifle_clip_762_practice
name = "ammo clip (7.62mm practice)"
- path =/obj/item/ammo_magazine/clip/a762/practice
+ path =/obj/item/ammo_magazine/clip/c762/practice
/datum/category_item/autolathe/arms/knuckledusters
name = "knuckle dusters"
diff --git a/code/datums/autolathe/arms_vr.dm b/code/datums/autolathe/arms_vr.dm
index 9db276b678..e517c557e0 100644
--- a/code/datums/autolathe/arms_vr.dm
+++ b/code/datums/autolathe/arms_vr.dm
@@ -1,34 +1,34 @@
/datum/category_item/autolathe/arms/speedloader_357_flash
name = "speedloader (.357 flash)"
- path =/obj/item/ammo_magazine/a357/flash
+ path =/obj/item/ammo_magazine/m357/flash
hidden = 1
/datum/category_item/autolathe/arms/speedloader_357_stun
name = "speedloader (.357 stun)"
- path =/obj/item/ammo_magazine/a357/stun
+ path =/obj/item/ammo_magazine/m357/stun
hidden = 1
/datum/category_item/autolathe/arms/speedloader_357_rubber
name = "speedloader (.357 rubber)"
- path =/obj/item/ammo_magazine/a357/rubber
+ path =/obj/item/ammo_magazine/m357/rubber
hidden = 1
/datum/category_item/autolathe/arms/speedloader_44
name = "speedloader (.44)"
- path =/obj/item/ammo_magazine/a44sl
+ path =/obj/item/ammo_magazine/m44sl
hidden = 1
/datum/category_item/autolathe/arms/speedloader_44_rubber
name = "speedloader (.44 rubber)"
- path =/obj/item/ammo_magazine/a44sl/rubber
+ path =/obj/item/ammo_magazine/m44sl/rubber
hidden = 1
/datum/category_item/autolathe/arms/mag_44
name = "magazine (.44)"
- path =/obj/item/ammo_magazine/a44
+ path =/obj/item/ammo_magazine/m44
hidden = 1
/datum/category_item/autolathe/arms/mag_44_rubber
name = "magazine (.44 rubber)"
- path =/obj/item/ammo_magazine/a44/rubber
+ path =/obj/item/ammo_magazine/m44/rubber
hidden = 1
diff --git a/code/datums/repositories/radiation.dm b/code/datums/repositories/radiation.dm
new file mode 100644
index 0000000000..0245bb801c
--- /dev/null
+++ b/code/datums/repositories/radiation.dm
@@ -0,0 +1,141 @@
+var/global/repository/radiation/radiation_repository = new()
+
+/repository/radiation
+ var/list/sources = list() // all radiation source datums
+ var/list/sources_assoc = list() // Sources indexed by turf for de-duplication.
+ var/list/resistance_cache = list() // Cache of turf's radiation resistance.
+
+// Describes a point source of radiation. Created either in response to a pulse of radiation, or over an irradiated atom.
+// Sources will decay over time, unless something is renewing their power!
+/datum/radiation_source
+ var/turf/source_turf // Location of the radiation source.
+ var/rad_power // Strength of the radiation being emitted.
+ var/decay = TRUE // True for automatic decay. False if owner promises to handle it (i.e. supermatter)
+ var/respect_maint = FALSE // True for not affecting RAD_SHIELDED areas.
+ var/flat = FALSE // True for power falloff with distance.
+ var/range // Cached maximum range, used for quick checks against mobs.
+
+/datum/radiation_source/Destroy()
+ radiation_repository.sources -= src
+ if(radiation_repository.sources_assoc[src.source_turf] == src)
+ radiation_repository.sources -= src.source_turf
+ src.source_turf = null
+ . = ..()
+
+// TEMPORARY HACK - hard del()'ing sources is too expensive! Until we implement qdel() hints we need to override behavior here
+/datum/radiation_source/finalize_qdel()
+ if(garbage_collector)
+ garbage_collector.AddTrash(src)
+ else
+ delayed_garbage |= src
+// TEMPORARY HACK END
+
+/datum/radiation_source/proc/update_rad_power(var/new_power = null)
+ if(new_power != null && new_power != rad_power)
+ rad_power = new_power
+ . = 1
+ if(. && !flat)
+ range = min(round(sqrt(rad_power / config.radiation_lower_limit)), 31) // R = rad_power / dist**2 - Solve for dist
+
+// Ray trace from all active radiation sources to T and return the strongest effect.
+/repository/radiation/proc/get_rads_at_turf(var/turf/T)
+ if(!istype(T)) return 0
+
+ . = 0
+ for(var/value in sources)
+ var/datum/radiation_source/source = value
+ if(source.rad_power < .)
+ continue // Already being affected by a stronger source
+ if(source.source_turf.z != T.z)
+ continue // Radiation is not multi-z
+ var/dist = get_dist(source.source_turf, T)
+ if(dist > source.range)
+ continue // Too far to possibly affect
+ if(source.respect_maint)
+ var/atom/A = T.loc
+ if(A.flags & RAD_SHIELDED)
+ continue // In shielded area
+ if(source.flat)
+ . = max(., source.rad_power)
+ continue // No need to ray trace for flat field
+
+ // Okay, now ray trace to find resistence!
+ var/turf/origin = source.source_turf
+ var/working = source.rad_power
+ while(origin != T)
+ origin = get_step_towards(origin, T) //Raytracing
+ if(!(origin in resistance_cache)) //Only get the resistance if we don't already know it.
+ origin.calc_rad_resistance()
+ working = max((working - (origin.cached_rad_resistance * config.radiation_resistance_multiplier)), 0)
+ if(working <= .)
+ break // Already affected by a stronger source (or its zero...)
+ . = max((working * (1 / (dist ** 2))), .) //Butchered version of the inverse square law. Works for this purpose
+
+// Add a radiation source instance to the repository. It will override any existing source on the same turf.
+/repository/radiation/proc/add_source(var/datum/radiation_source/S)
+ var/datum/radiation_source/existing = sources_assoc[S.source_turf]
+ if(existing)
+ qdel(existing)
+ sources += S
+ sources_assoc[S.source_turf] = S
+
+// Creates a temporary radiation source that will decay
+/repository/radiation/proc/radiate(source, power) //Sends out a radiation pulse, taking walls into account
+ if(!(source && power)) //Sanity checking
+ return
+ var/datum/radiation_source/S = new()
+ S.source_turf = get_turf(source)
+ S.update_rad_power(power)
+ add_source(S)
+
+// Sets the radiation in a range to a constant value.
+/repository/radiation/proc/flat_radiate(source, power, range, var/respect_maint = FALSE)
+ if(!(source && power && range))
+ return
+ var/datum/radiation_source/S = new()
+ S.flat = TRUE
+ S.range = range
+ S.respect_maint = respect_maint
+ S.source_turf = get_turf(source)
+ S.update_rad_power(power)
+ add_source(S)
+
+// Irradiates a full Z-level. Hacky way of doing it, but not too expensive.
+/repository/radiation/proc/z_radiate(var/atom/source, power, var/respect_maint = FALSE)
+ if(!(power && source))
+ return
+ var/turf/epicentre = locate(round(world.maxx / 2), round(world.maxy / 2), source.z)
+ flat_radiate(epicentre, power, world.maxx, respect_maint)
+
+/turf
+ var/cached_rad_resistance = 0
+
+/turf/proc/calc_rad_resistance()
+ cached_rad_resistance = 0
+ for(var/obj/O in src.contents)
+ if(O.rad_resistance) //Override
+ cached_rad_resistance += O.rad_resistance
+
+ else if(O.density) //So open doors don't get counted
+ var/material/M = O.get_material()
+ if(!M) continue
+ cached_rad_resistance += M.weight
+ // Looks like storing the contents length is meant to be a basic check if the cache is stale due to items enter/exiting. Better than nothing so I'm leaving it as is. ~Leshana
+ radiation_repository.resistance_cache[src] = (length(contents) + 1)
+
+/turf/simulated/wall/calc_rad_resistance()
+ radiation_repository.resistance_cache[src] = (length(contents) + 1)
+ cached_rad_resistance = (density ? material.weight : 0)
+
+/obj
+ var/rad_resistance = 0 // Allow overriding rad resistance
+
+// If people expand the system, this may be useful. Here as a placeholder until then
+/atom/proc/rad_act(var/severity)
+ return 1
+
+/mob/living/rad_act(var/severity)
+ if(severity)
+ src.apply_effect(severity, IRRADIATE, src.getarmor(null, "rad"))
+ for(var/atom/I in src)
+ I.rad_act(severity)
diff --git a/code/datums/supplypacks/contraband.dm b/code/datums/supplypacks/contraband.dm
index 0c7fd3f4ed..c200e2edda 100644
--- a/code/datums/supplypacks/contraband.dm
+++ b/code/datums/supplypacks/contraband.dm
@@ -47,7 +47,7 @@
name = "Surplus militia rifles"
contains = list(
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin = 3,
- /obj/item/ammo_magazine/clip/a762 = 6
+ /obj/item/ammo_magazine/clip/c762 = 6
)
cost = 50
contraband = 1
diff --git a/code/datums/supplypacks/munitions.dm b/code/datums/supplypacks/munitions.dm
index e2df9609ad..d0635ffce6 100644
--- a/code/datums/supplypacks/munitions.dm
+++ b/code/datums/supplypacks/munitions.dm
@@ -27,7 +27,7 @@
name = "Flare guns crate"
contains = list(
/obj/item/weapon/gun/projectile/sec/flash,
- /obj/item/ammo_magazine/c45m/flash,
+ /obj/item/ammo_magazine/m45/flash,
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare,
/obj/item/weapon/storage/box/flashshells
)
@@ -129,7 +129,7 @@
contains = list(
/obj/item/device/assembly/timer,
/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice = 2,
- /obj/item/ammo_magazine/clip/a762/practice = 4,
+ /obj/item/ammo_magazine/clip/c762/practice = 4,
/obj/item/target = 2,
/obj/item/target/alien = 2,
/obj/item/target/syndicate = 2
@@ -154,9 +154,9 @@
name = "Automatic weapon ammunition crate"
num_contained = 6
contains = list(
- /obj/item/ammo_magazine/mc9mmt,
- /obj/item/ammo_magazine/mc9mmt/rubber,
- /obj/item/ammo_magazine/a556
+ /obj/item/ammo_magazine/m9mmt,
+ /obj/item/ammo_magazine/m9mmt/rubber,
+ /obj/item/ammo_magazine/m556saw
)
cost = 25
containertype = /obj/structure/closet/crate/secure
diff --git a/code/datums/supplypacks/science_vr.dm b/code/datums/supplypacks/science_vr.dm
index 7ffcf0db96..0bc0b3f740 100644
--- a/code/datums/supplypacks/science_vr.dm
+++ b/code/datums/supplypacks/science_vr.dm
@@ -49,7 +49,7 @@
containername = "Dangerous Predator crate"
access = access_xenobiology
-/datum/supply_packs/sci/pred
+/datum/supply_packs/sci/pred_doom
name = "EXTREMELY Dangerous Predator crate"
cost = 200
containertype = /obj/structure/largecrate/animal/dangerous
diff --git a/code/datums/uplink/ammunition.dm b/code/datums/uplink/ammunition.dm
index 4aefe349fd..03f1296ad9 100644
--- a/code/datums/uplink/ammunition.dm
+++ b/code/datums/uplink/ammunition.dm
@@ -8,36 +8,36 @@
/datum/uplink_item/item/ammo/a357
name = ".357 Speedloader"
- path = /obj/item/ammo_magazine/a357
+ path = /obj/item/ammo_magazine/s357
/datum/uplink_item/item/ammo/mc9mm
name = "Pistol Magazine (9mm)"
- path = /obj/item/ammo_magazine/mc9mm
+ path = /obj/item/ammo_magazine/m9mm
/datum/uplink_item/item/ammo/c45m
name = "Pistol Magazine (.45)"
- path = /obj/item/ammo_magazine/c45m
+ path = /obj/item/ammo_magazine/m45
/datum/uplink_item/item/ammo/c45map
name = "Pistol Magazine (.45 AP)"
- path = /obj/item/ammo_magazine/c45m/ap
+ path = /obj/item/ammo_magazine/m45/ap
/datum/uplink_item/item/ammo/tommymag
name = "Tommygun Magazine (.45)"
- path = /obj/item/ammo_magazine/tommymag
+ path = /obj/item/ammo_magazine/m45tommy
/datum/uplink_item/item/ammo/tommymagap
name = "Tommygun Magazine (.45 AP)"
- path = /obj/item/ammo_magazine/tommymag/ap
+ path = /obj/item/ammo_magazine/m45tommy/ap
/datum/uplink_item/item/ammo/tommydrum
name = "Tommygun Drum Magazine (.45)"
- path = /obj/item/ammo_magazine/tommydrum
+ path = /obj/item/ammo_magazine/m45tommydrum
item_cost = 40
/datum/uplink_item/item/ammo/tommydrumap
name = "Tommygun Drum Magazine (.45 AP)"
- path = /obj/item/ammo_magazine/tommydrum/ap
+ path = /obj/item/ammo_magazine/m45tommydrum/ap
/datum/uplink_item/item/ammo/darts
name = "Darts"
@@ -50,39 +50,39 @@
/datum/uplink_item/item/ammo/c556
name = "Rifle Magazine (5.56mm)"
- path = /obj/item/ammo_magazine/c556
+ path = /obj/item/ammo_magazine/m556
/datum/uplink_item/item/ammo/c556/ext
name = "Rifle Magazine (5.56mm Extended)"
- path = /obj/item/ammo_magazine/c556/ext
+ path = /obj/item/ammo_magazine/m556/ext
/datum/uplink_item/item/ammo/c556/ap
name = "Rifle Magazine (5.56mm AP)"
- path = /obj/item/ammo_magazine/c556/ap
+ path = /obj/item/ammo_magazine/m556/ap
/datum/uplink_item/item/ammo/c556/ap/ext
name = "Rifle Magazine (5.56mm AP Extended)"
- path = /obj/item/ammo_magazine/c556/ap/ext
+ path = /obj/item/ammo_magazine/m556/ap/ext
/datum/uplink_item/item/ammo/c762
name = "Rifle Magazine (7.62mm)"
- path = /obj/item/ammo_magazine/c762
+ path = /obj/item/ammo_magazine/m762
/datum/uplink_item/item/ammo/c762/ap
name = "Rifle Magazine (7.62mm AP)"
- path = /obj/item/ammo_magazine/c762/ap
+ path = /obj/item/ammo_magazine/m762/ap
/datum/uplink_item/item/ammo/a10mm
name = "SMG Magazine (10mm)"
- path = /obj/item/ammo_magazine/a10mm
+ path = /obj/item/ammo_magazine/m10mm
/datum/uplink_item/item/ammo/a556
name = "Machinegun Magazine (5.56mm)"
- path = /obj/item/ammo_magazine/a556
+ path = /obj/item/ammo_magazine/m556saw
/datum/uplink_item/item/ammo/a556/ap
name = "Machinegun Magazine (5.56mm AP)"
- path = /obj/item/ammo_magazine/a556/ap
+ path = /obj/item/ammo_magazine/m556saw/ap
/datum/uplink_item/item/ammo/g12
name = "12g Shotgun Ammo Box (Slug)"
diff --git a/code/game/gamemodes/meteor/meteors.dm b/code/game/gamemodes/meteor/meteors.dm
index ad8b89ec80..c5096d12d8 100644
--- a/code/game/gamemodes/meteor/meteors.dm
+++ b/code/game/gamemodes/meteor/meteors.dm
@@ -271,8 +271,7 @@
if(explode)
explosion(src.loc, devastation_range = 0, heavy_impact_range = 0, light_impact_range = 4, flash_range = 6, adminlog = 0)
new /obj/effect/decal/cleanable/greenglow(get_turf(src))
- for(var/mob/living/L in view(10, src))
- L.apply_effect(40, IRRADIATE)
+ radiation_repository.radiate(src, 50)
// This meteor fries toasters.
/obj/effect/meteor/emp
diff --git a/code/game/jobs/job/assistant.dm b/code/game/jobs/job/assistant.dm
index cc0faede19..22c4efd7f1 100644
--- a/code/game/jobs/job/assistant.dm
+++ b/code/game/jobs/job/assistant.dm
@@ -11,7 +11,7 @@
economic_modifier = 1
access = list() //See /datum/job/assistant/get_access()
minimal_access = list() //See /datum/job/assistant/get_access()
- alt_titles = list("Technical Assistant","Medical Intern","Research Assistant","Visitor", "Resident")
+ alt_titles = list("Technical Assistant","Test Subject","Medical Intern","Research Assistant","Visitor", "Resident") // Test Subject is a VOREStation edit.
/datum/job/assistant/equip(var/mob/living/carbon/human/H, var/alt_title)
if(!H) return 0
diff --git a/code/game/jobs/job/civilian.dm b/code/game/jobs/job/civilian.dm
index 5d105d6e87..59f365dac2 100644
--- a/code/game/jobs/job/civilian.dm
+++ b/code/game/jobs/job/civilian.dm
@@ -231,8 +231,8 @@
department = "Civilian"
department_flag = CIVILIAN
faction = "Station"
- total_positions = 1
- spawn_positions = 1
+ total_positions = 2 // VOREStation Edit. Original number is 1.
+ spawn_positions = 2 // VOREStation Edit. Original number is 1.
supervisors = "the head of personnel"
selection_color = "#515151"
idtype = /obj/item/weapon/card/id/civilian
diff --git a/code/game/machinery/OpTable.dm b/code/game/machinery/OpTable.dm
index 4d56d6662d..5696892ddc 100644
--- a/code/game/machinery/OpTable.dm
+++ b/code/game/machinery/OpTable.dm
@@ -8,6 +8,7 @@
use_power = 1
idle_power_usage = 1
active_power_usage = 5
+ surgery_odds = 100
var/mob/living/carbon/human/victim = null
var/strapped = 0.0
var/obj/machinery/computer/operating/computer = null
diff --git a/code/game/machinery/autolathe.dm b/code/game/machinery/autolathe.dm
index 946b18ecc2..eb7b7049ef 100644
--- a/code/game/machinery/autolathe.dm
+++ b/code/game/machinery/autolathe.dm
@@ -145,7 +145,7 @@
if(is_robot_module(O))
return 0
- if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/a357) || istype(O,/obj/item/ammo_magazine/c38)) // Prevents ammo recycling exploit with speedloaders.
+ if(istype(O,/obj/item/ammo_magazine/clip) || istype(O,/obj/item/ammo_magazine/s357) || istype(O,/obj/item/ammo_magazine/s38)) // Prevents ammo recycling exploit with speedloaders.
user << "\The [O] is too hazardous to recycle with the autolathe!"
return
/* ToDo: Make this actually check for ammo and change the value of the magazine if it's empty. -Spades
@@ -263,7 +263,7 @@
stored_material[material] = max(0, stored_material[material] - round(making.resources[material] * mat_efficiency) * multiplier)
update_icon() // So lid closes
-
+
sleep(build_time)
busy = 0
diff --git a/code/game/machinery/autolathe_vr.dm b/code/game/machinery/autolathe_vr.dm
index 0a22326d44..252a31e6af 100644
--- a/code/game/machinery/autolathe_vr.dm
+++ b/code/game/machinery/autolathe_vr.dm
@@ -1,16 +1,16 @@
/datum/category_item/autolathe/arms/classic_smg_9mm
name = "SMG magazine (9mm)"
- path = /obj/item/ammo_magazine/mc9mml
+ path = /obj/item/ammo_magazine/m9mml
hidden = 1
/datum/category_item/autolathe/arms/classic_smg_9mmr
name = "SMG magazine (9mm rubber)"
- path = /obj/item/ammo_magazine/mc9mml/rubber
+ path = /obj/item/ammo_magazine/m9mml/rubber
/datum/category_item/autolathe/arms/classic_smg_9mmp
name = "SMG magazine (9mm practice)"
- path = /obj/item/ammo_magazine/mc9mml/practice
+ path = /obj/item/ammo_magazine/m9mml/practice
/datum/category_item/autolathe/arms/classic_smg_9mmf
name = "SMG magazine (9mm flash)"
- path = /obj/item/ammo_magazine/mc9mml/flash
+ path = /obj/item/ammo_magazine/m9mml/flash
diff --git a/code/game/machinery/cryopod.dm b/code/game/machinery/cryopod.dm
index a11e94c451..6f9c37ef66 100644
--- a/code/game/machinery/cryopod.dm
+++ b/code/game/machinery/cryopod.dm
@@ -432,7 +432,7 @@
else
if(control_computer && control_computer.allow_items)
control_computer.frozen_items += W
- W.loc = null
+ W.loc = control_computer //VOREStation Edit
else
W.forceMove(src.loc)
diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index f3a0fd68f0..fbef08cd30 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -103,7 +103,7 @@
/obj/machinery/door/airlock/maintenance
name = "Maintenance Access"
icon = 'icons/obj/doors/Doormaint.dmi'
- req_one_access = list(access_maint_tunnels)
+ //req_one_access = list(access_maint_tunnels) //VOREStation Edit - Maintenance is open access
assembly_type = /obj/structure/door_assembly/door_assembly_mai
/obj/machinery/door/airlock/maintenance/cargo
@@ -321,6 +321,7 @@
icon = 'icons/obj/doors/Dooruranium.dmi'
mineral = "uranium"
var/last_event = 0
+ var/rad_power = 7.5
/obj/machinery/door/airlock/process()
// Deliberate no call to parent.
@@ -338,15 +339,10 @@
/obj/machinery/door/airlock/uranium/process()
if(world.time > last_event+20)
if(prob(50))
- radiate()
+ radiation_repository.radiate(src, rad_power)
last_event = world.time
..()
-/obj/machinery/door/airlock/uranium/proc/radiate()
- for(var/mob/living/L in range (3,src))
- L.apply_effect(15,IRRADIATE,0)
- return
-
/obj/machinery/door/airlock/phoron
name = "Phoron Airlock"
desc = "No way this can end badly."
diff --git a/code/game/machinery/doors/blast_door.dm b/code/game/machinery/doors/blast_door.dm
index 3d899377cc..41680d3de7 100644
--- a/code/game/machinery/doors/blast_door.dm
+++ b/code/game/machinery/doors/blast_door.dm
@@ -13,7 +13,7 @@
icon = 'icons/obj/doors/rapid_pdoor.dmi'
icon_state = null
min_force = 20 //minimum amount of force needed to damage the door with a melee weapon
-
+ var/material/implicit_material
// Icon states for different shutter types. Simply change this instead of rewriting the update_icon proc.
var/icon_state_open = null
var/icon_state_opening = null
@@ -29,6 +29,13 @@
//turning this off prevents awkward zone geometry in places like medbay lobby, for example.
block_air_zones = 0
+/obj/machinery/door/blast/initialize()
+ ..()
+ implicit_material = get_material_by_name("plasteel")
+
+/obj/machinery/door/blast/get_material()
+ return implicit_material
+
// Proc: Bumped()
// Parameters: 1 (AM - Atom that tried to walk through this object)
// Description: If we are open returns zero, otherwise returns result of parent function.
@@ -46,6 +53,7 @@
icon_state = icon_state_closed
else
icon_state = icon_state_open
+ radiation_repository.resistance_cache.Remove(get_turf(src))
return
// Proc: force_open()
diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm
index 20356c1a5f..ef7c4af9a2 100644
--- a/code/game/machinery/doors/door.dm
+++ b/code/game/machinery/doors/door.dm
@@ -364,6 +364,7 @@
icon_state = "door1"
else
icon_state = "door0"
+ radiation_repository.resistance_cache.Remove(get_turf(src))
return
diff --git a/code/game/machinery/doors/multi_tile.dm b/code/game/machinery/doors/multi_tile.dm
index a7c75e6253..aef0fbe7a4 100644
--- a/code/game/machinery/doors/multi_tile.dm
+++ b/code/game/machinery/doors/multi_tile.dm
@@ -82,4 +82,4 @@
/obj/machinery/door/airlock/multi_tile/metal/mait
icon = 'icons/obj/doors/Door2x1_Maint.dmi'
- req_one_access = list(access_maint_tunnels)
+ //req_one_access = list(access_maint_tunnels) //VOREStaiton Edit - Maintenance is open access
diff --git a/code/game/machinery/vending.dm b/code/game/machinery/vending.dm
index 5739a6f33e..b18284fab8 100644
--- a/code/game/machinery/vending.dm
+++ b/code/game/machinery/vending.dm
@@ -1028,7 +1028,7 @@
icon_state = "engivend"
icon_deny = "engivend-deny"
req_access = list(access_engine_equip)
- products = list(/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10,
+ products = list(/obj/item/device/geiger = 4,/obj/item/clothing/glasses/meson = 2,/obj/item/device/multitool = 4,/obj/item/weapon/cell/high = 10,
/obj/item/weapon/airlock_electronics = 10,/obj/item/weapon/module/power_control = 10,
/obj/item/weapon/circuitboard/airalarm = 10,/obj/item/weapon/circuitboard/firealarm = 10,/obj/item/weapon/circuitboard/status_display = 2,
/obj/item/weapon/circuitboard/ai_status_display = 2,/obj/item/weapon/circuitboard/newscaster = 2,/obj/item/weapon/circuitboard/holopad = 2,
diff --git a/code/game/machinery/vending_vr.dm b/code/game/machinery/vending_vr.dm
index e7541bc5b1..dd51fc712d 100644
--- a/code/game/machinery/vending_vr.dm
+++ b/code/game/machinery/vending_vr.dm
@@ -6,7 +6,7 @@
/obj/machinery/vending/security/New()
products += list(/obj/item/weapon/gun/energy/taser = 8,/obj/item/weapon/gun/energy/stunrevolver = 4,
/obj/item/weapon/reagent_containers/spray/pepper = 6,/obj/item/taperoll/police = 6,
- /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/c45m/flash = 8,
+ /obj/item/weapon/gun/projectile/sec/flash = 4, /obj/item/ammo_magazine/m45/flash = 8,
/obj/item/clothing/glasses/omnihud/sec = 6)
..()
diff --git a/code/game/mecha/equipment/tools/tools.dm b/code/game/mecha/equipment/tools/tools.dm
index 9b2e0aa26d..4d7ee902d8 100644
--- a/code/game/mecha/equipment/tools/tools.dm
+++ b/code/game/mecha/equipment/tools/tools.dm
@@ -973,11 +973,7 @@
process(var/obj/item/mecha_parts/mecha_equipment/generator/nuclear/EG)
if(..())
- for(var/mob/living/carbon/M in view(EG.chassis))
- if(istype(M,/mob/living/carbon/human))
- M.apply_effect((EG.rad_per_cycle*3),IRRADIATE,0)
- else
- M.apply_effect(EG.rad_per_cycle, IRRADIATE)
+ radiation_repository.radiate(EG, (EG.rad_per_cycle * 3))
return 1
diff --git a/code/game/objects/items/devices/communicator/communicator.dm b/code/game/objects/items/devices/communicator/communicator.dm
index 0bfe99bbb7..4fa3e1efcd 100644
--- a/code/game/objects/items/devices/communicator/communicator.dm
+++ b/code/game/objects/items/devices/communicator/communicator.dm
@@ -261,7 +261,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
// Proc: ui_interact()
// Parameters: 4 (standard NanoUI arguments)
// Description: Uses a bunch of for loops to turn lists into lists of lists, so they can be displayed in nanoUI, then displays various buttons to the user.
-/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1)
+/obj/item/device/communicator/ui_interact(mob/user, ui_key = "main", var/datum/nanoui/ui = null, var/force_open = 1, var/key_state = null)
// this is the data which will be sent to the ui
var/data[0] //General nanoUI information
var/communicators[0] //List of communicators
@@ -356,7 +356,7 @@ var/global/list/obj/item/device/communicator/all_communicators = list()
if(!ui)
// the ui does not exist, so we'll create a new() one
// for a list of parameters and their descriptions see the code docs in \code\modules\nano\nanoui.dm
- ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700)
+ ui = new(user, src, ui_key, "communicator.tmpl", "Communicator", 475, 700, state = key_state)
// when the ui is first opened this is the data it will use
ui.set_initial_data(data)
// open the new ui window
diff --git a/code/game/objects/items/devices/flash.dm b/code/game/objects/items/devices/flash.dm
index 632f9afdfd..758678bed9 100644
--- a/code/game/objects/items/devices/flash.dm
+++ b/code/game/objects/items/devices/flash.dm
@@ -81,7 +81,15 @@
playsound(src.loc, 'sound/weapons/flash.ogg', 100, 1)
var/flashfail = 0
- if(iscarbon(M))
+ //VOREStation Add - NIF
+ if(ishuman(M))
+ var/mob/living/carbon/human/H = M
+ if(H.nif && H.nif.flag_check(NIF_V_FLASHPROT,NIF_FLAGS_VISION))
+ flashfail = 1
+ H.nif.notify("High intensity light detected, and blocked!",TRUE)
+ //VOREStation Add End
+
+ if(iscarbon(M) && !flashfail) //VOREStation Add - NIF
var/mob/living/carbon/C = M
if(C.stat != DEAD)
var/safety = C.eyecheck()
diff --git a/code/game/objects/items/devices/geiger.dm b/code/game/objects/items/devices/geiger.dm
new file mode 100644
index 0000000000..62cb9d9862
--- /dev/null
+++ b/code/game/objects/items/devices/geiger.dm
@@ -0,0 +1,53 @@
+#define RAD_LEVEL_LOW 5 //10 // Around the level at which radiation starts to become harmful
+#define RAD_LEVEL_MODERATE 15 //15
+#define RAD_LEVEL_HIGH 50 //50
+#define RAD_LEVEL_VERY_HIGH 100 //100
+
+//Geiger counter
+//Rewritten version of TG's geiger counter
+//I opted to show exact radiation levels
+
+/obj/item/device/geiger
+ name = "geiger counter"
+ desc = "A handheld device used for detecting and measuring radiation in an area."
+ icon_state = "geiger_off"
+ item_state = "multitool"
+ w_class = ITEMSIZE_SMALL
+ var/scanning = 0
+ var/radiation_count = 0
+
+/obj/item/device/geiger/New()
+ processing_objects |= src
+
+/obj/item/device/geiger/process()
+ if(!scanning)
+ return
+ radiation_count = radiation_repository.get_rads_at_turf(get_turf(src))
+ update_icon()
+
+/obj/item/device/geiger/examine(mob/user)
+ ..(user)
+ to_chat(user, "[scanning ? "ambient" : "stored"] radiation level: [radiation_count ? radiation_count : "0"]Bq.")
+
+/obj/item/device/geiger/attack_self(var/mob/user)
+ scanning = !scanning
+ update_icon()
+ to_chat(user, "\icon[src] You switch [scanning ? "on" : "off"] [src].")
+
+/obj/item/device/geiger/update_icon()
+ if(!scanning)
+ icon_state = "geiger_off"
+ return 1
+
+ switch(radiation_count)
+ if(null) icon_state = "geiger_on_1"
+ if(-INFINITY to RAD_LEVEL_LOW) icon_state = "geiger_on_1"
+ if(RAD_LEVEL_LOW + 1 to RAD_LEVEL_MODERATE) icon_state = "geiger_on_2"
+ if(RAD_LEVEL_MODERATE + 1 to RAD_LEVEL_HIGH) icon_state = "geiger_on_3"
+ if(RAD_LEVEL_HIGH + 1 to RAD_LEVEL_VERY_HIGH) icon_state = "geiger_on_4"
+ if(RAD_LEVEL_VERY_HIGH + 1 to INFINITY) icon_state = "geiger_on_5"
+
+#undef RAD_LEVEL_LOW
+#undef RAD_LEVEL_MODERATE
+#undef RAD_LEVEL_HIGH
+#undef RAD_LEVEL_VERY_HIGH
\ No newline at end of file
diff --git a/code/game/objects/items/devices/scanners.dm b/code/game/objects/items/devices/scanners.dm
index 5d883784aa..cfd0693b15 100644
--- a/code/game/objects/items/devices/scanners.dm
+++ b/code/game/objects/items/devices/scanners.dm
@@ -99,6 +99,8 @@ REAGENT SCANNER
if(M.status_flags & FAKEDEATH)
OX = fake_oxy > 50 ? "Severe oxygen deprivation detected" : "Subject bloodstream oxygen level normal"
user.show_message("[OX] | [TX] | [BU] | [BR]")
+ if(M.radiation)
+ user.show_message("Radiation detected.")
if(istype(M, /mob/living/carbon))
var/mob/living/carbon/C = M
if(C.reagents.total_volume)
diff --git a/code/game/objects/items/weapons/implants/implant.dm b/code/game/objects/items/weapons/implants/implant.dm
index 6554e80f8b..aff1f4bb31 100644
--- a/code/game/objects/items/weapons/implants/implant.dm
+++ b/code/game/objects/items/weapons/implants/implant.dm
@@ -452,11 +452,11 @@ the implant may become unstable and either pre-maturely inject the subject or si
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
if(istype(t, /area/syndicate_station) || istype(t, /area/syndicate_mothership) || istype(t, /area/shuttle/syndicate_elite) )
//give the syndies a bit of stealth
- a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "General")
+ a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in Space!", "[mobname]'s Death Alarm", "Medical")
else
- a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "General")
+ a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [t.name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
@@ -464,13 +464,13 @@ the implant may become unstable and either pre-maturely inject the subject or si
if ("emp")
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
var/name = prob(50) ? t.name : pick(teleportlocs)
- a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "General")
+ a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died in [name]!", "[mobname]'s Death Alarm", "Medical")
qdel(a)
else
var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
- a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "General")
+ a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Security")
// a.autosay("[mobname] has died-zzzzt in-in-in...", "[mobname]'s Death Alarm", "Medical")
qdel(a)
diff --git a/code/game/objects/items/weapons/storage/belt.dm b/code/game/objects/items/weapons/storage/belt.dm
index 06fd49d0e3..dfa4f61ba1 100644
--- a/code/game/objects/items/weapons/storage/belt.dm
+++ b/code/game/objects/items/weapons/storage/belt.dm
@@ -124,7 +124,7 @@
/obj/item/weapon/handcuffs,
/obj/item/device/flash,
/obj/item/clothing/glasses,
- /obj/item/ammo_casing/shotgun,
+ /obj/item/ammo_casing/a12g,
/obj/item/ammo_magazine,
/obj/item/weapon/cell/device,
/obj/item/weapon/reagent_containers/food/snacks/donut/,
diff --git a/code/game/objects/items/weapons/storage/boxes.dm b/code/game/objects/items/weapons/storage/boxes.dm
index 26873e6608..c224b38a09 100644
--- a/code/game/objects/items/weapons/storage/boxes.dm
+++ b/code/game/objects/items/weapons/storage/boxes.dm
@@ -151,12 +151,12 @@
/obj/item/weapon/storage/box/blanks/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/blank(src)
+ new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/blanks/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/blank(src)
+ new /obj/item/ammo_casing/a12g/blank(src)
/obj/item/weapon/storage/box/beanbags
name = "box of beanbag shells"
@@ -167,12 +167,12 @@
/obj/item/weapon/storage/box/beanbags/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/beanbags/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/beanbag(src)
+ new /obj/item/ammo_casing/a12g/beanbag(src)
/obj/item/weapon/storage/box/shotgunammo
name = "box of shotgun slugs"
@@ -183,12 +183,12 @@
/obj/item/weapon/storage/box/shotgunammo/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun(src)
+ new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunammo/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun(src)
+ new /obj/item/ammo_casing/a12g(src)
/obj/item/weapon/storage/box/shotgunshells
name = "box of shotgun shells"
@@ -199,12 +199,12 @@
/obj/item/weapon/storage/box/shotgunshells/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/pellet(src)
+ new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/shotgunshells/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/pellet(src)
+ new /obj/item/ammo_casing/a12g/pellet(src)
/obj/item/weapon/storage/box/flashshells
name = "box of illumination shells"
@@ -215,12 +215,12 @@
/obj/item/weapon/storage/box/flashshells/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/flash(src)
+ new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/flashshells/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/flash(src)
+ new /obj/item/ammo_casing/a12g/flash(src)
/obj/item/weapon/storage/box/stunshells
name = "box of stun shells"
@@ -231,12 +231,12 @@
/obj/item/weapon/storage/box/stunshells/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/stunshell(src)
+ new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/stunshells/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/stunshell(src)
+ new /obj/item/ammo_casing/a12g/stunshell(src)
/obj/item/weapon/storage/box/practiceshells
name = "box of practice shells"
@@ -247,12 +247,12 @@
/obj/item/weapon/storage/box/practiceshells/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/practice(src)
+ new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/practiceshells/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/practice(src)
+ new /obj/item/ammo_casing/a12g/practice(src)
/obj/item/weapon/storage/box/empshells
name = "box of emp shells"
@@ -263,12 +263,12 @@
/obj/item/weapon/storage/box/empshells/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/emp(src)
+ new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/empshells/large/New()
..()
for(var/i = 1 to 8)
- new /obj/item/ammo_casing/shotgun/emp(src)
+ new /obj/item/ammo_casing/a12g/emp(src)
/obj/item/weapon/storage/box/sniperammo
name = "box of 14.5mm shells"
diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm
index 573325e079..d5ac595c1e 100644
--- a/code/game/objects/items/weapons/storage/uplink_kits.dm
+++ b/code/game/objects/items/weapons/storage/uplink_kits.dm
@@ -27,7 +27,7 @@
if("guns")
new /obj/item/weapon/gun/projectile/revolver(src)
- new /obj/item/ammo_magazine/a357(src)
+ new /obj/item/ammo_magazine/s357(src)
new /obj/item/weapon/card/emag(src)
new /obj/item/weapon/plastique(src)
new /obj/item/weapon/plastique(src)
diff --git a/code/game/objects/items/weapons/tools.dm b/code/game/objects/items/weapons/tools.dm
index 8c4067187f..555488cd89 100644
--- a/code/game/objects/items/weapons/tools.dm
+++ b/code/game/objects/items/weapons/tools.dm
@@ -376,6 +376,7 @@
var/obj/item/organ/internal/eyes/E = H.internal_organs_by_name[O_EYES]
if(!E)
return
+ if(H.nif && H.nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) return //VOREStation Add - NIF
switch(safety)
if(1)
usr << "Your eyes sting a little."
diff --git a/code/game/objects/random/random.dm b/code/game/objects/random/random.dm
index e0cb908d69..7b781b93f2 100644
--- a/code/game/objects/random/random.dm
+++ b/code/game/objects/random/random.dm
@@ -290,11 +290,11 @@
prob(2);/obj/item/weapon/storage/box/shotgunammo,
prob(4);/obj/item/weapon/storage/box/shotgunshells,
prob(1);/obj/item/weapon/storage/box/stunshells,
- prob(2);/obj/item/ammo_magazine/c45m,
- prob(4);/obj/item/ammo_magazine/c45m/rubber,
- prob(4);/obj/item/ammo_magazine/c45m/flash,
- prob(2);/obj/item/ammo_magazine/mc9mmt,
- prob(6);/obj/item/ammo_magazine/mc9mmt/rubber)
+ prob(2);/obj/item/ammo_magazine/m45,
+ prob(4);/obj/item/ammo_magazine/m45/rubber,
+ prob(4);/obj/item/ammo_magazine/m45/flash,
+ prob(2);/obj/item/ammo_magazine/m9mmt,
+ prob(6);/obj/item/ammo_magazine/m9mmt/rubber)
/obj/random/action_figure
diff --git a/code/game/objects/random/random_vr.dm b/code/game/objects/random/random_vr.dm
index 072b853445..dd873ddd24 100644
--- a/code/game/objects/random/random_vr.dm
+++ b/code/game/objects/random/random_vr.dm
@@ -88,35 +88,35 @@
item_to_spawn()
return pick(prob(5);/obj/item/weapon/storage/box/shotgunammo,\
prob(5);/obj/item/weapon/storage/box/shotgunshells,\
- prob(5);/obj/item/ammo_magazine/a357,\
- prob(5);/obj/item/ammo_magazine/clip/a762,\
- prob(5);/obj/item/ammo_magazine/c45m,\
- prob(5);/obj/item/ammo_magazine/c45m/rubber,\
- prob(5);/obj/item/ammo_magazine/c38,\
- prob(5);/obj/item/ammo_magazine/c38/rubber,\
+ prob(5);/obj/item/ammo_magazine/m357,\
+ prob(5);/obj/item/ammo_magazine/clip/c762,\
+ prob(5);/obj/item/ammo_magazine/m45,\
+ prob(5);/obj/item/ammo_magazine/m45/rubber,\
+ prob(5);/obj/item/ammo_magazine/s38,\
+ prob(5);/obj/item/ammo_magazine/s38/rubber,\
prob(5);/obj/item/weapon/storage/box/flashbangs,\
- prob(5);/obj/item/ammo_magazine/c556,\
- prob(4);/obj/item/ammo_magazine/clip/a556,\
+ prob(5);/obj/item/ammo_magazine/m556,\
+ prob(4);/obj/item/ammo_magazine/clip/c556,\
prob(4);/obj/item/ammo_magazine/clip/c45,\
prob(4);/obj/item/ammo_magazine/clip/c9mm,\
- prob(4);/obj/item/ammo_magazine/c45uzi,\
- prob(4);/obj/item/ammo_magazine/c556/ext,\
- prob(4);/obj/item/ammo_magazine/mc9mm,\
- prob(4);/obj/item/ammo_magazine/mc9mml,\
- prob(4);/obj/item/ammo_magazine/mc9mmt,\
- prob(4);/obj/item/ammo_magazine/mc9mmt/rubber,\
- prob(4);/obj/item/ammo_magazine/a10mm,\
- prob(4);/obj/item/ammo_magazine/p90,\
+ prob(4);/obj/item/ammo_magazine/m45uzi,\
+ prob(4);/obj/item/ammo_magazine/m556/ext,\
+ prob(4);/obj/item/ammo_magazine/m9mm,\
+ prob(4);/obj/item/ammo_magazine/m9mml,\
+ prob(4);/obj/item/ammo_magazine/m9mmt,\
+ prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\
+ prob(4);/obj/item/ammo_magazine/m10mm,\
+ prob(4);/obj/item/ammo_magazine/m9mmp90,\
/* prob(4);/obj/item/ammo_magazine/m14,\
prob(4);/obj/item/ammo_magazine/m14/large,\ */
- prob(4);/obj/item/ammo_magazine/c556/ext,\
- prob(4);/obj/item/ammo_magazine/s762,\
- prob(4);/obj/item/ammo_magazine/c762,\
- prob(3);/obj/item/ammo_magazine/clip/a10mm,\
- prob(3);/obj/item/ammo_magazine/clip/a50,\
- prob(3);/obj/item/ammo_magazine/c556,\
- prob(2);/obj/item/ammo_magazine/a50,\
- prob(2);/obj/item/ammo_magazine/a556,\
+ prob(4);/obj/item/ammo_magazine/m556/ext,\
+ prob(4);/obj/item/ammo_magazine/m762,\
+ prob(4);/obj/item/ammo_magazine/m762,\
+ prob(3);/obj/item/ammo_magazine/clip/c10mm,\
+ prob(3);/obj/item/ammo_magazine/clip/c50,\
+ prob(3);/obj/item/ammo_magazine/m556,\
+ prob(2);/obj/item/ammo_magazine/m50,\
+ prob(2);/obj/item/ammo_magazine/m556,\
prob(1);/obj/item/weapon/storage/box/frags,\
/* prob(1);/obj/item/ammo_magazine/battlerifle,\ */
prob(1);/obj/item/ammo_casing/rocket,\
@@ -126,9 +126,9 @@
prob(1);/obj/item/weapon/storage/box/practiceshells,\
prob(1);/obj/item/weapon/storage/box/stunshells,\
prob(1);/obj/item/weapon/storage/box/blanks,\
- prob(1);/obj/item/ammo_magazine/stg,\
- prob(1);/obj/item/ammo_magazine/tommydrum,\
- prob(1);/obj/item/ammo_magazine/tommymag
+ prob(1);/obj/item/ammo_magazine/mtg,\
+ prob(1);/obj/item/ammo_magazine/m45tommydrum,\
+ prob(1);/obj/item/ammo_magazine/m45tommy
)
/obj/random/cargopod
@@ -157,16 +157,12 @@
prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
prob(1);/obj/item/weapon/reagent_containers/syringe/steroid)
-/obj/random_multi/single_item/teleport
- name = "Multi Point - Random Teleport Item"
- id = "Single Teleporter"
- item_path = null
-
- New()
- item_path = pick(list(/obj/item/device/perfect_tele,/obj/item/weapon/bluespace_harpoon))
- ..()
-
-/obj/random_multi/single_item/netgun
- name = "Multi Point - Random Hunter Netgun"
- id = "Single Netgun"
- item_path = /obj/item/weapon/gun/energy/netgun
+//A random thing so that the spawn_nothing_percentage can be used w/o duplicating code.
+/obj/random/trash_pile
+ name = "Random Trash Pile"
+ desc = "Hot Garbage."
+ icon = 'icons/obj/trash_piles.dmi'
+ icon_state = "randompile"
+ spawn_nothing_percentage = 0
+/obj/random/trash_pile/item_to_spawn()
+ return /obj/structure/trash_pile
\ No newline at end of file
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index b535454c7c..e4c9aa7320 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -143,14 +143,15 @@
new /obj/item/device/flash(src)
new /obj/item/weapon/melee/baton/loaded(src)
new /obj/item/weapon/gun/projectile/lamia(src)
- new /obj/item/ammo_magazine/a44/rubber(src)
- new /obj/item/ammo_magazine/a44(src)
- new /obj/item/ammo_magazine/a44(src)
+ new /obj/item/ammo_magazine/m44/rubber(src)
+ new /obj/item/ammo_magazine/m44(src)
+ new /obj/item/ammo_magazine/m44(src)
new /obj/item/weapon/gun/energy/gun(src)
new /obj/item/weapon/cell/device/weapon(src)
new /obj/item/weapon/melee/telebaton(src)
new /obj/item/device/flashlight/maglight(src)
return
+//VOREStation Edit End
/obj/structure/closet/secure_closet/warden
name = "warden's locker"
@@ -234,7 +235,7 @@
new /obj/item/clothing/accessory/storage/black_vest(src)
new /obj/item/clothing/head/soft/sec/corp(src)
new /obj/item/clothing/under/rank/security/corp(src)
- //new /obj/item/ammo_magazine/c45m/rubber(src) //VOREStation Edit
+ //new /obj/item/ammo_magazine/m45/rubber(src) //VOREStation Edit
new /obj/item/weapon/gun/energy/taser(src)
new /obj/item/weapon/cell/device/weapon(src)
new /obj/item/clothing/suit/storage/hooded/wintercoat/security(src)
@@ -294,8 +295,8 @@
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/device/radio/headset/headset_sec/alt(src)
new /obj/item/clothing/suit/storage/vest/detective(src)
- new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
- new /obj/item/ammo_magazine/a44sl/rubber(src) //VOREStation Edit
+ new /obj/item/ammo_casing/a44/rubber(src)
+ new /obj/item/ammo_casing/a44/rubber(src)
new /obj/item/taperoll/police(src)
new /obj/item/weapon/gun/projectile/revolver/consul(src) //VOREStation Edit
new /obj/item/clothing/accessory/holster/armpit(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/syndicate.dm b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
index 98f6138f68..906e46dbe1 100644
--- a/code/game/objects/structures/crates_lockers/closets/syndicate.dm
+++ b/code/game/objects/structures/crates_lockers/closets/syndicate.dm
@@ -42,11 +42,11 @@
/obj/structure/closet/syndicate/nuclear/New()
..()
- new /obj/item/ammo_magazine/a10mm(src)
- new /obj/item/ammo_magazine/a10mm(src)
- new /obj/item/ammo_magazine/a10mm(src)
- new /obj/item/ammo_magazine/a10mm(src)
- new /obj/item/ammo_magazine/a10mm(src)
+ new /obj/item/ammo_magazine/m10mm(src)
+ new /obj/item/ammo_magazine/m10mm(src)
+ new /obj/item/ammo_magazine/m10mm(src)
+ new /obj/item/ammo_magazine/m10mm(src)
+ new /obj/item/ammo_magazine/m10mm(src)
new /obj/item/weapon/storage/box/handcuffs(src)
new /obj/item/weapon/storage/box/flashbangs(src)
new /obj/item/weapon/gun/energy/gun(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
index 07dfb6b2fe..922d8fd9ec 100644
--- a/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
+++ b/code/game/objects/structures/crates_lockers/closets/utility_closets.dm
@@ -156,6 +156,8 @@
new /obj/item/clothing/head/radiation(src)
new /obj/item/clothing/suit/radiation(src)
new /obj/item/clothing/head/radiation(src)
+ new /obj/item/device/geiger(src)
+ new /obj/item/device/geiger(src)
/*
* Bombsuit closet
diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm
index 5e0c0d5abb..54218cc847 100644
--- a/code/game/objects/structures/mop_bucket.dm
+++ b/code/game/objects/structures/mop_bucket.dm
@@ -20,7 +20,7 @@
user << "[src] \icon[src] contains [reagents.total_volume] unit\s of water!"
/obj/structure/mopbucket/attackby(obj/item/I, mob/user)
- if(istype(I, /obj/item/weapon/mop))
+ if(istype(I, /obj/item/weapon/mop) || istype(I, /obj/item/weapon/soap) || istype(I, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on mopbuckets"
if(reagents.total_volume < 1)
user << "\The [src] is out of water!"
else
diff --git a/code/game/objects/structures/simple_doors.dm b/code/game/objects/structures/simple_doors.dm
index 58742c3b60..4e302e0e31 100644
--- a/code/game/objects/structures/simple_doors.dm
+++ b/code/game/objects/structures/simple_doors.dm
@@ -168,8 +168,7 @@
/obj/structure/simple_door/process()
if(!material.radioactivity)
return
- for(var/mob/living/L in range(1,src))
- L.apply_effect(round(material.radioactivity/3),IRRADIATE,0)
+ radiation_repository.radiate(src, round(material.radioactivity/3))
/obj/structure/simple_door/iron/New(var/newloc,var/material_name)
..(newloc, "iron")
diff --git a/code/game/objects/structures/stool_bed_chair_nest/bed.dm b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
index 0375a66272..3e3d4c17e4 100644
--- a/code/game/objects/structures/stool_bed_chair_nest/bed.dm
+++ b/code/game/objects/structures/stool_bed_chair_nest/bed.dm
@@ -205,6 +205,7 @@
icon = 'icons/obj/rollerbed.dmi'
icon_state = "down"
anchored = 0
+ surgery_odds = 75
/obj/structure/bed/roller/update_icon()
return // Doesn't care about material or anything else.
diff --git a/code/game/objects/structures/trash_pile.dm b/code/game/objects/structures/trash_pile.dm
new file mode 100644
index 0000000000..c05c22d84f
--- /dev/null
+++ b/code/game/objects/structures/trash_pile.dm
@@ -0,0 +1,251 @@
+/obj/structure/trash_pile
+ name = "trash pile"
+ desc = "A heap of garbage, but maybe there's something interesting inside?"
+ icon = 'icons/obj/trash_piles.dmi'
+ icon_state = "randompile"
+ density = 1
+ anchored = 1.0
+
+ var/list/searchedby = list()// Characters that have searched this trashpile, with values of searched time.
+ var/mob/living/hider // A simple animal that might be hiding in the pile
+
+ var/chance_alpha = 79 // Alpha list is junk items and normal random stuff.
+ var/chance_beta = 20 // Beta list is actually maybe some useful illegal items. If it's not alpha or gamma, it's beta.
+ var/chance_gamma = 1 // Gamma list is unique items only, and will only spawn one of each. This is a sub-chance of beta chance.
+
+ //These are types that can only spawn once, and then will be removed from this list.
+ //Alpha and beta lists are in their respective procs.
+ var/global/list/unique_gamma = list(
+ /obj/item/device/perfect_tele,
+ /obj/item/weapon/bluespace_harpoon,
+ /obj/item/weapon/gun/energy/netgun,
+ /obj/item/weapon/card/id/syndicate,
+ /obj/item/weapon/moneybag/vault,
+ /obj/item/weapon/permit,
+ /obj/item/weapon/gun/projectile/dartgun
+ )
+
+ var/global/list/allocated_gamma = list()
+
+/obj/structure/trash_pile/initialize()
+ ..()
+ icon_state = pick(
+ "pile1",
+ "pile2",
+ "pilechair",
+ "piletable",
+ "pilevending",
+ "brtrashpile",
+ "microwavepile",
+ "rackpile",
+ "boxfort",
+ "trashbag",
+ "brokecomp")
+
+/obj/structure/trash_pile/attackby(obj/item/W as obj, mob/user as mob)
+ var/w_type = W.type
+ if(w_type in allocated_gamma)
+ to_chat(user,"You feel \the [W] slip from your hand, and disappear into the trash pile.")
+ user.unEquip(W)
+ W.forceMove(src)
+ allocated_gamma -= w_type
+ unique_gamma += w_type
+ qdel(W)
+
+ else
+ return ..()
+
+/obj/structure/trash_pile/attack_generic(mob/user)
+ //Simple Animal
+ if(isanimal(user))
+ var/mob/living/L = user
+ //They're in it, and want to get out.
+ if(L.loc == src)
+ var/choice = alert("Do you want to exit \the [src]?","Un-Hide?","Exit","Stay")
+ if(choice == "Exit")
+ if(L == hider)
+ hider = null
+ L.forceMove(get_turf(src))
+ else if(!hider)
+ var/choice = alert("Do you want to hide in \the [src]?","Un-Hide?","Hide","Stay")
+ if(choice == "Hide" && !hider) //Check again because PROMPT
+ L.forceMove(src)
+ hider = L
+ else
+ return ..()
+
+/obj/structure/trash_pile/attack_hand(mob/user)
+ //Human mob
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.visible_message("[user] searches through \the [src].","You search through \the [src].")
+ if(hider)
+ to_chat(hider,"[user] is searching the trash pile you're in!")
+
+ //Do the searching
+ if(do_after(user,rand(4 SECONDS,6 SECONDS),src))
+
+ //If there was a hider, chance to reveal them
+ if(hider && prob(50))
+ to_chat(hider,"You've been discovered!")
+ hider.forceMove(get_turf(src))
+ hider = null
+ to_chat(user,"Some sort of creature leaps out of \the [src]!")
+
+ //You already searched this one bruh
+ else if(user.ckey in searchedby)
+ to_chat(H,"There's nothing else for you in \the [src]!")
+
+ //You found an item!
+ else
+ var/luck = rand(1,100)
+ var/obj/item/I
+ if(luck <= chance_alpha)
+ I = produce_alpha_item()
+ else if(luck <= chance_alpha+chance_beta)
+ I = produce_beta_item()
+ else if(luck <= chance_alpha+chance_beta+chance_gamma)
+ I = produce_gamma_item()
+
+ //We either have an item to hand over or we don't, at this point!
+ if(I)
+ searchedby += user.ckey
+ I.forceMove(get_turf(src))
+ to_chat(H,"You found \a [I]!")
+
+ else
+ return ..()
+
+//Random lists
+/obj/structure/trash_pile/proc/produce_alpha_item()
+ var/path = pick(prob(4);/obj/item/broken_device,
+ prob(2);/obj/item/weapon/contraband/poster,
+ prob(2);/obj/item/device/flashlight/flare,
+ prob(2);/obj/item/device/flashlight/glowstick,
+ prob(2);/obj/item/device/flashlight/glowstick/blue,
+ prob(1);/obj/item/device/flashlight/glowstick/orange,
+ prob(1);/obj/item/device/flashlight/glowstick/red,
+ prob(1);/obj/item/device/flashlight/glowstick/yellow,
+ prob(1);/obj/item/device/flashlight/pen,
+ prob(4);/obj/item/weapon/cell,
+ prob(4);/obj/item/weapon/cell/device,
+ prob(3);/obj/item/weapon/cell/high,
+ prob(2);/obj/item/weapon/cell/super,
+ prob(5);/obj/random/cigarettes,
+ prob(3);/obj/item/clothing/mask/gas,
+ prob(2);/obj/item/clothing/mask/gas/half,
+ prob(4);/obj/item/clothing/mask/breath,
+ prob(2);/obj/item/weapon/reagent_containers/glass/rag,
+ prob(4);/obj/item/weapon/reagent_containers/food/snacks/liquidfood,
+ prob(2);/obj/item/weapon/storage/secure/briefcase,
+ prob(4);/obj/item/weapon/storage/briefcase,
+ prob(5);/obj/item/weapon/storage/backpack,
+ prob(5);/obj/item/weapon/storage/backpack/satchel/norm,
+ prob(4);/obj/item/weapon/storage/backpack/satchel,
+ prob(3);/obj/item/weapon/storage/backpack/dufflebag,
+ prob(1);/obj/item/weapon/storage/backpack/dufflebag/syndie,
+ prob(5);/obj/item/weapon/storage/box,
+ prob(3);/obj/item/weapon/storage/box/donkpockets,
+ prob(2);/obj/item/weapon/storage/box/sinpockets,
+ prob(1);/obj/item/weapon/storage/box/cups,
+ prob(3);/obj/item/weapon/storage/box/mousetraps,
+ prob(3);/obj/item/weapon/storage/box/engineer,
+ prob(3);/obj/item/weapon/storage/wallet,
+ prob(1);/obj/item/device/paicard,
+ prob(2);/obj/item/clothing/shoes/galoshes,
+ prob(1);/obj/item/clothing/shoes/syndigaloshes,
+ prob(4);/obj/item/clothing/shoes/black,
+ prob(4);/obj/item/clothing/shoes/laceup,
+ prob(4);/obj/item/clothing/shoes/black,
+ prob(4);/obj/item/clothing/shoes/leather,
+ prob(1);/obj/item/clothing/gloves/yellow,
+ prob(3);/obj/item/clothing/gloves/botanic_leather,
+ prob(2);/obj/item/clothing/gloves/sterile/latex,
+ prob(5);/obj/item/clothing/gloves/white,
+ prob(5);/obj/item/clothing/gloves/rainbow,
+ prob(2);/obj/item/clothing/gloves/fyellow,
+ prob(1);/obj/item/clothing/glasses/sunglasses,
+ prob(3);/obj/item/clothing/glasses/meson,
+ prob(2);/obj/item/clothing/glasses/meson/prescription,
+ prob(1);/obj/item/clothing/glasses/welding,
+ prob(1);/obj/item/clothing/head/bio_hood/general,
+ prob(4);/obj/item/clothing/head/hardhat,
+ prob(3);/obj/item/clothing/head/hardhat/red,
+ prob(1);/obj/item/clothing/head/ushanka,
+ prob(2);/obj/item/clothing/head/welding,
+ prob(4);/obj/item/clothing/suit/storage/hazardvest,
+ prob(1);/obj/item/clothing/suit/space/emergency,
+ prob(3);/obj/item/clothing/suit/storage/toggle/bomber,
+ prob(1);/obj/item/clothing/suit/bio_suit/general,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/black,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/blue,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/red,
+ prob(3);/obj/item/clothing/suit/storage/toggle/hoodie/yellow,
+ prob(3);/obj/item/clothing/suit/storage/toggle/brown_jacket,
+ prob(3);/obj/item/clothing/suit/storage/toggle/leather_jacket,
+ prob(1);/obj/item/clothing/suit/storage/vest/press,
+ prob(3);/obj/item/clothing/suit/storage/apron,
+ prob(4);/obj/item/clothing/under/color/grey,
+ prob(2);/obj/item/clothing/under/syndicate/tacticool,
+ prob(2);/obj/item/clothing/under/pants/camo,
+ prob(1);/obj/item/clothing/under/harness,
+ prob(1);/obj/item/clothing/under/tactical,
+ prob(3);/obj/item/clothing/accessory/storage/webbing,
+ prob(4);/obj/item/weapon/spacecash/c1,
+ prob(3);/obj/item/weapon/spacecash/c10,
+ prob(3);/obj/item/weapon/spacecash/c20,
+ prob(1);/obj/item/weapon/spacecash/c50,
+ prob(1);/obj/item/weapon/spacecash/c100,
+ prob(3);/obj/item/weapon/camera_assembly,
+ prob(4);/obj/item/weapon/caution,
+ prob(3);/obj/item/weapon/caution/cone,
+ prob(2);/obj/item/weapon/card/emag_broken,
+ prob(1);/obj/item/weapon/card/emag,
+ prob(2);/obj/item/device/camera,
+ prob(3);/obj/item/device/pda,
+ prob(3);/obj/item/device/radio/headset)
+
+ var/obj/item/I = new path()
+ return I
+
+/obj/structure/trash_pile/proc/produce_beta_item()
+ var/path = pick(prob(6);/obj/item/weapon/storage/pill_bottle/tramadol,
+ prob(4);/obj/item/weapon/storage/pill_bottle/happy,
+ prob(4);/obj/item/weapon/storage/pill_bottle/zoom,
+ prob(4);/obj/item/weapon/material/butterfly,
+ prob(2);/obj/item/weapon/material/butterfly/switchblade,
+ prob(2);/obj/item/weapon/material/knuckledusters,
+ prob(1);/obj/item/weapon/material/hatchet/tacknife,
+ prob(1);/obj/item/clothing/suit/storage/vest/heavy/merc,
+ prob(1);/obj/item/weapon/beartrap,
+ prob(1);/obj/item/weapon/handcuffs/fuzzy,
+ prob(1);/obj/item/weapon/legcuffs,
+ prob(2);/obj/item/weapon/reagent_containers/syringe/drugs,
+ prob(1);/obj/item/weapon/reagent_containers/syringe/steroid,
+ prob(4);/obj/item/device/radio_jammer,
+ prob(2);/obj/item/weapon/storage/box/syndie_kit/spy,
+ prob(2);/obj/item/weapon/grenade/anti_photon,
+ prob(1);/obj/item/weapon/cell/hyper/empty,
+ prob(1);/obj/item/weapon/disk/nifsoft/compliance,
+ prob(1);/obj/item/device/nif/bad)
+
+ var/obj/item/I = new path()
+ return I
+
+/obj/structure/trash_pile/proc/produce_gamma_item()
+ var/path = pick_n_take(unique_gamma)
+ if(!path) //Tapped out, reallocate?
+ for(var/P in allocated_gamma)
+ var/obj/item/I = allocated_gamma[P]
+ if(!I || istype(I.loc,/obj/machinery/computer/cryopod) || I.gcDestroyed)
+ allocated_gamma -= P
+ path = P
+ break
+
+ if(path)
+ var/obj/item/I = new path()
+ allocated_gamma[path] = I
+ return I
+ else
+ return produce_beta_item()
+
diff --git a/code/game/turfs/simulated/floor_icon.dm b/code/game/turfs/simulated/floor_icon.dm
index 007108c72e..dadb173d99 100644
--- a/code/game/turfs/simulated/floor_icon.dm
+++ b/code/game/turfs/simulated/floor_icon.dm
@@ -71,9 +71,9 @@ var/list/flooring_cache = list()
icon_state = "dmg[rand(1,4)]"
else if(flooring)
if(!isnull(broken) && (flooring.flags & TURF_CAN_BREAK))
- overlays |= get_flooring_overlay("[flooring.icon_base]-broken-[broken]","[flooring.icon_base]_broken[broken]")
+ overlays |= get_flooring_overlay("[flooring.icon_base]-broken-[broken]","broken[broken]") // VOREStation Edit - Eris overlays
if(!isnull(burnt) && (flooring.flags & TURF_CAN_BURN))
- overlays |= get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","[flooring.icon_base]_burned[burnt]")
+ overlays |= get_flooring_overlay("[flooring.icon_base]-burned-[burnt]","burned[burnt]") // VOREStation Edit - Eris overlays
if(weather_overlay)
overlays += weather_overlay
diff --git a/code/game/turfs/simulated/wall_attacks.dm b/code/game/turfs/simulated/wall_attacks.dm
index 098782ebdf..890574d664 100644
--- a/code/game/turfs/simulated/wall_attacks.dm
+++ b/code/game/turfs/simulated/wall_attacks.dm
@@ -7,6 +7,8 @@
if(can_open == WALL_OPENING)
return
+ radiation_repository.resistance_cache.Remove(src)
+
if(density)
can_open = WALL_OPENING
//flick("[material.icon_base]fwall_opening", src)
diff --git a/code/game/turfs/simulated/wall_icon.dm b/code/game/turfs/simulated/wall_icon.dm
index dc7874b2aa..eab99bfba7 100644
--- a/code/game/turfs/simulated/wall_icon.dm
+++ b/code/game/turfs/simulated/wall_icon.dm
@@ -26,6 +26,7 @@
else if(material.opacity < 0.5 && opacity)
set_light(0)
+ radiation_repository.resistance_cache.Remove(src)
update_connections(1)
update_icon()
diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm
index f8544e714d..376fb8e452 100644
--- a/code/game/turfs/simulated/walls.dm
+++ b/code/game/turfs/simulated/walls.dm
@@ -48,6 +48,9 @@
if(!radiate())
return PROCESS_KILL
+/turf/simulated/wall/proc/get_material()
+ return material
+
/turf/simulated/wall/bullet_act(var/obj/item/projectile/Proj)
if(istype(Proj,/obj/item/projectile/beam))
burn(2500)
@@ -265,8 +268,7 @@
if(!total_radiation)
return
- for(var/mob/living/L in range(3,src))
- L.apply_effect(total_radiation, IRRADIATE,0)
+ radiation_repository.radiate(src, total_radiation)
return total_radiation
/turf/simulated/wall/proc/burn(temperature)
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 73e570228d..eebf9de424 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -480,7 +480,7 @@
M.equip_to_slot_or_del(new /obj/item/clothing/head/det(M), slot_head)
M.equip_to_slot_or_del(new /obj/item/weapon/gun/projectile/revolver(M), slot_r_hand)
- M.equip_to_slot_or_del(new /obj/item/ammo_magazine/a357(M), slot_l_store)
+ M.equip_to_slot_or_del(new /obj/item/ammo_magazine/s357(M), slot_l_store)
if ("tournament chef") //Steven Seagal FTW
M.equip_to_slot_or_del(new /obj/item/clothing/under/rank/chef(M), slot_w_uniform)
@@ -592,7 +592,7 @@
sec_briefcase.contents += new /obj/item/weapon/spacecash/c1000
sec_briefcase.contents += new /obj/item/weapon/gun/energy/crossbow
sec_briefcase.contents += new /obj/item/weapon/gun/projectile/revolver/mateba
- sec_briefcase.contents += new /obj/item/ammo_magazine/a357
+ sec_briefcase.contents += new /obj/item/ammo_magazine/s357
sec_briefcase.contents += new /obj/item/weapon/plastique
M.equip_to_slot_or_del(sec_briefcase, slot_l_hand)
diff --git a/code/modules/awaymissions/loot_vr.dm b/code/modules/awaymissions/loot_vr.dm
index 5d22422513..b6be0c0b5d 100644
--- a/code/modules/awaymissions/loot_vr.dm
+++ b/code/modules/awaymissions/loot_vr.dm
@@ -185,35 +185,35 @@
var/new_ammo = pick( // Copied from Random.dm
prob(5);/obj/item/weapon/storage/box/shotgunammo,\
prob(5);/obj/item/weapon/storage/box/shotgunshells,\
- prob(5);/obj/item/ammo_magazine/a357,\
- prob(5);/obj/item/ammo_magazine/clip/a762,\
- prob(5);/obj/item/ammo_magazine/c45m,\
- prob(5);/obj/item/ammo_magazine/c45m/rubber,\
- prob(5);/obj/item/ammo_magazine/c38,\
- prob(5);/obj/item/ammo_magazine/c38/rubber,\
+ prob(5);/obj/item/ammo_magazine/m357,\
+ prob(5);/obj/item/ammo_magazine/clip/c762,\
+ prob(5);/obj/item/ammo_magazine/m45,\
+ prob(5);/obj/item/ammo_magazine/m45/rubber,\
+ prob(5);/obj/item/ammo_magazine/s38,\
+ prob(5);/obj/item/ammo_magazine/s38/rubber,\
prob(5);/obj/item/weapon/storage/box/flashbangs,\
- prob(5);/obj/item/ammo_magazine/c556,\
- prob(4);/obj/item/ammo_magazine/clip/a556,\
+ prob(5);/obj/item/ammo_magazine/m556,\
+ prob(4);/obj/item/ammo_magazine/clip/c556,\
prob(4);/obj/item/ammo_magazine/clip/c45,\
prob(4);/obj/item/ammo_magazine/clip/c9mm,\
- prob(4);/obj/item/ammo_magazine/c45uzi,\
- prob(4);/obj/item/ammo_magazine/c556/ext,\
- prob(4);/obj/item/ammo_magazine/mc9mm,\
- prob(4);/obj/item/ammo_magazine/mc9mml,\
- prob(4);/obj/item/ammo_magazine/mc9mmt,\
- prob(4);/obj/item/ammo_magazine/mc9mmt/rubber,\
- prob(4);/obj/item/ammo_magazine/a10mm,\
- prob(4);/obj/item/ammo_magazine/p90,\
+ prob(4);/obj/item/ammo_magazine/m45uzi,\
+ prob(4);/obj/item/ammo_magazine/m556/ext,\
+ prob(4);/obj/item/ammo_magazine/m9mm,\
+ prob(4);/obj/item/ammo_magazine/m9mml,\
+ prob(4);/obj/item/ammo_magazine/m9mmt,\
+ prob(4);/obj/item/ammo_magazine/m9mmt/rubber,\
+ prob(4);/obj/item/ammo_magazine/m10mm,\
+ prob(4);/obj/item/ammo_magazine/m9mmp90,\
/* prob(4);/obj/item/ammo_magazine/m14,\
prob(4);/obj/item/ammo_magazine/m14/large,\ */
- prob(4);/obj/item/ammo_magazine/c556/ext,\
- prob(4);/obj/item/ammo_magazine/s762,\
- prob(4);/obj/item/ammo_magazine/c556/ext,\
- prob(3);/obj/item/ammo_magazine/clip/a10mm,\
- prob(3);/obj/item/ammo_magazine/clip/a50,\
- prob(3);/obj/item/ammo_magazine/c556,\
- prob(2);/obj/item/ammo_magazine/a50,\
- prob(2);/obj/item/ammo_magazine/a556,\
+ prob(4);/obj/item/ammo_magazine/m556/ext,\
+ prob(4);/obj/item/ammo_magazine/m762,\
+ prob(4);/obj/item/ammo_magazine/m556/ext,\
+ prob(3);/obj/item/ammo_magazine/clip/c10mm,\
+ prob(3);/obj/item/ammo_magazine/clip/c50,\
+ prob(3);/obj/item/ammo_magazine/m556,\
+ prob(2);/obj/item/ammo_magazine/m50,\
+ prob(2);/obj/item/ammo_magazine/m556,\
prob(1);/obj/item/weapon/storage/box/frags,\
/* prob(1);/obj/item/ammo_magazine/battlerifle,\ */
prob(1);/obj/item/ammo_casing/rocket,\
@@ -223,9 +223,9 @@
prob(1);/obj/item/weapon/storage/box/practiceshells,\
prob(1);/obj/item/weapon/storage/box/stunshells,\
prob(1);/obj/item/weapon/storage/box/blanks,\
- prob(1);/obj/item/ammo_magazine/stg,\
- prob(1);/obj/item/ammo_magazine/tommydrum,\
- prob(1);/obj/item/ammo_magazine/tommymag)
+ prob(1);/obj/item/ammo_magazine/mtg,\
+ prob(1);/obj/item/ammo_magazine/m45tommydrum,\
+ prob(1);/obj/item/ammo_magazine/m45tommy)
new new_ammo(C)
if("spacesuit")
var/obj/structure/closet/syndicate/C = new(src.loc)
diff --git a/code/modules/client/preference_setup/loadout/loadout_shoes.dm b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
index 4de90fed9f..3b3e528403 100644
--- a/code/modules/client/preference_setup/loadout/loadout_shoes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_shoes.dm
@@ -77,6 +77,38 @@
display_name = "flats, black"
path = /obj/item/clothing/shoes/flats
+/datum/gear/shoes/hitops/
+ display_name = "high-top, white"
+ path = /obj/item/clothing/shoes/hitops/
+
+/datum/gear/shoes/hitops/red
+ display_name = "high-top, red"
+ path = /obj/item/clothing/shoes/hitops/red
+
+/datum/gear/shoes/hitops/black
+ display_name = "high-top, black"
+ path = /obj/item/clothing/shoes/hitops/black
+
+/datum/gear/shoes/hitops/orange
+ display_name = "high-top, orange"
+ path = /obj/item/clothing/shoes/hitops/orange
+
+/datum/gear/shoes/hitops/blue
+ display_name = "high-top, blue"
+ path = /obj/item/clothing/shoes/hitops/blue
+
+/datum/gear/shoes/hitops/green
+ display_name = "high-top, green"
+ path = /obj/item/clothing/shoes/hitops/green
+
+/datum/gear/shoes/hitops/purple
+ display_name = "high-top, purple"
+ path = /obj/item/clothing/shoes/hitops/purple
+
+/datum/gear/shoes/hitops/yellow
+ display_name = "high-top, yellow"
+ path = /obj/item/clothing/shoes/hitops/yellow
+
/datum/gear/shoes/flats/blue
display_name = "flats, blue"
path = /obj/item/clothing/shoes/flats/blue
diff --git a/code/modules/client/preference_setup/vore/07_traits.dm b/code/modules/client/preference_setup/vore/07_traits.dm
index cd5189a8b9..a16e9057b3 100644
--- a/code/modules/client/preference_setup/vore/07_traits.dm
+++ b/code/modules/client/preference_setup/vore/07_traits.dm
@@ -196,10 +196,10 @@
picklist = positive_traits.Copy() - pref.pos_traits
mylist = pref.pos_traits
if(NEUTRAL_MODE)
- picklist = neutral_traits.Copy() - pref.pos_traits
+ picklist = neutral_traits.Copy() - pref.neu_traits
mylist = pref.neu_traits
if(NEGATIVE_MODE)
- picklist = negative_traits.Copy() - pref.pos_traits
+ picklist = negative_traits.Copy() - pref.neg_traits
mylist = pref.neg_traits
else
@@ -224,7 +224,9 @@
var/done = FALSE
while(!done)
var/message = "\[Remaining: [points_left] points, [traits_left] traits\] Select a trait to read the description and see the cost."
- trait_choice = input(message,"Positive Traits") in nicelist
+ trait_choice = input(message,"Trait List") as null|anything in nicelist
+ if(!trait_choice)
+ done = TRUE
if(trait_choice in nicelist)
var/datum/trait/path = nicelist[trait_choice]
var/choice = alert("\[Cost:[initial(path.cost)]\] [initial(path.desc)]",initial(path.name),"Take Trait","Cancel","Go Back")
@@ -241,6 +243,9 @@
var/conflict = FALSE
+ if(trait_choice in pref.pos_traits + pref.neu_traits + pref.neg_traits)
+ conflict = instance.name
+
varconflict:
for(var/P in pref.pos_traits + pref.neu_traits + pref.neg_traits)
var/datum/trait/instance_test = all_traits[P]
diff --git a/code/modules/client/preference_setup/vore/08_nif.dm b/code/modules/client/preference_setup/vore/08_nif.dm
new file mode 100644
index 0000000000..52586d3bcf
--- /dev/null
+++ b/code/modules/client/preference_setup/vore/08_nif.dm
@@ -0,0 +1,45 @@
+//Pretty small file, mostly just for storage.
+/datum/preferences
+ var/obj/item/device/nif/nif_path
+ var/nif_durability
+
+// Definition of the stuff for NIFs
+/datum/category_item/player_setup_item/vore/nif
+ name = "NIF Data"
+ sort_order = 8
+
+/datum/category_item/player_setup_item/vore/nif/load_character(var/savefile/S)
+ S["nif_path"] >> pref.nif_path
+ S["nif_durability"] >> pref.nif_durability
+
+/datum/category_item/player_setup_item/vore/nif/save_character(var/savefile/S)
+ S["nif_path"] << pref.nif_path
+ S["nif_durability"] << pref.nif_durability
+
+/datum/category_item/player_setup_item/vore/nif/sanitize_character()
+ if(pref.nif_path && !ispath(pref.nif_path)) //We have at least a text string that should be a path.
+ pref.nif_path = text2path(pref.nif_path) //Try to convert it to a hard path.
+ if(!pref.nif_path) //If we couldn't, kill it.
+ pref.nif_path = null //Kill!
+ WARNING("Loaded a NIF but it was an invalid path, [pref.real_name]")
+
+ if(ispath(pref.nif_path) && !pref.nif_durability) //How'd you lose this?
+ pref.nif_durability = initial(pref.nif_path.durability) //Well, have a new one, my bad.
+ WARNING("Loaded a NIF but with no durability, [pref.real_name]")
+
+/datum/category_item/player_setup_item/vore/nif/copy_to_mob(var/mob/living/carbon/human/character)
+ //If you had a NIF...
+ if((character.type == /mob/living/carbon/human) && ispath(pref.nif_path) && pref.nif_durability)
+ new pref.nif_path(character,pref.nif_durability)
+
+ //And now here's the trick. We wipe these so that if they die, they lose the NIF.
+ //Backup implants will start saving this again periodically, and so will cryo'ing out.
+ pref.nif_path = null
+ pref.nif_durability = null
+ var/savefile/S = new /savefile(pref.path)
+ if(!S) WARNING ("Couldn't load NIF save savefile? [pref.real_name]")
+ S.cd = "/character[pref.default_slot]"
+ save_character(S)
+
+/datum/category_item/player_setup_item/vore/nif/content(var/mob/user)
+ . += "NIF: [ispath(pref.nif_path) ? "Present" : "None"]"
diff --git a/code/modules/clothing/shoes/colour.dm b/code/modules/clothing/shoes/colour.dm
index 91703336e1..6b4b270f97 100644
--- a/code/modules/clothing/shoes/colour.dm
+++ b/code/modules/clothing/shoes/colour.dm
@@ -123,39 +123,39 @@
if (istype(H, /obj/item/weapon/handcuffs))
attach_cuffs(H, user)
-/obj/item/clothing/shoes/hightops
- name = "white high tops"
+/obj/item/clothing/shoes/hitops
+ name = "white high-tops"
desc = "A pair of shoes that extends past the ankle. Based on a centuries-old, timeless design."
icon_state = "whitehi"
-/obj/item/clothing/shoes/hightops/red
- name = "red high tops"
+/obj/item/clothing/shoes/hitops/red
+ name = "red high-tops"
icon_state = "redhi"
-/obj/item/clothing/shoes/hightops/brown
- name = "brown high tops"
+/obj/item/clothing/shoes/hitops/brown
+ name = "brown high-tops"
icon_state = "brownhi"
-/obj/item/clothing/shoes/hightops/black
- name = "black high tops"
+/obj/item/clothing/shoes/hitops/black
+ name = "black high-tops"
icon_state = "blackhi"
-/obj/item/clothing/shoes/hightops/orange
- name = "orange high tops"
+/obj/item/clothing/shoes/hitops/orange
+ name = "orange high-tops"
icon_state = "orangehi"
-/obj/item/clothing/shoes/hightops/blue
- name = "blue high tops"
+/obj/item/clothing/shoes/hitops/blue
+ name = "blue high-tops"
icon_state = "bluehi"
-/obj/item/clothing/shoes/hightops/green
- name = "green high tops"
+/obj/item/clothing/shoes/hitops/green
+ name = "green high-tops"
icon_state = "greenhi"
-/obj/item/clothing/shoes/hightops/purple
- name = "purple high tops"
+/obj/item/clothing/shoes/hitops/purple
+ name = "purple high-tops"
icon_state = "purplehi"
-/obj/item/clothing/shoes/hightops/yellow
- name = "yellow high tops"
+/obj/item/clothing/shoes/hitops/yellow
+ name = "yellow high-tops"
icon_state = "yellowhi"
\ No newline at end of file
diff --git a/code/modules/clothing/spacesuits/rig/rig.dm b/code/modules/clothing/spacesuits/rig/rig.dm
index 403e29f662..b586f04d27 100644
--- a/code/modules/clothing/spacesuits/rig/rig.dm
+++ b/code/modules/clothing/spacesuits/rig/rig.dm
@@ -199,7 +199,7 @@
if(!piece) continue
piece.icon_state = "[initial(icon_state)]"
if(airtight)
- piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT|PHORONGUARD) //VOREStation edit
+ piece.item_flags &= ~(STOPPRESSUREDAMAGE|AIRTIGHT)
update_icon(1)
/obj/item/weapon/rig/proc/toggle_seals(var/mob/living/carbon/human/M,var/instant)
diff --git a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
index 4724ebce5e..ec36224801 100644
--- a/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
+++ b/code/modules/clothing/spacesuits/rig/rig_pieces_vr.dm
@@ -322,4 +322,13 @@
update_icon()
return 1
else
- return 1
\ No newline at end of file
+ return 1
+
+/obj/item/clothing/head/helmet/space/rig
+ phoronproof = 1
+/obj/item/clothing/gloves/gauntlets/rig
+ phoronproof = 1
+/obj/item/clothing/shoes/magboots/rig
+ phoronproof = 1
+/obj/item/clothing/suit/space/rig
+ phoronproof = 1
diff --git a/code/modules/detectivework/tools/rag.dm b/code/modules/detectivework/tools/rag.dm
index 57af12525d..bafdddf4ff 100644
--- a/code/modules/detectivework/tools/rag.dm
+++ b/code/modules/detectivework/tools/rag.dm
@@ -102,6 +102,10 @@
if(do_after(user,30))
user.visible_message("\The [user] finishes wiping off the [A]!")
A.clean_blood()
+ if(istype(A, /turf) || istype(A, /obj/effect/decal/cleanable) || istype(A, /obj/effect/overlay) || istype(A, /obj/effect/rune)) //VOREStation Edit - "Allows rags to clean dirt from turfs"
+ var/turf/T = get_turf(A)
+ if(T)
+ T.clean(src, user) //VOREStation Edit End
/obj/item/weapon/reagent_containers/glass/rag/attack(atom/target as obj|turf|area, mob/user as mob , flag)
if(isliving(target))
@@ -132,7 +136,7 @@
if(!proximity)
return
- if(istype(A, /obj/structure/reagent_dispensers))
+ if(istype(A, /obj/structure/reagent_dispensers) || istype(A, /obj/item/weapon/reagent_containers/glass/bucket) || istype(A, /obj/structure/mopbucket)) //VOREStation Edit - "Allows rags to be used on buckets and mopbuckets"
if(!reagents.get_free_space())
user << "\The [src] is already soaked."
return
diff --git a/code/modules/events/radiation_storm.dm b/code/modules/events/radiation_storm.dm
index c253496423..cad80ffb83 100644
--- a/code/modules/events/radiation_storm.dm
+++ b/code/modules/events/radiation_storm.dm
@@ -2,7 +2,7 @@
var/const/enterBelt = 30
var/const/radIntervall = 5 // Enough time between enter/leave belt for 10 hits, as per original implementation
var/const/leaveBelt = 80
- var/const/revokeAccess = 135
+ var/const/revokeAccess = 165
startWhen = 2
announceWhen = 1
endWhen = revokeAccess
@@ -27,23 +27,21 @@
radiate()
else if(activeFor == leaveBelt)
- command_announcement.Announce("The station has passed the radiation belt. Please report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
-
+ command_announcement.Announce("The station has passed the radiation belt. Please allow for up to one minute while radiation levels dissipate, and report to medbay if you experience any unusual symptoms. Maintenance will lose all access again shortly.", "Anomaly Alert")
/datum/event/radiation_storm/proc/radiate()
+ var/radiation_level = rand(15, 35)
+ for(var/z in using_map.station_levels)
+ radiation_repository.z_radiate(locate(1, 1, z), radiation_level, 1)
+
for(var/mob/living/carbon/C in living_mob_list)
var/area/A = get_area(C)
if(!A)
continue
- if(!(A.z in using_map.station_levels))
- continue
if(A.flags & RAD_SHIELDED)
continue
-
if(istype(C,/mob/living/carbon/human))
var/mob/living/carbon/human/H = C
- H.apply_effect((rand(15,35)),IRRADIATE,0)
if(prob(5))
- H.apply_effect((rand(40,70)),IRRADIATE,0)
if (prob(75))
randmutb(H) // Applies bad mutation
domutcheck(H,null,MUTCHK_FORCED)
diff --git a/code/modules/events/solar_storm.dm b/code/modules/events/solar_storm.dm
index 971e0418bc..afaa01ed95 100644
--- a/code/modules/events/solar_storm.dm
+++ b/code/modules/events/solar_storm.dm
@@ -27,6 +27,7 @@
radiate()
/datum/event/solar_storm/proc/radiate()
+ // Note: Too complicated to be worth trying to use the radiation system for this. Its only in space anyway, so we make an exception in this case.
for(var/mob/living/L in living_mob_list)
var/turf/T = get_turf(L)
if(!T)
@@ -36,8 +37,7 @@
continue
//Todo: Apply some burn damage from the heat of the sun. Until then, enjoy some moderate radiation.
- L.apply_effect((rand(15,30)),IRRADIATE,blocked = L.getarmor(null, "rad"))
-
+ L.rad_act(rand(15, 30))
/datum/event/solar_storm/end()
command_announcement.Announce("The solar storm has passed the station. It is now safe to resume EVA activities. Please report to medbay if you experience any unusual symptoms. ", "Anomaly Alert")
diff --git a/code/modules/flufftext/Hallucination.dm b/code/modules/flufftext/Hallucination.dm
index a8987538ab..c887ff5b9b 100644
--- a/code/modules/flufftext/Hallucination.dm
+++ b/code/modules/flufftext/Hallucination.dm
@@ -332,7 +332,7 @@ proc/check_panel(mob/M)
qdel(O)
return
-var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/a357,\
+var/list/non_fakeattack_weapons = list(/obj/item/weapon/gun/projectile, /obj/item/ammo_magazine/s357,\
/obj/item/weapon/gun/energy/crossbow, /obj/item/weapon/melee/energy/sword,\
/obj/item/weapon/storage/box/syndicate, /obj/item/weapon/storage/box/emps,\
/obj/item/weapon/cartridge/syndicate, /obj/item/clothing/under/chameleon,\
diff --git a/code/modules/food/recipes_microwave_vr.dm b/code/modules/food/recipes_microwave_vr.dm
index 641f02d31f..8375e4e964 100644
--- a/code/modules/food/recipes_microwave_vr.dm
+++ b/code/modules/food/recipes_microwave_vr.dm
@@ -93,3 +93,24 @@
/obj/item/weapon/reagent_containers/food/snacks/meat
)
result = /obj/item/weapon/reagent_containers/food/snacks/generalschicken
+
+/datum/recipe/chocroizegg
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/chocolatebar,
+ /obj/item/weapon/reagent_containers/food/snacks/egg/roiz
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz
+
+/datum/recipe/friedroizegg
+ reagents = list("sodiumchloride" = 1, "blackpepper" = 1)
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/egg/roiz
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz
+
+/datum/recipe/boiledroizegg
+ reagents = list("water" = 5)
+ items = list(
+ /obj/item/weapon/reagent_containers/food/snacks/egg/roiz
+ )
+ result = /obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz
\ No newline at end of file
diff --git a/code/modules/mining/mine_turfs.dm b/code/modules/mining/mine_turfs.dm
index bf59f3c382..a6a857c43b 100644
--- a/code/modules/mining/mine_turfs.dm
+++ b/code/modules/mining/mine_turfs.dm
@@ -482,7 +482,7 @@ var/list/mining_overlay_cache = list()
M.flash_eyes()
if(prob(50))
M.Stun(5)
- M.apply_effect(25, IRRADIATE)
+ radiation_repository.flat_radiate(src, 25, 200)
if(prob(25))
excavate_find(prob(5), finds[1])
else if(rand(1,500) == 1)
diff --git a/code/modules/mob/living/carbon/breathe.dm b/code/modules/mob/living/carbon/breathe.dm
index 354a26221c..8dffa60d1e 100644
--- a/code/modules/mob/living/carbon/breathe.dm
+++ b/code/modules/mob/living/carbon/breathe.dm
@@ -22,6 +22,13 @@
else
//Okay, we can breathe, now check if we can get air
breath = get_breath_from_internal() //First, check for air from internals
+ //VOREStation Add - Respirocytes as a NIF implant
+ if(!breath && ishuman(src))
+ var/mob/living/carbon/human/H = src
+ if(H.nif && H.nif.flag_check(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH))
+ var/datum/nifsoft/spare_breath/SB = H.nif.imp_check(NIF_SPAREBREATH)
+ breath = SB.resp_breath()
+ //VOREStation Add End
if(!breath)
breath = get_breath_from_environment() //No breath from internals so let's try to get air from our location
if(!breath)
diff --git a/code/modules/mob/living/carbon/carbon.dm b/code/modules/mob/living/carbon/carbon.dm
index 47da8c88f8..47e12f3f6d 100644
--- a/code/modules/mob/living/carbon/carbon.dm
+++ b/code/modules/mob/living/carbon/carbon.dm
@@ -254,6 +254,7 @@
src.sleeping = max(0,src.sleeping-5)
if(src.sleeping == 0)
src.resting = 0
+ if(H) H.in_stasis = 0 //VOREStation Add - Just In Case
M.visible_message("[M] shakes [src] trying to wake [t_him] up!", \
"You shake [src] trying to wake [t_him] up!")
else
diff --git a/code/modules/mob/living/carbon/human/examine_vr.dm b/code/modules/mob/living/carbon/human/examine_vr.dm
index 1d6d77c5ab..a9b6390782 100644
--- a/code/modules/mob/living/carbon/human/examine_vr.dm
+++ b/code/modules/mob/living/carbon/human/examine_vr.dm
@@ -114,15 +114,23 @@
//For OmniHUD records access for appropriate models
/proc/hasHUD_vr(mob/living/carbon/human/H, hudtype)
- if(!(istype(H.glasses, /obj/item/clothing/glasses/omnihud)))
- return 0 //Not wearing omnis, don't care.
+ if(H.nif)
+ switch(hudtype)
+ if("security")
+ if(H.nif.flag_check(NIF_V_AR_SECURITY,NIF_FLAGS_VISION))
+ return TRUE
+ if("medical")
+ if(H.nif.flag_check(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION))
+ return TRUE
- var/obj/item/clothing/glasses/omnihud/omni = H.glasses
+ if(istype(H.glasses, /obj/item/clothing/glasses/omnihud))
+ var/obj/item/clothing/glasses/omnihud/omni = H.glasses
+ switch(hudtype)
+ if("security")
+ if(omni.mode == "sec" || omni.mode == "best")
+ return TRUE
+ if("medical")
+ if(omni.mode == "med" || omni.mode == "best")
+ return TRUE
- switch(hudtype)
- if("security")
- return omni.mode == "sec" || omni.mode == "best"
- if("medical")
- return omni.mode == "med" || omni.mode == "best"
- else
- return 0
\ No newline at end of file
+ return FALSE
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index e6865ef51e..45f6459f32 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -1037,7 +1037,8 @@
gunshot_residue = null
if(clean_feet && !shoes && istype(feet_blood_DNA, /list) && feet_blood_DNA.len)
feet_blood_color = null
- qdel(feet_blood_DNA)
+ feet_blood_DNA.Cut()
+ feet_blood_DNA = null
update_inv_shoes(1)
return 1
diff --git a/code/modules/mob/living/carbon/human/human_attackhand.dm b/code/modules/mob/living/carbon/human/human_attackhand.dm
index 3af1a52bf6..b321d288fb 100644
--- a/code/modules/mob/living/carbon/human/human_attackhand.dm
+++ b/code/modules/mob/living/carbon/human/human_attackhand.dm
@@ -1,5 +1,6 @@
/mob/living/carbon/human/proc/get_unarmed_attack(var/mob/living/carbon/human/target, var/hit_zone)
// VOREStation Edit - Begin
+ if(nif && nif.flag_check(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT)){return unarmed_hardclaws}
if(src.default_attack && src.default_attack.is_usable(src, target, hit_zone))
if(pulling_punches)
var/datum/unarmed_attack/soft_type = src.default_attack.get_sparring_variant()
diff --git a/code/modules/mob/living/carbon/human/human_damage.dm b/code/modules/mob/living/carbon/human/human_damage.dm
index 30ee7c64d6..d1f468500b 100644
--- a/code/modules/mob/living/carbon/human/human_damage.dm
+++ b/code/modules/mob/living/carbon/human/human_damage.dm
@@ -104,6 +104,7 @@
amount *= M.incoming_damage_percent
if(!isnull(M.incoming_brute_damage_percent))
amount *= M.incoming_brute_damage_percent
+ if(nif && nif.flag_check(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage
take_overall_damage(amount, 0)
else
for(var/datum/modifier/M in modifiers)
@@ -120,6 +121,7 @@
amount *= M.incoming_damage_percent
if(!isnull(M.incoming_fire_damage_percent))
amount *= M.incoming_fire_damage_percent
+ if(nif && nif.flag_check(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage
take_overall_damage(0, amount)
else
for(var/datum/modifier/M in modifiers)
@@ -139,6 +141,7 @@
amount *= M.incoming_damage_percent
if(!isnull(M.incoming_brute_damage_percent))
amount *= M.incoming_brute_damage_percent
+ if(nif && nif.flag_check(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage
O.take_damage(amount, 0, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source)
else
for(var/datum/modifier/M in modifiers)
@@ -160,6 +163,7 @@
amount *= M.incoming_damage_percent
if(!isnull(M.incoming_fire_damage_percent))
amount *= M.incoming_fire_damage_percent
+ if(nif && nif.flag_check(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)){amount *= 0.7} //VOREStation Edit - NIF mod for damage resistance for this type of damage
O.take_damage(0, amount, sharp=is_sharp(damage_source), edge=has_edge(damage_source), used_weapon=damage_source)
else
for(var/datum/modifier/M in modifiers)
diff --git a/code/modules/mob/living/carbon/human/human_defense.dm b/code/modules/mob/living/carbon/human/human_defense.dm
index 61b13316b8..8f7398e0a8 100644
--- a/code/modules/mob/living/carbon/human/human_defense.dm
+++ b/code/modules/mob/living/carbon/human/human_defense.dm
@@ -94,7 +94,7 @@ emp_act
var/obj/item/organ/external/organ = organs_by_name[organ_name]
if(organ)
var/weight = organ_rel_size[organ_name]
- armorval += getarmor_organ(organ, type) * weight
+ armorval += (getarmor_organ(organ, type) * weight)
total += weight
return (armorval/max(total, 1))
diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm
index 4fa6ae1117..4331b05407 100644
--- a/code/modules/mob/living/carbon/human/human_organs.dm
+++ b/code/modules/mob/living/carbon/human/human_organs.dm
@@ -32,7 +32,7 @@
if(force_process)
bad_external_organs.Cut()
for(var/obj/item/organ/external/Ex in organs)
- bad_external_organs |= Ex
+ bad_external_organs += Ex //VOREStation Edit - Silly and slow to |= this
//processing internal organs is pretty cheap, do that first.
for(var/obj/item/organ/I in internal_organs)
@@ -44,6 +44,7 @@
if(!force_process && !bad_external_organs.len)
return
+ number_wounds = 0 //VOREStation Add - You have to reduce this at some point...
for(var/obj/item/organ/external/E in bad_external_organs)
if(!E)
continue
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index a0cfc6f0a8..fd21301044 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -82,7 +82,7 @@
handle_medical_side_effects()
handle_heartbeat()
-
+ handle_nif() //VOREStation Add
if(!client)
species.handle_npc(src)
@@ -666,7 +666,8 @@
pressure_alert = -1
else
if( !(COLD_RESISTANCE in mutations))
- take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
+ if(!isSynthetic() || !nif || !nif.flag_check(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER)) //VOREStation Edit - NIF pressure seals
+ take_overall_damage(brute=LOW_PRESSURE_DAMAGE, used_weapon = "Low Pressure")
if(getOxyLoss() < 55) // 11 OxyLoss per 4 ticks when wearing internals; unconsciousness in 16 ticks, roughly half a minute
adjustOxyLoss(4) // 16 OxyLoss per 4 ticks when no internals present; unconsciousness in 13 ticks, roughly twenty seconds
pressure_alert = -2
@@ -703,7 +704,8 @@
// FBPs will overheat, prosthetic limbs are fine.
if(robobody_count)
- bodytemperature += round(robobody_count*1.75)
+ if(!nif || !nif.flag_check(NIF_O_HEATSINKS,NIF_FLAGS_OTHER)) //VOREStation Edit - NIF heatsinks
+ bodytemperature += round(robobody_count*1.75)
var/body_temperature_difference = species.body_temperature - bodytemperature
@@ -1267,7 +1269,7 @@
var/obj/item/clothing/glasses/G = glasses
if(!G.prescription)
set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
- else
+ else if (!nif || !nif.flag_check(NIF_V_CORRECTIVE,NIF_FLAGS_VISION)) //VOREStation Edit - NIF
set_fullscreen(disabilities & NEARSIGHTED, "impaired", /obj/screen/fullscreen/impaired, 1)
set_fullscreen(eye_blurry, "blurry", /obj/screen/fullscreen/blurry)
@@ -1282,6 +1284,7 @@
var/obj/item/clothing/glasses/welding/O = glasses
if(!O.up)
found_welder = 1
+ if(!found_welder && nif && nif.flag_check(NIF_V_UVFILTER,NIF_FLAGS_VISION)) found_welder = 1 //VOREStation Add - NIF
if(!found_welder && istype(head, /obj/item/clothing/head/welding))
var/obj/item/clothing/head/welding/O = head
if(!O.up)
@@ -1336,10 +1339,10 @@
var/obj/item/clothing/glasses/omnihud/S = G
O = S.hud
//VOREStation Add End
- if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud))
+ else if(istype(G, /obj/item/clothing/glasses/sunglasses/sechud)) //VOREStation Edit - Added else
var/obj/item/clothing/glasses/sunglasses/sechud/S = G
O = S.hud
- if(istype(G, /obj/item/clothing/glasses/sunglasses/medhud))
+ else if(istype(G, /obj/item/clothing/glasses/sunglasses/medhud)) //VOREStation Edit - Added else
var/obj/item/clothing/glasses/sunglasses/medhud/M = G
O = M.hud
if(istype(O))
diff --git a/code/modules/mob/living/carbon/human/life_vr.dm b/code/modules/mob/living/carbon/human/life_vr.dm
index 9e655d2672..0a3d2fcb3f 100644
--- a/code/modules/mob/living/carbon/human/life_vr.dm
+++ b/code/modules/mob/living/carbon/human/life_vr.dm
@@ -43,3 +43,10 @@
vantag.icon_state = vantag_pref
else
vantag.icon_state = "hudblank"
+
+//Our call for the NIF to do whatever
+/mob/living/carbon/human/proc/handle_nif()
+ if(!nif) return
+
+ //Process regular life stuff
+ nif.life()
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 8feb3e5b97..d65519f15f 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
@@ -17,13 +17,13 @@
return
if(C.stat == DEAD) //Uh oh, you died!
- if(C.reagents.has_reagent("nutriment")) //Let's hope you have nutriment in you.... If not
+ if(C.hasnutriment()) //Let's hope you have nutriment in you.... If not
var/time = (500+1/((nutrition_used/100+1)/1300))
C.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.
C.reviving = 1
C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay.
C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds."
- C.in_stasis = 1
+ C.does_not_breathe = 1 //effectively makes them spaceworthy while regenning
spawn(time SECONDS)
if(C) //Runtime prevention.
@@ -42,7 +42,7 @@
C.reviving = 1
C.canmove = 0 //Make them unable to move. In case they somehow get up before the delay.
C << "You begin to reconstruct your form. You will not be able to move during this time. It should take aproximately [round(time)] seconds."
- C.in_stasis = 1
+ C.does_not_breathe = 1 //effectively makes them spaceworthy while regenning
spawn(time SECONDS)
if(C.stat != DEAD) //If they're still alive after regenning.
@@ -50,11 +50,12 @@
C.verbs += /mob/living/carbon/human/proc/hatch
return
else if(C.stat == DEAD)
- if(C.reagents.has_reagent("nutriment")) //Let's hope you have nutriment in you.... If not
+ if(C.hasnutriment()) //Let's hope you have nutriment in you.... If not
C << "Consciousness begins to stir as your new body awakens, ready to hatch.."
C.verbs += /mob/living/carbon/human/proc/hatch
else //Dead until nutrition injected.
C << "Your body was unable to regenerate, what few living cells remain require additional nutrients to complete the process."
+ C.reviving = 0 // so they can try again when they're given a kickstart
return
else
return //Something went wrong
@@ -63,6 +64,14 @@
+/mob/living/carbon/human/proc/hasnutriment()
+ if (src.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
+ else if (src.ingested.has_reagent("nutriment", 60) || src.ingested.has_reagent("protein", 30)) //try forcefeeding them, why not. Less effective.
+ return 1
+ else return 0
+
+
/mob/living/carbon/human/proc/hatch()
set name = "Hatch"
set category = "Abilities"
@@ -85,7 +94,7 @@
var/T = get_turf(src)
new /obj/effect/gibspawner/human/scree(T)
var/braindamage = C.brainloss/2 //If you have 100 brainloss, it gives you 50.
- C.in_stasis = 0
+ C.does_not_breathe = 0 //start breathing again
C.revive() // I did have special snowflake code, but this is easier.
C.weakened = 2 //Not going to let you get up immediately. 2 ticks before you get up. Overrides the above 10000 weaken.
C.nutrition = old_nutrition
@@ -119,7 +128,7 @@
C.drop_from_inventory(W)
spawn(3600 SECONDS) //1 hour wait until you can revive again.
C.reviving = 0
- C.in_stasis = 0
+ C.does_not_breathe = 0 //start breathing again
C.verbs -= /mob/living/carbon/human/proc/hatch
return
else
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 4301f45ccd..d1ad3dce6f 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
@@ -73,7 +73,7 @@
H.feral = min(150-H.nutrition, H.feral+1) //Feralness increases while this hungry, capped at 50-150 depending on hunger.
// If they're hurt, chance of snapping. Not if they're straight-up KO'd though.
- if (H.stat == CONSCIOUS && H.traumatic_shock >=36 && H.in_stasis == 0) //30 brute/burn, or 18 halloss.
+ if (H.stat == CONSCIOUS && H.traumatic_shock >=36) //30 brute/burn, or 18 halloss.
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)
@@ -111,6 +111,8 @@
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
+ 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.
+
for(var/mob/living/M in viewers(H))
if(M != H) // someone in view
if(prob(0.5)) // 1 in 200 chance of doing something so as not to interrupt scenes
@@ -160,28 +162,25 @@
var/pressure2 = environment.return_pressure()
var/adjusted_pressure2 = H.calculate_affecting_pressure(pressure2)
- if(adjusted_pressure2 <= 20 && H.in_stasis == 1) //If they're in a enviroment with no pressure and are in stasis (See: regenerating), don't kill them.
+ 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.
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(H.bodytemperature <= 260 && H.in_stasis == 1) //If they're in stasis, don't give them them the negative cold effects
+ 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
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/colddamage = 0
+ var/coldshock = 0
if(H.bodytemperature <= 260 && H.bodytemperature >= 200) //Chilly.
- colddamage = 4 //This will begin to knock them out until they run out of oxygen and suffocate or until someone finds them.
+ 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.
- colddamage = 8
+ coldshock = 8
H.eye_blurry = 5
if(H.bodytemperature <= 99) //Insanely cold.
- colddamage = 20
+ coldshock = 16
H.eye_blurry = 5
- if(H.paralysis) //stops weaken spam from being repeatedly taken over max halloss when already KO'd.
- H.halloss = min(H.halloss+colddamage, H.species.total_health - 1) //if already stunned, only take them up to the point of restunning
- else
- H.halloss += colddamage //Harsh punishment for staying in space, and it'll take them a while to fully thaw out when they get retrieved.
+ 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
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 647a070dff..ed66abb5aa 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
@@ -56,6 +56,18 @@
cost = -2
var_changes = list("burn_mod" = 1.30)
+/datum/trait/conductive
+ name = "Conductive"
+ desc = "Increases your susceptibility to electric shocks by a small amount."
+ cost = -1
+ var_changes = list("siemens_coefficient" = 1.15)
+
+/datum/trait/conductive_plus
+ name = "Conductive (Plus)"
+ desc = "Increases your susceptibility to electric shocks by a moderate amount."
+ cost = -2
+ var_changes = list("siemens_coefficient" = 1.3)
+
/datum/trait/photosensitive
name = "Photosensitive"
desc = "Increases stun duration from flashes and other light-based stuns."
diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
index 93a9d1911f..984f886acb 100644
--- a/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
+++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/positive.dm
@@ -32,6 +32,18 @@
..(S,H)
H.setMaxHealth(S.total_health)
+/datum/trait/nonconductive
+ name = "Non-Conductive"
+ desc = "Decreases your susceptibility to electric shocks by a small amount."
+ cost = 1
+ var_changes = list("siemens_coefficient" = 0.85)
+
+/datum/trait/nonconductive_plus
+ name = "Non-Conductive (Plus)"
+ desc = "Decreases your susceptibility to electric shocks by a moderate amount."
+ cost = 2
+ var_changes = list("siemens_coefficient" = 0.7)
+
/datum/trait/darksight
name = "Darksight"
desc = "Allows you to see a short distance in the dark."
diff --git a/code/modules/mob/living/silicon/robot/robot_modules.dm b/code/modules/mob/living/silicon/robot/robot_modules.dm
index bf70516f1f..36c8768276 100644
--- a/code/modules/mob/living/silicon/robot/robot_modules.dm
+++ b/code/modules/mob/living/silicon/robot/robot_modules.dm
@@ -352,6 +352,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
src.modules += new /obj/item/weapon/gripper/no_use/loader(src)
+ src.modules += new /obj/item/device/geiger(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal()
var/datum/matter_synth/plasteel = new /datum/matter_synth/plasteel()
@@ -396,6 +397,7 @@ var/global/list/robot_modules = list(
src.modules += new /obj/item/device/pipe_painter(src)
src.modules += new /obj/item/device/floor_painter(src)
src.emag = new /obj/item/weapon/melee/baton/robot/arm(src)
+ src.modules += new /obj/item/device/geiger(src)
var/datum/matter_synth/metal = new /datum/matter_synth/metal(40000)
var/datum/matter_synth/glass = new /datum/matter_synth/glass(40000)
diff --git a/code/modules/mob/living/simple_animal/animals/giant_spider.dm b/code/modules/mob/living/simple_animal/animals/giant_spider.dm
index e2c833000e..e0a8b130d6 100644
--- a/code/modules/mob/living/simple_animal/animals/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/animals/giant_spider.dm
@@ -56,7 +56,7 @@
melee_damage_lower = 5
melee_damage_upper = 10
poison_per_bite = 7
- poison_type = "stoxin"
+ poison_type = "spidertoxin" // VOREStation edit, original is stoxin. (sleep toxins)
var/fed = 0
var/atom/cocoon_target
diff --git a/code/modules/mob/new_player/sprite_accessories.dm b/code/modules/mob/new_player/sprite_accessories.dm
index 04e45f93d0..470b4e1a00 100644
--- a/code/modules/mob/new_player/sprite_accessories.dm
+++ b/code/modules/mob/new_player/sprite_accessories.dm
@@ -627,7 +627,6 @@
/datum/sprite_accessory/facial_hair
icon = 'icons/mob/Human_face.dmi'
- gender = MALE
shaved
name = "Shaved"
@@ -1309,4 +1308,4 @@
name = "Default skrell skin"
icon_state = "default"
icon = 'icons/mob/human_races/r_skrell.dmi'
- species_allowed = list("Skrell")
\ No newline at end of file
+ species_allowed = list("Skrell")
diff --git a/code/modules/multiz/movement.dm b/code/modules/multiz/movement.dm
index eecc8448f8..4604db82ec 100644
--- a/code/modules/multiz/movement.dm
+++ b/code/modules/multiz/movement.dm
@@ -164,6 +164,14 @@
/obj/effect/decal/cleanable/can_fall()
return TRUE
+// These didn't fall anyways but better to nip this now just incase.
+/atom/movable/lighting_overlay/can_fall()
+ return FALSE
+
+// Mechas are anchored, so we need to override.
+/obj/mecha/can_fall()
+ return TRUE
+
/obj/item/pipe/can_fall()
. = ..()
@@ -291,3 +299,33 @@
apply_damage(rand(0, damage), BRUTE, BP_R_ARM)
Weaken(4)
updatehealth()
+
+/obj/mecha/handle_fall(var/turf/landing)
+ // First things first, break any lattice
+ var/obj/structure/lattice/lattice = locate(/obj/structure/lattice, loc)
+ if(lattice)
+ // Lattices seem a bit too flimsy to hold up a massive exosuit.
+ lattice.visible_message("\The [lattice] collapses under the weight of \the [src]!")
+ qdel(lattice)
+
+ // Then call parent to have us actually fall
+ return ..()
+
+/obj/mecha/fall_impact(var/atom/hit_atom)
+ // Tell the pilot that they just dropped down with a superheavy mecha.
+ if(occupant)
+ to_chat(occupant, "\The [src] crashed down onto \the [hit_atom]!")
+
+ // Anything on the same tile as the landing tile is gonna have a bad day.
+ for(var/mob/living/L in hit_atom.contents)
+ L.visible_message("\The [src] crushes \the [L] as it lands on them!")
+ L.adjustBruteLoss(rand(70, 100))
+ L.Weaken(8)
+
+ // Now to hurt the mech.
+ take_damage(rand(15, 30))
+
+ // And hurt the floor.
+ if(istype(hit_atom, /turf/simulated/floor))
+ var/turf/simulated/floor/ground = hit_atom
+ ground.break_tile()
diff --git a/code/modules/multiz/turf.dm b/code/modules/multiz/turf.dm
index 0b637d90bf..6248eb8993 100644
--- a/code/modules/multiz/turf.dm
+++ b/code/modules/multiz/turf.dm
@@ -94,7 +94,7 @@
// VOREStation Edit End
// get objects (not mobs, they are handled by /obj/zshadow)
- var/image/o_img = list()
+ var/list/o_img = list()
for(var/obj/O in below)
if(O.invisibility) continue // Ignore objects that have any form of invisibility
if(O.loc != below) continue // Ignore multi-turf objects not directly below
@@ -104,7 +104,13 @@
temp2.overlays += O.overlays
// TODO Is pixelx/y needed?
o_img += temp2
+ var/overlays_pre = overlays.len
overlays += o_img
+ var/overlays_post = overlays.len
+ if(overlays_post != (overlays_pre + o_img.len)) //Here we go!
+ world.log << "Corrupted openspace turf at [x],[y],[z] being replaced. Pre: [overlays_pre], Post: [overlays_post]"
+ new /turf/simulated/open(src)
+ return //Let's get out of here.
if(!below_is_open)
overlays += over_OS_darkness
diff --git a/code/modules/nano/interaction/inventory_vr.dm b/code/modules/nano/interaction/inventory_vr.dm
index 373e9f382b..21ee1ca590 100644
--- a/code/modules/nano/interaction/inventory_vr.dm
+++ b/code/modules/nano/interaction/inventory_vr.dm
@@ -1,7 +1,7 @@
/*
This state checks that the src_object is on the user's glasses slot.
*/
-/var/global/datum/topic_state/inventory_state/glasses_state = new()
+/var/global/datum/topic_state/glasses_state/glasses_state = new()
/datum/topic_state/glasses_state/can_use_topic(var/src_object, var/mob/user)
if(ishuman(user))
@@ -10,3 +10,23 @@
return user.shared_nano_interaction()
return STATUS_CLOSE
+
+/var/global/datum/topic_state/nif_state/nif_state = new()
+
+/datum/topic_state/nif_state/can_use_topic(var/src_object, var/mob/user)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.nif && H.nif.stat == NIF_WORKING && src_object == H.nif)
+ return user.shared_nano_interaction()
+
+ return STATUS_CLOSE
+
+/var/global/datum/topic_state/commlink_state/commlink_state = new()
+
+/datum/topic_state/commlink_state/can_use_topic(var/src_object, var/mob/user)
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ if(H.nif && H.nif.stat == NIF_WORKING && H.nif.comm == src_object)
+ return user.shared_nano_interaction()
+
+ return STATUS_CLOSE
diff --git a/code/modules/nifsoft/nif.dm b/code/modules/nifsoft/nif.dm
new file mode 100644
index 0000000000..e8f4976f48
--- /dev/null
+++ b/code/modules/nifsoft/nif.dm
@@ -0,0 +1,560 @@
+//Holder on humans to prevent having to 'find' it every time
+/mob/living/carbon/human/var/obj/item/device/nif/nif
+
+//Nanotech Implant Foundation
+/obj/item/device/nif
+ name = "nanite implant framework"
+ desc = "A somewhat diminished knockoff of a Kitsuhana nano working surface, in a box. Can print new \
+ implants inside living hosts on the fly based on software uploads. Must be surgically \
+ implanted in the head to work. May eventually wear out and break."
+
+ icon = 'icons/obj/device_alt.dmi'
+ icon_state = "nif_0"
+
+ w_class = ITEMSIZE_TINY
+
+ var/durability = 100 // Durability remaining
+ var/bioadap = FALSE // If it'll work in fancy species
+
+ var/tmp/power_usage = 0 // Nifsoft adds to this
+ var/tmp/mob/living/carbon/human/human // Our owner!
+ var/tmp/list/nifsofts[TOTAL_NIF_SOFTWARE] // All our nifsofts
+ var/tmp/list/nifsofts_life = list() // Ones that want to be talked to on life()
+ var/owner // Owner character name
+
+ var/tmp/vision_flags = 0 // Flags implants set for faster lookups
+ var/tmp/health_flags = 0
+ var/tmp/combat_flags = 0
+ var/tmp/other_flags = 0
+
+ var/tmp/stat = NIF_PREINSTALL // Status of the NIF
+ var/tmp/install_done // Time when install will finish
+ var/tmp/open = FALSE // If it's open for maintenance (1-3)
+
+ var/obj/item/clothing/glasses/hud/nif_hud/nif_hud // The AR ones require this
+ var/obj/item/device/communicator/commlink/comm // The commlink requires this
+
+ var/global/icon/big_icon
+ var/global/click_sound = 'sound/items/nif_click.ogg'
+ var/global/bad_sound = 'sound/items/nif_tone_bad.ogg'
+ var/global/good_sound = 'sound/items/nif_tone_good.ogg'
+ var/global/list/look_messages = list(
+ "flicks their eyes around",
+ "looks at something unseen",
+ "reads some invisible text",
+ "seems to be daydreaming",
+ "focuses elsewhere for a moment")
+
+//Constructor comes with a free AR HUD
+/obj/item/device/nif/New(var/newloc,var/wear)
+ ..(newloc)
+
+ //Required for AR stuff.
+ nif_hud = new(src)
+
+ //First one to spawn in the game, make a big icon
+ if(!big_icon)
+ big_icon = new(icon,icon_state = "nif_full")
+
+ //If given a human on spawn (probably from persistence)
+ if(ishuman(newloc))
+ var/mob/living/carbon/human/H = newloc
+ if(!quick_implant(H))
+ WARNING("NIF spawned in [H] failed to implant")
+ spawn(0)
+ qdel(src)
+ return FALSE
+ else
+ //Free commlink for return customers
+ new /datum/nifsoft/commlink(src)
+
+ //Free civilian AR included
+ new /datum/nifsoft/ar_civ(src)
+
+ //If given wear (like when spawned) then done
+ if(wear)
+ durability = wear
+ wear(0) //Just make it update.
+
+ //Draw me yo.
+ update_icon()
+
+//Destructor cleans up references
+/obj/item/device/nif/Destroy()
+ if(human)
+ human.nif = null
+ human = null
+ for(var/S in nifsofts)
+ if(S)
+ qdel(S)
+ if(nif_hud)
+ qdel(nif_hud)
+ if(comm)
+ qdel(comm)
+
+ nifsofts.Cut()
+ ..()
+
+//Being implanted in some mob
+/obj/item/device/nif/proc/implant(var/mob/living/carbon/human/H)
+ if(istype(H) && !H.nif && H.species && (loc == H.get_organ(BP_HEAD)))
+ if(!bioadap && (H.species.flags & NO_SCAN)) //NO_SCAN is the default 'too complicated' flag
+ return FALSE
+
+ human = H
+ human.nif = src
+ stat = NIF_INSTALLING
+ return TRUE
+
+ return FALSE
+
+//For debug or antag purposes
+/obj/item/device/nif/proc/quick_implant(var/mob/living/carbon/human/H)
+ if(istype(H))
+ var/obj/item/organ/external/head = H.get_organ(BP_HEAD)
+ if(!head)
+ return FALSE
+ src.forceMove(head)
+ head.implants += src
+ spawn(0) //Let the character finish spawning yo.
+ owner = H.mind.name
+ implant(H)
+ return TRUE
+
+ return FALSE
+
+//Being removed from some mob
+/obj/item/device/nif/proc/unimplant(var/mob/living/carbon/human/H)
+ human = null
+ stat = NIF_PREINSTALL
+ install_done = null
+ if(istype(H))
+ H.nif = null
+ update_icon()
+
+//EMP adds wear and disables all nifsoft
+/obj/item/device/nif/emp_act(var/severity)
+ notify("Danger! Significant electromagnetic interference!",TRUE)
+ for(var/nifsoft in nifsofts)
+ if(nifsoft)
+ var/datum/nifsoft/NS = nifsoft
+ NS.deactivate()
+
+ switch (severity)
+ if (1)
+ wear(rand(30,40))
+ if (2)
+ wear(rand(15,25))
+ if (3)
+ wear(rand(8,15))
+ if (4)
+ wear(rand(1,8))
+
+//Wear update/check proc
+/obj/item/device/nif/proc/wear(var/wear = 0)
+ wear *= (rand(85,115) / 100) //Apparently rand() only takes integers.
+ durability -= wear
+
+ if(durability <= 0)
+ notify("Danger! General system insta#^!($",TRUE)
+ to_chat(human,"Your NIF vision overlays disappear and your head suddenly seems very quiet...")
+ stat = NIF_TEMPFAIL
+ update_icon()
+
+//Attackby proc, for maintenance
+/obj/item/device/nif/attackby(obj/item/weapon/W, mob/user as mob)
+ if(open == 0 && istype(W,/obj/item/weapon/screwdriver))
+ if(do_after(user, 4 SECONDS, src) && open == 0)
+ user.visible_message("[user] unscrews and pries open \the [src].","You unscrew and pry open \the [src].")
+ playsound(user, 'sound/items/Screwdriver.ogg', 50, 1)
+ open = 1
+ update_icon()
+ else if(open == 1 && istype(W,/obj/item/stack/cable_coil))
+ var/obj/item/stack/cable_coil/C = W
+ if(C.get_amount() < 3)
+ to_chat(user,"You need at least three coils of wire to add them to \the [src].")
+ return
+ if(do_after(user, 6 SECONDS, src) && open == 1 && C.use(3))
+ user.visible_message("[user] replaces some wiring in \the [src].","You replace any burned out wiring in \the [src].")
+ playsound(user, 'sound/items/Deconstruct.ogg', 50, 1)
+ open = 2
+ update_icon()
+ else if(open == 2 && istype(W,/obj/item/device/multitool))
+ if(do_after(user, 8 SECONDS, src) && open == 2)
+ user.visible_message("[user] resets several circuits in \the [src].","You find and repair any faulty circuits in \the [src].")
+ open = 3
+ update_icon()
+ else if(open == 3 && istype(W,/obj/item/weapon/screwdriver))
+ if(do_after(user, 3 SECONDS, src) && open == 3)
+ user.visible_message("[user] closes up \the [src].","You re-seal \the [src] for use once more.")
+ playsound(user, 'sound/items/Screwdriver.ogg', 50, 1)
+ open = FALSE
+ durability = initial(durability)
+ stat = NIF_PREINSTALL
+ update_icon()
+
+//Icon updating
+/obj/item/device/nif/update_icon()
+ if(open)
+ icon_state = "nif_open[open]"
+ else
+ switch(stat)
+ if(NIF_PREINSTALL)
+ icon_state = "nif_1"
+ if(NIF_INSTALLING)
+ icon_state = "nif_0"
+ if(NIF_WORKING)
+ icon_state = "nif_0"
+ if(NIF_TEMPFAIL)
+ icon_state = "nif_2"
+ else
+ icon_state = "nif_2"
+
+//The (dramatic) install process
+/obj/item/device/nif/proc/handle_install()
+ if(human.stat || !human.mind) //No stuff while KO or not sleeved
+ return FALSE
+
+ //Firsties
+ if(!install_done)
+ if(human.mind.name == owner)
+ install_done = world.time + 1 MINUTE
+ notify("Welcome back, [owner]! Performing quick-calibration...")
+ else if(!owner)
+ install_done = world.time + 30 MINUTES
+ notify("Adapting to new user...")
+ sleep(5 SECONDS)
+ notify("Adjoining optic [human.isSynthetic() ? "interface" : "nerve"], please be patient.",TRUE)
+ else
+ notify("You are not an authorized user for this device. Please contact [owner].",TRUE)
+ unimplant()
+ stat = NIF_TEMPFAIL
+ return FALSE
+
+ var/percent_done = (world.time - (install_done - (30 MINUTES))) / (30 MINUTES)
+
+ human.client.screen.Add(global_hud.whitense) //This is the camera static
+
+ switch(percent_done) //This is 0.0 to 1.0 kinda percent.
+ //Connecting to optical nerves
+ if(0.0 to 0.1)
+ human.eye_blind = 5
+
+ //Mapping brain
+ if(0.2 to 0.9)
+ if(prob(99)) return TRUE
+ var/incident = rand(1,3)
+ switch(incident)
+ if(1)
+ var/message = pick(list(
+ "Your head throbs around your new implant.",
+ "The skin around your recent surgery itches.",
+ "A wave of nausea overtakes you as the world seems to spin.",
+ "The floor suddenly seems to come up at you.",
+ "There's a throbbing lump of ice behind your eyes.",
+ "A wave of pain shoots down your neck."
+ ))
+ to_chat(human,"[message]")
+ if(2)
+ human.Weaken(5)
+ to_chat(human,"A wave of weakness rolls over you.")
+ if(3)
+ human.Sleeping(5)
+ to_chat(human,"You suddenly black out!")
+
+ //Finishing up
+ if(1.0 to INFINITY)
+ stat = NIF_WORKING
+ owner = human.mind.name
+ name = initial(name) + " ([owner])"
+ notify("Calibration complete! User data stored!")
+
+//Called each life() tick on the mob
+/obj/item/device/nif/proc/life()
+ if(!human || loc != human.get_organ(BP_HEAD))
+ unimplant(human)
+ return FALSE
+
+ switch(stat)
+ if(NIF_WORKING)
+ //Perform our passive drain
+ if(!use_charge(power_usage))
+ stat = NIF_POWFAIL
+ notify("Insufficient energy!",TRUE)
+ return FALSE
+
+ //HUD update!
+ nif_hud.process_hud(human,1)
+
+ //Process all the ones that want that
+ for(var/S in nifsofts_life)
+ var/datum/nifsoft/nifsoft = S
+ nifsoft.life(human)
+
+ if(NIF_POWFAIL)
+ if(human && human.nutrition < 100)
+ return FALSE
+ else
+ stat = NIF_WORKING
+ notify("System Reboot Complete.")
+
+ if(NIF_TEMPFAIL)
+ //Something else has to take us out of tempfail
+ return FALSE
+
+ if(NIF_INSTALLING)
+ handle_install()
+ return FALSE
+
+//Prints 'AR' messages to the user
+/obj/item/device/nif/proc/notify(var/message,var/alert = 0)
+ if(!human || stat == NIF_TEMPFAIL) return
+
+ to_chat(human,"\[\icon[src.big_icon]NIF\] displays, \"[message]\"")
+ if(prob(1)) human.visible_message("\The [human] [pick(look_messages)].")
+ if(alert)
+ human << bad_sound
+ else
+ human << good_sound
+
+//Called to spend nutrition, returns 1 if it was able to
+/obj/item/device/nif/proc/use_charge(var/use_charge)
+ if(stat != NIF_WORKING) return FALSE
+
+ //You don't want us to take any? Well okay.
+ if(!use_charge)
+ return TRUE
+
+ //Not enough nutrition/charge left.
+ if(!human || human.nutrition < use_charge)
+ return FALSE
+
+ //Was enough, reduce and return.
+ human.nutrition -= use_charge
+ return TRUE
+
+//Install a piece of software
+/obj/item/device/nif/proc/install(var/datum/nifsoft/new_soft)
+ if(stat == NIF_TEMPFAIL) return FALSE
+
+ if(nifsofts[new_soft.list_pos])
+ return FALSE
+
+ if(human)
+ var/applies_to = new_soft.applies_to
+ var/synth = human.isSynthetic()
+ if(synth && !(applies_to & NIF_SYNTHETIC))
+ notify("The software \"[new_soft]\" is not supported on your chassis type.",TRUE)
+ return FALSE
+ if(!synth && !(applies_to & NIF_ORGANIC))
+ notify("The software \"[new_soft]\" is not supported in organic life.",TRUE)
+ return FALSE
+
+ wear(new_soft.wear)
+ nifsofts[new_soft.list_pos] = new_soft
+ power_usage += new_soft.p_drain
+
+ if(new_soft.tick_flags == NIF_ALWAYSTICK)
+ nifsofts_life += new_soft
+
+ if(new_soft.vision_flags)
+ vision_flags |= new_soft.vision_flags
+ if(new_soft.health_flags)
+ health_flags |= new_soft.health_flags
+ if(new_soft.combat_flags)
+ combat_flags |= new_soft.combat_flags
+ if(new_soft.other_flags)
+ other_flags |= new_soft.other_flags
+
+ return TRUE
+
+//Uninstall a piece of software
+/obj/item/device/nif/proc/uninstall(var/datum/nifsoft/old_soft)
+ var/datum/nifsoft/NS = nifsofts[old_soft.list_pos]
+ if(!NS || NS != old_soft)
+ return FALSE //what??
+
+ nifsofts[old_soft.list_pos] = null
+ power_usage -= old_soft.p_drain
+
+ if(old_soft.tick_flags == NIF_ALWAYSTICK)
+ nifsofts_life -= old_soft
+
+ if(old_soft.active)
+ power_usage -= old_soft.a_drain
+ if(old_soft.tick_flags == NIF_ACTIVETICK)
+ nifsofts_life -= old_soft
+
+ if(old_soft.vision_flags)
+ vision_flags &= ~old_soft.vision_flags
+ if(old_soft.health_flags)
+ health_flags &= ~old_soft.health_flags
+ if(old_soft.combat_flags)
+ combat_flags &= ~old_soft.combat_flags
+ if(old_soft.other_flags)
+ other_flags &= ~old_soft.other_flags
+
+ return TRUE
+
+//Activate a nifsoft
+/obj/item/device/nif/proc/activate(var/datum/nifsoft/soft)
+ if(stat != NIF_WORKING) return FALSE
+
+ if(human)
+ if(prob(5)) human.visible_message("\The [human] [pick(look_messages)].")
+ var/applies_to = soft.applies_to
+ var/synth = human.isSynthetic()
+ if(synth && !(applies_to & NIF_SYNTHETIC))
+ notify("The software \"[soft]\" is not supported on your chassis type and will be uninstalled.",TRUE)
+ uninstall(soft)
+ return FALSE
+ if(!synth && !(applies_to & NIF_ORGANIC))
+ notify("The software \"[soft]\" is not supported in organic life and will be uninstalled.",TRUE)
+ uninstall(soft)
+ return FALSE
+
+ if(!use_charge(soft.a_drain))
+ notify("Not enough power to activate \"[soft]\" NIFsoft!",TRUE)
+ return FALSE
+
+ if(soft.tick_flags == NIF_ACTIVETICK)
+ nifsofts_life += soft
+
+ power_usage += soft.a_drain
+ human << click_sound
+
+ return TRUE
+
+//Deactivate a nifsoft
+/obj/item/device/nif/proc/deactivate(var/datum/nifsoft/soft)
+ if(human)
+ if(prob(5)) human.visible_message("\The [human] [pick(look_messages)].")
+
+ if(soft.tick_flags == NIF_ACTIVETICK)
+ nifsofts_life -= soft
+
+ power_usage -= soft.a_drain
+ human << click_sound
+
+ return TRUE
+
+//Deactivate several nifsofts
+/obj/item/device/nif/proc/deactivate_these(var/list/turn_off)
+ for(var/N in turn_off)
+ var/datum/nifsoft/NS = nifsofts[N]
+ if(NS)
+ NS.deactivate()
+
+//Add a flag to one of the holders
+/obj/item/device/nif/proc/set_flag(var/flag,var/hint)
+ ASSERT(flag && hint)
+
+ switch(hint)
+ if(NIF_FLAGS_VISION)
+ vision_flags |= flag
+ if(NIF_FLAGS_HEALTH)
+ health_flags |= flag
+ if(NIF_FLAGS_COMBAT)
+ combat_flags |= flag
+ if(NIF_FLAGS_OTHER)
+ other_flags |= flag
+ else
+ CRASH("Not a valid NIF flag hint: [hint]")
+
+//Clear a flag from one of the holders
+/obj/item/device/nif/proc/clear_flag(var/flag,var/hint)
+ ASSERT(flag && hint)
+
+ switch(hint)
+ if(NIF_FLAGS_VISION)
+ vision_flags &= ~flag
+ if(NIF_FLAGS_HEALTH)
+ health_flags &= ~flag
+ if(NIF_FLAGS_COMBAT)
+ combat_flags &= ~flag
+ if(NIF_FLAGS_OTHER)
+ other_flags &= ~flag
+ else
+ CRASH("Not a valid NIF flag hint: [hint]")
+
+//Check for an installed implant
+/obj/item/device/nif/proc/imp_check(var/soft)
+ if(stat != NIF_WORKING) return FALSE
+ ASSERT(soft)
+
+ if(ispath(soft))
+ var/datum/nifsoft/path = soft
+ soft = initial(path.list_pos)
+ var/entry = nifsofts[soft]
+ if(entry)
+ return entry
+
+//Check for a set flag
+/obj/item/device/nif/proc/flag_check(var/flag,var/hint)
+ if(stat != NIF_WORKING) return FALSE
+
+ ASSERT(flag && hint)
+
+ var/result = FALSE
+ switch(hint)
+ if(NIF_FLAGS_VISION)
+ if(flag & vision_flags) result = TRUE
+ if(NIF_FLAGS_HEALTH)
+ if(flag & health_flags) result = TRUE
+ if(NIF_FLAGS_COMBAT)
+ if(flag & combat_flags) result = TRUE
+ if(NIF_FLAGS_OTHER)
+ if(flag & other_flags) result = TRUE
+ else
+ CRASH("Not a valid NIF flag hint: [hint]")
+
+ return result
+
+///////////////////////////////////////////////////////////////////////////////////////
+//NIF HUD object becasue HUD handling is trash and should be rewritten
+/obj/item/clothing/glasses/hud/nif_hud/var/obj/item/device/nif/nif
+
+/obj/item/clothing/glasses/hud/nif_hud/New(var/newloc)
+ ..(newloc)
+ nif = newloc
+
+/obj/item/clothing/glasses/hud/nif_hud/Destroy()
+ if(nif)
+ nif.nif_hud = null
+ nif = null
+ ..()
+
+/obj/item/clothing/glasses/hud/nif_hud/process_hud(M,var/thing)
+ //Faster checking with local var, and this is called often so I want fast.
+ var/visflags = nif.vision_flags
+ if(NIF_V_AR_OMNI & visflags)
+ process_omni_hud(nif.human, "best")
+ else if(NIF_V_AR_SECURITY & visflags)
+ process_omni_hud(nif.human, "sec")
+ else if(NIF_V_AR_MEDICAL & visflags)
+ process_omni_hud(nif.human, "med")
+ else if(NIF_V_AR_ENGINE & visflags)
+ process_omni_hud(nif.human, "eng")
+ else if(NIF_V_AR_SCIENCE & visflags)
+ process_omni_hud(nif.human, "sci")
+ else if(NIF_V_AR_CIVILIAN & visflags)
+ process_omni_hud(nif.human, "civ")
+
+// Alternate NIFs
+/obj/item/device/nif/bad
+ name = "second-hand NIF"
+ desc = "A copy of a copy of a copy of a copy of... this can't be any good, right? Surely?"
+ durability = 10
+
+/obj/item/device/nif/authentic
+ name = "\improper Kitsuhana NIF"
+ desc = "An actual Kitsuhana working surface, in a box. From a society slightly less afraid \
+ of self-replicating nanotechnology. Basically just a high-endurance NIF."
+ durability = 1000
+
+/obj/item/device/nif/bioadap
+ name = "bioadaptive NIF"
+ desc = "A NIF that goes out of it's way to accomidate strange body types. \
+ Will function in species where it normally wouldn't."
+ durability = 25
+ bioadap = TRUE
diff --git a/code/modules/nifsoft/nif_softshop.dm b/code/modules/nifsoft/nif_softshop.dm
new file mode 100644
index 0000000000..67e786bf18
--- /dev/null
+++ b/code/modules/nifsoft/nif_softshop.dm
@@ -0,0 +1,183 @@
+//Custom vendors
+/obj/machinery/vending/nifsoft_shop
+ name = "NIFSoft Shop"
+ desc = "For all your mindware and mindware accessories."
+ product_ads = "Let us get into your head!;Looking for an upgrade?;Surpass Humanity!;Why be normal when you can be SUPERnormal?;Jack in with NIFSoft!"
+ icon_state = "nifsoft"
+ icon_vend = "nifsoft-purchase"
+ icon_deny = "nifsoft-problem"
+ products = list()
+ contraband = list()
+ premium = list()
+ var/global/list/starting_legal_nifsoft
+ var/global/list/starting_illegal_nifsoft
+
+// Special Treatment!
+/obj/machinery/vending/nifsoft_shop/build_inventory()
+ //Firsties
+ if(!starting_legal_nifsoft)
+ starting_legal_nifsoft = list()
+ starting_illegal_nifsoft = list()
+ for(var/P in subtypesof(/datum/nifsoft) - /datum/nifsoft/package)
+ var/datum/nifsoft/NS = P
+ if(initial(NS.vended))
+ switch(initial(NS.illegal))
+ if(TRUE)
+ starting_illegal_nifsoft += NS
+ if(FALSE)
+ starting_legal_nifsoft += NS
+
+ products = starting_legal_nifsoft.Copy()
+ contraband = starting_illegal_nifsoft.Copy()
+
+ var/list/all_products = list(
+ list(products, CAT_NORMAL),
+ list(contraband, CAT_HIDDEN),
+ list(premium, CAT_COIN))
+
+ for(var/current_list in all_products)
+ var/category = current_list[2]
+
+ for(var/entry in current_list[1])
+ var/datum/nifsoft/NS = entry
+ var/applies_to = initial(NS.applies_to)
+ var/context = ""
+ if(!(applies_to & NIF_SYNTHETIC))
+ context = " (Org Only)"
+ else if(!(applies_to & NIF_ORGANIC))
+ context = " (Syn Only)"
+ var/name = "[initial(NS.name)][context]"
+ var/datum/stored_item/vending_product/product = new/datum/stored_item/vending_product(src, entry, name)
+
+ product.price = initial(NS.cost)
+ product.amount = 10
+ product.category = category
+
+ product_records.Add(product)
+
+/obj/machinery/vending/nifsoft_shop/allowed(mob/user)
+ if(!ishuman(user))
+ return FALSE
+
+ var/mob/living/carbon/human/H = user
+ if(!H.nif || !H.nif.stat == NIF_WORKING)
+ to_chat(H,"[src] seems unable to connect to your NIF...")
+ flick(icon_deny,src)
+ return FALSE
+
+ return ..()
+
+//Had to override this too
+/obj/machinery/vending/nifsoft_shop/Topic(href, href_list)
+ if(stat & (BROKEN|NOPOWER))
+ return
+ if(usr.stat || usr.restrained())
+ return
+
+ if(href_list["remove_coin"] && !istype(usr,/mob/living/silicon))
+ if(!coin)
+ usr << "There is no coin in this machine."
+ return
+
+ coin.forceMove(src.loc)
+ if(!usr.get_active_hand())
+ usr.put_in_hands(coin)
+ usr << "You remove \the [coin] from \the [src]"
+ coin = null
+ categories &= ~CAT_COIN
+
+ if((usr.contents.Find(src) || (in_range(src, usr) && istype(src.loc, /turf))))
+ if((href_list["vend"]) && (vend_ready) && (!currently_vending))
+ if((!allowed(usr)) && !emagged && scan_id) //For SECURE VENDING MACHINES YEAH
+ usr << "Access denied." //Unless emagged of course
+ flick(icon_deny,src)
+ return
+
+ var/key = text2num(href_list["vend"])
+ var/datum/stored_item/vending_product/R = product_records[key]
+
+ // This should not happen unless the request from NanoUI was bad
+ if(!(R.category & categories))
+ return
+
+ //Specific soft access checking
+ var/datum/nifsoft/path = R.item_path
+ if(initial(path.access))
+ var/list/soft_access = list(initial(path.access))
+ var/list/usr_access = usr.GetAccess()
+ if(!has_access(soft_access, list(), usr_access) && !emagged)
+ usr << "You aren't authorized to buy [initial(path.name)]."
+ flick(icon_deny,src)
+ return
+
+ if(R.price <= 0)
+ vend(R, usr)
+ else if(istype(usr,/mob/living/silicon)) //If the item is not free, provide feedback if a synth is trying to buy something.
+ usr << "Artificial unit recognized. Artificial units cannot complete this transaction. Purchase canceled."
+ return
+ else
+ currently_vending = R
+ if(!vendor_account || vendor_account.suspended)
+ status_message = "This machine is currently unable to process payments due to problems with the associated account."
+ status_error = 1
+ else
+ status_message = "[initial(path.desc)]
Please swipe a card or insert cash to pay for the item."
+ status_error = 0
+
+ else if(href_list["cancelpurchase"])
+ currently_vending = null
+
+ else if((href_list["togglevoice"]) && (panel_open))
+ shut_up = !shut_up
+
+ add_fingerprint(usr)
+ nanomanager.update_uis(src)
+
+// Also special treatment!
+/obj/machinery/vending/nifsoft_shop/vend(datum/stored_item/vending_product/R, mob/user)
+ var/mob/living/carbon/human/H = user
+ if((!allowed(usr)) && !emagged && scan_id && istype(H)) //For SECURE VENDING MACHINES YEAH
+ usr << "Purchase not allowed." //Unless emagged of course
+ flick(icon_deny,src)
+ return
+ vend_ready = 0 //One thing at a time!!
+ status_message = "Installing..."
+ status_error = 0
+ nanomanager.update_uis(src)
+
+ if(R.category & CAT_COIN)
+ if(!coin)
+ user << "You need to insert a coin to get this item."
+ return
+ if(coin.string_attached)
+ if(prob(50))
+ user << "You successfully pull the coin out before \the [src] could swallow it."
+ else
+ user << "You weren't able to pull the coin out fast enough, the machine ate it, string and all."
+ qdel(coin)
+ coin = null
+ categories &= ~CAT_COIN
+ else
+ qdel(coin)
+ coin = null
+ categories &= ~CAT_COIN
+
+ if(((last_reply + (vend_delay + 200)) <= world.time) && vend_reply)
+ spawn(0)
+ speak(vend_reply)
+ last_reply = world.time
+
+ use_power(vend_power_usage) //actuators and stuff
+ spawn(vend_delay)
+ R.amount--
+ new R.item_path(H.nif)
+ flick(icon_vend,src)
+ if(has_logs)
+ do_logging(R, user, 1)
+
+ status_message = ""
+ status_error = 0
+ vend_ready = 1
+ currently_vending = null
+ nanomanager.update_uis(src)
+ return 1
diff --git a/code/modules/nifsoft/nif_statpanel.dm b/code/modules/nifsoft/nif_statpanel.dm
new file mode 100644
index 0000000000..23b5aca0b1
--- /dev/null
+++ b/code/modules/nifsoft/nif_statpanel.dm
@@ -0,0 +1,74 @@
+/mob/living/carbon/human/Stat()
+ . = ..()
+ if(nif && statpanel("NIF"))
+ SetupNifStat()
+
+/mob/living/carbon/human/proc/SetupNifStat()
+ var/nif_status = ""
+ switch(nif.stat)
+ if(NIF_WORKING)
+ nif_status = "Operating Normally"
+ if(NIF_POWFAIL)
+ nif_status = "Insufficient Energy!"
+ if(NIF_TEMPFAIL)
+ nif_status = "Needs Maintenance!"
+ if(NIF_INSTALLING)
+ nif_status = "Adapting To User"
+ else
+ nif_status = "Unknown - Error"
+ nif_status += " ([round((nif.durability/initial(nif.durability))*100)]%)"
+ stat("NIF Status", nif_status)
+
+ if(nif.stat == NIF_WORKING)
+ stat("- Modules -", "LMB: Toggle, Shift+LMB: Info/Uninstall")
+ for(var/nifsoft in nif.nifsofts)
+ if(!nifsoft) continue
+ var/datum/nifsoft/NS = nifsoft
+ var/obj/effect/nif_stat/stat_line = NS.stat_line
+ stat("[stat_line.nifsoft_name]",stat_line.atom_button_text())
+
+///////////////////
+// Stat Line Object
+/obj/effect/nif_stat
+ name = ""
+ var/nifsoft_name //Prevents deeper lookups, and the name won't change
+ var/datum/nifsoft/nifsoft //Reference to our nifsoft
+ var/toggleable = FALSE //Won't change, prevents looking it up deeper
+
+/obj/effect/nif_stat/New(var/datum/nifsoft/new_soft)
+ ..()
+ nifsoft = new_soft
+ nifsoft_name = new_soft.name
+ name = new_soft.name
+
+/obj/effect/nif_stat/Destroy()
+ nifsoft = null
+ ..()
+
+/obj/effect/nif_stat/proc/atom_button_text()
+ name = nifsoft.stat_text()
+ return src
+
+/obj/effect/nif_stat/Click(var/location, var/control, var/params)
+ if(usr != nifsoft.nif.human) return
+
+ var/list/clickprops = params2list(params)
+ var/opts = clickprops["shift"]
+
+ if(opts)
+ var/choice = alert("Select an option","[nifsoft_name]","Display Info","Cancel","Uninstall")
+ switch(choice)
+ if("Display Info")
+ nifsoft.nif.notify("[nifsoft_name]: [nifsoft.desc] - It consumes [nifsoft.p_drain] energy units \
+ while installed, and [nifsoft.a_drain] additionally while active. It is [nifsoft.illegal ? "NOT " : ""]\
+ a legal software package. The MSRP of the package is [nifsoft.cost] Thalers. The difficulty to construct \
+ the associated implant is Rating [nifsoft.wear].")
+ if("Uninstall")
+ var/confirm = alert("Really uninstall [nifsoft_name]?","Are you sure?","Cancel","Uninstall","Cancel")
+ if(confirm == "Uninstall")
+ nifsoft.uninstall()
+ else if(nifsoft.activates)
+ if(nifsoft.active)
+ nifsoft.deactivate()
+ else
+ nifsoft.activate()
diff --git a/code/modules/nifsoft/nifsoft.dm b/code/modules/nifsoft/nifsoft.dm
new file mode 100644
index 0000000000..0703adfab4
--- /dev/null
+++ b/code/modules/nifsoft/nifsoft.dm
@@ -0,0 +1,185 @@
+//A single piece of NIF software
+/datum/nifsoft
+ var/name = "Prototype"
+ var/desc = "Contact a dev!"
+
+ var/obj/item/device/nif/nif //The NIF that the software is stored in
+
+ var/list_pos // List position in the nifsoft list
+
+ var/cost = 1000 // Cost in cash of buying this software from a terminal
+
+ var/vended = TRUE // This is available in NIFSoft Shops at the start of the game
+ var/wear = 1 // The wear (+/- 10% when applied) that this causes to the NIF
+ var/access // What access they need to buy it, can only set one for ~reasons~
+ var/illegal = FALSE // If this is a black-market nifsoft (emag option)
+
+ var/active = FALSE // Whether the active mode of this implant is on
+ var/p_drain = 0 // Passive power drain, can be used in various ways from the software
+ var/a_drain = 0 // Active power drain, same purpose as above, software can treat however
+ var/activates = TRUE // Whether or not this has an active power consumption mode
+ var/tick_flags = 0 // Flags to tell when we'd like to be ticked
+
+ var/empable = TRUE // If the implant can be destroyed via EMP attack
+
+ var/expiring = FALSE // Trial software! Or self-deleting illegal ones!
+ var/expires_at // World.time for when they expire
+
+ var/applies_to = (NIF_ORGANIC|NIF_SYNTHETIC) // Who this software is useful for
+
+ var/vision_flags = 0 // Various flags for fast lookups that are settable on the NIF
+ var/health_flags = 0 // These are added as soon as the implant is installed
+ var/combat_flags = 0 // Otherwise use set_flag on the nif in your activate/deactivate
+ var/other_flags = 0
+
+ var/obj/effect/nif_stat/stat_line
+
+
+//Constructor accepts the NIF it's being loaded into
+/datum/nifsoft/New(var/obj/item/device/nif/nif_load)
+ ASSERT(nif_load)
+
+ nif = nif_load
+ stat_line = new(src)
+ if(!install(nif))
+ qdel(src)
+
+//Destructor cleans up the software and nif reference
+/datum/nifsoft/Destroy()
+ if(nif)
+ uninstall(nif)
+ nif = null
+ qdel(stat_line)
+ stat_line = null
+ ..()
+
+//Called when the software is installed in the NIF
+/datum/nifsoft/proc/install()
+ return nif.install(src)
+
+//Called when the software is removed from the NIF
+/datum/nifsoft/proc/uninstall()
+ if(active)
+ deactivate()
+ if(nif)
+ . = nif.uninstall(src)
+ nif = null
+ qdel(src)
+
+//Called every life() tick on a mob on active implants
+/datum/nifsoft/proc/life(var/mob/living/carbon/human/human)
+ return TRUE
+
+//Called when attempting to activate an implant (could be a 'pulse' activation or toggling it on)
+/datum/nifsoft/proc/activate()
+ if(active)
+ return
+ var/nif_result = nif.activate(src)
+ if(nif_result)
+ active = TRUE
+ return nif_result
+
+//Called when attempting to deactivate an implant
+/datum/nifsoft/proc/deactivate()
+ if(!active)
+ return
+ var/nif_result = nif.deactivate(src)
+ if(nif_result)
+ active = FALSE
+ return nif_result
+
+//Called when an implant expires
+/datum/nifsoft/proc/expire()
+ uninstall()
+ return
+
+//Called when installed from a disk
+/datum/nifsoft/proc/disk_install(var/mob/living/carbon/human/target,var/mob/living/carbon/human/user)
+ return TRUE
+
+//Stat-line clickable text
+/datum/nifsoft/proc/stat_text()
+ if(activates)
+ return "[active ? "Active" : "Disabled"]"
+
+ return "Always On"
+
+//////////////////////
+//A package of NIF software
+/datum/nifsoft/package
+ var/list/software = list()
+ wear = 0 //Packages don't cause wear themselves, the software does
+
+//Constructor accepts a NIF and loads all the software
+/datum/nifsoft/package/New(var/obj/item/device/nif/nif_load)
+ ASSERT(nif_load)
+
+ for(var/P in software)
+ new P(nif_load)
+
+ qdel(src)
+
+//Clean self up
+/datum/nifsoft/package/Destroy()
+ software.Cut()
+ software = null
+ ..()
+
+/////////////////
+// A NIFSoft Disk
+/obj/item/weapon/disk/nifsoft
+ name = "NIFSoft Disk"
+ desc = "It has a small label: \n\
+ \"Portable NIFSoft Disk. \n\
+ Insert directly into brain.\""
+ icon = 'icons/obj/cloning.dmi'
+ icon_state = "datadisk2"
+ item_state = "card-id"
+ w_class = ITEMSIZE_SMALL
+ var/datum/nifsoft/stored = null
+ var/laws = ""
+
+/obj/item/weapon/disk/nifsoft/afterattack(var/A, mob/user, flag, params)
+ if(!in_range(user, A))
+ return
+
+ if(!ishuman(user) || !ishuman(A))
+ return
+
+ var/mob/living/carbon/human/Ht = A
+ var/mob/living/carbon/human/Hu = user
+
+ if(!Ht.nif || Ht.nif.stat != NIF_WORKING)
+ to_chat(user,"Either they don't have a NIF, or the disk can't connect.")
+ return
+
+ Ht.visible_message("[Hu] begins uploading new NIFSoft into [Ht]!","[Hu] is uploading new NIFSoft into you!")
+ if(do_after(Hu,10 SECONDS,Ht))
+ var/extra = extra_params()
+ new stored(Ht.nif,extra)
+ qdel(src)
+
+//So disks can pass fancier stuff.
+/obj/item/weapon/disk/nifsoft/proc/extra_params()
+ return null
+
+/obj/item/weapon/disk/nifsoft/compliance
+ name = "NIFSoft Disk (Compliance)"
+ desc = "Wow, adding laws to people? That seems illegal. It probably is. Okay, it really is."
+ stored = /datum/nifsoft/compliance
+
+/obj/item/weapon/disk/nifsoft/compliance/afterattack(var/A, mob/user, flag, params)
+ if(!laws)
+ to_chat(user,"You haven't set any laws yet. Use the disk in-hand first.")
+ return
+ ..(A,user,flag,params)
+
+/obj/item/weapon/disk/nifsoft/compliance/attack_self(mob/user)
+ var/newlaws = input(user,"Please Input Laws","Compliance Laws",laws) as message
+ newlaws = sanitize(newlaws,2048)
+ if(newlaws)
+ to_chat(user,"You set the laws to:
[newlaws]")
+ laws = newlaws
+
+/obj/item/weapon/disk/nifsoft/compliance/extra_params()
+ return laws
diff --git a/code/modules/nifsoft/software/01_vision.dm b/code/modules/nifsoft/software/01_vision.dm
new file mode 100644
index 0000000000..d222cd67dd
--- /dev/null
+++ b/code/modules/nifsoft/software/01_vision.dm
@@ -0,0 +1,249 @@
+//////////////////
+// AR HUD Overlays
+/datum/nifsoft/ar_civ
+ name = "AR Overlay (Civ)"
+ desc = "Provides a general identification and health status overlay on your vision with no frills."
+ list_pos = NIF_CIVILIAN_AR
+ cost = 500
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR)
+ nif.set_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_CIVILIAN,NIF_FLAGS_VISION)
+
+/datum/nifsoft/ar_med
+ name = "AR Overlay (Med)"
+ desc = "Like the civilian model, but provides medical records access and virus database lookup."
+ list_pos = NIF_MEDICAL_AR
+ cost = 750
+ access = access_medical
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_CIVILIAN_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR)
+ nif.set_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_MEDICAL,NIF_FLAGS_VISION)
+
+/datum/nifsoft/ar_sec
+ name = "AR Overlay (Sec)"
+ desc = "Like the civilian model, but provides access to arrest status and security records."
+ list_pos = NIF_SECURITY_AR
+ cost = 750
+ access = access_security
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR,NIF_OMNI_AR)
+ nif.set_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_SECURITY,NIF_FLAGS_VISION)
+
+/datum/nifsoft/ar_eng
+ name = "AR Overlay (Eng)"
+ desc = "Like the civilian model, but provides station alert notices."
+ list_pos = NIF_ENGINE_AR
+ cost = 750
+ access = access_engine
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_SCIENCE_AR,NIF_OMNI_AR)
+ nif.set_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_ENGINE,NIF_FLAGS_VISION)
+
+/datum/nifsoft/ar_science
+ name = "AR Overlay (Sci)"
+ desc = "Like the civilian model, but provides ... well, nothing. For now."
+ list_pos = NIF_SCIENCE_AR
+ cost = 750
+ access = access_research
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_OMNI_AR)
+ nif.set_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_SCIENCE,NIF_FLAGS_VISION)
+
+/datum/nifsoft/ar_omni
+ name = "AR Overlay (Omni)"
+ desc = "Like the civilian model, but provides most of the features of the medical and security overlays as well."
+ list_pos = NIF_OMNI_AR
+ cost = 750
+ access = access_captain
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_CIVILIAN_AR,NIF_MEDICAL_AR,NIF_SECURITY_AR,NIF_ENGINE_AR,NIF_SCIENCE_AR)
+ nif.set_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_AR_OMNI,NIF_FLAGS_VISION)
+
+//////////////
+// Misc Vision
+/datum/nifsoft/corrective
+ name = "Corrective AR"
+ desc = "Subtly alters perception to compensate for cataracts and retinal misalignment, among other common disabilities."
+ list_pos = NIF_CORRECTIVE_GLASS
+ cost = 200
+ a_drain = 0.025
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_CORRECTIVE,NIF_FLAGS_VISION)
+
+/datum/nifsoft/uvblocker
+ name = "Nictating Membrane"
+ desc = "A synthetic nictating membrane (aka 'third eyelid') that protects the eyes from UV or hostile atmospheres. Does not protect from photonic stun weapons."
+ list_pos = NIF_UVFILTER
+ cost = 450
+ a_drain = 0.2
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_UVFILTER,NIF_FLAGS_VISION)
+
+/datum/nifsoft/flashprot
+ name = "Responsive Filter"
+ desc = "Enables a high-speed shielding response to intense light, such as flashes, to block them."
+ list_pos = NIF_FLASHPROT
+ cost = 600
+ access = access_security
+ a_drain = 0.05
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_FLASHPROT,NIF_FLAGS_VISION)
+
+////////////////
+// Goggle-alikes
+/datum/nifsoft/mesons
+ name = "Meson Scanner"
+ desc = "Similar to the worn Optical Meson Scanner Goggles, these allow you to see the base structure and terrain through walls."
+ list_pos = NIF_MESONS
+ cost = 1000
+ a_drain = 0.1
+ access = access_engine
+ tick_flags = NIF_ACTIVETICK
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_MATERIAL,NIF_THERMALS,NIF_NIGHTVIS)
+ nif.set_flag(NIF_V_MESONS,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_MESONS,NIF_FLAGS_VISION)
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ H.client.screen |= global_hud.meson
+ H.sight |= SEE_TURFS
+
+/datum/nifsoft/material
+ name = "Material Scanner"
+ desc = "Similar to the worn Optical Material Scanner Goggles, these allow you to see objects through walls."
+ list_pos = NIF_MATERIAL
+ cost = 1000
+ a_drain = 0.1
+ access = access_research
+ tick_flags = NIF_ACTIVETICK
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_MESONS,NIF_THERMALS,NIF_NIGHTVIS)
+ nif.set_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_MATERIAL,NIF_FLAGS_VISION)
+
+ life()
+ if((. = ..()))
+ nif.human.sight |= SEE_OBJS
+
+/datum/nifsoft/thermals
+ name = "Thermal Scanner"
+ desc = "Similar to the worn Thermal Goggles, these allow you to see heat-emitting creatures through walls."
+ list_pos = NIF_THERMALS
+ cost = 1000
+ a_drain = 0.1
+ access = access_captain
+ tick_flags = NIF_ACTIVETICK
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_NIGHTVIS)
+ nif.set_flag(NIF_V_THERMALS,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_THERMALS,NIF_FLAGS_VISION)
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ H.sight |= SEE_MOBS
+ H.client.screen |= global_hud.thermal
+ H.see_invisible = SEE_INVISIBLE_NOLIGHTING
+
+/datum/nifsoft/nightvis
+ name = "Low-Light Amp"
+ desc = "Similar to the worn Night Vision Goggles, these allow you to see in complete darkness."
+ list_pos = NIF_NIGHTVIS
+ cost = 1000
+ a_drain = 0.1
+ access = access_security
+ tick_flags = NIF_ACTIVETICK
+
+ activate()
+ if((. = ..()))
+ nif.deactivate_these(NIF_MESONS,NIF_MATERIAL,NIF_THERMALS)
+ nif.set_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_V_NIGHTVIS,NIF_FLAGS_VISION)
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ H.see_in_dark += 7
+ H.client.screen |= global_hud.nvg
+ H.see_invisible = SEE_INVISIBLE_NOLIGHTING
+
diff --git a/code/modules/nifsoft/software/05_health.dm b/code/modules/nifsoft/software/05_health.dm
new file mode 100644
index 0000000000..70b28bce52
--- /dev/null
+++ b/code/modules/nifsoft/software/05_health.dm
@@ -0,0 +1,212 @@
+/datum/nifsoft/crewmonitor
+ name = "Crew Monitor"
+ desc = "A link to the local crew monitor sensors. Useful for finding people in trouble."
+ list_pos = NIF_CREWMONITOR
+ access = access_medical
+ cost = 1250
+ p_drain = 0.025
+ var/datum/nano_module/crew_monitor/arscreen
+
+ New()
+ ..()
+ arscreen = new(nif)
+
+ Destroy()
+ qdel(arscreen)
+ ..()
+
+ activate()
+ if((. = ..()))
+ arscreen.ui_interact(nif.human,"main",null,1,nif_state)
+ return TRUE
+
+ deactivate()
+ if((. = ..()))
+ return TRUE
+
+ stat_text()
+ return "Show Monitor"
+
+/datum/nifsoft/medichines_org
+ name = "Medichines"
+ desc = "An internal swarm of nanites to make sure you stay in good shape and to promote healing, or to preserve you if you are critically injured."
+ list_pos = NIF_ORGANIC_HEAL
+ cost = 2500
+ p_drain = 0.05
+ a_drain = 0.1 //This is messed with manually below.
+ wear = 2
+ activates = FALSE //It is automatic in emergencies, not manually controllable.
+ tick_flags = NIF_ALWAYSTICK
+ applies_to = NIF_ORGANIC
+ var/mode = 0
+
+ //These self-activate on their own, these aren't user-settable to on/off.
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH)
+ mode = 1
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_H_ORGREPAIR,NIF_FLAGS_HEALTH)
+ a_drain = initial(a_drain)
+ mode = initial(mode)
+ nif.human.Stasis(0)
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ var/HP_percent = H.health/H.getMaxHealth()
+
+ //Mode changing state machine
+ if(HP_percent >= 0.9)
+ if(mode)
+ nif.notify("User Status: NORMAL. Medichines deactivating.")
+ deactivate()
+ return TRUE
+ else if(!mode && HP_percent < 0.8)
+ nif.notify("User Status: INJURED. Commencing medichine routines.",TRUE)
+ activate()
+ else if(mode == 1 && HP_percent < 0.2)
+ nif.notify("User Status: DANGER. Seek medical attention!",TRUE)
+ mode = 2
+ else if(mode == 2 && HP_percent < -0.4)
+ nif.notify("User Status: CRITICAL. Notifying medical, and starting emergency stasis!",TRUE)
+ mode = 3
+ if(!ishuman(H.loc)) //Not notified in case of vore, for gameplay purposes.
+ var/turf/T = get_turf(H)
+ var/obj/item/device/radio/headset/a = new /obj/item/device/radio/headset/heads/captain(null)
+ a.autosay("[H.real_name] has been put in emergency stasis, located at ([T.x],[T.y],[T.z])!", "[H.real_name]'s NIF", "Medical")
+ qdel(a)
+
+ //Handle the actions in each mode
+
+ //Injured but not critical
+ if(mode)
+ H.adjustToxLoss(-0.1 * mode)
+ H.adjustBruteLoss(-0.1 * mode)
+ H.adjustFireLoss(-0.1 * mode)
+
+ if(mode >= 2)
+ nif.use_charge(a_drain) //A second drain if we're in level 2+
+
+ //Patient critical - emergency stasis
+ if(mode >= 3)
+ if(HP_percent <= 0)
+ H.Stasis(3)
+ if(HP_percent > 0.2)
+ H.Stasis(0)
+ nif.notify("Ending emergency stasis.",TRUE)
+ mode = 2
+
+ return TRUE
+
+/datum/nifsoft/medichines_syn
+ name = "Medichines"
+ desc = "A swarm of mechanical repair nanites, able to repair relatively minor damage to synthetic bodies. Large repairs must still be performed manually."
+ list_pos = NIF_SYNTH_HEAL
+ cost = 2500
+ p_drain = 0.05
+ a_drain = 0.00 //This is manually drained below.
+ wear = 2
+ activates = FALSE //It is automatic in emergencies, not manually controllable.
+ tick_flags = NIF_ALWAYSTICK
+ applies_to = NIF_SYNTHETIC
+ var/mode = 0
+
+ //These self-activate on their own, these aren't user-settable to on/off.
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH)
+ mode = 1
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_H_SYNTHREPAIR,NIF_FLAGS_HEALTH)
+ mode = 0
+
+ life()
+ if((. = ..()))
+ //We're good!
+ if(!nif.human.bad_external_organs.len)
+ if(mode || active)
+ nif.notify("User Status: NORMAL. Medichines deactivating.")
+ deactivate()
+ return TRUE
+
+ if(!mode && !active)
+ nif.notify("User Status: DAMAGED. Medichines performing minor repairs.",TRUE)
+ activate()
+
+ for(var/eo in nif.human.bad_external_organs)
+ var/obj/item/organ/external/EO = eo
+ for(var/w in EO.wounds)
+ var/datum/wound/W = w
+ if(W.damage <= 5)
+ W.heal_damage(0.1)
+ EO.update_damages()
+ if(EO.update_icon())
+ nif.human.UpdateDamageIcon(1)
+ nif.use_charge(0.1)
+ return TRUE //Return entirely, we only heal one at a time.
+ else if(mode == 1)
+ mode = 2
+ nif.notify("Medichines unable to repair all damage. Perform manual repairs.",TRUE)
+
+ return TRUE
+
+/datum/nifsoft/spare_breath
+ name = "Respirocytes"
+ desc = "Nanites simulating red blood cells will filter and recycle oxygen for a short time, preventing suffocation in hostile environments. NOTE: Only capable of supplying OXYGEN."
+ list_pos = NIF_SPAREBREATH
+ cost = 650
+ p_drain = 0.05
+ a_drain = 0.1
+ wear = 2
+ tick_flags = NIF_ALWAYSTICK
+ applies_to = NIF_ORGANIC
+ var/filled = 100 //Tracks the internal tank 'refilling', which still uses power
+
+ activate()
+ if(!(filled > 50))
+ nif.notify("Respirocytes not saturated!",TRUE)
+ return FALSE
+ if((. = ..()))
+ nif.set_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH)
+ nif.notify("Now taking air from reserves.")
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_H_SPAREBREATH,NIF_FLAGS_HEALTH)
+ nif.notify("Now taking air from environment and refilling reserves.")
+
+ life()
+ if((. = ..()))
+ if(active) //Supplying air, not recharging it
+ switch(filled) //Text warnings
+ if(75)
+ nif.notify("Respirocytes at 75% saturation.",TRUE)
+ if(50)
+ nif.notify("Respirocytes at 50% saturation!",TRUE)
+ if(25)
+ nif.notify("Respirocytes at 25% saturation, seek a habitable environment!",TRUE)
+ if(5)
+ nif.notify("Respirocytes at 5% saturation! Failure imminent!",TRUE)
+
+ if(filled == 0) //Ran out
+ deactivate()
+ else //Drain a little
+ filled--
+
+ else //Recharging air, not supplying it
+ if(filled == 100)
+ return TRUE
+ else if(nif.use_charge(0.1) && ++filled == 100)
+ nif.notify("Respirocytes now fully saturated.")
+
+ proc/resp_breath()
+ if(!active) return null
+ var/datum/gas_mixture/breath = new()
+ breath.adjust_gas("oxygen", 300)
+ breath.temperature = T20C
+ return breath
diff --git a/code/modules/nifsoft/software/10_combat.dm b/code/modules/nifsoft/software/10_combat.dm
new file mode 100644
index 0000000000..fa5e40f393
--- /dev/null
+++ b/code/modules/nifsoft/software/10_combat.dm
@@ -0,0 +1,136 @@
+/datum/nifsoft/brute_armor
+ name = "Bullhide Mod"
+ desc = "A difficult-to-produce thickening of the dermis and skeletal structure, allowing a user to absorb more external trauma from physical sources."
+ list_pos = NIF_BRUTEARMOR
+ cost = 3200
+ p_drain = 0.05
+ illegal = TRUE
+ wear = 3
+ access = 999 //Prevents anyone from buying it without an emag.
+ activates = FALSE //It's armor.
+
+ install()
+ if((. = ..()))
+ nif.set_flag(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)
+
+ uninstall()
+ . = ..()
+ nif.clear_flag(NIF_C_BRUTEARMOR,NIF_FLAGS_COMBAT)
+
+/datum/nifsoft/burn_armor
+ name = "Dragon's Skin"
+ desc = "A thin layer of material under the skin provides heat disappation for burns, reducing the trauma from lasers and fire. Not effective against ongoing environmental heat."
+ list_pos = NIF_BURNARMOR
+ cost = 3200
+ p_drain = 0.05
+ illegal = TRUE
+ wear = 3
+ access = 999 //Prevents anyone from buying it without an emag.
+ activates = FALSE //It's armor.
+
+ install()
+ if((. = ..()))
+ nif.set_flag(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)
+
+ uninstall()
+ . = ..()
+ nif.clear_flag(NIF_C_BURNARMOR,NIF_FLAGS_COMBAT)
+
+/datum/nifsoft/painkillers
+ name = "Nova Shock"
+ desc = "A constant stream of high-grade painkillers numb the user's body to all pain. Generally results in extreme addiction or overdose."
+ list_pos = NIF_PAINKILLERS
+ cost = 2600
+ a_drain = 1 //Gotta produce them drugs, yo.
+ illegal = TRUE
+ wear = 2
+ access = 999 //Prevents anyone from buying it without an emag.
+ tick_flags = NIF_ACTIVETICK
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_C_PAINKILLERS,NIF_FLAGS_COMBAT)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_C_PAINKILLERS,NIF_FLAGS_COMBAT)
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ H.bloodstr.add_reagent("numbenzyme",0.5)
+
+/datum/nifsoft/hardclaws
+ name = "Bloodletters"
+ desc = "Generates monofilament wires from one's fingertips, allowing one to slash through almost any armor with relative ease. The monofilaments need to be replaced constantly, though, which does use power."
+ list_pos = NIF_HARDCLAWS
+ cost = 2200
+ a_drain = 0.5
+ illegal = TRUE
+ wear = 4
+ access = 999 //Prevents anyone from buying it without an emag.
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_C_HARDCLAWS,NIF_FLAGS_COMBAT)
+
+// The unarmed attack to go with the hardclaws
+var/global/datum/unarmed_attack/hardclaws/unarmed_hardclaws = new()
+/datum/unarmed_attack/hardclaws
+ attack_verb = list("claws")
+ attack_noun = list("talons")
+ damage = 15
+ attack_sound = "punch"
+ miss_sound = 'sound/weapons/punchmiss.ogg'
+ sharp = 1
+ edge = 1
+ sparring_variant_type = /datum/unarmed_attack/hardclaws
+
+/datum/nifsoft/hidelaser
+ name = "Dazzle"
+ desc = "Fabricates a 2-shot holdout laser inside your body, which can be deployed (somewhat painfully) on demand. Only enough materials to generate one."
+ list_pos = NIF_HIDDENLASER
+ cost = 2200
+ //a_drain = 50 //Done manually below.
+ illegal = TRUE
+ wear = 6
+ access = 999 //Prevents anyone from buying it without an emag.
+ var/used = FALSE
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_C_HIDELASER,NIF_FLAGS_COMBAT)
+ if(used)
+ nif.notify("You do not have a hidden weapon to deploy anymore!",TRUE)
+ deactivate()
+ return FALSE
+ if(!nif.use_charge(50))
+ nif.notify("Insufficient energy to deploy weapon!",TRUE)
+ deactivate()
+ return FALSE
+
+ var/mob/living/carbon/human/H = nif.human
+ H.adjustHalLoss(30)
+ var/obj/item/weapon/gun/energy/gun/martin/dazzle/dgun = new(get_turf(H))
+ H.put_in_hands(dgun)
+ nif.notify("Weapon deployed!",TRUE)
+ used = TRUE
+ spawn(0)
+ uninstall()
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_C_HIDELASER,NIF_FLAGS_COMBAT)
+
+//The gun to go with this implant
+/obj/item/weapon/gun/energy/gun/martin/dazzle
+ name = "Microlaser"
+ desc = "A tiny nanofabricated laser."
+
+ icon = 'icons/obj/gun_vr.dmi'
+ icon_state = "PDW"
+ item_state = "gun"
diff --git a/code/modules/nifsoft/software/14_commlink.dm b/code/modules/nifsoft/software/14_commlink.dm
new file mode 100644
index 0000000000..4380c53952
--- /dev/null
+++ b/code/modules/nifsoft/software/14_commlink.dm
@@ -0,0 +1,132 @@
+///////////
+// Commlink - Has a bunch of extra stuff due to communicator defines.
+/datum/nifsoft/commlink
+ name = "Commlink"
+ desc = "An internal communicator for keeping in touch with people."
+ list_pos = NIF_COMMLINK
+ cost = 500
+ wear = 0
+ p_drain = 0.01
+
+ install()
+ if((. = ..()))
+ nif.comm = new(nif,src)
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_O_COMMLINK,NIF_FLAGS_OTHER)
+ nif.comm.initialize_exonet(nif.human)
+ nif.comm.ui_interact(nif.human,key_state = commlink_state)
+ spawn(0)
+ deactivate()
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_O_COMMLINK,NIF_FLAGS_OTHER)
+
+ stat_text()
+ return "Show Commlink"
+
+/datum/nifsoft/commlink/Topic(href, href_list)
+ if(href_list["open"])
+ activate()
+
+/obj/item/device/communicator/commlink
+ name = "commlink"
+ desc = "An internal communicator, basically."
+ occupation = "\[Commlink\]"
+ var/obj/item/device/nif/nif
+ var/datum/nifsoft/commlink/nifsoft
+
+ New(var/newloc,var/soft)
+ ..()
+ nif = newloc
+ nifsoft = soft
+ register_device(nif.human)
+ qdel(camera) //Not supported on internal one.
+
+ Destroy()
+ if(nif)
+ nif.comm = null
+ nif = null
+ ..()
+
+//So that only the owner's chat is relayed to others.
+/obj/item/device/communicator/commlink/hear_talk(mob/living/M, text, verb, datum/language/speaking)
+ if(M != nif.human) return
+ for(var/obj/item/device/communicator/comm in communicating)
+
+ var/turf/T = get_turf(comm)
+ if(!T) return
+
+ var/icon_object = src
+
+ var/list/mobs_to_relay
+ if(istype(comm,/obj/item/device/communicator/commlink))
+ var/obj/item/device/communicator/commlink/CL = comm
+ mobs_to_relay = list(CL.nif.human)
+ icon_object = CL.nif.big_icon
+ else
+ var/list/in_range = get_mobs_and_objs_in_view_fast(T,world.view,0)
+ mobs_to_relay = in_range["mobs"]
+
+ for(var/mob/mob in mobs_to_relay)
+ //Can whoever is hearing us understand?
+ if(!mob.say_understands(M, speaking))
+ if(speaking)
+ text = speaking.scramble(text)
+ else
+ text = stars(text)
+ var/name_used = M.GetVoice()
+ var/rendered = null
+ if(speaking) //Language being used
+ rendered = "\icon[icon_object] [name_used] [speaking.format_message(text, verb)]"
+ else
+ rendered = "\icon[icon_object] [name_used] [verb], \"[text]\""
+ mob.show_message(rendered, 2)
+
+//Not supported by the internal one
+/obj/item/device/communicator/commlink/show_message(msg, type, alt, alt_type)
+ return
+
+//The silent treatment
+/obj/item/device/communicator/commlink/request(var/atom/candidate)
+ if(candidate in voice_requests)
+ return
+ var/who = null
+ if(isobserver(candidate))
+ who = candidate.name
+ else if(istype(candidate, /obj/item/device/communicator))
+ var/obj/item/device/communicator/comm = candidate
+ who = comm.owner
+ comm.voice_invites |= src
+
+ if(!who)
+ return
+
+ voice_requests |= candidate
+
+ if(ringer && nif.human)
+ nif.notify("New commlink call from [who]. (Open)")
+
+//Similar reason
+/obj/item/device/communicator/commlink/request_im(var/atom/candidate, var/origin_address, var/text)
+ var/who = null
+ if(isobserver(candidate))
+ var/mob/observer/dead/ghost = candidate
+ who = ghost
+ im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text))
+ else if(istype(candidate, /obj/item/device/communicator))
+ var/obj/item/device/communicator/comm = candidate
+ who = comm.owner
+ comm.im_contacts |= src
+ im_list += list(list("address" = origin_address, "to_address" = exonet.address, "im" = text))
+ else return
+
+ im_contacts |= candidate
+
+ if(!who)
+ return
+
+ if(ringer && nif.human)
+ nif.notify("Commlink message from [who]: \"[text]\" (Open)")
diff --git a/code/modules/nifsoft/software/15_misc.dm b/code/modules/nifsoft/software/15_misc.dm
new file mode 100644
index 0000000000..cc8d6b8b10
--- /dev/null
+++ b/code/modules/nifsoft/software/15_misc.dm
@@ -0,0 +1,182 @@
+/datum/nifsoft/apc_recharge
+ name = "APC Connector"
+ desc = "A small attachment that allows synthmorphs to recharge themselves from APCs."
+ list_pos = NIF_APCCHARGE
+ cost = 1250
+ wear = 2
+ applies_to = NIF_SYNTHETIC
+ tick_flags = NIF_ACTIVETICK
+ var/obj/machinery/power/apc/apc
+
+ activate()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ nif.set_flag(NIF_O_APCCHARGE,NIF_FLAGS_OTHER)
+ apc = locate(/obj/machinery/power/apc) in get_step(H,H.dir)
+ if(!apc)
+ apc = locate(/obj/machinery/power/apc) in get_step(H,0)
+ if(!apc)
+ nif.notify("You must be facing an APC to connect to.",TRUE)
+ spawn(0)
+ deactivate()
+ return FALSE
+
+ H.visible_message("Thin snakelike tendrils grow from [H] and connect to \the [apc].","Thin snakelike tendrils grow from you and connect to \the [apc].")
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_O_APCCHARGE,NIF_FLAGS_OTHER)
+ apc = null
+
+ life()
+ if((. = ..()))
+ var/mob/living/carbon/human/H = nif.human
+ if(apc && (get_dist(H,apc) <= 1) && H.nutrition < 450)
+ H.nutrition = min(H.nutrition+10, 450)
+ apc.drain_power(7000/450*10) //This is from the large rechargers. No idea what the math is.
+ return TRUE
+ else
+ nif.notify("APC charging has ended.")
+ H.visible_message("[H]'s snakelike tendrils whip back into their body from \the [apc].","The APC connector tendrils return to your body.")
+ deactivate()
+ return FALSE
+
+/datum/nifsoft/pressure
+ name = "Pressure Seals"
+ desc = "Creates pressure seals around important synthetic components to protect them from vacuum. Almost impossible on organics."
+ list_pos = NIF_PRESSURE
+ cost = 1750
+ a_drain = 0.5
+ wear = 3
+ applies_to = NIF_SYNTHETIC
+
+ activate()
+ if((. = ..()))
+ nif.set_flag(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_O_PRESSURESEAL,NIF_FLAGS_OTHER)
+
+/datum/nifsoft/heatsinks
+ name = "Heat Sinks"
+ desc = "Advanced heat sinks for internal heat storage of heat on a synth until able to vent it in atmosphere."
+ list_pos = NIF_HEATSINK
+ cost = 1450
+ a_drain = 0.25
+ wear = 3
+ var/used = 0
+ tick_flags = NIF_ALWAYSTICK
+ applies_to = NIF_SYNTHETIC
+
+ activate()
+ if((. = ..()))
+ if(used >= 50)
+ nif.notify("Heat sinks not safe to operate again yet!",TRUE)
+ spawn(0)
+ deactivate()
+ return FALSE
+ nif.set_flag(NIF_O_HEATSINKS,NIF_FLAGS_OTHER)
+
+ deactivate()
+ if((. = ..()))
+ nif.clear_flag(NIF_O_HEATSINKS,NIF_FLAGS_OTHER)
+
+ life()
+ if((. = ..()))
+ //Not being used, all clean.
+ if(!active && !used)
+ return TRUE
+
+ //Being used, and running out.
+ else if(active && ++used == 100)
+ nif.notify("Heat sinks overloaded! Shutting down!",TRUE)
+ deactivate()
+
+ //Being cleaned, and finishing empty.
+ else if(!active && --used == 0)
+ nif.notify("Heat sinks re-chilled.")
+
+/datum/nifsoft/compliance
+ name = "Compliance Module"
+ desc = "A system that allows one to apply 'laws' to sapient life. Extremely illegal, of course."
+ list_pos = NIF_COMPLIANCE
+ cost = 8200
+ wear = 4
+ illegal = TRUE
+ vended = FALSE
+ access = 999 //Prevents anyone from buying it without an emag.
+ var/laws = "Be nice to people!"
+
+ New(var/newloc,var/newlaws)
+ laws = newlaws //Sanitize before this (the disk does)
+ ..(newloc)
+
+ activate()
+ if((. = ..()))
+ to_chat(nif.human,"You are compelled to follow these rules: \n[laws]")
+
+ install()
+ if((. = ..()))
+ to_chat(nif.human,"You feel suddenly compelled to follow these rules: \n[laws]")
+
+ uninstall()
+ nif.notify("ERROR! Unable to comply!",TRUE)
+ return FALSE //NOPE.
+
+ stat_text()
+ return "Show Laws"
+
+/datum/nifsoft/sizechange
+ name = "Mass Alteration"
+ desc = "A system that allows one to change their size, through drastic mass rearrangement. Causes significant wear when installed."
+ list_pos = NIF_SIZECHANGE
+ cost = 750
+ wear = 6
+
+ activate()
+ if((. = ..()))
+ var/choice = alert(nif.human,"Change which way?","Mass Alteration","Size Up","Cancel", "Size Down")
+ if(choice == "Cancel")
+ spawn(0) deactivate()
+ return FALSE
+
+ if(!nif.use_charge(100))
+ nif.notify("Insufficient energy to resize!",TRUE)
+ spawn(0) deactivate()
+ return FALSE
+
+ if(choice == "Size Up")
+ switch(nif.human.size_multiplier)
+ if(RESIZE_BIG to RESIZE_HUGE)
+ nif.human.resize(RESIZE_HUGE)
+ if(RESIZE_NORMAL to RESIZE_BIG)
+ nif.human.resize(RESIZE_BIG)
+ if(RESIZE_SMALL to RESIZE_NORMAL)
+ nif.human.resize(RESIZE_NORMAL)
+ if((0 - INFINITY) to RESIZE_TINY)
+ nif.human.resize(RESIZE_SMALL)
+
+ else if(choice == "Size Down")
+ switch(nif.human.size_multiplier)
+ if(RESIZE_HUGE to INFINITY)
+ nif.human.resize(RESIZE_BIG)
+ if(RESIZE_BIG to RESIZE_HUGE)
+ nif.human.resize(RESIZE_NORMAL)
+ if(RESIZE_NORMAL to RESIZE_BIG)
+ nif.human.resize(RESIZE_SMALL)
+ if((0 - INFINITY) to RESIZE_NORMAL)
+ nif.human.resize(RESIZE_TINY)
+
+ nif.human.visible_message("Swirling grey mist envelops [nif.human] as they change size!","Swirling streams of nanites wrap around you as you change size!")
+ nif.human.update_icons()
+
+ spawn(0)
+ deactivate()
+
+ deactivate()
+ if((. = ..()))
+ return TRUE
+
+ stat_text()
+ return "Change Size"
\ No newline at end of file
diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm
index 583b56921d..638d2354b2 100644
--- a/code/modules/organs/organ_external.dm
+++ b/code/modules/organs/organ_external.dm
@@ -98,6 +98,8 @@
while(null in owner.organs)
owner.organs -= null
+ implants.Cut() //VOREStation Add - Remove these too!
+
return ..()
/obj/item/organ/external/emp_act(severity)
@@ -448,7 +450,7 @@ This function completely restores a damaged organ to perfect condition.
// remove embedded objects and drop them on the floor
for(var/obj/implanted_object in implants)
- if(!istype(implanted_object,/obj/item/weapon/implant)) // We don't want to remove REAL implants. Just shrapnel etc.
+ if(!istype(implanted_object,/obj/item/weapon/implant) && !istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls
implanted_object.loc = get_turf(src)
implants -= implanted_object
@@ -546,7 +548,7 @@ This function completely restores a damaged organ to perfect condition.
/obj/item/organ/external/proc/need_process()
if(status & (ORGAN_CUT_AWAY|ORGAN_BLEEDING|ORGAN_BROKEN|ORGAN_DESTROYED|ORGAN_DEAD|ORGAN_MUTATED))
return 1
- if((brute_dam || burn_dam) && (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged
+ if(brute_dam || burn_dam)//VOREStation Edit - But they do for medichines! ---&& (robotic < ORGAN_ROBOT)) //Robot limbs don't autoheal and thus don't need to process when damaged
return 1
if(last_dam != brute_dam + burn_dam) // Process when we are fully healed up.
last_dam = brute_dam + burn_dam
diff --git a/code/modules/organs/wound.dm b/code/modules/organs/wound.dm
index 060f1f045e..85925d9158 100644
--- a/code/modules/organs/wound.dm
+++ b/code/modules/organs/wound.dm
@@ -44,7 +44,7 @@
var/damage_type = CUT
// whether this wound needs a bandage/salve to heal at all
// the maximum amount of damage that this wound can have and still autoheal
- var/autoheal_cutoff = 15
+ var/autoheal_cutoff = 10
@@ -336,7 +336,6 @@ datum/wound/puncture/massive
"moderate bruise" = 20, "small bruise" = 10, "tiny bruise" = 5)
bleed_threshold = 20
max_bleeding_stage = 2 //only huge bruise and above can bleed.
- autoheal_cutoff = 30
damage_type = BRUISE
/** BURNS **/
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index 27bf4c0ab7..2d53277590 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -526,9 +526,9 @@ obj/structure/cable/proc/cableColor(var/colorC)
if(!S || S.robotic < ORGAN_ROBOT || S.open == 3)
return ..()
- var/use_amt = min(src.amount, ceil(S.burn_dam/3), 5)
+ var/use_amt = min(src.amount, ceil(S.burn_dam/5), 5)
if(can_use(use_amt))
- if(S.robo_repair(3*use_amt, BURN, "some damaged wiring", src, user))
+ if(S.robo_repair(5*use_amt, BURN, "some damaged wiring", src, user))
src.use(use_amt)
else
diff --git a/code/modules/power/port_gen.dm b/code/modules/power/port_gen.dm
index f900f6fcf4..6a40cf3b8e 100644
--- a/code/modules/power/port_gen.dm
+++ b/code/modules/power/port_gen.dm
@@ -396,17 +396,13 @@
/obj/machinery/power/port_gen/pacman/super/UseFuel()
//produces a tiny amount of radiation when in use
if (prob(2*power_output))
- for (var/mob/living/L in range(src, 5))
- L.apply_effect(1, IRRADIATE) //should amount to ~5 rads per minute at max safe power
+ radiation_repository.radiate(src, 4)
..()
/obj/machinery/power/port_gen/pacman/super/explode()
//a nice burst of radiation
var/rads = 50 + (sheets + sheet_left)*1.5
- for (var/mob/living/L in range(src, 10))
- //should really fall with the square of the distance, but that makes the rads value drop too fast
- //I dunno, maybe physics works different when you live in 2D -- SM radiation also works like this, apparently
- L.apply_effect(max(20, round(rads/get_dist(L,src))), IRRADIATE)
+ radiation_repository.radiate(src, (max(20, rads)))
explosion(src.loc, 3, 3, 5, 3)
qdel(src)
diff --git a/code/modules/power/singularity/collector.dm b/code/modules/power/singularity/collector.dm
index dee15d9f14..47a9c08923 100644
--- a/code/modules/power/singularity/collector.dm
+++ b/code/modules/power/singularity/collector.dm
@@ -31,6 +31,11 @@ var/global/list/rad_collectors = list()
last_power_new = 0
+ if(P && active)
+ var/rads = radiation_repository.get_rads_at_turf(get_turf(src))
+ if(rads)
+ receive_pulse(rads * 5) //Maths is hard
+
if(P)
if(P.air_contents.gas["phoron"] == 0)
investigate_log("out of fuel.","singulo")
diff --git a/code/modules/power/singularity/singularity.dm b/code/modules/power/singularity/singularity.dm
index 39090ceac5..9309c6bd3c 100644
--- a/code/modules/power/singularity/singularity.dm
+++ b/code/modules/power/singularity/singularity.dm
@@ -406,15 +406,13 @@
var/toxrange = 10
var/toxdamage = 4
var/radiation = 15
- var/radiationmin = 3
if (src.energy>200)
toxdamage = round(((src.energy-150)/50)*4,1)
radiation = round(((src.energy-150)/50)*5,1)
- radiationmin = round((radiation/5),1)//
+ radiation_repository.radiate(src, radiation) //Always radiate at max, so a decent dose of radiation is applied
for(var/mob/living/M in view(toxrange, src.loc))
if(M.status_flags & GODMODE)
continue
- M.apply_effect(rand(radiationmin,radiation), IRRADIATE)
toxdamage = (toxdamage - (toxdamage*M.getarmor(null, "rad")))
M.apply_effect(toxdamage, TOX)
return
@@ -448,13 +446,13 @@
/obj/singularity/proc/smwave()
for(var/mob/living/M in view(10, src.loc))
if(prob(67))
- M.apply_effect(rand(energy), IRRADIATE)
- M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."
- M << "Miraculously, it fails to kill you."
+ to_chat(M, "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat.")
+ to_chat(M, "Miraculously, it fails to kill you.")
else
M << "You hear an uneartly ringing, then what sounds like a shrilling kettle as you are washed with a wave of heat."
M << "You don't even have a moment to react as you are reduced to ashes by the intense radiation."
M.dust()
+ radiation_repository.radiate(src, rand(energy))
return
/obj/singularity/proc/pulse()
diff --git a/code/modules/projectiles/ammunition/boxes.dm b/code/modules/projectiles/ammunition/magazines.dm
similarity index 57%
rename from code/modules/projectiles/ammunition/boxes.dm
rename to code/modules/projectiles/ammunition/magazines.dm
index 73d03697ec..6202e03cde 100644
--- a/code/modules/projectiles/ammunition/boxes.dm
+++ b/code/modules/projectiles/ammunition/magazines.dm
@@ -1,493 +1,514 @@
-///////// .357 /////////
-
-/obj/item/ammo_magazine/a357
- name = "speedloader (.357)"
- desc = "A speedloader for .357 revolvers."
- icon_state = "38"
- caliber = "357"
- ammo_type = /obj/item/ammo_casing/a357
- matter = list(DEFAULT_WALL_MATERIAL = 1260)
- max_ammo = 6
- multiple_sprites = 1
-
-///////// .38 /////////
-
-/obj/item/ammo_magazine/c38
- name = "speedloader (.38)"
- desc = "A speedloader for .38 revolvers."
- icon_state = "38"
- caliber = "38"
- matter = list(DEFAULT_WALL_MATERIAL = 360)
- ammo_type = /obj/item/ammo_casing/c38
- max_ammo = 6
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/c38/rubber
- name = "speedloader (.38 rubber)"
- ammo_type = /obj/item/ammo_casing/c38r
-
-/obj/item/ammo_magazine/c38/emp
- name = "ammunition box (.38 haywire)"
- ammo_type = /obj/item/ammo_casing/c38/emp
-
-///////// .45 /////////
-
-/obj/item/ammo_magazine/c45m
- name = "pistol magazine (.45)"
- icon_state = "45"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c45
- matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
- caliber = ".45"
- max_ammo = 7
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/c45m/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/c45m/rubber
- name = "magazine (.45 rubber)"
- ammo_type = /obj/item/ammo_casing/c45r
-
-/obj/item/ammo_magazine/c45m/practice
- name = "magazine (.45 practice)"
- ammo_type = /obj/item/ammo_casing/c45p
-
-/obj/item/ammo_magazine/c45m/flash
- name = "magazine (.45 flash)"
- ammo_type = /obj/item/ammo_casing/c45f
-
-/obj/item/ammo_magazine/c45m/ap
- name = "magazine (.45 AP)"
- ammo_type = /obj/item/ammo_casing/c45ap
-
-/obj/item/ammo_magazine/box/emp/c45
- name = "ammunition box (.45 haywire)"
- ammo_type = /obj/item/ammo_casing/c45/emp
-
-/obj/item/ammo_magazine/c45uzi
- name = "stick magazine (.45)"
- icon_state = "uzi45"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c45
- matter = list(DEFAULT_WALL_MATERIAL = 1200)
- caliber = ".45"
- max_ammo = 16
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/c45uzi/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/tommymag
- name = "tommygun magazine (.45)"
- icon_state = "tommy-mag"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c45
- matter = list(DEFAULT_WALL_MATERIAL = 1500)
- caliber = ".45"
- max_ammo = 20
-
-/obj/item/ammo_magazine/tommymag/ap
- name = "tommygun magazine (.45 AP)"
- ammo_type = /obj/item/ammo_casing/c45ap
-
-/obj/item/ammo_magazine/tommymag/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/tommydrum
- name = "tommygun drum magazine (.45)"
- icon_state = "tommy-drum"
- w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c45
- matter = list(DEFAULT_WALL_MATERIAL = 3750)
- caliber = ".45"
- max_ammo = 50
-
-/obj/item/ammo_magazine/tommydrum/ap
- name = "tommygun drum magazine (.45 AP)"
- ammo_type = /obj/item/ammo_casing/c45ap
-
-/obj/item/ammo_magazine/tommydrum/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/clip/c45
- name = "ammo clip (.45)"
- icon_state = "clip_pistol"
- desc = "A stripper clip for reloading .45 rounds into magazines."
- caliber = ".45"
- ammo_type = /obj/item/ammo_casing/c45
- matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal
- max_ammo = 9
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/clip/c45/rubber
- name = "ammo clip (.45 rubber)"
- ammo_type = /obj/item/ammo_casing/c45r
-
-/obj/item/ammo_magazine/clip/c45/practice
- name = "ammo clip (.45 practice)"
- ammo_type = /obj/item/ammo_casing/c45p
-
-/obj/item/ammo_magazine/clip/c45/flash
- name = "ammo clip (.45 flash)"
- ammo_type = /obj/item/ammo_casing/c45f
-
-///////// 9mm /////////
-
-/obj/item/ammo_magazine/mc9mm
- name = "magazine (9mm)"
- icon_state = "9x19p"
- origin_tech = list(TECH_COMBAT = 2)
- mag_type = MAGAZINE
- matter = list(DEFAULT_WALL_MATERIAL = 480)
- caliber = "9mm"
- ammo_type = /obj/item/ammo_casing/c9mm
- max_ammo = 8
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/mc9mm/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/mc9mm/flash
- ammo_type = /obj/item/ammo_casing/c9mmf
-
-/obj/item/ammo_magazine/mc9mm/rubber
- name = "magazine (9mm rubber)"
- ammo_type = /obj/item/ammo_casing/c9mmr
-
-/obj/item/ammo_magazine/mc9mm/practice
- name = "magazine (9mm practice)"
- ammo_type = /obj/item/ammo_casing/c9mmp
-
-/obj/item/ammo_magazine/mc9mmt
- name = "top mounted magazine (9mm)"
- icon_state = "9mmt"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c9mm
- matter = list(DEFAULT_WALL_MATERIAL = 1200)
- caliber = "9mm"
- max_ammo = 20
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/mc9mmt/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/mc9mmt/rubber
- name = "top mounted magazine (9mm rubber)"
- ammo_type = /obj/item/ammo_casing/c9mmr
-
-/obj/item/ammo_magazine/mc9mmt/flash
- name = "top mounted magazine (9mm flash)"
- ammo_type = /obj/item/ammo_casing/c9mmf
-
-/obj/item/ammo_magazine/mc9mmt/practice
- name = "top mounted magazine (9mm practice)"
- ammo_type = /obj/item/ammo_casing/c9mmp
-
-/obj/item/ammo_magazine/p90
- name = "high capacity top mounted magazine (9mm armor-piercing)"
- icon_state = "p90"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c9mm/ap
- matter = list(DEFAULT_WALL_MATERIAL = 3000)
- caliber = "9mm"
- max_ammo = 50
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/p90/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/clip/c9mm
- name = "ammo clip (9mm)"
- icon_state = "clip_pistol"
- desc = "A stripper clip for reloading 9mm rounds into magazines."
- caliber = "9mm"
- ammo_type = /obj/item/ammo_casing/c9mm
- matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal
- max_ammo = 9
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/clip/c9mm/rubber
- name = "ammo clip (.45 rubber)"
- ammo_type = /obj/item/ammo_casing/c9mmr
-
-/obj/item/ammo_magazine/clip/c9mm/practice
- name = "ammo clip (.45 practice)"
- ammo_type = /obj/item/ammo_casing/c9mmp
-
-/obj/item/ammo_magazine/clip/c9mm/flash
- name = "ammo clip (.45 flash)"
- ammo_type = /obj/item/ammo_casing/c9mmf
-
-/obj/item/ammo_magazine/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets?
- name = "ammunition Box (9mm)"
- icon_state = "9mm"
- origin_tech = list(TECH_COMBAT = 2)
- matter = list(DEFAULT_WALL_MATERIAL = 1800)
- caliber = "9mm"
- ammo_type = /obj/item/ammo_casing/c9mm
- max_ammo = 30
-
-/obj/item/ammo_magazine/c9mm/empty
- initial_ammo = 0
-
-///////// 5mm /////////
-/*
-/obj/item/ammo_magazine/c5mm
- name = "magazine (5mm)"
- icon_state = "fiveseven"
- mag_type = MAGAZINE
- ammo_type = /obj/item/ammo_casing/c5mm
- matter = list(DEFAULT_WALL_MATERIAL = 1200)
- caliber = "5mm"
- max_ammo = 20
- //multiple_sprites = 1
-
-/obj/item/ammo_magazine/clip/c5mm
- name = "ammo clip (5mm)"
- icon_state = "clip_pistol"
- desc = "A stripper clip for reloading 5mm rounds into magazines."
- caliber = "5mm"
- ammo_type = /obj/item/ammo_casing/c5mm
- matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 5mm casing = 60 metal
- max_ammo = 9
- multiple_sprites = 1
-*/
-///////// 10mm /////////
-
-/obj/item/ammo_magazine/a10mm
- name = "magazine (10mm)"
- icon_state = "10mm"
- origin_tech = list(TECH_COMBAT = 2)
- mag_type = MAGAZINE
- caliber = "10mm"
- matter = list(DEFAULT_WALL_MATERIAL = 1500)
- ammo_type = /obj/item/ammo_casing/a10mm
- max_ammo = 20
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/a10mm/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/clip/a10mm
- name = "ammo clip (10mm)"
- icon_state = "clip_pistol"
- desc = "A stripper clip for reloading 5mm rounds into magazines."
- caliber = "10mm"
- ammo_type = /obj/item/ammo_casing/a10mm
- matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal
- max_ammo = 9
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/box/emp/a10mm
- name = "ammunition box (10mm haywire)"
- ammo_type = /obj/item/ammo_casing/a10mm/emp
-
-///////// 5.56mm /////////
-
-/obj/item/ammo_magazine/c556
- name = "magazine (5.56mm)"
- icon_state = "c5.56"
- origin_tech = list(TECH_COMBAT = 2)
- mag_type = MAGAZINE
- caliber = "a556"
- matter = list(DEFAULT_WALL_MATERIAL = 1800)
- ammo_type = /obj/item/ammo_casing/a556
- max_ammo = 20
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/c556/ext
- name = "extended magazine (5.56mm)"
- matter = list(DEFAULT_WALL_MATERIAL = 2700)
- max_ammo = 30
-
-/obj/item/ammo_magazine/c556/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/c556/ext/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/c556/practice
- name = "magazine (5.56mm practice)"
- ammo_type = /obj/item/ammo_casing/a556p
-
-/obj/item/ammo_magazine/c556/practice/ext
- name = "extended magazine (5.56mm practice)"
- max_ammo = 30
-
-/obj/item/ammo_magazine/c556/ap
- name = "magazine (5.56mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a556/ap
-
-/obj/item/ammo_magazine/c556/ap/ext
- name = "extended magazine (5.56mm armor-piercing)"
- max_ammo = 30
-
-/obj/item/ammo_magazine/clip/a556
- name = "ammo clip (5.56mm)"
- icon_state = "clip_rifle"
- caliber = "a556"
- ammo_type = /obj/item/ammo_casing/a556
- matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal
- max_ammo = 5
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/clip/a556/ap
- name = "rifle clip (5.56mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a556/ap
-
-/obj/item/ammo_magazine/clip/a556/practice
- name = "rifle clip (5.56mm practice)"
- ammo_type = /obj/item/ammo_casing/a556
-
-/obj/item/ammo_magazine/a556
- name = "magazine box (5.56mm)"
- icon_state = "a556"
- origin_tech = list(TECH_COMBAT = 2)
- mag_type = MAGAZINE
- caliber = "a556"
- matter = list(DEFAULT_WALL_MATERIAL = 10000)
- ammo_type = /obj/item/ammo_casing/a556
- w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!!
- max_ammo = 50
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/a556/ap
- name = "magazine box (5.56mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a556/ap
-
-/obj/item/ammo_magazine/a556/empty
- initial_ammo = 0
-
-///////// .50 AE /////////
-
-/obj/item/ammo_magazine/a50
- name = "magazine (.50 AE)"
- icon_state = "50ae"
- origin_tech = list(TECH_COMBAT = 2)
- mag_type = MAGAZINE
- caliber = ".50"
- matter = list(DEFAULT_WALL_MATERIAL = 1260)
- ammo_type = /obj/item/ammo_casing/a50
- max_ammo = 7
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/a50/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/clip/a50
- name = "ammo clip (.50 AE)"
- icon_state = "clip_pistol"
- desc = "A stripper clip for reloading .50 Action Express rounds into magazines."
- caliber = ".50"
- ammo_type = /obj/item/ammo_casing/a50
- matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal
- max_ammo = 9
- multiple_sprites = 1
-
-///////// 7.62mm /////////
-
-/obj/item/ammo_magazine/c762
- name = "magazine (7.62mm)"
- icon_state = "c7.62"
- mag_type = MAGAZINE
- caliber = "a762"
- matter = list(DEFAULT_WALL_MATERIAL = 2000)
- ammo_type = /obj/item/ammo_casing/a762
- max_ammo = 20 // VOREStation Edit - This one is supposed to be bigger than the small one.
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/c762/ap
- name = "magazine (7.62mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a762/ap
-
-/obj/item/ammo_magazine/c762/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/s762 // 's' for small!
- name = "magazine (7.62mm)"
- icon_state = "SVD"
- mag_type = MAGAZINE
- caliber = "a762"
- matter = list(DEFAULT_WALL_MATERIAL = 1000)
- ammo_type = /obj/item/ammo_casing/a762
- max_ammo = 10
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/s762/empty
- initial_ammo = 0
-
-/obj/item/ammo_magazine/s762/ap
- name = "magazine (7.62mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a762/ap
-
-/obj/item/ammo_magazine/clip/a762
- name = "ammo clip (7.62mm)"
- icon_state = "clip_rifle"
- caliber = "a762"
- ammo_type = /obj/item/ammo_casing/a762
- matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal
- max_ammo = 5
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/clip/a762/ap
- name = "rifle clip (7.62mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/a762/ap
-
-/obj/item/ammo_magazine/clip/a762/practice
- name = "rifle clip (7.62mm practice)"
- ammo_type = /obj/item/ammo_casing/a762p
-
-///////// 12g /////////
-
-/obj/item/ammo_magazine/g12
- name = "magazine (12 gauge)"
- icon_state = "12g"
- mag_type = MAGAZINE
- caliber = "shotgun"
- matter = list(DEFAULT_WALL_MATERIAL = 2200)
- ammo_type = /obj/item/ammo_casing/shotgun
- max_ammo = 24
- multiple_sprites = 1
-
-/obj/item/ammo_magazine/g12/beanbag
- name = "magazine (12 gauge beanbag)"
- ammo_type = /obj/item/ammo_casing/shotgun/beanbag
-
-/obj/item/ammo_magazine/g12/pellet
- name = "magazine (12 gauge pellet)"
- ammo_type = /obj/item/ammo_casing/shotgun/pellet
-
-/obj/item/ammo_magazine/g12/flash
- name = "magazine (12 gauge flash)"
- ammo_type = /obj/item/ammo_casing/shotgun/flash
-
-/obj/item/ammo_magazine/g12/empty
- initial_ammo = 0
-
-///////// .75 Gyrojet /////////
-
-/obj/item/ammo_magazine/a75
- name = "ammo magazine (.75 Gyrojet)"
- icon_state = "75"
- mag_type = MAGAZINE
- caliber = "75"
- ammo_type = /obj/item/ammo_casing/a75
- multiple_sprites = 1
- max_ammo = 4
-
-/obj/item/ammo_magazine/a75/empty
- initial_ammo = 0
-
-///////// Misc. /////////
-
-/obj/item/ammo_magazine/caps
- name = "speedloader (caps)"
- icon_state = "T38"
- caliber = "caps"
- color = "#FF0000"
- ammo_type = /obj/item/ammo_casing/cap
- matter = list(DEFAULT_WALL_MATERIAL = 600)
- max_ammo = 7
+/************************************************************************/
+/*
+# An explaination of the naming format for guns and ammo:
+#
+# a = Ammo, as in individual rounds of ammunition.
+# b = Box, intended to have ammo taken out one at a time by hand.
+# c = Clips, intended to reload magazines or guns quickly.
+# m = Magazine, intended to hold rounds of ammo.
+# s = Speedloaders, intended to reload guns quickly.
+#
+# Use this format, followed by the caliber. For example, a shotgun's caliber
+# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
+# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
+# for developers and in-game admins spawning these items, stick to this format.
+# Likewise, when creating new rounds, the caliber variable should match whatever
+# the name says.
+#
+# This comment is copied in rounds.dm as well.
+#
+# Also, if a magazine is only meant for a specific gun, include the name
+# of the specific gun in the path. Example: m45uzi is only for the Uzi.
+*/
+/************************************************************************/
+
+
+
+///////// .357 /////////
+
+/obj/item/ammo_magazine/s357
+ name = "speedloader (.357)"
+ desc = "A speedloader for .357 revolvers."
+ icon_state = "38"
+ caliber = "357"
+ ammo_type = /obj/item/ammo_casing/a357
+ matter = list(DEFAULT_WALL_MATERIAL = 1260)
+ max_ammo = 6
+ multiple_sprites = 1
+
+///////// .38 /////////
+
+/obj/item/ammo_magazine/s38
+ name = "speedloader (.38)"
+ desc = "A speedloader for .38 revolvers."
+ icon_state = "38"
+ caliber = ".38"
+ matter = list(DEFAULT_WALL_MATERIAL = 360)
+ ammo_type = /obj/item/ammo_casing/a38
+ max_ammo = 6
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/s38/rubber
+ name = "speedloader (.38 rubber)"
+ ammo_type = /obj/item/ammo_casing/a38r
+
+/obj/item/ammo_magazine/s38/emp
+ name = "speedloader (.38 haywire)"
+ ammo_type = /obj/item/ammo_casing/a38/emp
+
+///////// .45 /////////
+
+/obj/item/ammo_magazine/m45
+ name = "pistol magazine (.45)"
+ icon_state = "45"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a45
+ matter = list(DEFAULT_WALL_MATERIAL = 525) //metal costs are very roughly based around 1 .45 casing = 75 metal
+ caliber = ".45"
+ max_ammo = 7
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m45/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m45/rubber
+ name = "magazine (.45 rubber)"
+ ammo_type = /obj/item/ammo_casing/a45r
+
+/obj/item/ammo_magazine/m45/practice
+ name = "magazine (.45 practice)"
+ ammo_type = /obj/item/ammo_casing/a45p
+
+/obj/item/ammo_magazine/m45/flash
+ name = "magazine (.45 flash)"
+ ammo_type = /obj/item/ammo_casing/a45f
+
+/obj/item/ammo_magazine/m45/ap
+ name = "magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/a45ap
+
+/obj/item/ammo_magazine/box/emp/b45
+ name = "ammunition box (.45 haywire)"
+ ammo_type = /obj/item/ammo_casing/a45/emp
+
+/obj/item/ammo_magazine/m45uzi
+ name = "stick magazine (.45)"
+ icon_state = "uzi45"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a45
+ matter = list(DEFAULT_WALL_MATERIAL = 1200)
+ caliber = ".45"
+ max_ammo = 16
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m45uzi/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m45tommy
+ name = "tommygun magazine (.45)"
+ icon_state = "tommy-mag"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a45
+ matter = list(DEFAULT_WALL_MATERIAL = 1500)
+ caliber = ".45"
+ max_ammo = 20
+
+/obj/item/ammo_magazine/m45tommy/ap
+ name = "tommygun magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/a45ap
+
+/obj/item/ammo_magazine/m45tommy/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m45tommydrum
+ name = "tommygun drum magazine (.45)"
+ icon_state = "tommy-drum"
+ w_class = ITEMSIZE_NORMAL // Bulky ammo doesn't fit in your pockets!
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a45
+ matter = list(DEFAULT_WALL_MATERIAL = 3750)
+ caliber = ".45"
+ max_ammo = 50
+
+/obj/item/ammo_magazine/m45tommydrum/ap
+ name = "tommygun drum magazine (.45 AP)"
+ ammo_type = /obj/item/ammo_casing/a45ap
+
+/obj/item/ammo_magazine/m45tommydrum/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/clip/c45
+ name = "ammo clip (.45)"
+ icon_state = "clip_pistol"
+ desc = "A stripper clip for reloading .45 rounds into magazines."
+ caliber = ".45"
+ ammo_type = /obj/item/ammo_casing/a45
+ matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs very roughly based around one .45 casing = 75 metal
+ max_ammo = 9
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/clip/c45/rubber
+ name = "ammo clip (.45 rubber)"
+ ammo_type = /obj/item/ammo_casing/a45r
+
+/obj/item/ammo_magazine/clip/c45/practice
+ name = "ammo clip (.45 practice)"
+ ammo_type = /obj/item/ammo_casing/a45p
+
+/obj/item/ammo_magazine/clip/c45/flash
+ name = "ammo clip (.45 flash)"
+ ammo_type = /obj/item/ammo_casing/a45f
+
+///////// 9mm /////////
+
+/obj/item/ammo_magazine/m9mm
+ name = "magazine (9mm)"
+ icon_state = "9x19p"
+ origin_tech = list(TECH_COMBAT = 2)
+ mag_type = MAGAZINE
+ matter = list(DEFAULT_WALL_MATERIAL = 480)
+ caliber = "9mm"
+ ammo_type = /obj/item/ammo_casing/a9mm
+ max_ammo = 8
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m9mm/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m9mm/flash
+ ammo_type = /obj/item/ammo_casing/a9mmf
+
+/obj/item/ammo_magazine/m9mm/rubber
+ name = "magazine (9mm rubber)"
+ ammo_type = /obj/item/ammo_casing/a9mmr
+
+/obj/item/ammo_magazine/m9mm/practice
+ name = "magazine (9mm practice)"
+ ammo_type = /obj/item/ammo_casing/a9mmp
+
+/obj/item/ammo_magazine/m9mmt
+ name = "top mounted magazine (9mm)"
+ icon_state = "9mmt"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a9mm
+ matter = list(DEFAULT_WALL_MATERIAL = 1200)
+ caliber = "9mm"
+ max_ammo = 20
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m9mmt/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m9mmt/rubber
+ name = "top mounted magazine (9mm rubber)"
+ ammo_type = /obj/item/ammo_casing/a9mmr
+
+/obj/item/ammo_magazine/m9mmt/flash
+ name = "top mounted magazine (9mm flash)"
+ ammo_type = /obj/item/ammo_casing/a9mmf
+
+/obj/item/ammo_magazine/m9mmt/practice
+ name = "top mounted magazine (9mm practice)"
+ ammo_type = /obj/item/ammo_casing/a9mmp
+
+/obj/item/ammo_magazine/m9mmp90
+ name = "high capacity top mounted magazine (9mm armor-piercing)"
+ icon_state = "p90"
+ mag_type = MAGAZINE
+ ammo_type = /obj/item/ammo_casing/a9mm/ap
+ matter = list(DEFAULT_WALL_MATERIAL = 3000)
+ caliber = "9mm"
+ max_ammo = 50
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m9mmp90/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/clip/c9mm
+ name = "ammo clip (9mm)"
+ icon_state = "clip_pistol"
+ desc = "A stripper clip for reloading 9mm rounds into magazines."
+ caliber = "9mm"
+ ammo_type = /obj/item/ammo_casing/a9mm
+ matter = list(DEFAULT_WALL_MATERIAL = 540) // metal costs are very roughly based around one 9mm casing = 60 metal
+ max_ammo = 9
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/clip/c9mm/rubber
+ name = "ammo clip (.45 rubber)"
+ ammo_type = /obj/item/ammo_casing/a9mmr
+
+/obj/item/ammo_magazine/clip/c9mm/practice
+ name = "ammo clip (.45 practice)"
+ ammo_type = /obj/item/ammo_casing/a9mmp
+
+/obj/item/ammo_magazine/clip/c9mm/flash
+ name = "ammo clip (.45 flash)"
+ ammo_type = /obj/item/ammo_casing/a9mmf
+
+/obj/item/ammo_magazine/box/c9mm // Made by RnD for Prototype SMG and should probably be removed because why does it require DIAMONDS to make bullets?
+ name = "ammunition Box (9mm)"
+ icon_state = "9mm"
+ origin_tech = list(TECH_COMBAT = 2)
+ matter = list(DEFAULT_WALL_MATERIAL = 1800)
+ caliber = "9mm"
+ ammo_type = /obj/item/ammo_casing/a9mm
+ max_ammo = 30
+
+/obj/item/ammo_magazine/box/c9mm/empty
+ initial_ammo = 0
+
+///////// 10mm /////////
+
+/obj/item/ammo_magazine/m10mm
+ name = "magazine (10mm)"
+ icon_state = "10mm"
+ origin_tech = list(TECH_COMBAT = 2)
+ mag_type = MAGAZINE
+ caliber = "10mm"
+ matter = list(DEFAULT_WALL_MATERIAL = 1500)
+ ammo_type = /obj/item/ammo_casing/a10mm
+ max_ammo = 20
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m10mm/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/clip/c10mm
+ name = "ammo clip (10mm)"
+ icon_state = "clip_pistol"
+ desc = "A stripper clip for reloading 5mm rounds into magazines."
+ caliber = "10mm"
+ ammo_type = /obj/item/ammo_casing/a10mm
+ matter = list(DEFAULT_WALL_MATERIAL = 675) // metal costs are very roughly based around one 10mm casing = 75 metal
+ max_ammo = 9
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/box/emp/b10
+ name = "ammunition box (10mm haywire)"
+ ammo_type = /obj/item/ammo_casing/a10mm/emp
+
+///////// 5.56mm /////////
+
+/obj/item/ammo_magazine/m556
+ name = "magazine (5.56mm)"
+ icon_state = "m556"
+ origin_tech = list(TECH_COMBAT = 2)
+ mag_type = MAGAZINE
+ caliber = "5.56mm"
+ matter = list(DEFAULT_WALL_MATERIAL = 1800)
+ ammo_type = /obj/item/ammo_casing/a556
+ max_ammo = 20
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m556/ext
+ name = "extended magazine (5.56mm)"
+ matter = list(DEFAULT_WALL_MATERIAL = 2700)
+ max_ammo = 30
+
+/obj/item/ammo_magazine/m556/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m556/ext/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m556/practice
+ name = "magazine (5.56mm practice)"
+ ammo_type = /obj/item/ammo_casing/a556p
+
+/obj/item/ammo_magazine/m556/practice/ext
+ name = "extended magazine (5.56mm practice)"
+ max_ammo = 30
+
+/obj/item/ammo_magazine/m556/ap
+ name = "magazine (5.56mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a556/ap
+
+/obj/item/ammo_magazine/m556/ap/ext
+ name = "extended magazine (5.56mm armor-piercing)"
+ max_ammo = 30
+
+/obj/item/ammo_magazine/m556/small
+ name = "reduced magazine (5.56mm)"
+ icon_state = "m556-small"
+ matter = list(DEFAULT_WALL_MATERIAL = 900)
+ max_ammo = 10
+
+/obj/item/ammo_magazine/m556/small/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m556/small/practice
+ name = "magazine (5.56mm practice)"
+ ammo_type = /obj/item/ammo_casing/a556p
+
+/obj/item/ammo_magazine/m556/small/ap
+ name = "magazine (5.56mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a556/ap
+
+/obj/item/ammo_magazine/clip/c556
+ name = "ammo clip (5.56mm)"
+ icon_state = "clip_rifle"
+ caliber = "5.56mm"
+ ammo_type = /obj/item/ammo_casing/a556
+ matter = list(DEFAULT_WALL_MATERIAL = 450) // metal costs are very roughly based around one 10mm casing = 180 metal
+ max_ammo = 5
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/clip/c556/ap
+ name = "rifle clip (5.56mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a556/ap
+
+/obj/item/ammo_magazine/clip/c556/practice
+ name = "rifle clip (5.56mm practice)"
+ ammo_type = /obj/item/ammo_casing/a556
+
+/obj/item/ammo_magazine/m556saw
+ name = "magazine box (5.56mm)"
+ icon_state = "a556"
+ origin_tech = list(TECH_COMBAT = 2)
+ mag_type = MAGAZINE
+ caliber = "5.56mm"
+ matter = list(DEFAULT_WALL_MATERIAL = 10000)
+ ammo_type = /obj/item/ammo_casing/a556
+ w_class = ITEMSIZE_NORMAL // This should NOT fit in your pocket!!
+ max_ammo = 50
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m556saw/ap
+ name = "magazine box (5.56mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a556/ap
+
+/obj/item/ammo_magazine/m556saw/empty
+ initial_ammo = 0
+
+///////// .50 AE /////////
+
+/obj/item/ammo_magazine/m50
+ name = "magazine (.50 AE)"
+ icon_state = "50ae"
+ origin_tech = list(TECH_COMBAT = 2)
+ mag_type = MAGAZINE
+ caliber = ".50AE"
+ matter = list(DEFAULT_WALL_MATERIAL = 1260)
+ ammo_type = /obj/item/ammo_casing/a50ae
+ max_ammo = 7
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m50/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/clip/c50
+ name = "ammo clip (.50 AE)"
+ icon_state = "clip_pistol"
+ desc = "A stripper clip for reloading .50 Action Express rounds into magazines."
+ caliber = ".50AE"
+ ammo_type = /obj/item/ammo_casing/a50ae
+ matter = list(DEFAULT_WALL_MATERIAL = 1620) // metal costs are very roughly based around one .50 casing = 180 metal
+ max_ammo = 9
+ multiple_sprites = 1
+
+///////// 7.62mm /////////
+
+/obj/item/ammo_magazine/m762
+ name = "magazine (7.62mm)"
+ icon_state = "m762-small"
+ mag_type = MAGAZINE
+ caliber = "7.62mm"
+ matter = list(DEFAULT_WALL_MATERIAL = 2000)
+ ammo_type = /obj/item/ammo_casing/a762
+ max_ammo = 10
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m762/ap
+ name = "magazine (7.62mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a762/ap
+
+/obj/item/ammo_magazine/m762/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/m762m // Intentionally not a subtype of m762 because it's supposed to be incompatible with the Z8 Bulldog rifle.
+ name = "magazine (7.62mm)"
+ icon_state = "m762"
+ mag_type = MAGAZINE
+ caliber = "7.62mm"
+ matter = list(DEFAULT_WALL_MATERIAL = 4000)
+ ammo_type = /obj/item/ammo_casing/a762
+ max_ammo = 20
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m762m/ap
+ name = "magazine (7.62mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a762/ap
+
+/obj/item/ammo_magazine/m762m/empty
+ initial_ammo = 0
+
+/obj/item/ammo_magazine/clip/c762
+ name = "ammo clip (7.62mm)"
+ icon_state = "clip_rifle"
+ caliber = "7.62mm"
+ ammo_type = /obj/item/ammo_casing/a762
+ matter = list(DEFAULT_WALL_MATERIAL = 1000) // metal costs are very roughly based around one 7.62 casing = 200 metal
+ max_ammo = 5
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/clip/c762/ap
+ name = "rifle clip (7.62mm armor-piercing)"
+ ammo_type = /obj/item/ammo_casing/a762/ap
+
+/obj/item/ammo_magazine/clip/c762/practice
+ name = "rifle clip (7.62mm practice)"
+ ammo_type = /obj/item/ammo_casing/a762p
+
+///////// 12g /////////
+
+/obj/item/ammo_magazine/m12gdrum
+ name = "magazine (12 gauge)"
+ icon_state = "12g"
+ mag_type = MAGAZINE
+ caliber = "12g"
+ matter = list(DEFAULT_WALL_MATERIAL = 2200)
+ ammo_type = /obj/item/ammo_casing/a12g
+ max_ammo = 24
+ multiple_sprites = 1
+
+/obj/item/ammo_magazine/m12gdrum/beanbag
+ name = "magazine (12 gauge beanbag)"
+ ammo_type = /obj/item/ammo_casing/a12g/beanbag
+
+/obj/item/ammo_magazine/m12gdrum/pellet
+ name = "magazine (12 gauge pellet)"
+ ammo_type = /obj/item/ammo_casing/a12g/pellet
+
+/obj/item/ammo_magazine/m12gdrum/flash
+ name = "magazine (12 gauge flash)"
+ ammo_type = /obj/item/ammo_casing/a12g/flash
+
+/obj/item/ammo_magazine/m12gdrum/empty
+ initial_ammo = 0
+
+///////// .75 Gyrojet /////////
+
+/obj/item/ammo_magazine/m75
+ name = "ammo magazine (.75 Gyrojet)"
+ icon_state = "75"
+ mag_type = MAGAZINE
+ caliber = ".75"
+ ammo_type = /obj/item/ammo_casing/a75
+ multiple_sprites = 1
+ max_ammo = 4
+
+/obj/item/ammo_magazine/m75/empty
+ initial_ammo = 0
+
+///////// Misc. /////////
+
+/obj/item/ammo_magazine/caps
+ name = "speedloader (caps)"
+ icon_state = "T38"
+ caliber = "caps"
+ color = "#FF0000"
+ ammo_type = /obj/item/ammo_casing/cap
+ matter = list(DEFAULT_WALL_MATERIAL = 600)
+ max_ammo = 7
multiple_sprites = 1
\ No newline at end of file
diff --git a/code/modules/projectiles/ammunition/bullets.dm b/code/modules/projectiles/ammunition/rounds.dm
similarity index 76%
rename from code/modules/projectiles/ammunition/bullets.dm
rename to code/modules/projectiles/ammunition/rounds.dm
index dfbd721952..3230e6ed62 100644
--- a/code/modules/projectiles/ammunition/bullets.dm
+++ b/code/modules/projectiles/ammunition/rounds.dm
@@ -1,291 +1,323 @@
-/obj/item/ammo_casing/a357
- desc = "A .357 bullet casing."
- caliber = "357"
- projectile_type = /obj/item/projectile/bullet/pistol/strong
-
-/obj/item/ammo_casing/a50
- desc = "A .50AE bullet casing."
- caliber = ".50"
- projectile_type = /obj/item/projectile/bullet/pistol/strong
-
-/obj/item/ammo_casing/a75
- desc = "A .75 gyrojet rocket sheathe."
- caliber = "75"
- projectile_type = /obj/item/projectile/bullet/gyro
-
-/obj/item/ammo_casing/c38
- desc = "A .38 bullet casing."
- caliber = "38"
- projectile_type = /obj/item/projectile/bullet/pistol
-
-/obj/item/ammo_casing/c38r
- desc = "A .38 rubber bullet casing."
- caliber = "38"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
-
-/obj/item/ammo_casing/c38/emp
- name = ".38 haywire round"
- desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
- icon_state = "empcasing"
- projectile_type = /obj/item/projectile/ion/small
- matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
-
-/*
- * 9mm
- */
-
-/obj/item/ammo_casing/c9mm
- desc = "A 9mm bullet casing."
- caliber = "9mm"
- projectile_type = /obj/item/projectile/bullet/pistol
-
-/obj/item/ammo_casing/c9mm/ap
- desc = "A 9mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/ap
-
-/obj/item/ammo_casing/c9mmf
- desc = "A 9mm flash shell casing."
- caliber = "9mm"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/energy/flash
-
-/obj/item/ammo_casing/c9mmr
- desc = "A 9mm rubber bullet casing."
- caliber = "9mm"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
-
-/obj/item/ammo_casing/c9mmp
- desc = "A 9mm practice bullet casing."
- caliber = "9mm"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/practice
-
-/*
-/obj/item/ammo_casing/c5mm
- desc = "A 5mm bullet casing."
- caliber = "5mm"
- projectile_type = /obj/item/projectile/bullet/pistol/ap
-*/
-
-/*
- * 45 ammo
- */
-
-/obj/item/ammo_casing/c45
- desc = "A .45 bullet casing."
- caliber = ".45"
- projectile_type = /obj/item/projectile/bullet/pistol/medium
-
-/obj/item/ammo_casing/c45ap
- desc = "A .45 Armor-Piercing bullet casing."
- caliber = ".45"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
-
-/obj/item/ammo_casing/c45p
- desc = "A .45 practice bullet casing."
- caliber = ".45"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/practice
-
-/obj/item/ammo_casing/c45r
- desc = "A .45 rubber bullet casing."
- caliber = ".45"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/bullet/pistol/rubber
-
-/obj/item/ammo_casing/c45f
- desc = "A .45 flash shell casing."
- caliber = ".45"
- icon_state = "r-casing"
- projectile_type = /obj/item/projectile/energy/flash
-
-/obj/item/ammo_casing/c45/emp
- name = ".45 haywire round"
- desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
- projectile_type = /obj/item/projectile/ion/small
- icon_state = "empcasing"
- matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
-
-/obj/item/ammo_casing/c45/hp
- desc = "A .45 hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow
-
-
-/*
- * 10mm
- */
-
-/obj/item/ammo_casing/a10mm
- desc = "A 10mm bullet casing."
- caliber = "10mm"
- projectile_type = /obj/item/projectile/bullet/pistol/medium
-
-/obj/item/ammo_casing/a10mm/emp
- name = "10mm haywire round"
- desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
- projectile_type = /obj/item/projectile/ion/small
- icon_state = "empcasing"
- matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
-
-/*
- * Shotguns
- */
-
-/obj/item/ammo_casing/shotgun
- name = "shotgun slug"
- desc = "A 12 gauge slug."
- icon_state = "slshell"
- caliber = "shotgun"
- projectile_type = /obj/item/projectile/bullet/shotgun
- matter = list(DEFAULT_WALL_MATERIAL = 360)
-
-/obj/item/ammo_casing/shotgun/pellet
- name = "shotgun shell"
- desc = "A 12 gauge shell."
- icon_state = "gshell"
- projectile_type = /obj/item/projectile/bullet/pellet/shotgun
- matter = list(DEFAULT_WALL_MATERIAL = 360)
-
-/obj/item/ammo_casing/shotgun/blank
- name = "shotgun shell"
- desc = "A blank shell."
- icon_state = "blshell"
- projectile_type = /obj/item/projectile/bullet/blank
- matter = list(DEFAULT_WALL_MATERIAL = 90)
-
-/obj/item/ammo_casing/shotgun/practice
- name = "shotgun shell"
- desc = "A practice shell."
- icon_state = "pshell"
- projectile_type = /obj/item/projectile/bullet/shotgun/practice
- matter = list("metal" = 90)
-
-/obj/item/ammo_casing/shotgun/beanbag
- name = "beanbag shell"
- desc = "A beanbag shell."
- icon_state = "bshell"
- projectile_type = /obj/item/projectile/bullet/shotgun/beanbag
- matter = list(DEFAULT_WALL_MATERIAL = 180)
-
-//Can stun in one hit if aimed at the head, but
-//is blocked by clothing that stops tasers and is vulnerable to EMP
-/obj/item/ammo_casing/shotgun/stunshell
- name = "stun shell"
- desc = "A 12 gauge taser cartridge."
- icon_state = "stunshell"
- projectile_type = /obj/item/projectile/energy/electrode/stunshot
- matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
-
-/obj/item/ammo_casing/shotgun/stunshell/emp_act(severity)
- if(prob(100/severity)) BB = null
- update_icon()
-
-//Does not stun, only blinds, but has area of effect.
-/obj/item/ammo_casing/shotgun/flash
- name = "flash shell"
- desc = "A chemical shell used to signal distress or provide illumination."
- icon_state = "fshell"
- projectile_type = /obj/item/projectile/energy/flash/flare
- matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
-
-/obj/item/ammo_casing/shotgun/emp
- name = "ion shell"
- desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
- icon_state = "empshell"
- projectile_type = /obj/item/projectile/ion
-// projectile_type = /obj/item/projectile/bullet/shotgun/ion
- matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
-
-/*
- * 762mm
- */
-
-/obj/item/ammo_casing/a762
- desc = "A 7.62mm bullet casing."
- caliber = "a762"
- icon_state = "rifle-casing"
- projectile_type = /obj/item/projectile/bullet/rifle/a762
-
-/obj/item/ammo_casing/a762/ap
- desc = "A 7.62mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
-
-/obj/item/ammo_casing/a762p
- desc = "A 7.62mm practice bullet casing."
- caliber = "a762"
- icon_state = "rifle-casing" // Need to make an icon for these
- projectile_type = /obj/item/projectile/bullet/rifle/practice
-
-/obj/item/ammo_casing/a762/blank
- desc = "A blank 7.62mm bullet casing."
- projectile_type = /obj/item/projectile/bullet/blank
- matter = list(DEFAULT_WALL_MATERIAL = 90)
-
-/obj/item/ammo_casing/a762/hp
- desc = "A 7.62mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow
-
-//145mm
-
-/obj/item/ammo_casing/a145
- desc = "A 14.5mm shell."
- icon_state = "lcasing"
- caliber = "14.5mm"
- projectile_type = /obj/item/projectile/bullet/rifle/a145
- matter = list(DEFAULT_WALL_MATERIAL = 1250)
-
-/*
- * 556mm
- */
-
-/obj/item/ammo_casing/a556
- desc = "A 5.56mm bullet casing."
- caliber = "a556"
- icon_state = "rifle-casing"
- projectile_type = /obj/item/projectile/bullet/rifle/a556
-
-/obj/item/ammo_casing/a556/ap
- desc = "A 5.56mm armor-piercing bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
-
-/obj/item/ammo_casing/a556p
- desc = "A 5.56mm practice bullet casing."
- caliber = "a556"
- icon_state = "rifle-casing" // Need to make an icon for these
- projectile_type = /obj/item/projectile/bullet/rifle/practice
-
-/obj/item/ammo_casing/a556/blank
- desc = "A blank 5.56mm bullet casing."
- projectile_type = /obj/item/projectile/bullet/blank
- matter = list(DEFAULT_WALL_MATERIAL = 90)
-
-/obj/item/ammo_casing/a556/hp
- desc = "A 5.56mm hollow-point bullet casing."
- projectile_type = /obj/item/projectile/bullet/rifle/a556/hollow
-
-/*
- * Misc
- */
-
-/obj/item/ammo_casing/rocket
- name = "rocket shell"
- desc = "A high explosive designed to be fired from a launcher."
- icon_state = "rocketshell"
- projectile_type = /obj/item/missile
- caliber = "rocket"
-
-/obj/item/ammo_casing/cap
- name = "cap"
- desc = "A cap for children toys."
- caliber = "caps"
- icon_state = "r-casing"
- color = "#FF0000"
- projectile_type = /obj/item/projectile/bullet/pistol/cap
-
-/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else.
- icon_state = "s-casing-spent"
- BB = null
+/************************************************************************/
+/*
+# An explaination of the naming format for guns and ammo:
+#
+# a = Ammo, as in individual rounds of ammunition.
+# b = Box, intended to have ammo taken out one at a time by hand.
+# c = Clips, intended to reload magazines or guns quickly.
+# m = Magazine, intended to hold rounds of ammo.
+# s = Speedloaders, intended to reload guns quickly.
+#
+# Use this format, followed by the caliber. For example, a shotgun's caliber
+# variable is "12g" as a result. Ergo, a shotgun round's path would have "a12g",
+# or a magazine with shotgun shells would be "m12g" instead. To avoid confusion
+# for developers and in-game admins spawning these items, stick to this format.
+# Likewise, when creating new rounds, the caliber variable should match whatever
+# the name says.
+#
+# This comment is copied in magazines.dm as well.
+*/
+/************************************************************************/
+
+/*
+ * .357
+ */
+
+/obj/item/ammo_casing/a357
+ desc = "A .357 bullet casing."
+ caliber = "357"
+ projectile_type = /obj/item/projectile/bullet/pistol/strong
+
+/*
+ * .38
+ */
+
+/obj/item/ammo_casing/a38
+ desc = "A .38 bullet casing."
+ caliber = ".38"
+ projectile_type = /obj/item/projectile/bullet/pistol
+
+/obj/item/ammo_casing/a38r
+ desc = "A .38 rubber bullet casing."
+ caliber = ".38"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/rubber
+
+/obj/item/ammo_casing/a38/emp
+ name = ".38 haywire round"
+ desc = "A .38 bullet casing fitted with a single-use ion pulse generator."
+ icon_state = "empcasing"
+ projectile_type = /obj/item/projectile/ion/small
+ matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
+
+/*
+ * .50 Action Express
+ */
+
+/obj/item/ammo_casing/a50ae
+ desc = "A .50AE bullet casing."
+ caliber = ".50AE"
+ projectile_type = /obj/item/projectile/bullet/pistol/strong
+
+/*
+ * .75 (aka Gyrojet Rockets, aka admin abuse)
+ */
+
+/obj/item/ammo_casing/a75
+ desc = "A .75 gyrojet rocket sheathe."
+ caliber = ".75"
+ projectile_type = /obj/item/projectile/bullet/gyro
+
+/*
+ * 9mm
+ */
+
+/obj/item/ammo_casing/a9mm
+ desc = "A 9mm bullet casing."
+ caliber = "9mm"
+ projectile_type = /obj/item/projectile/bullet/pistol
+
+/obj/item/ammo_casing/a9mm/ap
+ desc = "A 9mm armor-piercing bullet casing."
+ projectile_type = /obj/item/projectile/bullet/pistol/ap
+
+/obj/item/ammo_casing/a9mmf
+ desc = "A 9mm flash shell casing."
+ caliber = "9mm"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/energy/flash
+
+/obj/item/ammo_casing/a9mmr
+ desc = "A 9mm rubber bullet casing."
+ caliber = "9mm"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/rubber
+
+/obj/item/ammo_casing/a9mmp
+ desc = "A 9mm practice bullet casing."
+ caliber = "9mm"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/practice
+
+/*
+ * .45
+ */
+
+/obj/item/ammo_casing/a45
+ desc = "A .45 bullet casing."
+ caliber = ".45"
+ projectile_type = /obj/item/projectile/bullet/pistol/medium
+
+/obj/item/ammo_casing/a45ap
+ desc = "A .45 Armor-Piercing bullet casing."
+ caliber = ".45"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/medium/ap
+
+/obj/item/ammo_casing/a45p
+ desc = "A .45 practice bullet casing."
+ caliber = ".45"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/practice
+
+/obj/item/ammo_casing/a45r
+ desc = "A .45 rubber bullet casing."
+ caliber = ".45"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/bullet/pistol/rubber
+
+/obj/item/ammo_casing/a45f
+ desc = "A .45 flash shell casing."
+ caliber = ".45"
+ icon_state = "r-casing"
+ projectile_type = /obj/item/projectile/energy/flash
+
+/obj/item/ammo_casing/a45/emp
+ name = ".45 haywire round"
+ desc = "A .45 bullet casing fitted with a single-use ion pulse generator."
+ projectile_type = /obj/item/projectile/ion/small
+ icon_state = "empcasing"
+ matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
+
+/obj/item/ammo_casing/a45/hp
+ desc = "A .45 hollow-point bullet casing."
+ projectile_type = /obj/item/projectile/bullet/pistol/medium/hollow
+
+
+/*
+ * 10mm
+ */
+
+/obj/item/ammo_casing/a10mm
+ desc = "A 10mm bullet casing."
+ caliber = "10mm"
+ projectile_type = /obj/item/projectile/bullet/pistol/medium
+
+/obj/item/ammo_casing/a10mm/emp
+ name = "10mm haywire round"
+ desc = "A 10mm bullet casing fitted with a single-use ion pulse generator."
+ projectile_type = /obj/item/projectile/ion/small
+ icon_state = "empcasing"
+ matter = list(DEFAULT_WALL_MATERIAL = 130, "uranium" = 100)
+
+/*
+ * 12g (aka shotgun ammo)
+ */
+
+/obj/item/ammo_casing/a12g
+ name = "shotgun slug"
+ desc = "A 12 gauge slug."
+ icon_state = "slshell"
+ caliber = "12g"
+ projectile_type = /obj/item/projectile/bullet/shotgun
+ matter = list(DEFAULT_WALL_MATERIAL = 360)
+
+/obj/item/ammo_casing/a12g/pellet
+ name = "shotgun shell"
+ desc = "A 12 gauge shell."
+ icon_state = "gshell"
+ projectile_type = /obj/item/projectile/bullet/pellet/shotgun
+ matter = list(DEFAULT_WALL_MATERIAL = 360)
+
+/obj/item/ammo_casing/a12g/blank
+ name = "shotgun shell"
+ desc = "A blank shell."
+ icon_state = "blshell"
+ projectile_type = /obj/item/projectile/bullet/blank
+ matter = list(DEFAULT_WALL_MATERIAL = 90)
+
+/obj/item/ammo_casing/a12g/practice
+ name = "shotgun shell"
+ desc = "A practice shell."
+ icon_state = "pshell"
+ projectile_type = /obj/item/projectile/bullet/shotgun/practice
+ matter = list("metal" = 90)
+
+/obj/item/ammo_casing/a12g/beanbag
+ name = "beanbag shell"
+ desc = "A beanbag shell."
+ icon_state = "bshell"
+ projectile_type = /obj/item/projectile/bullet/shotgun/beanbag
+ matter = list(DEFAULT_WALL_MATERIAL = 180)
+
+//Can stun in one hit if aimed at the head, but
+//is blocked by clothing that stops tasers and is vulnerable to EMP
+/obj/item/ammo_casing/a12g/stunshell
+ name = "stun shell"
+ desc = "A 12 gauge taser cartridge."
+ icon_state = "stunshell"
+ projectile_type = /obj/item/projectile/energy/electrode/stunshot
+ matter = list(DEFAULT_WALL_MATERIAL = 360, "glass" = 720)
+
+/obj/item/ammo_casing/a12g/stunshell/emp_act(severity)
+ if(prob(100/severity)) BB = null
+ update_icon()
+
+//Does not stun, only blinds, but has area of effect.
+/obj/item/ammo_casing/a12g/flash
+ name = "flash shell"
+ desc = "A chemical shell used to signal distress or provide illumination."
+ icon_state = "fshell"
+ projectile_type = /obj/item/projectile/energy/flash/flare
+ matter = list(DEFAULT_WALL_MATERIAL = 90, "glass" = 90)
+
+/obj/item/ammo_casing/a12g/emp
+ name = "ion shell"
+ desc = "An advanced shotgun round that creates a small EMP when it strikes a target."
+ icon_state = "empshell"
+ projectile_type = /obj/item/projectile/ion
+// projectile_type = /obj/item/projectile/bullet/shotgun/ion
+ matter = list(DEFAULT_WALL_MATERIAL = 360, "uranium" = 240)
+
+/*
+ * 7.62mm
+ */
+
+/obj/item/ammo_casing/a762
+ desc = "A 7.62mm bullet casing."
+ caliber = "7.62mm"
+ icon_state = "rifle-casing"
+ projectile_type = /obj/item/projectile/bullet/rifle/a762
+
+/obj/item/ammo_casing/a762/ap
+ desc = "A 7.62mm armor-piercing bullet casing."
+ projectile_type = /obj/item/projectile/bullet/rifle/a762/ap
+
+/obj/item/ammo_casing/a762p
+ desc = "A 7.62mm practice bullet casing."
+ caliber = "7.62mm"
+ icon_state = "rifle-casing" // Need to make an icon for these
+ projectile_type = /obj/item/projectile/bullet/rifle/practice
+
+/obj/item/ammo_casing/a762/blank
+ desc = "A blank 7.62mm bullet casing."
+ projectile_type = /obj/item/projectile/bullet/blank
+ matter = list(DEFAULT_WALL_MATERIAL = 90)
+
+/obj/item/ammo_casing/a762/hp
+ desc = "A 7.62mm hollow-point bullet casing."
+ projectile_type = /obj/item/projectile/bullet/rifle/a762/hollow
+
+/*
+ * 14.5mm (anti-materiel rifle round)
+ */
+
+/obj/item/ammo_casing/a145
+ desc = "A 14.5mm shell."
+ icon_state = "lcasing"
+ caliber = "14.5mm"
+ projectile_type = /obj/item/projectile/bullet/rifle/a145
+ matter = list(DEFAULT_WALL_MATERIAL = 1250)
+
+/*
+ * 5.56mm
+ */
+
+/obj/item/ammo_casing/a556
+ desc = "A 5.56mm bullet casing."
+ caliber = "5.56mm"
+ icon_state = "rifle-casing"
+ projectile_type = /obj/item/projectile/bullet/rifle/a556
+
+/obj/item/ammo_casing/a556/ap
+ desc = "A 5.56mm armor-piercing bullet casing."
+ projectile_type = /obj/item/projectile/bullet/rifle/a556/ap
+
+/obj/item/ammo_casing/a556p
+ desc = "A 5.56mm practice bullet casing."
+ caliber = "5.56mm"
+ icon_state = "rifle-casing" // Need to make an icon for these
+ projectile_type = /obj/item/projectile/bullet/rifle/practice
+
+/obj/item/ammo_casing/a556/blank
+ desc = "A blank 5.56mm bullet casing."
+ projectile_type = /obj/item/projectile/bullet/blank
+ matter = list(DEFAULT_WALL_MATERIAL = 90)
+
+/obj/item/ammo_casing/a556/hp
+ desc = "A 5.56mm hollow-point bullet casing."
+ projectile_type = /obj/item/projectile/bullet/rifle/a556/hollow
+
+/*
+ * Misc
+ */
+
+/obj/item/ammo_casing/rocket
+ name = "rocket shell"
+ desc = "A high explosive designed to be fired from a launcher."
+ icon_state = "rocketshell"
+ projectile_type = /obj/item/missile
+ caliber = "rocket"
+
+/obj/item/ammo_casing/cap
+ name = "cap"
+ desc = "A cap for children toys."
+ caliber = "caps"
+ icon_state = "r-casing"
+ color = "#FF0000"
+ projectile_type = /obj/item/projectile/bullet/pistol/cap
+
+/obj/item/ammo_casing/spent // For simple hostile mobs only, so they don't cough up usable bullets when firing. This is for literally nothing else.
+ icon_state = "s-casing-spent"
+ BB = null
projectile_type = null
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/automatic.dm b/code/modules/projectiles/guns/projectile/automatic.dm
index bf30c19991..5abcead8f3 100644
--- a/code/modules/projectiles/guns/projectile/automatic.dm
+++ b/code/modules/projectiles/guns/projectile/automatic.dm
@@ -8,7 +8,7 @@
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
- ammo_type = /obj/item/ammo_casing/c9mm
+ ammo_type = /obj/item/ammo_casing/a9mm
multi_aim = 1
burst_delay = 2
@@ -33,8 +33,8 @@
slot_flags = SLOT_BELT|SLOT_BACK
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/a10mm
- allowed_magazines = list(/obj/item/ammo_magazine/a10mm)
+ magazine_type = /obj/item/ammo_magazine/m10mm
+ allowed_magazines = list(/obj/item/ammo_magazine/m10mm)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -56,12 +56,12 @@
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
- caliber = "a556"
+ caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/c556
- allowed_magazines = list(/obj/item/ammo_magazine/c556)
+ magazine_type = /obj/item/ammo_magazine/m556
+ allowed_magazines = list(/obj/item/ammo_magazine/m556)
one_handed_penalty = 4
@@ -73,8 +73,8 @@
/obj/item/weapon/gun/projectile/automatic/sts35/update_icon(var/ignore_inhands)
..()
- if(istype(ammo_magazine,/obj/item/ammo_magazine/s762))
- icon_state = "arifle-small"
+ if(istype(ammo_magazine,/obj/item/ammo_magazine/m556/small))
+ icon_state = "arifle-small" // If using the small magazines, use the small magazine sprite.
else
icon_state = (ammo_magazine)? "arifle" : "arifle-empty"
if(!ignore_inhands) update_held_icon()
@@ -88,11 +88,11 @@
caliber = "9mm"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
- ammo_type = "/obj/item/ammo_casing/c9mmr"
+ ammo_type = "/obj/item/ammo_casing/a9mmr"
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/mc9mmt/rubber
- allowed_magazines = list(/obj/item/ammo_magazine/mc9mmt)
+ magazine_type = /obj/item/ammo_magazine/m9mmt/rubber
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mmt)
/obj/item/weapon/gun/projectile/automatic/wt550/update_icon()
..()
@@ -109,14 +109,14 @@
item_state = "z8carbine"
w_class = ITEMSIZE_LARGE
force = 10
- caliber = "a762"
+ caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 3)
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/Gunshot.ogg'
slot_flags = SLOT_BACK
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/c762
- allowed_magazines = list(/obj/item/ammo_magazine/c762)
+ magazine_type = /obj/item/ammo_magazine/m762
+ allowed_magazines = list(/obj/item/ammo_magazine/m762)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -181,14 +181,14 @@
force = 10
slot_flags = 0
max_shells = 50
- caliber = "a556"
+ caliber = "5.56mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 2)
slot_flags = SLOT_BACK
ammo_type = "/obj/item/ammo_casing/a556" // Is this really needed anymore?
fire_sound = 'sound/weapons/machinegun.ogg'
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/a556
- allowed_magazines = list(/obj/item/ammo_magazine/a556, /obj/item/ammo_magazine/c556)
+ magazine_type = /obj/item/ammo_magazine/m556saw
+ allowed_magazines = list(/obj/item/ammo_magazine/m556saw, /obj/item/ammo_magazine/m556)
one_handed_penalty = 6
@@ -225,7 +225,7 @@
return ..() //once open, behave like normal
/obj/item/weapon/gun/projectile/automatic/l6_saw/update_icon()
- if(istype(ammo_magazine,/obj/item/ammo_magazine/c762))
+ if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
icon_state = "l6[cover_open ? "open" : "closed"]mag"
item_state = icon_state
else
@@ -252,13 +252,13 @@
item_state = null
w_class = ITEMSIZE_LARGE
force = 10
- caliber = "shotgun"
+ caliber = "12g"
fire_sound = 'sound/weapons/shotgun.ogg'
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/g12
- allowed_magazines = list(/obj/item/ammo_magazine/g12)
+ magazine_type = /obj/item/ammo_magazine/m12gdrum
+ allowed_magazines = list(/obj/item/ammo_magazine/m12gdrum)
one_handed_penalty = 4
@@ -284,8 +284,8 @@
load_method = MAGAZINE
caliber = ".45"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
- magazine_type = /obj/item/ammo_magazine/c45uzi
- allowed_magazines = list(/obj/item/ammo_magazine/c45uzi)
+ magazine_type = /obj/item/ammo_magazine/m45uzi
+ allowed_magazines = list(/obj/item/ammo_magazine/m45uzi)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -310,8 +310,8 @@
slot_flags = SLOT_BELT // ToDo: Belt sprite.
fire_sound = 'sound/weapons/Gunshot_light.ogg'
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/p90
- allowed_magazines = list(/obj/item/ammo_magazine/p90, /obj/item/ammo_magazine/mc9mmt) // ToDo: New sprite for the different mag.
+ magazine_type = /obj/item/ammo_magazine/m9mmp90
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mmp90, /obj/item/ammo_magazine/m9mmt) // ToDo: New sprite for the different mag.
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -330,8 +330,8 @@
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2, TECH_ILLEGAL = 5)
slot_flags = SLOT_BELT // ToDo: Belt sprite.
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/tommymag
- allowed_magazines = list(/obj/item/ammo_magazine/tommymag, /obj/item/ammo_magazine/tommydrum)
+ magazine_type = /obj/item/ammo_magazine/m45tommy
+ allowed_magazines = list(/obj/item/ammo_magazine/m45tommy, /obj/item/ammo_magazine/m45tommydrum)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0),
@@ -343,19 +343,19 @@
icon_state = (ammo_magazine)? "tommygun" : "tommygun-empty"
// update_held_icon()
-/obj/item/weapon/gun/projectile/automatic/carbine
+/obj/item/weapon/gun/projectile/automatic/carbine // Admin abuse assault rifle. ToDo: Make this less shit. Maybe remove its autofire, and make it spawn with only 10 rounds at start.
name = "assault carbine"
desc = "The bullpup configured GP3000 is a lightweight, compact, military-grade assault rifle produced by Gurov Projectile Weapons LLC. It is sold almost exclusively to standing armies. The serial number on this one has been scratched off. Uses 5.56mm rounds."
icon_state = "bullpup"
item_state = "bullpup"
w_class = ITEMSIZE_LARGE
force = 10
- caliber = "a762"
+ caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 6, TECH_MATERIAL = 1, TECH_ILLEGAL = 4)
slot_flags = SLOT_BACK
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/c762
- allowed_magazines = list(/obj/item/ammo_magazine/c762)
+ magazine_type = /obj/item/ammo_magazine/m762m
+ allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762m)
one_handed_penalty = 4
@@ -366,9 +366,9 @@
/obj/item/weapon/gun/projectile/automatic/carbine/update_icon(var/ignore_inhands)
..()
- if(ammo_magazine)
- icon_state = "bullpup"
+ if(istype(ammo_magazine,/obj/item/ammo_magazine/m762))
+ icon_state = "bullpup-small" // If using the smaller magazines, use the small mag sprite.
else
icon_state = "bullpup-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
- if(!ignore_inhands) update_held_icon()
+ if(!ignore_inhands) update_held_icon()
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/automatic_vr.dm b/code/modules/projectiles/guns/projectile/automatic_vr.dm
index 9b7fc0c726..79789292ee 100644
--- a/code/modules/projectiles/guns/projectile/automatic_vr.dm
+++ b/code/modules/projectiles/guns/projectile/automatic_vr.dm
@@ -1,2 +1,2 @@
/obj/item/weapon/gun/projectile/automatic/wt550/lethal
- magazine_type = /obj/item/ammo_magazine/mc9mmt
\ No newline at end of file
+ magazine_type = /obj/item/ammo_magazine/m9mmt
\ No newline at end of file
diff --git a/code/modules/projectiles/guns/projectile/boltaction.dm b/code/modules/projectiles/guns/projectile/boltaction.dm
index cbc403c4e0..17e2fe1234 100644
--- a/code/modules/projectiles/guns/projectile/boltaction.dm
+++ b/code/modules/projectiles/guns/projectile/boltaction.dm
@@ -7,7 +7,7 @@
icon_state = "boltaction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
- caliber = "a762"
+ caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER
@@ -60,7 +60,7 @@
icon_state = "leveraction"
fire_sound = 'sound/weapons/rifleshot.ogg'
max_shells = 5
- caliber = "a762"
+ caliber = "7.62mm"
origin_tech = list(TECH_COMBAT = 1)// Old as shit rifle doesn't have very good tech.
ammo_type = /obj/item/ammo_casing/a762
load_method = SINGLE_CASING|SPEEDLOADER
diff --git a/code/modules/projectiles/guns/projectile/dartgun.dm b/code/modules/projectiles/guns/projectile/dartgun.dm
index 8c64b297d1..c998e152f1 100644
--- a/code/modules/projectiles/guns/projectile/dartgun.dm
+++ b/code/modules/projectiles/guns/projectile/dartgun.dm
@@ -62,7 +62,7 @@
var/container_type = /obj/item/weapon/reagent_containers/glass/beaker
var/list/starting_chems = null
-/obj/item/weapon/gun/projectile/dartgun/dartgun/New()
+/obj/item/weapon/gun/projectile/dartgun/New() //VOREStation Edit - Think this was a typo
..()
if(starting_chems)
for(var/chem in starting_chems)
diff --git a/code/modules/projectiles/guns/projectile/pistol.dm b/code/modules/projectiles/guns/projectile/pistol.dm
index fd46803c68..ba5f4f147d 100644
--- a/code/modules/projectiles/guns/projectile/pistol.dm
+++ b/code/modules/projectiles/guns/projectile/pistol.dm
@@ -2,8 +2,8 @@
var/unique_reskin
name = ".45 pistol"
desc = "A cheap Martian knock-off of a Colt M1911. Uses .45 rounds."
- magazine_type = /obj/item/ammo_magazine/c45m
- allowed_magazines = list(/obj/item/ammo_magazine/c45m)
+ magazine_type = /obj/item/ammo_magazine/m45
+ allowed_magazines = list(/obj/item/ammo_magazine/m45)
icon_state = "colt"
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
@@ -12,7 +12,7 @@
/obj/item/weapon/gun/projectile/colt/detective
desc = "A Martian recreation of an old Terran pistol. Uses .45 rounds."
- magazine_type = /obj/item/ammo_magazine/c45m/rubber
+ magazine_type = /obj/item/ammo_magazine/m45/rubber
/obj/item/weapon/gun/projectile/colt/detective/update_icon()
if(ammo_magazine)
@@ -71,7 +71,7 @@
name = ".45 pistol"
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. Found pretty much everywhere humans are. Uses .45 rounds."
icon_state = "secguncomp"
- magazine_type = /obj/item/ammo_magazine/c45m/rubber
+ magazine_type = /obj/item/ammo_magazine/m45/rubber
caliber = ".45"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg'
@@ -86,7 +86,7 @@
/obj/item/weapon/gun/projectile/sec/flash
name = ".45 signal pistol"
- magazine_type = /obj/item/ammo_magazine/c45m/flash
+ magazine_type = /obj/item/ammo_magazine/m45/flash
/obj/item/weapon/gun/projectile/sec/wood
desc = "The NT Mk58 is a cheap, ubiquitous sidearm, produced by a NanoTrasen subsidiary. This one has a sweet wooden grip. Uses .45 rounds."
@@ -111,8 +111,8 @@
recoil = 0
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/c45m
- allowed_magazines = list(/obj/item/ammo_magazine/c45m)
+ magazine_type = /obj/item/ammo_magazine/m45
+ allowed_magazines = list(/obj/item/ammo_magazine/m45)
/obj/item/weapon/gun/projectile/deagle
name = "desert eagle"
@@ -120,11 +120,11 @@
icon_state = "deagle"
item_state = "deagle"
force = 14.0
- caliber = ".50"
+ caliber = ".50AE"
load_method = MAGAZINE
fire_sound = 'sound/weapons/deagle.ogg'
- magazine_type = /obj/item/ammo_magazine/a50
- allowed_magazines = list(/obj/item/ammo_magazine/a50)
+ magazine_type = /obj/item/ammo_magazine/m50
+ allowed_magazines = list(/obj/item/ammo_magazine/m50)
/obj/item/weapon/gun/projectile/deagle/update_icon()
..()
@@ -168,13 +168,13 @@
desc = "Speak softly, and carry a big gun. Fires rare .75 caliber self-propelled exploding bolts--because fuck you and everything around you."
icon_state = "gyropistol"
max_shells = 8
- caliber = "75"
+ caliber = ".75"
fire_sound = 'sound/weapons/rpg.ogg'
origin_tech = list(TECH_COMBAT = 3)
ammo_type = "/obj/item/ammo_casing/a75"
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/a75
- allowed_magazines = list(/obj/item/ammo_magazine/a75)
+ magazine_type = /obj/item/ammo_magazine/m75
+ allowed_magazines = list(/obj/item/ammo_magazine/m75)
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -196,12 +196,12 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 2)
fire_sound = 'sound/weapons/semiauto.ogg'
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/mc9mm
- allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
+ magazine_type = /obj/item/ammo_magazine/m9mm
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/pistol/flash
name = "holdout signal pistol"
- magazine_type = /obj/item/ammo_magazine/mc9mm/flash
+ magazine_type = /obj/item/ammo_magazine/m9mm/flash
/obj/item/weapon/gun/projectile/pistol/attack_hand(mob/living/user as mob)
if(user.get_inactive_hand() == src)
@@ -256,17 +256,17 @@
var/global/list/ammo_types = list(
/obj/item/ammo_casing/a357 = ".357",
- /obj/item/ammo_casing/c9mmf = "9mm",
- /obj/item/ammo_casing/c45f = ".45",
+ /obj/item/ammo_casing/a9mmf = "9mm",
+ /obj/item/ammo_casing/a45f = ".45",
/obj/item/ammo_casing/a10mm = "10mm",
- /obj/item/ammo_casing/shotgun = "12 gauge",
- /obj/item/ammo_casing/shotgun = "12 gauge",
- /obj/item/ammo_casing/shotgun/pellet = "12 gauge",
- /obj/item/ammo_casing/shotgun/pellet = "12 gauge",
- /obj/item/ammo_casing/shotgun/pellet = "12 gauge",
- /obj/item/ammo_casing/shotgun/beanbag = "12 gauge",
- /obj/item/ammo_casing/shotgun/stunshell = "12 gauge",
- /obj/item/ammo_casing/shotgun/flash = "12 gauge",
+ /obj/item/ammo_casing/a12g = "12 gauge",
+ /obj/item/ammo_casing/a12g = "12 gauge",
+ /obj/item/ammo_casing/a12g/pellet = "12 gauge",
+ /obj/item/ammo_casing/a12g/pellet = "12 gauge",
+ /obj/item/ammo_casing/a12g/pellet = "12 gauge",
+ /obj/item/ammo_casing/a12g/beanbag = "12 gauge",
+ /obj/item/ammo_casing/a12g/stunshell = "12 gauge",
+ /obj/item/ammo_casing/a12g/flash = "12 gauge",
/obj/item/ammo_casing/a762 = "7.62mm",
/obj/item/ammo_casing/a556 = "5.56mm"
)
@@ -299,8 +299,8 @@
caliber = "9mm"
load_method = MAGAZINE
fire_sound = 'sound/weapons/semiauto.ogg'
- magazine_type = /obj/item/ammo_magazine/mc9mm
- allowed_magazines = list(/obj/item/ammo_magazine/mc9mm)
+ magazine_type = /obj/item/ammo_magazine/m9mm
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
/obj/item/weapon/gun/projectile/luger/update_icon()
..()
diff --git a/code/modules/projectiles/guns/projectile/revolver.dm b/code/modules/projectiles/guns/projectile/revolver.dm
index e7d31c0226..3886450fcf 100644
--- a/code/modules/projectiles/guns/projectile/revolver.dm
+++ b/code/modules/projectiles/guns/projectile/revolver.dm
@@ -43,10 +43,10 @@
name = "revolver"
desc = "A cheap Martian knock-off of a Smith & Wesson Model 10. Uses .38-Special rounds."
icon_state = "detective"
- caliber = "38"
+ caliber = ".38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
- ammo_type = /obj/item/ammo_casing/c38
+ ammo_type = /obj/item/ammo_casing/a38
/obj/item/weapon/gun/projectile/revolver/detective/verb/rename_gun()
set name = "Name Gun"
@@ -71,13 +71,13 @@
name = "Deckard .38"
desc = "A custom-built revolver, based off the semi-popular Detective Special model."
icon_state = "deckard-empty"
- caliber = "38"
+ caliber = ".38"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
fire_sound = 'sound/weapons/Gunshot_light.ogg'
- ammo_type = /obj/item/ammo_casing/c38
+ ammo_type = /obj/item/ammo_casing/a38
/obj/item/weapon/gun/projectile/revolver/deckard/emp
- ammo_type = /obj/item/ammo_casing/c38/emp
+ ammo_type = /obj/item/ammo_casing/a38/emp
/obj/item/weapon/gun/projectile/revolver/deckard/update_icon()
@@ -107,13 +107,13 @@
name = "\"The Judge\""
desc = "A revolving hand-shotgun by Cybersun Industries that packs the power of a 12 guage in the palm of your hand (if you don't break your wrist). Uses 12 shotgun rounds."
icon_state = "judge"
- caliber = "shotgun"
+ caliber = "12g"
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2, TECH_ILLEGAL = 4)
max_shells = 5
fire_sound = 'sound/weapons/shotgun.ogg'
recoil = 2 // ow my fucking hand
accuracy = -1 // smooth bore + short barrel = shit accuracy
- ammo_type = /obj/item/ammo_casing/shotgun
+ ammo_type = /obj/item/ammo_casing/a12g
// ToDo: Remove accuracy debuf in exchange for slightly injuring your hand every time you fire it.
/obj/item/weapon/gun/projectile/revolver/lemat
@@ -124,11 +124,11 @@
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
handle_casings = CYCLE_CASINGS
max_shells = 9
- caliber = "38"
- ammo_type = /obj/item/ammo_casing/c38
+ caliber = ".38"
+ ammo_type = /obj/item/ammo_casing/a38
var/secondary_max_shells = 1
- var/secondary_caliber = "shotgun"
- var/secondary_ammo_type = /obj/item/ammo_casing/shotgun
+ var/secondary_caliber = "12g"
+ var/secondary_ammo_type = /obj/item/ammo_casing/a12g
var/flipped_firing = 0
var/list/secondary_loaded = list()
var/list/tertiary_loaded = list()
diff --git a/code/modules/projectiles/guns/projectile/shotgun.dm b/code/modules/projectiles/guns/projectile/shotgun.dm
index 84ad0bc426..bc14bb9425 100644
--- a/code/modules/projectiles/guns/projectile/shotgun.dm
+++ b/code/modules/projectiles/guns/projectile/shotgun.dm
@@ -8,10 +8,10 @@
force = 10
flags = CONDUCT
slot_flags = SLOT_BACK
- caliber = "shotgun"
+ caliber = "12g"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2)
load_method = SINGLE_CASING
- ammo_type = /obj/item/ammo_casing/shotgun/beanbag
+ ammo_type = /obj/item/ammo_casing/a12g/beanbag
handle_casings = HOLD_CASINGS
fire_sound = 'sound/weapons/shotgun.ogg'
var/recentpump = 0 // to prevent spammage
@@ -48,7 +48,7 @@
item_state = "cshotgun"
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
max_shells = 7 //match the ammo box capacity, also it can hold a round in the chamber anyways, for a total of 8.
- ammo_type = /obj/item/ammo_casing/shotgun
+ ammo_type = /obj/item/ammo_casing/a12g
/obj/item/weapon/gun/projectile/shotgun/doublebarrel
name = "double-barreled shotgun"
@@ -64,9 +64,9 @@
force = 10
flags = CONDUCT
slot_flags = SLOT_BACK
- caliber = "shotgun"
+ caliber = "12g"
origin_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 1)
- ammo_type = /obj/item/ammo_casing/shotgun/beanbag
+ ammo_type = /obj/item/ammo_casing/a12g/beanbag
burst_delay = 0
firemodes = list(
@@ -75,12 +75,12 @@
)
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/pellet
- ammo_type = /obj/item/ammo_casing/shotgun/pellet
+ ammo_type = /obj/item/ammo_casing/a12g/pellet
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/flare
name = "signal shotgun"
desc = "A double-barreled shotgun meant to fire signal flash shells."
- ammo_type = /obj/item/ammo_casing/shotgun/flash
+ ammo_type = /obj/item/ammo_casing/a12g/flash
/obj/item/weapon/gun/projectile/shotgun/doublebarrel/unload_ammo(user, allow_dump)
..(user, allow_dump=1)
@@ -115,6 +115,6 @@
icon_state = "sawnshotgun"
item_state = "sawnshotgun"
slot_flags = SLOT_BELT|SLOT_HOLSTER
- ammo_type = /obj/item/ammo_casing/shotgun/pellet
+ ammo_type = /obj/item/ammo_casing/a12g/pellet
w_class = ITEMSIZE_NORMAL
force = 5
diff --git a/code/modules/projectiles/guns/projectile/sniper.dm b/code/modules/projectiles/guns/projectile/sniper.dm
index be280c2f64..9a16f68a4c 100644
--- a/code/modules/projectiles/guns/projectile/sniper.dm
+++ b/code/modules/projectiles/guns/projectile/sniper.dm
@@ -80,7 +80,7 @@
slot_flags = SLOT_BACK // Needs a sprite.
origin_tech = list(TECH_COMBAT = 8, TECH_MATERIAL = 2, TECH_ILLEGAL = 8)
recoil = 2 //extra kickback
- caliber = "a762"
+ caliber = "7.62mm"
load_method = MAGAZINE
accuracy = -3 //shooting at the hip
scoped_accuracy = 0
@@ -88,11 +88,11 @@
one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
fire_sound = 'sound/weapons/SVD_shot.ogg'
magazine_type = /obj/item/ammo_magazine/SVD
- allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/c762)
+ allowed_magazines = list(/obj/item/ammo_magazine/SVD, /obj/item/ammo_magazine/m762)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
-// if(istype(ammo_magazine,/obj/item/ammo_magazine/c762)
+// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)
// icon_state = "SVD-bigmag" //No icon for this exists yet.
if(ammo_magazine)
icon_state = "SVD"
diff --git a/code/modules/projectiles/guns/projectile/sniper_vr.dm b/code/modules/projectiles/guns/projectile/sniper_vr.dm
index ecfe070eca..8ed8962319 100644
--- a/code/modules/projectiles/guns/projectile/sniper_vr.dm
+++ b/code/modules/projectiles/guns/projectile/sniper_vr.dm
@@ -17,12 +17,12 @@
// requires_two_hands = 1
one_handed_penalty = 4 // The weapon itself is heavy, and the long barrel makes it hard to hold steady with just one hand.
fire_sound = 'sound/weapons/SVD_shot.ogg'
- magazine_type = /obj/item/ammo_magazine/s762
- allowed_magazines = list(/obj/item/ammo_magazine/s762, /obj/item/ammo_magazine/c762)
+ magazine_type = /obj/item/ammo_magazine/m762
+ allowed_magazines = list(/obj/item/ammo_magazine/m762, /obj/item/ammo_magazine/m762)
/obj/item/weapon/gun/projectile/SVD/update_icon()
..()
-// if(istype(ammo_magazine,/obj/item/ammo_magazine/c762)
+// if(istype(ammo_magazine,/obj/item/ammo_magazine/m762)
// icon_state = "SVD-bigmag" //No icon for this exists yet.
if(ammo_magazine)
icon_state = "SVD"
diff --git a/code/modules/random_map/drop/drop_types.dm b/code/modules/random_map/drop/drop_types.dm
index 43f89b4ec7..8fb02007b4 100644
--- a/code/modules/random_map/drop/drop_types.dm
+++ b/code/modules/random_map/drop/drop_types.dm
@@ -62,16 +62,16 @@ var/global/list/datum/supply_drop_loot/supply_drop
/obj/item/weapon/storage/box/emps,
/obj/item/weapon/storage/box/flashbangs,
/obj/item/weapon/gun/projectile/automatic/sts35,
- /obj/item/ammo_magazine/c762/ap,
- /obj/item/ammo_magazine/c762/ap,
+ /obj/item/ammo_magazine/m762/ap,
+ /obj/item/ammo_magazine/m762/ap,
/obj/item/weapon/gun/projectile/colt,
- /obj/item/ammo_magazine/c45m,
+ /obj/item/ammo_magazine/m45,
/obj/item/weapon/material/hatchet/tacknife/combatknife)
/datum/supply_drop_loot/heavy_warfare
name = "Heavy Warfare"
container = /obj/structure/largecrate
-/datum/supply_drop_loot/armour/New()
+/datum/supply_drop_loot/heavy_warfare/New()
..()
contents = list(
/obj/item/clothing/head/helmet/combat,
@@ -83,8 +83,8 @@ var/global/list/datum/supply_drop_loot/supply_drop
/obj/item/clothing/accessory/storage/black_drop_pouches,
/obj/item/weapon/storage/backpack/dufflebag/sec,
/obj/item/weapon/gun/projectile/automatic/carbine,
- /obj/item/ammo_magazine/c762/ap,
- /obj/item/ammo_magazine/c762,
+ /obj/item/ammo_magazine/m762/ap,
+ /obj/item/ammo_magazine/m762,
/obj/item/weapon/shield/energy,
/obj/item/weapon/grenade/frag,
/obj/item/weapon/grenade/frag,
@@ -99,7 +99,7 @@ var/global/list/datum/supply_drop_loot/supply_drop
datum/supply_drop_loot/riot
name = "Riot Gear"
container = /obj/structure/largecrate
-/datum/supply_drop_loot/armour/New()
+/datum/supply_drop_loot/riot/New()
..()
contents = list(
/obj/item/clothing/head/helmet/riot,
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
index 88d059ed96..0a208fd0a3 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm
@@ -34,10 +34,12 @@
data -= taste
/datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
- if(!injectable)
+ /* if(!injectable) vorestation removal
M.adjustToxLoss(0.1 * removed)
return
- affect_ingest(M, alien, removed)
+ affect_ingest(M, alien, removed) */
+ if(injectable) //vorestation addition/replacement
+ affect_ingest(M, alien, removed)
/datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
switch(alien)
diff --git a/code/modules/reagents/reagent_containers/glass.dm b/code/modules/reagents/reagent_containers/glass.dm
index bd670cc8bc..f84a6ff407 100644
--- a/code/modules/reagents/reagent_containers/glass.dm
+++ b/code/modules/reagents/reagent_containers/glass.dm
@@ -249,7 +249,7 @@
user.drop_from_inventory(src)
qdel(src)
return
- else if(istype(D, /obj/item/weapon/mop))
+ else if(istype(D, /obj/item/weapon/mop) || istype(D, /obj/item/weapon/soap) || istype(D, /obj/item/weapon/reagent_containers/glass/rag)) //VOREStation Edit - "Allows soap and rags to be used on buckets"
if(reagents.total_volume < 1)
user << "\The [src] is empty!"
else
diff --git a/code/modules/research/designs.dm b/code/modules/research/designs.dm
index 49678c966c..6f1add522a 100644
--- a/code/modules/research/designs.dm
+++ b/code/modules/research/designs.dm
@@ -545,7 +545,7 @@ other types of metals and chemistry for reagents).
id = "ammo_9mm"
req_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 3750, "silver" = 100)
- build_path = /obj/item/ammo_magazine/c9mm
+ build_path = /obj/item/ammo_magazine/box/c9mm
sort_string = "TAACA"
/datum/design/item/weapon/stunshell
@@ -553,7 +553,7 @@ other types of metals and chemistry for reagents).
id = "stunshell"
req_tech = list(TECH_COMBAT = 3, TECH_MATERIAL = 3)
materials = list(DEFAULT_WALL_MATERIAL = 4000)
- build_path = /obj/item/ammo_casing/shotgun/stunshell
+ build_path = /obj/item/ammo_casing/a12g/stunshell
sort_string = "TAACB"
/datum/design/item/weapon/chemsprayer
diff --git a/code/modules/research/designs_vr.dm b/code/modules/research/designs_vr.dm
index 07285cf921..64ed9b5d30 100644
--- a/code/modules/research/designs_vr.dm
+++ b/code/modules/research/designs_vr.dm
@@ -77,6 +77,14 @@
build_path = /obj/item/device/universal_translator/ear
sort_string = "HABBB"
+/datum/design/item/nif
+ name = "nanite implant framework"
+ id = "nif"
+ req_tech = list(TECH_MAGNET = 5, TECH_BLUESPACE = 5, TECH_MATERIAL = 5, TECH_ENGINEERING = 5, TECH_DATA = 5)
+ materials = list(DEFAULT_WALL_MATERIAL = 5000, "glass" = 8000, "uranium" = 6000, "diamond" = 6000)
+ build_path = /obj/item/device/nif
+ sort_string = "HABBC"
+
// Resleeving Circuitboards
/datum/design/circuit/transhuman_clonepod
diff --git a/code/modules/resleeving/implant.dm b/code/modules/resleeving/implant.dm
index d5e2dfac6a..e6dd47b705 100644
--- a/code/modules/resleeving/implant.dm
+++ b/code/modules/resleeving/implant.dm
@@ -49,7 +49,8 @@
BITSET(H.hud_updateflag, BACKUP_HUD)
//Okay we've got a mind at least
if(H == imp_in && H.mind && H.stat < DEAD)
- transcore.m_backup(H.mind)
+ transcore.m_backup(H.mind,H.nif)
+ persist_nif_data(H)
spawn(attempt_delay)
backup()
diff --git a/code/modules/resleeving/infocore.dm b/code/modules/resleeving/infocore.dm
index e03e3291a9..dc0b06d8bd 100644
--- a/code/modules/resleeving/infocore.dm
+++ b/code/modules/resleeving/infocore.dm
@@ -40,7 +40,7 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore
spawn(process_time)
process()
-/datum/transhuman/infocore/proc/m_backup(var/datum/mind/mind)
+/datum/transhuman/infocore/proc/m_backup(var/datum/mind/mind,var/obj/item/device/nif/nif)
ASSERT(mind)
if(!mind.name || core_dumped)
return 0
@@ -50,6 +50,20 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore
if(mind.name in backed_up)
MR = backed_up[mind.name]
MR.last_update = world.time
+ if(nif)
+ MR.nif_path = nif.type
+ MR.nif_durability = nif.durability
+ var/list/nifsofts = list()
+ for(var/N in nif.nifsofts)
+ if(N)
+ var/datum/nifsoft/nifsoft = N
+ nifsofts += nifsoft.type
+ MR.nif_software = nifsofts
+ else
+ MR.nif_path = null
+ MR.nif_durability = null
+ MR.nif_software = null
+
else
MR = new(mind, mind.current, 1)
@@ -114,6 +128,10 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore
var/languages
var/mind_oocnotes
+ var/nif_path
+ var/nif_durability
+ var/list/nif_software
+
/datum/transhuman/mind_record/New(var/datum/mind/mind,var/mob/living/carbon/human/M,var/obj/item/weapon/implant/backup/imp,var/add_to_db = 1)
ASSERT(mind && M && imp)
diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm
index abab41e929..4216f6fb0a 100644
--- a/code/modules/resleeving/machines.dm
+++ b/code/modules/resleeving/machines.dm
@@ -504,6 +504,12 @@
occupant.ooc_notes = MR.mind_oocnotes
occupant.apply_vore_prefs() //Cheap hack for now to give them SOME bellies.
+ //Re-supply a NIF if one was backed up with them.
+ if(MR.nif_path)
+ var/obj/item/device/nif/nif = new MR.nif_path(occupant,MR.nif_durability)
+ for(var/path in MR.nif_software)
+ new path(nif)
+
// If it was a custom sleeve (not owned by anyone), update namification sequences
if(!occupant.original_player)
occupant.real_name = occupant.mind.name
diff --git a/code/modules/supermatter/supermatter.dm b/code/modules/supermatter/supermatter.dm
index 88da3ad842..df5d625a2e 100644
--- a/code/modules/supermatter/supermatter.dm
+++ b/code/modules/supermatter/supermatter.dm
@@ -23,8 +23,11 @@
#define DAMAGE_RATE_LIMIT 3 //damage rate cap at power = 300, scales linearly with power
-//These would be what you would get at point blank, decreases with distance
-#define DETONATION_RADS 200
+// Base variants are applied to everyone on the same Z level
+// Range variants are applied on per-range basis: numbers here are on point blank, it scales with the map size (assumes square shaped Z levels)
+#define DETONATION_RADS 20
+#define DETONATION_HALLUCINATION_BASE 300
+#define DETONATION_HALLUCINATION_RANGE 300
#define DETONATION_HALLUCINATION 600
@@ -95,6 +98,11 @@
anchored = 1
grav_pulling = 1
exploded = 1
+ var/turf/TS = get_turf(src) // The turf supermatter is on. SM being in a locker, mecha, or other container shouldn't block it's effects that way.
+ if(!TS)
+ return
+ for(var/z in GetConnectedZlevels(TS.z))
+ radiation_repository.z_radiate(locate(1, 1, z), DETONATION_RADS, 1)
for(var/mob/living/mob in living_mob_list)
var/turf/T = get_turf(mob)
if(T && (loc.z == T.z))
@@ -102,8 +110,6 @@
//Hilariously enough, running into a closet should make you get hit the hardest.
var/mob/living/carbon/human/H = mob
H.hallucination += max(50, min(300, DETONATION_HALLUCINATION * sqrt(1 / (get_dist(mob, src) + 1)) ) )
- var/rads = DETONATION_RADS * sqrt( 1 / (get_dist(mob, src) + 1) )
- mob.apply_effect(rads, IRRADIATE)
spawn(pull_time)
explosion(get_turf(src), explosion_power, explosion_power * 2, explosion_power * 3, explosion_power * 4, 1)
qdel(src)
@@ -252,12 +258,15 @@
if(!istype(l.glasses, /obj/item/clothing/glasses/meson)) // VOREStation Edit - Only mesons can protect you!
l.hallucination = max(0, min(200, l.hallucination + power * config_hallucination_power * sqrt( 1 / max(1,get_dist(l, src)) ) ) )
+/*
//adjusted range so that a power of 170 (pretty high) results in 9 tiles, roughly the distance from the core to the engine monitoring room.
//note that the rads given at the maximum range is a constant 0.2 - as power increases the maximum range merely increases.
for(var/mob/living/l in range(src, round(sqrt(power / 2))))
var/radius = max(get_dist(l, src), 1)
var/rads = (power / 10) * ( 1 / (radius**2) )
l.apply_effect(rads, IRRADIATE)
+*/
+ radiation_repository.radiate(src, power * 1.5) //Better close those shutters!
power -= (power/DECAY_FACTOR)**3 //energy losses due to radiation
@@ -371,9 +380,8 @@
"The unearthly ringing subsides and you notice you have new radiation burns.", 2)
else
l.show_message("You hear an uneartly ringing and notice your skin is covered in fresh radiation burns.", 2)
- var/rads = 500 * sqrt( 1 / (get_dist(l, src) + 1) )
- l.apply_effect(rads, IRRADIATE)
-
+ var/rads = 500
+ radiation_repository.radiate(src, rads)
/obj/machinery/power/supermatter/proc/supermatter_pull()
//following is adapted from singulo code
diff --git a/code/modules/surgery/implant.dm b/code/modules/surgery/implant.dm
index 3e49482c75..5b26489049 100644
--- a/code/modules/surgery/implant.dm
+++ b/code/modules/surgery/implant.dm
@@ -13,22 +13,22 @@
return affected && affected.open == (affected.encased ? 3 : 2) && !(affected.status & ORGAN_BLEEDING)
proc/get_max_wclass(var/obj/item/organ/external/affected)
- switch (affected.name)
- if ("head")
- return 1
- if ("upper body")
- return 3
- if ("lower body")
- return 2
+ switch (affected.organ_tag)
+ if (BP_HEAD)
+ return ITEMSIZE_TINY
+ if (BP_TORSO)
+ return ITEMSIZE_NORMAL
+ if (BP_GROIN)
+ return ITEMSIZE_SMALL
return 0
proc/get_cavity(var/obj/item/organ/external/affected)
- switch (affected.name)
- if ("head")
+ switch (affected.organ_tag)
+ if (BP_HEAD)
return "cranial"
- if ("upper body")
+ if (BP_TORSO)
return "thoracic"
- if ("lower body")
+ if (BP_GROIN)
return "abdominal"
return ""
@@ -136,6 +136,7 @@
user.drop_item()
affected.implants += tool
tool.loc = affected
+ if(istype(tool,/obj/item/device/nif)){var/obj/item/device/nif/N = tool;N.implant(target)} //VOREStation Add - NIF support
affected.cavity = 0
//////////////////////////////////////////////////////////////////
@@ -207,6 +208,7 @@
var/obj/item/weapon/implant/imp = obj
imp.imp_in = null
imp.implanted = 0
+ else if(istype(tool,/obj/item/device/nif)){var/obj/item/device/nif/N = tool;N.unimplant(target)} //VOREStation Add - NIF support
else
user.visible_message("\blue [user] removes \the [tool] from [target]'s [affected.name].", \
"\blue There's something inside [target]'s [affected.name], but you just missed it this time." )
diff --git a/code/modules/surgery/surgery.dm b/code/modules/surgery/surgery.dm
index 38b919823f..b9fe362031 100644
--- a/code/modules/surgery/surgery.dm
+++ b/code/modules/surgery/surgery.dm
@@ -1,5 +1,8 @@
/* SURGERY STEPS */
+/obj/
+ var/surgery_odds = 0 // Used for tables/etc which can have surgery done of them.
+
/datum/surgery_step
var/priority = 0 //steps with higher priority would be attempted first
@@ -111,13 +114,29 @@
return 1
M.op_stage.in_progress += zone
S.begin_step(user, M, zone, src) //start on it
- //We had proper tools! (or RNG smiled.) and user did not move or change hands.
- if(prob(S.tool_quality(src)) && do_mob(user, M, rand(S.min_duration, S.max_duration)))
- S.end_step(user, M, zone, src) //finish successfully
- else if ((src in user.contents) && user.Adjacent(M)) //or
- S.fail_step(user, M, zone, src) //malpractice~
- else // This failing silently was a pain.
- user << "You must remain close to your patient to conduct surgery."
+ var/success = TRUE
+
+ // Bad tools make it less likely to succeed.
+ if(!prob(S.tool_quality(src)))
+ success = FALSE
+
+ // Bad or no surface may mean failure as well.
+ var/obj/surface = M.get_surgery_surface()
+ if(!surface || !prob(surface.surgery_odds))
+ success = FALSE
+
+ // Not staying still fails you too.
+ if(success)
+ if(!do_mob(user, M, rand(S.min_duration, S.max_duration)))
+ success = FALSE
+ else
+ to_chat(user, "You must remain close to your patient to conduct surgery.")
+
+ if(success)
+ S.end_step(user, M, zone, src)
+ else
+ S.fail_step(user, M, zone, src)
+
M.op_stage.in_progress -= zone // Clear the in-progress flag.
if (ishuman(M))
var/mob/living/carbon/human/H = M
diff --git a/code/modules/tables/tables.dm b/code/modules/tables/tables.dm
index 9348799a99..620a475475 100644
--- a/code/modules/tables/tables.dm
+++ b/code/modules/tables/tables.dm
@@ -10,6 +10,7 @@ var/list/table_icon_cache = list()
climbable = 1
layer = 2.8
throwpass = 1
+ surgery_odds = 66
var/flipped = 0
var/maxhealth = 10
var/health = 10
diff --git a/code/modules/vore/fluffstuff/custom_boxes_vr.dm b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
index a1ef6d8dd5..6908a68e95 100644
--- a/code/modules/vore/fluffstuff/custom_boxes_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_boxes_vr.dm
@@ -174,21 +174,21 @@
new /obj/item/clothing/glasses/omnihud/med/fluff/aronai(src)
//Gun and holster
new /obj/item/weapon/gun/energy/netgun(src)
- new /obj/item/clothing/accessory/holster/leg(src)
+ new /obj/item/clothing/accessory/holster(src)
//Aerowing:Sebastian Aji
/obj/item/weapon/storage/box/fluff/sebastian_aji
name = "Sebastian's Lumoco Arms P3 Box"
has_items = list(
/obj/item/weapon/gun/projectile/pistol,
- /obj/item/ammo_magazine/mc9mm/flash,
- /obj/item/ammo_magazine/mc9mm/flash,
+ /obj/item/ammo_magazine/m9mm/flash,
+ /obj/item/ammo_magazine/m9mm/flash,
/obj/item/fluff/permit/sebastian_aji)
/obj/item/weapon/storage/box/fluff/briana_moore
name = "Briana's Derringer Box"
has_items = list(
- /obj/item/weapon/gun/projectile/derringer,
+ /obj/item/weapon/gun/projectile/derringer/fluff/briana,
/obj/item/fluff/permit/briana_moore)
diff --git a/code/modules/vore/fluffstuff/custom_guns_vr.dm b/code/modules/vore/fluffstuff/custom_guns_vr.dm
index 3d72379097..400c327c75 100644
--- a/code/modules/vore/fluffstuff/custom_guns_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_guns_vr.dm
@@ -67,7 +67,7 @@
item_state = "haloshotgun_i"
item_icons = null
- ammo_type = /obj/item/ammo_casing/shotgun
+ ammo_type = /obj/item/ammo_casing/a12g
max_shells = 12
// jertheace : Jeremiah 'Ace' Acacius
@@ -75,7 +75,7 @@
name = "Ace's M45D Tactical Shotgun" // D-model holds half as many shells as the normal version so as not to be OP as shit. Better than shotgun, worse than combat shotgun.
desc = "Owned by the respected (or feared?) veteran Captain of VORE Station. Inscribed on the barrel are the words \"Speak softly, and carry a big stick.\" It has a folding stock so it can fit into bags."
w_class = ITEMSIZE_NORMAL // Because collapsable stock so it fits in backpacks.
- ammo_type = /obj/item/ammo_casing/shotgun/stunshell
+ ammo_type = /obj/item/ammo_casing/a12g/stunshell
max_shells = 6
// bwoincognito:Tasald Corlethian
@@ -146,7 +146,7 @@
icon_state = "jury"
item_state = "gun"
accuracy = 0 // Because I know you're not an idiot who needs to be nerfed. -Ace
- ammo_type = /obj/item/ammo_casing/shotgun/beanbag
+ ammo_type = /obj/item/ammo_casing/a12g/beanbag
// Dhaeleena : Dhaeleena M'iar
/obj/item/weapon/gun/projectile/revolver/mateba/fluff/dhael
@@ -166,8 +166,14 @@
icon_state = "model10"
fire_sound = 'sound/weapons/deagle.ogg'
origin_tech = list(TECH_COMBAT = 2, TECH_MATERIAL = 2)
- ammo_type = /obj/item/ammo_casing/c38r //Rubber rounds.
+ ammo_type = /obj/item/ammo_casing/a38r //Rubber rounds.
+// LuminescentRing : Briana Moore
+/obj/item/weapon/gun/projectile/derringer/fluff/briana
+ name = "second-hand derringer"
+ desc = "It's a palm sized gun. One of the few things that won't break an angel's wrists."
+ caliber = "10mm"
+ ammo_type = /obj/item/ammo_casing/a10mm
// For general use
/obj/item/weapon/gun/projectile/automatic/stg
@@ -180,8 +186,8 @@
max_shells = 30
caliber = "kurz"
origin_tech = list(TECH_COMBAT = 4, TECH_MATERIAL = 2, TECH_ILLEGAL = 6)
- magazine_type = /obj/item/ammo_magazine/stg
- allowed_magazines = list(/obj/item/ammo_magazine/stg)
+ magazine_type = /obj/item/ammo_magazine/mtg
+ allowed_magazines = list(/obj/item/ammo_magazine/mtg)
load_method = MAGAZINE
/obj/item/weapon/gun/projectile/automatic/stg/update_icon(var/ignore_inhands)
@@ -238,8 +244,8 @@
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 2)
slot_flags = SLOT_BELT
load_method = MAGAZINE
- magazine_type = /obj/item/ammo_magazine/mc9mml
- allowed_magazines = list(/obj/item/ammo_magazine/mc9mm, /obj/item/ammo_magazine/mc9mml)
+ magazine_type = /obj/item/ammo_magazine/m9mml
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml)
firemodes = list(
list(mode_name="semiauto", burst=1, fire_delay=0, move_delay=null, burst_accuracy=null, dispersion=null),
@@ -248,7 +254,7 @@
/obj/item/weapon/gun/projectile/automatic/pdw/update_icon(var/ignore_inhands)
..()
- if(istype(ammo_magazine,/obj/item/ammo_magazine/mc9mm))
+ if(istype(ammo_magazine,/obj/item/ammo_magazine/m9mm))
icon_state = "pdw-short"
else
icon_state = (ammo_magazine)? "pdw" : "pdw-empty"
@@ -279,8 +285,8 @@
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
hitsound = null
caliber = "s762"
- magazine_type = /obj/item/ammo_magazine/s762
- allowed_magazines = list(/obj/item/ammo_magazine/s762)
+ magazine_type = /obj/item/ammo_magazine/m762
+ allowed_magazines = list(/obj/item/ammo_magazine/m762)
/obj/item/weapon/gun/projectile/automatic/fluff/crestrose/attack_self(mob/user as mob)
on = !on
@@ -379,7 +385,7 @@
/obj/item/weapon/gun/projectile/automatic/carbine/fluff/g44/update_icon(var/ignore_inhands)
..()
- // TODO - Fix this for spriting different size magazines
+ // TODO - Fix this for spriting different size magazines
icon_state = (ammo_magazine)? "g44" : "g44-empty"
item_state = (ammo_magazine)? "bullpup" : "bullpup-empty"
if(!ignore_inhands) update_held_icon()
@@ -462,8 +468,8 @@
icon = 'icons/obj/gun_vr.dmi'
icon_state = "khipistol"
item_state = "gun" // Placeholder
- magazine_type = /obj/item/ammo_magazine/c45m/flash //Dun wanna KILL all the people.
- allowed_magazines = list(/obj/item/ammo_magazine/c45m)
+ magazine_type = /obj/item/ammo_magazine/m45/flash //Dun wanna KILL all the people.
+ allowed_magazines = list(/obj/item/ammo_magazine/m45)
caliber = ".45"
handle_casings = CYCLE_CASINGS
origin_tech = list(TECH_COMBAT = 5, TECH_MATERIAL = 5)
@@ -485,8 +491,8 @@
slot_flags = SLOT_BELT
load_method = MAGAZINE
handle_casings = CYCLE_CASINGS
- magazine_type = /obj/item/ammo_magazine/mc9mml
- allowed_magazines = list(/obj/item/ammo_magazine/mc9mm, /obj/item/ammo_magazine/mc9mml)
+ magazine_type = /obj/item/ammo_magazine/m9mml
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mm, /obj/item/ammo_magazine/m9mml)
dna_lock = 1
firemodes = list(
@@ -583,8 +589,8 @@
caliber = ".44"
ammo_type = /obj/item/ammo_casing/a44/rubber
- magazine_type = /obj/item/ammo_magazine/a44/rubber
- allowed_magazines = list(/obj/item/ammo_magazine/a44,/obj/item/ammo_magazine/a44/rubber)
+ magazine_type = /obj/item/ammo_magazine/m44/rubber
+ allowed_magazines = list(/obj/item/ammo_magazine/m44,/obj/item/ammo_magazine/m44/rubber)
load_method = MAGAZINE
auto_eject = 1
auto_eject_sound = 'sound/weapons/smg_empty_alarm.ogg'
@@ -610,8 +616,8 @@
caliber = ".32"
ammo_type = /obj/item/ammo_casing/a32
- magazine_type = /obj/item/ammo_magazine/a32
- allowed_magazines = list(/obj/item/ammo_magazine/a32)
+ magazine_type = /obj/item/ammo_magazine/m32
+ allowed_magazines = list(/obj/item/ammo_magazine/m32)
load_method = MAGAZINE
fire_delay = 0.6
accuracy = 1
@@ -639,8 +645,8 @@
caliber = ".32"
ammo_type = /obj/item/ammo_casing/a32
- magazine_type = /obj/item/ammo_magazine/a32
- allowed_magazines = list(/obj/item/ammo_magazine/a32)
+ magazine_type = /obj/item/ammo_magazine/m32
+ allowed_magazines = list(/obj/item/ammo_magazine/m32)
fire_delay = 1.2
load_method = MAGAZINE
accuracy = 2
@@ -699,9 +705,9 @@
slot_flags = SLOT_BELT
caliber = "9mm"
- ammo_type = /obj/item/ammo_casing/c9mm
- magazine_type = /obj/item/ammo_magazine/c9mm
- allowed_magazines = list(/obj/item/ammo_magazine/c9mm)
+ ammo_type = /obj/item/ammo_casing/a9mm
+ magazine_type = /obj/item/ammo_magazine/m9mm
+ allowed_magazines = list(/obj/item/ammo_magazine/m9mm)
load_method = MAGAZINE
multi_aim = 1
burst_delay = 2
@@ -866,7 +872,7 @@
impact_type = /obj/effect/projectile/laser_omni/impact
//--------------- StG-60 ----------------
-/obj/item/ammo_magazine/stg
+/obj/item/ammo_magazine/mtg
name = "box mag (7.92x33mm Kurz)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "stg_30rnd"
@@ -881,7 +887,7 @@
caliber = "kurz"
projectile_type = /obj/item/projectile/bullet/rifle/a762
-/obj/item/ammo_magazine/stg/empty
+/obj/item/ammo_magazine/mtg/empty
initial_ammo = 0
//------------- Battlerifle -------------
@@ -909,7 +915,7 @@
initial_ammo = 0
//---------------- PDW ------------------
-/obj/item/ammo_magazine/mc9mml
+/obj/item/ammo_magazine/m9mml
name = "\improper SMG magazine (9mm)"
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "smg"
@@ -917,31 +923,31 @@
mag_type = MAGAZINE
matter = list(DEFAULT_WALL_MATERIAL = 1800)
caliber = "9mm"
- ammo_type = /obj/item/ammo_casing/c9mm
+ ammo_type = /obj/item/ammo_casing/a9mm
max_ammo = 30
multiple_sprites = 1
-/obj/item/ammo_magazine/mc9mml/empty
+/obj/item/ammo_magazine/m9mml/empty
initial_ammo = 0
-/obj/item/ammo_magazine/mc9mml/ap
+/obj/item/ammo_magazine/m9mml/ap
name = "\improper SMG magazine (9mm armor-piercing)"
- ammo_type = /obj/item/ammo_casing/c9mm/ap
+ ammo_type = /obj/item/ammo_casing/a9mm/ap
-/obj/item/ammo_magazine/mc9mml/flash
+/obj/item/ammo_magazine/m9mml/flash
name = "\improper SMG magazine (9mm flash)"
- ammo_type = /obj/item/ammo_casing/c9mmf
+ ammo_type = /obj/item/ammo_casing/a9mmf
-/obj/item/ammo_magazine/mc9mml/rubber
+/obj/item/ammo_magazine/m9mml/rubber
name = "\improper SMG magazine (9mm rubber)"
- ammo_type = /obj/item/ammo_casing/c9mmr
+ ammo_type = /obj/item/ammo_casing/a9mmr
-/obj/item/ammo_magazine/mc9mml/practice
+/obj/item/ammo_magazine/m9mml/practice
name = "\improper SMG magazine (9mm practice)"
- ammo_type = /obj/item/ammo_casing/c9mmp
+ ammo_type = /obj/item/ammo_casing/a9mmp
//.357 special ammo
-/obj/item/ammo_magazine/a357/stun
+/obj/item/ammo_magazine/m357/stun
name = "speedloader (.357 stun)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
@@ -957,7 +963,7 @@
icon_state = "stun357"
projectile_type = /obj/item/projectile/energy/electrode/stunshot/strong
-/obj/item/ammo_magazine/a357/rubber
+/obj/item/ammo_magazine/m357/rubber
name = "speedloader (.357 rubber)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
@@ -973,7 +979,7 @@
icon_state = "rubber357"
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
-/obj/item/ammo_magazine/a357/flash
+/obj/item/ammo_magazine/m357/flash
name = "speedloader (.357 flash)"
desc = "A speedloader for .357 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
@@ -995,7 +1001,7 @@
caliber = ".32"
projectile_type = /obj/item/projectile/bullet/pistol
-/obj/item/ammo_magazine/a32
+/obj/item/ammo_magazine/m32
icon_state = "a762"
caliber = ".32"
ammo_type = /obj/item/ammo_casing/a32
@@ -1016,7 +1022,7 @@
desc = "A .44 rubber bullet casing."
projectile_type = /obj/item/projectile/bullet/pistol/rubber/strong
-/obj/item/ammo_magazine/a44
+/obj/item/ammo_magazine/m44
desc = "A magazine for .44 ammo."
icon = 'icons/obj/ammo_vr.dmi'
icon_state = "44lethal"
@@ -1026,13 +1032,13 @@
max_ammo = 8
mag_type = MAGAZINE
-/obj/item/ammo_magazine/a44/rubber
+/obj/item/ammo_magazine/m44/rubber
desc = "A magazine for .44 less-than-lethal ammo."
icon_state = "44rubber"
ammo_type = /obj/item/ammo_casing/a44/rubber
//.44 speedloaders
-/obj/item/ammo_magazine/a44sl
+/obj/item/ammo_magazine/m44sl
name = "speedloader (.44)"
desc = "A speedloader for .44 revolvers."
icon = 'icons/obj/ammo_vr.dmi'
@@ -1044,7 +1050,7 @@
multiple_sprites = 1
mag_type = SPEEDLOADER
-/obj/item/ammo_magazine/a44sl/rubber
+/obj/item/ammo_magazine/m44sl/rubber
name = "speedloader (.44 rubber)"
icon_state = "r357"
ammo_type = /obj/item/ammo_casing/a44/rubber
diff --git a/code/modules/vore/fluffstuff/custom_items_vr.dm b/code/modules/vore/fluffstuff/custom_items_vr.dm
index 6cb35d6688..8b10ed2ade 100644
--- a/code/modules/vore/fluffstuff/custom_items_vr.dm
+++ b/code/modules/vore/fluffstuff/custom_items_vr.dm
@@ -710,6 +710,127 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie
do_reagent_implant(usr)
+//SpoopyLizz: Roiz Lizden
+//I made this! Woo!
+//implant
+//--------------------
+/obj/item/weapon/implant/reagent_generator/roiz
+ name = "egg laying implant"
+ desc = "This is an implant that allows the user to lay eggs."
+ generated_reagent = "egg"
+ usable_volume = 500
+ transfer_amount = 50
+
+ empty_message = list("Your lower belly feels smooth and empty. Sorry, we're out of eggs!", "The reduced pressure in your lower belly tells you there are no more eggs.")
+ full_message = list("Your lower belly looks swollen with irregular bumps, and it feels heavy.", "Your lower abdomen feels really heavy, making it a bit hard to walk.")
+ emote_descriptor = list("an egg right out of Roiz's lower belly!", "into Roiz' belly firmly, forcing him to lay an egg!", "Roiz really tight, who promptly lays an egg!")
+ var/verb_descriptor = list("squeezes", "pushes", "hugs")
+ var/self_verb_descriptor = list("squeeze", "push", "hug")
+ var/short_emote_descriptor = list("lays", "forces out", "pushes out")
+ self_emote_descriptor = list("lay", "force out", "push out")
+ random_emote = list("hisses softly with a blush on his face", "yelps in embarrassment", "grunts a little")
+ assigned_proc = /mob/living/carbon/human/proc/use_reagent_implant_roiz
+
+/obj/item/weapon/implanter/reagent_generator/roiz
+ implant_type = /obj/item/weapon/implant/reagent_generator/roiz
+
+/mob/living/carbon/human/proc/use_reagent_implant_roiz()
+ set name = "Lay Egg"
+ set desc = "Force Roiz to lay an egg by squeezing into his lower body! This makes the lizard extremely embarrassed, and it looks funny."
+ set category = "Object"
+ set src in view(1)
+
+ //do_reagent_implant(usr)
+ if(!isliving(usr) || !usr.canClick())
+ return
+
+ if(usr.incapacitated() || usr.stat > CONSCIOUS)
+ return
+
+ var/obj/item/weapon/implant/reagent_generator/roiz/rimplant
+ for(var/I in src.contents)
+ if(istype(I, /obj/item/weapon/implant/reagent_generator))
+ rimplant = I
+ break
+ if (rimplant)
+ if(rimplant.reagents.total_volume <= rimplant.transfer_amount)
+ to_chat(src, "[pick(rimplant.empty_message)]")
+ return
+
+ new /obj/item/weapon/reagent_containers/food/snacks/egg/roiz(get_turf(src))
+
+ var/index = rand(0,3)
+
+ if (usr != src)
+ var/emote = rimplant.emote_descriptor[index]
+ var/verb_desc = rimplant.verb_descriptor[index]
+ var/self_verb_desc = rimplant.self_verb_descriptor[index]
+ usr.visible_message("[usr] [verb_desc] [emote]",
+ "You [self_verb_desc] [emote]")
+ else
+ src.visible_message("[src] [pick(rimplant.short_emote_descriptor)] an egg.",
+ "You [pick(rimplant.self_emote_descriptor)] an egg.")
+ if(prob(15))
+ src.visible_message("[src] [pick(rimplant.random_emote)].") // M-mlem.
+
+ rimplant.reagents.remove_reagent(rimplant.generated_reagent, rimplant.transfer_amount)
+
+//Egg item
+//-------------
+/obj/item/weapon/reagent_containers/food/snacks/egg/roiz
+ name = "lizard egg"
+ desc = "It's a large lizard egg."
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_state = "egg_roiz"
+ filling_color = "#FDFFD1"
+ volume = 12
+
+/obj/item/weapon/reagent_containers/food/snacks/egg/roiz/New()
+ ..()
+ reagents.add_reagent("egg", 9)
+ bitesize = 4
+
+/obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz
+ name = "fried lizard egg"
+ desc = "A large, fried lizard egg, with a touch of salt and pepper. It looks rather chewy."
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_state = "friedegg"
+ volume = 12
+
+/obj/item/weapon/reagent_containers/food/snacks/friedegg/roiz/New()
+ ..()
+ reagents.add_reagent("protein", 9)
+ bitesize = 4
+
+/obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz
+ name = "boiled lizard egg"
+ desc = "A hard boiled lizard egg. Be careful, a lizard detective may hatch!"
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_state = "egg_roiz"
+ volume = 12
+
+/obj/item/weapon/reagent_containers/food/snacks/boiledegg/roiz/New()
+ ..()
+ reagents.add_reagent("protein", 6)
+ bitesize = 4
+
+/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz
+ name = "chocolate lizard egg"
+ desc = "Such huge, sweet, fattening food."
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_state = "chocolateegg_roiz"
+ filling_color = "#7D5F46"
+ nutriment_amt = 3
+ nutriment_desc = list("chocolate" = 5)
+ volume = 18
+
+/obj/item/weapon/reagent_containers/food/snacks/chocolateegg/roiz/New()
+ ..()
+ reagents.add_reagent("sugar", 6)
+ reagents.add_reagent("coco", 6)
+ reagents.add_reagent("milk", 2)
+ bitesize = 6
+
//PontifexMinimus: Lucius/Lucia Null
/obj/item/weapon/fluff/dragor_dot
name = "supplemental battery"
@@ -1089,3 +1210,30 @@ obj/item/weapon/material/hatchet/tacknife/combatknife/fluff/katarina/handle_shie
B.internal_contents |= src
user.visible_message("[user] eats a telebeacon!","You eat the the beacon!")
playsound(user, B.vore_sound, 70, 1)
+
+//InterroLouis: Ruda Lizden
+/obj/item/clothing/accessory/badge/holo/detective/ruda
+ name = "Hisstective's Badge"
+ desc = "This is Ruda Lizden's personal Detective's badge. The polish is dull, as if it's simply been huffed upon and wiped against a coat. Labeled 'Hisstective.'"
+ icon = 'icons/vore/custom_items_vr.dmi'
+ icon_state = "hisstective_badge"
+ //slot_flags = SLOT_TIE | SLOT_BELT
+
+/obj/item/clothing/accessory/badge/holo/detective/ruda/attack(mob/living/carbon/human/M, mob/living/user)
+ if(isliving(user))
+ user.visible_message("[user] invades [M]'s personal space, thrusting [src] into their face with an insistent huff.","You invade [M]'s personal space, thrusting [src] into their face with an insistent huff.")
+ user.do_attack_animation(M)
+ user.setClickCooldown(DEFAULT_QUICK_COOLDOWN) //to prevent spam
+
+/obj/item/clothing/accessory/badge/holo/detective/ruda/attack_self(mob/user as mob)
+
+ if(!stored_name)
+ user << "You huff along the front of your badge, then rub your sleeve on it to polish it up."
+ set_name(user.real_name)
+ return
+
+ if(isliving(user))
+ if(stored_name)
+ user.visible_message("[user] displays their [src.name].\nIt reads: [stored_name], [badge_string].","You display your [src.name].\nIt reads: [stored_name], [badge_string].")
+ else
+ user.visible_message("[user] displays their [src.name].\nIt reads: [badge_string].","You display your [src.name]. It reads: [badge_string].")
\ No newline at end of file
diff --git a/code/modules/vore/persist/persist_vr.dm b/code/modules/vore/persist/persist_vr.dm
index a6ff22d4e4..bddd9bc7b9 100644
--- a/code/modules/vore/persist/persist_vr.dm
+++ b/code/modules/vore/persist/persist_vr.dm
@@ -35,6 +35,32 @@
persist_interround_data(Player, /datum/spawnpoint/cryo)
return 1
+/**
+ * Prep for save: returns a preferences object if we're ready and allowed to save this mob.
+ */
+/proc/prep_for_persist(var/mob/persister)
+ ASSERT(istype(persister))
+
+ // Find out of this mob is a proper mob!
+ if (persister.mind && persister.mind.loaded_from_ckey)
+ // Okay this mob has a real loaded-from-savefile mind in it!
+ var/datum/preferences/prefs = preferences_datums[persister.mind.loaded_from_ckey]
+ if(!prefs)
+ WARNING("mind [persister.mind] was loaded from ckey [persister.mind.loaded_from_ckey] but no prefs datum found")
+ return
+
+ // Okay, lets do a few checks to see if we should really save tho!
+ if(!prefs.load_character(persister.mind.loaded_from_slot))
+ WARNING("mind [persister.mind] was loaded from slot [persister.mind.loaded_from_slot] but loading prefs failed.")
+ return // Failed to load character
+
+ // For now as a safety measure we will only save if the name matches.
+ if(prefs.real_name != persister.real_name)
+ log_debug("Skipping persist for [persister] becuase [persister.real_name] != [prefs.real_name]")
+ return
+
+ return prefs
+
/**
* Called when mob despawns early (via cryopod)!
*/
@@ -47,42 +73,33 @@
/proc/persist_interround_data(var/mob/occupant, var/datum/spawnpoint/new_spawn_point_type)
ASSERT(istype(occupant))
- // Find out of this mob is a proper mob!
- if (occupant.mind && occupant.mind.loaded_from_ckey)
- // Okay this mob has a real loaded-from-savefile mind in it!
- var/datum/preferences/prefs = preferences_datums[occupant.mind.loaded_from_ckey]
- if(!prefs)
- WARNING("mind [occupant.mind] was loaded from ckey [occupant.mind.loaded_from_ckey] but no prefs datum found")
- return
+ var/datum/preferences/prefs = prep_for_persist(occupant)
+ if(!prefs)
+ WARNING("persist_interround_data failed to prep [occupant] for persisting")
+ return
- // Okay, lets do a few checks to see if we should really save tho!
- if(!prefs.load_character(occupant.mind.loaded_from_slot))
- WARNING("mind [occupant.mind] was loaded from slot [occupant.mind.loaded_from_slot] but loading prefs failed.")
- return // Failed to load character
+ //This one doesn't rely on persistence prefs
+ if(ishuman(occupant) && occupant.stat != DEAD)
+ persist_nif_data(occupant, prefs)
- // For now as a safety measure we will only save if the name matches.
- if(prefs.real_name != occupant.real_name)
- log_debug("Skipping persist for [occupant] becuase [occupant.real_name] != [prefs.real_name]")
- return
+ if(!prefs.persistence_settings)
+ return // Persistence disabled by preference settings
- if(!prefs.persistence_settings)
- return // Persistence disabled by preference settings
+ // Okay we can start saving the data
+ if(new_spawn_point_type && prefs.persistence_settings & PERSIST_SPAWN)
+ prefs.spawnpoint = initial(new_spawn_point_type.display_name)
+ if(ishuman(occupant) && occupant.stat != DEAD)
+ var/mob/living/carbon/human/H = occupant
+ testing("About to try saving stuff from [H] to [prefs] (\ref[prefs])")
+ if(prefs.persistence_settings & PERSIST_ORGANS)
+ apply_organs_to_prefs(H, prefs)
+ if(prefs.persistence_settings & PERSIST_MARKINGS)
+ apply_markings_to_prefs(H, prefs)
+ if(prefs.persistence_settings & PERSIST_WEIGHT)
+ resolve_excess_nutrition(H)
+ prefs.weight_vr = H.weight
- // Okay we can start saving the data
- if(new_spawn_point_type && prefs.persistence_settings & PERSIST_SPAWN)
- prefs.spawnpoint = initial(new_spawn_point_type.display_name)
- if(ishuman(occupant) && occupant.stat != DEAD)
- var/mob/living/carbon/human/H = occupant
- testing("About to try saving stuff from [H] to [prefs] (\ref[prefs])")
- if(prefs.persistence_settings & PERSIST_ORGANS)
- apply_organs_to_prefs(H, prefs)
- if(prefs.persistence_settings & PERSIST_MARKINGS)
- apply_markings_to_prefs(H, prefs)
- if(prefs.persistence_settings & PERSIST_WEIGHT)
- resolve_excess_nutrition(H)
- prefs.weight_vr = H.weight
- prefs.save_character()
- return
+ prefs.save_character()
// Saves mob's current coloration state to prefs
// This basically needs to be the reverse of /datum/category_item/player_setup_item/general/body/copy_to_mob() ~Leshana
@@ -194,3 +211,36 @@
// Weight Loss!
var/loss = (MAX_NUTRITION_TO_LOSE - C.nutrition) * weight_per_nutrition * C.weight_loss/100
C.weight = max(MIN_MOB_WEIGHT, C.weight - loss)
+
+/**
+* Persist any NIF data that needs to be persisted. It's stored in a list to make it more malleable
+* towards future shenanigans such as upgradable NIFs or different types or things of that nature,
+* without invoking the need for a bunch of different save file variables.
+*/
+/proc/persist_nif_data(var/mob/living/carbon/human/H,var/datum/preferences/prefs)
+ if(!istype(H))
+ CRASH("persist_nif_data given a nonhuman: [H]")
+
+ if(!prefs)
+ prefs = prep_for_persist(H)
+
+ if(!prefs)
+ WARNING("persist_nif_data failed to prep [H] for persisting")
+ return
+
+ var/obj/item/device/nif/nif = H.nif
+
+ if(nif)
+ prefs.nif_path = nif.type
+ prefs.nif_durability = nif.durability
+ else
+ prefs.nif_path = null
+ prefs.nif_durability = null
+
+ var/datum/category_group/player_setup_category/vore_cat = prefs.player_setup.categories_by_name["VORE"]
+ var/datum/category_item/player_setup_item/vore/nif/nif_prefs = vore_cat.items_by_name["NIF Data"]
+
+ var/savefile/S = new /savefile(prefs.path)
+ if(!S) WARNING ("Couldn't load NIF save savefile? [prefs.real_name]")
+ S.cd = "/character[prefs.default_slot]"
+ nif_prefs.save_character(S)
diff --git a/code/modules/xenoarcheaology/effects/radiate.dm b/code/modules/xenoarcheaology/effects/radiate.dm
index 7816409757..6c8d37838a 100644
--- a/code/modules/xenoarcheaology/effects/radiate.dm
+++ b/code/modules/xenoarcheaology/effects/radiate.dm
@@ -15,16 +15,10 @@
/datum/artifact_effect/radiate/DoEffectAura()
if(holder)
- var/turf/T = get_turf(holder)
- for (var/mob/living/M in range(src.effectrange,T))
- M.apply_effect(radiation_amount,IRRADIATE,0)
- M.updatehealth()
+ radiation_repository.flat_radiate(holder, radiation_amount, src.effectrange)
return 1
/datum/artifact_effect/radiate/DoEffectPulse()
if(holder)
- var/turf/T = get_turf(holder)
- for (var/mob/living/M in range(src.effectrange,T))
- M.apply_effect(radiation_amount * 25,IRRADIATE,0)
- M.updatehealth()
+ radiation_repository.radiate(holder, ((radiation_amount * 25) * (sqrt(src.effectrange)))) //Need to get feedback on this
return 1
diff --git a/code/modules/xenoarcheaology/tools/geosample_scanner.dm b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
index 9d6450a839..9e3343b680 100644
--- a/code/modules/xenoarcheaology/tools/geosample_scanner.dm
+++ b/code/modules/xenoarcheaology/tools/geosample_scanner.dm
@@ -198,8 +198,7 @@
radiation = rand() * 15 + 85
if(!rad_shield)
//irradiate nearby mobs
- for(var/mob/living/M in view(7,src))
- M.apply_effect(radiation / 25, IRRADIATE, 0)
+ radiation_repository.radiate(src, radiation / 25)
else
t_left_radspike = pick(10,15,25)
@@ -361,4 +360,4 @@
scanned_item = null
add_fingerprint(usr)
- return 1 // update UIs attached to this object
+ return 1 // update UIs attached to this object
\ No newline at end of file
diff --git a/config/custom_items.txt b/config/custom_items.txt
index 5e142ea5eb..7609e02719 100644
--- a/config/custom_items.txt
+++ b/config/custom_items.txt
@@ -62,6 +62,14 @@ item_name: centcom medical uniform
item_desc: A medical uniform straight from Central Command.
}
+{
+ckey: arokha
+character_name: Aronai Kadigan
+item_path: /obj/item/clothing/suit/storage/service/expeditionary/medical/command
+item_name: centcom medical jacket
+item_desc: A medical jacket straight from Central Command.
+}
+
{
ckey: arokha
character_name: Aronai Kadigan
@@ -211,6 +219,12 @@ item_path: /obj/item/weapon/implanter/reagent_generator/belle
# ######## I CKEYS
+{
+ckey: interrolouis
+character_name: Ruda Lizden
+item_path:/obj/item/clothing/accessory/badge/holo/detective/ruda
+}
+
{
ckey: ivymoomoo
character_name: Ivy Baladeva
@@ -539,6 +553,12 @@ character_name: Fortune Bloise
item_path: /obj/item/weapon/storage/backpack/satchel/fluff/swat43bag
}
+{
+ckey: SpoopyLizz
+character_name: Roiz Lizden
+item_path: /obj/item/weapon/implanter/reagent_generator/roiz
+}
+
# ######## T CKEYS
{
ckey: tonyvld
diff --git a/config/example/config.txt b/config/example/config.txt
index 7c7e397155..e344634847 100644
--- a/config/example/config.txt
+++ b/config/example/config.txt
@@ -36,6 +36,9 @@ JOBS_HAVE_MINIMAL_ACCESS
Configure how fast explosion strength diminishes when travelling up/down z levels. All explosion distances are multiplied by this each time they go up/down z-levels.
#MULTI_Z_EXPLOSION_SCALAR 0.5
+# Radiation weakens with distance from the source; stop calculating when the strength falls below this value. Lower values mean radiation reaches smaller (with increasingly trivial damage) at the cost of more CPU usage. Max range = DISTANCE^2 * POWER / RADIATION_LOWER_LIMIT
+# RADIATION_LOWER_LIMIT 0.35
+
## log OOC channel
LOG_OOC
diff --git a/html/changelogs/Leshana-Radiation.yml b/html/changelogs/Leshana-Radiation.yml
new file mode 100644
index 0000000000..d4d9c3589d
--- /dev/null
+++ b/html/changelogs/Leshana-Radiation.yml
@@ -0,0 +1,5 @@
+author: Leshana
+delete-after: True
+changes:
+ - tweak: "Optimized the unified radiation system. Made the radiation cutoff level configurable."
+ - bugfix: "Standing still won't save you from radiation storms."
diff --git a/html/changelogs/MagmaRam - Health Regen.yml b/html/changelogs/MagmaRam - Health Regen.yml
new file mode 100644
index 0000000000..c0cab4f13f
--- /dev/null
+++ b/html/changelogs/MagmaRam - Health Regen.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: MagmaRam
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Nerfed health regeneration, especially on bruises."
diff --git a/html/changelogs/chao-chainsawsinmyeyes.yml b/html/changelogs/chao-chainsawsinmyeyes.yml
new file mode 100644
index 0000000000..be5cc12789
--- /dev/null
+++ b/html/changelogs/chao-chainsawsinmyeyes.yml
@@ -0,0 +1,36 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Chaoko99
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - tweak: "Added some shading to the trashpile sprrites.
diff --git a/html/changelogs/chaoko99-mapmergepy.yml b/html/changelogs/chaoko99-mapmergepy.yml
new file mode 100644
index 0000000000..32e38564aa
--- /dev/null
+++ b/html/changelogs/chaoko99-mapmergepy.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: chaoko99
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Added mapmerge PY to the \tools directory of the Vorestation repository."
+
diff --git a/html/changelogs/cirra-Radiation.yml b/html/changelogs/cirra-Radiation.yml
new file mode 100644
index 0000000000..53038532cd
--- /dev/null
+++ b/html/changelogs/cirra-Radiation.yml
@@ -0,0 +1,37 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Cirra
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Added a unified radiation system. Radiation is lessened by obstacles, and distance."
+ - rscadd: "Added a geiger counter for measuring radiation levels, which can be found in certain vending machines and radiation closets."
diff --git a/icons/obj/ammo.dmi b/icons/obj/ammo.dmi
index 0e0959705e..dcdb20e070 100644
Binary files a/icons/obj/ammo.dmi and b/icons/obj/ammo.dmi differ
diff --git a/icons/obj/device.dmi b/icons/obj/device.dmi
index 336f8dfe9c..1198dc0314 100644
Binary files a/icons/obj/device.dmi and b/icons/obj/device.dmi differ
diff --git a/icons/obj/device_alt.dmi b/icons/obj/device_alt.dmi
index fed11b212b..1a256c07b0 100644
Binary files a/icons/obj/device_alt.dmi and b/icons/obj/device_alt.dmi differ
diff --git a/icons/obj/gun.dmi b/icons/obj/gun.dmi
index ba02b5a324..75f5005aa5 100644
Binary files a/icons/obj/gun.dmi and b/icons/obj/gun.dmi differ
diff --git a/icons/obj/trash_piles.dmi b/icons/obj/trash_piles.dmi
new file mode 100644
index 0000000000..a8eea0b14e
Binary files /dev/null and b/icons/obj/trash_piles.dmi differ
diff --git a/icons/obj/vending_vr.dmi b/icons/obj/vending_vr.dmi
index 1feb5f36c5..e7f1f48d32 100644
Binary files a/icons/obj/vending_vr.dmi and b/icons/obj/vending_vr.dmi differ
diff --git a/icons/vore/custom_items_vr.dmi b/icons/vore/custom_items_vr.dmi
index 1131ce4a1a..dcf96c8d47 100644
Binary files a/icons/vore/custom_items_vr.dmi and b/icons/vore/custom_items_vr.dmi differ
diff --git a/maps/RandomZLevels/carpfarm.dmm b/maps/RandomZLevels/carpfarm.dmm
index 612ac1f7e3..8d32d655b9 100644
--- a/maps/RandomZLevels/carpfarm.dmm
+++ b/maps/RandomZLevels/carpfarm.dmm
@@ -80,7 +80,7 @@
"bB" = (/obj/machinery/vending/cigarette{prices = list()},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base)
"bC" = (/obj/machinery/vending/dinnerware,/obj/machinery/light{dir = 1},/obj/effect/floor_decal/corner/white/diagonal,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base)
"bD" = (/obj/structure/closet/crate/secure/weapon,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/mosin,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base)
-"bE" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base)
+"bE" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/awaymission/carpfarm/base)
"bF" = (/obj/structure/dispenser/oxygen,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base)
"bG" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base)
"bH" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/carpfarm/base)
diff --git a/maps/RandomZLevels/listeningpost.dmm b/maps/RandomZLevels/listeningpost.dmm
index 287066256e..5bd0a74608 100644
--- a/maps/RandomZLevels/listeningpost.dmm
+++ b/maps/RandomZLevels/listeningpost.dmm
@@ -50,7 +50,7 @@
"aX" = (/obj/machinery/vending/snack,/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
"aY" = (/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/mineral,/area/mine/unexplored)
"aZ" = (/obj/structure/disposalpipe/segment,/turf/simulated/mineral,/area/mine/unexplored)
-"ba" = (/obj/structure/closet,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/silencer,/obj/item/ammo_magazine/mc9mm,/obj/item/ammo_magazine/mc9mm,/obj/item/weapon/paper/listneningpost/reciept,/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
+"ba" = (/obj/structure/closet,/obj/item/weapon/gun/projectile/pistol,/obj/item/weapon/silencer,/obj/item/ammo_magazine/m9mm,/obj/item/ammo_magazine/m9mm,/obj/item/weapon/paper/listneningpost/reciept,/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
"bb" = (/obj/structure/filingcabinet,/obj/item/weapon/paper/listneningpost/mission,/obj/item/weapon/paper/listneningpost/year2558/april,/obj/item/weapon/paper/listneningpost/year2558/may,/obj/item/weapon/paper/listneningpost/year2558/june,/obj/item/weapon/paper/listneningpost/year2558/july,/obj/item/weapon/paper/listneningpost/year2558/august,/obj/item/weapon/paper/listneningpost/year2558/september,/obj/item/weapon/paper/listneningpost/year2558/october,/obj/item/weapon/paper/listneningpost/year2558/november,/obj/item/weapon/paper/listneningpost/year2558/december,/obj/item/weapon/paper/listneningpost/year2559/january,/obj/item/weapon/paper/listneningpost/year2559/february,/obj/item/weapon/paper/listneningpost/year2559/march,/obj/item/weapon/paper/listneningpost/year2559/april,/obj/item/weapon/paper/listneningpost/year2559/may,/obj/item/weapon/paper/listneningpost/year2559/june,/obj/item/weapon/paper/listneningpost/year2559/july,/obj/item/weapon/paper/listneningpost/year2559/august,/obj/item/weapon/paper/listneningpost/year2559/september,/obj/item/weapon/paper/listneningpost/year2559/october,/obj/item/weapon/paper/listneningpost/year2559/november,/obj/item/weapon/paper/listneningpost/year2559/december,/obj/item/weapon/paper/listneningpost/year2560/january,/obj/item/weapon/paper/listneningpost/year2560/february,/obj/item/weapon/paper/listneningpost/year2560/march,/obj/item/weapon/paper/listneningpost/year2560/april,/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
"bc" = (/obj/effect/landmark/loot_spawn{live_cargo = 0; name = "loot spawner (no live cargo)"},/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
"bd" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/awaymission/listeningpost)
diff --git a/maps/RandomZLevels/snowfield.dmm b/maps/RandomZLevels/snowfield.dmm
index ddff964834..6c13854f49 100644
--- a/maps/RandomZLevels/snowfield.dmm
+++ b/maps/RandomZLevels/snowfield.dmm
@@ -204,7 +204,7 @@
"dV" = (/obj/machinery/power/port_gen/pacman,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base)
"dW" = (/obj/machinery/door/airlock/highsecurity{locked = 1; name = "Secure Armoury Section"; req_access = list(150)},/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base)
"dX" = (/obj/structure/closet,/obj/item/clothing/under/soviet,/obj/item/clothing/shoes/boots/jackboots,/obj/item/clothing/head/ushanka,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base)
-"dY" = (/obj/structure/closet/crate/secure/gear,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/obj/item/ammo_magazine/clip/a762,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base)
+"dY" = (/obj/structure/closet/crate/secure/gear,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/obj/item/ammo_magazine/clip/c762,/turf/simulated/floor/tiled/dark,/area/awaymission/snowfield/base)
"dZ" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/closet/crate,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base)
"ea" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/space/syndicate,/obj/item/clothing/head/helmet/space/syndicate,/obj/structure/closet/crate/internals,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base)
"eb" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/hgpirate,/obj/item/clothing/head/hgpiratecap,/obj/structure/closet/crate/secure/gear,/turf/simulated/floor/tiled/neutral,/area/awaymission/snowfield/base)
diff --git a/maps/RandomZLevels/zresearchlabs.dmm b/maps/RandomZLevels/zresearchlabs.dmm
index bf373d621e..90faea3d06 100644
--- a/maps/RandomZLevels/zresearchlabs.dmm
+++ b/maps/RandomZLevels/zresearchlabs.dmm
@@ -287,7 +287,7 @@
"fA" = (/obj/machinery/chem_dispenser,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
"fB" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
"fC" = (/obj/machinery/sleep_console,/obj/machinery/camera{c_tag = "North Solars"; dir = 8; network = "Tcomsat"},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
-"fD" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/closet/crate/secure/weapon,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/ammo_magazine/c45,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
+"fD" = (/obj/machinery/power/apc{dir = 8; environ = 0; equipment = 0; lighting = 0; locked = 0; name = "Worn-out APC"; pixel_x = -24; pixel_y = 0},/obj/structure/closet/crate/secure/weapon,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/item/ammo_magazine/m45,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fE" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fF" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 2},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fG" = (/obj/machinery/door_control{id = "miningdorm2"; name = "Gateway Door Control"; normaldoorcontrol = 1; pixel_x = 25; pixel_y = 0; req_access_txt = "0"; specialfunctions = 4},/obj/structure/table/reinforced,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
@@ -302,7 +302,7 @@
"fP" = (/obj/effect/landmark/corpse/doctor{mobname = "Amando Cruz"; name = "Amando Cruz"},/obj/effect/decal/cleanable/blood/splatter,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
"fQ" = (/obj/structure/stool/bed/chair/office/light{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
"fR" = (/obj/structure/table/reinforced,/obj/item/weapon/paper{icon_state = "paper_words"; info = "As per your request, Director, I have documented my findings on the odd mutation growing from Commander Karl's arm. First of all, in this state he cannot go on any kind of missions. The alien flesh is incredibly painful to him and he can barely hold a rifle properly, no less fit into a tight hardsuit. Early analysis of the tissue shows a DNA structure unlike anything I've seen in my fourty-some odd years of medical practice. It's neither human nor Soghun, I can tell you that much. It has a quality you would expect from the lining of internal organs and is incredibly sensitive. Yet, it is also very resilient. It took me about five tries before I was able to stick a syringe through it. And even then I got just enough blood for a test, not a drop more. The wound healed quickly afterwards, as well. Whatever you boys in science are doing, you've stumbled across something, that's for sure."; name = "Unfinished Form"},/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/militarydivision)
-"fS" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/a357,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
+"fS" = (/obj/structure/closet/crate/secure/weapon,/obj/item/ammo_magazine/m357,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fT" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fU" = (/obj/machinery/door/window{dir = 8},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
"fV" = (/obj/machinery/atmospherics/unary/vent_pump,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/awaymission/labs/militarydivision)
@@ -434,7 +434,7 @@
"ir" = (/obj/structure/table/woodentable,/obj/item/weapon/melee/classic_baton,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/militarydivision)
"is" = (/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision)
"it" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
-"iu" = (/obj/item/ammo_casing/c9mm{pixel_x = 25; pixel_y = -60},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
+"iu" = (/obj/item/ammo_casing/a9mm{pixel_x = 25; pixel_y = -60},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"iv" = (/obj/structure/stool/bed/chair/comfy/beige,/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"iw" = (/obj/structure/bookcase,/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"ix" = (/obj/machinery/camera{c_tag = "Dormitory South"; c_tag_order = 999; dir = 4},/turf/simulated/floor,/area/awaymission/labs/command)
@@ -460,7 +460,7 @@
"iR" = (/obj/structure/table/woodentable,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision)
"iS" = (/obj/structure/stool/bed/chair/office/dark{dir = 8},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision)
"iT" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/awaymission/labs/militarydivision)
-"iU" = (/obj/item/ammo_casing/c9mm{pixel_x = 3; pixel_y = -22},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
+"iU" = (/obj/item/ammo_casing/a9mm{pixel_x = 3; pixel_y = -22},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"iV" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/labs/command)
"iW" = (/obj/effect/landmark{name = "awaystart"},/turf/simulated/floor,/area/awaymission/labs/command)
"iX" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/awaymission/labs/command)
@@ -486,8 +486,8 @@
"jr" = (/obj/machinery/camera{c_tag = "Central Hallway South-West"; dir = 8},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = ""},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/awaymission/labs/militarydivision)
"js" = (/obj/structure/table/standard,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/labs/militarydivision)
"jt" = (/obj/structure/table/standard,/obj/item/weapon/paper{icon_state = "paper_words"; info = "We got back from another ship-out today. Those idiots on the NSV Icarus somehow managed to land themselves in the middle of a fleet of pirates. Frigates were downed easily, and they boarded with the intent to take the artillery cannon. Thankfully, those implants the doctors gave us worked like a charm. I think they made me sick, though, I've got this terrible rash on my arm that is a pain to scratch. Making my skin look all pink and nasty. Gonna go see Doc Brown in the monring, I need some rest after all we've been through."; name = "Journal Page"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/awaymission/labs/militarydivision)
-"ju" = (/obj/item/ammo_casing/c9mm{pixel_y = -8},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
-"jv" = (/obj/item/ammo_casing/c9mm{pixel_x = -28; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
+"ju" = (/obj/item/ammo_casing/a9mm{pixel_y = -8},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
+"jv" = (/obj/item/ammo_casing/a9mm{pixel_x = -28; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"jw" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/hos,/turf/simulated/floor,/area/awaymission/labs/militarydivision)
"jx" = (/turf/simulated/floor{icon_state = "green"; dir = 8},/area/awaymission/labs/command)
"jy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = ""},/turf/simulated/floor,/area/awaymission/labs/command)
@@ -856,7 +856,7 @@
"qx" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian)
"qy" = (/obj/structure/barricade/wooden,/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian)
"qz" = (/obj/machinery/door/airlock/glass{name = "Mess Hall"},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian)
-"qA" = (/obj/effect/decal/cleanable/blood,/obj/item/ammo_casing/c9mm{pixel_x = 0; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/command)
+"qA" = (/obj/effect/decal/cleanable/blood,/obj/item/ammo_casing/a9mm{pixel_x = 0; pixel_y = -4},/turf/simulated/floor,/area/awaymission/labs/command)
"qB" = (/obj/structure/stool/bed/chair/comfy/brown{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command)
"qC" = (/obj/structure/table/woodentable,/obj/item/weapon/paper{icon_state = "paper_words"; info = "
Research Weekly Report
As of this day (Dec 26, 2556), the research division of Outpost Zeta has made signifcant strides in the development of safe-to-use nanoaugmentations based upon Soghun genetic structure. Though the unfortunate death of Commander Karl was a result of an earlier, more potent batch, his passing has brought great wisdom to our division and through his dead, infected tissue, we are very close to isolating the gene responsible for the fatal abnormal mutation.
Should current schedules and effort remain steady, we are expected to produce a far safer serum in no less than seven days. All data has been saved and uploaded to the main company development server via the nearby telecommunications satellite.
In our firearms department, development of a weapon that fires x-ray beams has proved successful. The weapon is not to be confused with a laser weapon - lasers are primitive tools that simply burn flesh. This weapon is capable of firing toxic beams that poison and harm the target's biological functions, much more painful than a laser burn. Similarly, even after the firefight is over with, or in the event of a retreat, the harmful toxins will remain in the affected individual's bloodstream and cause great discomfort. Your signature and stamp will be required for field tests with the emergency response commandos, Overseer.
End report.
-Doctor Jenkins"; name = "Report"},/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command)
"qD" = (/obj/effect/decal/cleanable/blood/tracks,/turf/simulated/floor{icon_state = "wood"},/area/awaymission/labs/command)
@@ -866,7 +866,7 @@
"qH" = (/turf/simulated/floor{tag = "icon-vault"; icon_state = "vault"},/area/awaymission/labs/command)
"qI" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = ""},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/awaymission/labs/command)
"qJ" = (/obj/machinery/power/apc{dir = 4; name = "Worn-out APC"; pixel_x = 24; pixel_y = 0},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{tag = "icon-vault (EAST)"; icon_state = "vault"; dir = 4},/area/awaymission/labs/command)
-"qK" = (/obj/item/ammo_casing/c9mm{pixel_x = 1; pixel_y = 0},/turf/simulated/floor,/area/awaymission/labs/command)
+"qK" = (/obj/item/ammo_casing/a9mm{pixel_x = 1; pixel_y = 0},/turf/simulated/floor,/area/awaymission/labs/command)
"qL" = (/obj/effect/decal/cleanable/blood/gibs/body,/turf/unsimulated/desert,/area/awaymission/labs/cave)
"qM" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian)
"qN" = (/obj/structure/stool/bed/chair,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "bar"},/area/awaymission/labs/civilian)
@@ -1047,8 +1047,8 @@
"ug" = (/obj/machinery/power/apc{cell_type = 5000; dir = 1; name = "Virology APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security)
"uh" = (/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security)
"ui" = (/obj/structure/closet/secure_closet/warden,/obj/effect/decal/cleanable/cobweb2,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security)
-"uj" = (/obj/structure/rack,/obj/item/ammo_magazine/c45,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security)
-"uk" = (/obj/structure/rack,/obj/item/ammo_magazine/c45,/obj/item/weapon/gun/projectile/silenced/sc_silenced{desc = "A sidearm commonly favored by terrestrial security forces."; icon_state = "g115 Pistol"; name = "Pistol"; silenced = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security)
+"uj" = (/obj/structure/rack,/obj/item/ammo_magazine/m45,/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security)
+"uk" = (/obj/structure/rack,/obj/item/ammo_magazine/m45,/obj/item/weapon/gun/projectile/silenced/sc_silenced{desc = "A sidearm commonly favored by terrestrial security forces."; icon_state = "g115 Pistol"; name = "Pistol"; silenced = 0},/turf/simulated/floor{tag = "icon-vault (WEST)"; icon_state = "vault"; dir = 8},/area/awaymission/labs/security)
"ul" = (/obj/structure/table/standard,/obj/item/weapon/storage/backpack/satchel/med,/turf/simulated/floor{icon_state = "white"},/area/awaymission/labs/medical)
"um" = (/obj/machinery/computer/prisoner,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security)
"un" = (/obj/machinery/computer/security,/turf/simulated/floor{icon_state = "showroomfloor"},/area/awaymission/labs/security)
diff --git a/maps/northern_star/polaris-1.dmm b/maps/northern_star/polaris-1.dmm
index 2b58fe7175..faa4589659 100644
--- a/maps/northern_star/polaris-1.dmm
+++ b/maps/northern_star/polaris-1.dmm
@@ -2311,7 +2311,7 @@
"aSw" = (/obj/structure/bed/chair{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aSx" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/security)
"aSy" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/light/small{dir = 8},/turf/simulated/floor,/area/maintenance/security_port)
-"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"aSz" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"aSA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_one)
"aSB" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
"aSC" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/hallway/primary/central_one)
@@ -5255,7 +5255,7 @@
"bXc" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXd" = (/obj/effect/floor_decal/corner/pink{dir = 10},/obj/structure/table/glass,/obj/item/weapon/paper_bin,/obj/item/weapon/clipboard,/obj/item/weapon/pen,/turf/simulated/floor/tiled/white,/area/medical/patient_b)
"bXe" = (/obj/machinery/computer/med_data/laptop,/obj/structure/table/glass,/obj/effect/floor_decal/corner/pink/full{dir = 4},/obj/machinery/light,/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 21},/turf/simulated/floor/tiled/white,/area/medical/patient_b)
-"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range)
+"bXf" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range)
"bXg" = (/obj/item/weapon/storage/box/lights/mixed,/obj/item/device/flashlight,/obj/item/device/flashlight,/obj/structure/table/steel,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/obj/item/device/radio{frequency = 1487; icon_state = "med_walkietalkie"; name = "Medbay Emergency Radio Link"},/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXh" = (/obj/structure/closet/crate{icon_state = "crateopen"; name = "Grenade Crate"; opened = 1},/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/weapon/grenade/chem_grenade,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/igniter,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/obj/item/device/assembly/timer,/turf/simulated/floor/tiled/dark,/area/medical/biostorage)
"bXi" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; canhear_range = 5; dir = 8; frequency = 1487; icon_state = "intercom"; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = -21; pixel_y = 0},/turf/simulated/floor/carpet/blue,/area/medical/psych)
@@ -6167,7 +6167,7 @@
"coE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/machinery/alarm{dir = 1; pixel_y = -22},/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 26},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_three)
"coF" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"coG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/crew_quarters/sleep/elevator)
-"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical)
+"coH" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/turf/simulated/floor/tiled/dark,/area/security/tactical)
"coI" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coJ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/medbay_aft)
"coK" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/medbay_aft)
diff --git a/maps/northern_star/polaris-2.dmm b/maps/northern_star/polaris-2.dmm
index 3f14b89489..edead8f198 100644
--- a/maps/northern_star/polaris-2.dmm
+++ b/maps/northern_star/polaris-2.dmm
@@ -859,7 +859,7 @@
"aqA" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqC" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"aqD" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqF" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqG" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -869,11 +869,11 @@
"aqK" = (/obj/machinery/door/blast/regular{icon_state = "pdoor1"; id = "ASSAULT"; name = "Assault Weapon Storage"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqL" = (/obj/structure/sign/securearea,/turf/simulated/shuttle/wall/dark/hard_corner,/area/centcom/specops)
"aqM" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"aqN" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqO" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqP" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"aqQ" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"aqR" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqS" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
"aqT" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"aqU" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -896,7 +896,7 @@
"arl" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arm" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arn" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"aro" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/m556saw,/obj/item/ammo_magazine/m556saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arp" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arq" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arr" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -953,7 +953,7 @@
"asq" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asr" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ass" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"ast" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asu" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asv" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asw" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1179,7 +1179,7 @@
"awI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awJ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awK" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"awL" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/m9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awM" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/syndicate_mothership)
"awN" = (/obj/machinery/door/airlock/centcom{name = "Bathroom"; opacity = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
"awO" = (/obj/machinery/shower{dir = 1},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/syndicate_mothership)
@@ -1207,8 +1207,8 @@
"axk" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axl" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axm" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
+"axn" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
+"axo" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"axp" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"axq" = (/obj/machinery/vending/boozeomat,/turf/simulated/shuttle/wall/dark,/area/shuttle/administration/centcom)
"axr" = (/obj/machinery/vending/coffee,/turf/simulated/shuttle/floor/red,/area/shuttle/administration/centcom)
diff --git a/maps/tether/tether-01-surface.dmm b/maps/tether/tether-01-surface.dmm
index efed994990..564f67fe31 100644
--- a/maps/tether/tether-01-surface.dmm
+++ b/maps/tether/tether-01-surface.dmm
@@ -30,7 +30,7 @@
"aaD" = (/obj/machinery/conveyor{dir = 1; id = "mining_inbound"},/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
"aaE" = (/obj/random/maintenance/cargo,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
"aaF" = (/obj/random/contraband,/obj/random/maintenance/cargo,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
-"aaG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/junk,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum{desc = "TASTE DEMOCRACY"; name = "Managed Democra-cider"},/obj/random_multi/single_item/teleport,/obj/random/contraband,/obj/random/cigarettes,/turf/simulated/floor/wood,/area/vacant/vacant_site2)
+"aaG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/junk,/obj/item/weapon/reagent_containers/food/drinks/bottle/rum{desc = "TASTE DEMOCRACY"; name = "Managed Democra-cider"},/obj/random/contraband,/obj/random/cigarettes,/turf/simulated/floor/wood,/area/vacant/vacant_site2)
"aaH" = (/obj/machinery/mineral/output,/obj/machinery/conveyor{dir = 10; id = "mining_interior"},/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
"aaI" = (/obj/machinery/conveyor{dir = 4; id = "mining_interior"},/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
"aaJ" = (/obj/machinery/mineral/input,/obj/machinery/conveyor{dir = 4; id = "mining_interior"},/turf/simulated/floor/plating,/area/tether/surfacebase/mining_main/refinery)
@@ -62,7 +62,7 @@
"abj" = (/obj/machinery/mineral/stacking_unit_console{density = 0; layer = 3.3; pixel_y = 30},/turf/simulated/floor/tiled/steel_grid,/area/tether/surfacebase/mining_main/refinery)
"abk" = (/obj/effect/floor_decal/industrial/loading,/obj/machinery/light_switch{pixel_x = 25},/obj/structure/closet/crate,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/refinery)
"abl" = (/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
-"abm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/drinkbottle,/obj/random/medical/lite,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random_multi/single_item/netgun,/turf/simulated/floor/wood,/area/vacant/vacant_site2)
+"abm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/random/trash_pile,/turf/simulated/floor/wood,/area/vacant/vacant_site2)
"abn" = (/turf/simulated/wall,/area/tether/surfacebase/mining_main/storage)
"abo" = (/obj/structure/closet/firecloset,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/mining_main/storage)
"abp" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
@@ -101,7 +101,7 @@
"abW" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"abX" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"abY" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
-"abZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
+"abZ" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"aca" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/alarm{pixel_y = 22},/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"acb" = (/obj/machinery/light{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/item/device/radio/intercom{pixel_y = 24; req_access = list()},/obj/machinery/washing_machine,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"acc" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
@@ -254,7 +254,7 @@
"aeT" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Mining Subgrid"; name_tag = "Mining Subgrid"},/obj/structure/cable/green{icon_state = "0-4"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor,/area/maintenance/substation/mining)
"aeU" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/substation/mining)
"aeV" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/alarm{pixel_y = 22},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/substation/mining)
-"aeW" = (/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/substation/mining)
+"aeW" = (/obj/machinery/door/airlock/engineering{name = "Mining Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/substation/mining)
"aeX" = (/obj/structure/catwalk,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"aeY" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/vending/cigarette{name = "Cigarette machine"; prices = list(); products = list(/obj/item/weapon/storage/fancy/cigarettes = 10, /obj/item/weapon/storage/box/matches = 10, /obj/item/weapon/flame/lighter/zippo = 4, /obj/item/clothing/mask/smokable/cigarette/cigar/havana = 2)},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aeZ" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
@@ -304,7 +304,7 @@
"afR" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Mining Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/mining)
"afS" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/camera/network/engineering{dir = 1},/turf/simulated/floor,/area/maintenance/substation/mining)
"afT" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/substation/mining)
-"afU" = (/obj/machinery/door/airlock/engineering{name = "Science Substation"; req_one_access = list(11,24,47)},/obj/machinery/door/firedoor/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor,/area/maintenance/substation/mining)
+"afU" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/door/airlock/engineering{name = "Mining Substation"; req_one_access = list(11,24,47)},/turf/simulated/floor,/area/maintenance/substation/mining)
"afV" = (/obj/structure/catwalk,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"afW" = (/obj/structure/railing{dir = 8},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"afX" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/structure/bed/padded,/obj/item/weapon/bedsheet/mime,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
@@ -337,7 +337,7 @@
"agy" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 6},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/lobby)
"agz" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"agA" = (/obj/effect/floor_decal/techfloor{dir = 5},/obj/effect/floor_decal/techfloor/hole/right{dir = 1},/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
-"agB" = (/obj/structure/closet,/obj/random/action_figure,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/mining)
+"agB" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"agC" = (/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/machinery/light/small{dir = 1},/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"agD" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/cyan,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/vending/wallmed_airlock{pixel_x = -32},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/storage)
"agE" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/machinery/newscaster{pixel_x = -30},/turf/simulated/floor/tiled,/area/storage/primary)
@@ -349,7 +349,7 @@
"agK" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/mining_main/lobby)
"agL" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/floor_decal/techfloor/hole/right{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"agM" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
-"agN" = (/obj/random_multi/single_item/teleport,/obj/random/cigarettes,/obj/random/toy,/obj/random/tech_supply,/obj/random/junk,/obj/item/weapon/flame/lighter/zippo,/turf/simulated/floor/plating,/area/maintenance/lower/mining)
+"agN" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/mining)
"agO" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"agP" = (/turf/simulated/wall,/area/storage/surface_eva)
"agQ" = (/obj/structure/table/standard,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/random/tech_supply,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/light_switch{pixel_x = 12; pixel_y = -24},/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/turf/simulated/floor/tiled,/area/storage/primary)
@@ -373,7 +373,7 @@
"ahi" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/turf/simulated/floor/tiled/steel_grid,/area/storage/primary)
"ahj" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/storage/primary)
"ahk" = (/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass{name = "Primary Tool Storage"},/turf/simulated/floor/tiled/steel_grid,/area/storage/primary)
-"ahl" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
+"ahl" = (/obj/random/cigarettes,/obj/random/toy,/obj/random/tech_supply,/obj/random/junk,/obj/item/weapon/flame/lighter/zippo,/turf/simulated/floor/plating,/area/maintenance/lower/mining)
"ahm" = (/obj/effect/floor_decal/techfloor,/obj/effect/decal/cleanable/dirt,/obj/structure/table/steel,/obj/random/drinkbottle,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"ahn" = (/obj/effect/floor_decal/corner_techfloor_grid,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aho" = (/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
@@ -411,7 +411,7 @@
"ahU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
"ahV" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/obj/structure/closet/firecloset,/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
"ahW" = (/turf/simulated/wall,/area/tether/surfacebase/north_stairs_one)
-"ahX" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/railing,/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"ahX" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/railing,/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"ahY" = (/obj/structure/sign/directions/cargo{dir = 4},/turf/simulated/wall,/area/tether/surfacebase/north_stairs_one)
"ahZ" = (/obj/structure/sign/directions/evac{dir = 4},/turf/simulated/wall,/area/tether/surfacebase/north_stairs_one)
"aia" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
@@ -686,9 +686,9 @@
"anj" = (/obj/machinery/door/airlock/glass_medical{name = "First-Aid Station"; req_one_access = newlist()},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/tether/surfacebase/medical/first_aid_west)
"ank" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
"anl" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
-"anm" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"anm" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"ann" = (/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
-"ano" = (/obj/structure/railing{dir = 4},/obj/structure/railing{dir = 1},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
+"ano" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"anp" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/computer/guestpass{dir = 4; pixel_x = -28; pixel_y = 0},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"anq" = (/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/grass,/area/tether/surfacebase/atrium_one)
"anr" = (/obj/structure/flora/ausbushes/ywflowers,/obj/structure/flora/ausbushes/ywflowers,/turf/simulated/floor/grass,/area/tether/surfacebase/atrium_one)
@@ -718,7 +718,8 @@
"anP" = (/obj/structure/disposalpipe/segment,/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"anQ" = (/obj/structure/sign/directions/evac,/turf/simulated/wall,/area/crew_quarters/locker)
"anR" = (/turf/simulated/wall,/area/crew_quarters/locker)
-"anS" = (/obj/effect/floor_decal/techfloor,/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"anS" = (/obj/effect/floor_decal/techfloor{dir = 5},/obj/structure/closet/firecloset,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
+"anT" = (/turf/simulated/wall,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"anU" = (/obj/structure/table/standard,/obj/machinery/computer/atmoscontrol/laptop{monitored_alarm_ids = list("isolation_one","isolation_two"); req_one_access = list(47,24,11)},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab)
"anV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one)
"anW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/rnd/anomaly_lab/containment_one)
@@ -787,14 +788,14 @@
"aph" = (/obj/machinery/light{dir = 4},/obj/item/device/suit_cooling_unit,/obj/structure/table/rack,/turf/simulated/floor/tiled,/area/rnd/xenoarch_storage)
"api" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
"apj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/hallway/lower/first_west)
-"apk" = (/obj/effect/floor_decal/techfloor{dir = 5},/obj/structure/closet/firecloset,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random_multi/single_item/teleport,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
-"apl" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
+"apk" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
+"apl" = (/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
"apm" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"apn" = (/obj/structure/railing{dir = 8},/obj/structure/railing{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/universal,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
-"apo" = (/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random_multi/single_item/netgun,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
+"apo" = (/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"app" = (/obj/structure/railing{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"apq" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
-"apr" = (/obj/structure/table/rack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
+"apr" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aps" = (/obj/structure/railing{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 1},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable{icon_state = "16-0"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"apt" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"apu" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/machinery/status_display{pixel_x = 32; pixel_y = 0},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
@@ -828,7 +829,7 @@
"apW" = (/turf/simulated/wall,/area/maintenance/substation/civ_west)
"apX" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"apY" = (/obj/structure/railing{dir = 8},/obj/machinery/atmospherics/binary/passive_gate{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
-"apZ" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random_multi/single_item/teleport,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
+"apZ" = (/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aqa" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{dir = 4; icon_state = "extinguisher_closed"; pixel_x = -30; tag = "icon-extinguisher_closed (EAST)"},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"aqb" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/machinery/computer/guestpass{dir = 8; pixel_x = 25},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"aqc" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor/tiled,/area/crew_quarters/locker)
@@ -908,8 +909,8 @@
"ary" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram)
"arz" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram)
"arA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/tether/surfacebase/tram)
-"arB" = (/turf/simulated/floor/maglev,/area/shuttle/escape/station)
-"arC" = (/turf/simulated/floor/tiled/techfloor/grid,/area/shuttle/escape/station)
+"arB" = (/turf/simulated/floor/maglev,/area/shuttle/escape/station{base_turf = /turf/simulated/floor/tiled/techfloor/grid})
+"arC" = (/turf/simulated/floor/tiled/techfloor/grid,/area/shuttle/escape/station{base_turf = /turf/simulated/floor/tiled/techfloor/grid})
"arD" = (/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},/obj/machinery/portable_atmospherics/canister/phoron,/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled/monotile,/area/rnd/anomaly_lab)
"arE" = (/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},/obj/machinery/portable_atmospherics/canister/carbon_dioxide,/turf/simulated/floor/tiled/monotile,/area/rnd/anomaly_lab)
"arF" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/corner/white{dir = 9},/obj/effect/floor_decal/corner/white{dir = 6},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab)
@@ -1080,7 +1081,7 @@
"auO" = (/obj/structure/table/rack,/obj/item/clothing/suit/bio_suit/anomaly,/obj/item/clothing/head/bio_hood/anomaly,/obj/item/clothing/mask/breath,/obj/item/clothing/glasses/science,/obj/item/clothing/gloves/sterile/latex,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/tiled,/area/rnd/anomaly_lab)
"auP" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/rnd/hallway)
"auQ" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/rnd/hallway)
-"auR" = (/obj/structure/closet/crate,/obj/random/action_figure,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
+"auR" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"auS" = (/obj/effect/floor_decal/rust,/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/lower/solars)
"auT" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/cable{icon_state = "1-8"},/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/lower/solars)
"auU" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/mauve/border{dir = 9},/obj/machinery/camera/network/research{dir = 4},/obj/structure/closet/secure_closet/hydroponics{req_access = list(47)},/turf/simulated/floor/tiled,/area/rnd/xenobiology/xenoflora)
@@ -1094,7 +1095,7 @@
"avc" = (/obj/machinery/door/window/brigdoor/southright{req_access = list(55); req_one_access = list(47)},/turf/simulated/floor/tiled,/area/rnd/xenobiology/xenoflora/lab_atmos)
"avd" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor/tiled,/area/rnd/xenobiology/xenoflora/lab_atmos)
"ave" = (/obj/structure/window/reinforced,/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/industrial/danger{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/machinery/status_display{pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled,/area/rnd/xenobiology/xenoflora/lab_atmos)
-"avf" = (/obj/effect/floor_decal/rust,/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
+"avf" = (/obj/structure/catwalk,/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"avg" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"avh" = (/turf/simulated/floor/plating,/area/maintenance/lower/xenoflora)
"avi" = (/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
@@ -1151,7 +1152,7 @@
"awh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"awi" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/effect/floor_decal/industrial/danger{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_one)
"awj" = (/obj/machinery/status_display{pixel_y = 30},/obj/machinery/vending/fitness,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival)
-"awk" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival)
+"awk" = (/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/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"awl" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival)
"awm" = (/obj/machinery/camera/network/civilian,/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival)
"awn" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/lightgrey/border{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/locker/laundry_arrival)
@@ -1455,7 +1456,7 @@
"aBZ" = (/obj/structure/catwalk,/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/random/junk,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aCa" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-2"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"aCb" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
-"aCc" = (/obj/structure/catwalk,/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/random/junk,/obj/random/junk,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"aCc" = (/obj/structure/railing{dir = 8},/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aCd" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
"aCe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/tram)
"aCf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tether/surfacebase/tram)
@@ -1486,7 +1487,7 @@
"aCE" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/emergency_storage/rnd)
"aCF" = (/obj/structure/table/standard,/obj/item/device/t_scanner,/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/emergency_storage/rnd)
"aCG" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 6},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"aCH" = (/obj/structure/railing{dir = 8},/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"aCH" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/trash_pile,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aCI" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"aCJ" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"aCK" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
@@ -1507,7 +1508,7 @@
"aCZ" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/obj/machinery/requests_console{department = "Science"; departmentType = 2; name = "Science Requests Console"; pixel_x = 30; pixel_y = 0},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/rnd/hallway)
"aDa" = (/obj/effect/decal/cleanable/blood,/obj/item/clothing/shoes/athletic{desc = "Assault"},/obj/item/clothing/under/pants{desc = "Overdose"},/obj/item/weapon/material/twohanded/baseballbat{desc = "Decadence"; health = 1989},/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/atmos)
"aDb" = (/obj/effect/decal/cleanable/blood,/obj/item/device/tape{desc = "No Talk"},/obj/item/clothing/suit/varsity/brown{desc = "Showdown"},/obj/item/clothing/head/richard,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/atmos)
-"aDc" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/obj/random/junk,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"aDc" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aDd" = (/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"aDe" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/random/junk,/obj/random/junk,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aDf" = (/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
@@ -1603,7 +1604,7 @@
"aER" = (/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techmaint,/area/maintenance/lower/bar)
"aES" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"aET" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/obj/random/junk,/obj/random/junk,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
-"aEU" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"aEU" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining_eva)
"aEV" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/cigarettes,/obj/random/junk,/obj/random/junk,/obj/random/tool,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aEW" = (/obj/effect/floor_decal/rust,/obj/effect/step_trigger/teleporter/to_solars,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/tether/surfacebase/outside/outside1)
"aEX" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/tether/surfacebase/outside/outside1)
@@ -1726,9 +1727,9 @@
"aHk" = (/obj/structure/ladder/up,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/lower/research)
"aHl" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/obj/random/junk,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aHm" = (/turf/simulated/mineral,/area/rnd/external)
-"aHn" = (/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/rnd/external)
-"aHo" = (/obj/machinery/camera/network/research{dir = 2},/obj/machinery/floodlight,/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/rnd/external)
-"aHp" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
+"aHn" = (/turf/simulated/wall,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"aHo" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"aHp" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aHq" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/industrial/warning,/obj/random/junk,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
"aHr" = (/turf/simulated/wall/r_wall,/area/engineering/atmos/processing)
"aHs" = (/obj/machinery/door/airlock/maintenance/common{name = "Mining Maintenance Access"},/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/north_stairs_one)
@@ -1880,7 +1881,7 @@
"aKi" = (/obj/structure/cable{icon_state = "2-8"},/obj/structure/catwalk,/obj/machinery/alarm{pixel_y = 22},/obj/structure/cable{icon_state = "2-4"},/turf/simulated/floor,/area/maintenance/lower/north)
"aKj" = (/obj/structure/catwalk,/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aKk" = (/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/random/cigarettes,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/trash_pit)
-"aKl" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/machinery/light/small{brightness_color = "#DA0205"; brightness_power = 1; brightness_range = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
+"aKl" = (/obj/structure/railing{dir = 4},/obj/structure/railing,/obj/random/trash_pile,/turf/simulated/floor/tiled/techmaint,/area/maintenance/lower/bar)
"aKm" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable{icon_state = "0-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aKn" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/camera/network/medbay{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aKo" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
@@ -1925,7 +1926,7 @@
"aLb" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aLc" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aLd" = (/obj/effect/decal/cleanable/dirt,/obj/structure/cable{icon_state = "1-2"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
-"aLe" = (/obj/structure/railing{dir = 4},/obj/random/junk,/turf/simulated/floor/tiled/techmaint,/area/maintenance/lower/bar)
+"aLe" = (/obj/structure/catwalk,/obj/structure/closet,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aLf" = (/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/lower/mining)
"aLg" = (/turf/simulated/floor/plating,/area/maintenance/lower/mining)
"aLh" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/plating,/area/gateway)
@@ -1993,7 +1994,7 @@
"aMr" = (/turf/simulated/wall,/area/maintenance/lower/bar)
"aMs" = (/obj/structure/table/rack,/obj/random/cigarettes,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/vacant/vacant_site)
"aMt" = (/obj/structure/railing,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
-"aMu" = (/obj/structure/catwalk,/obj/structure/closet,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/random_multi/single_item/teleport,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aMu" = (/obj/structure/catwalk,/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/drinkbottle,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
"aMv" = (/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aMw" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/vacant/vacant_site)
"aMx" = (/obj/structure/railing,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
@@ -2024,7 +2025,7 @@
"aMW" = (/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aMX" = (/obj/structure/catwalk,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aMY" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable{icon_state = "16-0"},/obj/structure/cable,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/zpipe/up/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/zpipe/up/supply{dir = 1},/turf/simulated/floor/plating,/area/gateway)
-"aMZ" = (/obj/structure/catwalk,/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/drinkbottle,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
+"aMZ" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/vacant/vacant_shop)
"aNa" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aNb" = (/obj/structure/catwalk,/obj/machinery/light/small,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aNc" = (/obj/structure/catwalk,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
@@ -2035,7 +2036,7 @@
"aNh" = (/obj/structure/catwalk,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aNi" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
"aNj" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/mining)
-"aNk" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aNk" = (/obj/effect/floor_decal/corner_techfloor_grid,/obj/machinery/alarm{pixel_y = 22},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aNl" = (/obj/effect/floor_decal/rust,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aNm" = (/obj/structure/catwalk,/obj/effect/floor_decal/rust,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aNn" = (/obj/structure/catwalk,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
@@ -2084,7 +2085,7 @@
"aOe" = (/obj/structure/disposalpipe/junction{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
"aOf" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
"aOg" = (/obj/effect/floor_decal/borderfloor{dir = 5},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
-"aOh" = (/obj/item/weapon/reagent_containers/food/drinks/bottle/orangejuice,/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/vacant/vacant_shop)
+"aOh" = (/obj/structure/railing{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
"aOi" = (/obj/structure/catwalk,/turf/simulated/open,/area/maintenance/lower/bar)
"aOj" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/turf/simulated/open,/area/maintenance/lower/bar)
"aOk" = (/obj/structure/catwalk,/obj/structure/disposalpipe/segment,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
@@ -2108,7 +2109,7 @@
"aOC" = (/obj/machinery/light/small{dir = 8},/obj/effect/floor_decal/techfloor{dir = 9},/obj/structure/cable{icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/north)
"aOD" = (/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
"aOE" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/effect/floor_decal/techfloor,/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
-"aOF" = (/obj/structure/railing{dir = 1},/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
+"aOF" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
"aOG" = (/obj/effect/floor_decal/techfloor{dir = 6},/obj/structure/cable{icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/north)
"aOH" = (/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
"aOI" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
@@ -2128,7 +2129,7 @@
"aOW" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/turf/simulated/open,/area/tether/surfacebase/atrium_two)
"aOX" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/orange/border{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
"aOY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
-"aOZ" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/obj/structure/closet/crate,/obj/random/action_figure,/obj/random/cigarettes,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/lower/vacant_site)
+"aOZ" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aPa" = (/obj/effect/floor_decal/techfloor/orange,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aPb" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor/orange,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aPc" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor/orange,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
@@ -2146,8 +2147,8 @@
"aPo" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/floor_decal/techfloor/hole/right{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/north)
"aPp" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
"aPq" = (/obj/machinery/light/small{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
-"aPr" = (/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
-"aPs" = (/obj/structure/railing{dir = 4},/obj/structure/railing,/turf/simulated/floor/tiled/techmaint,/area/maintenance/lower/bar)
+"aPr" = (/obj/effect/floor_decal/techfloor{dir = 10},/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aPs" = (/obj/structure/railing{dir = 4},/obj/structure/railing{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"aPt" = (/obj/item/clothing/gloves/boxing/blue,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/lower/north)
"aPu" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/lower/north)
"aPv" = (/obj/random/obstruction,/turf/simulated/floor,/area/maintenance/lower/north)
@@ -2208,7 +2209,7 @@
"aQy" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aQz" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aQA" = (/obj/effect/floor_decal/techfloor{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
-"aQB" = (/obj/effect/floor_decal/corner_techfloor_grid,/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aQB" = (/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aQC" = (/obj/structure/ladder{layer = 3.3; pixel_y = 16},/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aQD" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aQE" = (/obj/structure/sign/warning/caution{name = "\improper CAUTION - DANGEROUS EQUIPMENT AND DROPS"},/turf/simulated/wall,/area/tether/surfacebase/north_staires_two)
@@ -2234,7 +2235,7 @@
"aQY" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aQZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/effect/floor_decal/industrial/warning,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRa" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
-"aRb" = (/obj/effect/floor_decal/techfloor{dir = 10},/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aRb" = (/obj/effect/floor_decal/techfloor{dir = 9},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/bar)
"aRc" = (/obj/structure/cable{icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRd" = (/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRe" = (/obj/structure/cable{icon_state = "16-0"},/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
@@ -2270,7 +2271,7 @@
"aRI" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRJ" = (/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRK" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
-"aRL" = (/obj/structure/closet/crate,/obj/random_multi/single_item/teleport,/obj/random/cigarettes,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aRL" = (/obj/structure/railing{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"aRM" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRN" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aRO" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_two)
@@ -2354,7 +2355,7 @@
"aTo" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/rust,/obj/effect/floor_decal/techfloor{dir = 8},/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aTp" = (/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aTq" = (/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
-"aTr" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"aTr" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"aTs" = (/turf/simulated/wall,/area/maintenance/research)
"aTt" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/simulated/wall,/area/maintenance/research)
"aTu" = (/obj/effect/floor_decal/industrial/warning/corner,/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
@@ -2363,7 +2364,7 @@
"aTx" = (/turf/simulated/shuttle/wall/voidcraft/green{hard_corner = 1},/area/tether/surfacebase/atrium_two)
"aTy" = (/obj/machinery/door/airlock/maintenance/common{name = "Bar Maintenance Access"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/vacant/vacant_shop)
"aTz" = (/obj/effect/floor_decal/techfloor{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
-"aTA" = (/obj/effect/floor_decal/techfloor{dir = 9},/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/bar)
+"aTA" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aTB" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aTC" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/structure/cable{icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aTD" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 10},/obj/structure/cable{icon_state = "2-8"},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
@@ -2410,7 +2411,7 @@
"aUs" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 6},/obj/effect/floor_decal/rust,/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"aUt" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aUu" = (/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
-"aUv" = (/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/research,/obj/random/tech_supply,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
+"aUv" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aUw" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aUx" = (/obj/structure/railing,/obj/effect/floor_decal/techfloor/hole/right{dir = 4},/obj/effect/floor_decal/techfloor/hole{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/bar)
"aUy" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Research Subgrid"; name_tag = "Research Subgrid"},/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable/green,/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor,/area/maintenance/research)
@@ -2440,7 +2441,7 @@
"aUW" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/rnd)
"aUX" = (/turf/simulated/wall,/area/rnd/lockers)
"aUY" = (/turf/simulated/wall,/area/rnd/research)
-"aUZ" = (/obj/structure/railing{dir = 1},/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/medical/lite,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
+"aUZ" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aVa" = (/turf/simulated/wall/r_wall,/area/rnd/research)
"aVb" = (/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/structure/cable{icon_state = "1-2"},/obj/structure/disposalpipe/segment,/mob/living/simple_animal/mouse,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aVc" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_two)
@@ -2491,7 +2492,7 @@
"aVV" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/obj/structure/cable{icon_state = "1-4"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aVW" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"aVX" = (/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 10},/obj/structure/cable{icon_state = "2-8"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
-"aVY" = (/obj/structure/railing{dir = 1},/obj/structure/table/rack,/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/tech_supply,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
+"aVY" = (/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/rnd)
"aVZ" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aWa" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/effect/floor_decal/industrial/outline,/obj/machinery/portable_atmospherics/powered/scrubber,/obj/structure/extinguisher_cabinet{pixel_y = 30},/turf/simulated/floor/tiled/techfloor,/area/engineering/lower/lobby)
"aWb" = (/obj/machinery/atmospherics/pipe/simple/hidden/yellow{dir = 10},/obj/effect/floor_decal/borderfloor{dir = 1},/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},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/engineering/lower/lobby)
@@ -2581,14 +2582,14 @@
"aXH" = (/obj/structure/table/glass,/obj/machinery/computer/atmoscontrol/laptop,/turf/simulated/floor/carpet,/area/engineering/lower/breakroom)
"aXI" = (/obj/structure/bed/chair{dir = 8},/turf/simulated/floor/carpet,/area/engineering/lower/breakroom)
"aXJ" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/turf/simulated/floor/tiled,/area/engineering/lower/breakroom)
-"aXK" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
+"aXK" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aXL" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/purple/border{dir = 8},/turf/simulated/floor/tiled,/area/janitor)
"aXM" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/janitor)
"aXN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/janitor)
"aXO" = (/obj/structure/janitorialcart,/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/purple/border{dir = 4},/turf/simulated/floor/tiled,/area/janitor)
-"aXP" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 9},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"aXP" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aXQ" = (/obj/structure/catwalk,/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
-"aXR" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
+"aXR" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"aXS" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/machinery/computer/rdconsole/core{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
"aXT" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
"aXU" = (/obj/effect/floor_decal/techfloor/corner{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
@@ -2659,7 +2660,7 @@
"aZh" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/engineering/lower/breakroom)
"aZi" = (/obj/structure/table/glass,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/item/weapon/storage/box/glasses/pint,/obj/machinery/requests_console{announcementConsole = 0; department = "Engineering"; departmentType = 3; name = "Engineering RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor/tiled,/area/engineering/lower/breakroom)
"aZj" = (/obj/machinery/door/airlock/maintenance{name = "Custodial Maintenance"; req_access = list(26)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor,/area/janitor)
-"aZk" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"aZk" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
"aZl" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/corner_techfloor_grid{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"aZm" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"aZn" = (/obj/structure/catwalk,/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
@@ -2739,7 +2740,7 @@
"baJ" = (/obj/structure/cable{icon_state = "2-4"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"baK" = (/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"baL" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{icon_state = "2-4"},/obj/structure/reagent_dispensers/watertank,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"baM" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"baM" = (/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
"baN" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"baO" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/corner_techfloor_grid{dir = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"baP" = (/obj/structure/catwalk,/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
@@ -2773,7 +2774,7 @@
"bbr" = (/obj/machinery/space_heater,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/emergency_storage/atrium)
"bbs" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bbt" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bbu" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"bbu" = (/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_two)
"bbv" = (/obj/structure/railing{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bbw" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bbx" = (/obj/structure/catwalk,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
@@ -2830,7 +2831,7 @@
"bcw" = (/obj/effect/floor_decal/techfloor{dir = 10},/obj/structure/table/steel,/obj/item/stack/material/glass{amount = 50; pixel_x = 3; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
"bcx" = (/obj/effect/floor_decal/techfloor,/obj/structure/table/steel,/obj/machinery/camera/network/research{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
"bcy" = (/obj/effect/floor_decal/techfloor{dir = 6},/obj/structure/table/steel,/obj/item/weapon/storage/bag/circuits/basic,/turf/simulated/floor/tiled/techfloor,/area/rnd/workshop)
-"bcz" = (/obj/structure/closet/crate,/obj/random/maintenance/research,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/rnd)
+"bcz" = (/obj/effect/decal/remains/xeno,/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_two)
"bcA" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/mauve/border{dir = 10},/obj/machinery/status_display{pixel_x = -32},/turf/simulated/floor/tiled,/area/rnd/research)
"bcB" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/mauve/border,/obj/machinery/computer/guestpass{dir = 1; icon_state = "guest"; pixel_y = -28; tag = "icon-guest (NORTH)"},/turf/simulated/floor/tiled,/area/rnd/research)
"bcC" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/mauve/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 9},/turf/simulated/floor/tiled,/area/rnd/research)
@@ -2849,7 +2850,7 @@
"bcP" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/yellow/border,/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/yellow/bordercorner2{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"bcQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"bcR" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
-"bcS" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/sortjunction{dir = 4; icon_state = "pipe-j1s"; name = "Drone Fabrication"; sortType = "Drone Fabrication"},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
+"bcS" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bcT" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 10; icon_state = "intact"; tag = "icon-intact-f (NORTHWEST)"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"bcU" = (/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"bcV" = (/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/yellow,/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
@@ -2862,7 +2863,7 @@
"bdc" = (/obj/machinery/light/small,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/emergency_storage/atrium)
"bdd" = (/obj/structure/table/standard,/obj/item/device/t_scanner,/obj/item/weapon/storage/briefcase/inflatable,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/emergency_storage/atrium)
"bde" = (/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bdf" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/cargo,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
+"bdf" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bdg" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bdh" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bdi" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 9},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
@@ -2873,7 +2874,7 @@
"bdn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/command{name = "Server Room"; req_access = list(30)},/turf/simulated/floor/tiled/steel_grid,/area/server)
"bdo" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/yellow/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"bdp" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/yellow/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 1},/obj/machinery/light_switch{pixel_x = 25},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
-"bdq" = (/turf/simulated/wall,/area/engineering/drone_fabrication)
+"bdq" = (/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
"bdr" = (/obj/effect/floor_decal/corner/yellow{dir = 6},/obj/effect/floor_decal/corner/yellow{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals9,/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{dir = 1},/obj/machinery/vending/engivend,/turf/simulated/floor/tiled/monotile,/area/engineering/atmos/hallway)
"bds" = (/obj/effect/floor_decal/corner/yellow{dir = 6},/obj/effect/floor_decal/corner/yellow{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals9,/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{dir = 1},/obj/machinery/vending/tool,/turf/simulated/floor/tiled/monotile,/area/engineering/atmos/hallway)
"bdt" = (/turf/simulated/wall,/area/engineering/lower/atmos_lockers)
@@ -2986,7 +2987,7 @@
"bfw" = (/obj/machinery/space_heater,/turf/simulated/floor,/area/engineering/atmos/storage)
"bfx" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/plating,/area/maintenance/lower/solars)
"bfy" = (/obj/effect/floor_decal/techfloor{dir = 10},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
-"bfz" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/machinery/atmospherics/pipe/simple/visible/yellow,/obj/structure/closet,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/xenoflora)
+"bfz" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bfA" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/techfloor,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"bfB" = (/obj/machinery/light_switch{pixel_x = -25},/obj/effect/floor_decal/techfloor{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/server)
"bfC" = (/obj/effect/floor_decal/techfloor,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled/techfloor,/area/server)
@@ -3130,7 +3131,7 @@
"bik" = (/obj/machinery/atmospherics/pipe/simple/visible/green{dir = 9; icon_state = "intact"; tag = "icon-intact (SOUTHEAST)"},/obj/structure/extinguisher_cabinet{dir = 2; icon_state = "extinguisher_closed"; pixel_x = 30; tag = "icon-extinguisher_closed (WEST)"},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"bil" = (/obj/structure/catwalk,/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bim" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/techfloor{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
-"bin" = (/obj/structure/catwalk,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
+"bin" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/action_figure,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bio" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{dir = 8},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"bip" = (/obj/machinery/atmospherics/pipe/manifold4w/visible/red,/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/obj/machinery/meter,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"biq" = (/obj/machinery/atmospherics/pipe/manifold/visible/red{dir = 4; initialize_directions = 11},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
@@ -3144,7 +3145,7 @@
"biy" = (/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Drone Bay"},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"biz" = (/obj/effect/floor_decal/industrial/warning,/obj/machinery/atmospherics/portables_connector{dir = 8},/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/steel_dirty,/area/engineering/atmos)
"biA" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"biB" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 1},/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"biB" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"biC" = (/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"biD" = (/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/atmospherics/binary/pump{dir = 4; name = "Scrubbers to Waste"},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
"biE" = (/obj/machinery/atmospherics/pipe/simple/visible/red{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
@@ -3157,7 +3158,7 @@
"biL" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 4},/turf/simulated/open,/area/engineering/atmos)
"biM" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
"biN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
-"biO" = (/obj/machinery/atmospherics/omni/filter{tag_east = 4; tag_north = 2; tag_south = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
+"biO" = (/obj/machinery/atmospherics/pipe/simple/hidden/cyan{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/cyan{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/hallway)
"biP" = (/obj/machinery/atmospherics/valve/digital/open{dir = 4; icon_state = "map_valve1"; tag = "icon-map_valve1 (WEST)"},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"biQ" = (/obj/machinery/atmospherics/pipe/manifold/visible/purple,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
"biR" = (/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/purple{dir = 1},/obj/machinery/meter,/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
@@ -3290,12 +3291,12 @@
"blo" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"blp" = (/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"blq" = (/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"blr" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"blr" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bls" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"blt" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 9},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"blu" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
-"blv" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
-"blw" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/obj/machinery/camera/network/engineering{dir = 1},/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
+"blv" = (/obj/machinery/atmospherics/omni/filter{tag_east = 7; tag_north = 2; tag_south = 1},/turf/simulated/floor/tiled/techmaint,/area/engineering/atmos)
+"blw" = (/obj/structure/table/standard,/obj/effect/floor_decal/techfloor,/obj/item/clothing/glasses/welding,/obj/item/clothing/head/welding{pixel_x = -5; pixel_y = 3},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
"blx" = (/obj/effect/floor_decal/techfloor,/obj/machinery/space_heater,/obj/machinery/light,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
"bly" = (/obj/effect/floor_decal/techfloor,/obj/machinery/suit_cycler/engineering{name = "Atmospherics suit cycler"},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
"blz" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/window/northleft{name = "Atmospherics Hardsuits"; req_access = list(24)},/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,/area/engineering/atmos)
@@ -3326,35 +3327,35 @@
"blY" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Telecomms Subgrid"; name_tag = "Telecomms Subgrid"},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/structure/cable/green{icon_state = "0-8"},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/plating,/area/maintenance/substation/tcomms)
"blZ" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/light/small,/turf/simulated/floor/plating,/area/maintenance/substation/tcomms)
"bma" = (/turf/simulated/wall/r_wall,/area/maintenance/substation/tcomms)
-"bmb" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
+"bmb" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
"bmc" = (/obj/machinery/atmospherics/portables_connector,/obj/machinery/portable_atmospherics/canister/air/airlock,/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bmd" = (/obj/structure/filingcabinet,/obj/machinery/status_display{pixel_y = 30},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bme" = (/obj/structure/table/standard,/obj/item/weapon/folder/yellow,/obj/item/weapon/folder/yellow,/obj/machinery/light{dir = 1},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bmf" = (/obj/structure/table/standard,/obj/item/weapon/paper_bin,/obj/item/weapon/pen/blue{pixel_x = -3; pixel_y = 2},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bmg" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bmh" = (/obj/structure/table/standard,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
-"bmi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
-"bmj" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
-"bmk" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
-"bml" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
-"bmm" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Satellite"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
+"bmi" = (/obj/effect/floor_decal/techfloor,/obj/machinery/camera/network/engineering{dir = 1},/obj/structure/dispenser{phorontanks = 0},/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos)
+"bmj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmk" = (/turf/simulated/mineral,/area/space)
+"bml" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable{icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
"bmn" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 5; icon_state = "intact"; tag = "icon-intact-f (NORTHEAST)"},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmo" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmq" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 10; icon_state = "intact"; tag = "icon-intact-f (SOUTHWEST)"},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmr" = (/obj/machinery/computer/telecomms/monitor{dir = 8; network = "tcommsat"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bms" = (/obj/machinery/door/airlock/maintenance/rnd{name = "Elavator Maintenance Access"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/rnd/breakroom)
-"bmt" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/tcommsat/entrance)
-"bmu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/decal/cleanable/cobweb,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmv" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmw" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmx" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmy" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmA" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmB" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"bmC" = (/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmD" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
+"bmt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmu" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmv" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmx" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmy" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom{name = "\improper Recreation Area Showers"})
+"bmz" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"bmA" = (/turf/simulated/wall/r_wall,/area/engineering/drone_fabrication)
+"bmB" = (/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/rnd/external)
+"bmC" = (/obj/machinery/camera/network/research{dir = 2},/obj/machinery/floodlight,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/rnd/external)
+"bmD" = (/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bmE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/camera/network/telecom{dir = 4},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmF" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmG" = (/turf/simulated/floor/tiled,/area/tcommsat/computer)
@@ -3363,18 +3364,18 @@
"bmJ" = (/obj/machinery/computer/telecomms/server{dir = 8; network = "tcommsat"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bmK" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor/corner,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bmL" = (/obj/structure/catwalk,/obj/effect/floor_decal/techfloor{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bmM" = (/obj/machinery/door/airlock/highsecurity{name = "Telecomms Access"; req_one_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmO" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmP" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmQ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecomms Foyer"; req_one_access = list(61)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmR" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmS" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmU" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmV" = (/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/tcommsat/entrance)
-"bmW" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bmX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
+"bmM" = (/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bmN" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmO" = (/obj/machinery/porta_turret{dir = 6},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmP" = (/obj/machinery/camera/network/telecom,/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmQ" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmR" = (/obj/machinery/turretid/lethal{ailock = 1; check_synth = 1; control_area = "\improper Telecomms Central Compartment"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms lethal turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61); req_one_access = list(12)},/obj/structure/extinguisher_cabinet{pixel_y = 30},/obj/effect/decal/cleanable/cobweb2,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/dark,/area/tcommsat/chamber)
+"bmS" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bmT" = (/obj/machinery/turretid/stun{ailock = 1; check_synth = 1; control_area = "\improper Telecoms Foyer"; desc = "A firewall prevents AIs from interacting with this device."; name = "Telecoms Foyer turret control"; pixel_x = 29; pixel_y = 0; req_access = list(61); req_one_access = list(12)},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmU" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bmV" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/effect/decal/cleanable/cobweb,/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bmW" = (/obj/machinery/camera/network/telecom,/obj/structure/sign/electricshock{pixel_y = 32},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bmX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bmY" = (/obj/machinery/door/airlock/hatch{name = "Telecoms Control Room"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bmZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer)
"bna" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/computer)
@@ -3384,15 +3385,15 @@
"bne" = (/turf/simulated/wall/r_wall,/area/tcommsat/chamber)
"bnf" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/techfloor{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bng" = (/obj/structure/railing{dir = 1},/obj/effect/floor_decal/techfloor{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bnh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bni" = (/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bnj" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bnk" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bnl" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bnm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"bnn" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bno" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcommsat/entrance)
-"bnp" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcommsat/entrance)
+"bnh" = (/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bni" = (/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnj" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnk" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnl" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnm" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bnn" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bno" = (/obj/machinery/door/airlock/highsecurity{name = "Telecomms Access"; req_one_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bnp" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
"bnq" = (/obj/machinery/light{dir = 8},/obj/structure/table/standard,/obj/item/device/multitool,/obj/structure/sign/electricshock{pixel_x = -32},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bnr" = (/obj/machinery/atmospherics/unary/freezer{dir = 2; icon_state = "freezer_1"; set_temperature = 73; use_power = 1},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
"bns" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/dark,/area/tcommsat/computer)
@@ -3400,20 +3401,20 @@
"bnu" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_outer"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/tcommsat/chamber)
"bnv" = (/obj/machinery/airlock_sensor{frequency = 1381; id_tag = "server_access_sensor"; pixel_x = 12; pixel_y = 25},/obj/machinery/atmospherics/unary/vent_pump/high_volume{dir = 8; frequency = 1381; id_tag = "server_access_pump"},/obj/machinery/embedded_controller/radio/airlock/advanced_airlock_controller{frequency = 1381; id_tag = "server_access_airlock"; name = "Server Access Airlock"; pixel_x = 0; pixel_y = 25; tag_airpump = "server_access_pump"; tag_chamber_sensor = "server_access_sensor"; tag_exterior_door = "server_access_outer"; tag_exterior_sensor = "server_access_ex_sensor"; tag_interior_door = "server_access_inner"; tag_interior_sensor = "server_access_in_sensor"; tag_secure = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber)
"bnw" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/plating,/area/tcommsat/chamber)
-"bnx" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
-"bny" = (/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
-"bnz" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
-"bnA" = (/obj/machinery/porta_turret/stationary,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
+"bnx" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bny" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold4w/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnz" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/hatch{name = "Telecomms Foyer"; req_access = list(61); req_one_access = list(12)},/obj/machinery/door/firedoor,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnA" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bnB" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 6},/turf/simulated/floor/plating,/area/tcommsat/chamber)
"bnC" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/manifold/hidden/black,/turf/simulated/floor/plating,/area/tcommsat/chamber)
"bnD" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber)
"bnE" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 4},/turf/simulated/floor/plating,/area/tcommsat/chamber)
"bnF" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/black{dir = 10},/turf/simulated/floor/plating,/area/tcommsat/chamber)
-"bnG" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_inner"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/wall/r_wall,/area/tcommsat/chamber)
+"bnG" = (/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/tcomsat{name = "\improper Telecomms Lobby"})
"bnH" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 10},/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 4},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake)
"bnI" = (/obj/effect/floor_decal/industrial/warning/dust,/obj/effect/floor_decal/industrial/warning/dust{dir = 1},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/engineering/atmos/intake)
-"bnJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/tcommsat/entrance)
-"bnK" = (/obj/machinery/door/airlock/glass{name = "Telecomms Storage"; req_access = list(61); req_one_access = newlist()},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcommsat/entrance)
+"bnJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnK" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bnL" = (/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bnM" = (/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc/super/critical{dir = 1; name = "north bump"; pixel_y = 24},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bnN" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
@@ -3425,30 +3426,30 @@
"bnT" = (/obj/machinery/airlock_sensor/airlock_interior{frequency = 1381; id_tag = "server_access_in_sensor"; name = "interior sensor"; pixel_y = 25},/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bnU" = (/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bnV" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'SERVER ROOM'."; name = "SERVER ROOM"; pixel_y = 32},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
-"bnW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bnX" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bnY" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bnZ" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
+"bnW" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/glass{req_access = list(61)},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnX" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bnY" = (/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bnZ" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
"boa" = (/obj/machinery/atmospherics/pipe/simple/hidden/black,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bob" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
-"boc" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bod" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"boe" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bof" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
+"boc" = (/obj/machinery/door/airlock/maintenance_hatch{frequency = 1381; icon_state = "door_locked"; id_tag = "server_access_inner"; locked = 1; name = "Telecoms Server Access"; req_access = list(61)},/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
+"bod" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"boe" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/tcommsat/entrance{name = "\improper Telecomms Entrance"})
+"bof" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bog" = (/obj/machinery/telecomms/server/presets/supply,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"boh" = (/obj/machinery/telecomms/server/presets/service,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"boi" = (/obj/machinery/telecomms/server/presets/unused,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"boj" = (/obj/machinery/telecomms/server/presets/common,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bok" = (/obj/machinery/telecomms/server/presets/engineering,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
-"bol" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bom" = (/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bon" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
+"bol" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bom" = (/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bon" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
"boo" = (/obj/machinery/camera/network/telecom{dir = 4},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bop" = (/obj/machinery/exonet_node{anchored = 1},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"boq" = (/obj/machinery/camera/network/telecom{dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
-"bor" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bos" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
-"bot" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcommsat/entrance)
+"bor" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bos" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bot" = (/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"})
"bou" = (/obj/structure/sign/nosmoking_2{pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor/bluegrid{name = "Mainframe Base"; nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bov" = (/obj/machinery/telecomms/processor/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
"bow" = (/obj/machinery/telecomms/bus/preset_two,/turf/simulated/floor/tiled/dark{nitrogen = 100; oxygen = 0; temperature = 80},/area/tcommsat/chamber)
@@ -3579,9 +3580,9 @@
"bqR" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/carpet/blue,/area/tether/surfacebase/security/breakroom)
"bqS" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/item/weapon/storage/box/lights/mixed,/obj/structure/table/steel,/obj/random/tech_supply,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
"bqT" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
-"bqU" = (/obj/random_multi/single_item/netgun,/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_two)
+"bqU" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 9},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/bar)
"bqV" = (/obj/effect/floor_decal/techfloor/corner,/obj/effect/floor_decal/techfloor{dir = 1},/obj/effect/floor_decal/techfloor/hole/right{dir = 1},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
-"bqW" = (/obj/effect/decal/remains/xeno,/obj/random_multi/single_item/teleport,/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_two)
+"bqW" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
"bqX" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/triage)
"bqY" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/triage)
"bqZ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/triage)
@@ -3705,8 +3706,8 @@
"btn" = (/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/machinery/light_switch{pixel_x = 25},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/security/breakroom)
"bto" = (/obj/effect/floor_decal/techfloor{dir = 8},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
"btp" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
-"btq" = (/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"btr" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"btq" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south)
+"btr" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 1},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"bts" = (/turf/simulated/wall,/area/tether/surfacebase/medical/lobby)
"btt" = (/obj/machinery/disposal,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/lobby)
"btu" = (/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/structure/disposalpipe/segment{dir = 4},/obj/item/device/radio/intercom{pixel_y = 24; req_access = list()},/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/lobby)
@@ -3855,7 +3856,7 @@
"bwh" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled,/area/tether/surfacebase/security/lobby)
"bwi" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/red/bordercorner2,/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/tether/surfacebase/security/lobby)
"bwj" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{scrub_id = "atrium"},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_three)
-"bwk" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"bwk" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"bwl" = (/obj/effect/floor_decal/techfloor/corner{dir = 8},/obj/effect/floor_decal/techfloor/corner,/obj/effect/floor_decal/techfloor{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/techfloor/grid,/area/vacant/vacant_site2)
"bwm" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/obj/machinery/computer/guestpass{dir = 4; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/lobby)
"bwn" = (/obj/structure/bed/chair{dir = 1},/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/tether/surfacebase/medical/lobby)
@@ -4236,11 +4237,11 @@
"bDy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bDz" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/lightgrey/border{dir = 1},/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,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bDA" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/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/tether/surfacebase/atrium_three)
-"bDB" = (/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,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
+"bDB" = (/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/obj/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled/monotile,/area/crew_quarters/locker/laundry_arrival)
"bDC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/lightgrey/border{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
-"bDD" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bDE" = (/obj/machinery/light_switch{pixel_y = 25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bDF" = (/obj/machinery/shower{dir = 8; icon_state = "shower"; pixel_x = -5; pixel_y = 0},/obj/structure/curtain/open/shower,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
+"bDD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bDE" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/obj/machinery/porta_turret{dir = 6},/turf/simulated/floor/tiled/dark,/area/tcomsat{name = "\improper Telecomms Lobby"})
+"bDF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor,/turf/simulated/floor/plating,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bDG" = (/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bDH" = (/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three)
"bDI" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
@@ -4262,15 +4263,15 @@
"bDY" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{icon_state = "1-2"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bDZ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEa" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
-"bEb" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable{icon_state = "0-2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bEc" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bEd" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
+"bEb" = (/obj/machinery/door/airlock/glass{name = "Telecomms Storage"; req_access = list(61); req_one_access = newlist()},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bEc" = (/turf/simulated/wall/r_wall,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bEd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/molten_item,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bEe" = (/obj/structure/cable{icon_state = "32-4"},/obj/structure/lattice,/obj/machinery/light/small{dir = 8; pixel_x = 0},/obj/machinery/door/firedoor/glass,/turf/simulated/open,/area/tether/surfacebase/atrium_three)
"bEf" = (/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three)
"bEg" = (/obj/machinery/door/airlock/maintenance/engi,/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/tether/surfacebase/atrium_three)
"bEh" = (/obj/structure/cable{icon_state = "4-8"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEi" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/cable{icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
-"bEj" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/action_figure,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"bEj" = (/obj/structure/railing,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"bEk" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEl" = (/obj/structure/disposalpipe/segment,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEm" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/industrial/danger{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
@@ -4278,7 +4279,7 @@
"bEo" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{scrub_id = "atrium"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tether/surfacebase/atrium_three)
"bEp" = (/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/vacant/vacant_shop)
"bEq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/plating,/area/vacant/vacant_shop)
-"bEr" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"bEr" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bEs" = (/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
"bEt" = (/obj/machinery/atmospherics/unary/vent_pump/on,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
"bEu" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
@@ -4303,10 +4304,10 @@
"bEN" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/structure/disposalpipe/segment,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEP" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{icon_state = "4-8"},/obj/effect/floor_decal/steeldecal/steel_decals4,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
-"bEQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor,/obj/machinery/door/airlock{name = "Unisex Showers"},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/recreation_area_restroom)
-"bER" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/structure/cable{icon_state = "1-8"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bES" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bET" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
+"bEQ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bER" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/item/weapon/stock_parts/subspace/amplifier,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bES" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/item/weapon/stock_parts/subspace/ansible,/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bET" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bEU" = (/turf/simulated/wall/r_wall,/area/maintenance/lower/atmos)
"bEV" = (/obj/structure/extinguisher_cabinet{dir = 4; icon_state = "extinguisher_closed"; pixel_x = -30; tag = "icon-extinguisher_closed (EAST)"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEW" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
@@ -4314,7 +4315,7 @@
"bEY" = (/obj/machinery/camera/network/northern_star{dir = 9},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bEZ" = (/obj/structure/sign/directions/medical{dir = 1; icon_state = "direction_med"; pixel_y = 8; tag = "icon-direction_med (EAST)"},/obj/structure/sign/directions/science{dir = 2; icon_state = "direction_sci"; pixel_y = 3; tag = "icon-direction_sci (WEST)"},/obj/structure/sign/directions/security{dir = 1; icon_state = "direction_sec"; pixel_y = -4; tag = "icon-direction_sec (WEST)"},/obj/structure/sign/directions/engineering{dir = 1; icon_state = "direction_eng"; pixel_y = -10; tag = "icon-direction_eng (WEST)"},/turf/simulated/wall,/area/tether/surfacebase/atrium_three)
"bFa" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/structure/cable{icon_state = "1-4"},/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"bFb" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/random/maintenance/engineering,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"bFb" = (/obj/structure/closet,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bFc" = (/obj/structure/closet/secure_closet/freezer/meat,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
"bFd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/icecream_vat,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
"bFe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/freezer)
@@ -4331,8 +4332,8 @@
"bFp" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/extinguisher_cabinet{pixel_x = 27},/turf/simulated/floor/tiled,/area/crew_quarters/pool)
"bFq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bFr" = (/obj/structure/extinguisher_cabinet{pixel_x = 27},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
-"bFs" = (/obj/item/weapon/bikehorn/rubberducky,/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
-"bFt" = (/obj/machinery/alarm{dir = 1; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/recreation_area_restroom)
+"bFs" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bFt" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/item/weapon/stock_parts/subspace/transmitter,/obj/structure/cable/green{icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -24},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bFu" = (/obj/machinery/camera/network/northern_star{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bFv" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bFw" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/drinkbottle,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
@@ -4694,7 +4695,7 @@
"bMo" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bMp" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bMq" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lime/border{dir = 8},/turf/simulated/floor/tiled,/area/hydroponics)
-"bMr" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
+"bMr" = (/obj/structure/railing{dir = 4},/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research)
"bMs" = (/obj/effect/floor_decal/corner/green{dir = 5},/obj/effect/floor_decal/corner/green{dir = 10},/turf/simulated/floor/tiled,/area/hydroponics)
"bMt" = (/obj/machinery/portable_atmospherics/hydroponics,/obj/effect/floor_decal/corner/green{dir = 10},/obj/effect/floor_decal/corner/green{dir = 5},/turf/simulated/floor/tiled,/area/hydroponics)
"bMu" = (/obj/machinery/vending/snack,/turf/simulated/floor/wood,/area/crew_quarters/bar)
@@ -4789,7 +4790,7 @@
"bOf" = (/obj/machinery/atmospherics/binary/pump{dir = 8},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bOg" = (/obj/machinery/atmospherics/pipe/simple/visible/red{dir = 9},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bOh" = (/obj/machinery/atmospherics/pipe/manifold/visible/supply,/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers,/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"bOi" = (/turf/simulated/wall,/area/maintenance/substation/bar)
+"bOi" = (/obj/structure/cable{icon_state = "2-8"},/obj/machinery/camera/network/engineering,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bOj" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bOk" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bOl" = (/obj/machinery/door/airlock/maintenance/common{name = "Hydroponics Maintenance"; req_access = list(35)},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/hydroponics)
@@ -4828,10 +4829,10 @@
"bOS" = (/obj/structure/railing,/obj/machinery/computer/area_atmos/tag{dir = 8; scrub_id = "atrium"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bOT" = (/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bOU" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/maintenance/engi{name = "Engineering Pump Station"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
-"bOV" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_x = 0},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
-"bOW" = (/obj/structure/cable{icon_state = "2-8"},/obj/machinery/camera/network/engineering,/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bOX" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bOY" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
+"bOV" = (/obj/item/weapon/pickaxe,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/hallway)
+"bOW" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bOX" = (/obj/machinery/alarm{pixel_y = 22},/obj/effect/decal/cleanable/blood/splatter,/obj/structure/cable{icon_state = "2-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bOY" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bOZ" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bPa" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lime/border{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/computer/guestpass{dir = 4; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled,/area/hydroponics)
"bPb" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/hydroponics)
@@ -4863,10 +4864,10 @@
"bPB" = (/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bPC" = (/obj/machinery/atmospherics/pipe/zpipe/down/scrubbers{dir = 8},/obj/machinery/atmospherics/pipe/zpipe/down/supply{dir = 8},/obj/structure/cable/cyan{d1 = 32; d2 = 2; icon_state = "32-2"},/obj/machinery/camera/network/engineering{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/open,/area/maintenance/engineering/pumpstation)
"bPD" = (/obj/effect/decal/cleanable/dirt,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"bPE" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/maintenance/substation/bar)
-"bPF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bPG" = (/obj/machinery/power/terminal,/obj/structure/cable{icon_state = "0-8"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bPH" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/substation/bar)
+"bPE" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bPF" = (/obj/structure/sign/warning/high_voltage,/turf/simulated/wall,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bPG" = (/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/structure/cable,/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bPH" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bPI" = (/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south)
"bPJ" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lime/border{dir = 8},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -30},/obj/structure/cable/green,/turf/simulated/floor/tiled,/area/hydroponics)
"bPK" = (/obj/machinery/biogenerator,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lime/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lime/bordercorner2{dir = 6},/turf/simulated/floor/tiled,/area/hydroponics)
@@ -4894,9 +4895,9 @@
"bQg" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bQh" = (/obj/machinery/atmospherics/binary/pump{dir = 4},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bQi" = (/obj/machinery/atmospherics/pipe/simple/visible/blue{dir = 10},/obj/structure/railing{dir = 1},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
-"bQj" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bQk" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bQl" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
+"bQj" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/item/weapon/stock_parts/subspace/analyzer,/obj/machinery/firealarm{dir = 4; pixel_x = 26},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bQk" = (/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bQl" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Surface Civilian Substation Bypass"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bQm" = (/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/locker_room)
"bQn" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/lower/rnd)
"bQo" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
@@ -4943,7 +4944,7 @@
"bRd" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/hallway/lower/third_south)
"bRe" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bRf" = (/obj/machinery/light/small,/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/powered/pump/filled,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
-"bRg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable{icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
+"bRg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
"bRh" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{scrub_id = "atrium"},/turf/simulated/floor/tiled/techmaint,/area/hallway/lower/third_south)
"bRi" = (/obj/random/toy,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
"bRj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
@@ -5141,6 +5142,7 @@
"bUT" = (/obj/structure/table/glass,/obj/machinery/computer/skills,/turf/simulated/floor/tiled,/area/rnd/rdoffice)
"bUU" = (/turf/simulated/floor/tiled,/area/rnd/rdoffice)
"bUV" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/turf/simulated/floor/tiled,/area/rnd/rdoffice)
+"bUW" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/obj/item/weapon/stock_parts/subspace/treatment,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bUX" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/mauve/border{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/mauve/bordercorner2{dir = 10},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics)
"bUY" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics)
"bUZ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/assembly/robotics)
@@ -5297,43 +5299,43 @@
"bXU" = (/obj/structure/table/steel,/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/shuttle_pad)
"bXV" = (/obj/structure/table/steel,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/tether/surfacebase/shuttle_pad)
"bXW" = (/obj/machinery/camera/network/northern_star,/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/tether/surfacebase/outside/outside3)
-"bXX" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/research,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south)
-"bXY" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/machinery/atmospherics/pipe/simple/visible/purple{dir = 1},/obj/structure/table/rack,/obj/random/medical/lite,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"bXX" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/lower/south)
+"bXY" = (/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bXZ" = (/obj/structure/closet/firecloset,/obj/structure/sign/warning/high_voltage{pixel_x = -32},/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"bYa" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"bYa" = (/obj/structure/table/rack,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/processor,/obj/item/weapon/circuitboard/telecomms/receiver,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/server,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/bus,/obj/item/weapon/circuitboard/telecomms/broadcaster,/obj/item/weapon/circuitboard/telecomms/exonet_node,/obj/machinery/light/small,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bYb" = (/obj/machinery/door/airlock/maintenance/engi{name = "Engineering Pump Station"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/maintenance/engineering/pumpstation)
"bYc" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"bYd" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/airlock/maintenance/engi{name = "Bar Substation"},/turf/simulated/floor/plating,/area/maintenance/substation/bar)
-"bYe" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
+"bYd" = (/obj/machinery/power/sensor{name = "Powernet Sensor - Surface Civilian Subgrid"; name_tag = "Surface Civilian Subgrid"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 8},/turf/simulated/floor/plating,/area/maintenance/substation/bar{name = "\improper Surface Civilian Substation"})
+"bYe" = (/obj/effect/floor_decal/techfloor,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/closet,/obj/random/contraband,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"bYf" = (/obj/machinery/door/airlock/maintenance/rnd{name = "Research Maintenance Access"},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/rnd/lockers)
"bYg" = (/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/turf/simulated/floor/tiled/steel_grid,/area/rnd/hallway)
"bYh" = (/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"bYi" = (/obj/structure/railing,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
+"bYi" = (/obj/item/clothing/under/rank/clown,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/hallway)
"bYj" = (/obj/structure/railing,/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"bYk" = (/obj/machinery/door/airlock/maintenance/engi{name = "Atmospherics Access"},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"bYl" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"bYm" = (/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/research,/obj/random/maintenance/medical,/obj/random/tech_supply,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"bYl" = (/obj/structure/catwalk,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/visible/scrubbers{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
+"bYm" = (/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYn" = (/obj/structure/railing,/turf/simulated/floor,/area/maintenance/lower/south)
"bYo" = (/obj/machinery/door/airlock/maintenance/common,/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"bYp" = (/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
-"bYq" = (/obj/structure/closet,/obj/item/clothing/mask/gas,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/medical,/obj/random_multi/single_item/teleport,/obj/random/maintenance/medical,/turf/simulated/floor/plating,/area/maintenance/lower/atrium)
+"bYq" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYr" = (/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYs" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/mauve/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/machinery/vending/wallmed_airlock{pixel_x = 32},/turf/simulated/floor/tiled,/area/rnd/hallway)
"bYt" = (/obj/effect/floor_decal/techfloor/corner{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/machinery/atmospherics/pipe/simple/visible/black{dir = 5},/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
-"bYu" = (/obj/structure/railing{dir = 4},/obj/structure/table/rack,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research)
+"bYu" = (/obj/structure/railing{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYv" = (/obj/machinery/door/airlock/multi_tile/metal/mait{name = "Atmospherics Maintenance"; req_access = list(24); req_one_access = list(24)},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
-"bYw" = (/obj/item/weapon/pickaxe,/obj/random_multi/single_item/teleport,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/hallway)
+"bYw" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor{dir = 9},/obj/structure/closet,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYx" = (/obj/machinery/door/firedoor/glass,/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/atmos)
"bYy" = (/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/obj/structure/closet/crate,/obj/random/maintenance/engineering,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/junk,/turf/simulated/floor,/area/maintenance/lower/south)
-"bYz" = (/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/obj/structure/closet/crate,/obj/random/cigarettes,/obj/random/maintenance/engineering,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/lower/south)
+"bYz" = (/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYA" = (/obj/effect/floor_decal/rust,/obj/structure/table/rack,/obj/structure/catwalk,/obj/random/maintenance/research,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bYB" = (/obj/effect/floor_decal/corner_techfloor_grid/full{dir = 4},/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
+"bYB" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/item/weapon/stock_parts/subspace/filter,/obj/machinery/camera/network/telecom{dir = 1},/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bYC" = (/obj/structure/railing{dir = 8},/obj/effect/floor_decal/corner_techfloor_grid{dir = 10},/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYD" = (/obj/structure/catwalk,/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research)
"bYE" = (/turf/simulated/wall/r_wall,/area/maintenance/lower/south)
"bYF" = (/obj/machinery/door/airlock/multi_tile/metal/mait,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor/grid,/area/maintenance/lower/south)
-"bYG" = (/obj/effect/floor_decal/techfloor,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/contraband,/obj/random/maintenance/research,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/tool,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
-"bYH" = (/obj/item/clothing/under/rank/clown,/obj/random_multi/single_item/netgun,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/hallway)
+"bYG" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/obj/item/weapon/stock_parts/subspace/crystal,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
+"bYH" = (/obj/structure/table/standard,/obj/item/weapon/stock_parts/micro_laser,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/manipulator,/obj/item/weapon/stock_parts/capacitor,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/obj/item/weapon/stock_parts/micro_laser/high,/turf/simulated/floor/tiled/techmaint,/area/tcomfoyer{name = "\improper Telecomms Storage"})
"bYI" = (/obj/effect/floor_decal/techfloor{dir = 4},/obj/effect/floor_decal/techfloor{dir = 6},/obj/structure/railing,/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/asmaint2)
"bYJ" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/maintenance/rnd{name = "Science Maintenance"},/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/research)
"bYK" = (/obj/effect/floor_decal/rust,/obj/random/junk,/turf/simulated/floor/tiled/steel_dirty,/area/maintenance/lower/research)
@@ -5344,11 +5346,8 @@
"bYP" = (/obj/machinery/door/firedoor/glass,/obj/structure/catwalk,/turf/simulated/floor/tiled/techfloor,/area/engineering/atmos/processing)
"bYQ" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYR" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/machinery/atmospherics/pipe/simple/visible/supply,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bYS" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 5},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/research,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
-"bYT" = (/obj/structure/railing{dir = 1},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYU" = (/obj/structure/railing{dir = 1},/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/structure/table/rack,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYV" = (/turf/simulated/wall/r_wall,/area/engineering/atmos)
-"bYW" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/obj/effect/floor_decal/techfloor{dir = 9},/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYX" = (/obj/structure/railing,/obj/effect/floor_decal/techfloor{dir = 1},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 4},/obj/structure/cable{icon_state = "2-4"},/obj/random/junk,/turf/simulated/floor/tiled/techfloor,/area/maintenance/lower/south)
"bYY" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"; pixel_y = 0},/turf/simulated/wall/r_wall,/area/maintenance/substation/tcomms)
"bYZ" = (/obj/structure/sign/department/telecoms,/turf/simulated/wall/r_wall,/area/maintenance/substation/tcomms)
@@ -5361,7 +5360,6 @@
"bZg" = (/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one)
"bZh" = (/obj/structure/railing{dir = 8},/obj/structure/railing,/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one)
"bZi" = (/obj/structure/railing,/obj/structure/railing{dir = 4},/turf/simulated/floor/water/pool,/area/tether/surfacebase/atrium_one)
-"bZj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/crew_quarters/locker)
"bZk" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/white,/area/crew_quarters/bar)
"bZl" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/structure/disposalpipe/junction{dir = 1; icon_state = "pipe-j2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/tether/surfacebase/atrium_three)
"bZm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/crew_quarters/locker/laundry_arrival)
@@ -5424,62 +5422,62 @@ aaaaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaa
aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTabTacracsabnactacuacvacwacxacyacxacxaczacAacBacCacDacEacFacGacHacIacJacKacLabMacMacNabPacOacpahXaaUaaUaaUaaUaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTacQacRacSabnajZabnacUacVacWacXacYacZadaacWadbadcaddadeadfadfadgadfadhadiadjadkadladmabPacOadnabHabHabHabHabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTacQacRadoabTadpabnadqadracxadsadradtaduacxadvabMadwadxadxadyadzadAadBadxadCadDadEadFabPadGadHadIadIadIadJabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTadKadLadMadNadOabnadPadQadRadSadTadUadVadWadXabLadYadZadZaeaabLaebaecaedaeeabLaefaegabPamWamFanSanmaelaemabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTabTabTabTabTaenabnabnaeoaeoaepaeoaeoaeqaeoaeoabLabLabLabLabLabLabMaeraesabMabLabPabPabPaaUaaUaaUaaUaaUaaUaetaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTadKadLadMadNadOabnadPadQadRadSadTadUadVadWadXabLadYadZadZaeaabLaebaecaedaeeabLaefaegabPamWamFanoanmaelaemabHaaUaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagabTabTabTabTabTaenabnabnaeoaeoaepaeoaeoaeqaeoaeoabLabLabLabLabLabLabLaeraesabLabLabPabPabPaaUaaUaaUaaUaaUaaUaetaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeuaeuaeuaeuaevaewaexaoJaeoaezaeAaeBaeCaeDaeEaeFaeGaeHaeIaeIaeJaeKaeLaeMaeNaeOaePaeQaeRaeGaagaagaagaagaagaaUabHaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSaeSaeSaeSaeSaeSaeSaeSaeSaagaagaagaeuaeTaeUaeVaeWaeXapsapraeoafaafbaeCaeCafcaeCaeCafdafeaffafgafhafiafiafjafkafkafkafkaflaeGaagaagaagaagaagaaUafmaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSaeSaeSaeSaeSaeSaeSaeSaeSaagaagaagaeuaeTaeUaeVaeWaeXapsapoaeoafaafbaeCaeCafcaeCaeCafdafeaffafgafhafiafiafjafkafkafkafkaflaeGaagaagaagaagaagaaUafmaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSafnafoafpafqafrafsafnaeSaagaagaagaeuaftafuafvaeuafwasFaqJaeoafaafzaeCaeCafAafBafCafDafEafFafFafGafFafHafIafJafJafKafkafLaeGaagaagaagaagaagaaUasGaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSafMafNafNafOafNafPafQaeSaagaagaagaeuafRafSafTafUafVafWauRaeoafYafZaeCagaaeCagbagcaeGagdageagfaggaghagiagjagkagkagkaglagmaeGaagaagaagaagaagaaUabHaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSafMafNafNafOafNafPafQaeSaagaagaagaeuafRafSafTafUafVafWapoaeoafYafZaeCagaaeCagbagcaeGagdageagfaggaghagiagjagkagkagkaglagmaeGaagaagaagaagaagaaUabHaaUaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSagnafNafnafnafnagoagpaeSaagaagaagaeuaeuaeuaeuaevagqabTabTaeoaeoaeoaeoaeoaeoaeoaeoaeGaeGaeGagragsaeGaeGaeGaeGaeGaeGaeGaeGaeGaagaagaagaaUaaUaaUabHaaUaaUaaUaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSaguafNafnagvafnagoagwaeSaagaagaagaagaagaagaagabTagqabTaagaagaagaagaagaagaagaagaagaagaagaeGagxagyaeGaagaagaagaagaagaagaagaagaagaagaagaaUaBxagCaBZaBYaCcaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSagEagFafNafOafNagoagGaeSabTabTabTabTabTabTabTabTagHabTaagaagaagaagaagaagagIagIagIaagaagaeGagJagKaeGaagaagaagaagaagaagaagaagaagaagaagaaUaCOaCHaDeaDcaEMaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagagPagPagPagPagPaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSagQagRagSagTagSagUagVaeSabTafwafwafwagWafwafwafwagHabTaagaagaagaagaagaagagIagXagIaagaagaeGagYagZaeGaagaagaagaagaagaagaagaagaagaagaagaaUabHaETaEVaEUabHaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagagPaheahfahgagPagPaagaagahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhaeSaeSahiahjahjahjahkaeSaeSabTafwahlahoaFyahoahpahpahrabTaagagIagIagIagIagIagIahsagIagIagIagIahtahuagIagIagIagIagIagIahvahvahvahvaagaagaaUahwaHlaHqaHpaEMaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSaguafNafnagvafnagoagwaeSaagaagaagaagaagaagaagabTagqabTaagaagaagaagaagaagaagaagaagaagaagaeGagxagyaeGaagaagaagaagaagaagaagaagaagaagaagaaUaBxagCaBZaBYavfaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSagEagFafNafOafNagoagGaeSabTabTabTabTabTabTabTabTagHabTaagaagaagaagaagaagagIagIagIaagaagaeGagJagKaeGaagaagaagaagaagaagaagaagaagaagaagaaUaCOaCcaDeaCHaEMaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagagPagPagPagPagPaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaeSagQagRagSagTagSagUagVaeSabTafwafwafwagWafwafwafwagHabTaagaagaagaagaagaagagIagXagIaagaagaeGagYagZaeGaagaagaagaagaagaagaagaagaagaagaagaaUabHaETaEVaDcabHaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagagPaheahfahgagPagPaagaagahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhahhaeSaeSahiahjahjahjahkaeSaeSabTafwaEUahoaFyahoahpahpahrabTaagagIagIagIagIagIagIahsagIagIagIagIahtahuagIagIagIagIagIagIahvahvahvahvaagaagaaUahwaHlaHqaHpaEMaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagagPahBahCahDahEagPaagaagahhahFahGahHahIahJahKahLahKahMahKahNahKahOahKahPahKahQahKahJahKahKahRahSahTahKahRahUahTahVahWaHsahWahWahWahWahYahWahZahWahWagIaiaaibaicaidaieaifaigaihaiiaijaikailaimainaioaipaiqagIairaisaitahvaagaagaaUaHtaivaKkabHaKJaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaiwaiwaiwaiwagPaixaiyaizaiAagPaagaagahhaiBbOAaiDaiEaiFaiFaiFaiFaiGaiFaiFaiHaiGaiFaiFaiFaiFaiFaiIaiFaiFaiFaiJaiFaiFaiFaiKaiLaiNaiMajCaiPaiQaiRaiSaiOaiTaiUaiVaiWaiXaiYaiZajaajaajaajaajaajaajbajaajaajaajaajaajaajcajdajeajfajgajhahvaagaagaaUaaUaaUaaUaaUaaUaaUaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaiwajiajjaiwagPajkagPagPagPagPagPagPagPajlajmajnajoajpajpajqajrajsajtajuajvajwajuajuajuajuajuajxajuajuajuajyajuajuajzajAajBbAOajDbZTajEajFajFajGajHajHajIajJajKajLajMajNajOajOajOajOajOajOajOajOajOajOajOajOajOajPajQagIajRajSajTahvaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadajUajUajVaiwajWajXaiwajYaLMagPakaakbakcakdakeakfakgaiCakhahhahhahhakiakjakkakiahhahhahhahhahhahhahhahhahhahhahhahhahhaklakmakmaknakmakmahWaLPahWakpakqakraksahWahWahWahWagIaktakuajOakvakwakwakwakwakwakwakwakwakwakvajOajPajQagIahvakxahvahvaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadajUajUakyakzakAakBakCakDakEakFakGakHakHakHakIakJakKaiFakLahhakMaMaakOakPakQakRaMsakMakMakMakTaagaagaagaagaagaagaagaagaklakUakVakWakVakXakYakZahWalaalaahWalbalcahWaagaagagIaldakuajOalebRXbVubVubVubVubVubVubVubZcaleajOajPalgagIalhalialjalhaagaagaagaagaagaagaagaagaagalhalhalhalhalhaagaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaadajUajUakyalkallalmalnaloalpalqalralsaltalsalualvalwaiCalxahhakMaMwalzalAakQakRakOakMakMakMakTaagaagaagaagaagaagaagaagaklalBakValCakValDakYalEahWahWahWahWakqalFahWaagaagagIalGakuajOalebZdalfalfalfalfalfalfalfbZealeajOajPajQagIalhalhaMJalhalhalhalhalhalhalhalhalhalhalhaMZalJalKalhaagaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaadajUajUakyalkallalmalnaloalpalqalralsaltalsalualvalwaiCalxahhakMaMwalzalAakQakRakOakMakMakMakTaagaagaagaagaagaagaagaagaklalBakValCakValDakYalEahWahWahWahWakqalFahWaagaagagIalGakuajOalebZdalfalfalfalfalfalfalfbZealeajOajPajQagIalhalhaMJalhalhalhalhalhalhalhalhalhalhalhaMualJalKalhaagaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadajUajUalLaiwalMalNaiwalOalPagPalQalRalSalTalUakfalVaiCalWahhakManIakOalXalYalzakOakMakMakMakTaagaagaagaagaagaagaagaagaklalZakVamaambamcakYalEakYahWahWahWamdameahWaagaagagIalGakuajOalebZdbZfalfalfalfalfalfalfbZealeajOajPamfamgagXaNpamiamjamjaNzamjamkalKalKalKalKalKalKalKamlalKalhaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagammammammammammamnamnamnamnamoamoamoamoamoampamqamrahhakMakOakOamsalzakOakOakOakMakMakTaagaagaagaagaagaagaagaagaklaklamuamvamwamxakYalEakYakYahWahWahWahWahWaagaagagIamyakuajOamzbZdalfalfalfalfalfalfalfbZeamzajOajPajQagIalhalhalhalhalhamAamAamBamAaODamAamDaOFaOZalKalKalKalhaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaadaagaagammammammammammamnamnamnamnamoamoamoamoamoampamqamrahhakMakOakOamsalzakOakOakOakMakMakTaagaagaagaagaagaagaagaagaklaklamuamvamwamxakYalEakYakYahWahWahWahWahWaagaagagIamyakuajOamzbZdalfalfalfalfalfalfalfbZeamzajOajPajQagIalhalhalhalhalhamAamAamBamAaODamAamDaOhaOFalKalKalKalhaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaagaagaagamGamHamIamJamGamKamLamMamGamNamOamPamQamRamSaiCakhahhakMakOalzakOakOanIanIakOakOakOakTaagaagaagaagaagaagaagaagaagaklaklamTamUamVakYaPdalEalEakYaagaagaagaagaagaagagIamXakuajOamzbZdalfalfbZgbZgbZgalfalfbZeamzajOajPamYagIaagaagaagalhamZamZalhalhalhalhalhalhalhalhalhalhalhalhaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaadaagaagaagamGanaanbancamGandaneanfamGanganhanhanianjankaiFanlahhaRkakOakRakOakOakOakOalzalzakRakTaagaagaagaagaagaagaagaagaagaagaklaklaklaklakYannanoalEakYaagaagaagaagaagaagagIanpakuajOamzbZdalfbZeanqanqanrbZdalfbZeamzajOajPansagIaagaagaagalhantalhalhaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
+aaaaadaadaadaadaadaadaadaadaadaadaadaagaagaagamGanaanbancamGandaneanfamGanganhanhanianjankaiFanlahhaRkakOakRakOakOakOakOalzalzakRakTaagaagaagaagaagaagaagaagaagaagaklaklaklaklakYannaPsalEakYaagaagaagaagaagaagagIanpakuajOamzbZdalfbZeanqanqanrbZdalfbZeamzajOajPansagIaagaagaagalhantalhalhaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaagamGamGamGanuanvanwamGanxanyanzamGanAanBanCanDanEanFaiCanGanHakOakOakOakOakOalzakOakOakOanJakTaagaagaagaagaagaagaagaagaagaagaagaagaagaagakYanKanLanMakYaagaagaagaagaagaaganNalGanOajOamzbZdalfbZeanqakvanqbZdalfbZeamzajOanPajQanQanRanRanRanRaSqanRanRanRanRanRanRaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaagamGanUamGanVanWanXamGanYanZaoaamGamoamoamoamoamoaobaocaodaoeaofalzanIakOakOakOakOakOaogaohakTaagaagaagaagakYakYakYakYakYakYakYakYakYakYakYakYakYaSWakYakYakYakYakYakYakYagIalGakuajOamzbZdalfbZeanranqanrbZdalfbZeamzajOajPajQanRaojaokaolaomaonanRaooaopaoqaoranRaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaagaagamGaosaotaouaovaowaoxaoyaozaoAamGaoBaoCaoDaoEahhaoFaiCaoGahhaoHakOakOakOalzalzaUrakMakMakMakTaagaagaagaagakYaUsaoKaoLalEalEaoMalEalEalEalEalEalEaoNaoOaoOaoOaoOaoOaoOaoOaoPaoQakuajOamzbZdalfalfbVubVubVualfalfbZeamzajOajPaoRanRaoSaoTaoUaoVaoWanRaoXaoYanRanRanRaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagamGaoZaotaouapaapbapcapdapaaoAamGapeapfapgaphahhapiapjakhahhaUNakOakOalzaUQakMakMakMakMakMakTaagaagaagaagakYapmalEapnappappappannannannaUZaVYaVJakYakYakYakYakYakYakYakYagIaptakuajOamzbZdalfalfalfalfalfalfalfbZeamzajOajPapuanRaoSapvapwapxapyanRapzapAapBaoranRaagapCapCapCapCapCapCapCapDapEapEapFapGapGapGapGapFapEapEapHaaa
-aaaaadaadaadaadaadaadaadaadaadaadaagaagamGapIapJapKapLapMapNapOapPapQamGapRapfapgapSahhapTaiCapUapVapWapWapWapWakTakTakTakTakTakTakTaagaagaagaagakYapXalEapYaXKakYakYakYakYakYakYakYakYakYaagaagaagaagaagaagaagagIaqaakuajOalebZdalfalfalfalfalfalfbZfbZealeajOajPaqbanRaqcapvaqdaqeaoWanRaqfaqganRanRanRaagapCaqhaqiaqjaqkaqlaqmaqnaqoaqpaqqaqpaqpaqpaqpaqqaqpaqrapCaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagamGaoZaotaouapaapbapcapdapaaoAamGapeapfapgaphahhapiapjakhahhaUNakOakOalzaUQakMakMakMakMakMakTaagaagaagaagakYapmalEapnappappappannannannannaRLaVJakYakYakYakYakYakYakYakYagIaptakuajOamzbZdalfalfalfalfalfalfalfbZeamzajOajPapuanRaoSapvapwapxapyanRapzapAapBaoranRaagapCapCapCapCapCapCapCapDapEapEapFapGapGapGapGapFapEapEapHaaa
+aaaaadaadaadaadaadaadaadaadaadaadaagaagamGapIapJapKapLapMapNapOapPapQamGapRapfapgapSahhapTaiCapUapVapWapWapWapWakTakTakTakTakTakTakTaagaagaagaagakYapXalEapYaTrakYakYakYakYakYakYakYakYakYaagaagaagaagaagaagaagagIaqaakuajOalebZdalfalfalfalfalfalfbZfbZealeajOajPaqbanRaqcapvaqdaqeaoWanRaqfaqganRanRanRaagapCaqhaqiaqjaqkaqlaqmaqnaqoaqpaqqaqpaqpaqpaqpaqqaqpaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaadaagamGamGamGaqsaqtaquaqvaqwaqxaqyaqzamGapRaqAaqBaqCahhaqDaiCaqEaqFaqGaqHaqIapWaagaagaagaagaagaagaagaagaagaagaagakYaYDaqKaqLaqMakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIaptakuajOalebZdalfalfalfalfalfalfalfbZealeajOajPajQanRaqNaqOaqPaqQaqRanRaqSaqTaqUaoranRaagapCaqVaqWaqWaqWaqXaqWaqnaqoaqpaqqaqpaqpaqpaqpaqqaqpaqYapCaaa
aaaaadaadaadaadaadaadaadaadaadaadaagamGaqZaraarbaoZarcaoZardarearfargamGarhariarjarjahharkaiCarlapWarmarnaroapWarparparparparparparparparparparpakYarqalEakYakYakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIarrakuajOalebZhbZgbZgbZgbZgbZgbZgbZgbZialeajOajParsanRartaoTaoTaruarvanRarwanRanRanRanRaagapCarxaqWaryarzarAaqWaqnaqoaqparBarCarCarCarCarBaqpaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaagaagamGarDarEarbarFarGarHarIarJarKarKarLarMarNarOarParQarRaiCarSarparparTarUarparVarWarXarYarXarXarXarXarXarXarXarZasaasbakYaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagagIascakuajOakvakwakwakwakwakwakwakwakwakwakvajOajPasdaseasfaoTaoTaruasgashasiasjaskaslanRaagapCasmaqWasnasoaspaqWaqnaqoarCarBarCarCarCarCarBarCasqapCaaa
-aaaaadaadaadaadaadaadaadaadaadaagaagamGasrassastasuasuasuasuasuasuasvaswasxasyaszasAasBasCasDasEarpbegbdUasHasIasJasKasLasLasLasLasLasLasLasLasLasLasMasNasOasOasPasPasPasPasPasPagIagIaagaagaagaagaagaagaagaagagIasQakuajOajOajOajOajOajOajOajOajOajOajOajOajOasRasSasTasUasVbZjasWasXaoTasYaoTaoWaslanRaagapCaqhasZasZaqWataaqWaqnaqoarCarBarCarCarCarCarBarCaqYatbaaa
+aaaaadaadaadaadaadaadaadaadaadaagaagamGasrassastasuasuasuasuasuasuasvaswasxasyaszasAasBasCasDasEarpbegbdUasHasIasJasKasLasLasLasLasLasLasLasLasLasLasMasNasOasOasPasPasPasPasPasPagIagIaagaagaagaagaagaagaagaagagIasQakuajOajOajOajOajOajOajOajOajOajOajOajOajOasRasSasTasUasVasVasWasXaoTasYaoTaoWaslanRaagapCaqhasZasZaqWataaqWaqnaqoarCarBarCarCarCarCarBarCaqYatbaaa
aaaaadaadaadaadaadaadaadaadaadaagamGamGamGamGatcaoZaoZatdateatfatgathaoZatiatjatkatlatmatnatoatparpatqatratratratratsasLattatuatvatwatxatxatxatyasLatzatAasOatBatCatCatCatCatCatCagIagIagIaagaagaagaagaagaagaagagIatDatEatFatGatGatGatGatGatHatGatGatGatGatGatGatIatJanRatKaoTaoTatLatMatNatOaoTaoWaslanRaagapCapCapCapCatPataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaagaagamGatQatRatSatTaoZaquaotatQamGatUatVatWamGatXatYarparparparparparpatZauaauaauaauaauaasLaubaucaudaueaufaufaufaugasLbeQauibeSaukatCaulaulaulaulatCaumaunagIagIagIagIauoagIagIagIagIaupakuauqaurausautautauuauvauwauxautautautauyajPajQanRauzauzauAauBauCauDauEauFauGauHanRaagapCauIauIapCauJataaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
-aaaaadaadaadaadaadaadaadaadaagaagamGauKaoZaoZatTaoZauLaotauMamGatUauNauOamGauPauQbfxarXarXarXarXauSauTauaauUauVauWauXauYauZavaavbavcavdavdavdaveasLbfzavgasOavhatCaulaulaulaulaulaviavjavkavlavmavnavnavoavpavqavravsavtavuagIagIavvavvavvavvavvavvavwavvavvavxajPajQanRanRanRanRavyavzanRanRanRanRanRavAagIapCavBavBapCavCavDaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa
-aaaaadaadaadaadaadaadaadaadaadaagamGavEavFavGavHbhtavJaotatQamGavKavLavMamGavNavOauaauaauaauaauaauaauaauaavPavQavRavSavTavUavVavWavXavYavYavZawaasLawbavgasOavhatCaulaulaulaulaulaviaviaviawcaviaviawdaviaweatGawfawgawhawiamgagXavvawjawkawlawmawnawoawpavvawqawrawsawtawuawvawwawxawyawzawAawBawCawDawEawuawFawGawGawHawIawJaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
+aaaaadaadaadaadaadaadaadaadaagaagamGauKaoZaoZatTaoZauLaotauMamGatUauNauOamGauPauQbfxarXarXarXarXauSauTauaauUauVauWauXauYauZavaavbavcavdavdavdaveasLaZkavgasOavhatCaulaulaulaulaulaviavjavkavlavmavnavnavoavpavqavravsavtavuagIagIavvavvavvavvavvavvavwavvavvavxajPajQanRanRanRanRavyavzanRanRanRanRanRavAagIapCavBavBapCavCavDaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa
+aaaaadaadaadaadaadaadaadaadaadaagamGavEavFavGavHbhtavJaotatQamGavKavLavMamGavNavOauaauaauaauaauaauaauaauaavPavQavRavSavTavUavVavWavXavYavYavZawaasLawbavgasOavhatCaulaulaulaulaulaviaviaviawcaviaviawdaviaweatGawfawgawhawiamgagXavvawjbDBawlawmawnawoawpavvawqawrawsawtawuawvawwawxawyawzawAawBawCawDawEawuawFawGawGawHawIawJaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaagawKawKawKawKawKawKawKawKawKawKawKawKawKawKawLavOauaawMawNawOawPawQawRawSawTawUawVawWauYawXawYawZaxaaxbaxcaxdaxeblMaxgblPasOavhatCaxiaulaulaulatCaxjaxkaxlaxmaxnaxoaxpaxqaxraxsaxtaxuaxvaxwagIagIavvaxxaxyaxzaxzaxAbZmaxCaxDaxEasRawgaxFatGatGaxGatGaxHaxIatGatGawgatGatGaxJaxKaxLaxMaxNaxKaxOaqWaqnaqoarCarBarCarCarCarCarBarCaqratbaaa
aaaaadaadaadaadaadaadaadaadaadaagarpaxPaxQaxRaxRaxSaxRaxTaxUaxRaxRaxUaxRbphaxWavOauaaxXaxYaxZayaaybayaayaayaayaaycaydauYayeayfaygayhayiayjaykaylasLakYaymasObpiatCatCatCatCatCatCayoaypagIagIagIagIagIagIayqagIagIagIagIagIagIaagavvayraysaytayuayvaywayxayyayzayAayBayCayDayEayFayDayGayHayHayIayJayKayHayHayLayMayNayOayPayQaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaagarpayRaySayTayTayTayTayTayTayTayTayTayTayTayUayVauaayWawUayXayYayZayZayZazaazbazcazdasLasLasLauYauYazeasLasLasLasLaagazfasOasOasPasPasPasPasPasPagIagIagIaagaagaagaagazgazhazgaagaagaagaagaagaagavvaziazjazkazkavvazlazmavvagIagIaznagIagIagIagIagIazoagIagIagIagIagIauoagIapCazpazpapCavCazqaqWaqnaqoarCarBarCarCarCarCarBarCaqYapCaaa
aaaaadaadaadaadaadaadaadaadaadaagarpazraySayTazsazsaztazuazvazwazxazyazzazAazBazCazDazEawUawUazFazGazGazGazHawUawVazIauaazJazKazLazMazNazOazPazQatmaagazRazSazTazTazTazTazUazUazUbCOazSazSazVbCPazUazUazWazXazgazgazgazgaagaagaagavvazYazZaAaaAbavvaAcaAdavvaagagIagXaAeaAeaAeaagaAeaAfaAeaagaagaagaagaagaagapCauIauIapCaAgaAhaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaadarpazraySayTazsazsazsaAiaAjaAkaAlaAmaAnazAaAoaApaAqaArawUawUazFazGaAsazGazHawUawVaAtauaaAuaAvaAwaAxaAyaAzaAxaAAatmaABaABaABaABaagaagaagaagaagaagaagaagaagaagaagaagaagbEUbFaaADaAEaAFazgaagaagaagavvaAGaAHaAIaAJavvaAKaALavvaagagIaAMaANaAOaAeaagaAeaAfaAeaagaagaagaagaagaagapCapCapCapCaAPaAhaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaadarpaAQaySayTaARaASaASaATaAUaAVaAWaAmaAXayTaAYaAZaAqaBaawUaBbaBcaBdaBdaBdaBeaBfaBgaBhaBiaBjaBkaAxaBlaBmaBnaBoaBpatmaBqaBraBsaABaagaagaagaagaagaagaagaagaagaagaagaagaagbEUaBtaBuaBvaBwazgaagaagaAeavvavvbJSavvavvavvavvavvavvaagagIagIaAeaByaAeaagaAeaBzaAeaagaagaagaagaagaagapCaqhaqiaqkaqWaAhaqWaqnaqoarCarBarCarCarCarCarBarCaqYatbaaa
-aaaaadaadaadaadaadaadaadaadaadaadarpazraBAayTayTayTayTayTayTaBBaBCaBDaBEaBFaBGaBHaAqaBaawUaBIaBJaBJaBJaBKaBLaBLaBMaBNauaaBOaBkaBPaBlaBQaAxaBRaBSaBTaBUaBVaBWaABaagaagaagaagaagaagaagaagaagaagaagaagaagbEUaBXbLebLLaCaazgaAeaAeaAeaCbbMraAfaAeaagaagaagaagaagaagaagaagaAeaCdaAeaagaAeaAfaAeaagaagaagaagaagaagapCasmaqWaCeaCfaCgaqWaqnaqoarCarBarCarCarCarCarBarCasqapCaaa
-aaaaadaadaadaadaadaadaadaadaadaadaChaCiaCjayTazsazsaztaCkazvaClaAWaAmaCmaCnaCoaCpauaaCqaCraCsaCtaCuaCvaCwaCxaCyaCyaCzaAqaAoaBkaAxaAxaAyaCAaCBaCCatmaCDaCEaCFaABaagaagaagaagaagaagaagaagaagaagbEUbEUbEUbEUaCGbOhaCIaCJaCKaCLaCLaCLaCMbOVaCNaAeaAeaAeaagaagaagaagaagaagaAebQmaAeaagaAeaAfaAeaagaagaagaagaagaagapCarxaqWaCParzaCQaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
+aaaaadaadaadaadaadaadaadaadaadaadarpazraBAayTayTayTayTayTayTaBBaBCaBDaBEaBFaBGaBHaAqaBaawUaBIaBJaBJaBJaBKaBLaBLaBMaBNauaaBOaBkaBPaBlaBQaAxaBRaBSaBTaBUaBVaBWaABaagaagaagaagaagaagaagaagaagaagaagaagaagbEUaBXbLebLLaCaazgaAeaAeaAeaCbbqWaAfaAeaagaagaagaagaagaagaagaagaAeaCdaAeaagaAeaAfaAeaagaagaagaagaagaagapCasmaqWaCeaCfaCgaqWaqnaqoarCarBarCarCarCarCarBarCasqapCaaa
+aaaaadaadaadaadaadaadaadaadaadaadaChaCiaCjayTazsazsaztaCkazvaClaAWaAmaCmaCnaCoaCpauaaCqaCraCsaCtaCuaCvaCwaCxaCyaCyaCzaAqaAoaBkaAxaAxaAyaCAaCBaCCatmaCDaCEaCFaABaagaagaagaagaagaagaagaagaagaagbEUbEUbEUbEUaCGbOhaCIaCJaCKaCLaCLaCLaCMaCLaCNaAeaAeaAeaagaagaagaagaagaagaAebQmaAeaagaAeaAfaAeaagaagaagaagaagaagapCarxaqWaCParzaCQaqWaqnaqoarCarBarCarCarCarCarBarCaqrapCaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaCRajUayTazsazsazsaCSaAjaAkaCTaAmaCUaCVaCWaCXauaauaauaauaaAqaAqauaaCYauaaAqaAqaAqaAqaAoaBkaAxaAxaAyaAxaCBaCZatmaABaABaABaABaagaagaagaagaagaagbEUbEUbEUbEUbEUaDaaDbbEUbQGaDdbQIaDfbEUaAeaAeaAeaAeaAeaAfaAeaDgaAeaagaagaagaagaagaagaAeaByaAeaagaAeaAfaAeaagaagaagaagaagaagapCaqVaqWaqWaqWaDhaqWaqnaqoaqparBarCarCarCarCarBaqpaqYapCaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaCRaagayTaARaASaASaDiaAUaAVaAWaDjaDkazAaDlaDmaDnaDoaDpaDqaDraDsaDtaDuaDvaDwaDwaDwaDxaDyaDzaDAaDBaDCaDDaDEaDFatmaagaagaagaagaagaagaagaagaagaagbEUaDGaDHaDIbEUbEUbEUbEUaDJaDfaDfaDKbEUaagaagaagaagaAeaAfaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaANaAeaAeaAeaAfaAeaagaagaagaagaagaagapCaqhasZaDLasZaDMaDNaqnaqoaqpaqqaqpaqpaqpaqpaqqaqpaqrapCaaa
aaaaDOaDPaDPaDPaDQaDRaDSaDPaDPaDPaDPaDTaagayTayTayTayTayTayTaDUaAWaDVaDWayTaDXaDYaDZaEaaEbaEcaEdaEbaEeaEfaEbaEbaEgaEhaEiaDZaEjaEkaElaEmaElaEnaEoatmaagaEpaEpaEpaEpaEpaEpaEpaEpaEpbEUaEqaEraEsbEUaEtbEUaDfaEubEUbEUbEUbEUaagaagaagaagaAeaEvaCLaCLaCLaCLaCLaCLaCLaEwaCLaCLaCLaCLaCLaExaEyaAeaagaagaagaagaagaagapCapCapCapCapCapCapCapDapEapEapFapGapGapGapGapFapEapEapHaaa
-aEzaadaadaadaadaadaadaadaadaadaadaadaadaagayTazsazsaEAaEBaECaClaAWaEDaEEayTayTaEFaEGayTayTaEHaEIatmatmatmaEJaEJaEJaEJaEKaELaEJaEJaEJatmatmbYgatmatmaagaEpaENaEOaEOaEOaEPaEOaEQaEObYhaESbYjbYibEUbYkbEUaDfaEubEUaagaagaagaagaagaagaagaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
+aEzaadaadaadaadaadaadaadaadaadaadaadaadaagayTazsazsaEAaEBaECaClaAWaEDaEEayTayTaEFaEGayTayTaEHaEIatmatmatmaEJaEJaEJaEJaEKaELaEJaEJaEJatmatmbYgatmatmaagaEpaENaEOaEOaEOaEPaEOaEQaEObYhaESbYjbEjbEUbYkbEUaDfaEubEUaagaagaagaagaagaagaagaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaAeaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
aEWaEXaadaadaadaadaadaadaadaadaadaadaadaagayTazsazsazsaEYaAjaAkaCTaEZaFaaFbaFcaFdaFeaFfaFgaFhaFiatmaFjaFkaEJaFlaFmaFnaFoaFpaFqaFqaEJaagaEpaFraEpaagaagaEpaFsaEOaEpaEpaEpaEpaEpaEpbEUaFtaFuaFvaFwaFxbYoaFxaFzbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaFAaAUaAVaAWaEZaAmaAmaAmaFBaFCaFDaCVaFEbYsatmaFFaFGaEJaEJaEJaEJaEKaELaFqaFqaEJaagaEpaFHaEpaagaagaEpbYuaEQaEOaEpaagaagaagaagbEUbEUbEUbYvbYxbEUbEUbEUbEUbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaFAaAUaAVaAWaEZaAmaAmaAmaFBaFCaFDaCVaFEbYsatmaFFaFGaEJaEJaEJaEJaEKaELaFqaFqaEJaagaEpaFHaEpaagaagaEpbMraEQaEOaEpaagaagaagaagbEUbEUbEUbYvbYxbEUbEUbEUbEUbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTaFLaAWaFMaFNaFNaFNaFOaFPaFQazAaFRaFSaFTaFUaFVaFWaFXaEJaFYaFZaGaaGbaGcaEJaagaEpaFraEpaagaagaEpaEpaEpaEOaEpaagaagaagaagaagaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsaEAaGeaECaClaAWaAmaAmaAmaGfaGgaGhaGiayTaGjaGkatmaGlaGlaGmaGmaEJaGnaGoaGpaGqaGraEJaagaEpaFraEpaEpaagaagaagaEpbYDbgibdqbdqbdqbdqbdqaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsazsaGsaAjaAkaGtaAmaAmaGuaGvayTaGwaGwaGwaGxaGyaGzaGzaGzaGzaGzaEJaGAaGBaGCaGDaGDaEJaagaEpaGEaGFaEpaagaagaagaEpaEObgibdqbdVbgGbdXbdqbdqbEUaGGaGHbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaGIaAUaGJaGKaGLaGMaGNaGOayTaGPaGQaGRaGSaGTaGUaGVaGPaGzaagaEJaGWaGWaGCaGXaGXaEJaGYaEpaEpaGZaEpaEpaEpaagaEpaEObgibdqbeEbhibeGbeHbeIbEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaadaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTayTayTayTayTayTayTayTaGzaGzaHaaHbaHcaHdaGVaGPaGzaagaEJaGWaGWaHeaGXaGXaEJaGYaGYaGYaHfaHfaHgaEpaEpaEpaEQbgibdqbhAbhIbhCbhMbhLbiybinaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaGzaGzaHhaHiaGzaGzaGzaGzaagaEJaEJaHjaEJaHjaEJaEJaGYaGYaGZaHfaHkaHfbYJaEOaEQaEQbgibdqbfKbfLbfMbfNbfObEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaEXaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaHmaHnaHnaHoaagaagaagaagaagaEJaFlaEJaFlaEJaagaGYbYMbYKaHfaGZbYNaEpaEpaEpaEpaEpbdqbdqaHraHraHraHraHrbYObYPaHraHraHraHraHraHraHraHraHraHraHraHraHraHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
-aEWaadaadaadaadaEXaadaEXaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaEJaEJaEJaEJaEJaagaEpaEpaEpaEpaEpaEpaEpaagaagaagaagaagaagaHraHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHEaHFaHGaHHaHxaHIaHEaHEaHJaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsaEAaGeaECaClaAWaAmaAmaAmaGfaGgaGhaGiayTaGjaGkatmaGlaGlaGmaGmaEJaGnaGoaGpaGqaGraEJaagaEpaFraEpaEpaagaagaagaEpbYDaEpbmAbmAbmAbmAbmAaagbEUaGdaEqbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTazsazsazsaGsaAjaAkaGtaAmaAmaGuaGvayTaGwaGwaGwaGxaGyaGzaGzaGzaGzaGzaEJaGAaGBaGCaGDaGDaEJaagaEpaGEaGFaEpaagaagaagaEpaEObgibmAbdVbgGbdXbmAbmAbEUaGGaGHbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaadaadaadaadaadaadaadaadaadaadaagaagayTaARaASaASaGIaAUaGJaGKaGLaGMaGNaGOayTaGPaGQaGRaGSaGTaGUaGVaGPaGzaagaEJaGWaGWaGCaGXaGXaEJaGYaEpaEpaGZaEpaEpaEpaagaEpaEObgibmAbeEbhibeGbeHbeIbEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaadaadaadaadaadaadaadaadaadaadaadaagaagayTayTayTayTayTayTayTayTayTayTayTayTayTaGzaGzaHaaHbaHcaHdaGVaGPaGzaagaEJaGWaGWaHeaGXaGXaEJaGYaGYaGYaHfaHfaHgaEpaEpaEpaEQbgibmAbhAbhIbhCbhMbhLbiybYlaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaGzaGzaHhaHiaGzaGzaGzaGzaagaEJaEJaHjaEJaHjaEJaEJaGYaGYaGZaHfaHkaHfbYJaEOaEQaEQbgibmAbfKbfLbfMbfNbfObEUaGdaDfbEUaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaEXaEXaEXaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaHmbmBbmBbmCaagaagaagaagaagaEJaFlaEJaFlaEJaagaGYbYMbYKaHfaGZbYNaEpaEpaEpaEpaEpbmAbmAaHraHraHraHraHrbYObYPaHraHraHraHraHraHraHraHraHraHraHraHraHraHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
+aEWaadaadaadaadaEXaadaEXaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadajUajUajUajUaagaagaagaagaagaEJaEJaEJaEJaEJaagaEpaEpaEpaEpaEpaEpaEpaagaagaagaagaagaagaHraHuaHvaHwaHxaHyaHzaHAaHBaHCaHDaHEaHFaHGaHHaHxaHIaHEaHEaHJaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aEWaEXaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHKaHLaHMaHNaHOaHNaHPaHQaHRaHSaHSaHSaHTaHNaHNaHNaHUaHVaHWaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aEzaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHXaHYaHYaHYaHZaHYaHYaIaaIbaIcaIcaIcaIdaIeaIfaIgaIhaIiaIjaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
aaaaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaadaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaHraHKaHYaHraHraIkaHYaHYaIlaImaInaIoaIcaIdaIpaIqaIraIhaIiaIsaHraagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaagaadaadaadaadaadaadaadaadaadaadaadaadaadaaa
@@ -5540,95 +5538,95 @@ aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJ
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJKaJKaJKaJKaJKaJKaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaJLaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJKaJMaJNaJOaJPaJQaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaJRaJSaJTaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaJUaJUaJUaJUaJVaJWaJWaJKabSaJPaJPaJYaJZaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKaaKbaKcaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaKdaKeaKfaKgaKhaKiaKjacqaKlaKmaKnaKoaKpaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKaaKbaKcaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaKdaKeaKfaKgaKhaKiaKjacqagBaKmaKnaKoaKpaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKqaKraKsaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaKtaKuaKvaJUaKwaKxaKyaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKzaKzaKzaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaKAaKBaKCaKDaKEaKxaKFaJWaJJaJJaJKaehaeiaeyaeYaejaekafyafXaeZafxagtagAaJKaKHaKIagBaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaJLaJLaKKaKLaKLaKMaKNaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaJUaJUaJUaJUaKOaKxaJWaJWaJJaJJaJKagLaJPaJPaKoagMaJPaJPaJPaJPaKoaJPahaaJKagNaKQaKRaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKzaKzaKzaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJUaKAaKBaKCaKDaKEaKxaKFaJWaJJaJJaJKaehaeiaeyaeYaejaekafyafXaeZafxagtagAaJKaKHaKIagNaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaJLaJLaKKaKLaKLaKMaKNaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaJUaJUaJUaJUaKOaKxaJWaJWaJJaJJaJKagLaJPaJPaKoagMaJPaJPaJPaJPaKoaJPahaaJKahlaKQaKRaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaKSaKTaKUaKUaKUaKUaKVaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaKWaKXaKYaKZaLaaLbahbaJWaJWaLdaJWaJJaJJaJJaJKahcaKoahnahqahdahmahzahAahxahyahqaiuaJKaLfaLgaKHaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaLiaKLaKLaKLaLjaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLkaLlaLmaLnaLoaLpaLqaLraLsaLtaJWaJJaJJaJJaJKakSaJPahaaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaLgaKHalyaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLxaJLaLyaLzaLAaKLaLBaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLkaLCaLmaLDaJWaJJaJJaJJaLEaLFaJWaJJaJJaJJaJKalHahqalIaJKaLGaLvaLvaLvaLvaLHaLvaLvaLwamhaLgaLJaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaKLaKLaJLaLKaLLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLkaLCaLmaLNaJWaJJaJJaJJamtaLdaJWaJJaJJaJJaJKaJKaJKamEaJKaLvaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaLQaLQaJLaLRaLSaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLkaLCaLmaLDaJWaJJaJJaJJaoiaLdaLUaLUaLUaLUaLVaLvaLvaLvaLvaLWaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLxaJLaJLaJLaJLaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaJWaJWaoIaLXaLYaLZaJWaJJaJJaJJaplaMbaLrapqaLraLraMcaMdaMdaMdaMeaMfaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLxaJLaJLaJLaJLaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaJWaJWaoIaLXaLYaLZaJWaJJaJJaJJapkaMbaLrapqaLraLraMcaMdaMdaMdaMeaMfaJKaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMgaMhaLUaLUaMiaMjaMkaMlaMmaLmaMnaJWaJJaJJaJJaJJaJJaJJaJJaJJaJJaJKaMoaMoaMpaMqaLvaJKaJKaJKaJKaJKaJKaJKaJKaMraMraMraMraMraMraMraMraMraMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJapZaMtaMtaMvaMvaMvaMvaMxaMyaMzaMAaMBaJWaJJaJJaJJaJJaJJaJJaJJaJJaJJaJKaKGaKGaLuaMqaLvaLvaMCaMDaMEaMFaMEaMEaMEaMGaMGaMGaMGaMGaMHaMGaMIauhaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaLhaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJapraMtaMtaMvaMvaMvaMvaMxaMyaMzaMAaMBaJWaJJaJJaJJaJJaJJaJJaJJaJJaJJaJKaKGaKGaLuaMqaLvaLvaMCaMDaMEaMFaMEaMEaMEaMGaMGaMGaMGaMGaMHaMGaMIauhaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaMKaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaMLaMhaujaMMaLmaLmaLmaLmaMNaLmaLmaLmaMOaJWaJJaJJaMPaMPaMPaJJaJJaJJaJJaJKaKGaKGaLuaMQaMdaMRaMSaMdaMdaMdaMdaMdaMdaMUaMUaMUaMVaMWaMWaMWaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaMYaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWavfaMMaMMaLmaLmaLmaLmaLmaNaaNbaNcaNdaMnaJWaJJaJJaMPaNeaMPaJJaJJaJJaJJaJKaKGaKGaKGaxfaNfaNgaNhaNiaNjaJKaJKaJKaJKaMraNkaNlaNmaNnaNoaxhaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaMYaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWapZaMMaMMaLmaLmaLmaLmaLmaNaaNbaNcaNdaMnaJWaJJaJJaMPaNeaMPaJJaJJaJJaJJaJKaKGaKGaKGaxfaNfaNgaNhaNiaNjaJKaJKaJKaJKaMrauRaNlaNmaNnaNoaxhaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJLaJLaJLaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaNqaNraNsaxVaNtaJWaNuaMPaMPaNvaNwaMPaMPaMPaMPaNxaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaMPaynaACaMPaMPaMPaNAaNAaNAaMraNBaNCaNDaNEaNFaNGaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaNHaNIaNJaNJaNKaJWaNLaMPaNMaNNaNOaNPaNQaNRaNSaNTaNUaNVaNWaNRaNXaNYaNZaOaaNZaObaOcaOdaOeaOfaOgaMPaJJaNAaNAaMraOzaOiaOjaOiaOBaERaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaJWaJWaOmaMPaOnaOoaOpaOqaOraOsaOsaOsaOsaOsaOsaOtaOsaOsaOsaOsaOsaOsaOuaOvaOwaOxaOyaMPaJJaJJaNAaMraOzaOiaOAaOiaOBaOlaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaOCaFIaOEaOEaFJaFKaOGaMPaOHaOIaOJaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOKaOLaOMaOyaMPaJJaJJaJJaMraONaOiaOOaOiaOBaOlaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaOPaOQaOQaOQaOQaOQaOQaMPaORaOSaOTaOUaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOVaOWaOXaOYaOyaMPaJJaJJaJJaMraJXaPaaPbaPcaKPaERaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLcaOQaPeaPeaOQaOQaOQaMPaOHaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaPiaPjaMPaJJaJJaJJaMraPkaPlaPmaMWaPnaLeaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaPoaOQaPeaPeaOQaOQaOQaMPaPpaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaPqaMPaMraMraMraMraMraMraPmaMWaLIaPsaMWaMXaMraJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaLcaOQaPeaPeaOQaOQaOQaMPaOHaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaPiaPjaMPaJJaJJaJJaMraPkaPlaPmaMWaPnaOlaMWaMXaMraJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaPoaOQaPeaPeaOQaOQaOQaMPaPpaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaPqaMPaMraMraMraMraMraMraPmaMWaLIaKlaMWaMXaMraJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaPtaPuaLOaPvaPwaOQaPxaPyaOQaPzaPzaMPaOHaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaPAaPBaPCaPCaPDaPEaPCaLTaPGaPHaMWaMWaMWaMXaMraJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaPJaPKaPJaPLaPwaPMaPNaPxaPOaPxaPxaMPaPPaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaPQaMPaMraMraMraMraMraMraPRaPSaMGaMGaMGaMuaMraJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaPJaPKaPJaPLaPwaPMaPNaPxaPOaPxaPxaMPaPPaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaPQaMPaMraMraMraMraMraMraPRaPSaMGaMGaMGaLeaMraJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaPKaPUaPVaJWaPwaOQaPWaPXaPYaPZbZVaQaaQbaOSaOTaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaOyaMPaQcaQdaQeaQfaQgaMraQhaQiaMTaMTaMTaMTaMTaMTaMTaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaQjaOQaQkaQlaQmaQnaQoaQpaQqaQraQsaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaQtaMPaQuaQvaQvaQwaQxaMraQyaMXaQzaQAaMTaQBaQCaQDaMTaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaJWaJWaJWaJWaQjaOQaQkaQlaQmaQnaQoaQpaQqaQraQsaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaQtaMPaQuaQvaQvaQwaQxaMraQyaMXaQzaQAaMTaNkaQCaQDaMTaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJWaQjaOQaOQaOQaOQaOQaQEaMPaQFaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaQHaMPaQuaQvaQvaQIaQxaMraQJaOkaQKaQxaMTaQvaQvaQLaMTaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaQMaQNaQMaQOaQPaQPaSraPraMPaOHaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaOyaMPaRbaQSaQTaQUaQVaMraQWaMXaQKaRgaMTaQvaRhaQvaQvaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaQMaQMaQMaQMaQMaQYaQZaRaaRqaRcaRdaReaRfaMPaOHaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaRiaRjaMraMraRCaMraMraMraRlaRmaRnaRoaRpaQvaRUaQvaRLaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaQMaQNaQMaQOaQPaQPaSraOZaMPaOHaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaOyaMPaPraQSaQTaQUaQVaMraQWaMXaQKaRgaMTaQvaRhaQvaQvaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaQMaQMaQMaQMaQMaQYaQZaRaaRqaRcaRdaReaRfaMPaOHaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOYaRiaRjaMraMraRCaMraMraMraRlaRmaRnaRoaRpaQvaRUaQvaQBaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaRXaRcaRdaRtaRdaRuaRvaRwaRxaRyaRzaQPaSraRjaOHaOYaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRAaRBaShaRDaRDaREaRFaRFaSGaRHaMXaMTaMTaMTaMTaMTaMTaMTaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaRIaSPaRxaSPaRJaRKaSTaRMaSraSraRNaRxaRxaROaRPaRQaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRRaRSaMPaMWaMWaMWaMWaMWaMraRTaMXaMTaTAaRVaRWaUmaMTaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaUuaJJaJJaJJaJJaJJaJJaJJaUvaUwaJJaJJaJJaMPaPpaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRRaQHaMPaScaMraMraMraMraMraRTaMXaMTaMTaMTaUxaMTaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaRIaSPaRxaSPaRJaRKaSTaRMaSraSraRNaRxaRxaROaRPaRQaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRRaRSaMPaMWaMWaMWaMWaMWaMraRTaMXaMTaRbaRVaRWaUmaMTaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaUuaJJaJJaJJaJJaJJaJJaJJaOZaUwaJJaJJaJJaMPaPpaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRRaQHaMPaScaMraMraMraMraMraRTaMXaMTaMTaMTaUxaMTaMTaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaUuaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaOnaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaRRaSeaMPaVZaMraSfaPIaMWaMWaRTaMXaWAaMWaMWaMWaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaQMaQMaQMaQMaJJaQMaRYaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaSiaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSjaOyaMPaQXaMraSkaSlaSmaSnaSoaSpaMTaMTaMTaMTaPIaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaJJaJJaJJaJJaGmaJJaJJaJJaQMaQMaQMaQMaQMaQMaQMaQMaQMaYEaXRaQMaQMaQMaRYaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaMPaMPaSsaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOsaStaMPaQxaMraSkaSuaPHaSvaSwaSxaMTaSyaSzaMTaSAaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaZkaJJaYYaJJaGmaJJaJJaJJaQMaSDaSXaSXaSXaSFaSFaSraSraSrbaubaJbaRaSHaSIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaNeaSJaSKaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSLaOyaMPaQxaMraSMaSuaMWaSNaSOaQxaMTaSQaSRaMTaSSaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbbuaSUaSUaSVaGmaJJaJJaJJaQMbczaSXaJJaJJaJJaJJaJJaJJaJJaJJaRYaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaMPaMPaSYaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSZaQHaMPbdfaMraTbaSuaMWaTcaTdbdEaMTaTfaTgaMTaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaJJaJJaJJaJJaGmaJJaJJaJJaQMaQMaQMaQMaQMaQMaQMaQMaQMaYEaTAaQMaQMaQMaRYaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaMPaMPaSsaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaOsaStaMPaQxaMraSkaSuaPHaSvaSwaSxaMTaSyaSzaMTaSAaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaUvaJJaYYaJJaGmaJJaJJaJJaQMaSDaSXaSXaSXaSFaSFaSraSraSrbaubaJbaRaSHaSIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaNeaSJaSKaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSLaOyaMPaQxaMraSMaSuaMWaSNaSOaQxaMTaSQaSRaMTaSSaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaUZaSUaSUaSVaGmaJJaJJaJJaQMaVYaSXaJJaJJaJJaJJaJJaJJaJJaJJaRYaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaMPaMPaMPaSYaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSZaQHaMPaXKaMraTbaSuaMWaTcaTdbdEaMTaTfaTgaMTaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTiaSUaTjaGmaJJaJJaJJaQMaQMaSFaJJaJJaJJaJJaJJaJJaJJaJJaTkaTlaTlaTmaTmaTmaTmaTmaTmaMPaJJaJJaJJaJJaJJaJJaMPaOHaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSZaOyaMPaQxaMraSkaSuaMWaTnaQiaMWaMTaTfaTfaMTaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaToaTpaSUaTraGmaJJaJJaJJaJJaQMbehaJJaJJaJJaTsaTsaTsaTsaTtaTuaTvaTwaTxaTxaTxaTxaTxaTxaMPaMPaMPaJJaJJaJJaJJaMPaOHaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSZaOyaMPbelaTzbeiaTBaRFaTCaTDaMWaMTaMTaMTaMTaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTEaTFaTGaGmaJJaJJaJJaJJaQMaSEaJJaJJaJJaTsaTHaTIaTJaTKaTLaTMaTNaTxaTOaTOaTOaTOaTxaTPaTQaTRaMPaMPaMPaMPaMPaOHaSbaQGaTSaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTUaOXaSZaRiaMPaMraMraMraMraMraMraTVaMWaWAaMWaMWaMWaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaToaTpaSUaXPaGmaJJaJJaJJaJJaQMbehaJJaJJaJJaTsaTsaTsaTsaTtaTuaTvaTwaTxaTxaTxaTxaTxaTxaMPaMPaMPaJJaJJaJJaJJaMPaOHaSbaQGaPfaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPgaPhaOXaSZaOyaMPbelaTzbeiaTBaRFaTCaTDaMWaMTaMTaMTaMTaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTEaTFaXRaGmaJJaJJaJJaJJaQMaSEaJJaJJaJJaTsaTHaTIaTJaTKaTLaTMaTNaTxaTOaTOaTOaTOaTxaTPaTQaTRaMPaMPaMPaMPaMPaOHaSbaQGaTSaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTTaTUaOXaSZaRiaMPaMraMraMraMraMraMraTVaMWaWAaMWaMWaMWaMWaMTaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaTqaTjaQMaQMaQMaQMaQMaQMaSXaQMaJJaJJaTsaTWaTXaTYaTsaTZaTvaUaaTxaTOaTOaTOaTOaTOaOsaUbaUcaUcaUdaUeaUfaUgaUhaSbaUiaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUjaUkaSZaUlbfJaUnaUoaUpaUqaMWbgVaTVaMWaMTaMTaMTaMTaMTaMTaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbiBaSUaSUaUtaQMbjGbjjbjzbkEaSXaSXaQMaJJaJJaTsaUyaUzaUAaUBaUCaUDaUEaTxaTOaTOaTOaTOaTOaOsaOsaOsaOsaOsaOsaOsaOoaUFaUGaUHaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUJaUKaULaUMbkFaUOaUOaUPaUOaUObldaURaMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUaUtaQMbjGbjjbjzbkEaSXaSXaQMaJJaJJaTsaUyaUzaUAaUBaUCaUDaUEaTxaTOaTOaTOaTOaTOaOsaOsaOsaOsaOsaOsaOsaOoaUFaUGaUHaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUIaUJaUKaULaUMbkFaUOaUOaUPaUOaUObldaURaMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaUSaSUaUTaUUaUVaSEbljaUVaSEaUWaQMaJJaJJaUXaUXaUXaUYaUYblOaVaaVbaTxaTOaTOaTOaTOaTxaVcaVdaVeaVfaVfaVfaVfaVgaVhaSjaViaVjaVkaVlaVfaVfaVmaVfaVfaVeaVfaVnaVfaVkaVfaVfaVgaVoaVpaVfaVqaMPaMraMraMraMraMraMraVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUaVsaVtaVtaVtaVtaVtaUXaUXaUXaUXaUXaUXaUXaUXaUYaVuaVvaVaaVwaTxaTxaTxaTxaTxaTxaVfaVxaTRaMPaMPaVyaVyaVyaVzaVAaVBaVyaVyaVCaVCaVCaVCaVCaVCaVCaVCaVDaVEaVEaVEaVEaVEaVFaVEaVGaVEaVEaVHaVIaMWaMWbpsaMraVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaVKaSUaSUbpwaVtaVLaVMaVNaVtaVOaVPaVQaVRaVSaVQaVPaVQaUYaVTaVUaVaaVVaVWaVWaVWaVWaVXaTmaMPaMPaMPbqUbqWaVyaWaaWbaWcaWdaWeaWfaWgaWhaWiaWjaWkaWlaWmaWnaVCaNeaVEaWoaWpaWqaWraWsaWtaWuaWvaVEaWwaWxaMWaPIaMWaWyaVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaVKaSUaSUbpwaVtaVLaVMaVNaVtaVOaVPaVQaVRaVSaVQaVPaVQaUYaVTaVUaVaaVVaVWaVWaVWaVWaVXaTmaMPaMPaMPbbubczaVyaWaaWbaWcaWdaWeaWfaWgaWhaWiaWjaWkaWlaWmaWnaVCaNeaVEaWoaWpaWqaWraWsaWtaWuaWvaVEaWwaWxaMWaPIaMWaWyaVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaWzaSUaSUaTjaVtaWBaWCaWDaVtaWEaWFaWFaWGaWHaWFaWFaWIaUYaWJaVUaVaaVaaVaaVaaVaaVaaWKaWLaQMaJJaJJaJJaJJaVyaWMaWNaWOaWPaWQaWRaWSaWTaWUaWVaWVaWUaWWaWXaVCaMPaVEaWYaWZaXaaXaaXbaXaaXaaXcaVEaXdaWxaMWaMWaMWaMraVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaWzaTqaUSaTjaVtaXeaXfaXgaVtaXhaXiaXjaXkaXlaXmaXnaXoaUYaXpaXqaXraXsaXtaXuaXvaVaaXwaXxaXyaJJaJJaJJaJJaVyaWMaXzaXAaXBaXCaXDaXEaWTaXFaXGaXHaXIaWWaXJaVCbFbaVEaXLaXaaXaaXaaXMaXNaXNaXOaVEaXPaWxaPHaMWaXQaMraVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaWzaTqaUSaTjaVtaXeaXfaXgaVtaXhaXiaXjaXkaXlaXmaXnaXoaUYaXpaXqaXraXsaXtaXuaXvaVaaXwaXxaXyaJJaJJaJJaJJaVyaWMaXzaXAaXBaXCaXDaXEaWTaXFaXGaXHaXIaWWaXJaVCblraVEaXLaXaaXaaXaaXMaXNaXNaXOaVEbqUaWxaPHaMWaXQaMraVraMWaMraJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbFwaVtaXSaXTaXUaXVaXWaXXaXYaXZaXZaYaaYbaYcaYdaYeaYfaYgaYhaYiaYiaYjaVaaYkaYlaQMaJJaJJaJJaJJaVyaYmaWRaYnaYoaYpaXDaYqaWhaYraXGaXGaXIaWWaYsaVCaYtaVEaYuaYvaYvaYwaYxaYyaYzaYAaVEaXdaYBaPHaPHaYCaYCbKWbKZaYCaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaYFaSUaSUaTjaVtaYGaYHaYIaYJaYKaYLaYMaYNaYOaYaaYPaYQaYRaYSaYTaYUaYVaYWaYiaYXaVabLcaYZaQMaJJaJJaJJaJJaVyaZaaZbaZcaWRaZdaWRaZeaWTaZfaZgaZgaWUaZhaZiaVCaYtaVEaVEaVEaVEaVEaVEaVEaZjaVEaVEbNDaZlaMWaMWaYCaZmaZnaZoaZpaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaZqaTFaTGaVtaZraYHaZsaZtaZuaZvaZwaYNaYOaYaaYPaZxaZyaZzaZAaZBaZCaZBaZDaZEaVaaZFaZGaQMaJJaJJaJJaJJaVyaZaaZHaZIaZJaZKaZLaZMaZNaZOaZPaZQaZRaZSaZTaVCbPIaZUaZUaZVaYtaYtaYtaYtaYtaZWaYCaYCaYCaYCaYCaYCaZXaZYaZZbaaaYCaJJaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbabaUSaSUaTjaVtbacbadbaeaVtbafbagbahbaibajbakaYPbalaUYbambanbaobapbaqbarbasaVabatbQnaQMbavbavbavbavaVyaZabawbaxbaybazbaAbaBaVCbaCbaDbaEbaFbaGbaHaVCahvahvahvahvaYCaYCaYCaYCaYCbaIbXXaYCbaKbaLbaMbaNbaObaPaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbXYaSUaTFbaSaVtbaTbaUbaVaVtbaWbaXbaYbaZbaZbaZbbabbbaUYbbcbanbbdbbebbfbarbbgaVabbhbavbavbavbbibavbavbavbavbavbbjbbkbblbavbavbbmbbnbbobbpbbmbbmbbmbbmbbqaisbbrahvaJJaJJaJJaJJaYCaZUaZVaYCbbsbbtbYaaYtbbvbbwbbxbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbabaUSaSUaTjaVtbacbadbaeaVtbafbagbahbaibajbakaYPbalaUYbambanbaobapbaqbarbasaVabatbQnaQMbavbavbavbavaVyaZabawbaxbaybazbaAbaBaVCbaCbaDbaEbaFbaGbaHaVCahvahvahvahvaYCaYCaYCaYCaYCbaIbtqaYCbaKbaLbmzbaNbaObaPaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbtraSUaTFbaSaVtbaTbaUbaVaVtbaWbaXbaYbaZbaZbaZbbabbbaUYbbcbanbbdbbebbfbarbbgaVabbhbavbavbavbbibavbavbavbavbavbbjbbkbblbavbavbbmbbnbbobbpbbmbbmbbmbbmbbqaisbbrahvaJJaJJaJJaJJaYCaZUaZVaYCbbsbbtaYtaYtbbvbbwbbxbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbbyaVtbbzbbAbbBaVtbbCbbDbbEbbFbbGbbHbbEbbIaUYbbJbbKbbLbbMbbNbbObbPaVabbQbbRbbTbbVbbUbbSbbWbbXbbYbbZbcabcbbccbcdbcebbmbcfbcgbchbcibcjbckbclbcmbcnbcoahvaJJaJJaJJaJJaYCaZUbaIbcpbbsbcqbcrbcsbctbbwaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaSgaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbcuaSUaSUbYeaVtbcwbcxbcyaVtaUXbYfaUXaUXaUXaUXaUXaUXaUYbcAbcBbcCbcDbcEbcFbcGaVabcHbcIbcJbcKbcLbcMbcPbcObcNbcQbcRbcSbcTbcUbcVbcWbcXbcYbcZbdabcgbdbbbmajRbdcbddahvaJJaJJaJJaJJaYCbdebYnaYCbbsbcqbdgbdhbdhbdiaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbcuaSUaSUbwkaVtbcwbcxbcyaVtaUXbYfaUXaUXaUXaUXaUXaUXaUYbcAbcBbcCbcDbcEbcFbcGaVabcHbcIbcJbcKbcLbcMbcPbcObcNbcQbcRbiObcTbcUbcVbcWbcXbcYbcZbdabcgbdbbbmajRbdcbddahvaJJaJJaJJaJJaYCbdebYnaYCbbsbcqbdgbdhbdhbdiaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbcvaVtaVtaVtaVtaVtaGmbdjbdkaGmaJJaJJaJJaJJaUYbdlbdlbdmbdnbdmbdlbdlbdlbdobdpbavbavbdtbdvbdWbdvbdtbdrbdsbeFbdYbdZbeJbbobdwbdxbdybdzbdxbdAbbmahvahvahvahvaYCaYCaYCaYCaYCbYraZZaYCbdBbdCbdDaZZbbxaZZaZZbaQaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbYtaGmbdFbdGbdHbdIbdJbdKbdLaGmaJJaJJaJJaJJaJJbdlbdMbdNbdObdPbdQbdRbdlbdSbdTbavbYwbdtbeKbeLbeMbdtbdtbdtbfgbdubcUbfhbbmbeabebbecbedbeebefbbmbYzbYybejbejbejbekbejbdebdebdebYAaYCbembenbeoaZZbepbeqberbesaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTqaUSaSUaGmbetaGmaGmaGmaGmbdjbeuaGmaJJaJJaJJaJJaJJbdlbevbewbexbeybezbeAbdlbeBbeCbavbeDbdtbfibflbfobfjbfkbdtbfRbfpbcUbfSbbmbbmbbobbobbobbobbmbbmbeNbeNbeNbeNbeNbeNaYCaYCaYCaYCaYCaYCaYCaYCbeObePbYCbeRbYBaYCaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaSUaSUbYtaGmbdFbdGbdHbdIbdJbdKbdLaGmaJJaJJaJJaJJaJJbdlbdMbdNbdObdPbdQbdRbdlbdSbdTbavbOVbdtbeKbeLbeMbdtbdtbdtbfgbdubcUbfhbbmbeabebbecbedbeebefbbmbXXbYybejbejbejbekbejbdebdebdebYAaYCbembenbeoaZZbepbeqberbesaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaThaTqaUSaSUaGmbetaGmaGmaGmaGmbdjbeuaGmaJJaJJaJJaJJaJJbdlbevbewbexbeybezbeAbdlbeBbeCbavbeDbdtbfibflbfobfjbfkbdtbfRbfpbcUbfSbbmbbmbbobbobbobbobbmbbmbeNbeNbeNbeNbeNbeNaYCaYCaYCaYCaYCaYCaYCaYCbeObePbYCbeRbXYaYCaYCaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbeTaSUaSUbeUaGmaGmaGmaJJaJJaGmbeVbeWaGmaJJaJJaJJaJJaJJbdlbeXbeYbeZbfabfbbfcbdlbfdbfebavbffbdtbgjbgtbgybgrbgsbgEbfmbfnbgDbgFbfqbfrbfsbfsbfsbfsbfsbftbeNbfubfvbfwbfwbeNaJJaJJaJJaJJaJJaJJaJJbYEbYFbKZbYEaYCaYCaYCaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbfybYGbfAbfAaGmaJJaJJaJJaJJaGmbdjbeuaGmaJJaJJaJJaJJaJJbdlbfBbfCbfDbfEbfFbfGbdlbfHbfIbavbYHbdtbgHbgKbhbbgIbgJbdtbfPbfQbhdbhebfTbfTbfTbfTbfUbfUbfVbfWbfXbfYbfZbgabgbbeNaJJaJJaJJaJJaJJaJJaJJbYEbgcaZZbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbfybYebfAbfAaGmaJJaJJaJJaJJaGmbdjbeuaGmaJJaJJaJJaJJaJJbdlbfBbfCbfDbfEbfFbfGbdlbfHbfIbavbYibdtbgHbgKbhbbgIbgJbdtbfPbfQbhdbhebfTbfTbfTbfTbfUbfUbfVbfWbfXbfYbfZbgabgbbeNaJJaJJaJJaJJaJJaJJaJJbYEbgcaZZbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaGmaGmaGmaGmaGmaJJaJJaJJaJJaGmbdjbeubgdbgdbgdbgdbgdbgdbdlbdlbdlbdlbdlbdlbdlbdlbgebgfbggbggbggbggbggbggbggbggbggbggbghbhjbhkbggbggbggbggbggbggbggbavbeNbgkbfZbgabgabeNaJJaJJaJJaJJaJJaJJaJJbYEbgcbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbdjbeubgdbglbgmbgnbgobgpbgdaJJbggbgqbhlbhzbhHbgubgvbgwbgxbiDbgzbgAbgBbgCbjfbjhbjTbkobjPbhcbZvbZwbgLbgMbgNbgObgPbggaJJbeNbgQbfZbgRbgSbeNaJJaJJaJJaJJaJJaJJaJJbYEbgcbYEbgTaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbgUbYIbgdbgWbgXbgYbgYbgZbgdaJJbggbhabZxbhGbhGbZzbZybhfbhgbhhbifbhhbhhbhhbhhbhgbhgbhhbZAbhhbZBbhhbigbhmbhnbhmbhobggaJJbeNbeNbhpbhqbeNbeNaJJaJJaJJaJJaJJaJJaJJbYEbgcbYEbgTaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmbhrbhsbYLbhubhvbhwbgYbhxbgdaJJbggbhybZCbjEbiCbZDbhBbhDbhEbhFbhGbhGbhGbhGbhGbZEbZGbhGbZFbhcbhcbhcbhZbhNbhNbhJbhObggaJJaJJbeNbeNbeNbeNaJJaJJaJJaJJaJJaJJaJJaJJbYEbgcbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaGmaGmaGmbgdbhPbhQbhRbhSbhTbgdaJJbggbhUbhVbhWbhXbhXbhXbhYbhZbiabibbibbicbicbicbidbhnbhcbhcbhcbhcbhcbhZbihbiibijbikbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbgcbilbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJJaJJaJIaJJaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbgdbgdbgdbgdbgdbgdbgdaJJbggbimbhVbZHbiobipbiqbirbhZbisbjwbitbiubiubiubiubiibibbibbibbibbicbivbiwbixbZIbizbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiCbZJbiEbiFbiGbiHbiIbhZbisbhcbiJbiKbiKbiKbiKbiKbiKbiLbiMbiNbihbiObjgbiQbiRbiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJJaJJaJIaJJaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbgdbgdbgdbgdbgdbgdbgdaJJbggbimbhVbZHbiobipbiqbirbhZbisbjwbitbiubiubiubiubiibibbibbibbibbicbivbiwbixbZIbizbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbYmbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiCbZJbiEbiFbiGbiHbiIbhZbisbhcbiJbiKbiKbiKbiKbiKbiKbiLbiMbiNbihblvbjgbiQbiRbiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbiAbcrbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiTbiUbiIbiVbiWbiEbiPbiXbiYbiZbjabjbbjbbjbbjbbjbbjbbjcbjdbjebhmbZKbjgbjgbjibiSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYQbjkbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbggbiTbjlbjmbjnbjobjpbjpbjqbjrbjsbjabjbbjbbjbbjbbjbbjbbjtbigbjubjvbhZbjwbiIbjxbjybggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYRaZZbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbiTbiUbiIbiVbiWbjBbiPbjCbjDbjsbjabjbbjbbjbbjbbjbbjbbjcbhZbjubjvbhZbhcbiIbjEbjFbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYSbjHbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbiTbiUbiIbiVbiWbjBbiPbjCbjDbjsbjabjbbjbbjbbjbbjbbjbbjcbhZbjubjvbhZbhcbiIbjEbjFbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYqbjHbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbjIbjJbjBbjKbjLbjMbiIbhZbjNbiJbjbbjbbjbbjbbjbbjbbjbbjcbhZbjubjObZLbjQbjQbjRbjSbggaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbimbZMbZNbjUbjVbjWbjXbhZbjYbjZbkabkabkabkabkabkabkabkbbhZbjubhcbkcbjQbkdbkebjSbggaJJaJJaJJaJJaJJaJJbYEbYEbYEbYEbYEbYEbYEbYEbkfbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbhabiubkgbkhbkhbkhbhYbiebhfbhhbhhbhhbhhbhhbhhbhhbhhbhhbkibkjbkkbklbkmbknbZObkpbggaJJaJJaJJaJJaJJaJJbYEbkqaZZbkraZZaZZaZZbYEbksbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbktbkubjxbkvbkvbkvbkwbhcbjYbhcbkxbiZbiZbiZbiZbiZbiZbZtbhKbkzbkAbkBbkCbkBbkubkDbggaJJaJJaJJaJJaJJaJJbYEaZZbYUbeqbYTbkGaZZbYEbkHbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJJaJJaJJaJJaJJaJJaJJbggbktbkubjxbkvbkvbkvbkwbhcbjYbhcbkxbiZbiZbiZbiZbiZbiZbZtbhKbkzbkAbkBbkCbkBbkubkDbggaJJaJJaJJaJJaJJaJJbYEaZZbYUbeqbYubkGaZZbYEbkHbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggbkIbhcbhcbhcbhcbhcbhcbhcbjYbhcbkJbkKbkLbkMbkNbkObkPbkQbkRbkSbYVbYVbkTbYVbYVbYVbYVbYEbYEbYEbYEbYEbYEbYEbkUbkVbkWbkWbkXbkYbYEbYEbYEbgcbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggbkZbhcbhcbhcbhcbhcbhcbhcblablbbkJbkKbkLbkMbkNbkObkPbkQbkRblcbYVbYWbleblfblgblgblhbliblgbYXblkbllblmblmblnbloblpblqblrblsblmblmblmbltbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggblublvblwblxblyblzblAblBblCblDblEbkKbkLbkMblFbkObkPbkQblGblHbYVaZZblIaZZaZZaZZaZZaZZblJblKaZZaZZbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggbkZbhcbhcbhcbhcbhcbhcbhcblablbbkJbkKbkLbkMbkNbkObkPbkQbkRblcbYVbYwbleblfblgblgblhbliblgbYXblkbllblmblmblnbloblpblqbYzblsblmblmblmbltbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJJaJJaJJaJJaJJbggblublwbmiblxblyblzblAblBblCblDblEbkKbkLbkMblFbkObkPbkQblGblHbYVaZZblIaZZaZZaZZaZZaZZblJblKaZZaZZbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEbYEaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbggbYEaZZblLbYEbYEbYEbYEbYZblNbYYbmabmabmaaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbYEaJJaJJaJJbmablRblSblTblUbmaaJJaJJaJJblVblVblVblVblVblVblVblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmbbmbbmbblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmbbmbbmbbmbbmbbmbbmbbmibmjbmbbmkbmlbmmblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmtbmubmvbmwbmbbmxbmybmzbmAbmBbmCbmCbmDblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbmMbmNbmObmPbmQbmRbmPbmSbmTbmUbmVbmWbmXbmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbmjbnhbnibnjbmbbnkbmCbnlbmCbnmbnnbnobnpblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmbbmbbmbbmbbmbbnxbnybnzbnAbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebnGbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbnHbnIbnIbnIbnIbnIbnIbnIbnIbnIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbnJbnJbnKbnJbnebnLbnLbnLbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbnWbnXbnYbnZbnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbocbodboebofbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbolbombombonbneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbborbosbotbmbbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
-aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbmbbmbbmbbmbbmbbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJbmkaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZabYEaJJaJJaJJbmablWblXblYblZbmabmDbmDbmDblVbmcbmdbmebmfbmgbmhblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZblQbmMbmMbmMbmMbmDbmDbmDbmNbmQbmDbmObmPbmRblVbmnbmobmpbmobmqbmrblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEaZZbZbbmUbmVbmSbmTbmDbnhbmWbmXbnjbnkbnibnibnlblVbmEbmFbmGbmHbmIbmJblVaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbmKbmLbnobnpbnmbnnbnzbnAbnxbnybnKbnWbnGbnJbnXbmYbmZbnabnbbncbndbnebnebnebneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbnfbngbodboebnYbnZbmDbolbnibofbniborbombonbosblVbnqbnrbnsbmGbntbnubnvbnwbneaJJaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbjAaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbYEbYEbYEbmMbmMbmMbmMbmDbDEbotbDDbDEbnebnebnebnebnebnBbnCbnDbnEbnFbnebnebocbnebneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIbnHbnIbnIbnIbnIbnIbnIbnIbnIbnIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbDFbDFbEbbDFbnebnLbnLbnLbnMbnNbnObnPbnQbnRbnSbnTbnUbnVbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbERbEdbEQbESbnebnLbnUbnUbnUboabnUbobbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbFtbETbFsbQjbnebnLbogbohboiboabnUbnLbnUboabnUbojbokbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbUWbQkbQkbYabneboobnUbnUbnUboabnUbopbnUboabnUbnUbnUboqbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbYHbYBbYGbEcbneboubovbowboxbnRboybozboAbnRboBboCboDboEbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
+aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbEcbEcbEcbEcbEcbnebnLboFboGbnUboabnUbnLbnUboabnUboHboIbnLbneaJJaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbneboJbnUbnUbnUboabnUboKbnUboabnUbnUbnUbnLbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnLboLboMboNboObnUboPbnUboQboRboSboTbnLbneaJJaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
aJHaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJaJJbnebnQboUbnLboVbnLbnLboWbnLbnLboXbnLboUbnQbneaJJaJJaJJaJJaJJaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJIaJH
@@ -5672,7 +5670,7 @@ boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbqtbqtbqgbqubrgbrhbribrjbrkbrlbqhbrmbrnbrobrpbrqbrrbrsbrtbrubrvbrwbrxbrybrzbrAbrBbrCbrDbrDbrEbqkbrFbrGbrHbrIbpebrJbpYbrKbrLbrMbrNbrObprbpabpabpabpabpabpabqdbrPbqdbqdbrQbqdbqdbrRbqdbqdbpabpabpabpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbqtbqtbqgbrSbrTbrUbrVbrTbrUbrWbqhbrXbrnbrYbrZbsabqhbsbbscbsdbsebsfbsgbqkbshbsibuMbskbslbrDbsmbqkamCbsobspbsqbpebsrbssbstbsubsvbswbsxbpebpabpabpabpabpabpabqqbrebsybszbrebsAbsBbrebsCbqdbpabpabpabpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbqtbqtbqgbsDbrTbrUbrVbrTbrUbrWbqhbsEbsFbsGbsHbsIbqhbsJbsebsKbsebsfbsLbqkbsMbsibsjbsNbsObsObsPbqkbsQbsRbpcbpcbpebpebpebsSbsSbsTbsUbpebpebpabpabpabpabpabpabqqbsVbsWbsXbsXbsXbsYbsZbtabqdbpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbtbbtbbqgbtcbrTbrUbrVbrTbrUbtdbqhbqhbqhbqhbqhbqhbqhbtebsebsKbynbtfbtgbqkbthbtibtjbtkbtlbtmbtnbqkbtobtpapoapkbtsbttbtubtvbtwbtxbtybtzbtsbpabpabpabpabpabpabqqbtAbtBbrebtCbtDbtEbtFbtGbtHbpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbtbbtbbqgbtcbrTbrUbrVbrTbrUbtdbqhbqhbqhbqhbqhbqhbqhbtebsebsKbynbtfbtgbqkbthbtibtjbtkbtlbtmbtnbqkbtobtpaplanSbtsbttbtubtvbtwbtxbtybtzbtsbpabpabpabpabpabpabqqbtAbtBbrebtCbtDbtEbtFbtGbtHbpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbtIbtJbtKbtLbtMbtNbtObtMbrUbtPbtQbtRbtSbtRbtSbtRbqibtTbtUbtVbsebsfbtWbqkbqkbtXbtYbtZbtZbuabqkbqkbubbucbudbuebtsbufbugbuhbuibujbukbulbumbpabpabpabpabpabunbqdbuobupbuobqdbqdbqdbqdbuqburbpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbusbutbutbutbutbutbuubtJbrUbuvbtQbuwbtSbuxbtSbuybqibuzbuAbuBbsebuCbuDbuEbuFbuGbuHbuIbuJbuKbuLbywbuNbpcbucbuObtsbuPbuQbuRbuSbuTbukbuUbumbpabpabpabpabpabpabuVbuWbuXbuYbuZbpabpabpabpabpabpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqgbqgbqgbvabvbbvbbvbbvbbvcbvdbtJbvebvfbtQbvgbvhbvibvjbvibqibvkbsebvlbvmbvnbvobvpbvqbvrbvsbvtbvubvvbvwbvxbpcbpcbvybvzbtsbvAbvBbvBbvBbvBbvCbvDbumbpabpabpabpabpabpabuVbvEbvFbvGbuZbpabpabpabpabpabpabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboZboZboZboZboY
@@ -5687,13 +5685,13 @@ boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabp
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbAXbAYbAYbAZbAZbAZbAZbAZbBabBbbBcbBdbBebBfbBgbBgbBgbBhbBgbBibBjbBkbpabpabpabpabzrbzrbBlbzrbBmbBnbBobBpbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBrbBsbBtbBubBvbBwbwSbBxbBybBzbBAbwSbBBbBCbBDbxSbwSbpaboZboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbBEbAWbBFbBGbBGbBHbBHbBHbBHbBHbBIbBJbAFbAGbBKbBLbAHbAHbAHbPybAHbBNbBObBkbpabpabBPbpabzrbBQbBRbBSbBnbBnbzrbBTbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbBVbwSbBWbBXbBYbBZbCabCbbCcbCdbCebCdbCfbCgbChbwSbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabqfbzhbCibAWbBFbBGbBGbBHbBHbBHbBHbBHbBIbBJbAFbAGbCjbznbCkbClbClbCmbCnbAHbCobznbpabpabpabpabzrbBnbCpbzrbCqbCqbzrbCrbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbCsbCtbCubCubCubCvbCubCwbCxbCwbCwbCwbCwbCybCybCybCybpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbCzbAWbBFbBGbBGbCAbzObCBbBHbBHbBIbBJbAFbAGbCCbznbCDbCEbCFbCGbCHbAHbCIbznbpabpabpabpabzrbCJbCKbzrbCqbCqbzrbCLbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbCMbCNaOhaNybCQbCRbCSbCTbCUbCVbCWbCSbCXbCYbCZbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbBFbBGbBGbDbbDcbDdbBHbBHbBIbBJbAFbAGbCjbznbznbznbznbDebDfbzobznbznbwObwObtSbtSbzrbzrbzrbzrbzrbzrbzrbDgbDhbzwbIIbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbDibDjbDkbDlbDmbDnbDobCSbDpbCTbCTbDqbCSbDrbDsbDtbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAbDBbDCbtSbDDbvibDEbDFbwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbDQbBFbBGbBGbBGbBGbBGbBHbBHbBIbDRbDSbDTbDUbDVbDWbyobyobDXbDYbyxbyxbDZbygbEabtSbEbbEcbEcbEdbwsbEebEfbEgbEhbEiaRsaRrbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEkbElbEmbEnbEobEpbEqaRGbCSbEsbEtbEubEvbCSbEwbExbDsbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbEybDQbEzbEAbEAbEAbEAbEAbEBbEBbECbEDbEEbEFbEGbEHbEIbEJbEJbEJbEKbELbEMbENbEObEPbEQbERbESbESbETbwsaRZbDHbwsbEVbzvaSdaSabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbEYbEZbwsaSCbCQaSBbCSbFcbFdbFebFfbCSbFgbFhbFibDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFjbFkbFlbFlbFlbFlbFlbFlbFlbFlbFlbFmbFnbFobFpbzhbwsbzZbzZbzZbwsbwsbvEbyVbFqbFrbtSbDDbFsbFtbDFbwsbwsbwsbwsbFubzvaTeaTabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFvbDkbDkbDkaTybDkbCSbCSbFxbFybCSbCSbFzbFAbFzbFBbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFCbFDbFDbFDbFDbFEbFDbFDbFDbFFbFDbFGbFHbFIbFJbFKbpabpabpabpabpabuVbvEbyVbFqbvGbtSbtSbtSbtSbtSbtSbFLbFMbwsbDIbzvbEWbzxbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFNbFObFPbFQbFRbFSbFTbFBbFUbFVbFWbFXbFYbFZbGabFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbCzbAWbBFbBGbBGbCAbzObCBbBHbBHbBIbBJbAFbAGbCCbznbCDbCEbCFbCGbCHbAHbCIbznbpabpabpabpabzrbCJbCKbzrbCqbCqbzrbCLbBqbzwbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbCMbCNaMZaNybCQbCRbCSbCTbCUbCVbCWbCSbCXbCYbCZbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbAWbBFbBGbBGbDbbDcbDdbBHbBHbBIbBJbAFbAGbCjbznbznbznbznbDebDfbzobznbznbwObwOaHnaHnbzrbzrbzrbzrbzrbzrbzrbDgbDhbzwbIIbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbDibDjbDkbDlbDmbDnbDobCSbDpbCTbCTbDqbCSbDrbDsbDtbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbDubDvbBFbBGbBGbBGbBGbBGbBHbBHbBIbBJbAFbAGbAGbzibDwbwVbDxbDybDzbxbbxobDAawkbDCaHnbmbbdqbaMaHobwsaPTaPFbwsbDIbBqaQRaQQbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbvEbBUbDJbwsbwsbDKbDLbDMbCSbDNbCTbCTbDObCSbDsbDsbDPbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzGbAVbDQbBFbBGbBGbBGbBGbBGbBHbBHbBIbDRbDSbDTbDUbDVbDWbyobyobDXbDYbyxbyxbDZbygbEaaHnbmmbmlbmlbmjbwsbEebEfbEgbEhbEiaRsaRrbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEkbElbEmbEnbEobEpbEqaRGbCSbEsbEtbEubEvbCSbEwbExbDsbDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbEybDQbEzbEAbEAbEAbEAbEAbEBbEBbECbEDbEEbEFbEGbEHbEIbEJbEJbEJbEKbELbEMbENbEObEPbmtbmwbmvbmvbmubwsaRZbDHbwsbEVbzvaSdaSabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbEYbEZbwsaSCbCQaSBbCSbFcbFdbFebFfbCSbFgbFhbFibDabpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFjbFkbFlbFlbFlbFlbFlbFlbFlbFlbFlbFmbFnbFobFpbzhbwsbzZbzZbzZbwsbwsbvEbyVbFqbFraHnbmbbmybmxaHobwsbwsbwsbwsbFubzvaTeaTabAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFvbDkbDkbDkaTybDkbCSbCSbFxbFybCSbCSbFzbFAbFzbFBbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabzhbFCbFDbFDbFDbFDbFEbFDbFDbFDbFFbFDbFGbFHbFIbFJbFKbpabpabpabpabpabuVbvEbyVbFqbvGaHnaHnaHnaHnaHnaHnbFLbFMbwsbDIbzvbEWbzxbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbEXbBUbFNbFObFPbFQbFRbFSbFTbFBbFUbFVbFWbFXbFYbFZbGabFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabGbbGcbzhbzhbzhbGcbGcbGcbzhbzhbzhbGcbGcbGcbzhbzhbzhbpabpabpabpabpabuVbvEbyVbGdbGebGfbGgbxjbGhbGibGjbGibGibGkbGlbGmbGnbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbGobBUbygbGpbGqbFQbGrbGsbGubFBbGtbGvbGwbGwbGxbGybGzbFBbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabwsbGAbGBbyobGCbGDbyubGEbGFbyobyobyobyobGGbyobGHbEWbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbGIbGJbyubGKbGLbGMbGNbGObGObGPbGQbGRbGSbGTbGUbGVbGWbGXbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabwsbGYbyQbyQbyQbyQbyQbyQbyQbyQbyQbyQbyQbyTbGZbzvbEWbAhbAibAibAibAibAibAibAibAibAibAibAibAibAibAibAibAjbHabBUbygbygbHbbHcbHdbHebHebHfbHgbFVbHhbFBbHibGVbHjbGXbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
@@ -5706,17 +5704,17 @@ boYboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabp
boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabIrbJrbHXbHXbHXbJsbJsbJtbJsbIWbHXbJubHJbJvbIgbIybIybIybIybIybIZbJwbJxbJybJzbJAbJAbJAbyubJBbykbJCbyxbyxbyxbyxbyxbyxbyxbJDbyobyobJEbyobyobyobyobyobyobZlbJmbJGbJHbJIbJobHebHebJJbJKbJKbJKbJKbJKbJKbJKbJLbpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabIrbHXbJMbJNbJObJObJObJObJObJPbJQbJRbmsbJTbIgbIybIybIybIybIgbJUbJwbJVbJWbJXbJYbJYbJYbyQbJZbyRbKabKbbKcbKdbKebKfbyQbyQbKgbJZbKhbKibKhbKhbKhbKjbKhbKkbKlbJmbJGbKmbIQbJobHebHebKnbKobKobKobKobKobKobKobJLbpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabHGbKpbKqbKrbHXbHXbHXbHXbHXbKsbKtbKubKvbKwbIgbIgbIgbIgbIgbIgbKxbKybJVbKzbKAbKBbKBbKBbKBbKBbKBbKCbKBbKBbKDbKBbKEbKFbKBbKGbKHbKHbKIbKJbKJbKJbKHbKHbKKbJwbKLbJGbIlbIlbJobHebHebHebHebHebHebHebHebHebKMbJLbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabHGbHGbKNbKNbKObKNbKNbKNbKNbKPbKQbKQbHJbHJbKRbKRbKRbKRbKRbKRbKSbKTbKUbKVbKBbsnbKXbKYbtqbLabKBbLbbtrbKBbwjbKBbLdbKBbwkbLfbKHbLgbLhbLibLjbLkbLlbLmbLnbJwbKLbJGbHebHebJobHebHebHebIlbIQbIlbHebHebHebLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbLpbLqbLrbLsbLtbLubLqbLrbLvbLwbLxbLybLzbLAbLBbLCbLDbLEbLFbKSbLGbJVbKzbLHbLIbDGbLIbLIbLIbLJbLbbEjbKBbKBbKBbLdbKBbErbLfbKHbLMbLNbLObLObLPbLQbKJbLRbLSbLTbGMbHpbHebLUbLVbLVbLVbLWbLXbIlbHebHebHebIlbJLbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabHGbHGbKNbKNbKObKNbKNbKNbKNbKPbKQbKQbHJbHJbKRbKRbKRbKRbKRbKRbKSbKTbKUbKVbKBbsnbKXbKYbdfbLabKBbLbbdfbKBbwjbKBbLdbKBbfzbLfbKHbLgbLhbLibLjbLkbLlbLmbLnbJwbKLbJGbHebHebJobHebHebHebIlbIQbIlbHebHebHebLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbLpbLqbLrbLsbLtbLubLqbLrbLvbLwbLxbLybLzbLAbLBbLCbLDbLEbLFbKSbLGbJVbKzbLHbLIbDGbLIbLIbLIbLJbLbbinbKBbKBbKBbLdbKBbiBbLfbKHbLMbLNbLObLObLPbLQbKJbLRbLSbLTbGMbHpbHebLUbLVbLVbLVbLWbLXbIlbHebHebHebIlbJLbpabpaboZboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbbcbLYbLZbLZbLZbLZbMabLZbMbbMcbMdbMebLzbMfbMgbMhbMibMhbMjbKSbLGbJVbMkbMlbMlbMlbMlbMlbMlbMlbLbbMmbKBbMnbMobMpbKBbDGbLfbKHbMqbNdbMsbMtbLObLQbKJbLnbIZbKLbFQbMubHebMvbMwbMwbMwbMxbZQbIlbHebHebHebMybFQbpabpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbMzbMAbMBbMCbMCbMDbMEaYibMFbMGbMHbMIbMJbMKbMLbMMbMNbMObMPbKSbMQbJVbMRbMlbMSbMTbMUbMSbMSbMlbMVbMWbKBbMXbMYbMZbKBbNabNbbKHbNcbNdbMsbMtbLObNebNfbNgbIZbKLbNhbNibHebJobHebHebHebIlbIQbIlbHebHebHebNjbFQbpabpabpabpaboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNkbMAbNlbNmbNmbNnbNoaYibNpbNqbMAbNraUYbNsbNtbNtbNubNvbNwbNxbMQbNybNzbMlbNAbNBbNBbNBbNCbMlbLKbNEbKBbNFbNGbNHbKBbNIbNJbKHbNKbNdbMsbMtbNLbNMbNNbNObNPbNQbFQbNRbHebJobHebHebHebHebZnbHebHebHebHebNTbFQbJGbFQbpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNUbMAbZSbNmbNmbNnaYUbNVbNWbNXbNYbbgaUYbNZbNZbNZbKSbOabNZbKSbMQbJVbObbMlbOcbOdbOebOfbOgbOUbLIbNEbOibOibOibOibOibOjbOkbOlbOmbOnbOobOpbOqbOrbKJbOsbIZbKLbJGbOtbOtbJobHebHebHebIlbIQbIlbHebHebHebHebOubLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabOvaUYbOwbMAbZSbOxbOybOzbZobOBbOCbNqbODbOEaUYbOFbOGbOHbOIbOJbOKbOLbOMbJVbONbMlbOObOPbOQbORbOSbMlbOTbRkbRgbOWbOXbOYbOibKBbOZbKHbPabNdbMsbMtbPbbPcbPdbPebIZbKLbJGbPfbPgbPhbLVbLVbLVbLWbZRbIlbHebHebHebHebIlbKmbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPibMAbPjaYibPkbPlbPmbPlbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxbPxbJdbZpbPzbMlbOObPAbOQbPBbPCbMlbLIbPDbPEbPFbPGbPHbOibXZbOZbKHbPJbNdbMsbMtbLObPKbNfbPLbIZbKLbJGbPgbPgbPMbMwbMwbMwbMxbIPbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDbOibQjbQkbQlbYdbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbQrbQsaYiaYibNqaYibQtbQubQubQvbQwbQxbQubQubQybQybQybQybQybQybQzbQAbQBbMlbQCbQDbQEbQDbQFbMlbYlbPDbOibOibOibOibOibQHbYmbKHbQJbLNbLObLObLPbLQbKJbLnbIZbKLbJGbQKbQKbJobHebHebHebHebHebHebHebQLbQMbQNbQObLobJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
-boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbQPbQsaYibQQbQRaYibQSbQubQTbQUbQVbQWbQXbQubQYbQZbRabRbbRcbQybRdbQcbQdbMlbRebRebRfbRebRebMlbYpbPDbKBbRhbKBbRibKBbRjbYqbKHbRlbRmbRnbRobRpbRqbKHbKKbIZbRrbFQbRsbHobRtbHebHebHebHebHebHebHebFQbFQbFQbFQbFQbFQbpaboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbNUbMAbZSbNmbNmbNnaYUbNVbNWbNXbNYbbgaUYbNZbNZbNZbKSbOabNZbKSbMQbJVbObbMlbOcbOdbOebOfbOgbOUbLIbNEanTanTanTanTanTbOjbOkbOlbOmbOnbOobOpbOqbOrbKJbOsbIZbKLbJGbOtbOtbJobHebHebHebIlbIQbIlbHebHebHebHebOubLobJLbpabpaboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabOvaUYbOwbMAbZSbOxbOybOzbZobOBbOCbNqbODbOEaUYbOFbOGbOHbOIbOJbOKbOLbOMbJVbONbMlbOObOPbOQbORbOSbMlbOTbRkbOWbOibcSbOXanTbKBbOZbKHbPabNdbMsbMtbPbbPcbPdbPebIZbKLbJGbPfbPgbPhbLVbLVbLVbLWbZRbIlbHebHebHebHebIlbKmbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPibMAbPjaYibPkbPlbPmbPlbPnbPobPpbPqbPrbPsbPtbPubPvbPwbPxbPxbJdbZpbPzbMlbOObPAbOQbPBbPCbMlbLIbPDbPFbPEbOYbPGanTbXZbOZbKHbPJbNdbMsbMtbLObPKbNfbPLbIZbKLbJGbPgbPgbPMbMwbMwbMwbMxbIPbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbPNbPOaYiaYibNqaYibPPbPQbPRbPSbPTbPUaUYbPVbPWbPXbOIbPYbPZbQabQbbQcbQdbMlbQebQfbQgbQhbQibYbbLIbPDanTbQlbPHbYdbRgbYcbQobKHbMqbNdbMsbMtbLObQpbKJbLnbIZbKLbJGbPgbPgbQqbHebHebHebIlbKmbIlbHebHebHebHebIlbIQbJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbQrbQsaYiaYibNqaYibQtbQubQubQvbQwbQxbQubQubQybQybQybQybQybQybQzbQAbQBbMlbQCbQDbQEbQDbQFbMlbErbPDanTanTanTanTanTbQHbfzbKHbQJbLNbLObLObLPbLQbKJbLnbIZbKLbJGbQKbQKbJobHebHebHebHebHebHebHebQLbQMbQNbQObLobJLbpaboZboZboZboZboZboZboZboZboZboZboZboY
+boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbQPbQsaYibQQbQRaYibQSbQubQTbQUbQVbQWbQXbQubQYbQZbRabRbbRcbQybRdbQcbQdbMlbRebRebRfbRebRebMlbYpbPDbKBbRhbKBbRibKBbRjbFbbKHbRlbRmbRnbRobRpbRqbKHbKKbIZbRrbFQbRsbHobRtbHebHebHebHebHebHebHebFQbFQbFQbFQbFQbFQbpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYbRubRvbRwbRxbRybRzbRAaYibRBbRCbRDbREbRFbRGbRHbQubRIbRJbRKbRLbRMbQybRNbQcbQdbRObMlbMlbMlbMlbMlbRPbKBbRQbKBbRRbKBbKBbKBbRSbKBbRTbKHbKJbKJbKJbKJbKHbKHbLnbRUbRVbFQbRWbHebZqbRYbRZbRZbRZbRZbRZbSabFQbSbbScbSdbFQbpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYaUYbSebSfbSfbcCbSgbShbSibRCbSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubSvbSwbSxbSybSzbSAbSBbSCbSDbSybSEbSFbSGbSHbSIbSJbSKbSLbSMbSNbSObSPbSPbSPbSPbSQbSRbSSbSTbSUbSVbSWbHebSXbSYbSZbTabTabTabTbbTcbFQbTdbHebTebFQbpabpaboZboZboZboZboZboZboZboZboZboZboZboY
boYboZboZboZboZboZboZboZboZboZboZboZbpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpabpaaUYaUYbTfbTgbTgbThbTgbTgbTfbTibTjbTkbTlbTmbTnbTobRKbRKbRKbTpbTqbTrbTsbTtbTtbTubTtbTtbTtbTvbTwbTxbTybTzbTAbTBbTCbTAbTDbTtbTtbTtbTtbTtbTtbTtbTEbTFbIZbIZbTGbTHbTIbTJbTKbTLbTMbTMbTMbTMbTMbTMbTNbTObTPbTQbJLboZboZboZboZboZboZboZboZboZboZboZboZboZboY
diff --git a/maps/tether/tether-03-station.dmm b/maps/tether/tether-03-station.dmm
index 54011cbb4c..3c0a2abc28 100644
--- a/maps/tether/tether-03-station.dmm
+++ b/maps/tether/tether-03-station.dmm
@@ -12,7 +12,7 @@
"aal" = (/obj/structure/bed/chair,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aam" = (/obj/machinery/sleep_console{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aan" = (/obj/machinery/sleeper{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
-"aao" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
+"aao" = (/obj/structure/table/standard,/obj/item/bodybag/cryobag,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aap" = (/obj/structure/bed/chair,/obj/machinery/vending/wallmed1{layer = 3.3; name = "Emergency NanoMed"; pixel_x = 28; pixel_y = 0},/obj/structure/closet/walllocker/emerglocker{pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aaq" = (/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
"aar" = (/obj/structure/bed/chair{dir = 4},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod2/station)
@@ -56,7 +56,7 @@
"abd" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8)
"abe" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8)
"abf" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_8)
-"abg" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8)
+"abg" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8)
"abh" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_8)
"abi" = (/obj/structure/closet/secure_closet/engineering_personal,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"abj" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
@@ -96,8 +96,8 @@
"abR" = (/obj/structure/closet/secure_closet/atmos_personal,/obj/machinery/camera/network/engineering{dir = 8},/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"abS" = (/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
"abT" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/sec/wood,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/item/weapon/gun/projectile/sec/wood,/obj/item/weapon/gun/projectile/sec/wood,/obj/item/weapon/gun/projectile/sec/wood,/obj/item/weapon/gun/projectile/sec/wood,/obj/item/weapon/gun/projectile/sec/wood,/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
-"abU" = (/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/contraband,/turf/simulated/floor,/area/maintenance/station/eng_lower)
-"abV" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/station/eng_lower)
+"abU" = (/obj/structure/closet,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/contraband,/turf/simulated/floor,/area/maintenance/station/eng_lower)
+"abV" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/eng_lower)
"abW" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/white/bordercorner2{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/camera/network/northern_star{dir = 4},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"abX" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/disposalpipe/segment,/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_lodging)
"abY" = (/turf/simulated/wall,/area/crew_quarters/sleep/Dorm_6)
@@ -124,7 +124,7 @@
"act" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6)
"acu" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6)
"acv" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_6)
-"acw" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6)
+"acw" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6)
"acx" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_6)
"acy" = (/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/obj/machinery/camera/network/engineering{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/backup)
"acz" = (/obj/machinery/atmospherics/pipe/tank/nitrogen{dir = 4},/turf/simulated/floor/tiled,/area/engineering/atmos/backup)
@@ -137,7 +137,7 @@
"acG" = (/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/plating,/area/engineering/atmos/backup)
"acH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/orange/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 10},/obj/item/device/radio/intercom{pixel_y = 24; req_access = list()},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"acI" = (/obj/machinery/atm{pixel_y = 30},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
-"acJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/machinery/camera/network/security{dir = 4},/obj/structure/table/steel,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/retail_scanner/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/warden)
+"acJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/machinery/camera/network/security{dir = 4},/obj/structure/table/steel,/obj/item/weapon/wrench,/obj/item/weapon/crowbar,/obj/item/device/retail_scanner/security,/obj/machinery/newscaster/security_unit{pixel_x = 0; pixel_y = 30},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/obj/item/weapon/hand_labeler,/turf/simulated/floor/tiled/dark,/area/security/warden)
"acK" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"acL" = (/obj/structure/closet/wardrobe/atmospherics_yellow,/turf/simulated/floor/tiled/yellow,/area/engineering/locker_room)
"acM" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled/freezer,/area/crew_quarters/sleep/engi_wash)
@@ -254,7 +254,7 @@
"aeT" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4)
"aeU" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4)
"aeV" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_4)
-"aeW" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4)
+"aeW" = (/obj/structure/mirror{pixel_x = 30},/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aeX" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4)
"aeY" = (/obj/structure/sign/department/atmos,/turf/simulated/wall/r_wall,/area/engineering/atmos/backup)
"aeZ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/orange/border{dir = 8},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
@@ -269,7 +269,7 @@
"afi" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"afj" = (/obj/structure/cable/green{icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 4},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"afk" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/orange/border{dir = 1},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
-"afl" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/orange/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
+"afl" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_4)
"afm" = (/obj/machinery/door/firedoor/glass,/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/plating,/area/engineering/workshop)
"afn" = (/obj/structure/cable/green{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},/turf/simulated/floor/tiled,/area/engineering/workshop)
"afo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled,/area/engineering/workshop)
@@ -362,7 +362,7 @@
"agX" = (/obj/structure/bed/chair/comfy/black{dir = 8},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2)
"agY" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/box/donkpockets,/obj/machinery/atmospherics/unary/vent_pump/on,/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2)
"agZ" = (/obj/structure/table/woodentable,/obj/machinery/microwave,/turf/simulated/floor/wood,/area/crew_quarters/sleep/Dorm_2)
-"aha" = (/obj/structure/sink{pixel_y = 22},/obj/item/frame/mirror{layer = 2.9; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2)
+"aha" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/orange/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 5},/obj/machinery/recharge_station,/turf/simulated/floor/tiled,/area/engineering/aft_hallway)
"ahb" = (/obj/structure/toilet{pixel_y = 10},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2)
"ahc" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
"ahd" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_laundry)
@@ -1158,7 +1158,7 @@
"awn" = (/turf/simulated/wall/r_wall,/area/bridge)
"awo" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/bridge)
"awp" = (/obj/structure/sign/department/bridge,/turf/simulated/wall/r_wall,/area/bridge_hallway)
-"awq" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/machinery/floor_light/prebuilt{on = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "cafe"; name = "Cafe Shutters"; pixel_x = -10; pixel_y = 10; req_access = list(); req_one_access = list(25)},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
+"awq" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"awr" = (/obj/structure/sign/nanotrasen,/turf/simulated/wall/r_wall,/area/bridge_hallway)
"aws" = (/obj/structure/table/marble,/obj/machinery/cash_register/civilian{dir = 1},/obj/machinery/door/blast/shutters{dir = 2; id = "cafe"; layer = 3.1; name = "Cafe Shutters"},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"awt" = (/turf/simulated/wall/r_wall,/area/bridge_hallway)
@@ -1171,7 +1171,7 @@
"awA" = (/obj/machinery/door/firedoor/glass/hidden/steel,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"awB" = (/obj/machinery/door/firedoor/glass/hidden/steel{dir = 2},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"awC" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
-"awD" = (/obj/structure/closet{name = "Lost and Found"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/obj/random_multi/single_item/teleport,/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
+"awD" = (/obj/structure/closet{name = "Lost and Found"},/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"awE" = (/turf/simulated/floor/tiled,/area/tether/station/stairs_one)
"awF" = (/obj/machinery/door/airlock/multi_tile/glass{name = "Stairwell"},/obj/machinery/door/firedoor/glass,/obj/effect/floor_decal/steeldecal/steel_decals_central1{dir = 8},/turf/simulated/floor/tiled/monofloor{dir = 8},/area/tether/station/stairs_three)
"awG" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
@@ -1195,7 +1195,7 @@
"awY" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"awZ" = (/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"axa" = (/obj/structure/cable{icon_state = "1-2"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/bridge)
-"axb" = (/obj/structure/closet,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/random_multi/single_item/netgun,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/station/eng_lower)
+"axb" = (/obj/structure/closet,/obj/effect/floor_decal/rust,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor,/area/maintenance/station/eng_lower)
"axc" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"axd" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 8},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"axe" = (/obj/machinery/door/airlock/maintenance/common,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/firedoor/glass,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
@@ -1345,14 +1345,14 @@
"azS" = (/obj/structure/table/reinforced,/obj/machinery/photocopier/faxmachine{department = "Head of Personnel's Office"},/obj/structure/extinguisher_cabinet{pixel_x = 25},/turf/simulated/floor/tiled,/area/crew_quarters/heads/hop)
"azT" = (/turf/simulated/wall,/area/library)
"azU" = (/obj/structure/sign/department/biblio,/turf/simulated/wall,/area/library)
-"azV" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/research,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/tool,/obj/random_multi/single_item/netgun,/turf/simulated/floor,/area/maintenance/cargo)
+"azV" = (/obj/random/trash_pile,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/cargo)
"azW" = (/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals_central1{dir = 4},/turf/simulated/floor/tiled/monofloor{dir = 4},/area/library)
"azX" = (/turf/simulated/wall,/area/crew_quarters/toilet)
"azY" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/simulated/floor/tiled/steel_grid,/area/crew_quarters/toilet)
"azZ" = (/obj/machinery/atmospherics/pipe/simple/hidden,/obj/machinery/light{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/machinery/door/firedoor/glass/hidden/steel,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aAa" = (/obj/machinery/door/firedoor/glass/hidden/steel{dir = 1},/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,/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aAb" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/machinery/door/firedoor/glass/hidden/steel{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/hallway/station/docks)
-"aAc" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/tool,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
+"aAc" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"aAd" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random/maintenance/engineering,/obj/random/toy,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"aAe" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donut,/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{cell_type = /obj/item/weapon/cell/super; dir = 8; name = "west bump"; pixel_x = -28},/turf/simulated/floor/tiled/dark,/area/bridge)
"aAf" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled/dark,/area/bridge)
@@ -1380,7 +1380,7 @@
"aAB" = (/obj/structure/toilet{dir = 4},/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"aAC" = (/obj/machinery/door/airlock{name = "Unit 1"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"aAD" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
-"aAE" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/frame/mirror{pixel_x = 30},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
+"aAE" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/suit/storage/apron,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aAF" = (/obj/structure/reagent_dispensers/water_cooler/full,/obj/machinery/computer/guestpass{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aAG" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/obj/machinery/status_display{pixel_y = 30},/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aAH" = (/obj/structure/bed/chair,/obj/machinery/atmospherics/unary/vent_scrubber/on,/obj/machinery/newscaster{pixel_y = 32},/turf/simulated/floor/tiled,/area/hallway/station/docks)
@@ -1436,7 +1436,7 @@
"aBF" = (/obj/structure/bed/chair/comfy/brown,/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library)
"aBG" = (/obj/machinery/door/airlock{name = "Unit 2"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"aBH" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
-"aBI" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/item/frame/mirror{pixel_x = 30},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
+"aBI" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/item/weapon/reagent_containers/glass/bucket,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aBJ" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 6},/obj/machinery/camera/network/northern_star{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aBK" = (/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/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks)
"aBL" = (/obj/machinery/atmospherics/pipe/simple/hidden{dir = 4},/turf/simulated/floor/tiled,/area/hallway/station/docks)
@@ -1496,7 +1496,7 @@
"aCN" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/turf/simulated/floor/wood,/area/library)
"aCO" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library)
"aCP" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/structure/disposalpipe/segment,/turf/simulated/floor/carpet,/area/library)
-"aCQ" = (/obj/structure/bookcase{name = "bookcase (Religious)"},/obj/machinery/light/small{dir = 4; pixel_y = 0},/turf/simulated/floor/wood,/area/library)
+"aCQ" = (/obj/structure/sink{pixel_y = 22},/obj/structure/mirror{dir = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/white,/area/crew_quarters/sleep/Dorm_2)
"aCR" = (/obj/machinery/recharge_station,/obj/machinery/light/small{dir = 8; pixel_x = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"aCS" = (/obj/machinery/door/airlock{name = "Unit 3"},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"aCT" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{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,/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 4},/obj/machinery/firealarm{dir = 2; layer = 3.3; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
@@ -1530,7 +1530,7 @@
"aDv" = (/obj/machinery/atmospherics/pipe/simple/hidden,/turf/simulated/floor/tiled,/area/tether/station/dock_two)
"aDw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/tether/station/dock_two)
"aDx" = (/turf/simulated/floor/tiled,/area/tether/station/dock_two)
-"aDy" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain)
+"aDy" = (/obj/structure/railing,/obj/machinery/light/small{dir = 1},/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/cargo)
"aDz" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/white,/area/crew_quarters/captain)
"aDA" = (/obj/structure/toilet{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain)
"aDB" = (/obj/machinery/computer/communications,/turf/simulated/floor/wood,/area/crew_quarters/captain)
@@ -1575,8 +1575,8 @@
"aEo" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/substation/command)
"aEp" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/multi_tile/metal/mait{dir = 1; name = "Command Substation"; req_one_access = list(11,24,47)},/turf/simulated/floor,/area/maintenance/substation/command)
"aEq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/station/bridge)
-"aEr" = (/obj/structure/cable{icon_state = "1-8"},/obj/random/junk,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/bridge)
-"aEs" = (/turf/simulated/floor,/area/maintenance/station/bridge)
+"aEr" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/tech_supply,/obj/random/maintenance/cargo,/obj/random/toy,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/sec_upper)
+"aEs" = (/obj/random/trash_pile,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"aEt" = (/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/obj/structure/cable,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/bridge)
"aEu" = (/obj/structure/bed/chair/comfy/black,/turf/simulated/floor/carpet,/area/library)
"aEv" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/wood,/area/library)
@@ -1976,7 +1976,7 @@
"aLZ" = (/obj/machinery/seed_storage/garden,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/camera/network/security{dir = 8},/turf/simulated/floor/tiled,/area/security/brig)
"aMa" = (/obj/effect/decal/cleanable/dirt,/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aMb" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
-"aMc" = (/obj/structure/mirror{pixel_x = 30},/obj/item/weapon/soap/nanotrasen,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
+"aMc" = (/obj/machinery/telecomms/relay/preset/tether/station_low,/obj/effect/floor_decal/techfloor/orange{dir = 9},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
"aMd" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/station/sec_lower)
"aMe" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
"aMf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/chapel/chapel_morgue)
@@ -1995,7 +1995,7 @@
"aMs" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aMt" = (/obj/machinery/portable_atmospherics/hydroponics,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aMu" = (/obj/structure/table/steel,/obj/item/clothing/head/greenbandana,/obj/item/weapon/material/minihoe,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
-"aMv" = (/obj/machinery/shower{dir = 4; icon_state = "shower"; pixel_x = 5; pixel_y = 0},/obj/structure/curtain/open/shower/security,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
+"aMv" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/telecomms/relay/preset/tether/station_mid,/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
"aMw" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aMx" = (/obj/machinery/alarm{dir = 8; pixel_x = 25; pixel_y = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aMy" = (/turf/simulated/wall,/area/chapel/office)
@@ -2042,7 +2042,7 @@
"aNn" = (/obj/item/weapon/pen/crayon,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/dark,/area/security/brig)
"aNo" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/dark,/area/security/brig)
"aNp" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/item/device/taperecorder{pixel_x = -4; pixel_y = 2},/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
-"aNq" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/weapon/reagent_containers/food/drinks/bottle/absinthe,/obj/item/clothing/suit/storage/apron,/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
+"aNq" = (/obj/effect/floor_decal/techfloor/orange{dir = 10},/obj/structure/window/reinforced,/obj/machinery/telecomms/relay/preset/tether/station_high,/obj/machinery/door/window/brigdoor/westleft{req_access = list(56); req_one_access = list(19)},/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
"aNr" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/obj/item/weapon/deck/cards,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aNs" = (/obj/structure/closet{name = "Prisoner's Locker"},/obj/item/clothing/head/soft/orange,/obj/item/clothing/shoes/sandal,/obj/machinery/light,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aNt" = (/obj/structure/bed/padded,/obj/item/weapon/bedsheet/orange,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
@@ -2050,7 +2050,7 @@
"aNv" = (/obj/machinery/recharge_station,/turf/simulated/floor/tiled/steel_dirty,/area/security/brig)
"aNw" = (/obj/structure/toilet{dir = 1},/obj/machinery/light/small,/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
"aNx" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
-"aNy" = (/obj/structure/mopbucket,/obj/item/weapon/mop,/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/turf/simulated/floor/tiled/freezer,/area/security/brig/bathroom)
+"aNy" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps/mining,/turf/simulated/floor,/area/quartermaster/delivery)
"aNz" = (/obj/machinery/light{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/turf/simulated/floor/lino,/area/chapel/office)
"aNA" = (/obj/structure/bed/chair,/obj/effect/landmark/start{name = "Chaplain"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/lino,/area/chapel/office)
"aNB" = (/obj/structure/cable/pink{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/lino,/area/chapel/office)
@@ -2120,7 +2120,7 @@
"aON" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/door/airlock/security{name = "Evidence Storage"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/evidence_storage)
"aOO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
"aOP" = (/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/tiled/dark,/area/security/evidence_storage)
-"aOQ" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
+"aOQ" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/station/eng_lower)
"aOR" = (/turf/simulated/wall/r_wall,/area/security/evidence_storage)
"aOS" = (/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/lino,/area/chapel/office)
"aOT" = (/obj/structure/cable/pink{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/lino,/area/chapel/office)
@@ -2213,7 +2213,7 @@
"aQC" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/structure/bed/chair{dir = 1},/turf/simulated/floor/tiled/dark,/area/chapel/main)
"aQD" = (/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/highsecurity{name = "AI Upload"; req_access = list(16); req_one_access = list()},/turf/simulated/floor/tiled/techfloor,/area/ai_upload)
"aQE" = (/obj/structure/catwalk,/obj/structure/extinguisher_cabinet{pixel_x = -27},/turf/simulated/open,/area/engineering/engine_balcony)
-"aQF" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/tech_supply,/obj/random/maintenance/cargo,/obj/random/toy,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/sec_upper)
+"aQF" = (/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/station/sec_upper)
"aQG" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/chief)
"aQH" = (/obj/machinery/light{dir = 8},/obj/structure/table/steel,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/turf/simulated/floor/tiled,/area/security/security_processing)
"aQI" = (/obj/structure/table/steel,/obj/item/device/flashlight/lamp,/turf/simulated/floor/tiled,/area/security/security_processing)
@@ -2234,7 +2234,7 @@
"aQX" = (/obj/effect/floor_decal/corner_techfloor_grid{dir = 5},/obj/structure/cable/cyan{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/cable/cyan{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/techfloor,/area/ai_upload)
"aQY" = (/obj/effect/floor_decal/techfloor{dir = 5},/obj/effect/floor_decal/techfloor/hole/right{dir = 1},/turf/simulated/floor/tiled/techfloor,/area/ai_upload)
"aQZ" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/machinery/porta_turret/ai_defense,/turf/simulated/floor/bluegrid,/area/ai_upload)
-"aRa" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
+"aRa" = (/obj/structure/disposalpipe/segment,/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/station/elevator)
"aRb" = (/obj/machinery/button/remote/driver{id = "enginecore"; name = "Emergency Core Eject"; pixel_x = 0; pixel_y = 21},/obj/structure/window/basic,/turf/simulated/floor/tiled/freezer,/area/crew_quarters/heads/chief)
"aRc" = (/obj/structure/closet/secure_closet/engineering_chief,/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
"aRd" = (/obj/structure/table/reinforced,/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/item/weapon/cell/high{charge = 100; maxcharge = 15000},/obj/machinery/light{dir = 1},/turf/simulated/floor/tiled,/area/crew_quarters/heads/chief)
@@ -2267,7 +2267,7 @@
"aRE" = (/obj/structure/table/reinforced,/obj/item/weapon/stamp/ce,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/flame/lighter/zippo,/obj/item/device/megaphone,/obj/item/weapon/folder/yellow_ce,/obj/item/weapon/pen/multi,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aRF" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aRG" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 10},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
-"aRH" = (/obj/machinery/telecomms/relay/preset/tether/station_low,/obj/effect/floor_decal/techfloor/orange{dir = 9},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/window/brigdoor/westleft,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
+"aRH" = (/obj/structure/sink{dir = 8; icon_state = "sink"; pixel_x = -12; pixel_y = 8},/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"aRI" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor/tiled,/area/security/security_processing)
"aRJ" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled,/area/security/security_processing)
"aRK" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled,/area/security/security_processing)
@@ -2299,7 +2299,7 @@
"aSk" = (/obj/structure/table/reinforced,/obj/machinery/button/remote/blast_door{id = "atmoslockdown"; name = "Atmospherics Lockdown"; pixel_x = 6; pixel_y = -12; req_access = list(10)},/obj/machinery/button/remote/blast_door{id = "englockdown"; name = "Engineering Lockdown"; pixel_x = -6; pixel_y = -12; req_access = list(10)},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/item/device/radio{pixel_x = -4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aSl" = (/obj/structure/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aSm" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
-"aSn" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/door/window/brigdoor/westleft,/obj/machinery/telecomms/relay/preset/tether/station_mid,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
+"aSn" = (/obj/structure/table/marble,/obj/item/weapon/hand_labeler,/obj/item/weapon/reagent_containers/food/condiment/small/sugar,/obj/machinery/floor_light/prebuilt{on = 1},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "cafe"; name = "Cafe Shutters"; pixel_x = -10; pixel_y = 10; req_access = list(); req_one_access = list(25)},/obj/item/weapon/reagent_containers/glass/rag,/turf/simulated/floor/tiled,/area/crew_quarters/visitor_dinning)
"aSo" = (/obj/structure/table/steel,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/turf/simulated/floor/tiled,/area/security/security_processing)
"aSp" = (/obj/structure/table/steel,/obj/item/weapon/hand_labeler,/obj/item/weapon/folder/red{pixel_x = 2; pixel_y = 4},/obj/item/weapon/folder/red,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/security/security_processing)
"aSq" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -24},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/turf/simulated/floor/tiled,/area/security/security_processing)
@@ -2332,7 +2332,7 @@
"aSR" = (/obj/structure/table/reinforced,/obj/item/weapon/clipboard,/obj/item/clothing/glasses/meson{pixel_y = 4},/obj/item/clothing/glasses/welding/superior,/obj/item/weapon/storage/fancy/cigarettes,/obj/item/weapon/book/manual/supermatter_engine,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aSS" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
"aST" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/carpet/oracarpet,/area/crew_quarters/heads/chief)
-"aSU" = (/obj/effect/floor_decal/techfloor/orange{dir = 10},/obj/structure/window/reinforced,/obj/machinery/door/window/brigdoor/westleft,/obj/machinery/telecomms/relay/preset/tether/station_high,/turf/simulated/floor/tiled/techfloor,/area/crew_quarters/heads/chief)
+"aSU" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"aSV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/airlock/multi_tile/metal/mait{name = "Security Processing"; req_access = list(1); req_one_access = list(12)},/obj/structure/disposalpipe/segment,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/security_processing)
"aSW" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/security_processing)
"aSX" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/sec_lower)
@@ -2466,7 +2466,7 @@
"aVv" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/obj/structure/disposalpipe/segment,/obj/structure/railing,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"aVw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"aVx" = (/obj/structure/railing{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
-"aVy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/sec_upper)
+"aVy" = (/obj/structure/closet,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random/action_figure,/obj/random/action_figure,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
"aVz" = (/turf/simulated/floor/holofloor/tiled/dark,/area/hallway/station/starboard)
"aVA" = (/turf/simulated/floor/tiled,/area/hallway/station/starboard)
"aVB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/hallway/station/starboard)
@@ -2659,7 +2659,7 @@
"aZg" = (/obj/machinery/atmospherics/unary/vent_pump/on,/turf/simulated/floor/tiled/white,/area/medical/virology)
"aZh" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor/tiled/white,/area/medical/virology)
"aZi" = (/obj/random/junk,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/medical/virology)
-"aZj" = (/obj/structure/disposalpipe/segment,/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/tech_supply,/obj/random/maintenance/clean,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random_multi/single_item/netgun,/turf/simulated/floor,/area/maintenance/station/elevator)
+"aZj" = (/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/security_starboard)
"aZk" = (/obj/random/junk,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/medical/virology)
"aZl" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/medical/virology)
"aZm" = (/obj/structure/catwalk,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/evahallway)
@@ -2680,7 +2680,7 @@
"aZB" = (/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "englockdown"; name = "Engineering Lockdown"; opacity = 0},/obj/machinery/door/airlock/glass_engineering{name = "Engineering Mezzenine"; req_one_access = list()},/turf/simulated/floor/tiled/steel_grid,/area/engineering/foyer_mezzenine)
"aZC" = (/obj/machinery/door/airlock/maintenance/engi,/obj/structure/cable{icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/hallway/station/port)
"aZD" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/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/hallway/station/port)
-"aZE" = (/obj/machinery/vending/cola,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/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/hallway/station/starboard)
+"aZE" = (/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/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},/obj/machinery/vending/nifsoft_shop,/turf/simulated/floor/tiled,/area/hallway/station/starboard)
"aZF" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/corner/lightgrey{dir = 9},/obj/effect/floor_decal/corner/lightgrey{dir = 6},/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/hallway/station/starboard)
"aZG" = (/turf/simulated/wall/r_wall,/area/hallway/station/starboard)
"aZH" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/turf/simulated/floor/tiled,/area/hallway/station/starboard)
@@ -2970,11 +2970,11 @@
"bff" = (/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/lightgrey/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/lightgrey/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/turf/simulated/floor/tiled,/area/tether/station/stairs_two)
"bfg" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/tether/station/stairs_two)
"bfh" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/tether/station/stairs_one)
-"bfi" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/action_figure,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/sec_upper)
+"bfi" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/drinkbottle,/obj/random/tool,/obj/random/maintenance/cargo,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/sec_upper)
"bfj" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/micro)
"bfk" = (/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bfl" = (/obj/structure/table/glass,/obj/item/weapon/folder/white,/obj/item/weapon/hand_labeler,/obj/structure/extinguisher_cabinet{pixel_x = -27},/obj/item/device/radio{pixel_x = -4},/turf/simulated/floor/tiled/white,/area/medical/virology)
-"bfm" = (/obj/structure/closet,/obj/random/maintenance/security,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random/action_figure,/obj/random/action_figure,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
+"bfm" = (/obj/random/trash_pile,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/security_starboard)
"bfn" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/red/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/firealarm{dir = 8; pixel_x = -24; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby)
"bfo" = (/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/obj/machinery/atmospherics/pipe/simple/hidden/black,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/virology)
"bfp" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/obj/machinery/power/sensor{name = "Powernet Sensor - Engine Output"; name_tag = "Engine Output"},/obj/structure/cable/yellow{d2 = 4; icon_state = "0-4"},/obj/structure/cable/yellow{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/engineering/engine_room)
@@ -3006,7 +3006,7 @@
"bfP" = (/obj/machinery/light/small,/obj/effect/floor_decal/industrial/warning/corner,/turf/simulated/floor/tiled,/area/tether/station/stairs_one)
"bfQ" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/tether/station/stairs_two)
"bfR" = (/obj/machinery/firealarm{dir = 4; layer = 3.3; pixel_x = 26},/obj/effect/floor_decal/industrial/warning,/turf/simulated/floor/tiled,/area/tether/station/stairs_one)
-"bfS" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/junk,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
+"bfS" = (/obj/structure/closet,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
"bfT" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/station/micro)
"bfU" = (/turf/simulated/wall/r_wall,/area/maintenance/security_starboard)
"bfV" = (/obj/machinery/door/window/brigdoor/westleft,/obj/machinery/door/window/brigdoor/eastleft,/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/monotile,/area/security/lobby)
@@ -3353,7 +3353,7 @@
"bmy" = (/obj/structure/shuttle/window,/obj/structure/grille,/turf/simulated/shuttle/plating,/area/shuttle/large_escape_pod1/station)
"bmz" = (/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/oxygen/prechilled,/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"bmA" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/glass/beaker/cryoxadone{pixel_x = -4; pixel_y = 0},/obj/item/weapon/wrench,/obj/random/medical/lite,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
-"bmB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
+"bmB" = (/obj/structure/closet/crate/medical,/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/bodybag/cryobag{pixel_x = 5},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/box/masks{pixel_x = 0; pixel_y = 0},/obj/item/weapon/storage/box/gloves{pixel_x = 3; pixel_y = 4},/obj/item/weapon/storage/firstaid/toxin,/obj/item/weapon/storage/firstaid/fire{layer = 2.9; pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/firstaid/adv{pixel_x = -2},/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/item/weapon/reagent_containers/blood/empty,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = -32},/obj/item/device/defib_kit,/obj/item/device/defib_kit,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"bmC" = (/obj/machinery/sleeper{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"bmD" = (/obj/machinery/sleep_console,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
"bmE" = (/obj/structure/bed/chair{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor,/area/shuttle/large_escape_pod1/station)
@@ -3368,7 +3368,7 @@
"bmN" = (/obj/effect/floor_decal/industrial/hatch/yellow,/obj/machinery/flasher/portable,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"bmO" = (/obj/machinery/camera/network/security,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"bmP" = (/obj/structure/table/rack,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
-"bmQ" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
+"bmQ" = (/obj/machinery/light{dir = 1},/obj/structure/table/rack,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"bmR" = (/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"bmS" = (/obj/structure/table/steel,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/red/border{dir = 1},/obj/item/weapon/paper_bin,/obj/item/weapon/pen,/turf/simulated/floor/tiled,/area/security/lobby)
"bmT" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/item/clothing/suit/storage/vest/heavy/officer,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
@@ -3460,9 +3460,9 @@
"boB" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"boC" = (/obj/structure/table/rack,/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas{pixel_x = 3; pixel_y = 3},/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas,/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/item/clothing/mask/gas{pixel_x = -3; pixel_y = -3},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/window/reinforced{dir = 8; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
"boD" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/seccarts{pixel_x = 3; pixel_y = 2},/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/turf/simulated/floor/tiled/dark,/area/security/security_equiptment_storage)
-"boE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(1)},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"boE" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(1)},/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"boF" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/obj/structure/table/rack,/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/armoury)
-"boG" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northleft{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"boG" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northleft{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"boH" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/item/weapon/storage/box/shotgunshells,/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/machinery/door/window/brigdoor/northright{name = "LETHALS"; req_access = list(1)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"boI" = (/obj/machinery/light,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/door/window/brigdoor/eastleft{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump{pixel_x = -3; pixel_y = 3},/obj/item/weapon/gun/projectile/shotgun/pump,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"boJ" = (/obj/machinery/camera/network/security{dir = 1},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4; health = 1e+006},/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/door/window/brigdoor/northright,/obj/item/weapon/gun/projectile/automatic/wt550,/turf/simulated/floor/tiled/dark,/area/security/armoury)
@@ -3824,7 +3824,7 @@
"bvB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/cargo)
"bvC" = (/obj/structure/disposalpipe/sortjunction/wildcard/flipped{dir = 1},/obj/structure/railing,/obj/structure/railing{dir = 8},/turf/simulated/floor,/area/maintenance/cargo)
"bvD" = (/obj/structure/railing,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/cargo)
-"bvE" = (/obj/structure/railing,/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/maintenance/cargo)
+"bvE" = (/obj/structure/railing{dir = 8},/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/medical/lite,/obj/random/tool,/obj/random/maintenance/security,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
"bvF" = (/obj/structure/railing,/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/green{icon_state = "0-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/cargo)
"bvG" = (/obj/structure/railing,/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/tech_supply,/obj/random/maintenance/cargo,/obj/random/action_figure,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/cargo)
"bvH" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/range)
@@ -3888,7 +3888,7 @@
"bwN" = (/obj/machinery/door/airlock/maintenance/cargo{req_access = list(50); req_one_access = list(48)},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/quartermaster/delivery)
"bwO" = (/turf/simulated/wall,/area/quartermaster/office)
"bwP" = (/obj/machinery/door/window/northright,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/camera/network/security{dir = 4},/turf/simulated/floor/tiled/dark,/area/security/range)
-"bwQ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/range)
+"bwQ" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled/dark,/area/security/range)
"bwR" = (/obj/machinery/door/window/northright,/obj/effect/floor_decal/industrial/outline/yellow,/turf/simulated/floor/tiled/dark,/area/security/range)
"bwS" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/range)
"bwT" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/gun/energy/laser/practice,/turf/simulated/floor/tiled/dark,/area/security/range)
@@ -3939,7 +3939,7 @@
"bxM" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/red/border,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/closet/secure_closet/hos2,/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
"bxN" = (/obj/structure/closet/secure_closet/hos,/obj/item/clothing/suit/space/void/security/fluff/hos{armor = list("melee" = 70, "bullet" = 60, "laser" = 60, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 10); species_restricted = null},/obj/item/clothing/head/helmet/space/void/security/fluff/hos{armor = list("melee" = 70, "bullet" = 60, "laser" = 60, "energy" = 50, "bomb" = 50, "bio" = 100, "rad" = 10); species_restricted = null},/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/red/border{dir = 6},/turf/simulated/floor/tiled/dark,/area/crew_quarters/heads/hos)
"bxO" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor/tiled/white,/area/security/forensics)
-"bxP" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/drinkbottle,/obj/random/tool,/obj/random/maintenance/cargo,/obj/effect/floor_decal/rust,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/turf/simulated/floor,/area/maintenance/station/sec_upper)
+"bxP" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor,/area/medical/virology)
"bxQ" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/red/border,/obj/structure/closet{name = "Evidence Closet"},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/security/forensics)
"bxR" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/red/border,/obj/structure/closet{name = "Evidence Closet"},/turf/simulated/floor/tiled/white,/area/security/forensics)
"bxS" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/red/border,/obj/structure/table/reinforced,/obj/item/weapon/hand_labeler,/obj/structure/window/reinforced{dir = 8},/obj/machinery/camera/network/security{dir = 1},/turf/simulated/floor/tiled/white,/area/security/forensics)
@@ -3950,7 +3950,7 @@
"bxX" = (/turf/simulated/floor,/area/maintenance/station/sec_upper)
"bxY" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/station/sec_upper)
"bxZ" = (/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled/white,/area/medical/reception)
-"bya" = (/obj/structure/plasticflaps{opacity = 0},/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/turf/simulated/floor,/area/quartermaster/delivery)
+"bya" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/obj/structure/closet/secure_closet/chemical{req_access = list(64); req_one_access = list(5)},/turf/simulated/floor/carpet/blue,/area/medical/psych)
"byb" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/turf/simulated/floor/tiled/white,/area/medical/reception)
"byc" = (/obj/structure/disposalpipe/sortjunction/flipped{dir = 1; name = "Sorting Office"; sortType = "Sorting Office"},/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/brown/bordercorner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/delivery)
"byd" = (/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/obj/structure/cable/green{icon_state = "0-8"},/obj/machinery/camera/network/cargo,/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/brown/border{dir = 1},/turf/simulated/floor/tiled,/area/quartermaster/delivery)
@@ -4000,8 +4000,8 @@
"byV" = (/obj/structure/bed/chair/comfy/brown,/obj/structure/noticeboard{pixel_y = 27},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/brown/border{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/office)
"byW" = (/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/obj/structure/disposalpipe/junction,/turf/simulated/floor/tiled/white,/area/medical/reception)
"byX" = (/obj/structure/table/reinforced,/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = -28},/obj/item/clothing/ears/earmuffs{pixel_x = -3; pixel_y = -2},/obj/item/clothing/ears/earmuffs,/obj/item/clothing/ears/earmuffs,/turf/simulated/floor/tiled,/area/security/range)
-"byY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/blanks{pixel_x = 2; pixel_y = -2},/obj/item/weapon/storage/box/blanks,/obj/item/ammo_magazine/clip/a762/practice,/turf/simulated/floor/tiled,/area/security/range)
-"byZ" = (/obj/structure/table/reinforced,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/security/range)
+"byY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/blanks{pixel_x = 2; pixel_y = -2},/obj/item/weapon/storage/box/blanks,/obj/item/ammo_magazine/clip/c762/practice,/turf/simulated/floor/tiled,/area/security/range)
+"byZ" = (/obj/structure/table/reinforced,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/device/radio/intercom{dir = 1; pixel_y = -24},/turf/simulated/floor/tiled,/area/security/range)
"bza" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/flashbangs{pixel_x = -2; pixel_y = -2},/turf/simulated/floor/tiled,/area/security/range)
"bzb" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
"bzc" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 9},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/security/hallway)
@@ -4048,7 +4048,7 @@
"bzR" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "security_lockdown"; name = "Security Blast Doors"; opacity = 0},/turf/simulated/floor/plating,/area/security/hallway)
"bzS" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/hallway)
"bzT" = (/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment,/obj/machinery/door/airlock/glass_security{id_tag = "BrigFoyer"; layer = 2.8; name = "Security Wing"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/hallway)
-"bzU" = (/obj/structure/closet/crate,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/toy,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
+"bzU" = (/obj/random/trash_pile,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
"bzV" = (/obj/effect/floor_decal/borderfloor/corner2{dir = 6},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 6},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 5},/turf/simulated/floor/tiled,/area/security/lobby)
"bzW" = (/obj/machinery/computer/security{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 8},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 10},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 8},/turf/simulated/floor/tiled,/area/security/lobby)
"bzX" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/security{name = "Briefing Room"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/briefing_room)
@@ -4079,7 +4079,7 @@
"bAw" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/clipboard,/obj/item/weapon/pen/red{pixel_x = 2; pixel_y = 6},/obj/structure/table/standard,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/turf/simulated/floor/tiled,/area/quartermaster/office)
"bAx" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/office)
"bAy" = (/obj/structure/bed/chair/comfy/brown{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/office)
-"bAz" = (/obj/structure/closet,/obj/random/maintenance/security,/obj/random/maintenance/clean,/obj/random/contraband,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
+"bAz" = (/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/station/cargo)
"bAA" = (/obj/structure/catwalk,/obj/effect/decal/cleanable/dirt,/obj/machinery/door/airlock/security{locked = 1; welded = 1},/turf/simulated/floor,/area/maintenance/security_starboard)
"bAB" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/reception)
"bAC" = (/turf/simulated/wall/r_wall,/area/security/lobby)
@@ -4165,7 +4165,7 @@
"bCe" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby)
"bCf" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals6,/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby)
"bCg" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/reception)
-"bCh" = (/obj/structure/railing{dir = 8},/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/medical/lite,/obj/random/tool,/obj/random/maintenance/security,/obj/effect/decal/cleanable/dirt,/obj/random_multi/single_item/netgun,/turf/simulated/floor/plating,/area/maintenance/station/eng_upper)
+"bCh" = (/obj/structure/cable{icon_state = "2-8"},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/cargo)
"bCi" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 10},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby)
"bCj" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/security/lobby)
"bCk" = (/obj/structure/railing{dir = 8},/obj/structure/closet,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/maintenance/medical,/obj/random/tool,/turf/simulated/floor,/area/maintenance/station/eng_lower)
@@ -4193,7 +4193,7 @@
"bCG" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/red/border{dir = 8},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby)
"bCH" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby)
"bCI" = (/obj/structure/closet/crate,/obj/random/contraband,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/medical/virology)
-"bCJ" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
+"bCJ" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
"bCK" = (/obj/structure/cable{icon_state = "4-8"},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/research,/obj/random/junk,/obj/random/maintenance/cargo,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
"bCL" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled,/area/security/lobby)
"bCM" = (/obj/structure/table/steel,/obj/item/weapon/storage/box/donut,/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/red/border{dir = 4},/turf/simulated/floor/tiled,/area/security/lobby)
@@ -4228,13 +4228,13 @@
"bDp" = (/obj/effect/floor_decal/borderfloor{dir = 10},/obj/effect/floor_decal/corner/red/border{dir = 10},/obj/effect/floor_decal/borderfloor/corner2{dir = 9},/obj/effect/floor_decal/corner/red/bordercorner2{dir = 9},/obj/machinery/computer/guestpass{dir = 4; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled,/area/security/lobby)
"bDq" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/turf/simulated/floor/tiled,/area/security/lobby)
"bDr" = (/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled,/area/security/lobby)
-"bDs" = (/obj/structure/closet,/obj/random/maintenance/cargo,/obj/random/maintenance/engineering,/obj/random/junk,/obj/random/tool,/obj/effect/decal/cleanable/dirt,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
-"bDt" = (/obj/structure/cable{icon_state = "2-8"},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
-"bDu" = (/obj/machinery/light/small{dir = 1},/obj/structure/cable{icon_state = "4-8"},/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
+"bDs" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor/plating,/area/maintenance/station/micro)
+"bDt" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/bridge)
+"bDu" = (/obj/effect/floor_decal/rust,/obj/random/trash_pile,/turf/simulated/floor,/area/teleporter/departing)
"bDv" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/junk,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
"bDw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/cable/green,/turf/simulated/floor/plating,/area/security/lobby)
"bDx" = (/turf/simulated/wall/r_wall,/area/teleporter/departing)
-"bDy" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/cargo,/obj/random/maintenance/cargo,/obj/random/junk,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
+"bDy" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/security_starboard)
"bDz" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/red/border,/turf/simulated/floor/tiled,/area/security/lobby)
"bDA" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
"bDB" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
@@ -4404,7 +4404,7 @@
"bGJ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor/wood,/area/medical/psych)
"bGK" = (/obj/structure/cable{icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/cargo)
"bGL" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
-"bGM" = (/obj/structure/closet/crate,/obj/random/maintenance/medical,/obj/random/junk,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/station/micro)
+"bGM" = (/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/toy,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
"bGN" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/engineering,/obj/random/tech_supply,/turf/simulated/floor,/area/hallway/station/docks)
"bGO" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/techfloor,/area/medical/morgue)
"bGP" = (/obj/machinery/computer/supplycomp{dir = 4},/obj/machinery/camera/network/cargo{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm)
@@ -4442,7 +4442,7 @@
"bHv" = (/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/cargo)
"bHw" = (/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/cargo)
"bHx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/cargo)
-"bHy" = (/obj/structure/closet/crate,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/cargo,/obj/random/maintenance/security,/turf/simulated/floor,/area/maintenance/station/bridge)
+"bHy" = (/obj/effect/decal/cleanable/dirt,/obj/random/trash_pile,/turf/simulated/floor,/area/hallway/station/docks)
"bHz" = (/obj/machinery/computer/security/mining{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm)
"bHA" = (/turf/simulated/floor/tiled,/area/quartermaster/qm)
"bHB" = (/obj/structure/table/standard,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/qm,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/qm)
@@ -4480,7 +4480,7 @@
"bIh" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/station/cargo)
"bIi" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/maintenance/station/cargo)
"bIj" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/random/junk,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/cargo)
-"bIk" = (/obj/structure/closet,/obj/random_multi/single_item/netgun,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/research,/obj/random/medical/lite,/obj/random/junk,/turf/simulated/floor,/area/crew_quarters/sleep/cryo)
+"bIk" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor,/area/maintenance/station/medbay)
"bIl" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor,/area/maintenance/station/cargo)
"bIm" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/turf/simulated/floor/tiled,/area/quartermaster/qm)
"bIn" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled,/area/quartermaster/qm)
@@ -4539,8 +4539,8 @@
"bJo" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/quartermaster/storage)
"bJp" = (/obj/effect/floor_decal/industrial/warning/corner{dir = 4},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"bJq" = (/obj/effect/floor_decal/industrial/warning{dir = 5},/turf/simulated/floor/tiled,/area/quartermaster/storage)
-"bJr" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "cargo_bay_door"; locked = 1; name = "Cargo Docking Hatch"; req_access = list(13)},/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bJs" = (/turf/simulated/floor,/area/quartermaster/storage)
+"bJr" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Cargo"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo)
+"bJs" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo)
"bJt" = (/obj/structure/closet/wardrobe/black,/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/newscaster{layer = 3.3; pixel_x = -27; pixel_y = 0},/obj/effect/floor_decal/corner_steel_grid{dir = 6},/turf/simulated/floor/tiled,/area/teleporter/departing)
"bJu" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing)
"bJv" = (/obj/machinery/cryopod/robot/door/gateway,/turf/simulated/floor/tiled/techfloor,/area/teleporter/departing)
@@ -4573,7 +4573,7 @@
"bJW" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/landmark/start{name = "Psychiatrist"},/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bJX" = (/obj/machinery/door/airlock/maintenance/medical{req_access = list(64)},/obj/machinery/door/firedoor/glass,/turf/simulated/floor,/area/medical/psych)
"bJY" = (/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/cargo)
-"bJZ" = (/obj/structure/closet/crate,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/medical/lite,/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/cargo)
+"bJZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/catwalk,/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/station/medbay)
"bKa" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0},/obj/effect/decal/cleanable/dirt,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/cargo)
"bKb" = (/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/power/apc{dir = 4; name = "east bump"; pixel_x = 28},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/station/cargo)
"bKc" = (/turf/simulated/wall,/area/quartermaster/warehouse)
@@ -4598,7 +4598,7 @@
"bKv" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/medbay{dir = 4},/obj/effect/floor_decal/corner/paleblue{dir = 9},/obj/effect/floor_decal/corner/paleblue{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bKw" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/effect/floor_decal/steeldecal/steel_decals6{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bKx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals6,/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
-"bKy" = (/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/obj/structure/closet/secure_closet/chemical,/turf/simulated/floor/carpet/blue,/area/medical/psych)
+"bKy" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/machinery/light{dir = 1},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"bKz" = (/obj/machinery/camera/network/medbay{dir = 1},/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bKA" = (/obj/machinery/light,/turf/simulated/floor/carpet/blue,/area/medical/psych)
"bKB" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 5},/turf/simulated/floor/carpet/blue,/area/medical/psych)
@@ -4616,7 +4616,7 @@
"bKN" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/vehicle/train/cargo/trolley,/obj/machinery/light{dir = 8},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"bKO" = (/obj/effect/floor_decal/industrial/warning{dir = 6},/turf/simulated/floor/tiled,/area/quartermaster/storage)
"bKP" = (/obj/structure/catwalk,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/security_starboard)
-"bKQ" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/maintenance/medical,/obj/random/maintenance/security,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/teleporter/departing)
+"bKQ" = (/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay)
"bKR" = (/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/white,/area/medical/sleeper)
"bKS" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/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/white,/area/medical/sleeper)
"bKT" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/structure/cable/green{d1 = 2; d2 = 4; icon_state = "2-4"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -4737,8 +4737,8 @@
"bNe" = (/obj/machinery/computer/operating{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/surgery)
"bNf" = (/obj/machinery/optable,/turf/simulated/floor/tiled/white,/area/medical/surgery)
"bNg" = (/obj/item/stack/medical/advanced/bruise_pack{pixel_x = 2; pixel_y = 2},/obj/item/stack/medical/advanced/bruise_pack,/obj/structure/table/standard,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/white/border{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/weapon/surgical/bonegel,/obj/item/weapon/surgical/bonegel,/turf/simulated/floor/tiled/white,/area/medical/surgery)
-"bNh" = (/obj/machinery/power/breakerbox/activated{RCon_tag = "Cargo Substation Bypass"},/turf/simulated/floor,/area/maintenance/substation/cargo)
-"bNi" = (/obj/machinery/power/smes/buildable{charge = 0; RCon_tag = "Substation - Surface Civilian"},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/maintenance/substation/cargo)
+"bNh" = (/obj/structure/bookcase{name = "bookcase (Non-Fiction)"},/turf/simulated/floor/wood,/area/library)
+"bNi" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{dir = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/toilet)
"bNj" = (/obj/structure/table/standard,/obj/item/weapon/storage/firstaid/fire{pixel_x = 5; pixel_y = 5},/obj/item/weapon/storage/firstaid/fire{pixel_x = 0; pixel_y = 0},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/corner/yellow/full{dir = 4},/turf/simulated/floor/tiled,/area/medical/biostorage)
"bNk" = (/obj/structure/closet/crate,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
"bNl" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/turf/simulated/floor/tiled/steel,/area/quartermaster/warehouse)
@@ -4868,8 +4868,8 @@
"bPF" = (/obj/structure/table/standard,/obj/item/weapon/surgical/retractor,/obj/item/weapon/surgical/bonesetter,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/white/border{dir = 1},/obj/machinery/light_switch{dir = 2; name = "light switch "; pixel_x = 0; pixel_y = 26},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bPG" = (/obj/structure/table/standard,/obj/item/weapon/surgical/scalpel,/obj/item/weapon/surgical/hemostat,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/white/border{dir = 1},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bPH" = (/obj/structure/table/standard,/obj/item/weapon/surgical/circular_saw,/obj/item/weapon/surgical/surgicaldrill,/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/white/border{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
-"bPI" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/medbay)
-"bPJ" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor,/area/maintenance/station/medbay)
+"bPI" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bPJ" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/structure/railing{dir = 4},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/turf/simulated/floor,/area/maintenance/station/medbay)
"bPK" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22; pixel_y = 0},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/effect/floor_decal/rust,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/station/micro)
"bPL" = (/obj/machinery/computer/transhuman/resleeving{dir = 1},/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/simulated/floor/tiled/white,/area/medical/resleeving)
"bPM" = (/obj/item/weapon/book/manual/resleeving,/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/medical/resleeving)
@@ -4894,7 +4894,7 @@
"bQf" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/atmospherics/unary/vent_scrubber/on,/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bQg" = (/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bQh" = (/obj/structure/table/standard,/obj/item/weapon/surgical/cautery,/obj/item/weapon/surgical/FixOVein,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/white/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
-"bQi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bQi" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/station/medbay)
"bQj" = (/turf/simulated/wall,/area/crew_quarters/heads/cmo)
"bQk" = (/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/recharger,/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/item/device/radio/intercom{dir = 4; pixel_x = -24},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bQl" = (/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -4929,7 +4929,7 @@
"bQO" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/white/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/obj/effect/floor_decal/corner/white/bordercorner2{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bQP" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bQQ" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/white/border{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
-"bQR" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/random/junk,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bQR" = (/obj/structure/railing{dir = 8},/obj/random/trash_pile,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay)
"bQS" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/newscaster{layer = 3.3; pixel_x = -27; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bQT" = (/obj/structure/bed/chair/office/light{dir = 4},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/machinery/button/remote/airlock{desc = "A remote control switch for the CMO's office."; id = "cmodoor"; name = "CMO Office Door Control"; pixel_x = -8; pixel_y = -36},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "virologyquar"; name = "Virology Emergency Lockdown Control"; pixel_x = 0; pixel_y = -28; req_access = list(5)},/obj/machinery/button/remote/blast_door{desc = "A remote control-switch for shutters."; id = "medbayquar"; name = "Medbay Emergency Lockdown Control"; pixel_x = 0; pixel_y = -36; req_access = list(5)},/obj/machinery/button/windowtint{id = "cmooffice"; pixel_x = -6; pixel_y = -28},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bQU" = (/obj/structure/table/glass,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
@@ -4964,8 +4964,8 @@
"bRx" = (/obj/structure/table/standard,/obj/item/device/healthanalyzer,/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/white/border,/obj/item/weapon/reagent_containers/spray/cleaner{desc = "Someone has crossed out the Space from Space Cleaner and written in Surgery. 'Do not remove under punishment of death!!!' is scrawled on the back."; name = "Surgery Cleaner"; pixel_x = 2; pixel_y = 2},/turf/simulated/floor/tiled/white,/area/medical/surgery2)
"bRy" = (/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 4},/obj/structure/cable/green{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 28},/turf/simulated/floor/tiled/dark,/area/medical/medbay_emt_bay)
"bRz" = (/turf/simulated/floor/tiled,/area/medical/surgery_hallway)
-"bRA" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay)
-"bRB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo)
+"bRA" = (/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bRB" = (/obj/machinery/light/small{dir = 4; pixel_y = 0},/obj/structure/bookcase{name = "bookcase (Reference)"},/turf/simulated/floor/wood,/area/library)
"bRC" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bRD" = (/obj/structure/table/glass,/obj/machinery/photocopier/faxmachine{department = "CMO's Office"},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bRE" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/mob/living/simple_animal/cat/fluff/Runtime,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
@@ -4980,7 +4980,7 @@
"bRN" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bRO" = (/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bRP" = (/obj/structure/railing,/turf/simulated/open,/area/medical/surgery_hallway)
-"bRQ" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
+"bRQ" = (/obj/structure/bookcase{name = "bookcase (Reference)"},/turf/simulated/floor/wood,/area/library)
"bRR" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bRS" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/machinery/light,/obj/machinery/requests_console{announcementConsole = 1; department = "Medical Department"; departmentType = 5; name = "Chief Medical Officer RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bRT" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/cable/green,/obj/machinery/power/apc{dir = 2; name = "south bump"; pixel_y = -32},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
@@ -5011,7 +5011,7 @@
"bSs" = (/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bSt" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bSu" = (/obj/effect/floor_decal/borderfloorwhite{dir = 5},/obj/effect/floor_decal/corner/paleblue/border{dir = 5},/obj/machinery/atmospherics/unary/vent_pump/on{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 4},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
-"bSv" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo)
+"bSv" = (/obj/structure/sink{icon_state = "sink"; dir = 8; pixel_x = -12; pixel_y = 2},/obj/structure/mirror{pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/captain)
"bSw" = (/obj/structure/sign/nosmoking_1,/turf/simulated/wall,/area/medical/sleeper)
"bSx" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/floor_decal/borderfloorwhite/corner2,/obj/effect/floor_decal/corner/paleblue/bordercorner2,/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bSy" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/junction{icon_state = "pipe-j1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 5},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
@@ -5028,7 +5028,7 @@
"bSJ" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bSK" = (/obj/effect/floor_decal/borderfloorwhite{dir = 6},/obj/effect/floor_decal/corner/paleblue/border{dir = 6},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/tiled/white,/area/medical/surgery_hallway)
"bSL" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/door/firedoor/glass,/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/door/blast/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "medbayquar"; name = "Medbay Emergency Lockdown Shutters"; opacity = 0},/obj/machinery/door/airlock/maintenance/medical,/turf/simulated/floor,/area/medical/surgery_hallway)
-"bSM" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bSM" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/random/junk,/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/station/medbay)
"bSN" = (/turf/simulated/wall,/area/crew_quarters/medical_restroom)
"bSO" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 10},/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/turf/simulated/floor/tiled/white,/area/crew_quarters/medical_restroom)
"bSP" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/medical_restroom)
@@ -5122,9 +5122,9 @@
"bUz" = (/obj/structure/table/glass,/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bUA" = (/obj/structure/bed/chair{dir = 8},/obj/effect/floor_decal/corner/paleblue/diagonal,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bUB" = (/obj/structure/table/standard,/obj/machinery/microwave,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bUC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_a)
-"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_b)
-"bUE" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/patient_c)
+"bUC" = (/obj/machinery/photocopier,/turf/simulated/floor/wood,/area/bridge/meeting_room)
+"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "cmooffice_b"},/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo)
+"bUE" = (/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/obj/machinery/button/windowtint{id = "cmooffice_b"; pixel_x = -20; pixel_y = -25},/turf/simulated/floor/tiled/white,/area/crew_quarters/heads/cmo)
"bUF" = (/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "mrecovery-tint"},/turf/simulated/floor/plating,/area/medical/sleeper)
"bUG" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/door/firedoor/glass,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/segment,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/machinery/door/airlock/medical{id_tag = "MedicalRecovery"; name = "Recovery Room"},/turf/simulated/floor/tiled/white,/area/medical/sleeper)
"bUH" = (/obj/effect/floor_decal/corner/paleblue/diagonal,/obj/machinery/atmospherics/unary/vent_pump/on{dir = 1},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
@@ -5220,7 +5220,7 @@
"bWt" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/ward)
"bWu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/medical_restroom)
"bWv" = (/obj/structure/undies_wardrobe,/turf/simulated/floor/tiled/white,/area/medical/recoveryrestroom)
-"bWw" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/exam_room)
+"bWw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "cmooffice_b"},/turf/simulated/floor/plating,/area/crew_quarters/heads/cmo)
"bWx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/turf/simulated/floor/plating,/area/medical/recoveryrestroom)
"bWy" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/medical_restroom)
"bWz" = (/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/turf/simulated/floor/tiled/white,/area/medical/ward)
@@ -5235,28 +5235,31 @@
"bWI" = (/obj/machinery/camera/network/medbay{dir = 1},/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bWJ" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/effect/floor_decal/corner/paleblue/diagonal,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bWK" = (/obj/structure/table/standard,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bWL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/ward)
+"bWL" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "exam_room"},/turf/simulated/floor/plating,/area/medical/exam_room)
"bWM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 5; icon_state = "fwindow"},/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/crew_quarters/medbreak)
"bWN" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor/tiled/monotile,/area/bridge_hallway)
"bWO" = (/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/tool,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/station/micro)
"bWP" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/structure/disposalpipe/sortjunction/flipped{dir = 4; name = "Morgue"; sortType = "Morgue"},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals4{dir = 4},/turf/simulated/floor/tiled/white,/area/hallway/secondary/escape/medical_escape_pod_hallway)
"bWQ" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/firstaid,/obj/random/medical/lite,/obj/random/maintenance/medical,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/security_starboard)
"bWR" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/medical/lite,/obj/random/tool,/obj/random/maintenance/medical,/obj/effect/decal/cleanable/dirt,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
-"bWS" = (/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/firstaid,/obj/random/tool,/obj/random/maintenance/medical,/obj/random/plushie,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/turf/simulated/floor,/area/maintenance/security_starboard)
-"bWT" = (/obj/structure/closet,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/maintenance/medical,/obj/random/toy,/obj/effect/decal/cleanable/dirt,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/security_starboard)
+"bWS" = (/obj/random/trash_pile,/turf/simulated/floor,/area/maintenance/station/bridge)
+"bWT" = (/obj/structure/cable{icon_state = "1-8"},/obj/effect/floor_decal/rust,/turf/simulated/floor,/area/maintenance/station/bridge)
"bWU" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/lightgrey/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/turf/simulated/floor/tiled,/area/hallway/station/docks)
-"bWV" = (/obj/structure/closet/crate,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/toy,/obj/random/tech_supply,/turf/simulated/floor,/area/hallway/station/docks)
+"bWV" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/structure/disposalpipe/segment,/obj/effect/decal/cleanable/dirt,/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/station/medbay)
"bWW" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/clean,/obj/random/maintenance/medical,/obj/random/tool,/turf/simulated/floor,/area/hallway/station/docks)
-"bWX" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/cargo,/obj/random/maintenance/clean,/obj/random/junk,/obj/random/maintenance/cargo,/obj/random/maintenance/medical,/obj/effect/decal/cleanable/dirt,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bWX" = (/obj/structure/railing{dir = 8},/obj/effect/decal/cleanable/dirt,/obj/random/junk,/turf/simulated/floor,/area/maintenance/station/medbay)
"bWY" = (/obj/structure/table/rack{dir = 8; layer = 2.9},/obj/random/maintenance/medical,/obj/random/junk,/obj/random/maintenance/medical,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/medbay)
-"bWZ" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/disposalpipe/segment,/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/station/medbay)
-"bXa" = (/obj/structure/closet,/obj/random/maintenance/medical,/obj/random/junk,/obj/random/maintenance/medical,/obj/random/toy,/obj/random/action_figure,/obj/effect/decal/cleanable/dirt,/obj/effect/floor_decal/rust,/obj/random_multi/single_item/netgun,/obj/random_multi/single_item/teleport,/obj/random/maintenance/clean,/obj/random/maintenance/clean,/turf/simulated/floor,/area/maintenance/station/medbay)
+"bWZ" = (/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/structure/disposalpipe/segment{dir = 8; icon_state = "pipe-c"},/obj/effect/floor_decal/rust,/obj/structure/catwalk,/turf/simulated/floor,/area/maintenance/station/medbay)
"bXb" = (/obj/machinery/alarm{pixel_y = 22},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/effect/decal/cleanable/dirt,/mob/living/simple_animal/mouse,/turf/simulated/floor,/area/maintenance/substation/command)
"bXc" = (/obj/structure/closet/secure_closet/brig{id = "Cell 1"},/obj/effect/floor_decal/industrial/outline,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/brig)
"bXd" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/flasher{id = "Cell 1"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/brig)
"bXe" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 6},/obj/machinery/flasher{id = "Cell 2"; pixel_x = -28; pixel_y = 0},/turf/simulated/floor/tiled/dark,/area/security/brig)
"bXf" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"},/obj/effect/floor_decal/industrial/outline,/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 8},/turf/simulated/floor/tiled/dark,/area/security/brig)
"bXg" = (/obj/machinery/door/firedoor/glass,/obj/machinery/door/airlock/glass_security{name = "Security Cells"; req_access = list(1)},/turf/simulated/floor/tiled/steel_grid,/area/security/prison)
+"bXh" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr1_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_a)
+"bXi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr2_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_b)
+"bXj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "pr3_window_tint"},/turf/simulated/floor/plating,/area/medical/patient_c)
+"bXk" = (/obj/structure/grille,/obj/machinery/door/firedoor/glass,/obj/structure/window/reinforced,/obj/structure/window/reinforced/polarized{dir = 10; icon_state = "fwindow"; id = "mrecovery-tint"},/turf/simulated/floor/plating,/area/medical/ward)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5295,11 +5298,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZabZabZabZabZabZabZab
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZacyaczacAacBacCacDacEacFacGacHacIadEaaUabiacKacLaaUacMacNacOacPacQaaVacRacRacRacRacRacRacRacRacRachabCaacaacaacaacaacaclacmacmacmacmacmacmacSacTaclacUacVabYacWacXacYacZacYadaadbadcabYaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabZaddadeadfadgadhadiadjadkadladmadnadoaaUadpadqadradsadtaduabnabnabnaaVadvadwadxadyadzadAadBadCacRacjabCaacaacaacaacaacaclacmacmacmacmacmacmadDadJadFadGadHadIafXadKadLadMadNabYadOadPabYaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaadQadRadSadTadUadVadWadXadYadZaeaaebaecaaUaaUaedaeeaaUaefaegabnaehaeiaaVaejaekaelaemaemaenaemaeoacRaciabCaacaacaacaacaacaclaclaclaclaclaclaclaclaclaclaepaeqaeraeraeraeraeraeraeraeraeraeraacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesaetaeuaevaewaewaexaeyaezaeAaeBaeCaeDaeEaecaaUaaUaeFaaUaaUaaVaeGaaVaaVaaVaaVaeHaemaeIaemaemaeJaemaeKacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMaeNaeOaeLaePaeQaeraeRaeSaeTaeUaeVaeraeWaeXaeraacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacabZabZabZabZabZabZabZabZabZaeYaeZafaafbafcafdafeaffafgafhafiafjafkaflafmafnafoafoafpafqafrafsaftacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafuafvaeLafwafxaerafyafzafAafBafAafCafDafEaerafFafFafFafFafFafFafFafFafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaesaetaeuaevaewaewaexaeyaezaeAaeBaeCaeDaeEaecaaUaaUaeFaaUaaUaaVaeGaaVaaVaaVaaVaeHaemaeIaemaemaeJaemaeKacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMaeNaeOaeLaePaeQaeraeRaeSaeTaeUaeVaeraflaeXaeraacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacabZabZabZabZabZabZabZabZabZaeYaeZafaafbafcafdafeaffafgafhafiafjafkahaafmafnafoafoafpafqafrafsaftacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafuafvaeLafwafxaerafyafzafAafBafAafCafDafEaerafFafFafFafFafFafFafFafFafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaikafGafHafIafJafKafHafHafLafHafHafHafHafMafNafOafPafQafRaemaemafSafSafTafUafVacRaciabCaacaacaacaacaacaeLaeMaeMaeMaeMaeMaeMafWaiXafYadGadHafZaluagbagcagdageaeragfaggaeraghagiagjagkaglagmagnagoafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacacaafGafHagpagpagqagpagpagragpagpagpagqagsagtaguagvagwagxagxagyagxagxagzaemamjacRacjabCaacaacaacaacaacaeLaeLaeLaeLaeLaeLaeLaeLaeLaeLagBagCaeraeraeraeraeraeraeraeraeraeragDagEagEagEagEagEagFagGafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagIagJafHagKagLagMaemaemaemaemaemaemagNacRaciabCaacaacaacaacaacagOagPagPagPagPagPagPagQagRagOagSagTagUagVagWagXagYagZagUahaahbagUahcahdaheahfahgahhagFahiafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagHagIagJafHagKagLagMaemaemaemaemaemaemagNacRaciabCaacaacaacaacaacagOagPagPagPagPagPagPagQagRagOagSagTagUagVagWagXagYagZagUaCQahbagUahcahdaheahfahgahhagFahiafFaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHahjahkahlahjahmahjahlahjahnahoahpahqahrahsahtagHahuagJafHahvahwahxaemahyahzahAahBahCahCacRacjabCaacaacaacaacaacagOagPagPagPagPagPagPahDahEagOacUacVagUahFahGahHahIahHahJahKahLagUahMahNahOahPahQahRagFahSafFaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTahTahTahTahTahTahUagHahjahjahjahVahWahWahWahWahXahYahZahWaiaaibaicaidaieaifafHaigaihaihaihaihaihaihaihaihaihaiiacjabCaacaacaacaacaacagOagPagPagPagPagPagPaijaqFailadGadHaimavTaioaipaiqairagUaisaitagUaiuahNaivahPahQaiwagFaixafFaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaahTaiyaizaizaizaizaiAaiBaiCaiDaiEaiFaiGahVaiHaiIaiJaiKaiKaiKaiKaiKaiKaiKaiLaiMaiNaiOaiPaiQaiRaiSaiTaiUaiVaiWaihaxbaciabCaacaacabCabCabCagOagOagOagOagOagOagOagOagOagOaiYaiZagUagUagUagUagUagUagUagUagUagUajaahNajbajcajdajeagFajfafFaacaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5311,33 +5314,33 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHamgamhamiag
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamMagHamNamOamPamQamRamSamTahjamUamVamWamXamYamZanaanbancandaneanfaihanganhanianianjankanlaihalNalPanmannalOanoanpanqanransalVamGantanuamGamGanvanwanxamGamGanyanzanuanAamGamGanBanCamKameameameameameameameameameameanDamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaanEanFanGanHanIanJanKanLanManNanOanPaqZanRanSanTanUanVanWanXanYaihaihaihaihanZaihaihaihaihaoaaobaocaodalOaoeaofaogalRaohalVamGaoiaojamGamGamGamGamGamGamGamGaokaolanwamGamGanBaomamKameameameameameameameameameamealyamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaamMagHaonamOaooaopaoqaoraosahjaotamVaouamXaovaowaoxanbaoyaozaoAaoBaoCaoDaoEaoFaoGaoHaoIaoJaRzaoLalOalOalOalOaoMaoMalRalRaoNalVamGamGamFaoOaoPaoQaoPaoQaoQaoPaoPamFamGaoRamGamGanBaoSaoTameameameameameameameameameamealyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHamgamhamiagHaoUalBaoVahjamkamVaoWaoXaoYaoZapaamrapbapcanXaoBapdaoGapeapfaoGaoHaciapgacjaphapiapiapiapiapiapiapjapkaplalVamGamGamGaoPatDarYavzarYarYavBaoPamGamGamGamGamGanBapoappameameameameameameameameameamealyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaagHamgamhamiagHaoUalBaoVahjamkamVaoWaoXaoYaoZapaamrapbapcanXaoBapdaoGapeapfaoGaoHaOQapgacjaphapiapiapiapiapiapiapjapkaplalVamGamGamGaoPatDarYavzarYarYavBaoPamGamGamGamGamGanBapoappameameameameameameameameameamealyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahUahTahTahTahTahTahTahTahUagHapqapraprapsaptalBapuapvapwalDalDalDalDapxalDapyapzapAapBapCapDapEapFapGapHapIapJapKapLapMapiapNapNapNapNapialValValValVamGamGamGaoQatDalValVapOalVavBaoQamGanvanwanxamGanBapPamKameameameameameameameameameamealyamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizapQapQaizapRaaaaaaagHapSalzapTapUamSapVapWapXapYapZaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaoGapfaqmaoHaqnaqoaqpaqqapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqraqsalVavBaoQamGanvaqtanxamGanBaquamKameameameameameameameameameameaqvamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaaaagHaqAaqBaqCaqDaqBaqCaqEbfpaqGaqHaqIaqJaqKaqLaqMapZaqNaqOaqPaqQaqRaqPaqPaqSaqTaoHbvKaqVaqWaqXapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqYawqalVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamearbamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizapQapQaizapRaaaaaaagHapSalzapTapUamSapVapWapXapYapZaqaaqbaqcaqdaqeaqfaqgaqhaqiaqjaqkaqlaoGapfaqmaoHaqnaqoaqpaqqapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqraqsaRHavBaoQamGanvaqtanxamGanBaquamKameameameameameameameameameameaqvamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaaaagHaqAaqBaqCaqDaqBaqCaqEbfpaqGaqHaqIaqJaqKaqLaqMapZaqNaqOaqPaqQaqRaqPaqPaqSaqTaoHbvKaqVaqWaqXapiapNapNapNapNapNalValValValVamGamGamGaoQatDalVaqYaSnalVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamearbamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaaaarcardarearfargarharfariarjarkarlarlarmarlarlarlarlarnaroarpaoBarqarrarsaoHaoHaoHartaruarvarwapiapNapNapNapNarxalValValValVamGamGamGaoQatDalValValValVavBaoQamGanvanwanxamGanBaraamKameameameameameameameameameamealyamfaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryahUahTagHarzarAarBarCarAarDarEahjarFarGarHarIarJarKarLarMarNarOaoGarParQarQarRarSarSaoHarTbAlarVarWapiapiapiapiapiapiarXalValValVamGamGamGaoPatDawsawUawUawUavBaoPamGamGamGamGamGanBarZasaasaasaasaasaasaasaasaasbamKasbalyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwapQapQapQaiAascasdaseasfasgashasiasjaskaskarGaslasmasnasoaspasqasrassastaoGaoGaoGasuaoGaqmaoHbByaswasxbBAaszaszaszaszaszaszasAalValValVamGamGamFaoPaoPaoPaoQaoQaoQaoPaoOamFamGanAamGamGanBaraasBasCasDasEasFasGasHasBasIasJasKalyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQapQapQaiAasLasMasNasOasPasQasRasSaskaskarGasTasUasVasWasXarGasYasZataatbatcatdateatfatgaoHaqnbCkbCFbClaszatkatlatmatnaszaoNalValValVamGanzanuamGamGamGamGamGamGamGamGatoanuanwamGamGanBatpasBasCasDatqatrasGasHasBatsattatualyaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahUaiyaizaqzaqwaizapRahUahTagHagHagHagHagHagHagHagHagHagHarGarGarGarGarGarGatvatwatxatyatzaoHaoHaoHaoHaoHatAaszaszaszaszaszatBatCatCatCbhaaplalValValVamGaokaolaxvamGamGanvanwanxamGamGaokaolaoRamGamGanBaquasBasCasDatqatrasGasHasBatEalyalyalyaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaatFatGatGatGatGatGatHatIatJatKatLatMatNatOatPatQatRatSatTatUatVatWatXatSatSatSatSatYatZauaaubatYaucaplaudalValValValValValVaueamFamGamGamHamGamGamGamGamGamGamGamGamGamGamGamFamIaufasBasBasBaugauhasBasBasBauibCJaukaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaatFatGatGatGatGatGatHatIatJatKatLatMatNatOatPatQatRatSatTatUatVatWatXatSatSatSatSatYatZauaaubatYaucaplaudalValValValValValVaueamFamGamGamHamGamGamGamGamGamGamGamGamGamGamGamFamIaufasBasBasBaugauhasBasBasBauibzUaukaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaryajgaizapRaaaaulaumaunauoaupauqaurausausautauuauvauwauwauxauyauzauAauBauCalXalXalXalXalXalXauDauEalXalXalXalXauFauGauHalXalXalXalXalXalXauIauDalXalXaxwalVauKalXalXalXalXalXalXalXalXalXauLauMauNauOauPauQauRauSauTauUasBauVbDvaukaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaulaulaunauXauYauZavaausausavbavcavdaveaveavfavgavhawGavjavkavlavmbieavnavoavpavqavravsavtavtavtavuavvavwavxavxavxavxavxavxavvavyaJQavAaOBavCavDavEavFavFavGavHavIavJavKavLavMavNavOavPavQavQavRavSbivauUasBbDBbDAaukaacaacaacaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaacaulavVatGatGatGatGatGavWavXavYbiwawaawbawcawdaweaxmaxlawhawiawiawiawjawjawjawjawkawlawmaktaktaktawnawoawoawoawoawoawoawoawoawoawpaODawraYhawtawuawvawvawvawvawwawxawyawzawzawAawBawCasBasBasBasBasBasBasBasBauVbGLaukaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaacaacaacaacaacaacaacatGatGatGatGatGatGatGatGatGaweaxoaxnbcEbcDbcFawiawJawKawLawjawMawNawOawPbGNawRawnawSawSawSawSawSawSawSawSawTawtaYNawVaDjawtawXawYawZawZawZawZawxaxabHyawzaxcanBaxdaxeaxfaxfaxgaxhaxgaxfaxfaxibIkaukaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaacaacaacaacaacaacaacatGatGatGatGatGatGatGatGatGaweaxoaxnbcEbcDbcFawiawJawKawLawjawMawNawOawPbGNawRawnawSawSawSawSawSawSawSawSawTawtaYNawVaDjawtawXawYawZawZawZawZawxaxabDtawzaxcanBaxdaxeaxfaxfaxgaxhaxgaxfaxfaxibzUaukaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqyapQaqzaqwapQaqxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawibfMbfhbfPbfObfRawiaxpaxqaxrawjaxsawNawOawPaxtbjSawnawSawTawSawSawSawSawSawSawSawtazhbWNblzawtaxyaxzaxAaxAaxAaxBawxaxabMhawzaxDalWaxEaukaukaukaukaukaukaukaukaukaukaukaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiaxGawiaxFawEawEawiaxHaxIaxJaxKaxLaxMaxNawPaxObMiawnaxQaxRaxRaxRaxRaxRaxRaxRaxSawnaxTaxUaxVawxaxWaxXaxYaxZayaaybawxaycaydawzayeauJayfaygatCayhatCatCayiatCatCayjaktaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahUaiyaizaqzaqwaizapRaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiaylaymawiaykaykawiaynayoaypayqayraysaytayuayvbOHawnayxayyayzayAayBayCayDayEayFawnayGayHaxxawxayIayJayKayKayKayLawxayMayNawzayOayPayQayRalValValValValValValVaySaktaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiawEayTawiawiawiawiayUayoayVawjayWawNawOawPayXayYawnayZazaazbazcazaazdazeazaazfazgazhaziazjazkazlayJazmaznazoazpawxaxaawzawzazqazrazsaztazuazvazwazvazvazxazyazzaktaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacawiazAazBawiawiawiawiazCazCazDawjazEawNbWUawPazFayYawnbETazHazIazHazHazHazJazHazKawnazLayHazMazNazOayJazPazQazRazSawxaxaawzazTazTazUbFBazWazTazTazTazXazXazXazYazXazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaaacaacaacaacaacawPawPawPawPawPawPawPawPawPawPawiawiawiawiawiawiawiawjawjawjawjazZaAaaAbawPbWWbWVawnaAeaAfaAgaAhaAiaAhaAjaAkaAlaAmaAnaAoaApaAqaAraAsayKaAtayKaAuawxaxaawzaAvaAwaAxaAyaAzaAAaAwaAvazXaABaACaADaAEazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgaizaqxaqyaizaryaaaaacaacaacaacaacawPawPawPawPawPawPawPawPawPawPawiawiawiawiawiawiawiawjawjawjawjazZaAaaAbawPbWWbHyawnaAeaAfaAgaAhaAiaAhaAjaAkaAlaAmaAnaAoaApaAqaAraAsayKaAtayKaAuawxaxaawzaAvaAwaAxaAyaAzaAAaAwaAvazXaABaACaADbKyazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaacaacaacaacaacawPaAFaAGaAHaAIaAIaAJaAIaAKaALaAMaANaAOaAPaAIaAIaAQaAKaARaASaATaAUawNaAVawPawPawPawnaAWazHaAXaAYazHazHaAZazHaBaawnaBbaBcaBdawxaBeaBfaBgaBhaBiaBjawxayMawzaBkaBkaBkaAyaAzaBkaBkaBlazXazXazXaBmaBnazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacawPaAVaBoaBpaBqaBqaBqaBqaBqaBqaBraBqaBsaBqaBqaBqaBqaBqaBtaBsaBqaBuaBvaAVawPaacaacawnaBwaBxazHaByazHazHaBzazHazHaBAaBBaBcaBCawxawxawxawxawxawxawxawxayMawzaBDaBDaBkaBEaBFaBkaBDaBDazXaABaBGaBHaBIazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaqwapQaqxaqyapQaqzaaaaacaacaacaacaacawPaAVaBoaBpaBqaBqaBqaBqaBqaBqaBraBqaBsaBqaBqaBqaBqaBqaBtaBsaBqaBuaBvaAVawPaacaacawnaBwaBxazHaByazHazHaBzazHazHaBAaBBaBcaBCawxawxawxawxawxawxawxawxayMawzaBDaBDaBkaBEaBFaBkbNhbNhazXaABaBGaBHbNiazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTaiyaizaqzaqwaizapRaaaaaaaacaacaacaacawPaBJaBKaBLaBMaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBLaBMaBNawNaBOawPaacaacawnaBPaBQaBRaBSbMgazHaBUazaaBVaBWaBXaBYaBZaCaaCbaCcaCdaCeaCfaCgawtayMawzaChaCiaCjaCkaClaCmaBkaCnazXazXazXaCoaCpazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgapQaCqaCqapQaqzaaaaaaaacaacaacaacaCraCsaCtaCuaCrawPaCvaCvaCvawPawPaCvaCvaCvawPawPaCvaCvaCvawPaCwaCxaCyaCzaCwaacaCAaCAaCAaCAaCAaCAaCAaCBaCCaCDaCAaCAaCEaCFaCGaCHaCIaCJaCKaCLaCfaCgawtaxaawzaCMaCNaBkaCOaCPaBkaCNaCQazXaCRaCSbNLaBIazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTajgapQaCqaCqapQaqzaaaaaaaacaacaacaacaCraCsaCtaCuaCrawPaCvaCvaCvawPawPaCvaCvaCvawPawPaCvaCvaCvawPaCwaCxaCyaCzaCwaacaCAaCAaCAaCAaCAaCAaCAaCBaCCaCDaCAaCAaCEaCFaCGaCHaCIaCJaCKaCLaCfaCgawtaxaawzaCMaCNaBkaCOaCPaBkbRQbRBazXaCRaCSbNLbNiazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaahTahUahTahTahTahTahTahTahTaacaacaacaacaCraCUaCVaCWaCraaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaCwaCXaCYaCZaCwaacaCAaDaaDbaDcaCAaDdaDeaDfaDfaDgaDhaDiazhaBcaDjaDkaDlaDlaDlaDlaDmaDmaDmaxaawzaDnaBkaBkaAyaAzaBkaBkaDoazTazTazTazTazTazXaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDraDsaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDwaDxaCwaacaCAaDyaDzaDAaCAaDBaDCaDDaDfaDfaDEaDFazLaBcaDGawtaDHbXbaDJaDKaDLaDMaDNaDOawzaDPaDQaDQaDRaAzaDSaDTaDUazTaDVaDWaDWazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDXaDYaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDZaEaaCwaacaCAaCAaEbaCAaCAaEcaEdaEeaEfaEgaEhaEiaEjaEkaElawtaEmaEnaEoaEpaEqaEraEsaEtawzaEuaEuaBkaEvaAzaEwaExaExaEyaExaExaExazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDraDsaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDwaDxaCwaacaCAbSvaDzaDAaCAaDBaDCaDDaDfaDfaDEaDFazLaBcaDGawtaDHbXbaDJaDKaDLaDMaDNaDOawzaDPaDQaDQaDRaAzaDSaDTaDUazTaDVaDWaDWazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaDXaDYaDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaDZaEaaCwaacaCAaCAaEbaCAaCAaEcaEdaEeaEfaEgaEhaEiaEjaEkaElawtaEmaEnaEoaEpaEqbWTbWSaEtawzaEuaEuaBkaEvaAzaEwaExaExaEyaExaExaExazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDpaDqaEzaDraDtaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaDuaDvaEAaDwaCwaacaCAaEBaECaEDaCAaEEaEFaDfaDfaDfaEGaCAaEHaEIaEJaEKaELaEMaENaDlaEOawzawzawzawzaEPaEQaBkaERaESaETaEUaEUaEVaEWaEXaEYazTaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEZaEZaEZaFaaFaaEZaEZaFaaFaaFaaEZaEZaEZaaaaaaaCraFbaFcaFdaCraaaaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaaaaaaaaaaCwaDvaFfaFgaCwaacaCAaFhaFiaFjaFkaFlaDfaDfaDfaDfaFmaCAaFnaFoaFpawtaDlaDlaDlaDlaacaacaacaacazTaFqaFqaBkaEvaAzaFraExaExaEyaFsaFtaFuazTaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaFvaFwaFxaFxaFxaFyaFxaFzaFAaFBaFCaFDaEZaFEaFFaFGaFHaFIaDraDtaaaaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaFeaFJaFKaFLaFMaFNaDwaCwaacaCAaFOaFPbSXaCAaFRaFSaFTaFUaFVaFWaCAaFnaFoaxxaFXawtaacaacaacaacaacaacaacazTaFYaBkaBkaEvaAzaFZaGaaGbazTaGcaGdazTazTaacaacaacaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5418,10 +5421,10 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKcaKcaKdaK
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKcaKcaKxaKyaKzaKzaJeaacaacaacaJlaKAaKBaKjaKCaKDaKjaKEaKFaKjaKEaKFaKjaKGaKHaKIaKJaKKaKLaKMaJmaKNaKOaKPaJmaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaKwaKQaKRaKSaKSaKwaacaacaataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaKTaKUaKVaKWaKzaKXaJeaacaacaacaJlaKhaKYaKjaKZaLaaKjaLbauWaKjaLcaMPaKjaLdaLeaLfaLgaLfaLhaLiaLjaLkaLlaLmaJmaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaLnaLoaLpaKSaKSaKwaacaataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaLqaLraKdaLsaLtaLuaJeaacaacaacaJlaKhagaagAaKjaKjaKjaLwaLxaKjaLyaLxaKjaLzaLeaLfaLAaLBaLCaLDaLEaLEaLEaLEaLEaKvaJDaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaKwaLnaLoaLFaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaLGaLHaKxaLIaLJaLKaJeaacaacaacaJlaLLaLMaLNaLOaLPaLQaLOaLRaLSaLOaLRaLTaLUaLVaLOaLWaLXaLYaLZaLEaMaaMbaMcaLEaMdaJDaacaacaacaacaacaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaMeaMfaMgaMhaMiaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaJeaJeaMjaMkaJeaJeaJeaacaacaacaJlaMlaMmaKjaKjaKjaKjaMnaMoaKjaMpaMqaKjaMraLeaLfaMsaMtaLCaMuaLEaMvaMwaMxaLEaMdaJDaMyaMyaMyaMyaMyaMyaMzaMAaMAaMAaMBaMCaMAaMAaMDaMAaMAaMEaMFaMGaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaLGaLHaKxaLIaLJaLKaJeaacaacaacaJlaLLaLMaLNaLOaLPaLQaLOaLRaLSaLOaLRaLTaLUaLVaLOaLWaLXaLYaLZaLEaMaaMbaeWaLEaMdaJDaacaacaacaacaacaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaKwaMeaMfaMgaMhaMiaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaJeaJeaMjaMkaJeaJeaJeaacaacaacaJlaMlaMmaKjaKjaKjaKjaMnaMoaKjaMpaMqaKjaMraLeaLfaMsaMtaLCaMuaLEawqaMwaMxaLEaMdaJDaMyaMyaMyaMyaMyaMyaMzaMAaMAaMAaMBaMCaMAaMAaMDaMAaMAaMEaMFaMGaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaJeaMHaMIaMJaMKaMLaMLaJeaacaacaacaJlaMMaMNaKjaMOaLaaKjbXdbXcaKjbXebXfaKjaMQaLeaLfaMRaLfaMSaMTaMUaMVaMWaMXaLEaKvaJDaMYaMZaNaaNbaNcaMyaNdaKwaKwaNeaNeaNeaNeaNeaNeaNeaNeaNeaNfaNgaNhaNiaNjaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaMHaMHaNkaNlaMLaMLaJeaacaacaacaJlaNmaKBaKjaNnaKDaKjaNoaKFaKjaNoaKFaKjaNpaNqaNraNsaNtaNuaNvaLEaNwaNxaNyaLEaKvaJDaNzaNAaNBaNCaNDaMyaNdaKwaNEaNeaNFaNGaNHaNIaNJaNGaNKaNeaNLaNMaNhaNNaNjaataataataataataataataabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaJeaMHaMHaNkaNlaMLaMLaJeaacaacaacaJlaNmaKBaKjaNnaKDaKjaNoaKFaKjaNoaKFaKjaNpaAEaNraNsaNtaNuaNvaLEaNwaNxaBIaLEaKvaJDaNzaNAaNBaNCaNDaMyaNdaKwaNEaNeaNFaNGaNHaNIaNJaNGaNKaNeaNLaNMaNhaNNaNjaataataataataataataataabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaNOaNOaNOaNPaNQaNOaNOaNOaNOaNOaNOaJlaNmaNRaKjaNSaKjaKjaNTaNUaKjaNVaNWaKjaNXaNYaNZaNZaNZaNZaOaaLEaLEaLEaLEaLEaKvaJDaObaOcaOdaOeaOfaMyaNdaKwaOgaNeaOhaOiaOjaOkaOlaOmaOnaNeaLoaLoaOoaNNaNjaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaOqaOraOsaOtaOtaOuaOvaNOaJlaOwaOxaOyaOzaOAapnaOzaOCapmaOzaOEaOFaOGaOHaOIaOJaOKaOLaOMaONaOOaOPawDaORaKvaJDaOeaOSaOTaOUaOVaMyaOWaOXaOXaNeaOYaOZaPaaPbaPcaPdaPeaNeaKwaKwaKwaKwaKwaataataataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaOpaOpaOpaOpaOpaOpaPfaNOaJlaPgaPhaPiaPjaPkaPkaPkaPkaPkaPkaPjaPlaPkaPmaPnaPnaPoaPpaPqaORaPraPsaPtaORaPuaJDaPvaPvaPwaPxaPvaMyaPyawQaPAaNeaOhaPBaPCaPDaPCaPBaOnaNeaacaacaacaacaacaacaacaataataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5429,11 +5432,11 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaPEaP
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaQdaNOaxjaQfaQgaQgaxCaQhaQiaQgaQgaQhaQgaQhaQgaQjaQkaQlaQmaQnaQoaQpaORaQqaQraPraORaQsaQtaQuaQvaQwaQxaQyaQzaQAaQBaQCaNeaNeaNeaNeaQDaNeaNeaNeaNeaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaQEaOpaQaaQbaQbaQbaQcaOpaPfaNOaxPaQgaQGaQGaQGaQGaQGaQGaQGaQGaQGaQGaQGaQhaQkaQHaQIaQJaQKaQLaORaPraQMaPraORaQNaOXaQOaQPaQQaQRaQSaQTaQUaNeaNeaNeaNeaQVaQWaQXaQYaQZaNeaNeaNeaNeaacaacaacaacaacaacaacaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAcaQhaQGaQGaRbaQGaRcaRdaReaRfaRgaRhaQGaQhaQkaRiaRjaQJaQKaQLaORaORaRkaORaORaQNaOXaRlaRmaRnaRoaRpaRqaRmaNeaRraRsaNeaRtaRuaRvaRwaPBaNeaRxaRyaNeaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAdaQhaQGaRAaRBaRCaRDaREaRFaRGaRBaRHaQGaQhaQkaRIaRJaRJaRKaRLaRMaRNaROaRPaQkaRQaOXaRRaRSaRnaRoaRpaRTaRUaNeaRVaRWaRXaRYaRZaSaaSbaRYaRXaScaSdaNeaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaDIaQgaQGaSiaRBaRDaSjaSkaSlaSmaRBaSnaQGaQgaQkaSoaSpaSqaSraSsaStaSuaSvaSwaQkaQNaOXaSxaSyaSzaSAaSBaSCaSDaNeaSEaSFaNeaSGaSHaPDaSIaSJaNeaSKaSLaNeaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSNaSeaSfaSgaQbaQbaQcaOpaPfaNOaOQaQgaQGaSPaRBaRDaSQaSRaSSaSTaRBaSUaQGaQgaQkaQkaQkaQkaQkaQkaQkaSVaSWaQkaQkaSXaOXaSYaSZaRnaRoaRpaPMaSZaNeaNeaNeaNeaPCaTaaTbaTcaPCaNeaNeaNeaNeaSMaTdaTeaTfaTgaLvaTiaTjaTeaTkaSMaSMaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaPfaNOaAdaQhaQGaRAaRBaRCaRDaREaRFaRGaRBaMcaQGaQhaQkaRIaRJaRJaRKaRLaRMaRNaROaRPaQkaRQaOXaRRaRSaRnaRoaRpaRTaRUaNeaRVaRWaRXaRYaRZaSaaSbaRYaRXaScaSdaNeaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaDIaQgaQGaSiaRBaRDaSjaSkaSlaSmaRBaMvaQGaQgaQkaSoaSpaSqaSraSsaStaSuaSvaSwaQkaQNaOXaSxaSyaSzaSAaSBaSCaSDaNeaSEaSFaNeaSGaSHaPDaSIaSJaNeaSKaSLaNeaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSNaSeaSfaSgaQbaQbaQcaOpaPfaNOaAcaQgaQGaSPaRBaRDaSQaSRaSSaSTaRBaNqaQGaQgaQkaQkaQkaQkaQkaQkaQkaSVaSWaQkaQkaSXaOXaSYaSZaRnaRoaRpaPMaSZaNeaNeaNeaNeaPCaTaaTbaTcaPCaNeaNeaNeaNeaSMaTdaTeaTfaTgaLvaTiaTjaTeaTkaSMaSMaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaTlaSeaSfaSgaQbaQbaQcaOpaTmaNOaPzaQiaQGaToaTpaTqaTraTsaTtaTuaRBaTvaQGaQfaQhaTwaTxaTyaTyaTzaTAaTBaTCaTDaTEaQeaOXaTGaTHaRnaRoaRpaTGaTHaTIaTIaTIaTIaTIaTJaTKaTLaTMaTMaTMaTMaTMaTNaTNaTOaTNaTNaTNaTNaTNaTOaTNaTPaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaRaaTRaQGaQGaQGaQGaTSaTTaTUaTVaTWaTXaQGaTYaTYaTYaTZaUaaUaaUaaUbaUbaUbaUbaUbaUbaOXaUcaUdaUeaUdaUfaUdaUcaTIaUgaUhaUiaTIaUjaUkaUlaTMaUmaUnaUoaTMaUpaUqaUraUsaUtaUuaUvaUwaUxaUqaUyaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSeaSeaSfaSgaQbaQbaQcaOpaPfaNOaEsaTRaQGaQGaQGaQGaTSaTTaTUaTVaTWaTXaQGaTYaTYaTYaTZaUaaUaaUaaUbaUbaUbaUbaUbaUbaOXaUcaUdaUeaUdaUfaUdaUcaTIaUgaUhaUiaTIaUjaUkaUlaTMaUmaUnaUoaTMaUpaUqaUraUsaUtaUuaUvaUwaUxaUqaUyaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaNOaSeaSeaSfaSgaQbaQbaQcaOpaUzaUAaUBaUCaUDaUEaUDaUFaUGaUHaUIaUJaUKaUKaUKaULaUMaUNaUOaUPaUQaURaUSaUSaUSaUSaUSaUSaUTaUUaUVaUWaUXaUYaUZaVaaTIaVbaVcaVdaVeaVfaVgaVfaVhaViaVjaVkaTMaTNaTNaVlaTNaTNaVmaTNaTNaVlaTNaTNaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaVnaVoaVoaVoaVoaVoaVoaVoaVpaVqaVraVsaVtaVtaVtaVtaVuaUNaVvaVwaVxbdmaUSaVzaVzaVzaVzaUSaVAaVAaVAaVBaVAaVCaVAaVDaTIaVEaVFaVGaTIaVHaVIaVJaTMaVKaVLaVMaTMaVNaVOaVPaTNaVQaVRaVSaTNaTNaTNaVTaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaVnaVoaVUaVVaVWaVXaVYaVZaVpaWaaWbaWcaWcaWcaWdaWeaWfaUNaWgaWhaWiaWjaUSaVzaVzaVzaVzaVzaVAaVAaVAaVBaWkaVCaVAaWlaTIaTIaTIaTIaTIaTJaWmaWnaTMaTMaTMaTMaTMaSMaSMaWoaWpaSMaWqaSMaWpaWpaSMaSMaSMaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5441,13 +5444,13 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaQEaOpaQaaQ
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaQaaQbaQbaQbaQcaOpaXdaVoaXeaXfaXgaXhaXiaWxaVpaWaaWyaWzaWzaWzaWAaXjaXkaXlaXmbzmaXnaXoaUSaVzaVzaVzaVzaXpaVAaXqaXraXsaXtaXtaXtaXtaXuaXtaXtaXtaXtaXtaXsaXvaXvaXvaXvaXwaXvaXvaXvaXvaXvaXvaXxaVAaXyaXzaXAaXBaXcaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaXCaXDaXDaXDaXEaOpaVnaVoaXFaXGaWuaXHaXIaWxaVpaWaaXJaXKaXKaXKaXLaWzaWzaUNaXMaQgaXNaXOaUSaUSaUSaUSaUSaUSaXPaVAaXQaXRaXSaXSaXSaXTaXUaXVaXVaXWaXXaXVaXVaXVaXVaXVaXVaXYaXZaXZaXZaXZaYaaYbaYcaYdaYeaYfaXVaYgaXcaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaNOaOpaOpaOpaOpaOpaOpaOpaOpaVnaVoawWaYiaYjaYkaYlaYmaYnaYoaWeaWeaWeaWeaYpaWzaWzaUNaYqaYraWDaYsaYtaYtaYuaYvbBYaYxaYyaYzaYAaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYBaYCaYDaYDaYDaYDaYEaYFaYGaYHaYEaYDaYDaYDaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaYIaYIaYIaYIaYJaOpaYKaYLaYMaxuaYOaYPaYQaYRaYSaYTaYUaYVaYWaVraYXaWeaYpaWzaWzaUNaWgbChaYZaZabCnaYxaYxaYxaYxaYxaZcaZdaZeaYBaZfaZgaZhaYBaZfaZgaZhaYBaZibCIaZkaZlaZkaZlaYBaZmaYDaZnaZnaZoaZpaZqaZraZsaZtaZuaZvaZvaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaNOaYIaYIaYIaYIaYJaOpaYKaYLaYMaxuaYOaYPaYQaYRaYSaYTaYUaYVaYWaVraYXaWeaYpaWzaWzaUNaWgbvEaYZaZabCnaYxaYxaYxaYxaYxaZcaZdaZeaYBaZfaZgaZhaYBaZfaZgaZhaYBaZibCIaZkaZlaZkbxPaYBaZmaYDaZnaZnaZoaZpaZqaZraZsaZtaZuaZvaZvaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaYxaNOaNOaNOaNOaNOaNOaNOaNOaNOaNOaVoaZwaZxaZxaZxaZyaVoaZzaZzaZAaZzaZBaZzaZzaUNaUNaUNaTYaTYaTYaZCaYxaYxaZDaZEaZFaZGaZHaVBaZIaYBaZJaZKaZLaYBaZJaZMaZLaYBaZNaZNaZNaZNaZNaZNaZNaZOaYDaZPaZQaZRaZSaZQaZTaZUaZVaZWaZQaZXaYDaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZYaZZbaababbacbadbaabaabaabaabaebafbagbafbadbaabahbaibaabajbakbalbambanbaobapbaqbarbasbatbaubavbawbaxbaybazbaAbaBbaCbaDaZIaYBbaEbaFbaEaYBbaEbaGbaEaYBbaHbaIbaJbaKbaLbaMaZNaZmaYDaYDaYDaYDbaNbaObaPbaQbaRaYDaYDaYDaYDaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaZYbaSbaTbaUbaVbaWbaXbaYbaYbaYbaZbbabbbbbcbbdbaYbbebbfbaYbbgbbhbbibbjbbkbblbbabbmbaYbaYbbgbaYbbnbaYbbobbpaXAbbqbbraXvbbsaZIaYBbbtbbubbvbbwbbvbbxbibaYBbbzbbAbbBbbCbbDbbEaZNbbFaYDbbGbbHaZobbIaZqbbJbbKbbLbbMbbNbbOaYDaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaZYbbPbbQbbRbbSbbTbbUbbVbbWbbWbbWbbWbbWbbWbbWbbWbbXbbYbbQbbRbbRbbRbbZbcabcbbccbcdbccbccbccbccbcebcfbcgbbRbchbchbcibchbchbcjaYBbihbcnbigbdxaZLaZLbcobaEbcpbcqbcqbcrbcsbiiaZNaZmaYDaZPaZQbcuaZSaZQaZTaZUbcvbcwaZQaZQaYDaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbcxbcxbcybcybcybcybczbcybcybcybcybcAbcAbcAbcAbcBbcBbcBbcBbcBbcBbcCbdibdjbdkbcBbcxbcxbcxbcxbcxbcxbcxbcGbcHbcHbcHaYBaYBaYBaYBaYBbcIbcJaYBbcKbcLbbtbcMbcNbcObcPbcPbcQbcsbcRaZNaZmaYDaYDaYDaYDbcSaZQbcTbcUbcVbcWaZQbcXaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbcybcYbcZbdabdbbdcbddbdebcyaatbdfaataatbcBbcBbcBbcBbdgbdhbcBbdibdjbdkbcBaacaacaacaacaacbdlbGMbdnbdobdpbdqaYBbdraYBbdsbdtbdubdvbdwbdxaZLbckaZLbaEbdybcqbcqbdzbdAbdBaZNaZmaYDbdCaZQaZobdDbdEbdFbdGbdHbdIaZQbcXaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbcybcYbcZbdabdbbdcbddbdebcyaatbdfaataatbcBbcBbcBbcBbdgbdhbcBbdibdjbdkbcBaacaacaacaacaacbdlbDsbdnbdobdpbdqaYBbdraYBbdsbdtbdubdvbdwbdxaZLbckaZLbaEbdybcqbcqbdzbdAbdBaZNaZmaYDbdCaZQaZobdDbdEbdFbdGbdHbdIaZQbcXaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbcybdJbdKbdKbdLbdKbdKbdMbdNbdObdObdPaatbcBbcBbcBbcBbdhbdhbcBbdQbdjbdRbcBaacaacaacaacaacbdlbdSbdTbcHbdUbdVaYBbdWaYBbdXbdYbdZbeabebbbvbecbbxbedaYBbeebefbegbehbeibejaZNbekaYDbelaZQbemaZSaZQaZQaZUaZVbenbeobeoaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbcybepbdKbeqberbesbdKbetbeubevbewbexaatbcBbezbezbcBbeybeybcBbeAbdjbeBbcBaacaacaacaacaacbdlbeCbeDbeEbeFbeGaYBbeHaYBbeIaZLbeJaZLbduaZLaZLbeKbeLaYBbeMbeNbcqbeObcsbePaZNaZmaYDbeQaZQbeRbeSaZqaZqaZsbeTbeUaZQaZQaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbcybeVbeWbeXbeYbeZbeWbeWbfabfbbfcbfdaatbcBbeybeybfebeybeybcBbffbfgbgtbcBaacaacaacaacaacbdlbPKbfjblgblgblgblgblgblRblRblRbflblUbfoblSbfqbfraYBbfsbftbfsbcqbfubfvaZNaZNaZmaYDbfwaZQbdIbfxaZQaZQaZUbfybdIbfzbfzaYDaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5457,9 +5460,9 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaacaacbcybcybgUbg
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbcybcybcybcybcybcybcybcybcyaataataataataacaacaacaacaacaacaacaacaacaacbADbIGbIIbIDbIFbILbIObIJbILblibISbIQbIRbJybJzbGzbGAblRbfsbhSbhTbfsbfsbfsbfsbfsbfsbhUbhVbhWbfsbhXbgTbhYbhDbhDbhZbhDbhDbhDbhDbhFaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbJHbJJbILbILbILbIObIJbJMblgbKqbKmbKobKrbKsbGzbGAblRbijbikbilbimbinbiobWYbgTbgTbgTbgTbgTbgTbiqbgTbirbhDbhDbisbitbitbiubhDbhFaataataaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbKZbLvbKUbKXbLBbLDbLybLAbMjbMlbLEbLFbMnbKsbGzbGAblRbiEbiFbiGbimbiHbiIbiJbgTbiKbiKbiLbiLbiMbiNbiObiPbiQbiQbiRbiSbiTbiUbiVbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbMsbMubMobILbMXbNjbILbMwblgbNDbNzbNAbNIbNJbNEbGAblRbjjbjkbjlbimbiHbjmbXabgTbiKbiKbjobjobjpbjqbjrbjsbjsbjsbjtbjubjvbjwbhDbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbMsbMubMobILbMXbNjbILbMwblgbNDbNzbNAbNIbNJbNEbGAblRbjjbjkbjlbimbiHbjmbKQbgTbiKbiKbjobjobjpbjqbjrbjsbjsbjsbjtbjubjvbjwbhDbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbNNbILbILbILbILbIObILbOjblgblgblgbOrbliblgblgblgblRbfsbjBbjCbjDbjEbjFbjFbgTbgTbgTbgTbgTbgTbjGbgTbhDbhDbhDbiubjHbjHbiubhDbhFaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbOvbOwbOsbOubOVbOXbOxbORbADbjQbjRbWPbjTbjUbjVbOZbjXbjYbjZbkabkbbkcbkdbkebkfbkgbkhbkibkibkjbkkbgTbklbkmbhDbknbkobhDbhDbhDbhFaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbOvbOwbOsbOubOVbOXbOxbORbADbjQbjRbWPbjTbjUbjVbOZbjXbjYbjZbkabkbbkcbkdbkebkfbkgbkhbkibkibkjbkkbgTbklbUCbkmbknbkobhDbhDbhDbhFaataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacbADbADbADbADbADbADbPxbADbADbADbPybkrbksbPBbkubPzbPAbkwbktbkxbkybkybkzbkAbjFbkBbkBbkBbkBbkBbkBbkBbgTbgTbgTbgTbgTbgTbgTbgTbgTbgTaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvaacaacaacaacaataataataataacaacaacaacaacaacaacaacaacaacaacaacaacbjFbkCbkDbkEbkFbkGbkHbkIbkJbjFbMWbQbbPZbQabMWbMWbMWbkNbkNbkObkPbjFaataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabPvbPvbPvbPvaacaacaataataataataacaacaacaacaacaacaacaacaacaacaacaacaacbjFbkQbkRbkSbkTbkUbkVbkWbkXbjFbQMbRnbQsbQtbRybRLbMWbldbldbkOblebjFblfaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -5551,51 +5554,51 @@ aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbszbszbs
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbtJbtKbtJbtKbtJbtLbszbtMbtNbtObtPbtQbtRavZbtRbtRbtSbtRbtRbtRbtRbtTbtUbtVbtWbtXbtYbtZbtUbuabtRbubbucbudbuebsWbufbugbsYbsZbtabsobpAbnPaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbszbuhbsSbuibujbujbujbujbukbukbukbukbukbujbujbujbulbujbumbumbunbuobupbuobuqbumbumburburbusbutbuubuuazGbsvbsobuwbuxbuxbuxbuxbuxbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbuybtKbuybtKbuybuzbszbuAbtrbuBbujbuCbuDaywbuFbuGbuHbuIbuFbuEbuJbuKbuLbuMbumbuNbuObuPbuQbuRbuSbuTbumbuUburburbuVbuWbuWburburburbpAbuxbuXbuYbuZazVbuxbuxbuxbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbvbbuAbvcbvdbukbvebvfbvgbvgbvgbvgbvgbvgbvhbvgbvibvjbvPbumbvlbvmbvnbvobvpbvqbvrbumbvsbvtbvubvvbvwbvxbvybvzburbpAbuxbvAbvBbvCbvDbvEbvFbvGbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbtKbtKbtKbtKbtKbtKbvbbuAbvcbvdbukbvebvfbvgbvgbvgbvgbvgbvgbvhbvgbvibvjbvPbumbvlbvmbvnbvobvpbvqbvrbumbvsbvtbvubvvbvwbvxbvybvzburbpAbuxbvAbvBbvCbvDaDybvFbvGbuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaacaacbszbvHbtKbuybtKbuybtKbvbbuAbvIbvJbukaBTbvLbvgbvMbvNbvMbvNbvMbvgbvgbvgbvObvPbumbvQbvmbvRbvSbvTbvmbvUbumbvVbvWbvXbvYbvZbwabvWbwbbwcbwdbuxbwebwfbwgbwhbvBbvBbwibuxaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbszbwjbwkbwjbwlbwjbwjbvbbuAbwmbwnbukbwobvLbvgbwpbwpbwpbwpbwpbvgbvgbvgbwqbwrbwsbwtbwubwvbwwbwxbwubwybwzbwAbwBbwCbwDbwEbwFbwGbwHburbwIbuxbwJbwKbwLbwMbwLbwLbwNbwLaacaacaacaacaacaacaacaacbwObwObwObwObwOaacaacaacaacaacaaaaaabsebsebsebsebseaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbwPbwQbwRbwSbwRbwTbszbwUbtwbwVbwWbwXbvLbvgbwpbwpbwpbwYbwZbvgbvgbxabxbbxGbxcbxdbvmbvmbvmbvmbvmbxebxcbvVbvWbxfbvWbxgbxhbvWbxiburbxjbuxbxkbuxbwLbxlbwLbxmbxnbwLbwLbwLbwObwObwObwObwObwObwObxobxpbwObwOaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbxqbxrbxsbxtbxsbxubxvbxwbxxbxybxzbxAbxBbvgbxCbxDbxCbxDbxCbvgbvgbxEbxFbxGbumbxHbxIbxJbxKbxLbxMbxNbumbxOaThbxQbxRbxSbxTbxUbxVburbxWbxXbxYaQFbwLbyabwLbbybycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbwObwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbwPbwQbwRbwSbwRbwTbszbwUbtwbwVbwWbwXbvLbvgbwpbwpbwpbwYbwZbvgbvgbxabxbbxGbxcbxdbvmbvmbvmbvmbvmbxebxcbvVbvWbxfbvWbxgbxhbvWbxiburbxjbuxbxkbuxbwLaNybwLbxmbxnbwLbwLbwLbwObwObwObwObwObwObwObxobxpbwObwOaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbxqbxrbxsbxtbxsbxubxvbxwbxxbxybxzbxAbxBbvgbxCbxDbxCbxDbxCbvgbvgbxEbxFbxGbumbxHbxIbxJbxKbxLbxMbxNbumbxOaThbxQbxRbxSbxTbxUbxVburbxWbxXbxYaErbwLbxlbwLbbybycbydbyebyfbygbyhbyibyjbykbylbymbynbyobypbwObwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbyqbyrbysbytbyubyvbszbywbsSbyxbukbyybyzbvhbvgbyAbvgbvgbvgbvgbvgbyBbyCbxGbumbumbumbumbumbumbumbumbumburburburburburburburburburbyDbyEbxYaShbwLbxlbyGbyHbyIbyJbyKbyLbyMbyNbyObyPbclbyRbySbyTbyUbyobyVbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbcmbyXbyYbyZbzabzbbszbzcbzdbzebujbzfbzgbzhaSObzjbzkaTFaTnbznaTQbzpbzqbzrbzsbztbzubzvbzwbzxbzxbzxbzxbzxbzxbzybzzbzAbzBbzBbzBbzBbzBaYwbzDaVybwLbzFbzGbyHbzHbzIbzJbwLbwObwObzKbzLbwObzMbzNbzObzPbyUbzQbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbszbszbszbszbszbszbszbzRbzSbzTbujbujaZbaYYbujbujbujbujbujbujbujbzXbujbujbujaZjbzZbAabctbzxbAcbAcbAcbAcbzxbAdbAebAfbzBbAgbAhbAibzBbAjbAkbfibwLbzFbAmbyHbAnbAobApbAqbArbAsbAtbAubAvbwObAwbAxbyUbyUbAybwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbfSbfmbACbfnbAEbAFbfXbicbAIbgybALbptbmSbjzbipbAObAPbAQbARbqQbACbpPbAUbzvbAVbzxbAcbAcbAcbAcbAcbAdbAWbAXbzBbAYbAZbBabzBbBbbxXbsibwLbBdbwLbBebBfbBgbBhbAqbBibBjbBkbBjbBlbBmbBnbBobBpbBpbBqbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbBrbsjbACbBtbBubBvbBwbBwbBxbvabskbvkbBwbBwbBDbBwbBwbBwbBwbBEbACbBFbBGbzvbBHbzxbAcbAcbAcbAcbAcbAdbAWbBIbzBbBJbBKbBLbzBbBbbBMbxPbwLbBObwLbBPbBQbBRbBSbAqbBibBjbBkbBjbBTbBUbBVbAxbyUbyUbBWbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbszbcmbyXbyYbyZbzabzbbszbzcbzdbzebujbzfbzgbzhaSObzjbzkaTFaTnbznaTQbzpbzqbzrbzsbztbzubzvbzwbzxbzxbzxbzxbzxbzxbzybzzbzAbzBbzBbzBbzBbzBaYwbzDaQFbwLbzFbzGbyHbzHbzIbzJbwLbwObwObzKbzLbwObzMbzNbzObzPbyUbzQbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbszbszbszbszbszbszbszbszbzRbzSbzTbujbujaZbaYYbujbujbujbujbujbujbujbzXbujbujbujaRabzZbAabctbzxbAcbAcbAcbAcbzxbAdbAebAfbzBbAgbAhbAibzBbAjbAkaQFbwLbzFbAmbyHbAnbAobApbAqbArbAsbAtbAubAvbwObAwbAxbyUbyUbAybwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUaZjaVybACbfnbAEbAFbfXbicbAIbgybALbptbmSbjzbipbAObAPbAQbARbqQbACbpPbAUbzvbAVbzxbAcbAcbAcbAcbAcbAdbAWbAXbzBbAYbAZbBabzBbBbbxXbsibwLbBdbwLbBebBfbBgbBhbAqbBibBjbBkbBjbBlbBmbBnbBobBpbBpbBqbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbBrbsjbACbBtbBubBvbBwbBwbBxbvabskbvkbBwbBwbBDbBwbBwbBwbBwbBEbACbBFbBGbzvbBHbzxbAcbAcbAcbAcbAcbAdbAWbBIbzBbBJbBKbBLbzBbBbbBMbfibwLbBObwLbBPbBQbBRbBSbAqbBibBjbBkbBjbBTbBUbBVbAxbyUbyUbBWbwOaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbBXbyFbACbBZbCabCbbCcbCdbCebCfbfVbzlbzibzibCibCjbBwbBwbBwbzCbACbzobCmbzEbCobzxbAcbAcbAcbAcbCpbAdbAWbAXbCqbzBbCrbzBbzBbCsbnPbnPbwLbCtbCubCvbCwbCxbCwbwLbCybCzbCAbCBbBTbBUbCCbAxbyUbyUbCDbwOaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbCEbzUbACbCGbBubBvbBwbBwbCHbzVbDwbzWbBCbBwbCLbBwbBwbBBbAbbCMbACbCNbCObzvbCPbzxbzxbzxbzxbzxbzxbCQbCRbCSbCTbCTbCUbCVbCWbCXbCYbCZbDabDbbDcbDdbDebDfbDgbDgbDhbBjbBkbBjbDibDjbDkbDlbDmbyUbfWbwOaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbBXbBXbAAbBXbAzbACbDpbDqbDrbAGbAMbAKbAJbAHbASbANbDzbDzbfYbBsbBcbATbBzbACbDDbDEbzvbzvbDFbDFbDFbDFbDFbDFbDGbDHbDIbDIbDIbDJbDIbDKbDLbDMbDNbDIbDIbDObDPbDQbDRbDSbDSbDTbDSbDRbDSbDUbDVbDWbDXbDYbDZbEabwOaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbCEbfmbACbCGbBubBvbBwbBwbCHbzVbDwbzWbBCbBwbCLbBwbBwbBBbAbbCMbACbCNbCObzvbCPbzxbzxbzxbzxbzxbzxbCQbCRbCSbCTbCTbCUbCVbCWbCXbCYbCZbDabDbbDcbDdbDebDfbDgbDgbDhbBjbBkbBjbDibDjbDkbDlbDmbyUbfWbwOaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbBXbBXbAAbBXbfSbACbDpbDqbDrbAGbAMbAKbAJbAHbASbANbDzbDzbfYbBsbBcbATbBzbACbDDbDEbzvbzvbDFbDFbDFbDFbDFbDFbDGbDHbDIbDIbDIbDJbDIbDKbDLbDMbDNbDIbDIbDObDPbDQbDRbDSbDSbDTbDSbDRbDSbDUbDVbDWbDXbDYbDZbEabwOaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbDFbDFbDFbDFbACbEdbEebEfbEdbACbEdbEdbACbACbACbACbACbACbACbACbACbACbACbEgbCObEhbEhbEcbEcbEcbEibEibEcbEjbEkbElbEmbEmbEnbgAbEobEpbEqbErbEsbEsbEsbEsbEtbEubEubEvbEwbExbEybEzbEAbwObEBbECbEDbEEbEFbwOaacaataataataaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbEGbDFbgFbgEbDFbgCbEIbEJbEKbELbEMbENbENbENbENbEObEPbENbEQbERbgHbgGbgZbEcbEhbEUbEhbEVbEWbEXbEcbEcbEcbEcbEYbEZbFabFbbFbbFbbFbbFbbFbbFbbFcbFdbFebFfbFgbFhbFibFibFjbFkbFibFjbFlbFlbFmbFnbFobwObFpbFpbwObFlaataataataatahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbDFbAdbGGbhcbhbbhgbhfbhebhdbhdbhdbhdbhhbhdbhjbhdbhibhAbhjbhlbhkbhGbFDbFEbFFbFGbFHbFIbFHbFJbFKbFGbFHbFLbFMbFNbFObFPbFQbFRbFRbFSbFbbFTbFUbFUbFUbFUbFjbFVbFWbFXbFYbFZbGabGbbGcbGdbGebGfbGgbGhbGibGjbGkaataatbGlbGlbGlbGlbGlbGlbGlaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbCEbDFbhJbhIbDFbhHbhNbhMbhLbhKbhNbhQawfavibhRbHkbHkbHkbHkbHkbiabEZbHhbGBbGCbGDbDIbGEbGFbDIbDKbDIbDIbDIbDObDPbGGbGHbGIbGIbGIbGIbGJbFbbGKbCKbDubDtbDsbFjbGPbGQbGRbGSbGTbFjbGUbGVbGVbGWbGXbGYbGYbGYbGYbGkaatahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbDFbDFbDFbDxbGZbGZbHabHbbHcbHdbHUawFawgawHbHYbHZbHZbHZbIcbifbHmbHnbHobHpbHkbHkbHkbHkbHkbHqbHlbHrbHobHkbHkbHsbFObGIbGIbHtbGIbHubFbbHvbHvbHwbHxbDybFjbHzbHAbHBbHCbHDbHEbHFbHGbHGbHHbHIbGYbGYbHJbHKbHLbHMbHNbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbCEbDFbhJbhIbDFbhHbhNbhMbhLbhKbhNbhQawfavibhRbHkbHkbHkbHkbHkbiabEZbHhbGBbGCbGDbDIbGEbGFbDIbDKbDIbDIbDIbDObDPbGGbGHbGIbGIbGIbGIbGJbFbbGKbCKbCJbChbAzbFjbGPbGQbGRbGSbGTbFjbGUbGVbGVbGWbGXbGYbGYbGYbGYbGkaatahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbfUbBXbDFbDFbDFbDxbGZbGZbHabHbbHcbHdbHUawFawgawHbHYbHZbHZbHZbIcbifbHmbHnbHobHpbHkbHkbHkbHkbHkbHqbHlbHrbHobHkbHkbHsbFObGIbGIbHtbGIbHubFbbHvbHvbHwbHxbAzbFjbHzbHAbHBbHCbHDbHEbHFbHGbHGbHHbHIbGYbGYbHJbHKbHLbHMbHNbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbBXbBXbBXbEGbDxbHObHPbHQbHRbHSbHTbHUaxkawIbHUbiBbiAbizbiCbIcbHZbIabIbbHZbiDbfkbiWbiWbiWbfkbfkbIdbiXbLGbFbbFObFObFObGIbGIbGIbGIbIgbFbbIhbIibIjbDCbIlbFjbFjbHAbImbInbHAbFibIobIpbIqbIrbIsbItbIubIvbIwbIxbIwbIxbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbBXbDxbIybIzbIAbIAbIAbIBbHUbiZbiYbHUbjbbjablkbjfbjebjdbjcbjibjhbfkbjgbjxbjybjxbjnbfkbITbIUbIVbFObIWbIXbIYbIZbJabJbbJcbJdbFbbJebFUbJfbJgbJebJhbFjbJibJjbJkbJlbFibJmbGYbJnbJobGXbGYbGYbJpbJqbJrbJsbJrbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbJtbJubJvbJwbJvbJxbHUbjIbjAbHUbjLbjKbjJbjPbjObjNbjMblsbkqbkpbjWbgBbkLbgBbkKbfkbJObJPbJQbJRbJSbJTbJTbJTbJUbJVbJWbIZbJXbJYbFUbJZbKabKbbKcbFjbFjbFjbFibFibFjbKdbGYbJnbJobGXbGYbGYbGYbKebHLbHLbKfbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbDxbKgbKhbKibKjbkZbHUbkYbkMbHUblbblcblablAblwbljblhbkvblmbgzbllbhOblvblubltbfkbKvbKwbKxbFObKybIZbKzbKAbKBbKCbKDbKEbFbbJYbFUbKFbHxbKGbKHbKIbKJbKKbKLbKMbKcbKNbGYbJnbJobGXbGYbGYbHJbKObJrbJsbJrbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbKPbKQbDxbDxbDxbDxbDxbDxbNKbKnbKnbHUblyblxblCblBbmtbjKbmdblKblJblIblHblQblPblOblLbfkbIdbLabLbbFbbFbbFbbFbbFbbFbbFbbFbbFbbFbbJYbLcbLcbLdbLebKcbLfbLgbLhbLibLjbKcbLkbLlbLmbLnbLobIqbLpbLqbLrbLsbLtbLsbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbfUbfUbfUbfUbBXbDxbIybIzbIAbIAbIAbIBbHUbiZbiYbHUbjbbjablkbjfbjebjdbjcbjibjhbfkbjgbjxbjybjxbjnbfkbITbIUbIVbFObIWbIXbIYbIZbJabJbbJcbJdbFbbJebFUbJfbJgbJebJhbFjbJibJjbJkbJlbFibJmbGYbJnbJobGXbGYbGYbJpbJqaSUbGYaSUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbJtbJubJvbJwbJvbJxbHUbjIbjAbHUbjLbjKbjJbjPbjObjNbjMblsbkqbkpbjWbgBbkLbgBbkKbfkbJObJPbJQbJRbJSbJTbJTbJTbJUbJVbJWbIZbJXbJYbFUbAzbKabKbbKcbFjbFjbFjbFibFibFjbKdbGYbJnbJobGXbGYbGYbGYbKebHLbHLbKfbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbEbbDxbDxbKgbKhbKibKjbkZbHUbkYbkMbHUblbblcblablAblwbljblhbkvblmbgzbllbhOblvblubltbfkbKvbKwbKxbFObyabIZbKzbKAbKBbKCbKDbKEbFbbJYbFUbKFbHxbKGbKHbKIbKJbKKbKLbKMbKcbKNbGYbJnbJobGXbGYbGYbHJbKOaSUbGYaSUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacbfUbKPbDubDxbDxbDxbDxbDxbDxbNKbKnbKnbHUblyblxblCblBbmtbjKbmdblKblJblIblHblQblPblOblLbfkbIdbLabLbbFbbFbbFbbFbbFbbFbbFbbFbbFbbFbbJYbLcbLcbLdbLebKcbLfbLgbLhbLibLjbKcbLkbLlbLmbLnbLobIqbLpbLqbLrbLsbLtbLsbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacbfUbLubBXbEbbEbbKPbEbbEbbEbbNKbLwbLwbHUblXblWblVbmqbmebABbzYblsbmsbkpbmrbhObmvbmubgDbrIbLHbLIbLJbLKbLLbLMbLNbLObLPbLQaacaacbFUbJebLcbLRbLSbLTbKcbLUbLgbLVbLWbLXbLYbLZbMabMabMbbMcbGYbGYbLqbMdbHLbMebMfbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacbfUbfUbfUbfUbfUbWSbWRbWQbWTbNKbLwbLwbHUbyQbybbxZbKWbJEbCgbyWbDnbMrbfkbBNbFrbFqbESbDobFvbMybMzbMAbLKbMBbMCbMDbMDbMEbLQaacaacbFUbJebLcbMFbMGbMHbKcbMIbLgbMJbMKbMLbMMbMNbMObMObMPbGYbMQbMQbMRbMdbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbMSbMSbMSbMSbMSbMSbMSbMTbMTbMTbMTbFCbMTbMTbMTbMUbMVbGobGmbGmbGubGsbGmbGmbGmbMZbJPbNabNbbNcbNdbNebNfbNgbLQaacaacbFUbJebLcbNhbNibHgbKcbNkbLibNlbLgbNmbKcbNnbGYbGYbNobHjbLtbNqbLtbNrbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacbfUbfUbfUbfUbfUbDybWRbWQbGMbNKbLwbLwbHUbyQbybbxZbKWbJEbCgbyWbDnbMrbfkbBNbFrbFqbESbDobFvbMybMzbMAbLKbMBbMCbMDbMDbMEbLQaacaacbFUbJebLcbMFbMGbMHbKcbMIbLgbMJbMKbMLbMMbMNbMObMObMPbGYbMQbMQbMRbMdbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbMSbMSbMSbMSbMSbMSbMSbMTbMTbMTbMTbFCbMTbMTbMTbMUbMVbGobGmbGmbGubGsbGmbGmbGmbMZbJPbNabNbbNcbNdbNebNfbNgbLQaacaacbFUbJebLcbJsbJrbHgbKcbNkbLibNlbLgbNmbKcbNnbGYbGYbNobHjbLtbNqbLtbNrbGkaaaahUbGlbGlbGlbGlbGlbGlbGlahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbMSbNsbNtbNubNvbNwbNxbNybHVbNBbNBbIebHWbICbIfbNFbNGbNHbIHbgxbIEbIPbINbIMbIKbgxbNObNPbNQbLKbNRbNSbMDbMDbMEbLQaacbNTbNTbNUbLcbLcbLcbLcbKcbKcbNVbNWbJAbNXbNYbNZbOabObbFlbFlbFlbFlbFlbFlbFlahUahUahUbGlbGlbGlbGlbGlahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbJBbOcbOdbOebOfbOgbJDbOibJCbOlbOlbOmbJFbOnbOnbOnbOobJKbJIbgxbJGbKlbKkbJNbJLbgxbKpbOybOzbLKbOAbOBbOCbODbKtbLQaacbNTbOFbOGbWXbNTaacaacaacbKcbKcbKcbKcbKcbKcbFlbFlbFlbFlaacaacaacaacaacbOIahUahUahUahUahUahUahUahUahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacaacbJBbOcbOdbOebOfbOgbJDbOibJCbOlbOlbOmbJFbOnbOnbOnbOobJKbJIbgxbJGbKlbKkbJNbJLbgxbKpbOybOzbLKbOAbOBbOCbODbKtbLQaacbNTbOFbOGbIkbNTaacaacaacbKcbKcbKcbKcbKcbKcbFlbFlbFlbFlaacaacaacaacaacbOIahUahUahUahUahUahUahUahUahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbOJbOKbOLbOMbONbOObOPbOQbKTbKSbKRbKubOTbOTbOTbOUbLxbOqbKYbKVbKlbLCbKlbLzbMmbMkbPabPbbPcbPdbPdbPdbPdbPdbPdaacbNTbPebPfbPgbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaahUaaaaaaaaaaaaaaaaaaaaaahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbPhbPibPjbPjbPjbPkbNybPlbPmbPnbPobPpbPqbPrbPsbPtbPubMtbMqbMpbNpbMYbMxbMvbMqbNCbMzbOzbPCbPDbPEbPFbPGbPHbPdaacbNTbPIbPJbWZbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbPLbPMbPNbPObPPbPQbNybPRbPmbPobPobPSbPTbPTbPUbPVbPWbPXbMqbNMbOpbOkbKlbOhbMqbQcbMzbQdbPCbQebQfbQgbQgbQhbPdbLGbLGbLGbLGbQibNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbQjbQjbQjbQjbQjbQjbQjbQjbQkbPmbQlbPobPpbQmbQnbPsbPVbPWbQobgxbOtbOYbOWbOSbOEbgxbQubJPbNabQvbQwbQxbQzbQybQAbPdbQBbQCbQBbLGbQibNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQDbQEbQFbQGbQHbQIbQJbQKbPmbPobPobPSbPTbPTbPUbPVbPWbQLbgxbgxbMqbPwbMqbgxbgxbQNbMzbNQbPCbQObQPbQgbQgbQQbPdbQBbQBbQBbLGbQRbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQSbQTbQUbQVbQWbQXbQYbQZbRabRbbRcbRdbRebRfbRgbRhbRibRjbRkbRlbRmbPYbRobRpbRqbRrbRsbRtbPCbRubRvbRwbRxbQpbPdbRzbRzbQBbLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabRBbRCbQUbRDbREbRFbRGbQJbPlbRHbRIbPobPSbPTbPTbPUbRJbRKbOTbOTbOTbOTbQrbOTbQqbRMbRNbRObOzbPdbPdbPdbPdbPdbPdbPdbRzbRzbRPbLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabRBbRQbRRbRRbRSbRTbRUbQjbRVbRWbRXbRYbRYbRZbSabRYbSbbScbSdbSebSebSzbSybSxbSgbShbSibSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubLGbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQjbSvbSvbSvbQjbQjbQjbQjbMTbMTbMTbSwbMTbMTbMTbUFbUFbUGbUFbUFbMTbUNbUPbUNbSwbLGbSAbSBbSCbSDbSEbSFbSGbSHbSEbSFbSIbSJbSKbSLbSMbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbPhbPibPjbPjbPjbPkbNybPlbPmbPnbPobPpbPqbPrbPsbPtbPubMtbMqbMpbNpbMYbMxbMvbMqbNCbMzbOzbPCbPDbPEbPFbPGbPHbPdaacbNTbPJbPIbJZbNTbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbMSbPLbPMbPNbPObPPbPQbNybPRbPmbPobPobPSbPTbPTbPUbPVbPWbPXbMqbNMbOpbOkbKlbOhbMqbQcbMzbQdbPCbQebQfbQgbQgbQhbPdbLGbLGbLGbLGbQibQRbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacahUahUaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaacaacaacbQjbQjbQjbQjbQjbQjbQjbQjbQkbPmbQlbPobPpbQmbQnbPsbPVbPWbQobgxbOtbOYbOWbOSbOEbgxbQubJPbNabQvbQwbQxbQzbQybQAbPdbQBbQCbQBbLGbQibRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQDbQEbQFbQGbQHbQIbQJbQKbPmbPobPobPSbPTbPTbPUbPVbPWbQLbgxbgxbMqbPwbMqbgxbgxbQNbMzbNQbPCbQObQPbQgbQgbQQbPdbQBbQBbQBbLGbSMbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbQjbQSbQTbQUbQVbQWbQXbQYbQZbRabRbbRcbRdbRebRfbRgbRhbRibRjbRkbRlbRmbPYbRobRpbRqbRrbRsbRtbPCbRubRvbRwbRxbQpbPdbRzbRzbQBbLGbWVbWXbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUDbRCbQUbRDbREbRFbRGbQJbPlbRHbRIbPobPSbPTbPTbPUbRJbRKbOTbOTbOTbOTbQrbOTbQqbRMbRNbRObOzbPdbPdbPdbPdbPdbPdbPdbRzbRzbRPbLGbWVbRAbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUDbUEbRRbRRbRSbRTbRUbQjbRVbRWbRXbRYbRYbRZbSabRYbSbbScbSdbSebSebSzbSybSxbSgbShbSibSjbSkbSlbSmbSnbSobSpbSqbSrbSsbStbSubLGbWVbQRbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabQjbWwbWwbWwbQjbQjbQjbQjbMTbMTbMTbSwbMTbMTbMTbUFbUFbUGbUFbUFbMTbUNbUPbUNbSwbLGbSAbSBbSCbSDbSEbSFbSGbSHbSEbSFbSIbSJbSKbSLbWZbNTbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacbUVbUYbUXbUWbUVbVcbVbbVabUZbVfbVebVdbVbbVkbVjbVibVhbTabTbbVlbTbbTdbTebVobTebTgbThbVqbThbTgbTjbNTbNTbNTaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbUVbVubVtbVsbUVbVxbVbbVwbVvbVBbVAbVzbVbbVIbVGbVEbVDbTabTubTvbTwbTdbTxbTybTzbTgbTAbTBbTCbTgaataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacbUVbUVbVNbUVbUVbVQbVbbVPbVObVTbVSbVzbVbbVXbVWbVVbVUbTabTMbTNbTObTdbTPbTQbTRbTgbTSbTTbTUbTgaataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWcbWbbWabVZbWgbWfbWebWdbWkbWjbWibVbbWobWnbWmbWlbTabUjbUkbUlbTdbUmbUnbUobTgbUpbUqbUrbTgaataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWsbWrbWqbWpbWvbVbbWtbVAbVAbVAbVzbVbbWwbWwbWwbWwbTabUCbUCbUCbTdbUDbUDbUDbTgbUEbUEbUEbTgaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabVYbWsbWrbWqbWpbWvbVbbWtbVAbVAbVAbVzbVbbWLbWLbWLbWLbTabXhbXhbXhbTdbXibXibXibTgbXjbXjbXjbTgaataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabUVbWxbWxbUVbUVbUVbVbbWzbVAbVAbVAbWCbVbaataataatbWDaataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacbVbbWGbWFbWFbWFbWHbVbaataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
-aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbVbbWLbWLbWLbWLbWLbVbaataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacbVbbXkbXkbXkbXkbXkbVbaataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaataataataataataataataataataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaacaacaacaataataaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataataataataataataataataataataataataataataataataataataataataataataataataataataataataataacaacaacaacaacaacaacaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaataataataataataataataataataataataataataataataabaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaacaacaacaacaacaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaabaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/tether/tether-04-mining.dmm b/maps/tether/tether-04-mining.dmm
index 8cf511d3ed..0846dea547 100644
--- a/maps/tether/tether-04-mining.dmm
+++ b/maps/tether/tether-04-mining.dmm
@@ -74,7 +74,7 @@
"bv" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 1},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 1},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room)
"bw" = (/turf/simulated/wall/r_wall,/area/outpost/mining_main/dorms)
"bx" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/brown/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 10},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 6},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room)
-"by" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/structure/closet/excavation,/obj/item/weapon/storage/bag/ore,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room)
+"by" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/item/weapon/storage/bag/ore,/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room)
"bz" = (/obj/machinery/portable_atmospherics/powered/scrubber/huge/stationary{frequency = 1379; scrub_id = "mining_outpost_airlock_scrubber"},/turf/simulated/floor/tiled/techfloor/grid,/area/outpost/mining_main/airlock)
"bA" = (/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/structure/cable/green{icon_state = "0-2"},/turf/simulated/floor/bluegrid,/area/outpost/mining_main/airlock)
"bB" = (/obj/machinery/light{dir = 1},/turf/simulated/floor/bluegrid,/area/outpost/mining_main/airlock)
@@ -88,7 +88,7 @@
"bJ" = (/obj/machinery/light{dir = 4; icon_state = "tube1"; pixel_x = 0},/obj/machinery/atmospherics/pipe/simple/visible/supply{dir = 9},/obj/machinery/atmospherics/pipe/simple/visible/scrubbers,/obj/effect/floor_decal/techfloor{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/outpost/engineering/atmospherics)
"bK" = (/obj/structure/table/woodentable,/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 4},/obj/machinery/alarm{pixel_y = 22},/turf/simulated/floor/wood,/area/outpost/mining_main/dorms)
"bL" = (/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 6},/obj/machinery/power/apc{dir = 1; name = "north bump"; pixel_x = 0; pixel_y = 24},/obj/machinery/light_switch{dir = 1; pixel_x = 12; pixel_y = 24},/obj/structure/cable/green{icon_state = "0-4"},/turf/simulated/floor/wood,/area/outpost/mining_main/dorms)
-"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/structure/closet/excavation,/obj/item/weapon/storage/bag/ore,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room)
+"bM" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/brown/border{dir = 4},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/brown/bordercorner2{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals7{dir = 10},/obj/item/weapon/storage/bag/ore,/obj/structure/closet/secure_closet/miner,/turf/simulated/floor/tiled,/area/outpost/mining_main/break_room)
"bN" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/manifold/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 9},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room)
"bO" = (/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/steel_grid,/area/outpost/mining_main/break_room)
"bP" = (/obj/machinery/atmospherics/unary/vent_scrubber/on{dir = 1},/obj/effect/floor_decal/techfloor{dir = 4},/turf/simulated/floor/tiled/techfloor,/area/outpost/engineering/atmospherics)
@@ -236,8 +236,8 @@ aaababababababababababaxawaDaCaoabababababababababababalalalabababababababacacac
aaababayayayayayayayayazazazaEaAaAaBabababababababababalalafabababababababacacacacababababacababababababababababababababababababababababababacacacacacababababababababababababababababababababababababababababababababababababababababababababaa
aaababayaFaHaGaLaJaVayaIaYaKbgaMaNaOabababababababababalalalabababababababababababababababacababababababababababababababababababababababababacababababababababababababababababababababababababababababababababababababababababababababababababaa
aaababayaPaQaRaSaTaUbmaWaWaXbvaZbaaOabababababababababafalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
-aaababaybbbcbdbebfbJaybhbibjbkblbMbnbnbnbnbnbnbnabababalalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
-aaabbobpbqbrbsbtbubPaybwbwbwbxblbybnbzbzbAbBbCbnbDalalalalalalalalalafalalbEafababababafabababababababababababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
+aaababaybbbcbdbebfbJaybhbibjbkblbybnbnbnbnbnbnbnabababalalalabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
+aaabbobpbqbrbsbtbubPaybwbwbwbxblbMbnbzbzbAbBbCbnbDalalalalalalalalalafalalbEafababababafabababababababababababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaababaybFbGbHbIbIbWaybKbLbXbNbObObYbQbRbSbTbUbVbDalafalalalalalalafafalalababafabafababababafababababafabafafabafafabababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaababaybZcacacscrctaycbccbwcdcecfbnbzbzcgchcibncjalalalckclalalafalalababababababababababafabababafabababababababababafafababafabababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
aaababayayayayayayayaybwbwbwazazazbnbnbnbnbnbnbnababababalalabababalalababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababababaa
diff --git a/maps/tether/tether-06-colony.dmm b/maps/tether/tether-06-colony.dmm
index 7391e2a3d9..45192898b2 100644
--- a/maps/tether/tether-06-colony.dmm
+++ b/maps/tether/tether-06-colony.dmm
@@ -164,6 +164,7 @@
"dh" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome1"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
"di" = (/obj/effect/landmark{name = "tdome1"},/obj/machinery/camera/network/thunder{invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
"dj" = (/obj/structure/table/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
+"dk" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control)
"dl" = (/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
"dm" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/nanotrasen,/turf/unsimulated/floor/steel,/area/centcom/control)
"dn" = (/obj/structure/sign/department/armory,/turf/unsimulated/wall,/area/centcom/control)
@@ -178,6 +179,7 @@
"dw" = (/obj/structure/railing{dir = 1},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"dx" = (/obj/effect/floor_decal/corner_steel_grid{dir = 9},/turf/simulated/floor/outdoors/grass/sif/virgo3b,/area/centcom/evac)
"dy" = (/obj/machinery/recharger{pixel_y = 4},/obj/effect/landmark{name = "tdome2"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
+"dz" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Control"; pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control)
"dA" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor/steel,/area/centcom/control)
"dB" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
"dC" = (/obj/machinery/computer/secure_data{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control)
@@ -203,6 +205,7 @@
"dW" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 8},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"dX" = (/obj/effect/landmark{name = "tdome2"},/obj/machinery/camera/network/thunder{invisibility = 101},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
"dY" = (/obj/machinery/flasher{id = "flash"; name = "Thunderdome Flash"},/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
+"dZ" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper Main Hallway"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
"ea" = (/obj/machinery/computer/security{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control)
"eb" = (/obj/machinery/computer/crew{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
"ec" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control)
@@ -251,14 +254,15 @@
"eT" = (/obj/effect/floor_decal/rust,/obj/effect/floor_decal/industrial/warning/dust{dir = 4},/obj/structure/railing{dir = 8},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"eU" = (/obj/effect/floor_decal/corner_steel_grid/diagonal,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod2/centcom)
"eV" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
+"eW" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"eX" = (/obj/structure/table/reinforced,/turf/unsimulated/floor/steel,/area/centcom/control)
"eY" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
-"eZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556/ap,/obj/item/ammo_magazine/a556/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"eZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556/ap,/obj/item/ammo_magazine/m556/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fa" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fb" = (/obj/machinery/door/blast/regular{id = "HEAVY"; name = "HEAVY ORDINANCE"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fc" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"fd" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/item/ammo_magazine/mc9mml/ap,/obj/machinery/button/remote/blast_door{id = "ArmouryC4"; name = "Armoury Access"; pixel_x = 0; pixel_y = 28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"fe" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"fd" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/item/ammo_magazine/m9mml/ap,/obj/machinery/button/remote/blast_door{id = "ArmouryC4"; name = "Armoury Access"; pixel_x = 0; pixel_y = 28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"fe" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"ff" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/obj/item/ammo_magazine/battlerifle,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fg" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/obj/item/weapon/storage/box/shotgunammo/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fh" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/item/weapon/storage/box/beanbags/large,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
@@ -278,6 +282,7 @@
"fv" = (/obj/effect/floor_decal/industrial/warning/dust{dir = 9},/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"fw" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 1},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"fx" = (/obj/machinery/door/blast/regular{id = "thunderdomehea"; name = "Heavy Supply"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
+"fy" = (/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"fz" = (/obj/machinery/computer/ordercomp{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
"fA" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/obj/item/weapon/storage/backpack/dufflebag/syndie/ammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fB" = (/obj/effect/floor_decal/corner_steel_grid/diagonal,/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 4},/obj/structure/railing{dir = 8},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
@@ -296,13 +301,14 @@
"fO" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"fP" = (/obj/effect/floor_decal/rust,/obj/effect/floor_decal/corner_steel_grid/diagonal,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
"fQ" = (/obj/structure/table/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/tdome/tdome1)
+"fR" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/toxin,/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"fS" = (/obj/machinery/computer/robotics{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/control)
-"fT" = (/obj/machinery/button/remote/blast_door{id = "crescent_checkpoint_access"; name = "Crescent Checkpoint Access"; pixel_x = -6; pixel_y = -24; req_access = list(101)},/obj/machinery/turretid{pixel_x = 28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control)
+"fT" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"fU" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fV" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/heavysniper,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"fW" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"fX" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"fY" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"fW" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"fX" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"fY" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"fZ" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/obj/item/weapon/storage/box/shotgunshells/large,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"ga" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/energy/netgun,/obj/item/weapon/gun/energy/netgun,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"gb" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/frags,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
@@ -326,7 +332,7 @@
"gt" = (/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod1/centcom)
"gu" = (/obj/effect/floor_decal/rust,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/shuttle/large_escape_pod1/centcom)
"gv" = (/obj/effect/floor_decal/industrial/warning/dust/corner{dir = 8},/obj/machinery/light/flamp/noshade,/turf/simulated/floor/tiled/steel_dirty/virgo3b,/area/centcom/evac)
-"gw" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/obj/item/ammo_magazine/s762/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"gw" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"gx" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"gy" = (/obj/machinery/button/remote/blast_door{id = "HEAVY"; name = "SHIT IS LIT"; pixel_x = 0; pixel_y = -28; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"gz" = (/obj/structure/table/rack,/obj/effect/floor_decal/industrial/outline/yellow,/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/obj/item/weapon/cell/device/weapon{pixel_x = -2; pixel_y = -2},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
@@ -358,7 +364,7 @@
"gZ" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"ha" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/item/weapon/gun/projectile/automatic/wt550/lethal,/obj/effect/floor_decal/industrial/outline/yellow,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"hb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"hc" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
+"hc" = (/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"hd" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/closet/secure_closet/nanotrasen_commander,/obj/item/clothing/suit/armor/swat,/obj/item/clothing/head/helmet/space/deathsquad{name = "swat helmet"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
"he" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/table/woodentable,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
"hf" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/table/woodentable,/obj/item/device/radio/off,/obj/item/device/megaphone,/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
@@ -423,7 +429,7 @@
"im" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/obj/effect/floor_decal/corner/green/bordercorner2{dir = 8},/obj/machinery/computer/centrifuge,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"in" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/bed/chair{dir = 4},/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/green/border{dir = 8},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"io" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/green/border{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
-"ip" = (/obj/machinery/turretid{pixel_x = -28; pixel_y = -28; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control)
+"ip" = (/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"iq" = (/obj/structure/bed/chair/office/dark,/obj/machinery/button/remote/blast_door{desc = "A remote control switch for port-side blast doors."; id = "CentComPort"; name = "Security Doors"; pixel_x = -12; pixel_y = -25; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/control)
"ir" = (/obj/machinery/camera/network/crescent{dir = 8},/obj/machinery/computer/secure_data{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/control)
"is" = (/obj/effect/floor_decal/industrial/outline/yellow,/obj/structure/table/rack{dir = 4},/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/device/suit_cooling_unit,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/obj/item/clothing/mask/breath,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
@@ -550,6 +556,7 @@
"kJ" = (/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/security)
"kK" = (/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
"kL" = (/obj/machinery/door/airlock/external{locked = 1; name = "Emergency Airlock"; req_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/evac)
+"kM" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"kN" = (/obj/structure/table/standard,/obj/item/weapon/surgical/hemostat,/obj/item/weapon/surgical/cautery,/obj/effect/floor_decal/borderfloorwhite{dir = 9},/obj/effect/floor_decal/corner/paleblue/border{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"kO" = (/obj/structure/table/standard,/obj/item/stack/medical/advanced/bruise_pack,/obj/item/weapon/surgical/retractor,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"kP" = (/obj/structure/table/standard,/obj/item/weapon/surgical/circular_saw{pixel_y = 8},/obj/item/weapon/surgical/scalpel,/obj/effect/floor_decal/borderfloorwhite{dir = 1},/obj/effect/floor_decal/corner/paleblue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
@@ -774,8 +781,8 @@
"pa" = (/obj/structure/flora/pottedplant{icon_state = "plant-21"},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"pb" = (/obj/structure/curtain/open/shower,/obj/structure/window/reinforced/tinted{dir = 4; icon_state = "twindow"},/obj/machinery/shower{pixel_y = 13},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
"pc" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor/steel,/area/centcom/security)
-"pd" = (/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom)
-"pe" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/plating,/area/shuttle/escape/centcom)
+"pd" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"pe" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"pf" = (/obj/structure/table/woodentable{dir = 5},/obj/structure/flora/pottedplant{pixel_y = 8},/turf/simulated/floor/tiled,/area/centcom/terminal)
"pg" = (/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/machinery/computer/crew{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"ph" = (/obj/structure/table/glass,/obj/item/weapon/paper_bin{pixel_x = -1; pixel_y = 3},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
@@ -792,10 +799,10 @@
"ps" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/security)
"pt" = (/obj/machinery/vending/snack,/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/security)
"pu" = (/obj/machinery/vending/coffee,/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/security)
-"pv" = (/turf/simulated/shuttle/wall/hard_corner,/area/shuttle/escape/centcom)
-"pw" = (/obj/structure/closet/hydrant{pixel_x = -30; pixel_y = 0},/obj/item/weapon/storage/firstaid/o2{layer = 2.8; pixel_x = 4; pixel_y = 6},/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/toxin,/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"px" = (/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"py" = (/obj/structure/bed/chair/shuttle,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"pv" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/sign/warning/lethal_turrets{pixel_y = 32},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"pw" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/security)
+"px" = (/obj/structure/bed/chair/shuttle{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"py" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_station"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"pz" = (/obj/structure/bed/chair{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/terminal)
"pA" = (/obj/structure/table/glass,/obj/effect/floor_decal/borderfloorwhite{dir = 8},/obj/effect/floor_decal/corner/paleblue/border{dir = 8},/obj/item/weapon/backup_implanter{pixel_y = -8},/obj/item/weapon/backup_implanter{pixel_y = 8},/obj/item/weapon/backup_implanter,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"pB" = (/obj/structure/table/glass,/obj/machinery/computer/med_data{icon_keyboard = "laptop_key"; icon_screen = "medlaptop"; icon_state = "laptop"; light_color = "#00b000"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
@@ -813,22 +820,22 @@
"pN" = (/obj/structure/window/reinforced{dir = 1},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/security)
"pO" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/vending/security,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/security)
"pP" = (/obj/effect/floor_decal/techfloor/orange{dir = 8},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/techfloor_grid,/area/centcom/terminal)
-"pQ" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"pR" = (/obj/structure/table/standard,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"pS" = (/obj/machinery/status_display{pixel_y = 30},/obj/structure/table/standard,/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"pQ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_offsite"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"pR" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"pS" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"pT" = (/obj/structure/table/glass,/obj/item/weapon/storage/box/cups,/obj/item/weapon/storage/box/cups,/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"pU" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/security)
"pV" = (/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor/steel,/area/centcom/security)
"pW" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/borderfloor{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloor/corner2{dir = 4; icon_state = "borderfloorcorner2"; pixel_y = 0; tag = "icon-borderfloorcorner2 (EAST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
"pX" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/security)
"pY" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/security)
-"pZ" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/obj/structure/sign/warning/lethal_turrets{pixel_y = 32},/turf/unsimulated/floor/steel,/area/centcom/security)
-"qa" = (/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/effect/floor_decal/borderfloor/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/security)
+"pZ" = (/obj/structure/table/standard,/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"qa" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"qb" = (/obj/machinery/computer/card{dir = 8},/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 4; icon_state = "borderfloorcorner2"; pixel_y = 0; tag = "icon-borderfloorcorner2 (EAST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
"qc" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloor{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
"qd" = (/obj/item/weapon/stool/padded,/turf/unsimulated/floor/steel,/area/centcom/security)
"qe" = (/obj/item/weapon/stool/padded,/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloor{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
-"qf" = (/obj/structure/bed/chair/shuttle{dir = 1},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"qf" = (/obj/structure/sign/nanotrasen,/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"qg" = (/obj/effect/floor_decal/borderfloorwhite{dir = 4},/obj/effect/floor_decal/corner/paleblue/border{dir = 4},/obj/structure/closet/crate/bin,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"qh" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
"qi" = (/obj/machinery/punching_clown,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/bathroom)
@@ -844,8 +851,8 @@
"qs" = (/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel,/area/centcom/security)
"qt" = (/obj/effect/floor_decal/steeldecal/steel_decals5,/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/borderfloor/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
"qu" = (/obj/structure/sign/securearea{desc = "A warning sign which reads 'HIGH VOLTAGE'"; icon_state = "shock"; name = "HIGH VOLTAGE"},/turf/unsimulated/wall,/area/centcom/terminal)
-"qv" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_station"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom)
-"qw" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "escape_shuttle_hatch_offsite"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/yellow,/area/shuttle/escape/centcom)
+"qv" = (/obj/structure/table/standard,/obj/item/clothing/head/beret/nanotrasen,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"qw" = (/obj/structure/table/standard,/obj/random/plushie,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"qx" = (/obj/structure/table/glass,/obj/item/roller,/obj/item/roller{pixel_y = 8},/obj/item/roller{pixel_y = 16},/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/corner/paleblue/border{dir = 10},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"qy" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
"qz" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/corner/paleblue/border,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/obj/effect/floor_decal/corner/paleblue/bordercorner2{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/medical)
@@ -869,8 +876,8 @@
"qR" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor{tag = "icon-leftsecure"; icon_state = "leftsecure"; dir = 2},/obj/effect/floor_decal/borderfloor{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/security)
"qS" = (/obj/effect/floor_decal/industrial/outline,/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor/steel,/area/centcom/security)
"qT" = (/obj/effect/floor_decal/industrial/outline,/obj/structure/closet/secure_closet/nanotrasen_security{desc = "This locker is filled silly stickers and some other serious NanoTrasen ones. It is lazily labeled 'The big cat'."},/turf/unsimulated/floor/steel,/area/centcom/security)
-"qU" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"qV" = (/obj/structure/bed/chair/shuttle,/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"qU" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "FrontlockBD"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
+"qV" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"qW" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"qX" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/main_hall)
"qY" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/department/medbay,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/medical)
@@ -881,8 +888,8 @@
"rd" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass,/turf/unsimulated/floor/steel,/area/centcom/command)
"re" = (/obj/structure/sign/nanotrasen,/turf/unsimulated/wall,/area/centcom/command)
"rf" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/glass{name = "Locker Room"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/bathroom)
-"rg" = (/obj/structure/table/standard,/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"rh" = (/obj/structure/table/standard,/obj/random/maintenance/clean,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"rg" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"rh" = (/turf/unsimulated/wall,/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"ri" = (/obj/structure/flora/pottedplant{icon_state = "plant-22"},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rj" = (/obj/machinery/newscaster{pixel_y = 32},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rk" = (/obj/structure/bed/chair,/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -910,7 +917,7 @@
"rG" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
"rH" = (/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,/obj/structure/reagent_dispensers/water_cooler/full,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
"rI" = (/turf/unsimulated/wall/planetary/virgo3b,/area/centcom/living)
-"rJ" = (/obj/structure/sign/nanotrasen,/turf/simulated/shuttle/wall,/area/shuttle/escape/centcom)
+"rJ" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"rK" = (/obj/effect/floor_decal/steeldecal/steel_decals5{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rL" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rM" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -922,16 +929,16 @@
"rS" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
"rT" = (/obj/machinery/door/airlock/multi_tile/glass{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rU" = (/obj/machinery/cryopod/robot/door/dorms{base_icon_state = "door_closed"; desc = "A small elevator"; dir = 2; icon = 'icons/obj/doors/Door2x1glass.dmi'; icon_state = "door_closed"; name = "Elevator"; on_enter_occupant_message = "The elevator door closes slowly, You can now head for residential, comercial and several other floors."; on_store_message = "has departed for one of the various colony floors"; on_store_name = "Colonial Oversight"; on_store_visible_message_2 = "to the colonial districts."; time_till_despawn = 5},/turf/unsimulated/floor/steel,/area/centcom/living)
-"rV" = (/obj/structure/table/standard,/obj/item/clothing/head/beret/nanotrasen,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"rW" = (/obj/structure/table/standard,/obj/random/plushie,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"rV" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"rW" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "FrontlockC"; name = "Colony Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/button/remote/blast_door{id = "FrontlockBD"; name = "Colony Entrance Bottom"; pixel_x = -3; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"rX" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/effect/floor_decal/industrial/warning{icon_state = "warning"; dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rY" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"rZ" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "CentComPort"; name = "Security Doors"; opacity = 0},/obj/effect/floor_decal/industrial/warning{dir = 6},/obj/effect/floor_decal/industrial/warning{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"sa" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
"sb" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
"sc" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/structure/flora/pottedplant{icon_state = "plant-24"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/living)
-"sd" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = -28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"se" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/structure/closet/walllocker/emerglocker{pixel_x = 28},/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
+"sd" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"se" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/door/window/brigdoor/northright{req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"sf" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"sg" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"sh" = (/obj/machinery/door/firedoor,/obj/machinery/door/airlock/multi_tile/glass,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -941,9 +948,9 @@
"sl" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/restaurant)
"sm" = (/obj/machinery/door/airlock{name = "Unisex Restrooms"},/turf/unsimulated/floor/steel,/area/centcom/bathroom)
"sn" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "turrets"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/security)
-"so" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"sp" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "FrontlockC"; name = "Colony Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"sq" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/door/window/brigdoor/northright{req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "FrontlockC2"; name = "Security Door"; opacity = 0},/obj/machinery/computer/skills,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"so" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"sp" = (/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"sq" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/obj/machinery/button/remote/blast_door{id = "FrontlockC2"; name = "Checkpoint Shielding"; pixel_x = -35; pixel_y = -8; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"sr" = (/obj/structure/bed/chair,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"ss" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"st" = (/obj/structure/flora/pottedplant,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -974,12 +981,12 @@
"sS" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"sT" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"sU" = (/obj/structure/closet{name = "Evidence Closet"},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"sV" = (/obj/structure/grille,/obj/structure/shuttle/window,/turf/simulated/shuttle/floor/white,/area/shuttle/escape/centcom)
-"sW" = (/obj/effect/floor_decal/industrial/outline/blue,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"sX" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"sY" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/obj/machinery/button/remote/blast_door{id = "FrontlockC2"; name = "Checkpoint Shielding"; pixel_x = -35; pixel_y = -8; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"sZ" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"ta" = (/obj/machinery/computer/security{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"sV" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"sW" = (/obj/machinery/computer/security{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"sX" = (/obj/structure/bed/chair/office/dark{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"sY" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"sZ" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"ta" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"tb" = (/obj/effect/floor_decal/spline/fancy/wood/corner,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"tc" = (/obj/effect/floor_decal/spline/fancy/wood,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"td" = (/obj/effect/floor_decal/spline/fancy/wood/corner{dir = 8},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -997,10 +1004,10 @@
"tp" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/machinery/button/remote/blast_door{name = "Turret Doors"; pixel_x = -23; req_access = list(63); req_one_access = list(1); id = "turrets"},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tq" = (/obj/machinery/door/airlock/glass_security{name = "Confiscated Items"; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tr" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"ts" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"tt" = (/obj/effect/floor_decal/industrial/outline/blue,/obj/machinery/light,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"tu" = (/obj/machinery/computer/secure_data{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"tv" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"ts" = (/obj/machinery/computer/secure_data{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"tt" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"tu" = (/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
+"tv" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/random/soap,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom{base_turf = /turf/unsimulated/floor/techfloor_grid})
"tw" = (/obj/effect/floor_decal/spline/fancy/wood{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"tx" = (/turf/unsimulated/floor/steel{icon = 'icons/turf/outdoors.dmi'; icon_state = "grass"},/area/centcom/main_hall)
"ty" = (/obj/structure/table/bench/wooden,/turf/unsimulated/floor/steel{icon = 'icons/turf/outdoors.dmi'; icon_state = "grass"},/area/centcom/main_hall)
@@ -1019,9 +1026,9 @@
"tL" = (/obj/machinery/door/window/brigdoor{req_access = list(63); req_one_access = list(1)},/obj/machinery/button/remote/airlock{id = "front"; name = "Front doors"; pixel_x = 5; pixel_y = 25; req_access = list(63); req_one_access = list(1)},/obj/machinery/button/remote/airlock{id = "innerS"; name = "Inner doors"; pixel_x = -5; pixel_y = 25; req_access = list(63); req_one_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tM" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tN" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"tO" = (/obj/random/junk,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"tP" = (/obj/structure/bed/chair/shuttle{dir = 1},/obj/random/soap,/turf/simulated/shuttle/floor/white{color = "#cccccc"},/area/shuttle/escape/centcom)
-"tQ" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"tO" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"tP" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"tQ" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; check_synth = 0; check_weapons = 0; control_area = "\improper CentCom Security Arrivals"; pixel_x = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"tR" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tS" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"tT" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
@@ -1064,9 +1071,9 @@
"uE" = (/obj/structure/bed/chair/comfy/brown{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant)
"uF" = (/obj/machinery/door/airlock/glass_security{id_tag = "innerS"; name = "Colonial Security Airlock"; req_access = list(63)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"uG" = (/obj/machinery/door/airlock/glass_security{name = "Warden's Office"; req_access = list(3)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"uH" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"uI" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"uJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"uH" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"uI" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"uJ" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"uK" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
"uL" = (/obj/structure/bed/chair/wood/wings{icon_state = "wooden_chair_wings"; dir = 1},/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/restaurant)
"uM" = (/obj/structure/table/woodentable,/obj/effect/floor_decal/carpet{dir = 8},/obj/item/weapon/material/ashtray/glass,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant)
@@ -1080,8 +1087,8 @@
"uU" = (/obj/machinery/door/airlock/glass_security{name = "Security Processing"; req_access = list(1)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"uV" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"uW" = (/obj/machinery/vending/security,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"uX" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"uY" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"uX" = (/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/structure/table/reinforced,/obj/machinery/microwave{pixel_y = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"uY" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"uZ" = (/obj/structure/table/standard,/obj/item/weapon/soap,/obj/effect/floor_decal/borderfloorwhite{dir = 10},/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 8},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom)
"va" = (/obj/effect/floor_decal/borderfloorwhite,/obj/effect/floor_decal/borderfloorwhite/corner2{dir = 9},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom)
"vb" = (/obj/machinery/door/airlock{name = "Unit 4"},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bathroom)
@@ -1090,9 +1097,9 @@
"ve" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"vf" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"vg" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/structure/sign/department/interrogation,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"vh" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/gun/energy/taser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"vi" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"vj" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"vh" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"vi" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"vj" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"vk" = (/obj/machinery/vending/cigarette,/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 8},/obj/effect/floor_decal/carpet{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant)
"vl" = (/obj/effect/floor_decal/carpet,/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant)
"vm" = (/obj/effect/floor_decal/carpet,/obj/effect/floor_decal/carpet{dir = 4},/obj/effect/floor_decal/carpet{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "carpet"},/area/centcom/restaurant)
@@ -1198,7 +1205,7 @@
"xi" = (/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_soft/full,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar)
"xj" = (/obj/structure/table/reinforced,/obj/machinery/chemical_dispenser/bar_alc/full,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar)
"xk" = (/obj/structure/table/reinforced,/obj/item/weapon/reagent_containers/food/drinks/flask/barflask,/obj/item/weapon/reagent_containers/glass/rag,/obj/item/weapon/reagent_containers/food/drinks/flask/vacuumflask,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/bar)
-"xl" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/main_hall)
+"xl" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
"xm" = (/obj/machinery/newscaster{pixel_x = -27},/turf/unsimulated/floor/steel,/area/centcom/security)
"xn" = (/obj/structure/flora/pottedplant{icon_state = "plant-10"},/turf/unsimulated/floor/steel,/area/centcom/security)
"xo" = (/obj/structure/bed/chair{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security)
@@ -1207,11 +1214,11 @@
"xr" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xs" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/pill_bottle/dice,/obj/item/weapon/deck/cards,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xt" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/door/airlock/glass{name = "Kitchen"; req_access = list(28)},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
-"xu" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/turf/unsimulated/floor/steel,/area/centcom/security)
-"xv" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xw" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xx" = (/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xy" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"xu" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/table/reinforced,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/melee/baton/loaded,/obj/item/weapon/gun/energy/taser,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"xv" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/structure/closet/secure_closet/nanotrasen_security,/obj/item/weapon/storage/box/handcuffs,/obj/item/weapon/gun/energy/gun,/obj/item/weapon/shield/riot,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Security Arrivals"})
+"xw" = (/obj/machinery/door/firedoor,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xx" = (/turf/unsimulated/wall,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xy" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
"xz" = (/obj/machinery/status_display{pixel_x = -31},/turf/unsimulated/floor/steel,/area/centcom/security)
"xA" = (/obj/machinery/door/airlock,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xB" = (/obj/structure/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
@@ -1221,20 +1228,20 @@
"xF" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/machinery/reagentgrinder,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
"xG" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/vending/dinnerware,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
"xH" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
-"xI" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/door/window/brigdoor{dir = 8; icon_state = "leftsecure"; req_access = list(63); req_one_access = list(1); tag = "icon-leftsecure (WEST)"},/obj/machinery/button/remote/blast_door{id = "residential"; name = "Security Doors"; req_access = list(63); req_one_access = list(1); pixel_x = 6; pixel_y = -5},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xJ" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xK" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"xI" = (/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xJ" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xK" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/security{name = "\improper CentCom Residential Security"})
"xL" = (/obj/machinery/computer/arcade/orion_trail,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/orange/border{dir = 10},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xM" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xN" = (/obj/machinery/camera/network/crescent{dir = 10},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xO" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/orange/border,/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/orange/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xP" = (/obj/machinery/computer/arcade/battle,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/orange/border{dir = 6},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/orange/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
"xQ" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/structure/table/marble,/obj/item/weapon/book/manual/chef_recipes,/obj/item/weapon/reagent_containers/food/condiment/small/saltshaker{pixel_x = -3; pixel_y = 0},/obj/item/weapon/reagent_containers/food/condiment/small/peppermill{pixel_x = 3},/obj/item/weapon/material/kitchen/rollingpin,/obj/item/weapon/material/knife/butch,/turf/simulated/floor/tiled/white,/area/centcom/bar)
-"xR" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xS" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack/corner{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xT" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xU" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"xV" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"xR" = (/obj/machinery/computer/secure_data,/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xS" = (/obj/machinery/computer/card,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xT" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xU" = (/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"xV" = (/obj/machinery/recharger/wallcharger{pixel_x = 4; pixel_y = 26},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"xW" = (/obj/machinery/porta_turret/crescent,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor/steel,/area/centcom/living)
"xX" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/living)
"xY" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals9,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 5},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 6},/turf/unsimulated/floor/steel,/area/centcom/living)
@@ -1247,13 +1254,13 @@
"yf" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/oven,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
"yg" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/grill,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
"yh" = (/obj/effect/floor_decal/corner/grey/diagonal{dir = 4},/obj/machinery/cooker/fryer,/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
-"yi" = (/obj/machinery/computer/security{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"yj" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"yk" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"yl" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"ym" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"yn" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"yo" = (/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"yi" = (/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Residential Security"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"yj" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"yk" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 1},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"yl" = (/obj/machinery/camera/network/crescent{dir = 4},/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"ym" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"yn" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/machinery/door/window/brigdoor{dir = 8; icon_state = "leftsecure"; req_access = list(63); req_one_access = list(1); tag = "icon-leftsecure (WEST)"},/obj/machinery/button/remote/blast_door{id = "residential"; name = "Security Doors"; req_access = list(63); req_one_access = list(1); pixel_x = 6; pixel_y = -5},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"yo" = (/obj/structure/bed/chair/office/dark{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"yp" = (/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},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals10,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 8},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/living)
"yq" = (/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/effect/floor_decal/industrial/warning{dir = 8},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living)
"yr" = (/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living)
@@ -1264,7 +1271,7 @@
"yw" = (/obj/structure/curtain/open/shower,/obj/machinery/shower{pixel_y = 13},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/security)
"yx" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/security)
"yy" = (/obj/machinery/door/airlock/freezer{name = "Kitchen cold room"; req_access = list(28)},/turf/unsimulated/floor/steel{icon_state = "white"},/area/centcom/bar)
-"yz" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/obj/machinery/door/firedoor,/turf/unsimulated/floor/steel,/area/centcom/main_hall)
+"yz" = (/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 6},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"yA" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/living)
"yB" = (/obj/effect/floor_decal/industrial/outline,/turf/unsimulated/floor/steel,/area/centcom/living)
"yC" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living)
@@ -1287,16 +1294,16 @@
"yT" = (/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 4},/obj/effect/floor_decal/steeldecal/steel_decals9{dir = 1},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/unsimulated/floor/steel,/area/centcom/living)
"yU" = (/obj/effect/floor_decal/industrial/warning{dir = 10},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8; health = 1e+006},/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Doors"; opacity = 0},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living)
"yV" = (/obj/effect/floor_decal/industrial/warning,/obj/structure/window/reinforced,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/living)
-"yW" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"yW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"yX" = (/obj/effect/wingrille_spawn/reinforced/crescent,/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/turf/unsimulated/floor/steel,/area/centcom/command)
"yY" = (/obj/machinery/telecomms/receiver/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"yZ" = (/obj/machinery/telecomms/bus/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"za" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"zb" = (/obj/machinery/telecomms/processor/preset_cent,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"zc" = (/obj/machinery/telecomms/server/presets/centcomm,/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
-"zd" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"ze" = (/obj/machinery/computer/secure_data{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"zf" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/turf/unsimulated/floor/steel,/area/centcom/command)
+"zd" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"ze" = (/obj/structure/bed/chair/office/dark,/obj/effect/floor_decal/borderfloorblack/corner{dir = 8},/obj/effect/floor_decal/corner/blue/bordercorner{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"zf" = (/obj/machinery/computer/security/telescreen/entertainment{icon_state = "frame"; pixel_x = 32},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"zg" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/computer/card,/turf/unsimulated/floor/steel,/area/centcom/command)
"zh" = (/obj/structure/table/reinforced,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Full Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/command)
"zi" = (/obj/machinery/computer/security,/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/command)
@@ -1306,14 +1313,14 @@
"zm" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor/steel,/area/centcom/command)
"zn" = (/obj/effect/floor_decal/borderfloor{dir = 1; icon_state = "borderfloor"; pixel_y = 0; tag = "icon-borderfloor (NORTH)"},/obj/effect/floor_decal/corner/blue/border{dir = 1},/obj/structure/closet/crate/bin,/turf/unsimulated/floor/steel,/area/centcom/command)
"zo" = (/obj/structure/filingcabinet/filingcabinet,/obj/effect/floor_decal/borderfloor{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/effect/floor_decal/borderfloor/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor/steel,/area/centcom/command)
-"zp" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
-"zq" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"zp" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"zq" = (/obj/structure/reagent_dispensers/peppertank{pixel_x = 30},/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"zr" = (/obj/effect/floor_decal/borderfloor{dir = 8; icon_state = "borderfloor"; pixel_x = 0; tag = "icon-borderfloor (WEST)"},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloor/corner2{dir = 10; icon_state = "borderfloorcorner2"; pixel_x = 0; tag = "icon-borderfloorcorner2 (SOUTHWEST)"},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor/steel,/area/centcom/command)
"zs" = (/obj/structure/bed/chair/office/dark{dir = 1},/turf/unsimulated/floor/steel,/area/centcom/command)
"zt" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/turf/unsimulated/floor/steel,/area/centcom/command)
"zu" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/command)
"zv" = (/obj/structure/toilet,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom)
-"zw" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security)
+"zw" = (/obj/structure/table/reinforced,/obj/item/weapon/book/manual/security_space_law,/obj/item/device/taperecorder,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
"zx" = (/obj/machinery/door/airlock/security{name = "Security"},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/command)
"zy" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloor/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor/steel,/area/centcom/command)
"zz" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor/steel,/area/centcom/command)
@@ -1339,6 +1346,25 @@
"zT" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom)
"zU" = (/obj/structure/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 0},/obj/structure/mirror{pixel_x = 29},/turf/unsimulated/floor{icon_state = "freezer"},/area/centcom/bathroom)
"zV" = (/turf/unsimulated/wall/planetary/virgo3b,/area/centcom/bathroom)
+"zW" = (/obj/machinery/computer/security{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"zX" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"zY" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/item/weapon/storage/box/donkpockets,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"zZ" = (/obj/effect/floor_decal/borderfloorblack{dir = 10},/obj/effect/floor_decal/corner/blue/border{dir = 10},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Aa" = (/obj/effect/floor_decal/borderfloorblack{dir = 6},/obj/effect/floor_decal/corner/blue/border{dir = 6},/obj/structure/closet/secure_closet/nanotrasen_security,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ab" = (/obj/structure/table/reinforced,/obj/machinery/microwave,/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ac" = (/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "residential"; name = "Security Door"; opacity = 0},/obj/machinery/door/firedoor,/turf/unsimulated/floor/steel,/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ad" = (/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ae" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Af" = (/obj/structure/table/reinforced,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/machinery/button/remote/blast_door{id = "TelelockdownC"; name = "Teleporter Entrance Lockdown"; pixel_x = 6; pixel_y = -5; req_access = list(63); req_one_access = list(1)},/obj/machinery/door/blast/regular{density = 0; dir = 4; icon_state = "pdoor0"; id = "TelelockdownC"; name = "Security Door"; opacity = 0},/obj/machinery/door/window/brigdoor/northleft{req_access = list(63); req_one_access = list(1)},/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ag" = (/obj/machinery/computer/card{dir = 4},/obj/effect/floor_decal/borderfloorblack{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/item/device/radio/intercom{broadcasting = 0; dir = 1; frequency = 1475; icon_state = "intercom"; listening = 1; name = "Station Intercom (Security)"; pixel_x = 0; pixel_y = 27},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ah" = (/obj/machinery/computer/secure_data{dir = 8},/obj/effect/floor_decal/borderfloorblack{dir = 5},/obj/effect/floor_decal/corner/blue/border{dir = 5},/obj/machinery/camera/network/crescent,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Ai" = (/obj/structure/bed/chair/office/dark{dir = 1},/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/corner/blue/border{dir = 1},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Aj" = (/obj/effect/floor_decal/borderfloor{dir = 9},/obj/effect/floor_decal/corner/blue/border{dir = 9},/obj/machinery/turretid/stun{check_access = 0; check_anomalies = 0; check_records = 0; control_area = "\improper CentCom Living Quarters"; pixel_y = 32; req_access = list(101); req_one_access = list(101)},/turf/unsimulated/floor/steel,/area/centcom/living)
+"Ak" = (/obj/structure/table/reinforced,/obj/item/device/camera,/obj/item/weapon/storage/box/ids,/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/effect/floor_decal/corner/blue/border{dir = 8},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 10},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 10},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Al" = (/obj/structure/table/reinforced,/obj/machinery/computer/skills,/obj/effect/floor_decal/borderfloorblack{dir = 4},/obj/effect/floor_decal/corner/blue/border{dir = 4},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 5},/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 5},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"Am" = (/obj/effect/floor_decal/borderfloorblack,/obj/effect/floor_decal/corner/blue/border,/obj/effect/floor_decal/borderfloorblack/corner2{dir = 9},/obj/effect/floor_decal/borderfloorblack/corner2,/obj/effect/floor_decal/corner/blue/bordercorner2{dir = 9},/obj/effect/floor_decal/corner/blue/bordercorner2,/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/security{name = "\improper CentCom Residential Security"})
+"An" = (/obj/effect/floor_decal/borderfloor,/obj/effect/floor_decal/corner/blue/border,/obj/machinery/vending/nifsoft_shop,/turf/unsimulated/floor/steel,/area/centcom/security)
+"Ao" = (/obj/machinery/vending/nifsoft_shop,/turf/unsimulated/floor/steel{icon = 'icons/turf/floors_vr.dmi'; icon_state = "wood"},/area/centcom/restaurant)
(1,1,1) = {"
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
@@ -1395,19 +1421,19 @@ aaababababababababababdrdSdTdTdTdTdTdTdTdTdUdTdTdTepdxababababababacacacacaZddde
aaababababababababababdrdSdTdTdUdUdTdTdTdTdTdTdTdTeJdxabababababeKacacacacaZdddedfdydfdydfdgcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOdgcIdhcIdhcIdecPadahahahaebdbdbdeLbdbdbdbdeMeNeObdbdcrbdbdbdePejejejeQeQejejejejejejejejejejejejejejeRejejejejejejejeS
aaababababababababababdreTdTdTdTdTdTdTdTdTeUdTdUdUepdxababababababacacacacaZeVdedfdfdfdfdfdgcOcOcOcOcOcOcOcOcOcOcOcOcOcOcOdgcIcIcIcIcIdeeVadahahahcrbdbdbdcrcxbdbdbdeXeXeYbdbdcrbdbdbdejeZfafbfcfcfdfefffgfcfhfifjfkfcflfmfnfofcfpfqfrfsftfufueS
aaababababababababababdrdSdTdTdTdTdTdTdTdTdTdTdTfvfwdxababababababacacacacaZaZaZfxfxfxfxfxaZcNcOcOcOcOcOcOcOcOcOcOcOcOcOcNaZfxfxfxfxfxaZaZadahahahcrdlbdbdcrfzdEbdbdbdbdbdbdbdcrbdbdbdejfAfcfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceS
-aaababababababababababdrfBfCfDfEfFfGfHfIfJfKfLfCfMfNfNfNfNfOfPababacacacacacacaZfQfQfQfQfQaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZdjdjdjdjdjaZacadahahahaebdbdbdaefSdEbdfTbdbdbdbdcvcrbdbdbdejfUfVfbfcfWfXfcfcfYfZgafcfcgbgcgdfcfcgegegefcfcgfgfgfgfeS
+aaababababababababababdrfBfCfDfEfFfGfHfIfJfKfLfCfMfNfNfNfNfOfPababacacacacacacaZfQfQfQfQfQaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZaZdjdjdjdjdjaZacadahahahaebdbdbdaefSdEbddkbddzbdbdcvcrbdbdbdejfUfVfbfcfWfXfcfcfYfZgafcfcgbgcgdfcfcgegegefcfcgfgfgfgfeS
aaababababababababababdrggghgigjgkglgmgngogpgqgqdWfNfNfNfNfNfNababacacacacacacaZaZaZaZaZaZaZacacacacacacacacacacacacacacacaZaZaZaZaZaZaZacadahahahcrbdbdbdaeaeaeaeaeaeaecreLcraebdbdbdejfAfcfbfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfcfceS
aaababababababababababdrdSgrgsgtgtgtgtgugtgtgtgtdVgvdxababfNfNababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacadahahahcrbdbdbdbdbdbdbdcwbdbdbdbdbdbdbdbdbdejgwgxfbgyfcfcfcfcfcgzgAgBgBgBgBgBgCgCgAgzgDfcfcfcgEgEgEeS
aaababababababababababdrdSgtgtgFgtgugtgtgtgtgugtgtepdxababfNfNababacacacacacacacacacgGgGgGgGgGgGgGgGgGgGgGgGgGgGgGgGacacacacacacacacacacacadahahahaebdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdejejejejejejejfcfcejejejejejejejejejejejejejgHgHePejejejeS
-aaababababababababababdrdSgtgugtgtgtgtgtgIgtgtgtgtgJdxababfOfNabeKacacacacacacacacacgGgKgLgMgNgNgOgGgPgQgRgSgTgUgVgGacacacacacacacacacacacadahahahaecvbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdcvejgWfcgXejgYgZfcfchahbejhchdhehfhghhhiejhjhjhkhlhmhnhohpeS
+aaababababababababababdrdSgtgugtgtgtgtgtgIgtgtgtgtgJdxababfOfNabeKacacacacacacacacacgGgKgLgMgNgNgOgGgPgQgRgSgTgUgVgGacacacacacacacacacacacadahahahaecvbdbdbdbdbdbdbdbdbdbdbdbdbdbdbdcvejgWfcgXejgYgZfcfchahbejdZhdhehfhghhhiejhjhjhkhlhmhnhohpeS
aaababababababababababdrdSgtgugtgtgtgtgtgtgtgtgtgtepdxabfNfNfNfNabacacacacacacacacacgGhqhrhrhrhrhshthuhrhrhvhwhrhxgGacacacacacacacacacacacadbHahahaecrhyeLhycraecreLcraehzeLhAaeaeeLaeejgWfchBhChDfcfcfcfchEejhFhGhGhGhGhGhHejhIhIhlhlhlhlhJhKeS
aaababababababababababdrdSgtgtgtgIgtgtgtgugtgtgIfvfMdxabfNfNhLfNabacacacacacacacacacgGhqhrhrhrhrhrhMhrhrhrhNhOhrhPgGacacacacacacacacacacacadahahahaehQhRbdhShTaebdbdbdaebdbdcweLbdbdhUejhVfcfchWfcfcfcfcfcfchXhGhGhYhZiahGhGibhlhlhlhlhlhlicideS
-aaababababababababababdrieififififigififihifififiiijdxabfOfNfNfNabacacacacacacacacacgGhqhrikhrhrilhtimhrhrhNinhriogGacacacacacacacacacacacadahahahaedlbdbdbdbdaedlbdbdaecvbdcvcripiqirejhVfcishCitfcfcfcfciuePivhGiwixiyhGizejiAiAhlhlhlhlhlhleS
+aaababababababababababdrieififififigififihifififiiijdxabfOfNfNfNabacacacacacacacacacgGhqhrikhrhrilhtimhrhrhNinhriogGacacacacacacacacacacacadahahahaedlbdbdbdbdaedlbdbdaecvbdcvcrdziqirejhVfcishCitfcfcfcfciuePivhGiwixiyhGizejiAiAhlhlhlhlhlhleS
aaababababababababababiBiCiCiCiCiCiCiCiCiCiCiCiCiCiCiDabfNfNfNfNabacacacacacacacacacgGiEiFiGiHiHiIhtiJhwhrhxiKiLiMgGacacacacacacacacacacacadahahahaeiNiOiPiQiRaeiSiTiUaeiViWcraeiXiYaeejhVfciZejjafcfcfcfcjbejjchGjdjejfhGjgejjhjhhlhlhlhljijieS
aaabababababababababababababababababababababababababababfNfNfNfOababababacacacacacacgGgGgGgGgGgGgGgGgGgGjjgGgGgGgGgGgGgGgGgGgGgGgGgGgGadadadjkjkjkaeaeaeaeaeaeaeaeaeaeefcvbdcvefcrcraeejejejejejjlfcfcfcfcjmejjnjojphGjqjojrejjhjhhlhlhlhlhljseS
-aaabababababababababababababababababababababababababababfNfNfNfNababababababacacacacacacacacacacacacgGjthrjugGjvjwjxjygGjzjAjBjAjAjCgGahahahahahahjDahahahahahahahahahahahahahahahahahjDahahagejjEfcfcfcfcjFejjGjGjHjIjHjGjGejjJjJjKjKjLjJjJjJeS
+aaabababababababababababababababababababababababababababfNfNfNfNababababababacacacacacacacacacacacacgGjthrjugGjvjwjxjygGjzjAjBjAjAjCgGagahahahahahjDahahahahahahahahahahahahahahahahahjDahahagejjEfcfcfcfcjFejjGjGjHjIjHjGjGejjJjJjKjKjLjJjJjJeS
aaababababababababababababababababababababababababababjMjMjNjNjMjMjMjMababababacacacacacacacacacacacgGjOhrjPgGjQjRjSjTjUjVjWjXjWjWjYgGahahahahahahjDahahahahahahahahahahahahahahahahahjDahahahejjEfcfcfcfcjZkakbkckdhlkckekekekekdhlhlkckekekfeS
-aaababababababababababababababababababababababababababjMkgkhkhkikjkkjMabababababacacacacacacacacacacgGklhrkmgGknkohrkpgGkqkrksktkukvgGahahahahkwahjDahahahahahahahahahahahahahahahahahjDahahahejkxfcfcfcfckykzkAkBkChlkBkDkDkDkDkDkEkFkDkDkDkGeS
+aaababababababababababababababababababababababababababjMkgkhkhkikjkkjMabababababacacacacacacacacacacgGklhrkmgGknkohrkpgGkqkrksktkukvgGagahahahkwahjDahahahahahahahahahahahahahahahahahjDahahahejkxfcfcfcfckykzkAkBkChlkBkDkDkDkDkDkEkFkDkDkDkGeS
aaababababababababababababababababababababababababababjMkikhkhkikjkkjMabababababacacgGgGgGgGgGgGgGgGgGgGjjgGgGgGgGhrgGkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHjDjDjDejejejejejejejejejejePhlkIejejejejejkJkKejejejejeS
aaababababababababababababababababababababababababababjMjMkLkLjMjMjMjMabababababacacgGkNkOkPkQkRgGkSkTkUhrkVkWkXkYhrkZkHlalblcldlelflglhliljlelklllblmkHlnlololplolqlrlslrlqlolplololtkHahahahejlulvlwlvlxlwlvlyejlzhllAejlBlClDlElFlGlHlIlJlKeS
aaababababababababababababababababababababababababababjMkikhkhkikilLjMabababababacacgGlMhrhrhrlNgGlOlPhrhrlQlRlQlQhrlNkHlSlTlUlUlVlUlWlWlWlUlVlUlUlXlYkHlolZmamamamambmbmbmamamamamclokHbHahahejmdmdlwmdmdlwmdmdejkJhlkKejkJhlhlhlhlhlhlhlhlkKeS
@@ -1417,47 +1443,47 @@ aaababababababababababababababababababababababababababjMkikhkhkikjkkjMababababab
aaababababababababababababababababababababababababababjMlLkhkhkikjkkjMababababababacgGgGgGgGgGgGgGnHnInJnKnLhrhrnMnNnOkHnPnQnRlUlUnSnTlUnSnTlUlUnUnVnWkHltlololololonXnYnZlololololooakHahahahejobocodoeofogmdmdejkJhlhlhlhlnEohnFohnFnFoinGkKeS
aaabababababababababababababababojokokokokokokokokokokolomononomomomomababababababacacacacacacacgGgGgGgGhthtoohrgGgGgGkHkHkHkHopoqkHkHorkHkHosoqkHkHkHotototototototototototototototototahahahouejejejejejovjKjKejkJhlkFkDkEhlowowowowowowhlkKeS
aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababacacacacacacgGoFoGoHoGoIhrhroJoGoKkHoLoMoNlUlUoOoPlUoQoRlUlUoSoToLotoUoVoWoXotoYoZpaoZoYotpbpbpbpbotahahahpclGkekelHkekdhlhlkclFhlkKejkJhlhlhlhlhlhlhlhlkKeS
-aaabababababababababababababababomoxoypdpepepepepdoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprkDkDkDkEkFkDpsptpueS
-aaabababababababababababababababomoxpdpvpwpxpxpypvpdoAoBoCoCoCpzoEabababababababababacacacacacacgGpAmkpBpCmkhrhrhrhrpDkHpjlUlUlUlUpEpFpFpFpGlUlUlUlUpHotoUpnoWpnpIpopopopopopJpopopopKotahahahouejejpcejejejejpLejejpcejejpMpNpNpNlFlGpNpNpNpOeS
-aaabababababababababababababababompPpepQpRpxpxpRpSpeoAoBoCoCoCpzoEabababababababababacacacacacacgGmKhrhrhrhrhrhrhrhrpTkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnpnpIpopopopopopJpopopopKotbHahahjJpUpVhlpWpXjJpYhlpZqahlqbejqcqdqdqdhlhlqdqdqdqeeS
-aaabababababababababababababababomoxpeqfqfpxpxqfqfpeoAoBoCoCoCpzoEabababababababababababacacacacgGmKhrhrhrhrhrhrhrhrqgkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnqhotpoqipoqipootqjqjqjqjotahahahjJqknGhlhlqlqmqnhlhlqoqpqqejqrqsqsqsqsqsqsqsqsqteS
-aaabababababababababababababababquoxqvpxpxpxpxpxpxqwoAoBoCoCoCoDoEabababababababababababacacacacgGqxqyqyqyqzhrhrnMnpqAkHqBqClUlUlUlUlUlUlUlUlUlUlUqDqEotqFpnpnqGotqHpoqIpoqJotqKqKqKqKotahahahjJqLqMqNqOqPjJqnhlhlqQqRjJejqSqSqSqSqSqSqTqSqSqSeS
-aaabababababababababababababababomoxpdqUpypxpxpyqVpdoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXadadadadgGgGgGgGhtqYqZrarbgGgGkHrcrcrcrdoqrcrercrercrdoqrcrcrcotototrfotototototototototototototjDjDjDejjJjJjJjJjJouqnhlhlqnqnqnouejejejejejejejejejejeS
-aaabababababababababababababababomoxpepRrgpxpxpRrhpeoAoBoCoCadriahahahahahahahahairjrkrlrmrlrnroahrprqahahahahahahrrahrsahahahahahahahaiahahahahahahahrortahahahahaiahruahahahahahahahjDahahahrvahahaiahahrwrxrxrxrxrxrxryrzrArBrzrCrDrErFrGrHrI
-aaabababababababababababababababomoxrJqfqfpxpxqfqfrJoAoBoCoCahrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrPrQrRrRrSrI
-aaabababababababababababababababomoxrJpypypxpxpypyrJoAoBoCoCrTrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrUrQrRrRrSrI
-aaabababababababababababababababomoxperVpRpxpxpRrWpeoAoBoCoCadriahahahahahahahahahrMrMrMrMrMrMahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrXrYrYrYrYrYrYrZrzrzrzrzrCrDsasbsbscrI
-aaabababababababababababababababomoxpdsdqfpxpxqfsepdoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXejsfsgsgsfejqXqXqXqXshjDqXqXshjDqXqXqXqXsisjsksjsisislslsisislslsijDjDjDotototsmototototslslslsijDjDjDejejejejejejousnsnsnsnsnsnouejejejejejejejejejejeS
-aaabababababababababababababababquoxqvpxpxpxpxpxpxqwoAoBoCoCoCoDoEabababababababababababejsospsqsoejsrsrsraiahahssstahahaisrsrsrsisisisisisusvswsxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS
-aaabababababababababababababababomoxsVqfpxpypypxsWsVoAoBoCoCoCpzoEabababababababababababejsXsYsZtaejahtbtctctctctctctctctctctdahsiszsytetfswswswswswswswsiahahahottgsDsDthototottitjtkslahahahejtltmtmtmtnejejovtotoovejejtpfcfcfcfctqfcfcfctreS
-aaabababababababababababababababompPsVtspxpypypxttsVoAoBoCoCoCpzoEabababababababababababejtufcfctvejahtwtxtxtxtytxtxtytxtxtxtzahsiswswtAtAswswswtAtAswswsiahahahottgsDsDsDtBsFottCtDtEslahahahejtFfcfcfcfctGtHtIfcfctJtKtLfcfcfcfctMejtNfcfctreS
-aaabababababababababababababababomoxpdpvtOqftPpxpvpdoAoBoCoCoCpzoEabababababababababababejtQtRtSfcejtTtwtxtUtVtVtVtVtVtVtUtxtztWslswtXtYtZuaswtXubucuaswslahahahotudsDsDthotototuetDtEsiahahahejufugfcuhuiujukulfcfculumunuoupfcuqurejusututuueS
-aaabababababababababababababababomoxoypdpepepepepdoyoAoBoCoCoCpfoEabababababababababababejejejejuvejtTtwtxuwtxtxtxtxtxtxuwtxtztWslswtXuxuyuaswtXuzuAuaswslahahahotuBsDsDsDuCsFotuDuEtEsiahahahejejejuvejejejejejuFuFejejejululuGululejejejejejeS
-aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababababejuHuIuJfcejuKtwtxuwtxtxtxtxuwtxuwtxtztWslswswuLuLswswswuLuLswswslahahahsmsDsDsDthotototuMuEtEsiahahahjJuNuOfcuPuQuRuRuOfcfcuSuQuTuRuOfcfcfcuUfcuVuWsUeS
-aaabababababababababababababababojokokokokokokokokokokolomomomomomababababababababababacejuXfcfcuYejtTtwtxuwtxuwtxtxtxtxuwtxtztWslswswswswswswswswswswswsibHahahotuZvasDsDvbvcotuMuEtEslahahahjJvdtSfcvetRtSfcvffcfcvetRtRtRtRtRtRuivgtNfcfctreS
-aaababababababababababababababababababababababababababababababababababababababababababacejvhvivjfcuvahtwtyuwtxtxtxtVtxtxuwtytzahsiswswtAtAswswswswswswswsiahahahotototsmototototvkvlvmslahahahejejovuvovejejuvejvnvnejulululululululejvofcvptreS
-aaababababababababababababababababababababababababababababababababababababababababababacejejejejejejahtwtyuwtxtxtxtxtxtxuwtytzahsivqtXvrvsuaswswswswswswvtahahahsiszvuswvvvwvxtfswswswslahahahouvyvzhlvAvBvCfcejfcfculvDvEvFvGvHvIvJejvKvLvMvNeS
+aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababacacacacacacgGpglPhrlPphhrhrhrhrpikHpjlUlUlUlUpklTnwlXpllUlUlUlUpmotoUpnoWoXotpopopopopootppppppppotahahahpckFkChlkBkDkDkChlkBkChlpqejprAnkDkDkEkFkDpsptpueS
+aaabababababababababababababababomoxfyfTfRhchcipfTfyoAoBoCoCoCpzoEabababababababababacacacacacacgGpAmkpBpCmkhrhrhrhrpDkHpjlUlUlUlUpEpFpFpFpGlUlUlUlUpHotoUpnoWpnpIpopopopopopJpopopopKotahahahouejejpcejejejejpLejejpcejejpMpNpNpNlFlGpNpNpNpOeS
+aaabababababababababababababababompPeWpdkMhchckMpeeWoAoBoCoCoCpzoEabababababababababacacacacacacgGmKhrhrhrhrhrhrhrhrpTkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnpnpIpopopopopopJpopopopKotbHahahjJpUpVhlpWpXjJsfhlpvpwhlqbejqcqdqdqdhlhlqdqdqdqeeS
+aaabababababababababababababababomoxeWpxpxhchcpxpxeWoAoBoCoCoCpzoEabababababababababababacacacacgGmKhrhrhrhrhrhrhrhrqgkHpjlUlUlUlUlUlUlUlUlUlUlUlUlUpmotoUpnpnqhotpoqipoqipootqjqjqjqjotahahahjJqknGhlhlqlqmqnhlhlqoqpqqejqrqsqsqsqsqsqsqsqsqteS
+aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababacacacacgGqxqyqyqyqzhrhrnMnpqAkHqBqClUlUlUlUlUlUlUlUlUlUlUqDqEotqFpnpnqGotqHpoqIpoqJotqKqKqKqKotahahahjJqLqMqNqOqPjJqnhlhlqQqRjJejqSqSqSqSqSqSqTqSqSqSeS
+aaabababababababababababababababomoxfypRiphchcippSfyoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXadadadadgGgGgGgGhtqYqZrarbgGgGkHrcrcrcrdoqrcrercrercrdoqrcrcrcotototrfotototototototototototototjDjDjDejjJjJjJjJjJouqnhlhlqnqnqnouejejejejejejejejejejeS
+aaabababababababababababababababomoxeWkMpZhchckMqaeWoAoBoCoCadriahahahahahahahahairjrkrlrmrlrnroahrprqahahahahahahrrahrsahahahahahahahaiahahahahahahahrortahahahahaiahruahahahahahahahjDahahahrvahahaiahahrwrxrxrxrxrxrxryrzrArBrzrCrDrErFrGrHrI
+aaabababababababababababababababomoxqfpxpxhchcpxpxqfoAoBoCoCahrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrPrQrRrRrSrI
+aaabababababababababababababababomoxqfipiphchcipipqfoAoBoCoCrTrKahahahahahahahahahahahahahahahahahrpahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrLahrMrMrMrMahrNrzrzrzrzrOrUrQrRrRrSrI
+aaabababababababababababababababomoxeWqvkMhchckMqweWoAoBoCoCadriahahahahahahahahahrMrMrMrMrMrMahahqUahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahahjDahahahjDahahahahahrXrYrYrYrYrYrYrZrzrzrzrzrCrDsasbsbscrI
+aaabababababababababababababababomoxfyqVpxhchcpxrgfyoAoBoCoCqWqXqXqXqXqXqXqXqXqXqXqXqXqXrhrVrJrJrVrhqXqXqXqXshjDqXqXshjDqXqXqXqXsisjsksjsisislslsisislslsijDjDjDotototsmototototslslslsijDjDjDejejejejejejousnsnsnsnsnsnouejejejejejejejejejejeS
+aaabababababababababababababababquoxpyhchchchchchcpQoAoBoCoCoCoDoEabababababababababababrhsdrWsesdrhsrsrsraiahahssstahahaisrsrsrsisisisisisusvAosxswsyszsisAahahotsBsCsDsDsEsFotsGsHsIslahahahejsJsKsKsKsLejhlpYhlhlpYhlejsMsNsOsPsQejsRsSsTsUeS
+aaabababababababababababababababomoxsopxhcipiphcspsooAoBoCoCoCpzoEabababababababababababrhsVsqsXsWrhahtbtctctctctctctctctctctdahsiszsytetfswswswswswswswsiahahahottgsDsDthototottitjtkslahahahejtltmtmtmtnejejovtotoovejejtpfcfcfcfctqfcfcfctreS
+aaabababababababababababababababompPsosYhcipiphcsZsooAoBoCoCoCpzoEabababababababababababrhtstatattrhahtwtxtxtxtytxtxtytxtxtxtzahsiswswtAtAswswswtAtAswswsiahahahottgsDsDsDtBsFottCtDtEslahahahejtFfcfcfcfctGtHtIfcfctJtKtLfcfcfcfctMejtNfcfctreS
+aaabababababababababababababababomoxfyfTtupxtvhcfTfyoAoBoCoCoCpzoEabababababababababababrhtPtOuHtQrhtTtwtxtUtVtVtVtVtVtVtUtxtztWslswtXtYtZuaswtXubucuaswslahahahotudsDsDthotototuetDtEsiahahahejufugfcuhuiujukulfcfculumunuoupfcuqurejusututuueS
+aaabababababababababababababababomoxoyfyeWeWeWeWfyoyoAoBoCoCoCpfoEabababababababababababrhrhrhrhuIrhtTtwtxuwtxtxtxtxtxtxuwtxtztWslswtXuxuyuaswtXuzuAuaswslahahahotuBsDsDsDuCsFotuDuEtEsiahahahejejejuvejejejejejuFuFejejejululuGululejejejejejeS
+aaabababababababababababababababomoxoyozoyoyoyoyozoyoAoBoCoCoCoDoEabababababababababababrhuXuJuYtarhuKtwtxuwtxtxtxtxuwtxuwtxtztWslswswuLuLswswswuLuLswswslahahahsmsDsDsDthotototuMuEtEsiahahahjJuNuOfcuPuQuRuRvhfcfcuSuQuTuRuOfcfcfcuUfcuVuWsUeS
+aaabababababababababababababababojokokokokokokokokokokolomomomomomababababababababababacrhvitatavjrhtTtwtxuwtxuwtxtxtxtxuwtxtztWslswswswswswswswswswswswsibHahahotuZvasDsDvbvcotuMuEtEslahahahjJvdtSfcvetRtSfcvffcfcvetRtRtRtRtRtRuivgtNfcfctreS
+aaababababababababababababababababababababababababababababababababababababababababababacrhxuxlxvtauIahtwtyuwtxtxtxtVtxtxuwtytzahsiswswtAtAswswswswswswswsiahahahotototsmototototvkvlvmslahahahejejovuvovejejuvejvnvnejulululululululejvofcvptreS
+aaababababababababababababababababababababababababababababababababababababababababababacrhrhrhrhrhrhahtwtyuwtxtxtxtxtxtxuwtytzahsivqtXvrvsuaswswswswswswvtahahahsiszvuswvvvwvxtfswswswslahahahouvyvzhlvAvBvCfcejfcfculvDvEvFvGvHvIvJejvKvLvMvNeS
aaababababababababababababababababababababababababababababababababababababababababababacacacacacacadtTtwtxuwtxvOtxtxtxtxuwtxtztWslswtXvPvQuaswswswswswswvRahahahvRswswswswswswswswswswsiahahahhlhlhlhlvSvTvUvVejfcfcvnfcfcfcfcfcfcvWejvXvYvZwaeS
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxuwtxtxtxvOtxtxuwtxtztWslswswuLuLswswswswswswswwbahahahwbswswswswswswswswswswwcahahahwdhlhlhlvSwevUwfejfcfcvnfcsgsgsgsgsgwgejejejejejeS
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxtUtVtVtVtVtVtVtUtxtztWslswswswswswswswswswswswslahahahslswtAtAswswtAtAswswswsiahahahouwhwihlwjwkwlfcejwmwmulwnfcfcfcfcfcwowpwqwrwrwseS
aaabababababababababababababababababababababababababababababababababababababababababacacacacacacacadtTtwtxtxtxtytxtxtytxtxtxtztWwtwuwuwuwuwuwuswswswswswslahahahslswwvwvswswwvwvswswswslahahahejejejwwejejejuvejejejejwxfcfcwywyfcfcwzfcfcfcwgeS
aaabababababababababababababababababababababababababababababababababababababababacacacacacacacacacadbHwAwBwBwBwBwBwBwBwBwBwBwCahwDwEwFwGwHwIwJswswswswswsiahahahsiswwvwvswswwvwvswswswslahahahejwKwLhlwMejwNfcwOwPfcejwQfcvLwRvMwSwTwpwUwVwVwWeS
aaabababababababababababababababababababababababababababababababababababababababacacacacacacacacacadwXahahahahsjsjsjsjahahahahwXwDwYwYwYwYwYwYswwZxaxbxcsiahahahsiszuLuLswswuLuLswsvwZslahahahejxdhlhlhlejulululululejxefcvLvMvMwSxfejejejejejeS
-aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacadadadadadadadadadadadadadadadwDxgxhxixjxkwYsisisisisisixlxlxlejejejejejejejejejejejejbHahahejxmhlhlhlejxnxoulwSxpejxqfcvLxrxswSwowpwqwrwrwseS
-aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDwDxtwDacacacadagahahahxupYwpxvxwxxuvfcuPxyfcuvahahahejxzhlhlhlwwhlhlulfcfcxAfcfcfcxBxBfcfcwzfcfcfcwgeS
-aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxCxDxExFxGxHwDacacacadbHrMrMrMxuqnxIxJfcxKejtNfcfcxKejahahahejejejejejejejejejejejejxLxMxNfcxOxMxPwpwUwVwVwWeS
-aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxQxHxHxHxHxHwDacacacadahrMrMrMxuqnxRxSfcxTejxUfcfcxVejahahahrDxWxXxYxZxYxXxWyaybybejejejejycejejejejejejejejeS
-aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacwDydxHyeyfygyhwDacacacadagahahahxupYwpyiyjykejylymynyoejahahahrDyprzrzrzrzrzypyqyryrejysytyuyuyvyvejywyuywyxyweS
-aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDyywDwDwDwDwDacacrDrDrDyzyzyzejejejejejejejejejejejejahahahyAyprzyByByBrzypyCyryDejejejyuyuyuyuyEyFyFyFyFyFeS
-aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyGyHyIwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejwPuvahahahyAyprzrzrzrzrzypyCyryrejysyNyuyOyuyPejyQyuyQyuyQeS
-aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyRyHySwDacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejrMahahyAyprzyByByBrzypyCyryDejejejejejejejejejejejejejeS
-aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejfcejrMahahrDyprzrzrzrzrzypyqyryrrDacacacacacacacacacacacacaa
-aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejrMrMagrDxWyTyTyTyTyTxWyUyVyVrDkHkHkHkHkHkHacacacacacacaa
-aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDyJyKyLrzyMyKyJrDacacacacacacejfcejulyWulkHkHyXyXyXyXyXyXyXyXkHkHyYyZzazbzckHacacacacacacaa
-aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacejfcejsXzdzekHzfzgzhzizjzkzlzmznzokHzazazazazakHacacacacacacaa
-aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacototototrDyJyKyLrzyMyKyJrDototototacacejfcejzpfczqkHzrlUzsztzslUlUlUlUlUzuzazazazazakHacacacacacacaa
-aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzvotzvrDrDrDyLrzyMrDrDrDzvotzvotacacejfcuvfczwfczxlUzyzzzzzzzzzAzBzBzCkHzDzEzFzGzHkHacacacacacacaa
-aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzIotzJrDyJyKzKzLzMyKyJrDzJotzIotacacejejejejejejkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHacacacacacacaa
+aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacadadadadadadadadadadadadadadadwDxgxhxixjxkwYsisisisisisixwxwxwxxxxxxxxxxxxxxxxxxxxxxxxbHahahejxmhlhlhlejxnxoulwSxpejxqfcvLxrxswSwowpwqwrwrwseS
+aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDwDxtwDacacacxxxyxIxIxIxJxyxKxSxRxUxTyixVykyjxTahahahejxzhlhlhlwwhlhlulfcfcxAfcfcfcxBxBfcfcwzfcfcfcwgeS
+aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxCxDxExFxGxHwDacacacxxylymymymxJymynyoyjyzxxyWyjyjyzxxahahahejejejejejejejejejejejejxLxMxNfcxOxMxPwpwUwVwVwWeS
+aaababababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacwDxQxHxHxHxHxHwDacacacxxxIymymymxJymzdzeyjzfxxzpyjyjzqxxahahahrDxWxXxYxZxYxXxWyaybybejejejejycejejejejejejejejeS
+aaabababababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacwDydxHyeyfygyhwDacacacxxxyxIxIxIxJxyxKzWzwzXxxzZzYAbAaxxahahahrDyprzrzrzrzrzypyqyryrejysytyuyuyvyvejywyuywyxyweS
+aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDyywDwDwDwDwDacacrDrDrDAcAcAcxxxxxxxxxxxxxxxxxxxxxxxxahahahyAyprzyByByBrzypyCyryDejejejyuyuyuyuyEyFyFyFyFyFeS
+aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyGyHyIwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxAdxTahahahyAyprzrzrzrzrzypyCyryrejysyNyuyOyuyPejyQyuyQyuyQeS
+aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDyRyHySwDacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxrMahahyAyprzyByByBrzypyCyryDejejejejejejejejejejejejejeS
+aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacwDwDwDwDwDacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxyjxxrMahahrDyprzrzrzrzrzypyqyryrrDacacacacacacacacacacacacaa
+aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxrMrMxWrDxWyTyTyTyTyTxWyUyVyVrDkHkHkHkHkHkHacacacacacacaa
+aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDyJyKyLrzyMyKyJrDacacacacacacxxyjxxAeAfAekHrDyXyXyXyXyXyXyXyXkHkHyYyZzazbzckHacacacacacacaa
+aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacrDrDrDyLrzyMrDrDrDacacacacacacxxyjxxAgAiAhkHAjzgzhzizjzkzlzmznzokHzazazazazakHacacacacacacaa
+aaabababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacototototrDyJyKyLrzyMyKyJrDototototacacxxyjxxAkyjAlkHzrlUzsztzslUlUlUlUlUzuzazazazazakHacacacacacacaa
+aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzvotzvrDrDrDyLrzyMrDrDrDzvotzvotacacxxyjxTyjAmyjzxlUzyzzzzzzzzzAzBzBzCkHzDzEzFzGzHkHacacacacacacaa
+aaababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzIotzJrDyJyKzKzLzMyKyJrDzJotzIotacacxxxxxxxxxxxxkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHkHacacacacacacaa
aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzNzOzNrDrDrDzPrDzQrDrDrDzNzRzNotacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa
aaabababababababababababababababababababababababababababababababababababacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacotzSzNzNzTzNzNzNotzNzNzNzTzNzNzUotacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacacaa
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaazVzVzVzVzVzVzVzVzVzVzVzVzVzVzVzVzVaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
diff --git a/maps/tether/tether-07-misc.dmm b/maps/tether/tether-07-misc.dmm
index 3b9a89a288..c1189bb371 100644
--- a/maps/tether/tether-07-misc.dmm
+++ b/maps/tether/tether-07-misc.dmm
@@ -785,14 +785,14 @@
"pe" = (/turf/unsimulated/mineral{icon = 'icons/turf/transit_vr.dmi'; icon_state = "rock"},/area/space)
"pf" = (/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pg" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"ph" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/obj/item/ammo_magazine/c762/ap,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"ph" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/item/weapon/gun/projectile/automatic/carbine,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/obj/item/ammo_magazine/m762/ap,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pi" = (/obj/structure/table/glass,/obj/item/weapon/handcuffs/fuzzy,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/antag/antag_base)
"pj" = (/turf/unsimulated/wall{icon = 'icons/turf/transit_vr.dmi'},/area/space)
"pk" = (/obj/effect/floor_decal/transit/orange{dir = 8},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space)
"pl" = (/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space)
"pm" = (/obj/effect/floor_decal/transit/orange{dir = 4},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space)
"pn" = (/obj/structure/table/rack,/obj/effect/floor_decal/corner/red{dir = 10},/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/obj/item/weapon/storage/box/sniperammo,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"po" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/ammo_magazine/a75,/obj/item/ammo_magazine/a75,/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"po" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/weapon/gun/projectile/gyropistol,/obj/item/ammo_magazine/m75,/obj/item/ammo_magazine/m75,/obj/effect/floor_decal/corner/red{dir = 10},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pp" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/obj/item/weapon/gun/energy/sniperrifle,/obj/effect/floor_decal/corner/red{dir = 10},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pq" = (/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/antag/antag_base)
"pr" = (/obj/structure/closet{icon_closed = "cabinet_closed"; icon_opened = "cabinet_open"; icon_state = "cabinet_closed"; name = "Clothing Storage"},/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/shoes/boots/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/under/syndicate/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/obj/item/clothing/gloves/combat,/turf/unsimulated/floor{icon_state = "lino"},/area/antag/antag_base)
@@ -814,7 +814,7 @@
"pH" = (/turf/space/transit/north/shuttlespace_ns7,/area/shuttle/antag_space/transit)
"pI" = (/obj/structure/table/rack,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/obj/item/weapon/cell/device/weapon,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pJ" = (/obj/effect/floor_decal/corner/red{dir = 5},/obj/structure/table/rack,/obj/item/weapon/gun/launcher/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/obj/item/ammo_casing/rocket,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"pK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/a556/ap,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"pK" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/item/weapon/gun/projectile/automatic/l6_saw,/obj/effect/floor_decal/corner/red{dir = 5},/obj/item/ammo_magazine/m556/ap,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pL" = (/obj/machinery/newscaster{layer = 3.3; pixel_x = 0; pixel_y = 32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pM" = (/obj/structure/flora/pottedplant{icon_state = "plant-21"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pN" = (/obj/machinery/door/airlock/centcom{name = "Barracks"; req_one_access = list(150)},/turf/unsimulated/floor{icon_state = "lino"},/area/antag/antag_base)
@@ -825,7 +825,7 @@
"pS" = (/turf/space/transit/north/shuttlespace_ns1,/area/shuttle/antag_space/transit)
"pT" = (/obj/effect/floor_decal/transit/orange{dir = 8},/obj/effect/transit/light{dir = 8},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space)
"pU" = (/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"pV" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"pV" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pW" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/item/weapon/gun/projectile/silenced,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pX" = (/obj/effect/floor_decal/corner/red{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"pY" = (/obj/structure/table/rack,/obj/item/clothing/shoes/magboots,/obj/item/clothing/suit/space/void/merc,/obj/item/clothing/mask/gas/syndicate,/obj/item/clothing/head/helmet/space/void/merc,/obj/effect/floor_decal/borderfloorblack{dir = 9},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
@@ -837,7 +837,7 @@
"qe" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/antag_ground/base)
"qf" = (/turf/simulated/shuttle/wall/dark/hard_corner,/area/shuttle/antag_space/base)
"qg" = (/obj/effect/floor_decal/transit/orange{dir = 4},/obj/effect/transit/light{dir = 4},/turf/unsimulated/floor/techfloor_grid{icon = 'icons/turf/transit_vr.dmi'},/area/space)
-"qh" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"qh" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"qi" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/obj/effect/floor_decal/corner/red{dir = 9},/obj/effect/floor_decal/corner/red{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"qj" = (/obj/effect/floor_decal/borderfloorblack{dir = 1},/obj/effect/floor_decal/borderfloorblack/corner2{dir = 4},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"qk" = (/obj/effect/floor_decal/borderfloorblack/corner{dir = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
@@ -930,7 +930,7 @@
"rT" = (/obj/structure/table/rack,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/item/device/radio,/obj/effect/floor_decal/borderfloorblack,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"rU" = (/obj/structure/table/rack,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/item/weapon/pinpointer/nukeop,/obj/effect/floor_decal/borderfloorblack,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"rV" = (/obj/structure/table/rack,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/item/device/flashlight/flare,/obj/effect/floor_decal/borderfloorblack{dir = 6},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"rW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"rW" = (/obj/effect/floor_decal/borderfloorblack{dir = 8},/obj/machinery/vending/nifsoft_shop{categories = 111; emagged = 1; name = "Hacked NIFSoft Shop"; prices = list()},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"rX" = (/obj/machinery/telecomms/allinone{intercept = 1},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"rY" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "antag_ground_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/antag_ground/base)
"rZ" = (/obj/machinery/door/airlock/external{frequency = 1380; icon_state = "door_locked"; id_tag = "antag_space_shuttle_hatch"; locked = 1; name = "Shuttle Hatch"; req_access = list(13)},/turf/simulated/shuttle/floor/black,/area/shuttle/antag_space/base)
@@ -973,7 +973,7 @@
"sK" = (/obj/structure/closet/secure_closet/freezer/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base)
"sL" = (/obj/machinery/atmospherics/unary/cryo_cell,/obj/effect/floor_decal/industrial/outline/yellow,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"sM" = (/obj/machinery/atmospherics/unary/freezer,/obj/effect/floor_decal/industrial/hatch/yellow,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"sN" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/deagle,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/obj/item/ammo_magazine/a50,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"sN" = (/obj/effect/floor_decal/corner/red{dir = 10},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/deagle,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/obj/item/ammo_magazine/m50,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"sO" = (/obj/machinery/chemical_dispenser/full,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base)
"sP" = (/obj/machinery/chem_master,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base)
"sQ" = (/obj/structure/closet/athletic_mixed,/turf/unsimulated/floor{icon_state = "steel"},/area/antag/antag_base)
@@ -1028,7 +1028,7 @@
"tN" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/item/weapon/storage/box/syndie_kit/ewar_voice,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/obj/item/weapon/card/emag,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"tO" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/item/weapon/storage/box/syndie_kit/chameleon,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"tP" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/weapon/storage/box/syndie_kit/spy,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/radio_jammer,/obj/item/device/chameleon,/obj/item/device/chameleon,/obj/item/device/chameleon,/obj/machinery/recharger/wallcharger{pixel_x = 5; pixel_y = -32},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
-"tQ" = (/mob/living/simple_animal/fox/syndicate,/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
+"tQ" = (/mob/living/simple_animal/fox/syndicate{name = "Rick"},/turf/unsimulated/floor{dir = 2; icon_state = "dark"},/area/antag/antag_base)
"tR" = (/obj/item/device/defib_kit,/obj/item/device/defib_kit,/obj/structure/table/standard,/obj/machinery/recharger,/obj/item/weapon/screwdriver,/turf/unsimulated/floor{icon_state = "white"},/area/antag/antag_base)
"tS" = (/obj/machinery/washing_machine,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/antag/antag_base)
"tT" = (/obj/machinery/shower{dir = 1},/obj/structure/curtain/open/shower,/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 9},/obj/effect/floor_decal/steeldecal/steel_decals10{dir = 10},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/antag/antag_base)
diff --git a/maps/tether/tether_things.dm b/maps/tether/tether_things.dm
index 3c2cc0ad02..7652317582 100644
--- a/maps/tether/tether_things.dm
+++ b/maps/tether/tether_things.dm
@@ -307,7 +307,7 @@ var/global/list/latejoin_tram = list()
desc = "Neutralizes toxins and provides a mild alangesic effect."
icon_state = "pill2"
-/obj/item/weapon/reagent_containers/pill/antitox/New()
+/obj/item/weapon/reagent_containers/pill/airlock/New()
..()
reagents.add_reagent("anti_toxin", 15)
reagents.add_reagent("paracetamol", 5)
diff --git a/maps/virgo/virgo-1.dmm b/maps/virgo/virgo-1.dmm
index 80a0a1ccf0..77cc044fa7 100644
--- a/maps/virgo/virgo-1.dmm
+++ b/maps/virgo/virgo-1.dmm
@@ -1274,7 +1274,7 @@
"ayz" = (/turf/simulated/wall,/area/maintenance/pool)
"ayA" = (/obj/effect/floor_decal/industrial/warning{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"},/turf/simulated/floor,/area/maintenance/pool)
"ayB" = (/obj/structure/closet/crate,/obj/item/weapon/tank/emergency/oxygen/engi,/obj/item/weapon/tank/emergency/oxygen/double,/obj/effect/decal/cleanable/cobweb2,/obj/effect/landmark{name = "blobstart"},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/obj/random/maintenance/engineering,/obj/random/maintenance/engineering,/obj/random/maintenance/clean,/turf/simulated/floor/plating,/area/maintenance/pool)
-"ayC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
+"ayC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/effect/floor_decal/corner/red/full,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/machinery/door/window/brigdoor/northleft{name = "Ammo"; req_access = list(2)},/turf/simulated/floor/tiled/dark,/area/security/armoury)
"ayD" = (/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/window/brigdoor/northright{name = "Ammo"},/obj/structure/table/rack,/obj/effect/floor_decal/corner/red/full{dir = 4},/obj/item/weapon/storage/box/flashshells,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/beanbags,/obj/item/weapon/storage/box/stunshells,/obj/item/weapon/storage/box/stunshells,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"ayE" = (/obj/machinery/camera/network/security{c_tag = "SEC - Secure Armory Fore"; dir = 8},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/turf/simulated/floor/tiled/dark,/area/security/armoury)
"ayF" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
@@ -1358,7 +1358,7 @@
"aAf" = (/obj/machinery/atmospherics/unary/vent_pump/on{dir = 4},/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/effect/floor_decal/corner/red{dir = 9},/obj/structure/disposalpipe/segment,/turf/simulated/floor/tiled,/area/security/brig)
"aAg" = (/obj/machinery/atmospherics/pipe/manifold/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/turf/simulated/floor/tiled,/area/security/brig)
"aAh" = (/obj/effect/floor_decal/corner/red,/obj/structure/closet/secure_closet/brig,/turf/simulated/floor/tiled,/area/security/brig)
-"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
+"aAi" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 1; health = 1e+006},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/machinery/door/window/brigdoor/eastright{name = "Spare Equipment"; req_access = list(3)},/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/obj/item/clothing/suit/armor/vest/alt,/turf/simulated/floor/tiled,/area/security/security_equiptment_storage)
"aAj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/turf/simulated/floor/plating,/area/security/prison)
"aAk" = (/obj/machinery/door/blast/regular{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/hidden/supply,/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,/obj/machinery/door/window/brigdoor/southleft{id = "Cell 1"; name = "Cell 1"; req_access = list(2)},/obj/effect/floor_decal/industrial/hatch/yellow,/turf/simulated/floor/tiled,/area/security/prison)
"aAl" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green,/obj/machinery/door/blast/regular{density = 0; dir = 1; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/security/prison)
@@ -1797,7 +1797,7 @@
"aIC" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/obj/item/weapon/gun/energy/laser/practice,/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled,/area/security/range)
"aID" = (/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 9; pixel_y = 0},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{dir = 4},/obj/effect/floor_decal/industrial/warning/corner{dir = 8},/obj/effect/floor_decal/industrial/warning/corner{dir = 1},/turf/simulated/floor/tiled,/area/security/range)
"aIE" = (/obj/structure/cable/green{d1 = 1; d2 = 2; icon_state = "1-2"},/obj/machinery/hologram/holopad,/turf/simulated/floor/tiled,/area/security/range)
-"aIF" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/mc9mmt/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/obj/item/ammo_magazine/c45m/practice,/turf/simulated/floor/tiled,/area/security/range)
+"aIF" = (/obj/structure/table/reinforced,/obj/machinery/light{dir = 4},/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m9mmt/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/obj/item/ammo_magazine/m45/practice,/turf/simulated/floor/tiled,/area/security/range)
"aIG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable/green{d2 = 4; icon_state = "0-4"},/obj/structure/cable/green,/obj/structure/cable/green{d2 = 2; icon_state = "0-2"},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/security/lobby)
"aIH" = (/obj/structure/cable/green{d1 = 1; d2 = 4; icon_state = "1-4"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/camera/network/security{c_tag = "SEC - Lobby"; dir = 4},/obj/effect/floor_decal/corner/red{dir = 9},/turf/simulated/floor/tiled,/area/security/lobby)
"aII" = (/obj/structure/cable/green{d1 = 2; d2 = 8; icon_state = "2-8"},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/turf/simulated/floor/tiled,/area/security/lobby)
@@ -2493,7 +2493,7 @@
"aVW" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/hallway/primary/central_two)
"aVX" = (/obj/structure/extinguisher_cabinet{pixel_x = 25},/obj/machinery/atm{pixel_x = 0; pixel_y = 32},/turf/simulated/floor/tiled/dark,/area/hallway/primary/central_two)
"aVY" = (/turf/simulated/wall,/area/crew_quarters/coffee_shop)
-"aVZ" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical)
+"aVZ" = (/obj/effect/floor_decal/corner/green/full{dir = 4},/obj/structure/window/reinforced{dir = 2; health = 1e+006},/obj/structure/window/reinforced{dir = 4},/obj/structure/table/rack,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/machinery/door/window/brigdoor/northright{name = "Ammo"; req_access = list(3)},/obj/structure/window/reinforced{dir = 8},/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/effect/floor_decal/industrial/outline/grey,/turf/simulated/floor/tiled/dark,/area/security/tactical)
"aWa" = (/turf/simulated/wall,/area/ai_monitored/storage/emergency/eva)
"aWb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/ai_monitored/storage/emergency/eva)
"aWc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/firedoor/border_only,/turf/simulated/floor/plating,/area/ai_monitored/storage/emergency/eva)
@@ -3110,7 +3110,7 @@
"bhP" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/vending/wallmed1{name = "NanoMed Wall"; pixel_x = -25; pixel_y = 0},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bhQ" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 5},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bhR" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
-"bhS" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/obj/item/ammo_magazine/clip/a762/practice,/turf/simulated/floor/tiled,/area/security/range)
+"bhS" = (/obj/structure/closet/crate,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/target,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/weapon/gun/projectile/shotgun/pump/rifle/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/obj/item/ammo_magazine/clip/c762/practice,/turf/simulated/floor/tiled,/area/security/range)
"bhT" = (/obj/structure/table/standard,/obj/item/weapon/reagent_containers/food/drinks/britcup,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/obj/random/medical,/obj/item/weapon/reagent_containers/food/drinks/britcup,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bhU" = (/obj/item/weapon/stool/padded,/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
"bhV" = (/obj/effect/floor_decal/corner/paleblue/diagonal{dir = 4},/obj/structure/cable/green{d1 = 4; d2 = 8; icon_state = "4-8"},/obj/structure/cable/green{d1 = 1; d2 = 8; icon_state = "1-8"},/obj/machinery/atmospherics/pipe/simple/hidden/supply{dir = 4},/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{dir = 4},/turf/simulated/floor/tiled/white,/area/crew_quarters/medbreak)
diff --git a/maps/virgo/virgo-2.dmm b/maps/virgo/virgo-2.dmm
index f9b08bf922..659333b29d 100644
--- a/maps/virgo/virgo-2.dmm
+++ b/maps/virgo/virgo-2.dmm
@@ -918,7 +918,7 @@
"arH" = (/obj/structure/table/rack,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/item/weapon/plastique,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arI" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/gun/energy/ionrifle,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arJ" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/item/weapon/gun/projectile/automatic/wt550,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"arK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/item/ammo_magazine/mc9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"arK" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/item/ammo_magazine/m9mmt/rubber,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arL" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/item/weapon/gun/launcher/grenade,/obj/item/weapon/gun/launcher/grenade,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arM" = (/obj/structure/table/rack,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/flashbangs,/obj/item/weapon/storage/box/emps{pixel_x = 4; pixel_y = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/item/weapon/storage/box/frags,/obj/item/weapon/storage/box/smokes,/obj/item/weapon/storage/box/smokes,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arN" = (/obj/machinery/vending/security,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -934,11 +934,11 @@
"arX" = (/obj/machinery/door/airlock/centcom,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"arY" = (/obj/machinery/embedded_controller/radio/simple_docking_controller{frequency = 1380; id_tag = "specops_shuttle_fore"; name = "forward docking hatch controller"; pixel_x = 0; pixel_y = -25; tag_door = "specops_shuttle_fore_hatch"},/turf/simulated/shuttle/floor{tag = "icon-floor_red"; icon_state = "floor_red"},/area/shuttle/specops/centcom)
"arZ" = (/obj/structure/table/standard,/obj/item/stack/material/glass{amount = 15},/obj/item/weapon/cell{charge = 100; maxcharge = 15000},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"asa" = (/obj/structure/table/rack,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"asa" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asb" = (/obj/structure/table/rack,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asc" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/sniperrifle,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"asd" = (/obj/structure/table/rack,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/ammo_magazine/p90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"ase" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/ammo_magazine/a556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"asd" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/ammo_magazine/m9mmp90,/obj/item/weapon/gun/projectile/automatic/p90,/obj/item/weapon/gun/projectile/automatic/p90,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"ase" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/ammo_magazine/m556,/obj/item/weapon/gun/projectile/automatic/l6_saw,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asf" = (/obj/effect/wingrille_spawn/reinforced/crescent,/turf/unsimulated/floor{icon_state = "plating"; name = "plating"},/area/centcom/specops)
"asg" = (/obj/structure/closet/crate,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/clothing/shoes/magboots,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/obj/item/weapon/storage/box,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"ash" = (/obj/machinery/autolathe{desc = "Your typical Autolathe. It appears to have much more options than your regular one, however..."; hacked = 1; name = "Unlocked Autolathe"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -964,7 +964,7 @@
"asB" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunshells,/obj/item/weapon/storage/box/shotgunammo,/obj/item/weapon/storage/box/shotgunammo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asC" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/obj/item/weapon/gun/projectile/shotgun/pump/combat,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asD" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/automatic/z8,/obj/item/weapon/gun/projectile/automatic/z8,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"asE" = (/obj/structure/table/rack,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/s762,/obj/item/ammo_magazine/s762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"asE" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/item/ammo_magazine/m762,/obj/item/ammo_magazine/m762,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asF" = (/obj/machinery/deployable/barrier,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asG" = (/obj/structure/table/reinforced,/obj/item/device/pda/ert,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"asH" = (/obj/effect/floor_decal/corner/purple{dir = 9},/turf/unsimulated/floor{icon_state = "vault"; dir = 5},/area/centcom/specops)
@@ -1022,7 +1022,7 @@
"atH" = (/obj/structure/table/rack,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/obj/item/weapon/melee/energy/sword/blue,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"atI" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/xray,/obj/item/weapon/gun/energy/xray,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"atJ" = (/obj/structure/table/rack,/obj/item/weapon/gun/energy/laser,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"atK" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/rubber,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m/flash,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/obj/item/ammo_magazine/c45m,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"atK" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/rubber,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45/flash,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/obj/item/ammo_magazine/m45,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"atL" = (/obj/structure/table/rack,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/obj/item/weapon/gun/projectile/sec,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"atM" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/obj/item/weapon/storage/belt/security/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"atN" = (/obj/structure/table/reinforced,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/obj/item/clothing/glasses/sunglasses/sechud/tactical,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
@@ -1142,7 +1142,7 @@
"avX" = (/obj/structure/closet/secure_closet/medical_wall{pixel_x = -32; pixel_y = 0; req_access = list(150)},/obj/item/stack/medical/splint,/obj/item/stack/medical/ointment,/obj/item/stack/medical/ointment,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/stack/medical/bruise_pack,/obj/item/weapon/storage/belt/medical/emt,/obj/item/weapon/storage/belt/medical/emt,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"avY" = (/obj/structure/closet/hydrant{pixel_y = 32},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"avZ" = (/obj/structure/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
-"awa" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/mc9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
+"awa" = (/obj/structure/table/rack,/obj/item/weapon/storage/belt/security,/obj/item/weapon/storage/belt/security,/obj/item/ammo_magazine/m9mm/flash,/obj/item/weapon/gun/projectile/pistol/flash,/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awb" = (/obj/structure/bed/chair{dir = 8},/obj/structure/bed/chair{dir = 8},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"awc" = (/obj/structure/bed/chair/comfy/black,/turf/unsimulated/floor{tag = "icon-cult"; name = "plating"; icon_state = "cult"},/area/syndicate_mothership)
"awd" = (/obj/machinery/door/airlock/centcom{name = "Kitchen"; opacity = 1; req_access = list(150)},/turf/unsimulated/floor{icon_state = "white"},/area/syndicate_mothership)
@@ -1294,8 +1294,8 @@
"ayT" = (/obj/structure/table/rack,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/obj/item/device/megaphone,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"ayU" = (/obj/structure/table/rack,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/obj/item/device/flashlight/maglight,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"ayV" = (/obj/structure/table/rack,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera_film,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/obj/item/device/camera,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"ayW" = (/obj/structure/table/rack,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/ammo_magazine/a10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
-"ayX" = (/obj/structure/table/rack,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/ammo_magazine/c556/ext,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
+"ayW" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/ammo_magazine/m10mm,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/obj/item/weapon/gun/projectile/automatic/c20r,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
+"ayX" = (/obj/structure/table/rack,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/ammo_magazine/m556/ext,/obj/item/weapon/gun/projectile/automatic/sts35,/obj/item/weapon/gun/projectile/automatic/sts35,/turf/unsimulated/floor{icon_state = "dark"},/area/syndicate_mothership)
"ayY" = (/turf/unsimulated/floor{icon_state = "steel"},/area/centcom/specops)
"ayZ" = (/obj/machinery/light{dir = 8; icon_state = "tube1"; pixel_y = 0},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
"aza" = (/obj/machinery/vending/assist{contraband = null; name = "AntagCorpVend"; products = list(/obj/item/device/assembly/prox_sensor = 5, /obj/item/device/assembly/signaler = 4, /obj/item/device/assembly/infra = 4, /obj/item/device/assembly/prox_sensor = 4, /obj/item/weapon/handcuffs = 8, /obj/item/device/flash = 4, /obj/item/weapon/cartridge/signal = 4, /obj/item/clothing/glasses/sunglasses = 4)},/obj/machinery/light{dir = 4},/turf/simulated/shuttle/floor/darkred,/area/syndicate_station/start)
diff --git a/nano/templates/communicator.tmpl b/nano/templates/communicator.tmpl
index 58b86a30d7..6157f45d61 100644
--- a/nano/templates/communicator.tmpl
+++ b/nano/templates/communicator.tmpl
@@ -152,7 +152,10 @@ Used In File(s): code\game\objects\items\devices\communicator\communicator.dm
{{:value.name}}
-
{{:value.address}}
{{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}}
+
{{:value.address}}
+ {{:helper.link('Copy', 'pencil', {'copy' : value.address, 'switch_tab' : 2})}}
+ {{:helper.link('Call', 'phone', {'dial' : value.address, 'copy' : value.address, 'switch_tab' : 2})}}
+ {{:helper.link('Msg', 'mail-closed', {'copy' : value.address, 'copy_name' : value.name, 'switch_tab' : 40})}}
{{/for}}
diff --git a/sound/items/nif_click.ogg b/sound/items/nif_click.ogg
new file mode 100644
index 0000000000..4bb8db9f30
Binary files /dev/null and b/sound/items/nif_click.ogg differ
diff --git a/sound/items/nif_tone_bad.ogg b/sound/items/nif_tone_bad.ogg
new file mode 100644
index 0000000000..d2c237acf3
Binary files /dev/null and b/sound/items/nif_tone_bad.ogg differ
diff --git a/sound/items/nif_tone_good.ogg b/sound/items/nif_tone_good.ogg
new file mode 100644
index 0000000000..e6365ba8db
Binary files /dev/null and b/sound/items/nif_tone_good.ogg differ
diff --git a/tools/mapmergepy/1 Prepare Maps.bat b/tools/mapmergepy/1 Prepare Maps.bat
new file mode 100644
index 0000000000..d878510e3b
--- /dev/null
+++ b/tools/mapmergepy/1 Prepare Maps.bat
@@ -0,0 +1,12 @@
+@echo off
+cd ../../maps/
+
+for /R %%f in (*.dmm) do copy "%%f" "%%f.backup"
+
+cls
+echo All dmm files in maps directories have been backed up
+echo Now you can make your changes...
+echo ---
+echo Remember to run Run_Map_Merge.bat just before you commit your changes!
+echo ---
+pause
diff --git a/tools/mapmergepy/2 Clean Maps.bat b/tools/mapmergepy/2 Clean Maps.bat
new file mode 100644
index 0000000000..b651f5da71
--- /dev/null
+++ b/tools/mapmergepy/2 Clean Maps.bat
@@ -0,0 +1,4 @@
+@echo off
+set MAPROOT="../../maps/"
+python mapmerger.py %1 %MAPROOT%
+pause
\ No newline at end of file
diff --git a/tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc b/tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc
new file mode 100644
index 0000000000..3bee5f17af
Binary files /dev/null and b/tools/mapmergepy/__pycache__/map_helpers.cpython-36.pyc differ
diff --git a/tools/mapmergepy/map_helpers.py b/tools/mapmergepy/map_helpers.py
new file mode 100644
index 0000000000..ba6efd55d5
--- /dev/null
+++ b/tools/mapmergepy/map_helpers.py
@@ -0,0 +1,524 @@
+import collections
+
+maxx = 0
+maxy = 0
+key_length = 1
+
+def reset_globals():
+ global key_length
+ global maxx
+ global maxy
+ key_length = 1
+ maxx = 0
+ maxy = 0
+
+def merge_map(newfile, backupfile, tgm):
+ reset_globals()
+
+ shitmap = parse_map(newfile)
+ shitDict = shitmap["dictionary"] #key to tile data dictionary
+ shitGrid = shitmap["grid"] #x,y coords to tiles (keys) dictionary (the map's layout)
+
+ originalmap = parse_map(backupfile)
+ originalDict = originalmap["dictionary"]
+ originalGrid = originalmap["grid"]
+
+ mergeGrid = dict() #final map layout
+ known_keys = dict() #mapping known keys to original keys
+ tempGrid = dict() #saving tiles with newly generated keys for later processing
+ temp_keys = dict() #mapping known keys to newly generated keys
+ unused_keys = list(originalDict.keys()) #list with all existing keys that aren't being used
+ tempDict = collections.OrderedDict() #mapping new keys to new data
+ originalDict_size = len(originalDict)
+
+ for y in range(1,maxy+1):
+ for x in range(1,maxx+1):
+ shitKey = shitGrid[x,y]
+
+ #if this key was seen before, add it to the pile immediately
+ if shitKey in known_keys:
+ mergeGrid[x,y] = known_keys[shitKey]
+ continue
+ #if this key was seen before, add it to the pile immediately
+ if shitKey in temp_keys:
+ tempGrid[x,y] = temp_keys[shitKey]
+ continue
+
+ shitData = shitDict[shitKey]
+ originalKey = originalGrid[x,y]
+ originalData = originalDict[originalKey]
+
+ #if new tile data at x,y is the same as original tile data at x,y, add to the pile
+ if shitData == originalData:
+ mergeGrid[x,y] = originalKey
+ known_keys[shitKey] = originalKey
+ unused_keys.remove(originalKey)
+ else:
+ #search for the new tile data in the original dictionary, if a key is found add it to the pile, else generate a new key
+ newKey = search_key(originalDict, shitData)
+ if newKey != None:
+ try:
+ unused_keys.remove(newKey)
+ except ValueError: #caused by a duplicate entry
+ print("WARNING: Correcting duplicate dictionary entry. ({})".format(shitKey))
+ mergeGrid[x,y] = newKey
+ known_keys[shitKey] = newKey
+ #if data at original x,y no longer exists we reuse the key immediately
+ elif search_key(shitDict, originalData) == None:
+ mergeGrid[x,y] = originalKey
+ originalDict[originalKey] = shitData
+ unused_keys.remove(originalKey)
+ known_keys[shitKey] = originalKey
+ else:
+ if len(tempDict) == 0:
+ newKey = generate_new_key(originalDict)
+ else:
+ newKey = generate_new_key(tempDict)
+ if newKey == "OVERFLOW": #if this happens, merging is impossible
+ print("ERROR: Key overflow detected.")
+ return 0
+ tempGrid[x,y] = newKey
+ temp_keys[shitKey] = newKey
+ tempDict[newKey] = shitData
+
+ sort = 0
+ #find gaps in the dictionary keys sequence and add the missing keys to be recycled
+ dict_list = list(originalDict.keys())
+ for index in range(0, len(dict_list)):
+ if index + 1 == len(dict_list):
+ break
+
+ key = dict_list[index]
+ next_key = dict_list[index+1]
+
+ difference = key_difference(key, next_key)
+ if difference > 1:
+ i = 1
+ nextnew = key
+ while i < difference:
+ nextnew = get_next_key(nextnew)
+ unused_keys.append(nextnew)
+ i += 1
+ sort = 1
+
+
+ #Recycle outdated keys with any new tile data, starting from the bottom of the dictionary
+ i = 0
+ for key, value in reversed(tempDict.items()):
+ recycled_key = key
+ if len(unused_keys) > 0:
+ recycled_key = unused_keys.pop()
+
+ for coord, gridkey in tempGrid.items():
+ if gridkey == None:
+ continue
+ if gridkey == key:
+ mergeGrid[coord] = recycled_key
+ tempGrid[coord] = None
+
+ originalDict[recycled_key] = value
+
+ #if gaps in the key sequence were found, sort the dictionary for cleanliness
+ if sort == 1:
+ sorted_dict = collections.OrderedDict()
+ next_key = get_next_key("")
+ while len(sorted_dict) < len(originalDict):
+ try:
+ sorted_dict[next_key] = originalDict[next_key]
+ except KeyError:
+ pass
+ next_key = get_next_key(next_key)
+ originalDict = sorted_dict
+
+ if tgm:
+ with open(newfile, "w") as output:
+ write_dictionary_tgm(output, originalDict)
+ write_grid_coord_small(output, mergeGrid)
+ else:
+ with open(newfile, "wt", encoding='cp1252', newline='\n') as output:
+ write_dictionary_dmm(output, originalDict)
+ write_grid_dmm(output, mergeGrid)
+ return 1
+
+#write dictionary in tgm format
+def write_dictionary_tgm(output, dictionary):
+ output.write("//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE \n")
+ for key, list_ in dictionary.items():
+ output.write("\"{}\" = (\n".format(key))
+
+ for thing in list_:
+ buffer = ""
+ in_quote_block = False
+ in_varedit_block = False
+ for char in thing:
+
+ if in_quote_block:
+ if char == "\"":
+ in_quote_block = False
+ buffer = buffer + char
+ continue
+ elif char == "\"":
+ in_quote_block = True
+ buffer = buffer + char
+ continue
+
+ if not in_varedit_block:
+ if char == "{":
+ in_varedit_block = True
+ buffer = buffer + "{\n\t"
+ continue
+ else:
+ if char == ";":
+ buffer = buffer + ";\n\t"
+ continue
+ elif char == "}":
+ buffer = buffer + "\n\t}"
+ in_varedit_block = False
+ continue
+
+ buffer = buffer + char
+
+ if list_.index(thing) != len(list_) - 1:
+ buffer = buffer + ",\n"
+ output.write(buffer)
+
+ output.write(")\n")
+
+#thanks to YotaXP for finding out about this one
+def write_grid_coord_small(output, grid):
+ output.write("\n")
+
+ for x in range(1, maxx+1):
+ output.write("({},{},1) = {{\"\n".format(x, 1, 1))
+ for y in range(1, maxy):
+ output.write("{}\n".format(grid[x,y]))
+ output.write("{}\n\"}}\n".format(grid[x,maxy]))
+
+def search_key(dictionary, data):
+ for key, value in dictionary.items():
+ if value == data:
+ return key
+ return None
+
+def generate_new_key(dictionary):
+ last_key = next(reversed(dictionary))
+ return get_next_key(last_key)
+
+def get_next_key(key):
+ if key == "":
+ return "".join("a" for _ in range(key_length))
+
+ length = len(key)
+ new_key = ""
+ carry = 1
+ for char in key[::-1]:
+ if carry <= 0:
+ new_key = new_key + char
+ continue
+ if char == 'Z':
+ new_key = new_key + 'a'
+ carry += 1
+ length -= 1
+ if length <= 0:
+ return "OVERFLOW"
+ elif char == 'z':
+ new_key = new_key + 'A'
+ else:
+ new_key = new_key + chr(ord(char) + 1)
+ if carry > 0:
+ carry -= 1
+ return new_key[::-1]
+
+#still does not support more than one z level per file, but should parse any format
+def parse_map(map_file):
+ with open(map_file, "r") as map_input:
+ characters = map_input.read()
+
+ in_quote_block = False
+ in_key_block = False
+ in_data_block = False
+ in_varedit_block = False
+ after_data_block = False
+ escaping = False
+ skip_whitespace = False
+
+ dictionary = collections.OrderedDict()
+ curr_key = ""
+ curr_datum = ""
+ curr_data = list()
+
+ in_map_block = False
+ in_coord_block = False
+ in_map_string = False
+ iter_x = 0
+ adjust_y = True
+
+ curr_num = ""
+ reading_coord = "x"
+
+ global key_length
+ global maxx
+ global maxy
+ curr_x = 0
+ curr_y = 0
+ curr_z = 1
+ grid = dict()
+
+ for char in characters:
+
+ if not in_map_block:
+
+ if char == "\n" or char == "\t":
+ continue
+
+ if in_data_block:
+
+ if in_varedit_block:
+
+ if in_quote_block:
+ if char == "\\":
+ curr_datum = curr_datum + char
+ escaping = True
+ continue
+
+ if escaping:
+ curr_datum = curr_datum + char
+ escaping = False
+ continue
+
+ if char == "\"":
+ curr_datum = curr_datum + char
+ in_quote_block = False
+ continue
+
+ curr_datum = curr_datum + char
+ continue
+
+ if skip_whitespace and char == " ":
+ skip_whitespace = False
+ continue
+ skip_whitespace = False
+
+ if char == "\"":
+ curr_datum = curr_datum + char
+ in_quote_block = True
+ continue
+
+ if char == ";":
+ skip_whitespace = False
+ curr_datum = curr_datum + char
+ continue
+
+ if char == "}":
+ curr_datum = curr_datum + char
+ in_varedit_block = False
+ continue
+
+ curr_datum = curr_datum + char
+ continue
+
+ if char == "{":
+ curr_datum = curr_datum + char
+ in_varedit_block = True
+ continue
+
+ if char == ",":
+ curr_data.append(curr_datum)
+ curr_datum = ""
+ continue
+
+ if char == ")":
+ curr_data.append(curr_datum)
+ dictionary[curr_key] = tuple(curr_data)
+ curr_data = list()
+ curr_datum = ""
+ curr_key = ""
+ in_data_block = False
+ after_data_block = True
+ continue
+
+ curr_datum = curr_datum + char
+ continue
+
+ if in_key_block:
+ if char == "\"":
+ in_key_block = False
+ key_length = len(curr_key)
+ else:
+ curr_key = curr_key + char
+ continue
+ #else we're looking for a key block, a data block or the map block
+
+ if char == "\"":
+ in_key_block = True
+ after_data_block = False
+ continue
+
+ if char == "(":
+ if after_data_block:
+ in_map_block = True
+ in_coord_block = True
+ after_data_block = False
+ curr_key = ""
+ continue
+ else:
+ in_data_block = True
+ after_data_block = False
+ continue
+
+ else:
+
+ if in_coord_block:
+ if char == ",":
+ if reading_coord == "x":
+ curr_x = string_to_num(curr_num)
+ if curr_x > maxx:
+ maxx = curr_x
+ iter_x = 0
+ curr_num = ""
+ reading_coord = "y"
+ elif reading_coord == "y":
+ curr_y = string_to_num(curr_num)
+ if curr_y > maxy:
+ maxy = curr_y
+ curr_num = ""
+ reading_coord = "z"
+ else:
+ pass
+ continue
+
+ if char == ")":
+ in_coord_block = False
+ reading_coord = "x"
+ curr_num = ""
+ #read z here if needed
+ continue
+
+ curr_num = curr_num + char
+ continue
+
+ if in_map_string:
+
+ if char == "\"":
+ in_map_string = False
+ adjust_y = True
+ curr_y -= 1
+ continue
+
+ if char == "\n":
+ if adjust_y:
+ adjust_y = False
+ else:
+ curr_y += 1
+ if curr_x > maxx:
+ maxx = curr_x
+ if iter_x > 1:
+ curr_x = 1
+ iter_x = 0
+ continue
+
+
+ curr_key = curr_key + char
+ if len(curr_key) == key_length:
+ iter_x += 1
+ if iter_x > 1:
+ curr_x += 1
+
+ grid[curr_x, curr_y] = curr_key
+ curr_key = ""
+ continue
+
+
+ #else look for coordinate block or a map string
+
+ if char == "(":
+ in_coord_block = True
+ continue
+ if char == "\"":
+ in_map_string = True
+ continue
+
+ if curr_y > maxy:
+ maxy = curr_y
+
+ data = dict()
+ data["dictionary"] = dictionary
+ data["grid"] = grid
+ return data
+
+#subtract keyB from keyA
+def key_difference(keyA, keyB):
+ if len(keyA) != len(keyB):
+ return "you fucked up"
+
+ Ayek = keyA[::-1]
+ Byek = keyB[::-1]
+
+ result = 0
+ for i in range(0, len(keyA)):
+ base = 52**i
+ A = 26 if Ayek[i].isupper() else 0
+ B = 26 if Byek[i].isupper() else 0
+ result += ( (ord(Byek[i].lower()) + B) - (ord(Ayek[i].lower()) + A) ) * base
+ return result
+
+def string_to_num(s):
+ try:
+ return int(s)
+ except ValueError:
+ return -1
+
+#writes a tile data dictionary the same way Dreammaker does
+def write_dictionary_dmm(output, dictionary):
+ for key, value in dictionary.items():
+ output.write("\"{}\" = ({})\n".format(key, ",".join(value)))
+
+#writes a map grid the same way Dreammaker does
+def write_grid_dmm(output, grid):
+ output.write("\n")
+ output.write("(1,1,1) = {\"\n")
+
+ for y in range(1, maxy+1):
+ for x in range(1, maxx+1):
+ try:
+ output.write(grid[x,y])
+ except KeyError:
+ print("Key error: ({},{})".format(x,y))
+ output.write("\n")
+ output.write("\"}")
+ output.write("\n")
+
+#inflated map grid; unused
+def write_grid_coord(filename, grid):
+ with open(filename, "a") as output:
+ output.write("\n")
+ for y in range(1, maxy+1):
+ for x in range(1, maxx+1):
+ output.write("({},{},1) = {{\"{}\"}}\n".format(x, y, grid[x,y]))
+
+def key_compare(keyA, keyB): #thanks byond for not respecting ascii
+ pos = 0
+ for a in keyA:
+ pos += 1
+ count = pos
+ for b in keyB:
+ if(count > 1):
+ count -= 1
+ continue
+ if a.islower() and b.islower():
+ if(a < b):
+ return -1
+ if(a > b):
+ return 1
+ break
+ if a.islower() and b.isupper():
+ return -1
+ if a.isupper() and b.islower():
+ return 1
+ if a.isupper() and b.isupper():
+ if(a < b):
+ return -1
+ if(a > b):
+ return 1
+ break
+ return 0
diff --git a/tools/mapmergepy/mapmerger.py b/tools/mapmergepy/mapmerger.py
new file mode 100644
index 0000000000..0a177eb07a
--- /dev/null
+++ b/tools/mapmergepy/mapmerger.py
@@ -0,0 +1,81 @@
+#!/usr/bin/python3
+
+import sys
+import os
+import pathlib
+import map_helpers
+import shutil
+
+def main(map_folder):
+ list_of_files = list()
+ for root, directories, filenames in os.walk(map_folder):
+ for filename in [f for f in filenames if f.endswith(".dmm")]:
+ list_of_files.append(pathlib.Path(root, filename))
+
+ last_dir = ""
+ for i in range(0, len(list_of_files)):
+ this_dir = list_of_files[i].parent
+ if last_dir != this_dir:
+ print("--------------------------------")
+ last_dir = this_dir
+ print("[{}]: {}".format(i, str(list_of_files[i])[len(map_folder):]))
+
+ print("--------------------------------")
+ in_list = input("List the maps you want to merge (example: 1,3-5,12):\n")
+ in_list = in_list.replace(" ", "")
+ in_list = in_list.split(",")
+
+ valid_indices = list()
+ for m in in_list:
+ index_range = m.split("-")
+ if len(index_range) == 1:
+ index = string_to_num(index_range[0])
+ if index >= 0 and index < len(list_of_files):
+ valid_indices.append(index)
+ elif len(index_range) == 2:
+ index0 = string_to_num(index_range[0])
+ index1 = string_to_num(index_range[1])
+ if index0 >= 0 and index0 <= index1 and index1 < len(list_of_files):
+ valid_indices.extend(range(index0, index1 + 1))
+
+# if tgm == "1":
+# print("\nMaps will be converted to tgm.")
+# tgm = True
+# else:
+# print("\nMaps will not be converted to tgm.")
+# tgm = False
+ tgm = False
+
+ print("\nMerging these maps:")
+ for i in valid_indices:
+ print(str(list_of_files[i])[len(map_folder):])
+ merge = input("\nPress Enter to merge...")
+ if merge == "abort":
+ print("\nAborted map merge.")
+ sys.exit()
+ else:
+ for i in valid_indices:
+ path_str = str(list_of_files[i])
+ shutil.copyfile(path_str, path_str + ".before")
+ path_str_pretty = path_str[len(map_folder):]
+ try:
+ if map_helpers.merge_map(path_str, path_str + ".backup", tgm) != 1:
+ print("ERROR MERGING: {}".format(path_str_pretty))
+ os.remove(path_str + ".before")
+ continue
+ print("MERGED: {}".format(path_str_pretty))
+ except FileNotFoundError:
+ print("\nERROR: File not found! Make sure you run 'Prepare Maps.bat' before merging.")
+ print(path_str_pretty + " || " + path_str_pretty + ".backup")
+
+ print("\nFinished merging.")
+ print("\nNOTICE: A version of the map files from before merging have been created for debug purposes.\nDo not delete these files until it is sure your map edits have no undesirable changes.")
+
+def string_to_num(s):
+ try:
+ return int(s)
+ except ValueError:
+ return -1
+
+if __name__ == "__main__":
+ main(sys.argv[1])
diff --git a/tools/mapmergepy/prepare_maps.sh b/tools/mapmergepy/prepare_maps.sh
new file mode 100644
index 0000000000..f1ea86ce45
--- /dev/null
+++ b/tools/mapmergepy/prepare_maps.sh
@@ -0,0 +1,2 @@
+#!/bin/bash
+find ../../maps | grep \.dmm$ | xargs -l1 -I{} cp {} {}.backup
\ No newline at end of file
diff --git a/vorestation.dme b/vorestation.dme
index 0c298486a4..41f8895e95 100644
--- a/vorestation.dme
+++ b/vorestation.dme
@@ -39,6 +39,7 @@
#include "code\__defines\misc.dm"
#include "code\__defines\misc_vr.dm"
#include "code\__defines\mobs.dm"
+#include "code\__defines\nifsoft.dm"
#include "code\__defines\planets.dm"
#include "code\__defines\process_scheduler.dm"
#include "code\__defines\research.dm"
@@ -165,6 +166,7 @@
#include "code\controllers\Processes\nanoui.dm"
#include "code\controllers\Processes\obj.dm"
#include "code\controllers\Processes\planet.dm"
+#include "code\controllers\Processes\radiation.dm"
#include "code\controllers\Processes\scheduler.dm"
#include "code\controllers\Processes\Shuttle.dm"
#include "code\controllers\Processes\sun.dm"
@@ -231,6 +233,7 @@
#include "code\datums\repositories\cameras.dm"
#include "code\datums\repositories\crew.dm"
#include "code\datums\repositories\decls.dm"
+#include "code\datums\repositories\radiation.dm"
#include "code\datums\repositories\repository.dm"
#include "code\datums\supplypacks\atmospherics.dm"
#include "code\datums\supplypacks\contraband.dm"
@@ -819,6 +822,7 @@
#include "code\game\objects\items\devices\flash_vr.dm"
#include "code\game\objects\items\devices\flashlight.dm"
#include "code\game\objects\items\devices\floor_painter.dm"
+#include "code\game\objects\items\devices\geiger.dm"
#include "code\game\objects\items\devices\hacktool.dm"
#include "code\game\objects\items\devices\lightreplacer.dm"
#include "code\game\objects\items\devices\locker_painter.dm"
@@ -1025,6 +1029,7 @@
#include "code\game\objects\structures\tank_dispenser.dm"
#include "code\game\objects\structures\target_stake.dm"
#include "code\game\objects\structures\transit_tubes.dm"
+#include "code\game\objects\structures\trash_pile.dm"
#include "code\game\objects\structures\under_wardrobe.dm"
#include "code\game\objects\structures\watercloset.dm"
#include "code\game\objects\structures\windoor_assembly.dm"
@@ -1299,6 +1304,7 @@
#include "code\modules\client\preference_setup\vore\05_persistence.dm"
#include "code\modules\client\preference_setup\vore\06_vantag.dm"
#include "code\modules\client\preference_setup\vore\07_traits.dm"
+#include "code\modules\client\preference_setup\vore\08_nif.dm"
#include "code\modules\clothing\chameleon.dm"
#include "code\modules\clothing\clothing.dm"
#include "code\modules\clothing\clothing_accessories.dm"
@@ -1959,6 +1965,15 @@
#include "code\modules\nano\modules\nano_module.dm"
#include "code\modules\nano\modules\power_monitor.dm"
#include "code\modules\nano\modules\rcon.dm"
+#include "code\modules\nifsoft\nif.dm"
+#include "code\modules\nifsoft\nif_softshop.dm"
+#include "code\modules\nifsoft\nif_statpanel.dm"
+#include "code\modules\nifsoft\nifsoft.dm"
+#include "code\modules\nifsoft\software\01_vision.dm"
+#include "code\modules\nifsoft\software\05_health.dm"
+#include "code\modules\nifsoft\software\10_combat.dm"
+#include "code\modules\nifsoft\software\14_commlink.dm"
+#include "code\modules\nifsoft\software\15_misc.dm"
#include "code\modules\organs\blood.dm"
#include "code\modules\organs\misc.dm"
#include "code\modules\organs\organ.dm"
@@ -2060,8 +2075,8 @@
#include "code\modules\projectiles\effects.dm"
#include "code\modules\projectiles\gun.dm"
#include "code\modules\projectiles\projectile.dm"
-#include "code\modules\projectiles\ammunition\boxes.dm"
-#include "code\modules\projectiles\ammunition\bullets.dm"
+#include "code\modules\projectiles\ammunition\magazines.dm"
+#include "code\modules\projectiles\ammunition\rounds.dm"
#include "code\modules\projectiles\guns\energy.dm"
#include "code\modules\projectiles\guns\launcher.dm"
#include "code\modules\projectiles\guns\projectile.dm"