diff --git a/aurorastation.dme b/aurorastation.dme
index fd5e927734f..c6c3275facb 100644
--- a/aurorastation.dme
+++ b/aurorastation.dme
@@ -924,6 +924,7 @@
#include "code\game\machinery\spaceheater.dm"
#include "code\game\machinery\stargazer.dm"
#include "code\game\machinery\stasis_bed.dm"
+#include "code\game\machinery\stasis_cage.dm"
#include "code\game\machinery\status_display.dm"
#include "code\game\machinery\status_display_ai.dm"
#include "code\game\machinery\status_display_snowflakes.dm"
@@ -1091,6 +1092,8 @@
#include "code\game\objects\items\lore_radio.dm"
#include "code\game\objects\items\paintkit.dm"
#include "code\game\objects\items\recharger_backpack.dm"
+#include "code\game\objects\items\safari_net.dm"
+#include "code\game\objects\items\science_sampler.dm"
#include "code\game\objects\items\shooting_range.dm"
#include "code\game\objects\items\skrell.dm"
#include "code\game\objects\items\spirit_board.dm"
diff --git a/code/__DEFINES/forensic_swabs.dm b/code/__DEFINES/forensic_swabs.dm
index ef25af351b1..558c060277c 100644
--- a/code/__DEFINES/forensic_swabs.dm
+++ b/code/__DEFINES/forensic_swabs.dm
@@ -2,3 +2,9 @@
#define EVIDENCE_TYPE_GSR "Gunshot Residue"
#define EVIDENCE_TYPE_SALIVA "Saliva"
#define EVIDENCE_TYPE_ADDITIONAL "Additional"
+
+#define MICROSCOPE_FIBER BITFLAG(0)
+#define MICROSCOPE_PRINTS BITFLAG(1)
+#define MICROSCOPE_GSR BITFLAG(2)
+#define MICROSCOPE_CELLS BITFLAG(3)
+#define MICROSCOPE_ALL MICROSCOPE_FIBER | MICROSCOPE_PRINTS | MICROSCOPE_GSR | MICROSCOPE_CELLS
diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm
index cb858e0c5a5..d130b97ad17 100644
--- a/code/__DEFINES/wires.dm
+++ b/code/__DEFINES/wires.dm
@@ -77,6 +77,8 @@
#define WIRE_OUTPUT "Output"
#define WIRE_GROUNDING "Grounding"
#define WIRE_FAILSAFES "Failsafes"
+#define WIRE_RELEASE "Release"
+#define WIRE_LOCK "Lock"
// Wire states for the AI
#define AI_WIRE_NORMAL 0
diff --git a/code/__DEFINES/xenoarch.dm b/code/__DEFINES/xenoarch.dm
index 77c8335089d..64d0fb10d41 100644
--- a/code/__DEFINES/xenoarch.dm
+++ b/code/__DEFINES/xenoarch.dm
@@ -18,4 +18,10 @@
#define TRIGGER_NITRO 12
#define MAX_TRIGGER 12
+
+#define SAMPLE_BIO "tissue"
+#define SAMPLE_SOIL "soil"
+#define SAMPLE_WATER "water"
+#define ALL_SAMPLE_ATTACHMENTS list(SAMPLE_BIO, SAMPLE_SOIL, SAMPLE_WATER)
+
#define PARTICLE_TYPES list("Kaons", "Pions", "Protons", "Neutrons", "Positrons", "Electrons", "Muons", "Neutrinos")
diff --git a/code/game/machinery/stasis_cage.dm b/code/game/machinery/stasis_cage.dm
new file mode 100644
index 00000000000..2613486a49d
--- /dev/null
+++ b/code/game/machinery/stasis_cage.dm
@@ -0,0 +1,325 @@
+/obj/machinery/stasis_cage
+ name = "stasis cage"
+ desc = "A high-tech animal cage, designed to keep contained fauna docile and safe."
+ icon = 'icons/obj/machinery/stasis_cage.dmi'
+ icon_state = "stasis_cage"
+ density = TRUE
+ layer = ABOVE_OBJ_LAYER
+ req_access = list(ACCESS_RESEARCH)
+ idle_power_usage = 0
+ active_power_usage = 5000
+ use_power = POWER_USE_IDLE
+
+ /**
+ * The wires of the cage
+ */
+ var/datum/wires/stasis_cage/wires
+ /**
+ * The mob in the cage
+ */
+ var/mob/living/contained
+ /**
+ * Internal atmosphere of the cage
+ */
+ var/datum/gas_mixture/airtank
+ /**
+ * If the cage works
+ */
+ var/broken = FALSE
+ /**
+ * If the cage will prevent human mobs from being stored
+ */
+ var/safety = TRUE
+
+ /**
+ * The cell used to power this
+ */
+ var/obj/item/cell/cell = null
+
+
+/obj/machinery/stasis_cage/Initialize()
+ . = ..()
+ airtank = new /datum/gas_mixture(src)
+ airtank.temperature = T20C
+ airtank.adjust_gas(GAS_OXYGEN, MOLES_O2STANDARD, FALSE)
+ airtank.adjust_gas(GAS_NITROGEN, MOLES_N2STANDARD)
+
+ cell = new /obj/item/cell(src)
+
+ var/mob/living/A = locate() in loc
+ if(!A)
+ release(A)
+ else
+ contain(A)
+
+ wires = new /datum/wires/stasis_cage(src)
+
+/obj/machinery/stasis_cage/Destroy()
+ release()
+ QDEL_NULL(airtank)
+ QDEL_NULL(contained)
+ QDEL_NULL(cell)
+ QDEL_NULL(wires)
+ return ..()
+
+/obj/machinery/stasis_cage/process(seconds_per_tick)
+ if (use_power || !cell || !cell.charge)
+ return
+ cell.use(2 * seconds_per_tick)
+ if (contained)
+ if (iscarbon(contained))
+ var/mob/living/carbon/C = contained
+ C.SetStasis(20 * seconds_per_tick)
+ else if (isanimal(contained))
+ var/mob/living/simple_animal/SA = contained
+ SA.in_stasis = TRUE
+
+/obj/machinery/stasis_cage/proc/try_release(mob/user)
+ if(!contained)
+ to_chat(user, SPAN_WARNING("There's no animals inside \the [src]"))
+ return
+ if (broken)
+ to_chat(user, SPAN_WARNING("\The [src]'s lid is broken!"))
+ return
+ if (!allowed(user))
+ to_chat(user, SPAN_WARNING("\The [src] refuses access."))
+ return
+ if (!use_power)
+ to_chat(user, SPAN_WARNING("\The [src] is unpowered."))
+ return
+
+ user.visible_message(SPAN_NOTICE("[user] begins undoing the locks and latches on \the [src]."))
+ if(do_after(user, 2 SECONDS, src))
+ user.visible_message(SPAN_NOTICE("[user] releases \the [contained] from \the [src]!"))
+ release()
+
+
+/obj/machinery/stasis_cage/proc/release()
+ if (contained)
+ contained.dropInto(src)
+ contained = null
+ playsound(get_turf(src), 'sound/machines/airlock.ogg', 40)
+ update_icon()
+ update_use_power(POWER_USE_IDLE)
+
+
+/obj/machinery/stasis_cage/proc/contain(mob/user, mob/thing)
+ if(contained || broken)
+ return
+ if (!use_power)
+ to_chat(usr, SPAN_WARNING("\The [src] is unpowered."))
+ return
+ user.visible_message(SPAN_NOTICE("[user] has stuffed \the [thing] into \the [src]."), SPAN_NOTICE("You have stuffed \the [thing] into \the [src]."))
+ set_contained(thing)
+ update_use_power(POWER_USE_ACTIVE)
+
+
+/obj/machinery/stasis_cage/proc/set_contained(mob/contained)
+ src.contained = contained
+ if(contained)
+ contained.forceMove(src)
+ update_icon()
+
+
+/obj/machinery/stasis_cage/attack_hand(mob/user)
+ if (!panel_open)
+ try_release(user)
+ else
+ wires.interact(user)
+
+
+/obj/machinery/stasis_cage/attack_robot(mob/user)
+ if (Adjacent(user))
+ if(!panel_open)
+ try_release(user)
+ else
+ wires.interact(user)
+
+
+
+/obj/machinery/stasis_cage/examine(mob/user, distance, is_adjacent, infix, suffi, show_extended)
+ . = ..()
+ if (contained)
+ to_chat(user, SPAN_NOTICE("\The [contained] is kept inside."))
+ if (broken)
+ to_chat(user, SPAN_WARNING("\The [src]'s lid is broken. It probably can not be used."))
+ if (cell)
+ to_chat(user, SPAN_NOTICE("\The [src]'s power gauge shows [cell.percent()]% remaining."))
+
+
+/obj/machinery/stasis_cage/attackby(obj/item/attacking_item, mob/user)
+ . = ..()
+ // Crowbar - Pry thing out of cage
+ if (attacking_item.iscrowbar())
+ if (panel_open)
+ to_chat(user, SPAN_NOTICE("\The [src]'s panel is open!"))
+ return TRUE
+ if (contained)
+ if (use_power)
+ to_chat(user, SPAN_NOTICE("\The [src] is still powered shut."))
+ return TRUE
+ user.visible_message(SPAN_DANGER("\The [user] begins to pry open \the [src] with the crowbar!"), SPAN_DANGER("You being to pry open \the [src] with the crowbar."))
+ playsound(loc, 'sound/machines/airlock_open_force.ogg', 40)
+ if (!do_after(user, 7 SECONDS, src))
+ return TRUE
+ if (prob(20))
+ user.visible_message(SPAN_DANGER("\The [user] jams open \the [src]'s lid, damaging it in the process!"), SPAN_DANGER("You successfully manage to jam open \the [src]'s lid, damaging it in the process."))
+ release()
+ broken = TRUE
+ update_icon()
+ return TRUE
+ user.visible_message(SPAN_DANGER("\The [user] jams open \the [src]'s lid!") ,SPAN_DANGER("You successfully manage to jam open \the [src]'s lid."))
+ release()
+ return TRUE
+
+ // Wrench - Repair lid
+ if (attacking_item.iswrench())
+ if (broken)
+ user.visible_message(SPAN_NOTICE("\The [user] begins to clamp \the [src]'s lid back into position."), SPAN_NOTICE("You begin to clamp \the [src]'s lid back into position."))
+ playsound(src, 'sound/items/Ratchet.ogg', 50, 1)
+ if (!do_after(user, 5 SECONDS, src))
+ return TRUE
+ user.visible_message(SPAN_NOTICE("\The [user] successfully repairs \the [src]'s lid!"), SPAN_NOTICE("You successfully repair \the [src]'s lid!"))
+ broken = FALSE
+ update_icon()
+ return TRUE
+
+ // Screwdriver - Open panel
+ if(attacking_item.isscrewdriver())
+ panel_open = !panel_open
+ to_chat(user, SPAN_NOTICE("You [panel_open ? "unscrew" : "screw shut"] the maintainance panel of \the [src]"))
+
+
+/obj/machinery/stasis_cage/return_air() //Used to make stasis cage protect from vacuum.
+ if (!use_power)
+ return
+ if(airtank)
+ return airtank
+ ..()
+
+
+/obj/machinery/stasis_cage/RefreshParts()
+ ..()
+ var/charge_multiplier
+ for(var/obj/item/stock_parts/capacitor/C in component_parts)
+ charge_multiplier += C.rating / 2
+ change_power_consumption(initial(active_power_usage) / charge_multiplier, POWER_USE_ACTIVE)
+
+/obj/machinery/stasis_cage/emp_act(severity)
+ . = ..()
+ if(contained)
+ if(prob(30))
+ visible_message(SPAN_DANGER("\The [src]'s lights flicker, unlocking the container!"))
+ release()
+ broken = TRUE
+ update_icon()
+ spark(src, 1)
+ return
+ visible_message(SPAN_DANGER("\The [src] sparks violently, damaging the lid!"))
+ broken = TRUE
+ spark(src, 1)
+
+ if (cell)
+ cell.emp_act(severity)
+
+ update_icon()
+
+/obj/machinery/stasis_cage/update_icon()
+ . = ..()
+ ClearOverlays()
+ if (use_power)
+ if (contained)
+ if (broken)
+ icon_state = "[initial(icon_state)]_broke"
+ else
+ icon_state = "[initial(icon_state)]_on"
+ else
+ if (broken)
+ icon_state = "[initial(icon_state)]_broke"
+ else
+ icon_state = "[initial(icon_state)]_power"
+ else
+ if (broken)
+ icon_state = "[initial(icon_state)]_dead"
+ else
+ icon_state = initial(icon_state)
+
+/obj/machinery/stasis_cage/MouseDrop_T(mob/target, mob/user)
+ if (!isanimal(target) && safety)
+ to_chat(user, SPAN_WARNING("\The [src] smartly refuses \the [target]."))
+ return
+ if (!allowed(user))
+ to_chat(user, SPAN_NOTICE("\The [src] blinks, refusing access."))
+ return
+ if (!target.stat && !target.captured)
+ to_chat(user, SPAN_NOTICE("It's going to be difficult to convince \the [target] to move into \the [src] without capturing it in a net."))
+ return
+ user.visible_message(SPAN_NOTICE("\The [user] begins stuffing \the [target] into \the [src]."), SPAN_NOTICE("You begin stuffing \the [target] into \the [src]."))
+ playsound(src, 'sound/machines/AirlockClose.ogg', 100)
+ add_fingerprint(user)
+ if (do_after(user, 2 SECONDS, src))
+ if(target.buckled_to)
+ target.buckled_to.unbuckle()
+ contain(user, target)
+
+
+/datum/wires/stasis_cage
+ proper_name = "Stasis Cage"
+ holder_type = /obj/machinery/stasis_cage
+
+
+/datum/wires/stasis_cage/New(atom/holder)
+ wires = list(
+ WIRE_SAFETY,
+ WIRE_RELEASE,
+ WIRE_LOCK
+ )
+ add_duds(3)
+ ..()
+
+/datum/wires/stasis_cage/interactable(mob/user)
+ SHOULD_CALL_PARENT(FALSE)
+ var/obj/machinery/stasis_cage/stasis_cage = holder
+ if (stasis_cage.panel_open)
+ return TRUE
+ return FALSE
+
+
+/datum/wires/stasis_cage/get_status()
+ var/obj/machinery/stasis_cage/stasis_cage = holder
+ . = ..()
+ if(!stasis_cage.use_power)
+ . += "The panel is unpowered."
+ else
+ . += "The panel is powered."
+ . += "The biometric safety sensors are [(WIRE_SAFETY in cut_wires) ? "connected" : "disconnected"]."
+ . += "The cage's emergency auto-release mechanism is [(WIRE_RELEASE in cut_wires) ? "disabled" : "enabled"]."
+ . += "The cage lid motors are [(WIRE_LOCK in cut_wires) ? "overriden" : "nominal"]."
+
+
+/datum/wires/stasis_cage/on_cut(wire, mend, source)
+ var/obj/machinery/stasis_cage/stasis_cage = holder
+ switch (wire)
+ if (WIRE_SAFETY)
+ stasis_cage.safety = !stasis_cage.safety
+ if (WIRE_RELEASE)
+ if (stasis_cage.contained && !mend)
+ stasis_cage.release()
+ holder.update_icon()
+ if (WIRE_LOCK)
+ if (!mend)
+ playsound(stasis_cage.loc, 'sound/machines/BoltsDown.ogg', 60)
+ holder.visible_message(SPAN_WARNING("The cage's lid bolts down destructively, denting itself!"), SPAN_NOTICE("You notice the cage lid override flag blink hastily."))
+ stasis_cage.broken = TRUE
+ holder.update_icon()
+
+
+/datum/wires/stasis_cage/on_pulse(wire)
+ var/obj/machinery/stasis_cage/stasis_cage = holder
+ switch (wire)
+ if (WIRE_SAFETY)
+ if (stasis_cage.contained)
+ if (prob(20))
+ holder.visible_message(SPAN_WARNING("The cage hastily flicks open its lid!"), SPAN_NOTICE("You notice the biometric sensor flag blink fervently."))
+ stasis_cage.release()
+
diff --git a/code/game/objects/items/safari_net.dm b/code/game/objects/items/safari_net.dm
new file mode 100644
index 00000000000..c25c3d072e0
--- /dev/null
+++ b/code/game/objects/items/safari_net.dm
@@ -0,0 +1,78 @@
+/*
+ Safari Net
+*/
+/obj/item/energy_net/safari
+ name = "safari net"
+ desc = "A low power energized net meant to subdue animals."
+ icon_state = "safarinet"
+ net_type = /obj/effect/energy_net/safari
+
+/obj/effect/energy_net/safari
+ name = "safari net"
+ desc = "A low power energized net meant to subdue animals."
+ icon_state = "safari_net"
+
+ health = 5
+
+/obj/item/net_container
+ name = "safari net container"
+ desc = "A cylindrical device designed to stabilise safari energy nets for transport."
+ icon = 'icons/obj/item/net_container.dmi'
+ icon_state = "net_tube"
+ item_state = "net_tube"
+ /**
+ * How many nets we have "stored"
+ */
+ var/nets = 0
+
+/obj/item/net_container/attackby(obj/item/attacking_item, mob/user, params)
+ . = ..()
+ if(istype(attacking_item, /obj/item/energy_net/safari))
+ if(nets < 3)
+ nets++
+ to_chat(user, SPAN_NOTICE("\The [src] hums as it stores the energy of \the [attacking_item] inside."))
+ qdel(attacking_item)
+ update_icon()
+ return
+ to_chat(user, SPAN_NOTICE("\The [src] is too full to store \the [attacking_item]!"))
+ return
+
+/obj/item/net_container/attack_hand(mob/user)
+ if(nets)
+ nets--
+ to_chat(user, SPAN_NOTICE("\The [src] hums as it forms a new net in your hand."))
+ var/obj/item/energy_net/safari/net = new /obj/item/energy_net/safari(src)
+ user.put_in_active_hand(net)
+ update_icon()
+ return
+ return ..()
+
+/obj/item/net_container/update_icon()
+ . = ..()
+ ClearOverlays()
+ if(nets)
+ var/image/over = overlay_image(icon, "[icon_state]_[nets]")
+ AddOverlays(over)
+
+/obj/structure/net_dispenser
+ name = "safari net dispenser"
+ desc = "A wall mounted dispenser capable to producing low power energy nets, suitable for trapping fauna."
+ icon = 'icons/obj/item/net_container.dmi'
+ icon_state = "net_dispenser"
+ /**
+ * How many nets we can dispense.
+ * This should be enough, as they're not really meant to be limitted on this end
+ */
+ var/nets = 30
+
+/obj/structure/net_dispenser/attack_hand(mob/living/user)
+ if(nets)
+ nets--
+ to_chat(user, SPAN_NOTICE("\The [src] hums as it forms a new net in your hand."))
+ var/obj/item/energy_net/safari/net = new /obj/item/energy_net/safari(src)
+ user.put_in_active_hand(net)
+ return
+ return ..()
+
+
+
diff --git a/code/game/objects/items/science_sampler.dm b/code/game/objects/items/science_sampler.dm
new file mode 100644
index 00000000000..0c16e568006
--- /dev/null
+++ b/code/game/objects/items/science_sampler.dm
@@ -0,0 +1,369 @@
+/*
+ Sampling
+*/
+/obj/item/sampler
+ name = "science sampler"
+ desc = "A multi-purpose sampling device designed by Zeng-Hu Pharmaceuticals for gathering samples during their research expeditions."
+ desc_extended = "The \"Chimera\" model field sampling device was developed by Zeng-Hu Pharmaceuticals in the 2450s to make allow their \
+ researchers to take a variety of samples, ranging from plant and animal tissue to soil or water samples, compacted into \
+ a single handheld device. It became widely popular even among rival corporations and independant research groups, with \
+ its versatility and compact nature making it the tool-of-choice for almost every modern scientific expedition."
+ desc_info = "It has attachments allowing for sampling of biological tissue, surface soil and water sources. Must be loaded with a vial. Alt-click to cycle between attachments."
+ icon = 'icons/obj/item/sampling.dmi'
+ icon_state = "sampler"
+ item_state = "sampler"
+ contained_sprite = TRUE
+ w_class = ITEMSIZE_SMALL
+ /**
+ * Which attachment we are using
+ */
+ var/attachment = SAMPLE_BIO
+ /**
+ * The vial we load our sample into
+ */
+ var/obj/item/reagent_containers/glass/beaker/vial/vial
+
+/obj/item/sampler/Initialize(mapload, ...)
+ . = ..()
+ update_icon()
+
+/obj/item/sampler/attackby(obj/item/attacking_item, mob/user, params)
+ if(istype(attacking_item, /obj/item/reagent_containers/glass/beaker/vial))
+ if(!vial)
+ to_chat(user, SPAN_NOTICE("You insert \the [attacking_item] into \the [src]."))
+ vial = attacking_item
+ if(ishuman(user))
+ var/mob/living/carbon/human/H = user
+ H.drop_from_inventory(vial)
+ vial.forceMove(src)
+ update_icon()
+ return TRUE
+ to_chat(user, SPAN_NOTICE("\The [src] already has a vial inserted."))
+ return ..()
+
+/obj/item/sampler/attack_hand(mob/user)
+ if(vial)
+ to_chat(user, SPAN_NOTICE("You remove \the [vial] from \the [src]."))
+ user.put_in_active_hand(vial)
+ vial = null
+ update_icon()
+ return TRUE
+ return ..()
+
+/obj/item/sampler/AltClick(mob/user)
+ attachment = next_in_list(attachment, ALL_SAMPLE_ATTACHMENTS)
+ to_chat(user, SPAN_NOTICE("You switch \the [src] to its [attachment] attachment."))
+ update_icon()
+
+/obj/item/sampler/update_icon()
+ . = ..()
+ ClearOverlays()
+ if(vial)
+ icon_state = "[initial(icon_state)]_loaded"
+ if(vial.reagents.total_volume)
+ AddOverlays(overlay_image(icon, "sampler_full"))
+ else
+ icon_state = initial(icon_state)
+ var/image/I
+ switch(attachment)
+ if(SAMPLE_BIO)
+ I = overlay_image(icon, "bio_attachment")
+ if(SAMPLE_SOIL)
+ I = overlay_image(icon, "soil_attachment")
+ if(SAMPLE_WATER)
+ I = overlay_image(icon, "water_attachment")
+ if(I)
+ AddOverlays(I)
+
+/obj/item/sampler/attack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!vial || vial.reagents.total_volume)
+ return ..()
+ else
+ return FALSE
+
+/obj/item/sampler/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ if(!vial || vial.reagents.total_volume)
+ return ..()
+ if(try_sample(target, user))
+ to_chat(user, SPAN_NOTICE("\The [src]'s attachment whirrs as it samples \the [target]."))
+ else
+ to_chat(user, SPAN_NOTICE("\The [src]'s attachment buzzes as it fails to sample \the [target]. Maybe try another attachment?"))
+
+/**
+ * Tries to sample the target using our current attachment, loading a sample into our vial if successful.
+ */
+/obj/item/sampler/proc/try_sample(atom/target, mob/user)
+ switch(attachment)
+ if(SAMPLE_BIO)
+ if(istype(target, /mob/living/simple_animal))
+ var/mob/living/simple_animal/fauna = target
+ if(!fauna.sample_data)
+ return FALSE
+ vial.reagents.add_reagent(/singleton/reagent/biological_tissue, 10, fauna.sample_data)
+ return TRUE
+ if(istype(target, /obj/structure/flora))
+ var/obj/structure/flora/flora = target
+ if(flora.is_rock)
+ return FALSE
+ vial.reagents.add_reagent(/singleton/reagent/biological_tissue, 10, flora.sample_data)
+ return TRUE
+ if(SAMPLE_SOIL)
+ if(istype(target, /obj/structure/flora))
+ var/obj/structure/flora/rock = target
+ if(!rock.is_rock)
+ return FALSE
+ vial.reagents.add_reagent(/singleton/reagent/soil, 10, rock.sample_data)
+ return TRUE
+ if(istype(target, /turf/simulated/floor/exoplanet))
+ var/turf/simulated/floor/exoplanet/ground = target
+ var/obj/effect/overmap/visitable/sector/planet = GLOB.map_sectors["[target.z]"]
+ if(istype(ground, /turf/simulated/floor/exoplanet/water) || !ground.has_resources || !istype(planet))
+ return FALSE
+ var/list/possible_data = planet.soil_data.Copy()
+ var/list/data = list()
+ for(var/_ in 1 to rand(2,4))
+ var/d = pick(possible_data)
+ possible_data -= d
+ data += d
+ vial.reagents.add_reagent(/singleton/reagent/soil, 10, data)
+ return TRUE
+ if(SAMPLE_WATER)
+ if(istype(target, /turf/simulated/floor/exoplanet/water))
+ var/obj/effect/overmap/visitable/sector/planet = GLOB.map_sectors["[target.z]"]
+ if(!istype(planet))
+ return FALSE
+ var/list/possible_data = planet.water_data.Copy()
+ var/list/data = list()
+ for(var/_ in 1 to rand(2,4))
+ var/d = pick(possible_data)
+ possible_data -= d
+ data += d
+ vial.reagents.add_reagent(/singleton/reagent/water, 10, data)
+ return TRUE
+
+/obj/machinery/microscope/science
+ name = "compound microscope"
+ desc = "A less-than-state-of-the-art means of examining tiny samples. At least it has a printer for recording its results."
+ icon = 'icons/obj/item/sampling.dmi'
+ density = FALSE
+ allowed_analysis = MICROSCOPE_CELLS
+
+/obj/machinery/centrifuge
+ name = "centrifuge"
+ desc = "A device capable of spinning samples at 1000 RPM, to separate their components for analysis. It has a printer attached to record its results."
+ icon = 'icons/obj/item/sampling.dmi'
+ icon_state = "centrifuge_0"
+ anchored = TRUE
+ density = FALSE
+
+ /**
+ * The sample vials loaded in this centrifuge
+ */
+ var/list/obj/item/reagent_containers/glass/beaker/vial/samples = list()
+ /**
+ * The report number of our last report
+ */
+ var/report_num = 0
+
+/obj/machinery/centrifuge/Initialize(mapload, d, populate_components, is_internal)
+ . = ..()
+ update_icon()
+
+/obj/machinery/centrifuge/attackby(obj/item/attacking_item, mob/user)
+
+ if(LAZYLEN(samples) >= 4)
+ to_chat(user, SPAN_WARNING("\The [src] is already full with samples."))
+ return
+
+ if(istype(attacking_item, /obj/item/reagent_containers/glass/beaker/vial))
+ to_chat(user, SPAN_NOTICE("You insert \the [attacking_item] into \the [src]."))
+ user.unEquip(attacking_item)
+ attacking_item.forceMove(src)
+ samples += attacking_item
+ update_icon()
+ return
+
+/obj/machinery/centrifuge/attack_hand(mob/user)
+
+ if(!LAZYLEN(samples))
+ to_chat(user, SPAN_WARNING("\The [src] has no samples to examine."))
+ return
+
+ if(LAZYLEN(samples) == 1 || LAZYLEN(samples) == 3) //Odd number, unbalanced
+ to_chat(user, SPAN_WARNING("\The [src] is unbalanced. Try adding blank samples as counter-weights."))
+ return
+
+ to_chat(user, SPAN_NOTICE("\The [src] begins to spin, separating the contents of the samples."))
+
+ icon_state = "[initial(icon_state)]_working"
+ addtimer(CALLBACK(src, PROC_REF(process_samples)), 30 SECONDS)
+
+/obj/machinery/centrifuge/proc/process_samples()
+ update_icon()
+ visible_message(SPAN_NOTICE("\The [src] prints out a report of its findings."))
+ var/obj/item/paper/report = new()
+
+ report_num++
+ var/pname = "Centrifuge report #[report_num]"
+ var/info = "Centrifugal analysis report #[report_num]
"
+ var/sample = 1
+ for(var/obj/item/reagent_containers/glass/beaker/vial/V in samples)
+ var/list/soil = REAGENT_DATA(V.reagents, /singleton/reagent/soil)
+ if(soil)
+ info += "Separation of sample [sample] has revealed the following characteristics"
+ for(var/characteristic in soil)
+ info += "- [characteristic]
"
+ info += "
"
+ else
+ info += "No soil or dust found in sample [sample]."
+ sample++
+
+ report.set_content_unsafe(pname, info)
+
+ if(report)
+ report.update_icon()
+ print(report)
+
+/**
+ * Removes the last sample from the centrifuge
+ */
+/obj/machinery/centrifuge/proc/remove_sample(mob/living/remover)
+ if(!istype(remover) || remover.incapacitated() || !Adjacent(remover))
+ return
+ if(!LAZYLEN(samples))
+ to_chat(remover, SPAN_WARNING("\The [src] does not have a sample in it."))
+ return
+ var/obj/item/reagent_containers/glass/beaker/vial/sample = samples[LAZYLEN(samples)]
+ to_chat(remover, SPAN_NOTICE("You remove \the [sample] from \the [src]."))
+ sample.forceMove(get_turf(src))
+ remover.put_in_hands(sample)
+ samples -= sample
+ update_icon()
+
+/obj/machinery/centrifuge/AltClick()
+ remove_sample(usr)
+
+/obj/machinery/centrifuge/MouseDrop(var/atom/other)
+ if(usr == other)
+ remove_sample(usr)
+ else
+ return ..()
+
+/obj/machinery/centrifuge/update_icon()
+ . = ..()
+ icon_state = "centrifuge_[LAZYLEN(samples)]"
+
+/obj/machinery/spectrophotometer
+ name = "spectrophotometer"
+ desc = "A device to analyse liquid samples by shining various frequencies of light through and measuring absorption. It has a printer attached to record its results."
+ icon = 'icons/obj/item/sampling.dmi'
+ icon_state = "spectrophotometer_closed_empty"
+ anchored = TRUE
+ density = TRUE
+
+ /**
+ * The sample vial to analyse
+ */
+ var/obj/item/reagent_containers/glass/beaker/vial/sample
+ /**
+ * The report number of our last report
+ */
+ var/report_num = 0
+ /**
+ * Whether this spectrophotometer has been calibrated already.
+ * Must be done with pure water
+ */
+ var/zeroed = FALSE
+ /**
+ * Whether the hatch is open, allowing samples to be added/removed
+ */
+ var/open = FALSE
+
+/obj/machinery/spectrophotometer/Initialize(mapload, d, populate_components, is_internal)
+ . = ..()
+ update_icon()
+
+/obj/machinery/spectrophotometer/attackby(obj/item/attacking_item, mob/user)
+ if(!open)
+ to_chat(user, SPAN_WARNING("\The [src] is closed."))
+ return
+
+ if(sample)
+ to_chat(user, SPAN_WARNING("\The [src] already has a sample."))
+ return
+
+ if(istype(attacking_item, /obj/item/reagent_containers/glass/beaker/vial))
+ to_chat(user, SPAN_NOTICE("You insert \the [attacking_item] into \the [src]."))
+ user.unEquip(attacking_item)
+ attacking_item.forceMove(src)
+ sample = attacking_item
+ update_icon()
+ return
+
+/obj/machinery/spectrophotometer/attack_hand(mob/user)
+ if(open)
+ if(!sample)
+ to_chat(user, SPAN_WARNING("\The [src] has no samples to remove."))
+ return
+ to_chat(user, SPAN_NOTICE("You remove \the [sample] from \the [src]."))
+ sample.forceMove(get_turf(src))
+ user.put_in_hands(sample)
+ sample = null
+ update_icon()
+ return
+
+ if(!sample)
+ to_chat(user, SPAN_WARNING("\The [src] has no sample to examine."))
+ return
+
+ if(!REAGENT_VOLUME(sample.reagents, /singleton/reagent/water))
+ to_chat(user, SPAN_WARNING("\The [src] can only examine water samples."))
+ return
+
+ if(!zeroed && REAGENT_DATA(sample.reagents, /singleton/reagent/water))
+ to_chat(user, SPAN_WARNING("\The [src] has not yet been calibrated. Try zeroing it with a blank sample."))
+ return
+
+ to_chat(user, SPAN_NOTICE("\The [src] begins to glow, shining light through its sample."))
+
+ icon_state = "[initial(icon_state)]_working"
+ addtimer(CALLBACK(src, PROC_REF(process_sample)), 15 SECONDS)
+
+/**
+ * Prints a report of the analysis after finishing, or zeroes successfully
+ */
+/obj/machinery/spectrophotometer/proc/process_sample()
+ update_icon()
+ if(!zeroed)
+ zeroed = TRUE
+ visible_message(SPAN_NOTICE("\The [src] beeps, \"Calibration complete!\""))
+ return
+
+ visible_message(SPAN_NOTICE("\The [src] prints out a report of its findings."))
+ var/obj/item/paper/report = new()
+
+ report_num++
+ var/pname = "Spectrophotometer report #[report_num]"
+ var/info = "Spectrophotometry anaylsis report #[report_num]
"
+ var/list/water = REAGENT_DATA(sample.reagents, /singleton/reagent/water)
+ if(water)
+ info += "Absorption spectra of [src] have revealed the following electrolytes present"
+ for(var/characteristic in water)
+ info += "- [characteristic]
"
+ info += "
"
+ else
+ info += "Absorption spectra of [src] match those of pure water."
+
+ report.set_content_unsafe(pname, info)
+
+ if(report)
+ report.update_icon()
+ print(report)
+
+/obj/machinery/spectrophotometer/AltClick()
+ open = !open
+ update_icon()
+
+/obj/machinery/spectrophotometer/update_icon()
+ . = ..()
+ icon_state = "spectrophotometer_[open ? "open" : "closed"]_[sample ? "full" : "empty"]"
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
index b3e06b84a55..723df1ad9a2 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/hydroponics.dm
@@ -48,3 +48,4 @@
new /obj/item/watertank(src)
new /obj/item/storage/belt/hydro(src)
new /obj/item/clothing/gloves/botanic_leather(src)
+ new /obj/item/sampler(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
index 6d2cde7661b..e4a29857f74 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/scientist.dm
@@ -12,6 +12,7 @@
new /obj/item/tank/air(src)
new /obj/item/clothing/mask/gas(src)
new /obj/item/taperoll/science(src)
+ new /obj/item/sampler(src)
/obj/structure/closet/secure_closet/RD
name = "research director's locker"
@@ -47,6 +48,7 @@
new /obj/item/storage/box/psireceiver(src)
new /obj/item/device/megaphone/sci(src)
new /obj/item/device/taperecorder(src)
+ new /obj/item/sampler(src)
/// Used for when we want to populate the contents of this locker ourself. Good for away sites
/obj/structure/closet/secure_closet/RD/empty
diff --git a/code/modules/detectivework/microscope/microscope.dm b/code/modules/detectivework/microscope/microscope.dm
index 73c0b730fb9..e9f3097e5a0 100644
--- a/code/modules/detectivework/microscope/microscope.dm
+++ b/code/modules/detectivework/microscope/microscope.dm
@@ -9,10 +9,30 @@
anchored = 1
density = 1
+ /**
+ * The sample being analysed
+ */
var/obj/item/sample = null
+ /**
+ * The report number of the last fiber analysis
+ */
var/report_fiber_num = 0
+ /**
+ * The report number of the last fingerprint analysis
+ */
var/report_print_num = 0
+ /**
+ * The report number of the last gunshot residue analysis
+ */
var/report_gsr_num = 0
+ /**
+ * The report number of the last cellular analysis
+ */
+ var/report_cell_num = 0
+ /**
+ * Which types of sample can we analyse
+ */
+ var/allowed_analysis = MICROSCOPE_ALL
/obj/machinery/microscope/attackby(obj/item/attacking_item, mob/user)
@@ -34,6 +54,15 @@
to_chat(user, SPAN_WARNING("The microscope has no sample to examine."))
return
+ if(istype(sample, /obj/item/forensics/slide))
+ var/obj/item/forensics/slide/slide = sample
+ if((slide.has_swab && !(allowed_analysis & MICROSCOPE_GSR)) || (slide.has_sample && !(allowed_analysis & MICROSCOPE_FIBER)) || (slide.reagents.total_volume && !(allowed_analysis & MICROSCOPE_CELLS)))
+ to_chat(user, SPAN_NOTICE("The magnification of \the [src] is too low to analyse this."))
+ return
+ else if(istype(sample, /obj/item/sample/print) && !(allowed_analysis & MICROSCOPE_PRINTS))
+ to_chat(user, SPAN_NOTICE("The magnification of \the [src] is too low to analyse this."))
+ return
+
to_chat(user, SPAN_NOTICE("The microscope whirrs as you examine \the [sample]."))
if(!do_after(user, 25) || !sample)
@@ -75,6 +104,18 @@
info += ""
else
info += "No fibers found."
+ else if(slide.reagents.total_volume)
+ report_cell_num++
+ pname = "Cell report #[report_cell_num]"
+ var/list/tissue = REAGENT_DATA(slide.reagents, /singleton/reagent/biological_tissue)
+ if(tissue)
+ info = "Cell anaylsis report #[report_cell_num]
"
+ info += "Optical analysis has revealed unique cellular characteristics"
+ for(var/characteristic in tissue)
+ info += "- [characteristic]
"
+ info += "
"
+ else
+ info += "No cells found."
else
pname = "Empty slide report #[report_fiber_num]"
info = "Evidence suggests that there's nothing in this slide."
diff --git a/code/modules/detectivework/microscope/slides.dm b/code/modules/detectivework/microscope/slides.dm
index d9f63c1bfae..d94712ac969 100644
--- a/code/modules/detectivework/microscope/slides.dm
+++ b/code/modules/detectivework/microscope/slides.dm
@@ -6,14 +6,20 @@
var/obj/item/forensics/swab/has_swab
var/obj/item/sample/fibers/has_sample
+/obj/item/forensics/slide/Initialize(mapload, ...)
+ . = ..()
+ create_reagents(5)
+
/obj/item/forensics/slide/attackby(obj/item/attacking_item, mob/user)
- if(has_swab || has_sample)
+ if(has_swab || has_sample || reagents.total_volume)
to_chat(user, SPAN_WARNING("There is already a sample in the slide."))
return
if(istype (attacking_item, /obj/item/forensics/swab))
has_swab = attacking_item
else if(istype(attacking_item, /obj/item/sample/fibers))
has_sample = attacking_item
+ else if(istype(attacking_item, /obj/item/reagent_containers) && REAGENT_VOLUME(attacking_item.reagents, /singleton/reagent/biological_tissue))
+ attacking_item.reagents.trans_type_to(reagents, /singleton/reagent/biological_tissue, 5)
else
to_chat(user, SPAN_WARNING("You don't think this will fit."))
return
@@ -34,6 +40,12 @@
update_icon()
return
+/obj/item/forensics/slide/afterattack(atom/target, mob/user, proximity_flag, click_parameters)
+ . = ..()
+ if(istype(target, /obj/item/reagent_containers) && reagents.total_volume)
+ reagents.trans_to_holder(target.reagents, 5)
+ to_chat(user, SPAN_NOTICE("You remove the sample from \the [src]."))
+
/obj/item/forensics/slide/update_icon()
if(!has_swab && !has_sample)
icon_state = "slide"
@@ -41,3 +53,5 @@
icon_state = "slideswab"
else if(has_sample)
icon_state = "slidefiber"
+ else if(reagents.total_volume)
+ icon_state = "slidecells"
diff --git a/code/modules/maps/planet_types/asteroid.dm b/code/modules/maps/planet_types/asteroid.dm
index e2ab8a72859..3fde8bfb0e5 100644
--- a/code/modules/maps/planet_types/asteroid.dm
+++ b/code/modules/maps/planet_types/asteroid.dm
@@ -15,6 +15,8 @@
unit_test_groups = list(2)
+ soil_data = list("Rich aluminium oxide layer", "Rich iron oxide layer", "Rich silver dust layer", "Rich gold dust layer", "Low density silicon dioxide layer", "Large rock particle layer")
+
/obj/effect/overmap/visitable/sector/exoplanet/barren/asteroid/update_icon()
icon_state = "asteroid[rand(1,3)]"
diff --git a/code/modules/maps/planet_types/barren.dm b/code/modules/maps/planet_types/barren.dm
index 15f97ecbde5..4b3e663428b 100644
--- a/code/modules/maps/planet_types/barren.dm
+++ b/code/modules/maps/planet_types/barren.dm
@@ -13,6 +13,8 @@
ruin_allowed_tags = RUIN_AIRLESS|RUIN_LOWPOP|RUIN_MINING|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
unit_test_groups = list(1)
+ soil_data = list("Rich iron oxide layer", "Low density silicon dioxide layer", "Large rock particle layer", "Trace organic particle layer", "Trace ice crytal layer")
+
/obj/effect/overmap/visitable/sector/exoplanet/barren/generate_habitability()
return HABITABILITY_BAD
diff --git a/code/modules/maps/planet_types/crystal.dm b/code/modules/maps/planet_types/crystal.dm
index 2f4d8debd75..dcd8d48e3e0 100644
--- a/code/modules/maps/planet_types/crystal.dm
+++ b/code/modules/maps/planet_types/crystal.dm
@@ -14,6 +14,7 @@
ruin_allowed_tags = RUIN_AIRLESS|RUIN_LOWPOP|RUIN_MINING|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
unit_test_groups = list(3)
+ soil_data = list("Porous crystal layer", "High density silicon carbide layer", "Layer of fused refractive crystals", "Degrading volatile layer", "Silica aerogel layer", "Crystal mush layer")
/obj/effect/overmap/visitable/sector/exoplanet/crystal/generate_habitability()
return HABITABILITY_BAD
diff --git a/code/modules/maps/planet_types/desert.dm b/code/modules/maps/planet_types/desert.dm
index c93c37db03f..09b1ffcc398 100644
--- a/code/modules/maps/planet_types/desert.dm
+++ b/code/modules/maps/planet_types/desert.dm
@@ -16,6 +16,8 @@
water_color = null
ruin_planet_type = PLANET_DESERT
ruin_allowed_tags = RUIN_LOWPOP|RUIN_MINING|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
+ soil_data = list("Low density silicon dioxide layer", "Trace gold dust layer", "Trace silver dust layer", "Large rock particle layer", "Trace organic particle layer")
+ water_data = list("Sodium ions present", "Calcium ions present", "Sulfate ions present", "Magnesium ions present", "Copper ions present")
unit_test_groups = list(1)
diff --git a/code/modules/maps/planet_types/grass.dm b/code/modules/maps/planet_types/grass.dm
index 7324a4373e3..6cb8eb559c7 100644
--- a/code/modules/maps/planet_types/grass.dm
+++ b/code/modules/maps/planet_types/grass.dm
@@ -14,6 +14,8 @@
possible_themes = list(/datum/exoplanet_theme/grass)
ruin_planet_type = PLANET_GRASS
ruin_allowed_tags = RUIN_LOWPOP|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
+ soil_data = list("Low density organic matter layer", "Rich microbiome layer", "Moderate water layer", "Large rock particle layer", "Iron oxide layer")
+ water_data = list("Sodium ions present", "Calcium ions present", "Sulfate ions present", "Magnesium ions present", "Copper ions present", "Nitrate ions present", "Potassium ions present", "Phorsporous ions present")
unit_test_groups = list(2)
diff --git a/code/modules/maps/planet_types/lava.dm b/code/modules/maps/planet_types/lava.dm
index 27f32acc6f3..f45c7275b8b 100644
--- a/code/modules/maps/planet_types/lava.dm
+++ b/code/modules/maps/planet_types/lava.dm
@@ -15,6 +15,7 @@
water_color = null
ruin_planet_type = PLANET_LAVA
ruin_allowed_tags = RUIN_AIRLESS|RUIN_LOWPOP|RUIN_MINING|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
+ soil_data = list("Low density silicon dioxide layer", "Iron pyroxene layer", "Magnesium olivine layer", "Large rock particle layer", "Aluminium biotite layer")
unit_test_groups = list(1)
diff --git a/code/modules/maps/planet_types/snow.dm b/code/modules/maps/planet_types/snow.dm
index aeaade9bd08..92d3550ae3a 100644
--- a/code/modules/maps/planet_types/snow.dm
+++ b/code/modules/maps/planet_types/snow.dm
@@ -17,6 +17,8 @@
water_color = "#b5dfeb"
ruin_planet_type = PLANET_SNOW
ruin_allowed_tags = RUIN_LOWPOP|RUIN_MINING|RUIN_SCIENCE|RUIN_HOSTILE|RUIN_WRECK|RUIN_NATURAL
+ soil_data = list("Low density silicon dioxide layer", "Trace iron oxide layer", "Trace aluminium oxide layer", "Large rock particle layer", "Ice crystal layer", "Snow partcile layer")
+ water_data = list("Sodium ions present", "Calcium ions present", "Nitrate ions present", "Magnesium ions present", "Copper ions present")
unit_test_groups = list(2)
diff --git a/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm b/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm
index c7ab1b7efce..584ecf48703 100644
--- a/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm
+++ b/code/modules/mob/living/simple_animal/constructs/constructs/cult_construct.dm
@@ -47,6 +47,8 @@
simple_default_language = LANGUAGE_CULT
+ sample_data = null
+
/mob/living/simple_animal/construct/cultify()
return
diff --git a/code/modules/mob/living/simple_animal/friendly/carp.dm b/code/modules/mob/living/simple_animal/friendly/carp.dm
index 8d819db4643..4f43947fb82 100644
--- a/code/modules/mob/living/simple_animal/friendly/carp.dm
+++ b/code/modules/mob/living/simple_animal/friendly/carp.dm
@@ -49,6 +49,7 @@
brush = /obj/item/reagent_containers/glass/rag
possession_candidate = TRUE
+ sample_data = list("Cellular structure shows adaptation for a vacuum", "Genetic biomarkers identified linked with passiveness")
/mob/living/simple_animal/carp/update_icon()
..()
diff --git a/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm b/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm
index 13d6f2ebe3d..e16d2c5b11c 100644
--- a/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm
+++ b/code/modules/mob/living/simple_animal/friendly/cosmozoan.dm
@@ -32,6 +32,7 @@
flying = TRUE
see_invisible = SEE_INVISIBLE_NOLIGHTING
+ sample_data = list("Cellular biochemistry include bioluminescent reactions", "Tissue sample contains micro-gas release structures")
/mob/living/simple_animal/cosmozoan/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/friendly/moghes.dm b/code/modules/mob/living/simple_animal/friendly/moghes.dm
index a59a51d76fa..997f103c56d 100644
--- a/code/modules/mob/living/simple_animal/friendly/moghes.dm
+++ b/code/modules/mob/living/simple_animal/friendly/moghes.dm
@@ -35,6 +35,7 @@
bullet = ARMOR_BALLISTIC_MINOR,
bomb = ARMOR_BOMB_MINOR
)
+ sample_data = list("Cellular biochemistry shows high metabolic capacity", "Tissue sample contains high muscle content", "Genetic biomarkers identified linked with passiveness and domestication")
/mob/living/simple_animal/threshbeast/saddle
desc = "Large herbivorous reptiles native to Moghes, the azkrazal or 'threshbeast' is commonly used as a mount, beast of burden, or convenient food source by Unathi. They are highly valued for their speed and strength, capable of running at 30-42 miles per hour at top speed. This one has been fitted with a saddle."
@@ -84,6 +85,7 @@
laser = ARMOR_LASER_MINOR,
bomb = ARMOR_BOMB_MINOR
)
+ sample_data = list("Cellular biochemistry shows high metabolic capacity", "Tissue sample contains high muscle content", "Genetic biomarkers identified linked with domestication", "Intracellular keratin synthesis present")
/mob/living/simple_animal/hostile/retaliate/hegeranzi/saddle
name = "warmount"
@@ -125,6 +127,7 @@
butchering_products = list(/obj/item/stack/material/animalhide/lizard = 4)
meat_type = /obj/item/reagent_containers/food/snacks/meat/moghes
meat_amount = 16
+ sample_data = list("Cellular biochemistry geared towards the use of plant-based nutrition", "Genetic biomarkers identified linked with high reproductive rates", "Intracellular keratin synthesis present")
/mob/living/simple_animal/miervesh
name = "miervesh"
@@ -152,6 +155,7 @@
butchering_products = list(/obj/item/stack/material/animalhide = 1)
meat_type = /obj/item/reagent_containers/food/snacks/meat/moghes
meat_amount = 1
+ sample_data = list("Cellular biochemistry shows signs of rapid respiration", "Genetic biomarkers identified linked with passiveness and domestication", "Extracellular gas detection present")
var/chosen_icon
/mob/living/simple_animal/miervesh/Initialize()
diff --git a/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm b/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm
index 5373b0c5c98..538dda74c48 100644
--- a/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm
+++ b/code/modules/mob/living/simple_animal/hostile/commanded/ives.dm
@@ -54,6 +54,7 @@
attack_emote = "blares a tiny siren"
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/commanded/baby_harvester/get_bullet_impact_effect_type(var/def_zone)
return BULLET_IMPACT_METAL
diff --git a/code/modules/mob/living/simple_animal/hostile/faithless.dm b/code/modules/mob/living/simple_animal/hostile/faithless.dm
index 93292f859f4..8dd2bb94fdd 100644
--- a/code/modules/mob/living/simple_animal/hostile/faithless.dm
+++ b/code/modules/mob/living/simple_animal/hostile/faithless.dm
@@ -38,6 +38,7 @@
flying = TRUE
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/faithless/Allow_Spacemove(var/check_drift = 0)
return 1
diff --git a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
index aa4fe0d0b99..944d071cb71 100644
--- a/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
+++ b/code/modules/mob/living/simple_animal/hostile/giant_spider.dm
@@ -50,6 +50,7 @@
attack_emote = "skitters toward"
attack_sound = 'sound/weapons/bite.ogg'
emote_sounds = list('sound/effects/creatures/spider_critter.ogg')
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Tissue sample contains high muscle content")
//nursemaids - these create webs and eggs
/mob/living/simple_animal/hostile/giant_spider/nurse
@@ -68,6 +69,7 @@
var/atom/cocoon_target
poison_type = /singleton/reagent/soporific
var/fed = 0
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular structures indicative of high offspring production")
/mob/living/simple_animal/hostile/giant_spider/nurse/servant
name = "greimorian servant"
@@ -91,6 +93,7 @@
max_co2 = 0
max_tox = 0
var/playable = TRUE
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular structures indicative of high offspring production", "Tissue sample contains high neural cell content")
/mob/living/simple_animal/hostile/giant_spider/nurse/servant/Life()
..()
@@ -111,6 +114,7 @@
armor_penetration = 15
poison_per_bite = 5
move_to_delay = 4
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular biochemistry shows high metabolic capacity")
smart_melee = TRUE
/mob/living/simple_animal/hostile/giant_spider/emp
@@ -127,6 +131,7 @@
poison_type = /singleton/reagent/perconol // mildly beneficial for organics
poison_per_bite = 2
move_to_delay = 5
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Cellular biochemistry geared towards creating strong electrical potential differences")
smart_melee = TRUE
/mob/living/simple_animal/hostile/giant_spider/bombardier
@@ -145,6 +150,7 @@
poison_type = /singleton/reagent/capsaicin/condensed
poison_per_bite = 2
move_to_delay = 5
+ sample_data = list("Genetic markers identified as being linked with stem cell differentiaton", "Exocrinic caspaicin synthesis detected")
smart_melee = TRUE
/mob/living/simple_animal/hostile/giant_spider/bombardier/Shoot(var/target, var/start, var/mob/user, var/bullet = 0)
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm
index e56389e08e7..10b6e770f8d 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot.dm
@@ -41,6 +41,7 @@
speak_chance = 5
attack_emote = "focuses on"
psi_pingable = FALSE
+ sample_data = null
/**
* The hivebot beacon that we are liked to (and likely generated us)
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_beacon.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_beacon.dm
index 245e787425f..0551cae5cbe 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_beacon.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_beacon.dm
@@ -36,6 +36,7 @@
destroy_surroundings = 0
attack_emote = "focuses on"
psi_pingable = FALSE
+ sample_data = null
/**
* Number of total bots that are spawned before the beacon disappears completely
diff --git a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm
index aa7df822df7..78ce03e8212 100644
--- a/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm
+++ b/code/modules/mob/living/simple_animal/hostile/hivebots/hivebot_harvester.dm
@@ -43,6 +43,7 @@
mob_push_flags = 0
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/retaliate/hivebotharvester/Initialize(mapload,mob/living/simple_animal/hostile/hivebot/hivebotbeacon)
if(hivebotbeacon)
diff --git a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm
index d3278eba683..eda5b1b78d3 100644
--- a/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm
+++ b/code/modules/mob/living/simple_animal/hostile/icarus_drone.dm
@@ -59,6 +59,7 @@
see_invisible = SEE_INVISIBLE_NOLIGHTING
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/icarus_drone/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm b/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm
index da9193d875a..4e3c5a9d9e9 100644
--- a/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm
+++ b/code/modules/mob/living/simple_animal/hostile/ipc_zombie.dm
@@ -34,6 +34,7 @@
tameable = FALSE
psi_pingable = FALSE
stop_automated_movement_when_pulled = 0
+ sample_data = null
///Icon state for screen overlay
var/screen
diff --git a/code/modules/mob/living/simple_animal/hostile/krampus.dm b/code/modules/mob/living/simple_animal/hostile/krampus.dm
index 640c66702b5..a186b3072e3 100644
--- a/code/modules/mob/living/simple_animal/hostile/krampus.dm
+++ b/code/modules/mob/living/simple_animal/hostile/krampus.dm
@@ -43,6 +43,7 @@
var/is_punishing = FALSE
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/krampus/death(gibbed)
..()
diff --git a/code/modules/mob/living/simple_animal/hostile/mimic.dm b/code/modules/mob/living/simple_animal/hostile/mimic.dm
index 6a0fb43b218..1209c2f5436 100644
--- a/code/modules/mob/living/simple_animal/hostile/mimic.dm
+++ b/code/modules/mob/living/simple_animal/hostile/mimic.dm
@@ -38,6 +38,7 @@
move_to_delay = 8
tameable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/mimic/FindTarget()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/moghes.dm b/code/modules/mob/living/simple_animal/hostile/moghes.dm
index c5dbc691de7..150c8b74c8c 100644
--- a/code/modules/mob/living/simple_animal/hostile/moghes.dm
+++ b/code/modules/mob/living/simple_animal/hostile/moghes.dm
@@ -35,6 +35,7 @@
faction = "Moghes"
butchering_products = list(/obj/item/stack/material/animalhide/lizard = 20)
+ sample_data = list("Cellular biochemistry shows high metabolic capacity", "Tissue sample contains high muscle content", "Genetic biomarkers identified linked with aggressiveness", "Intracellular keratin synthesis present")
var/is_devouring = FALSE
/mob/living/simple_animal/hostile/biglizard/AttackingTarget()
@@ -163,6 +164,7 @@
meat_type = /obj/item/reagent_containers/food/snacks/meat/moghes
meat_amount = 10
faction = "Moghes"
+ sample_data = list("Cellular structures adapted to provide strong resonance protection", "Genetic biomarkers identified linked with agressiveness")
var/shriek_time = 0
/mob/living/simple_animal/hostile/shrieker/proc/shriek(turf/T, mob/living/M)
diff --git a/code/modules/mob/living/simple_animal/hostile/pra.dm b/code/modules/mob/living/simple_animal/hostile/pra.dm
index a490bf38b3d..6dfee3f92c0 100644
--- a/code/modules/mob/living/simple_animal/hostile/pra.dm
+++ b/code/modules/mob/living/simple_animal/hostile/pra.dm
@@ -63,6 +63,7 @@
simple_default_language = LANGUAGE_SIIK_MAAS
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/republicon/get_bullet_impact_effect_type(var/def_zone)
return BULLET_IMPACT_METAL
diff --git a/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm b/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm
index f45a750a76a..73865532b5c 100644
--- a/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm
+++ b/code/modules/mob/living/simple_animal/hostile/rogue_maint_drone.dm
@@ -23,6 +23,7 @@
var/image/eye_overlay
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/rogue_drone/Initialize()
. = ..()
diff --git a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm
index 2ad3c13d356..eb7f5a3e172 100644
--- a/code/modules/mob/living/simple_animal/hostile/space_fauna.dm
+++ b/code/modules/mob/living/simple_animal/hostile/space_fauna.dm
@@ -51,6 +51,7 @@
see_invisible = SEE_INVISIBLE_NOLIGHTING
smart_melee = FALSE
+ sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures")
/mob/living/simple_animal/hostile/carp/update_icon()
..()
@@ -132,6 +133,7 @@
melee_damage_lower = 20
melee_damage_upper = 25
+ sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures", "Tissue sample contains high muscle content")
/mob/living/simple_animal/hostile/carp/shark/reaver
name = "reaver"
@@ -204,6 +206,7 @@
melee_damage_lower = 15
melee_damage_upper = 15
+ sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures", "Intracellular synthesis of volatile compounds detected")
var/has_exploded = FALSE
@@ -294,3 +297,4 @@
flying = TRUE
see_invisible = SEE_INVISIBLE_NOLIGHTING
+ sample_data = list("Cellular structure shows adaptation for survival in vacuum", "Genetic biomarkers identified linked with agressiveness", "Tissue sample contains micro-gas release structures")
diff --git a/code/modules/mob/living/simple_animal/hostile/viscerator.dm b/code/modules/mob/living/simple_animal/hostile/viscerator.dm
index 60a9292fd46..2f278006e93 100644
--- a/code/modules/mob/living/simple_animal/hostile/viscerator.dm
+++ b/code/modules/mob/living/simple_animal/hostile/viscerator.dm
@@ -32,6 +32,7 @@
attack_emote = "buzzes at"
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/hostile/viscerator/death()
..(null,"is smashed into pieces!")
diff --git a/code/modules/mob/living/simple_animal/illusion.dm b/code/modules/mob/living/simple_animal/illusion.dm
index 97757a1c88d..49c5e697fdf 100644
--- a/code/modules/mob/living/simple_animal/illusion.dm
+++ b/code/modules/mob/living/simple_animal/illusion.dm
@@ -11,6 +11,7 @@
var/realistic = FALSE // If true, things like bullets and weapons will hit it, to be a bit more convincing from a distance.
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/illusion/update_icon() // We don't want the appearance changing AT ALL unless by copy_appearance().
return
diff --git a/code/modules/mob/living/simple_animal/shade.dm b/code/modules/mob/living/simple_animal/shade.dm
index 0cdb888e8b9..34cd34d5c9c 100644
--- a/code/modules/mob/living/simple_animal/shade.dm
+++ b/code/modules/mob/living/simple_animal/shade.dm
@@ -32,6 +32,7 @@
var/obj/item/residue = /obj/item/ectoplasm
psi_pingable = FALSE
+ sample_data = null
/mob/living/simple_animal/shade/cultify()
return
diff --git a/code/modules/mob/living/simple_animal/simple_animal.dm b/code/modules/mob/living/simple_animal/simple_animal.dm
index fe6bf9108b6..501f91c6875 100644
--- a/code/modules/mob/living/simple_animal/simple_animal.dm
+++ b/code/modules/mob/living/simple_animal/simple_animal.dm
@@ -18,6 +18,7 @@
var/damage_type = DAMAGE_BRUTE
var/show_stat_health = 1 //does the percentage health show in the stat panel for the mob
+ var/in_stasis = FALSE
var/icon_living = ""
var/icon_dead = ""
@@ -156,6 +157,11 @@
var/dead_on_map = FALSE //if true, kills the mob when it spawns (it is for mapping)
var/vehicle_version = null
+ /**
+ * List of fluff characteristics to be found on cellular analysis
+ */
+ var/list/sample_data = list("Cellular biochemistry indicitive of typical metabolc activity", "Tissue sample contains average muscle content", "No distinctive genetic markers identified")
+
/mob/living/simple_animal/proc/update_nutrition_stats()
nutrition_step = mob_size * 0.03 * metabolic_factor
bite_factor = mob_size * 0.3
@@ -1006,6 +1012,8 @@
/mob/living/simple_animal/get_speech_bubble_state_modifier()
return isSynthetic() ? "machine" : "rough"
+/mob/living/simple_animal/InStasis()
+ return in_stasis
#undef BLOOD_NONE
#undef BLOOD_LIGHT
diff --git a/code/modules/overmap/exoplanets/decor/_flora.dm b/code/modules/overmap/exoplanets/decor/_flora.dm
index ea96b9e631d..118122bc4aa 100644
--- a/code/modules/overmap/exoplanets/decor/_flora.dm
+++ b/code/modules/overmap/exoplanets/decor/_flora.dm
@@ -6,6 +6,14 @@
var/cutting
/// Whether or not you can shelter under this.
var/protects_against_weather = FALSE
+ /**
+ * List of fluff characteristics to be found on cellular/soil analysis
+ */
+ var/list/sample_data = list("Cellular structure typical of wild plantlife")
+ /**
+ * Whether this is actually a rock
+ */
+ var/is_rock = FALSE
/obj/structure/flora/proc/dig_up(mob/user)
user.visible_message(SPAN_NOTICE("\The [user] begins digging up \the [src]..."))
diff --git a/code/modules/overmap/exoplanets/decor/flora/_rock.dm b/code/modules/overmap/exoplanets/decor/flora/_rock.dm
index c028720596e..9a154ad8f62 100644
--- a/code/modules/overmap/exoplanets/decor/flora/_rock.dm
+++ b/code/modules/overmap/exoplanets/decor/flora/_rock.dm
@@ -3,6 +3,8 @@
desc = "A rock."
icon = 'icons/obj/flora/rocks_grey.dmi'
icon_state = "basalt"
+ is_rock = TRUE
+ sample_data = list("Sample contains igneous rock dust")
/obj/structure/flora/rock/random/Initialize(mapload)
. = ..()
@@ -22,6 +24,7 @@
desc = "A large formation made of ice."
icon = 'icons/obj/flora/ice_rocks.dmi'
icon_state = "rock_1"
+ sample_data = list("Sample contains ice crystals")
/obj/structure/flora/rock/ice/Initialize(mapload)
. = ..()
diff --git a/code/modules/overmap/exoplanets/decor/flora/_tree.dm b/code/modules/overmap/exoplanets/decor/flora/_tree.dm
index fe24e8f7855..da2d9666fea 100644
--- a/code/modules/overmap/exoplanets/decor/flora/_tree.dm
+++ b/code/modules/overmap/exoplanets/decor/flora/_tree.dm
@@ -5,6 +5,7 @@
layer = 9
pixel_x = -16
protects_against_weather = TRUE
+ sample_data = list("Cellular structure indicitive of large plantlife.")
var/max_chop_health = 180
var/chop_health = 180 //15 hits with steel hatchet, 5 with wielded fireaxe
var/fall_force = 60
diff --git a/code/modules/overmap/exoplanets/decor/flora/crystal.dm b/code/modules/overmap/exoplanets/decor/flora/crystal.dm
index d5798da9c3e..662bb39ec17 100644
--- a/code/modules/overmap/exoplanets/decor/flora/crystal.dm
+++ b/code/modules/overmap/exoplanets/decor/flora/crystal.dm
@@ -4,6 +4,8 @@
pixel_x = -32
icon = 'icons/obj/flora/crystal_trees.dmi'
icon_state = "gem"
+ is_rock = TRUE
+ sample_data = list("Sample contains crystaline structures with a branching fractal appearance")
/obj/structure/flora/tree/crystal/Initialize(mapload)
. = ..()
@@ -19,6 +21,7 @@
icon_state = "spire"
pixel_x = -32
layer = ABOVE_HUMAN_LAYER // this is basically a tree
+ sample_data = list("Sample contains low density crystaline structures")
/obj/structure/flora/rock/spire/Initialize(mapload)
. = ..()
diff --git a/code/modules/overmap/exoplanets/decor/flora/desert.dm b/code/modules/overmap/exoplanets/decor/flora/desert.dm
index f7142ae3c84..c267b74f5a2 100644
--- a/code/modules/overmap/exoplanets/decor/flora/desert.dm
+++ b/code/modules/overmap/exoplanets/decor/flora/desert.dm
@@ -3,6 +3,7 @@
icon = 'icons/obj/flora/desert_cactus_trees.dmi'
icon_state = "desert_tree"
desc = "A prickly cactus with a woody trunk."
+ sample_data = list("Cells contain above average water storage, indicating adaptation for a dry environment")
/obj/structure/flora/tree/desert/Initialize(mapload)
. = ..()
@@ -34,6 +35,7 @@
desc = "A sand-swept rock."
icon = 'icons/obj/flora/desertflora.dmi'
icon_state = "desert_rock"
+ sample_data = list("Sample contains sedimentary rock dust")
/obj/structure/flora/rock/desert/Initialize()
. = ..()
diff --git a/code/modules/overmap/exoplanets/decor/flora/marsh.dm b/code/modules/overmap/exoplanets/decor/flora/marsh.dm
index 083feae3a89..0681315050f 100644
--- a/code/modules/overmap/exoplanets/decor/flora/marsh.dm
+++ b/code/modules/overmap/exoplanets/decor/flora/marsh.dm
@@ -3,6 +3,7 @@
desc = "Some sort of woody fungal growth, grown to extreme proportions."
icon = 'icons/obj/flora/fungaltrees.dmi'
icon_state = "shroom"
+ sample_data = list("Cells appear fungal in nature")
/obj/structure/flora/tree/mushroom/Initialize(mapload)
. = ..()
@@ -16,6 +17,7 @@
desc = "A rather large variety of fungus."
icon = 'icons/obj/flora/fungalflora.dmi'
icon_state = "fungus_bush"
+ sample_data = list("Cells appear fungal in nature")
/obj/structure/flora/bush/mushroom/Initialize()
. = ..()
diff --git a/code/modules/overmap/sectors.dm b/code/modules/overmap/sectors.dm
index ffbdde4e4f8..928ed910848 100644
--- a/code/modules/overmap/sectors.dm
+++ b/code/modules/overmap/sectors.dm
@@ -253,6 +253,10 @@ var/global/area/overmap/map_overmap
/// Lore planets and static away sites that are planets should keep it to static text trivia.
/// For random planets, should be filled with random trivia or blurbs or the like.
var/ground_survey_result = null
+ /// Fluff descriptions found from soil sampling
+ var/list/soil_data = list()
+ /// Fluff desctiptions found on water sampling
+ var/list/water_data = list()
/// Magnetic survey result for use by survey probes. Randomly generated by most planets. Lore planets should have static text.
var/magnet_survey_result = null
diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
index 3a39c6294fc..b182cc4f1ab 100644
--- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
+++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Other.dm
@@ -874,3 +874,19 @@
color = "#464650"
taste_description = "salt"
fallback_specific_heat = 1
+
+/singleton/reagent/biological_tissue
+ name = "Biological Tissue"
+ description = "A suspension of the basic unit of life."
+ reagent_state = LIQUID
+ color = "#97b9a7"
+ taste_description = "water"
+ specific_heat = 1
+
+/singleton/reagent/soil
+ name = "Soil"
+ description = "A mixture of minerals, living organisms, organic matter, gas and water."
+ reagent_state = SOLID
+ color = "#5c4324"
+ taste_description = "earth"
+ specific_heat = 1
diff --git a/code/modules/research/xenoarchaeology/misc.dm b/code/modules/research/xenoarchaeology/misc.dm
index f58fc6dd655..6e3bd23ff1e 100644
--- a/code/modules/research/xenoarchaeology/misc.dm
+++ b/code/modules/research/xenoarchaeology/misc.dm
@@ -74,6 +74,7 @@
new /obj/item/storage/box/excavation(src)
new /obj/item/taperoll/science(src)
new /obj/item/clothing/head/hardhat(src)
+ new /obj/item/sampler(src)
/obj/structure/closet/excavation
name = "excavation tools"
diff --git a/html/changelogs/stasis-cages-and-sampling.yml b/html/changelogs/stasis-cages-and-sampling.yml
new file mode 100644
index 00000000000..a3c56663c0b
--- /dev/null
+++ b/html/changelogs/stasis-cages-and-sampling.yml
@@ -0,0 +1,10 @@
+author: Sparky_hotdog
+
+delete-after: True
+
+changes:
+ - rscadd: "Ported stasis cages from Baystation. They can be used to load captured mobs into for safe return to the Horizon. Replaced two of the suspension field generators in EVA storage with these."
+ - rscadd: "Added safari nets, a weaker form of energy net which xenobiologists can source from a dispenser in their labs. They are unstable, however, and require storage in a special container, also found in their lab."
+ - rscadd: "Added a science sampling device, with three modes of operation: tissue, soil and water. It must be loaded with a vial. Found in scientist and xenobotanists lockers and the xenobiology lab."
+ - rscadd: "Added a low power microscope for analysis of tissue samples, located in R&D, xenobotany and xenobiology. The fluff desciptions this provides are presently focused on common mobs such as carps and griemorians and Moghes mobs."
+ - rscadd: "Added a centrifuge for analysis of soil samples, and a spectrophotometer for analysis of water samples, both located in R&D."
diff --git a/icons/effects/effects.dmi b/icons/effects/effects.dmi
index 5561d7a0287..312111d2cb4 100644
Binary files a/icons/effects/effects.dmi and b/icons/effects/effects.dmi differ
diff --git a/icons/obj/item/net_container.dmi b/icons/obj/item/net_container.dmi
new file mode 100644
index 00000000000..d5eee16f8a6
Binary files /dev/null and b/icons/obj/item/net_container.dmi differ
diff --git a/icons/obj/item/sampling.dmi b/icons/obj/item/sampling.dmi
new file mode 100644
index 00000000000..dedd3acf6b0
Binary files /dev/null and b/icons/obj/item/sampling.dmi differ
diff --git a/icons/obj/machinery/stasis_cage.dmi b/icons/obj/machinery/stasis_cage.dmi
new file mode 100644
index 00000000000..c221dac7a1a
Binary files /dev/null and b/icons/obj/machinery/stasis_cage.dmi differ
diff --git a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
index bc0bd08484f..fc942b3e6e9 100644
--- a/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
+++ b/maps/sccv_horizon/sccv_horizon-1_deck_1.dmm
@@ -33573,10 +33573,8 @@
/turf/simulated/floor/tiled/dark,
/area/engineering/storage/tech)
"xdE" = (
-/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/machinery/suspension_gen{
- dir = 4
- },
+/obj/effect/floor_decal/industrial/outline/red,
+/obj/machinery/stasis_cage,
/turf/simulated/floor/tiled/dark/full,
/area/storage/eva)
"xdF" = (
diff --git a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
index 0d2a6ecf009..f05c4f0a9bf 100644
--- a/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
+++ b/maps/sccv_horizon/sccv_horizon-2_deck_2.dmm
@@ -466,17 +466,6 @@
},
/turf/simulated/floor/tiled,
/area/engineering/engine_room/rust)
-"akX" = (
-/obj/effect/floor_decal/corner/dark_green{
- dir = 5
- },
-/obj/structure/sign/emergency/evacuation/stairs,
-/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/effect/floor_decal/industrial/loading/yellow{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/horizon/stairwell/central)
"amd" = (
/obj/structure/platform{
dir = 4
@@ -648,6 +637,21 @@
},
/turf/simulated/floor/carpet/rubber,
/area/engineering/engine_monitoring/rust)
+"aps" = (
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/structure/flora/ausbushes/sparsegrass,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
+"apI" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/obj/structure/closet/walllocker/firecloset/medical{
+ pixel_x = -32
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"aqk" = (
/obj/effect/floor_decal/corner_wide/yellow{
dir = 5
@@ -747,6 +751,14 @@
},
/turf/simulated/floor/tiled,
/area/hallway/engineering)
+"arl" = (
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/machinery/camera/network/service{
+ c_tag = "Second Deck - Public Garden"
+ },
+/obj/structure/flora/ausbushes/sparsegrass,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"aru" = (
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
@@ -894,14 +906,6 @@
/obj/machinery/atmospherics/pipe/simple/visible/green,
/turf/simulated/floor/plating,
/area/engineering/engine_room)
-"auj" = (
-/obj/machinery/camera/network/medbay{
- c_tag = "Medical - First Responder Room"
- },
-/obj/structure/closet/secure_closet/medical_para,
-/obj/item/defibrillator/compact/loaded,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"auo" = (
/obj/structure/table/wood,
/obj/item/toy/desk/newtoncradle,
@@ -922,16 +926,6 @@
},
/turf/simulated/floor,
/area/maintenance/wing/port/far)
-"auU" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/obj/structure/closet/walllocker/firecloset/medical{
- pixel_x = -32
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"avb" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/maintenance_hatch{
@@ -962,25 +956,6 @@
/obj/machinery/biogenerator/small/north,
/turf/simulated/floor/tiled/dark,
/area/horizon/hydroponics/garden)
-"avl" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/table/standard,
-/obj/item/reagent_containers/hypospray{
- pixel_x = -2;
- pixel_y = 5
- },
-/obj/item/reagent_containers/hypospray{
- pixel_x = 4;
- pixel_y = 5
- },
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/obj/item/storage/toolbox/mechanical{
- pixel_y = -11
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"avs" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -1122,14 +1097,6 @@
/obj/item/device/hand_labeler,
/turf/simulated/floor/tiled/dark,
/area/chapel/office)
-"axS" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/effect/floor_decal/industrial/warning,
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"axW" = (
/obj/effect/floor_decal/industrial/warning/full,
/obj/machinery/porta_turret,
@@ -1202,6 +1169,14 @@
/obj/structure/table/rack/retail_shelf,
/turf/simulated/floor/tiled,
/area/horizon/commissary)
+"ayO" = (
+/obj/machinery/door/blast/regular{
+ dir = 2;
+ id = "EngineEmitterPortWest";
+ name = "Supermatter Reactor Waste Management Blast Door"
+ },
+/turf/simulated/floor/tiled/full,
+/area/engineering/engine_waste)
"ayS" = (
/obj/machinery/portable_atmospherics/hydroponics,
/obj/effect/floor_decal/industrial/outline/yellow,
@@ -1599,22 +1574,6 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/pharmacy)
-"aIy" = (
-/obj/structure/closet/walllocker/medical/secure{
- name = "Stabilization Kit";
- pixel_x = -31
- },
-/obj/item/bodybag/cryobag,
-/obj/item/bodybag/cryobag,
-/obj/item/bodybag/cryobag,
-/obj/item/reagent_containers/glass/bottle/inaprovaline,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/stack/medical/bruise_pack,
-/obj/item/storage/pill_bottle/mortaphenyl,
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/item/storage/pill_bottle/dexalin,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aIH" = (
/obj/machinery/camera/network/prison{
c_tag = "Security - Brig Communal Fore";
@@ -1738,14 +1697,6 @@
},
/turf/simulated/floor/tiled,
/area/operations/break_room)
-"aME" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/machinery/atmospherics/unary/vent_pump/on,
-/obj/effect/floor_decal/industrial/warning{
- dir = 4
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aML" = (
/obj/structure/cable/green{
icon_state = "1-4"
@@ -1810,20 +1761,6 @@
},
/turf/space/dynamic,
/area/template_noop)
-"aOs" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/cable/green{
- icon_state = "0-2"
- },
-/obj/machinery/power/apc/low/west,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 6
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aOz" = (
/obj/machinery/light{
dir = 8
@@ -1886,22 +1823,6 @@
/obj/item/wrench,
/turf/simulated/floor/plating,
/area/medical/cryo)
-"aQu" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 10
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/structure/bed/stool/chair/office/light{
- dir = 4
- },
-/obj/effect/floor_decal/industrial/warning/corner{
- dir = 4
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aQR" = (
/obj/machinery/door/firedoor,
/obj/effect/floor_decal/industrial/hatch/yellow,
@@ -1941,25 +1862,6 @@
},
/turf/simulated/wall,
/area/operations/lobby)
-"aSd" = (
-/obj/machinery/access_button{
- command = "cycle_interior";
- frequency = 1380;
- master_tag = "centcom_shuttle_dock_airlock";
- name = "interior access button";
- pixel_x = -25;
- pixel_y = -25;
- req_access = list(13)
- },
-/obj/machinery/atmospherics/pipe/simple/hidden{
- dir = 10
- },
-/obj/effect/floor_decal/corner/dark_green/full{
- dir = 4
- },
-/obj/machinery/alarm/east,
-/turf/simulated/floor/tiled,
-/area/security/checkpoint2)
"aSg" = (
/obj/machinery/power/apc/west,
/obj/structure/cable/green{
@@ -1997,6 +1899,24 @@
},
/turf/simulated/floor/tiled/full,
/area/hallway/engineering)
+"aSD" = (
+/obj/item/reagent_containers/blood/OMinus,
+/obj/item/reagent_containers/blood/sbs,
+/obj/item/reagent_containers/blood/OMinus,
+/obj/item/reagent_containers/blood/OMinus,
+/obj/structure/closet/walllocker/medical/secure{
+ name = "O- Blood Locker";
+ pixel_y = 32
+ },
+/obj/structure/cable/green{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc/west,
+/turf/simulated/floor/tiled/freezer{
+ name = "cold storage tiles";
+ temperature = 278
+ },
+/area/medical/surgery)
"aSO" = (
/obj/machinery/atmospherics/portables_connector{
dir = 8
@@ -2041,20 +1961,6 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/rnd/hallway)
-"aTm" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/cable/green{
- icon_state = "1-8"
- },
-/obj/item/device/radio/intercom/south,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 9
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aTp" = (
/obj/machinery/light/floor{
dir = 1
@@ -2062,30 +1968,6 @@
/obj/structure/platform/ledge,
/turf/simulated/floor/carpet/rubber,
/area/rnd/telesci)
-"aTt" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/machinery/light,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 1
- },
-/obj/machinery/firealarm/south,
-/obj/structure/table/standard,
-/obj/item/storage/firstaid/toxin{
- pixel_x = -3;
- pixel_y = 5
- },
-/obj/item/storage/firstaid/o2{
- pixel_x = -3
- },
-/obj/item/storage/firstaid/adv{
- pixel_x = 13;
- pixel_y = 5
- },
-/obj/item/storage/firstaid/fire{
- pixel_x = 13
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"aTI" = (
/obj/structure/table/rack,
/obj/item/storage/lockbox/anti_augment{
@@ -2410,12 +2292,6 @@
/obj/machinery/firealarm/east,
/turf/simulated/floor/tiled,
/area/horizon/hallway/deck_two/fore)
-"aZR" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/table/standard,
-/obj/structure/roller_rack/two,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"ban" = (
/obj/effect/floor_decal/spline/plain/corner{
dir = 1
@@ -2530,42 +2406,6 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/hallway/primary/central_one)
-"bdy" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/table/standard,
-/obj/item/storage/belt/medical/paramedic,
-/obj/item/storage/belt/medical/paramedic,
-/obj/machinery/alarm/south,
-/obj/item/device/radio{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/device/radio{
- pixel_x = -6;
- pixel_y = 6
- },
-/obj/item/device/radio{
- pixel_x = 5;
- pixel_y = 6
- },
-/obj/item/device/radio{
- pixel_x = 5;
- pixel_y = 6
- },
-/obj/machinery/vending/wallmed2{
- pixel_y = -29
- },
-/obj/item/device/gps/medical{
- pixel_x = 5
- },
-/obj/item/device/gps/medical{
- pixel_x = -7
- },
-/obj/machinery/requests_console/east{
- department = "Paramedic Bay"
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"beJ" = (
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/effect/floor_decal/industrial/warning{
@@ -4048,6 +3888,17 @@
},
/turf/simulated/floor/tiled,
/area/hallway/engineering)
+"bId" = (
+/obj/effect/floor_decal/corner/dark_green{
+ dir = 5
+ },
+/obj/structure/sign/emergency/evacuation/stairs,
+/obj/effect/floor_decal/industrial/outline/yellow,
+/obj/effect/floor_decal/industrial/loading/yellow{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/horizon/stairwell/central)
"bIt" = (
/obj/effect/floor_decal/spline/fancy/wood{
dir = 4
@@ -4842,6 +4693,13 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/bar/backroom)
+"bZc" = (
+/obj/structure/extinguisher_cabinet/east,
+/obj/structure/table/standard,
+/obj/item/device/flashlight/lamp,
+/obj/machinery/firealarm/north,
+/turf/simulated/floor/reinforced,
+/area/horizon/zat)
"bZj" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
@@ -4890,6 +4748,24 @@
/obj/machinery/alarm/west,
/turf/simulated/floor/tiled/white,
/area/rnd/conference)
+"cai" = (
+/obj/machinery/door/window/brigdoor/northleft{
+ dir = 2;
+ name = "Columbo's Cage";
+ req_access = list(58)
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
+/mob/living/simple_animal/hostile/commanded/dog/columbo,
+/turf/simulated/floor/carpet,
+/area/horizon/security/head_of_security)
"caj" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/table/rack,
@@ -5097,6 +4973,18 @@
/obj/structure/flora/ausbushes/brflowers,
/turf/simulated/floor/grass,
/area/hallway/primary/central_two)
+"cfB" = (
+/obj/structure/platform,
+/obj/structure/table/standard,
+/obj/item/device/flashlight/lamp{
+ pixel_y = -7
+ },
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/manipulator,
+/obj/item/stock_parts/manipulator,
+/turf/simulated/floor/tiled/dark,
+/area/rnd/lab)
"cfI" = (
/obj/machinery/atmospherics/pipe/manifold/visible/black{
dir = 4
@@ -5201,6 +5089,22 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/horizon/secure_ammunition_storage)
+"ciA" = (
+/obj/structure/closet/secure_closet/RD,
+/obj/effect/floor_decal/industrial/outline/research,
+/obj/effect/floor_decal/spline/fancy/wood{
+ dir = 8
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/machinery/power/apc/north,
+/obj/structure/cable/green{
+ icon_state = "0-2"
+ },
+/obj/machinery/firealarm/west,
+/turf/simulated/floor/wood,
+/area/crew_quarters/heads/hor)
"ciP" = (
/obj/effect/floor_decal/spline/fancy/wood/cee{
dir = 4
@@ -5311,6 +5215,24 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled/full,
/area/medical/reception)
+"clh" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner/mauve{
+ dir = 9
+ },
+/obj/machinery/power/apc/west,
+/obj/structure/cable/green{
+ icon_state = "0-4"
+ },
+/obj/machinery/microscope/science{
+ dir = 8;
+ pixel_y = 12
+ },
+/obj/item/storage/box/fancy/vials{
+ pixel_y = -12
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/lab)
"clz" = (
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/glass_medical{
@@ -5842,6 +5764,27 @@
/obj/effect/floor_decal/industrial/outline/grey,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/kitchen)
+"cDC" = (
+/obj/structure/closet/crate/freezer{
+ name = "Assorted Blood Packs"
+ },
+/obj/item/reagent_containers/blood/OPlus,
+/obj/item/reagent_containers/blood/OPlus,
+/obj/item/reagent_containers/blood/BPlus,
+/obj/item/reagent_containers/blood/BPlus,
+/obj/item/reagent_containers/blood/BMinus,
+/obj/item/reagent_containers/blood/BMinus,
+/obj/item/reagent_containers/blood/sbs,
+/obj/item/reagent_containers/blood/sbs,
+/obj/item/reagent_containers/blood/APlus,
+/obj/item/reagent_containers/blood/APlus,
+/obj/item/reagent_containers/blood/AMinus,
+/obj/item/reagent_containers/blood/AMinus,
+/obj/effect/floor_decal/corner_wide/green/full,
+/obj/structure/cable/green,
+/obj/machinery/power/apc/west,
+/turf/simulated/floor/tiled/white,
+/area/medical/main_storage)
"cDD" = (
/obj/structure/table/standard,
/obj/machinery/light{
@@ -5910,14 +5853,6 @@
/obj/machinery/alarm/north,
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
-"cGJ" = (
-/obj/machinery/body_scanconsole{
- dir = 1;
- pixel_y = 6
- },
-/obj/effect/floor_decal/corner/beige/full,
-/turf/simulated/floor/tiled/dark,
-/area/medical/gen_treatment)
"cGM" = (
/obj/machinery/door/airlock/maintenance{
dir = 4;
@@ -6028,24 +5963,6 @@
/obj/machinery/newscaster/south,
/turf/simulated/floor/tiled,
/area/horizon/custodial/auxiliary)
-"cJU" = (
-/obj/structure/table/standard,
-/obj/item/reagent_containers/spray/chemsprayer/xenobiology,
-/obj/item/reagent_containers/spray/chemsprayer/xenobiology,
-/obj/item/melee/baton/slime{
- pixel_x = 3;
- pixel_y = -1
- },
-/obj/item/melee/baton/slime{
- pixel_x = 3;
- pixel_y = -1
- },
-/obj/machinery/light,
-/obj/effect/floor_decal/corner/mauve/full{
- dir = 4
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
"cKa" = (
/obj/machinery/atmospherics/pipe/simple/visible/black,
/obj/machinery/atmospherics/pipe/simple/visible/cyan{
@@ -6101,6 +6018,29 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/wood,
/area/maintenance/wing/starboard)
+"cLa" = (
+/obj/machinery/requests_console/north{
+ department = "Atmospherics";
+ departmentType = 4;
+ name = "Atmos RC"
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/structure/closet/crate,
+/obj/item/stock_parts/manipulator,
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/capacitor,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stock_parts/matter_bin,
+/obj/item/stack/cable_coil,
+/obj/item/circuitboard/unary_atmos/cooler,
+/obj/item/circuitboard/unary_atmos/heater,
+/obj/effect/floor_decal/industrial/outline/engineering,
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/atmos/storage)
"cLt" = (
/obj/structure/table/standard,
/obj/machinery/cell_charger{
@@ -7348,6 +7288,21 @@
/obj/random/loot,
/turf/simulated/floor/plating,
/area/maintenance/wing/port)
+"dsc" = (
+/obj/structure/table/stone/marble,
+/obj/item/material/kitchen/rollingpin{
+ pixel_x = 6;
+ pixel_y = 10
+ },
+/obj/item/material/knife{
+ pixel_x = -9
+ },
+/obj/item/storage/box/produce{
+ pixel_x = 3;
+ pixel_y = -5
+ },
+/turf/simulated/floor/tiled/dark/full,
+/area/horizon/kitchen)
"dsj" = (
/obj/effect/floor_decal/corner/dark_blue/diagonal,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
@@ -7892,6 +7847,15 @@
/obj/structure/platform,
/turf/simulated/floor/tiled,
/area/hallway/engineering)
+"dHo" = (
+/obj/effect/floor_decal/industrial/warning,
+/obj/structure/railing/mapped,
+/obj/machinery/atmospherics/portables_connector{
+ dir = 1
+ },
+/obj/effect/floor_decal/industrial/outline/yellow,
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/engine_room/rust)
"dHt" = (
/obj/effect/floor_decal/corner/mauve{
dir = 5
@@ -8251,25 +8215,6 @@
/obj/structure/table/standard,
/turf/simulated/floor/carpet/rubber,
/area/rnd/lab)
-"dPi" = (
-/obj/effect/floor_decal/corner_wide/green/full{
- dir = 1
- },
-/obj/effect/floor_decal/sign/paramedic,
-/obj/structure/cable/green{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/turf/simulated/floor/tiled/white,
-/area/medical/gen_treatment)
"dPz" = (
/obj/effect/floor_decal/spline/plain{
dir = 1
@@ -8732,6 +8677,9 @@
},
/turf/simulated/floor/plating,
/area/engineering/engine_room)
+"eac" = (
+/turf/simulated/wall,
+/area/medical/paramedic)
"eah" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/closet/firecloset{
@@ -8755,13 +8703,6 @@
},
/turf/simulated/floor/tiled/full,
/area/hallway/primary/central_one)
-"ebm" = (
-/obj/structure/extinguisher_cabinet/east,
-/obj/structure/table/standard,
-/obj/item/device/flashlight/lamp,
-/obj/machinery/firealarm/north,
-/turf/simulated/floor/reinforced,
-/area/horizon/zat)
"ebq" = (
/obj/structure/foamedmetal,
/obj/structure/shuttle_part/scc_space_ship{
@@ -8986,6 +8927,25 @@
},
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
+"egQ" = (
+/obj/structure/cable/green{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/machinery/door/airlock/glass_medical{
+ dir = 4;
+ name = "Paramedic Quarters";
+ req_access = list(67)
+ },
+/obj/machinery/door/firedoor,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"egY" = (
/obj/structure/ladder{
pixel_y = 8
@@ -9738,11 +9698,6 @@
},
/turf/simulated/open,
/area/maintenance/wing/starboard)
-"eAX" = (
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"eBj" = (
/obj/effect/floor_decal/corner/mauve/diagonal,
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
@@ -9871,24 +9826,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/wing/port/far)
-"eEr" = (
-/obj/machinery/door/window/brigdoor/northleft{
- dir = 2;
- name = "Columbo's Cage";
- req_access = list(58)
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/machinery/status_display{
- pixel_y = 32
- },
-/mob/living/simple_animal/hostile/commanded/dog/columbo,
-/turf/simulated/floor/carpet,
-/area/horizon/security/head_of_security)
"eEx" = (
/obj/structure/grille/diagonal{
dir = 8
@@ -10004,6 +9941,16 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/custodial/disposals)
+"eGO" = (
+/obj/machinery/atmospherics/unary/vent_scrubber/on,
+/obj/machinery/status_display{
+ pixel_y = 32
+ },
+/obj/effect/floor_decal/corner/dark_blue{
+ dir = 5
+ },
+/turf/simulated/floor/tiled,
+/area/horizon/security/hallway)
"eGS" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment,
@@ -10063,6 +10010,11 @@
},
/turf/simulated/floor/tiled/dark,
/area/rnd/xenobiology/xenoflora)
+"eHt" = (
+/obj/structure/platform,
+/obj/machinery/spectrophotometer,
+/turf/simulated/floor/tiled/dark,
+/area/rnd/lab)
"eHG" = (
/turf/simulated/floor/tiled/full,
/area/hallway/primary/central_one)
@@ -10865,14 +10817,6 @@
},
/turf/simulated/floor/tiled,
/area/horizon/custodial/auxiliary)
-"fan" = (
-/obj/structure/platform,
-/obj/structure/table/standard,
-/obj/item/device/flashlight/lamp{
- pixel_y = -7
- },
-/turf/simulated/floor/tiled/dark,
-/area/rnd/lab)
"fas" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/machinery/atmospherics/binary/pump/high_power{
@@ -10996,29 +10940,6 @@
},
/turf/simulated/open/airless,
/area/template_noop)
-"fdE" = (
-/obj/structure/closet/walllocker/medical/secure{
- name = "Medication Closet";
- pixel_x = 31
- },
-/obj/item/reagent_containers/glass/bottle/antitoxin,
-/obj/item/storage/pill_bottle/mortaphenyl,
-/obj/item/storage/pill_bottle/dylovene,
-/obj/item/storage/pill_bottle/dylovene,
-/obj/item/storage/pill_bottle/bicaridine,
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/effect/floor_decal/industrial/warning{
- dir = 8
- },
-/obj/item/storage/pill_bottle/kelotane,
-/obj/item/reagent_containers/syringe/antibiotic,
-/obj/item/reagent_containers/syringe/antibiotic,
-/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
-/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
-/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
-/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"fdF" = (
/turf/simulated/wall,
/area/maintenance/aux_atmospherics/deck_2/starboard)
@@ -11476,22 +11397,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/stairwell/bridge)
-"fmV" = (
-/obj/structure/table/standard,
-/obj/item/stack/material/phoron{
- amount = 15
- },
-/obj/item/stock_parts/manipulator,
-/obj/item/stock_parts/manipulator,
-/obj/effect/floor_decal/corner/mauve{
- dir = 9
- },
-/obj/machinery/power/apc/west,
-/obj/structure/cable/green{
- icon_state = "0-4"
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/lab)
"fnd" = (
/obj/structure/shuttle/engine/heater{
dir = 1
@@ -11744,6 +11649,23 @@
/obj/structure/cable/green,
/turf/simulated/floor/plating,
/area/horizon/maintenance/deck_two/fore/starboard)
+"fta" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/blast/shutters{
+ density = 0;
+ dir = 2;
+ icon_state = "shutter0";
+ id = "LCKDshutters";
+ name = "MedBay Lockdown Shutters";
+ opacity = 0
+ },
+/obj/machinery/door/airlock/glass_medical{
+ dir = 4;
+ name = "Paramedic Quarters";
+ req_access = list(67)
+ },
+/turf/simulated/floor/tiled/full,
+/area/medical/paramedic)
"fti" = (
/obj/structure/platform_deco{
dir = 1
@@ -11864,14 +11786,6 @@
},
/turf/simulated/floor/wood,
/area/crew_quarters/heads/chief)
-"fwE" = (
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/machinery/camera/network/service{
- c_tag = "Second Deck - Public Garden"
- },
-/obj/structure/flora/ausbushes/sparsegrass,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"fwK" = (
/obj/effect/floor_decal/spline/plain{
dir = 8
@@ -12231,20 +12145,6 @@
/obj/random/loot,
/turf/simulated/floor/plating,
/area/maintenance/wing/port/far)
-"fGi" = (
-/obj/structure/table/standard,
-/obj/effect/floor_decal/corner/mauve{
- dir = 1
- },
-/obj/machinery/recharger{
- pixel_x = -7;
- pixel_y = 8
- },
-/obj/machinery/atmospherics/unary/vent_pump/on{
- dir = 4
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/lab)
"fGs" = (
/obj/structure/table/rack,
/obj/effect/floor_decal/industrial/outline/grey,
@@ -13250,6 +13150,25 @@
},
/turf/simulated/floor/tiled,
/area/horizon/security/brig)
+"gbR" = (
+/obj/effect/floor_decal/corner_wide/green/full{
+ dir = 1
+ },
+/obj/effect/floor_decal/sign/paramedic,
+/obj/structure/cable/green{
+ icon_state = "4-8"
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/white,
+/area/medical/gen_treatment)
"gbT" = (
/turf/simulated/floor/tiled,
/area/engineering/lobby)
@@ -13759,12 +13678,6 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/horizon/hydroponics)
-"gmE" = (
-/obj/structure/table/standard,
-/obj/item/storage/slimes,
-/obj/machinery/recharger,
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
"gmG" = (
/obj/structure/railing/mapped{
dir = 1
@@ -13825,6 +13738,16 @@
/obj/effect/map_effect/window_spawner/full/reinforced/firedoor,
/turf/simulated/floor/tiled/dark/full,
/area/medical/exam)
+"gnE" = (
+/obj/machinery/light/small{
+ dir = 4
+ },
+/obj/structure/extinguisher_cabinet/east,
+/obj/effect/floor_decal/corner/dark_blue{
+ dir = 6
+ },
+/turf/simulated/floor/tiled/dark,
+/area/horizon/grauwolf)
"goc" = (
/obj/effect/floor_decal/corner/mauve{
dir = 6
@@ -14700,14 +14623,6 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/maintenance/research_port)
-"gFc" = (
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/machinery/light{
- dir = 1
- },
-/obj/structure/flora/ausbushes/sparsegrass,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"gFs" = (
/obj/effect/floor_decal/corner/mauve{
dir = 10
@@ -14837,6 +14752,30 @@
},
/turf/simulated/floor/wood,
/area/operations/qm)
+"gHu" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/machinery/light,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 1
+ },
+/obj/machinery/firealarm/south,
+/obj/structure/table/standard,
+/obj/item/storage/firstaid/toxin{
+ pixel_x = -3;
+ pixel_y = 5
+ },
+/obj/item/storage/firstaid/o2{
+ pixel_x = -3
+ },
+/obj/item/storage/firstaid/adv{
+ pixel_x = 13;
+ pixel_y = 5
+ },
+/obj/item/storage/firstaid/fire{
+ pixel_x = 13
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"gHR" = (
/obj/machinery/light{
dir = 4
@@ -16001,10 +15940,6 @@
/obj/machinery/stasis_bed,
/turf/simulated/floor/tiled/white,
/area/medical/icu)
-"hkt" = (
-/obj/structure/extinguisher_cabinet/east,
-/turf/simulated/floor/tiled/dark,
-/area/horizon/zat)
"hkA" = (
/obj/effect/floor_decal/corner/dark_green/full{
dir = 8
@@ -18207,6 +18142,20 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/rnd/xenobiology/hazardous)
+"ilq" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/window/reinforced{
+ name = "adjusted reinforced window"
+ },
+/obj/structure/table/wood,
+/obj/item/device/flashlight/lamp/green{
+ pixel_x = 1;
+ pixel_y = 3
+ },
+/turf/simulated/floor/carpet,
+/area/horizon/bar/backroom)
"ily" = (
/obj/machinery/atmospherics/pipe/manifold4w/visible/black,
/obj/machinery/meter,
@@ -19276,15 +19225,6 @@
},
/turf/simulated/floor/tiled,
/area/horizon/custodial/auxiliary)
-"iKQ" = (
-/obj/effect/floor_decal/industrial/warning,
-/obj/structure/railing/mapped,
-/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/machinery/atmospherics/portables_connector{
- dir = 1
- },
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/engine_room/rust)
"iKU" = (
/obj/machinery/ammunition_loader/grauwolf{
weapon_id = "Grauwolf Flak Battery"
@@ -19432,6 +19372,14 @@
},
/turf/simulated/floor/tiled/white,
/area/hallway/medical)
+"iOb" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/machinery/atmospherics/unary/vent_pump/on,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"iOg" = (
/obj/machinery/cryopod,
/obj/effect/floor_decal/corner/dark_blue/diagonal,
@@ -19602,21 +19550,6 @@
},
/turf/simulated/floor/plating,
/area/horizon/maintenance/deck_two/fore/starboard)
-"iSn" = (
-/obj/structure/table/standard,
-/obj/item/storage/toolbox/mechanical{
- pixel_y = 6
- },
-/obj/item/stock_parts/matter_bin,
-/obj/item/stock_parts/matter_bin,
-/obj/machinery/light{
- dir = 8
- },
-/obj/effect/floor_decal/corner/mauve{
- dir = 10
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/lab)
"iSx" = (
/turf/simulated/wall/r_wall,
/area/horizon/custodial/disposals)
@@ -19667,6 +19600,28 @@
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
+"iVf" = (
+/obj/effect/floor_decal/corner/mauve{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner/white{
+ dir = 10
+ },
+/obj/structure/cable/green{
+ d1 = 1;
+ d2 = 2;
+ icon_state = "1-2"
+ },
+/obj/structure/table/standard,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/microscope/science{
+ dir = 4;
+ pixel_y = 12
+ },
+/turf/simulated/floor/tiled/dark,
+/area/rnd/xenobiology/xenoflora)
"iVg" = (
/obj/structure/closet/secure_closet/engineering_chief,
/obj/item/device/radio/intercom/south,
@@ -20113,28 +20068,6 @@
/obj/machinery/light,
/turf/simulated/floor/plating,
/area/engineering/engine_room/rust)
-"jeY" = (
-/obj/effect/floor_decal/corner_wide/green{
- dir = 5
- },
-/obj/effect/floor_decal/corner_wide/green,
-/obj/structure/sink{
- pixel_x = -7;
- pixel_y = 23
- },
-/turf/simulated/floor/tiled/white,
-/area/medical/exam)
-"jfp" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
- dir = 4
- },
-/obj/machinery/door/blast/regular{
- dir = 2;
- id = "EngineEmitterPortWest";
- name = "Supermatter Reactor Waste Management Blast Door"
- },
-/turf/simulated/floor/tiled/full,
-/area/engineering/engine_waste)
"jfu" = (
/obj/effect/floor_decal/corner/dark_blue{
dir = 5
@@ -20251,6 +20184,28 @@
},
/turf/simulated/floor/tiled,
/area/hallway/primary/central_two)
+"jjs" = (
+/obj/machinery/recharger/wallcharger{
+ pixel_x = 2;
+ pixel_y = 34
+ },
+/obj/machinery/photocopier,
+/obj/effect/floor_decal/corner/dark_blue{
+ dir = 5
+ },
+/obj/machinery/recharger/wallcharger{
+ pixel_x = 2;
+ pixel_y = 23
+ },
+/obj/structure/sign/nosmoking_2{
+ pixel_x = 15;
+ pixel_y = 30
+ },
+/obj/machinery/camera/network/security{
+ c_tag = "Security - Lobby Desk"
+ },
+/turf/simulated/floor/tiled,
+/area/horizon/security/office)
"jju" = (
/obj/effect/floor_decal/corner/dark_blue/full{
dir = 1
@@ -20534,36 +20489,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
-"jpf" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/effect/floor_decal/spline/fancy/wood{
- dir = 4
- },
-/obj/effect/floor_decal/spline/fancy/wood{
- dir = 8
- },
-/obj/machinery/button/remote/blast_door{
- dir = 4;
- id = "massdriver";
- name = "Mass Driver Interior Blast Door";
- pixel_x = 25;
- pixel_y = 11
- },
-/obj/machinery/button/remote/blast_door{
- dir = 4;
- id = "chapel_driver";
- name = "Mass Driver Exterior Blast Door";
- pixel_x = 25
- },
-/obj/machinery/button/mass_driver{
- _wifi_id = "chapel_driver";
- dir = 8;
- id = "chapel_driver";
- pixel_x = 35;
- pixel_y = 5
- },
-/turf/simulated/floor/wood,
-/area/chapel/office)
"jpB" = (
/obj/machinery/portable_atmospherics/hydroponics,
/obj/effect/floor_decal/corner/dark_blue{
@@ -20587,6 +20512,26 @@
},
/turf/simulated/floor/carpet,
/area/horizon/security/head_of_security)
+"jpT" = (
+/obj/structure/table/standard,
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = 6
+ },
+/obj/machinery/light{
+ dir = 8
+ },
+/obj/effect/floor_decal/corner/mauve{
+ dir = 10
+ },
+/obj/item/stack/material/phoron{
+ amount = 15
+ },
+/obj/item/storage/box/slides{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/lab)
"jqw" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
@@ -21155,16 +21100,15 @@
},
/turf/simulated/floor/tiled,
/area/horizon/security/brig)
-"jDU" = (
-/obj/structure/platform,
-/obj/structure/filingcabinet/filingcabinet{
- pixel_x = -7
+"jDG" = (
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/machinery/firealarm/west,
+/obj/machinery/alarm/north{
+ req_one_access = list(24,11,55)
},
-/obj/machinery/papershredder{
- pixel_x = 7
- },
-/turf/simulated/floor/tiled/dark,
-/area/rnd/lab)
+/obj/structure/flora/ausbushes/sparsegrass,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"jDZ" = (
/obj/effect/floor_decal/spline/fancy/wood,
/obj/machinery/light,
@@ -21665,6 +21609,17 @@
},
/turf/simulated/floor/tiled,
/area/horizon/security/hallway)
+"jOC" = (
+/obj/effect/floor_decal/corner_wide/green{
+ dir = 5
+ },
+/obj/effect/floor_decal/corner_wide/green,
+/obj/structure/sink{
+ pixel_x = -7;
+ pixel_y = 23
+ },
+/turf/simulated/floor/tiled/white,
+/area/medical/exam)
"jOK" = (
/obj/structure/railing/mapped{
dir = 4
@@ -22051,6 +22006,17 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/engineering/smes/rust)
+"jWL" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 4
+ },
+/obj/machinery/door/blast/regular{
+ dir = 2;
+ id = "EngineEmitterPortWest";
+ name = "Supermatter Reactor Waste Management Blast Door"
+ },
+/turf/simulated/floor/tiled/full,
+/area/engineering/engine_waste)
"jWV" = (
/turf/simulated/wall,
/area/security/checkpoint2)
@@ -22365,6 +22331,20 @@
/obj/effect/floor_decal/corner/dark_green/full,
/turf/simulated/floor/tiled,
/area/horizon/hallway/deck_two/fore)
+"kgE" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/cable/green{
+ icon_state = "1-8"
+ },
+/obj/item/device/radio/intercom/south,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 9
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"kgH" = (
/obj/effect/floor_decal/corner/grey/diagonal,
/obj/effect/floor_decal/spline/plain,
@@ -22529,6 +22509,15 @@
},
/turf/simulated/floor/tiled,
/area/horizon/security/brig)
+"klk" = (
+/obj/effect/floor_decal/industrial/warning,
+/obj/structure/railing/mapped,
+/obj/effect/floor_decal/industrial/outline/yellow,
+/obj/machinery/atmospherics/portables_connector{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/engine_room/rust)
"klv" = (
/obj/effect/floor_decal/corner/dark_blue/full{
dir = 4
@@ -22976,38 +22965,6 @@
},
/turf/simulated/open,
/area/horizon/stairwell/central)
-"kyR" = (
-/obj/structure/platform{
- dir = 1
- },
-/obj/structure/railing/mapped,
-/obj/effect/floor_decal/corner/mauve/diagonal,
-/obj/machinery/light/floor,
-/turf/simulated/floor/tiled/white,
-/area/rnd/lab)
-"kyV" = (
-/obj/machinery/requests_console/north{
- department = "Atmospherics";
- departmentType = 4;
- name = "Atmos RC"
- },
-/obj/machinery/light{
- dir = 8
- },
-/obj/structure/closet/crate,
-/obj/item/stock_parts/manipulator,
-/obj/item/stock_parts/capacitor,
-/obj/item/stock_parts/capacitor,
-/obj/item/stock_parts/capacitor,
-/obj/item/stock_parts/capacitor,
-/obj/item/stock_parts/matter_bin,
-/obj/item/stock_parts/matter_bin,
-/obj/item/stack/cable_coil,
-/obj/item/circuitboard/unary_atmos/cooler,
-/obj/item/circuitboard/unary_atmos/heater,
-/obj/effect/floor_decal/industrial/outline/engineering,
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/atmos/storage)
"kze" = (
/obj/machinery/smartfridge/secure,
/obj/machinery/door/firedoor,
@@ -23487,6 +23444,11 @@
/obj/item/hullbeacon/red,
/turf/simulated/open/airless,
/area/template_noop)
+"kMf" = (
+/obj/structure/flora/ausbushes/sparsegrass,
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"kMl" = (
/obj/effect/floor_decal/corner/yellow{
dir = 10
@@ -23496,6 +23458,14 @@
},
/turf/simulated/floor/tiled,
/area/engineering/rust_office)
+"kMM" = (
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/closet/secure_closet/medical_para,
+/obj/item/defibrillator/compact/loaded,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"kNe" = (
/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced/firedoor,
/obj/machinery/door/blast/regular/open{
@@ -23741,24 +23711,6 @@
/obj/machinery/newscaster/east,
/turf/simulated/floor/tiled,
/area/horizon/security/brig)
-"kUc" = (
-/obj/structure/table/standard,
-/obj/effect/floor_decal/corner_wide/green/full,
-/obj/machinery/alarm/west,
-/obj/item/storage/box/masks,
-/obj/item/storage/box/masks,
-/obj/item/storage/box/gloves{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/item/storage/box/gloves{
- pixel_x = 4;
- pixel_y = 4
- },
-/obj/structure/railing/mapped,
-/obj/structure/stairs_lower/stairs_upper,
-/turf/simulated/floor/tiled/white,
-/area/hallway/medical)
"kUf" = (
/obj/structure/lattice/catwalk,
/turf/simulated/open/airless,
@@ -24417,16 +24369,6 @@
},
/turf/simulated/floor/tiled,
/area/operations/office)
-"llB" = (
-/obj/machinery/light/small{
- dir = 4
- },
-/obj/structure/extinguisher_cabinet/east,
-/obj/effect/floor_decal/corner/dark_blue{
- dir = 6
- },
-/turf/simulated/floor/tiled/dark,
-/area/horizon/grauwolf)
"llG" = (
/obj/machinery/maneuvering_engine,
/obj/effect/landmark/entry_point/aft{
@@ -24701,16 +24643,6 @@
/obj/item/smes_coil/super_io,
/turf/simulated/floor/tiled/dark/full,
/area/engineering/engine_room/rust)
-"lui" = (
-/obj/machinery/door/blast/regular/open{
- dir = 4;
- id = "r_ust_core_blast";
- name = "INDRA Reactor Blast Doors"
- },
-/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced,
-/obj/machinery/atmospherics/pipe/simple/visible,
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/engine_room/rust)
"luo" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -24733,26 +24665,6 @@
},
/turf/simulated/floor/carpet/purple,
/area/crew_quarters/heads/hor)
-"lvl" = (
-/obj/effect/floor_decal/corner/mauve{
- dir = 5
- },
-/obj/machinery/power/apc/high/north,
-/obj/structure/cable/green{
- icon_state = "0-2"
- },
-/obj/structure/table/standard,
-/obj/machinery/reagentgrinder{
- pixel_x = 3;
- pixel_y = 10
- },
-/obj/item/reagent_containers/chem_disp_cartridge,
-/obj/item/reagent_containers/chem_disp_cartridge,
-/obj/item/reagent_containers/chem_disp_cartridge,
-/obj/item/reagent_containers/chem_disp_cartridge,
-/obj/item/reagent_containers/chem_disp_cartridge,
-/turf/simulated/floor/tiled/dark,
-/area/rnd/xenobiology/xenoflora)
"lvq" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -26798,28 +26710,6 @@
/obj/effect/floor_decal/corner/red/diagonal,
/turf/simulated/floor/tiled,
/area/storage/primary)
-"msO" = (
-/obj/machinery/recharger/wallcharger{
- pixel_x = 2;
- pixel_y = 34
- },
-/obj/machinery/photocopier,
-/obj/effect/floor_decal/corner/dark_blue{
- dir = 5
- },
-/obj/machinery/recharger/wallcharger{
- pixel_x = 2;
- pixel_y = 23
- },
-/obj/structure/sign/nosmoking_2{
- pixel_x = 15;
- pixel_y = 30
- },
-/obj/machinery/camera/network/security{
- c_tag = "Security - Lobby Desk"
- },
-/turf/simulated/floor/tiled,
-/area/horizon/security/office)
"msP" = (
/obj/machinery/alarm/north,
/obj/random/loot,
@@ -26856,6 +26746,25 @@
},
/turf/simulated/floor/carpet/red,
/area/horizon/crew_quarters/lounge/bar)
+"mtl" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/table/standard,
+/obj/item/reagent_containers/hypospray{
+ pixel_x = -2;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/hypospray{
+ pixel_x = 4;
+ pixel_y = 5
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/obj/item/storage/toolbox/mechanical{
+ pixel_y = -11
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"mtp" = (
/obj/effect/floor_decal/corner/mauve{
dir = 4
@@ -26975,6 +26884,23 @@
},
/turf/simulated/open,
/area/maintenance/research_port)
+"mvg" = (
+/obj/effect/floor_decal/spline/fancy/wood{
+ dir = 5
+ },
+/obj/random/pottedplant,
+/obj/machinery/atmospherics/unary/vent_scrubber/on{
+ dir = 8
+ },
+/obj/structure/platform{
+ dir = 8
+ },
+/obj/structure/platform{
+ dir = 8;
+ pixel_y = 13
+ },
+/turf/simulated/floor/wood,
+/area/horizon/crew_quarters/lounge/bar)
"mvh" = (
/turf/simulated/floor/tiled/dark,
/area/rnd/lab)
@@ -27206,6 +27132,29 @@
},
/turf/simulated/floor/tiled,
/area/hallway/primary/central_one)
+"mzN" = (
+/obj/structure/closet/walllocker/medical/secure{
+ name = "Medication Closet";
+ pixel_x = 31
+ },
+/obj/item/reagent_containers/glass/bottle/antitoxin,
+/obj/item/storage/pill_bottle/mortaphenyl,
+/obj/item/storage/pill_bottle/dylovene,
+/obj/item/storage/pill_bottle/dylovene,
+/obj/item/storage/pill_bottle/bicaridine,
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 8
+ },
+/obj/item/storage/pill_bottle/kelotane,
+/obj/item/reagent_containers/syringe/antibiotic,
+/obj/item/reagent_containers/syringe/antibiotic,
+/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
+/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
+/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
+/obj/item/reagent_containers/hypospray/autoinjector/coagzolug,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"mzS" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/machinery/portable_atmospherics/powered/scrubber,
@@ -27260,12 +27209,6 @@
},
/turf/simulated/open,
/area/operations/office)
-"mBk" = (
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/machinery/light,
-/obj/structure/flora/ausbushes/sparsegrass,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"mBI" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -27517,22 +27460,6 @@
"mHH" = (
/turf/simulated/wall/r_wall,
/area/crew_quarters/heads/hor)
-"mHM" = (
-/obj/structure/closet/secure_closet/RD,
-/obj/effect/floor_decal/industrial/outline/research,
-/obj/effect/floor_decal/spline/fancy/wood{
- dir = 8
- },
-/obj/machinery/light{
- dir = 8
- },
-/obj/machinery/power/apc/north,
-/obj/structure/cable/green{
- icon_state = "0-2"
- },
-/obj/machinery/firealarm/west,
-/turf/simulated/floor/wood,
-/area/crew_quarters/heads/hor)
"mHO" = (
/turf/simulated/floor/tiled/full,
/area/horizon/stairwell/central)
@@ -28468,6 +28395,14 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/storage/secure)
+"naR" = (
+/obj/machinery/camera/network/medbay{
+ c_tag = "Medical - First Responder Room"
+ },
+/obj/structure/closet/secure_closet/medical_para,
+/obj/item/defibrillator/compact/loaded,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"nbd" = (
/obj/structure/closet/walllocker/medical/secure{
name = "Stabilization Kit";
@@ -29669,6 +29604,10 @@
},
/turf/simulated/floor/tiled/full,
/area/hallway/engineering)
+"nDI" = (
+/obj/machinery/suit_cycler/medical,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"nDK" = (
/obj/effect/floor_decal/industrial/hatch/red,
/obj/effect/floor_decal/industrial/warning{
@@ -29835,6 +29774,22 @@
"nIi" = (
/turf/simulated/wall,
/area/hallway/medical)
+"nIL" = (
+/obj/structure/closet/walllocker/medical/secure{
+ name = "Stabilization Kit";
+ pixel_x = -31
+ },
+/obj/item/bodybag/cryobag,
+/obj/item/bodybag/cryobag,
+/obj/item/bodybag/cryobag,
+/obj/item/reagent_containers/glass/bottle/inaprovaline,
+/obj/item/stack/medical/bruise_pack,
+/obj/item/stack/medical/bruise_pack,
+/obj/item/storage/pill_bottle/mortaphenyl,
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/item/storage/pill_bottle/dexalin,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"nIX" = (
/obj/effect/floor_decal/industrial/outline/yellow,
/obj/structure/ladder/up{
@@ -30403,6 +30358,21 @@
},
/turf/simulated/floor/tiled,
/area/rnd/hallway)
+"nZH" = (
+/obj/structure/table/standard,
+/obj/machinery/computer/security/telescreen{
+ name = "Access Monitor";
+ network = list("Xeno_Bio");
+ req_access = list(55)
+ },
+/obj/effect/floor_decal/corner/mauve{
+ dir = 10
+ },
+/obj/structure/net_dispenser{
+ pixel_y = -32
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"nZX" = (
/obj/structure/table/stone/marble,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -30761,14 +30731,6 @@
},
/turf/simulated/floor/carpet/purple,
/area/crew_quarters/heads/hor)
-"ohE" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/effect/floor_decal/industrial/warning/corner,
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"ohQ" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -30920,18 +30882,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/zat)
-"okq" = (
-/obj/machinery/door/blast/shutters{
- density = 0;
- dir = 4;
- icon_state = "shutter0";
- id = "LCKDshutters";
- name = "MedBay Lockdown Shutters";
- opacity = 0
- },
-/obj/effect/map_effect/window_spawner/full/reinforced/firedoor,
-/turf/simulated/floor/tiled/dark/full,
-/area/medical/paramedic)
"okP" = (
/obj/effect/floor_decal/corner/mauve{
dir = 10
@@ -31589,27 +31539,6 @@
},
/turf/simulated/floor/tiled,
/area/rnd/hallway/secondary)
-"oAy" = (
-/obj/structure/closet/crate/freezer{
- name = "Assorted Blood Packs"
- },
-/obj/item/reagent_containers/blood/OPlus,
-/obj/item/reagent_containers/blood/OPlus,
-/obj/item/reagent_containers/blood/BPlus,
-/obj/item/reagent_containers/blood/BPlus,
-/obj/item/reagent_containers/blood/BMinus,
-/obj/item/reagent_containers/blood/BMinus,
-/obj/item/reagent_containers/blood/sbs,
-/obj/item/reagent_containers/blood/sbs,
-/obj/item/reagent_containers/blood/APlus,
-/obj/item/reagent_containers/blood/APlus,
-/obj/item/reagent_containers/blood/AMinus,
-/obj/item/reagent_containers/blood/AMinus,
-/obj/effect/floor_decal/corner_wide/green/full,
-/obj/structure/cable/green,
-/obj/machinery/power/apc/west,
-/turf/simulated/floor/tiled/white,
-/area/medical/main_storage)
"oAL" = (
/obj/machinery/light/small/emergency{
dir = 8
@@ -31757,23 +31686,6 @@
},
/turf/simulated/floor/lino,
/area/chapel/main)
-"oCG" = (
-/obj/effect/floor_decal/spline/fancy/wood{
- dir = 5
- },
-/obj/random/pottedplant,
-/obj/machinery/atmospherics/unary/vent_scrubber/on{
- dir = 8
- },
-/obj/structure/platform{
- dir = 8
- },
-/obj/structure/platform{
- dir = 8;
- pixel_y = 13
- },
-/turf/simulated/floor/wood,
-/area/horizon/crew_quarters/lounge/bar)
"oDg" = (
/obj/structure/shuttle_part/scc_space_ship{
icon_state = "d2-4-f"
@@ -31868,6 +31780,14 @@
/obj/effect/floor_decal/corner_wide/yellow,
/turf/simulated/floor/tiled,
/area/hallway/engineering/rust)
+"oGW" = (
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/machinery/light{
+ dir = 1
+ },
+/obj/structure/flora/ausbushes/sparsegrass,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"oHI" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -32329,9 +32249,6 @@
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/horizon/hydroponics)
-"oUt" = (
-/turf/simulated/wall,
-/area/medical/paramedic)
"oUu" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -32426,16 +32343,6 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/plating,
/area/engineering/engine_waste)
-"oXf" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/structure/bed/stool/chair/office/light{
- dir = 8
- },
-/obj/effect/floor_decal/industrial/warning/corner{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"oXi" = (
/obj/structure/table/standard,
/obj/item/gun/energy/mousegun/xenofauna,
@@ -33190,6 +33097,15 @@
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled/dark/full,
/area/engineering/storage_hard)
+"pmY" = (
+/obj/machinery/power/terminal{
+ dir = 8
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/structure/cable/yellow,
+/turf/simulated/floor/tiled/dark,
+/area/engineering/smes/rust)
"pnj" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -33202,6 +33118,31 @@
},
/turf/simulated/floor/reinforced,
/area/rnd/xenobiology)
+"pnu" = (
+/obj/structure/table/standard,
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/grenade/chem_grenade,
+/obj/item/device/assembly/igniter,
+/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,
+/obj/item/device/assembly/timer,
+/obj/structure/closet/crate/drop/grey{
+ desc = "A large, sturdy crate, that stores grenade components.";
+ name = "grenade crate";
+ pixel_y = -4;
+ tablestatus = -1
+ },
+/obj/effect/floor_decal/corner_wide/orange{
+ dir = 10
+ },
+/turf/simulated/floor/tiled/white,
+/area/medical/pharmacy)
"pnF" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -33356,6 +33297,22 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/engineering/engine_room)
+"ptx" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 10
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 9
+ },
+/obj/structure/bed/stool/chair/office/light{
+ dir = 4
+ },
+/obj/effect/floor_decal/industrial/warning/corner{
+ dir = 4
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"ptC" = (
/obj/machinery/atmospherics/pipe/simple/hidden{
dir = 9
@@ -33459,6 +33416,16 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
+"pva" = (
+/obj/machinery/door/blast/regular/open{
+ dir = 4;
+ id = "r_ust_core_blast";
+ name = "INDRA Reactor Blast Doors"
+ },
+/obj/effect/map_effect/window_spawner/full/borosilicate/reinforced,
+/obj/machinery/atmospherics/pipe/simple/visible,
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/engine_room/rust)
"pvc" = (
/obj/effect/floor_decal/corner/mauve/full,
/obj/machinery/light{
@@ -33520,6 +33487,15 @@
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/turf/simulated/floor/tiled,
/area/rnd/xenobiology/xenoflora)
+"pxA" = (
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/obj/machinery/atmospherics/binary/pump{
+ dir = 1
+ },
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/engine_room/rust)
"pxG" = (
/turf/simulated/floor/tiled,
/area/horizon/commissary)
@@ -33864,6 +33840,25 @@
},
/turf/simulated/floor/tiled,
/area/maintenance/aux_atmospherics/deck_2/starboard/wing)
+"pHd" = (
+/obj/machinery/access_button{
+ command = "cycle_interior";
+ frequency = 1380;
+ master_tag = "centcom_shuttle_dock_airlock";
+ name = "interior access button";
+ pixel_x = -25;
+ pixel_y = -25;
+ req_access = list(13)
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden{
+ dir = 10
+ },
+/obj/effect/floor_decal/corner/dark_green/full{
+ dir = 4
+ },
+/obj/machinery/alarm/east,
+/turf/simulated/floor/tiled,
+/area/security/checkpoint2)
"pHp" = (
/obj/structure/cable/green{
icon_state = "1-2"
@@ -34187,7 +34182,44 @@
/obj/effect/floor_decal/industrial/outline/yellow,
/turf/simulated/floor/tiled,
/area/engineering/storage_eva)
-"pPA" = (
+"pPO" = (
+/obj/item/stack/wrapping_paper,
+/obj/structure/table/standard,
+/obj/item/stack/wrapping_paper,
+/obj/item/stack/packageWrap{
+ pixel_y = 8
+ },
+/obj/item/stack/packageWrap{
+ pixel_y = 8
+ },
+/obj/effect/floor_decal/corner/brown/full{
+ dir = 4
+ },
+/obj/machinery/alarm/east,
+/turf/simulated/floor/tiled,
+/area/operations/mail_room)
+"pPV" = (
+/obj/item/rig/medical/equipped{
+ pixel_x = 4;
+ pixel_y = 5
+ },
+/obj/item/rig/medical/equipped{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/structure/window/reinforced{
+ dir = 8
+ },
+/obj/structure/window/reinforced{
+ dir = 4
+ },
+/obj/structure/table/rack{
+ pixel_y = 5
+ },
+/obj/machinery/door/window/southleft,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
+"pQf" = (
/obj/structure/table/standard,
/obj/machinery/requests_console/east{
department = "Research and Development";
@@ -34211,34 +34243,12 @@
/obj/machinery/atmospherics/unary/vent_scrubber/on{
dir = 8
},
+/obj/machinery/recharger{
+ pixel_x = -7;
+ pixel_y = 8
+ },
/turf/simulated/floor/tiled/white,
/area/rnd/lab)
-"pPM" = (
-/obj/machinery/light,
-/obj/effect/floor_decal/industrial/outline/yellow,
-/obj/structure/table/rack,
-/obj/item/storage/box/monkeycubes,
-/obj/item/storage/box/monkeycubes,
-/obj/item/storage/box/monkeycubes,
-/obj/item/storage/box/monkeycubes,
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
-"pPO" = (
-/obj/item/stack/wrapping_paper,
-/obj/structure/table/standard,
-/obj/item/stack/wrapping_paper,
-/obj/item/stack/packageWrap{
- pixel_y = 8
- },
-/obj/item/stack/packageWrap{
- pixel_y = 8
- },
-/obj/effect/floor_decal/corner/brown/full{
- dir = 4
- },
-/obj/machinery/alarm/east,
-/turf/simulated/floor/tiled,
-/area/operations/mail_room)
"pQj" = (
/obj/structure/cable/green{
icon_state = "1-2"
@@ -35174,6 +35184,11 @@
},
/turf/simulated/open,
/area/maintenance/wing/starboard)
+"qoc" = (
+/obj/effect/floor_decal/industrial/warning/full,
+/obj/machinery/mech_recharger,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"qoy" = (
/obj/structure/disposalpipe/segment{
dir = 4
@@ -35439,24 +35454,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/grauwolf)
-"quV" = (
-/obj/item/reagent_containers/blood/OMinus,
-/obj/item/reagent_containers/blood/sbs,
-/obj/item/reagent_containers/blood/OMinus,
-/obj/item/reagent_containers/blood/OMinus,
-/obj/structure/closet/walllocker/medical/secure{
- name = "O- Blood Locker";
- pixel_y = 32
- },
-/obj/structure/cable/green{
- icon_state = "0-2"
- },
-/obj/machinery/power/apc/west,
-/turf/simulated/floor/tiled/freezer{
- name = "cold storage tiles";
- temperature = 278
- },
-/area/medical/surgery)
"qvb" = (
/obj/structure/shuttle_part/scc_space_ship{
icon_state = "d3-6"
@@ -35838,18 +35835,6 @@
"qDh" = (
/turf/simulated/wall/r_wall,
/area/horizon/security/equipment)
-"qDD" = (
-/obj/structure/table/standard,
-/obj/machinery/computer/security/telescreen{
- name = "Access Monitor";
- network = list("Xeno_Bio");
- req_access = list(55)
- },
-/obj/effect/floor_decal/corner/mauve{
- dir = 10
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
"qDU" = (
/obj/structure/bed/stool/padded/red,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
@@ -36035,6 +36020,14 @@
},
/turf/simulated/floor/tiled/full,
/area/hallway/primary/central_one)
+"qGr" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/effect/floor_decal/industrial/warning/corner,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"qGH" = (
/obj/structure/table/standard,
/obj/item/paper_bin{
@@ -36133,21 +36126,6 @@
/obj/structure/lattice/catwalk/indoor,
/turf/simulated/floor/plating,
/area/engineering/engine_room/rust)
-"qJr" = (
-/obj/structure/platform{
- dir = 4
- },
-/obj/structure/sign/fire{
- desc = "A warning sign which reads 'DANGER: SHUTTLE THRUSTERS IN USE' and 'MIND THE DISTANCE'.";
- name = "\improper DANGER: THRUSTERS sign";
- pixel_x = -32
- },
-/obj/structure/disposalpipe/trunk{
- dir = 4
- },
-/obj/machinery/disposal/small/east,
-/turf/simulated/floor/tiled/dark/full,
-/area/operations/lower/machinist)
"qKi" = (
/obj/machinery/button/remote/airlock{
dir = 1;
@@ -36275,15 +36253,6 @@
/obj/structure/reagent_dispensers/watertank,
/turf/simulated/floor/plating,
/area/horizon/maintenance/deck_two/fore/port)
-"qPf" = (
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/obj/machinery/atmospherics/binary/pump{
- dir = 1
- },
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/engine_room/rust)
"qPo" = (
/obj/structure/table/rack,
/obj/item/storage/toolbox/mechanical,
@@ -36352,6 +36321,23 @@
},
/turf/simulated/floor/tiled,
/area/operations/office)
+"qQm" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
+ dir = 4
+ },
+/obj/machinery/door/blast/regular{
+ dir = 2;
+ id = "EngineEmitterPortWest";
+ name = "Supermatter Reactor Waste Management Blast Door"
+ },
+/turf/simulated/floor/tiled/full,
+/area/engineering/engine_waste)
"qQs" = (
/obj/random/junk,
/turf/simulated/floor/plating,
@@ -36555,6 +36541,40 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled,
/area/operations/lobby)
+"qTK" = (
+/obj/structure/table/standard,
+/obj/machinery/light,
+/obj/effect/floor_decal/corner/mauve/full{
+ dir = 4
+ },
+/obj/item/reagent_containers/glass/beaker{
+ pixel_y = 8
+ },
+/obj/item/reagent_containers/glass/beaker{
+ pixel_y = 8
+ },
+/obj/item/device/slime_scanner{
+ pixel_x = -11;
+ pixel_y = 4
+ },
+/obj/item/device/slime_scanner{
+ pixel_x = -11;
+ pixel_y = 4
+ },
+/obj/item/storage/box/slides{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/item/storage/box/syringes{
+ pixel_x = 5;
+ pixel_y = 1
+ },
+/obj/item/storage/box/syringes{
+ pixel_x = 5;
+ pixel_y = 1
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"qTP" = (
/obj/structure/railing/mapped,
/obj/effect/floor_decal/industrial/warning/cee{
@@ -36633,21 +36653,6 @@
},
/turf/simulated/floor/tiled/dark,
/area/hallway/primary/central_one)
-"qVw" = (
-/obj/structure/table/stone/marble,
-/obj/item/material/kitchen/rollingpin{
- pixel_x = 6;
- pixel_y = 10
- },
-/obj/item/material/knife{
- pixel_x = -9
- },
-/obj/item/storage/box/produce{
- pixel_x = 3;
- pixel_y = -5
- },
-/turf/simulated/floor/tiled/dark/full,
-/area/horizon/kitchen)
"qVx" = (
/turf/simulated/wall/r_wall,
/area/rnd/xenobiology/hazardous)
@@ -36849,16 +36854,6 @@
},
/turf/simulated/floor/tiled,
/area/hallway/engineering)
-"qZM" = (
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/effect/floor_decal/industrial/warning/corner{
- dir = 8
- },
-/obj/effect/floor_decal/industrial/warning{
- dir = 1
- },
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"raA" = (
/obj/structure/disposalpipe/segment{
dir = 8;
@@ -36883,16 +36878,6 @@
/obj/random/loot,
/turf/simulated/floor/tiled/dark/full,
/area/operations/lower/machinist)
-"rbr" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/airlock/hatch{
- locked = 1;
- name = "INDRA Reactor Core Access";
- req_one_access = list(11,24)
- },
-/obj/effect/floor_decal/industrial/hatch/yellow,
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/engine_room/rust)
"rbs" = (
/obj/structure/grille,
/obj/structure/window/shuttle/scc_space_ship/cardinal,
@@ -36975,6 +36960,36 @@
},
/turf/simulated/floor/tiled/dark,
/area/horizon/zat)
+"rcC" = (
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
+/obj/effect/floor_decal/spline/fancy/wood{
+ dir = 4
+ },
+/obj/effect/floor_decal/spline/fancy/wood{
+ dir = 8
+ },
+/obj/machinery/button/remote/blast_door{
+ dir = 4;
+ id = "massdriver";
+ name = "Mass Driver Interior Blast Door";
+ pixel_x = 25;
+ pixel_y = 11
+ },
+/obj/machinery/button/remote/blast_door{
+ dir = 4;
+ id = "chapel_driver";
+ name = "Mass Driver Exterior Blast Door";
+ pixel_x = 25
+ },
+/obj/machinery/button/mass_driver{
+ _wifi_id = "chapel_driver";
+ dir = 8;
+ id = "chapel_driver";
+ pixel_x = 35;
+ pixel_y = 5
+ },
+/turf/simulated/floor/wood,
+/area/chapel/office)
"rcH" = (
/obj/structure/cable{
icon_state = "1-2"
@@ -37138,6 +37153,21 @@
},
/turf/simulated/floor/plating,
/area/engineering/smes)
+"rgy" = (
+/obj/structure/platform{
+ dir = 4
+ },
+/obj/structure/sign/fire{
+ desc = "A warning sign which reads 'DANGER: SHUTTLE THRUSTERS IN USE' and 'MIND THE DISTANCE'.";
+ name = "\improper DANGER: THRUSTERS sign";
+ pixel_x = -32
+ },
+/obj/structure/disposalpipe/trunk{
+ dir = 4
+ },
+/obj/machinery/disposal/small/east,
+/turf/simulated/floor/tiled/dark/full,
+/area/operations/lower/machinist)
"rgH" = (
/obj/structure/disposalpipe/segment,
/obj/structure/cable/green{
@@ -37784,27 +37814,6 @@
},
/turf/simulated/floor/carpet/rubber,
/area/engineering/engine_room/rust)
-"rxC" = (
-/obj/structure/table/stone/marble,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/item/material/kitchen/rollingpin{
- pixel_x = 6;
- pixel_y = 10
- },
-/obj/item/material/knife{
- pixel_x = -9
- },
-/obj/item/storage/box/produce{
- pixel_x = 3;
- pixel_y = -5
- },
-/turf/simulated/floor/tiled/dark/full,
-/area/horizon/kitchen)
"ryb" = (
/obj/machinery/atmospherics/pipe/manifold/visible{
dir = 1
@@ -37887,6 +37896,14 @@
},
/turf/simulated/floor/tiled,
/area/horizon/security/lobby)
+"rzw" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/effect/floor_decal/industrial/warning,
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"rzC" = (
/obj/effect/decal/cleanable/dirt,
/obj/effect/floor_decal/industrial/outline/yellow,
@@ -37917,15 +37934,6 @@
/obj/structure/table/reinforced/glass,
/turf/simulated/floor/carpet/rubber,
/area/rnd/lab)
-"rAn" = (
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/machinery/firealarm/west,
-/obj/machinery/alarm/north{
- req_one_access = list(24,11,55)
- },
-/obj/structure/flora/ausbushes/sparsegrass,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"rAw" = (
/obj/structure/cable/green{
icon_state = "4-8"
@@ -38055,10 +38063,6 @@
/obj/structure/disposalpipe/segment,
/turf/simulated/floor/tiled,
/area/hallway/primary/central_two)
-"rEY" = (
-/obj/machinery/suit_cycler/medical,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"rFn" = (
/turf/simulated/wall/r_wall,
/area/rnd/xenobiology/xenoflora)
@@ -38486,23 +38490,6 @@
},
/turf/simulated/floor/wood,
/area/horizon/library)
-"rPY" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/cyan{
- dir = 4
- },
-/obj/machinery/door/blast/regular{
- dir = 2;
- id = "EngineEmitterPortWest";
- name = "Supermatter Reactor Waste Management Blast Door"
- },
-/turf/simulated/floor/tiled/full,
-/area/engineering/engine_waste)
"rQf" = (
/obj/effect/floor_decal/spline/fancy/wood{
dir = 4
@@ -38897,11 +38884,6 @@
},
/turf/simulated/floor/tiled/white,
/area/horizon/security/brig)
-"rXm" = (
-/obj/effect/floor_decal/industrial/warning/full,
-/obj/machinery/mech_recharger,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"rXD" = (
/obj/structure/disposalpipe/segment,
/obj/effect/floor_decal/corner/brown{
@@ -39203,6 +39185,10 @@
/obj/effect/floor_decal/industrial/hatch/yellow,
/turf/simulated/floor/tiled/white,
/area/rnd/xenobiology)
+"sfG" = (
+/obj/structure/extinguisher_cabinet/east,
+/turf/simulated/floor/tiled/dark,
+/area/horizon/zat)
"sgi" = (
/obj/structure/shuttle_part/scc_space_ship{
icon_state = "d3-6"
@@ -39832,31 +39818,6 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/tiled/full,
/area/horizon/bar)
-"sxl" = (
-/obj/structure/table/standard,
-/obj/item/grenade/chem_grenade,
-/obj/item/grenade/chem_grenade,
-/obj/item/grenade/chem_grenade,
-/obj/item/grenade/chem_grenade,
-/obj/item/device/assembly/igniter,
-/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,
-/obj/item/device/assembly/timer,
-/obj/structure/closet/crate/drop/grey{
- desc = "A large, sturdy crate, that stores grenade components.";
- name = "grenade crate";
- pixel_y = -4;
- tablestatus = -1
- },
-/obj/effect/floor_decal/corner_wide/orange{
- dir = 10
- },
-/turf/simulated/floor/tiled/white,
-/area/medical/pharmacy)
"sxt" = (
/obj/effect/floor_decal/corner_wide/lime{
dir = 10
@@ -39949,12 +39910,6 @@
},
/turf/simulated/wall,
/area/maintenance/aux_atmospherics/deck_2/starboard)
-"sBy" = (
-/obj/structure/flora/ausbushes/sparsegrass,
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/item/device/radio/intercom/west,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"sBz" = (
/obj/structure/bed/stool/chair/office{
dir = 4
@@ -40464,6 +40419,17 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/ors)
+"sQM" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner/mauve{
+ dir = 1
+ },
+/obj/machinery/atmospherics/unary/vent_pump/on{
+ dir = 4
+ },
+/obj/machinery/centrifuge,
+/turf/simulated/floor/tiled/white,
+/area/rnd/lab)
"sRe" = (
/obj/structure/cable/green{
icon_state = "1-2"
@@ -40539,6 +40505,16 @@
},
/turf/simulated/floor/tiled,
/area/operations/office)
+"sTw" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/bed/stool/chair/office/light{
+ dir = 8
+ },
+/obj/effect/floor_decal/industrial/warning/corner{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"sUa" = (
/obj/effect/floor_decal/corner/mauve{
dir = 5
@@ -40696,6 +40672,21 @@
},
/turf/simulated/open/airless,
/area/horizon/exterior)
+"sXa" = (
+/obj/structure/platform{
+ dir = 1
+ },
+/obj/structure/railing/mapped,
+/obj/effect/floor_decal/corner/mauve/diagonal,
+/obj/machinery/light/floor,
+/obj/machinery/papershredder{
+ pixel_x = 7
+ },
+/obj/structure/filingcabinet/filingcabinet{
+ pixel_x = -7
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/lab)
"sXb" = (
/obj/structure/railing/mapped{
dir = 4
@@ -40978,6 +40969,13 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/engineering/engine_room/rust)
+"tbT" = (
+/obj/structure/table/standard,
+/obj/item/storage/slimes,
+/obj/machinery/recharger,
+/obj/item/net_container,
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"tch" = (
/obj/effect/decal/cleanable/dirt,
/obj/structure/trash_pile,
@@ -41022,6 +41020,20 @@
/obj/effect/decal/cleanable/dirt,
/turf/simulated/floor/plating,
/area/maintenance/substation/wing_starboard)
+"tdo" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/cable/green{
+ icon_state = "0-2"
+ },
+/obj/machinery/power/apc/low/west,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 6
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 6
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"tdv" = (
/obj/machinery/firealarm/south,
/obj/effect/floor_decal/corner/dark_blue/full{
@@ -42026,6 +42038,30 @@
/obj/machinery/light/floor,
/turf/simulated/floor/tiled/white,
/area/rnd/xenobiology/hazardous)
+"tDw" = (
+/obj/effect/floor_decal/corner/mauve{
+ dir = 5
+ },
+/obj/machinery/power/apc/high/north,
+/obj/structure/cable/green{
+ icon_state = "0-2"
+ },
+/obj/structure/table/standard,
+/obj/machinery/reagentgrinder{
+ pixel_x = 3;
+ pixel_y = 10
+ },
+/obj/item/storage/box/slides{
+ pixel_x = -5;
+ pixel_y = 5
+ },
+/obj/item/reagent_containers/chem_disp_cartridge,
+/obj/item/reagent_containers/chem_disp_cartridge,
+/obj/item/reagent_containers/chem_disp_cartridge,
+/obj/item/reagent_containers/chem_disp_cartridge,
+/obj/item/reagent_containers/chem_disp_cartridge,
+/turf/simulated/floor/tiled/dark,
+/area/rnd/xenobiology/xenoflora)
"tDZ" = (
/obj/effect/map_effect/window_spawner/full/reinforced/firedoor,
/turf/simulated/floor/tiled/dark/full,
@@ -42461,6 +42497,42 @@
},
/turf/simulated/floor/reinforced/airless,
/area/horizon/exterior)
+"tMt" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/table/standard,
+/obj/item/storage/belt/medical/paramedic,
+/obj/item/storage/belt/medical/paramedic,
+/obj/machinery/alarm/south,
+/obj/item/device/radio{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/device/radio{
+ pixel_x = -6;
+ pixel_y = 6
+ },
+/obj/item/device/radio{
+ pixel_x = 5;
+ pixel_y = 6
+ },
+/obj/item/device/radio{
+ pixel_x = 5;
+ pixel_y = 6
+ },
+/obj/machinery/vending/wallmed2{
+ pixel_y = -29
+ },
+/obj/item/device/gps/medical{
+ pixel_x = 5
+ },
+/obj/item/device/gps/medical{
+ pixel_x = -7
+ },
+/obj/machinery/requests_console/east{
+ department = "Paramedic Bay"
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"tMO" = (
/obj/structure/cable/orange{
icon_state = "4-8"
@@ -42748,20 +42820,6 @@
},
/turf/simulated/floor/tiled/white,
/area/rnd/xenobiology/foyer)
-"tSC" = (
-/obj/item/reagent_containers/blood/OMinus,
-/obj/item/reagent_containers/blood/sbs,
-/obj/item/reagent_containers/blood/OMinus,
-/obj/item/reagent_containers/blood/OMinus,
-/obj/structure/closet/walllocker/medical/secure{
- name = "O- Blood Locker";
- pixel_y = 32
- },
-/turf/simulated/floor/tiled/freezer{
- name = "cold storage tiles";
- temperature = 278
- },
-/area/medical/surgery)
"tSJ" = (
/obj/effect/floor_decal/corner/mauve{
dir = 5
@@ -43053,6 +43111,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/tiled/dark,
/area/engineering/aft_airlock)
+"uaR" = (
+/obj/structure/flora/ausbushes/sparsegrass,
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/item/device/radio/intercom/west,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"ubn" = (
/obj/effect/floor_decal/corner/pink/diagonal,
/obj/machinery/light,
@@ -43307,6 +43371,27 @@
/obj/machinery/optable,
/turf/simulated/floor/tiled/white,
/area/medical/ors)
+"ugS" = (
+/obj/structure/table/stone/marble,
+/obj/machinery/atmospherics/pipe/simple/hidden/supply{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
+ dir = 4
+ },
+/obj/item/material/kitchen/rollingpin{
+ pixel_x = 6;
+ pixel_y = 10
+ },
+/obj/item/material/knife{
+ pixel_x = -9
+ },
+/obj/item/storage/box/produce{
+ pixel_x = 3;
+ pixel_y = -5
+ },
+/turf/simulated/floor/tiled/dark/full,
+/area/horizon/kitchen)
"ugU" = (
/obj/structure/bookcase/libraryspawn/reference,
/turf/simulated/floor/carpet/brown,
@@ -43773,6 +43858,12 @@
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/turf/simulated/floor/tiled,
/area/operations/lower/machinist/surgicalbay)
+"uoM" = (
+/obj/machinery/portable_atmospherics/hydroponics/soil,
+/obj/machinery/light,
+/obj/structure/flora/ausbushes/sparsegrass,
+/turf/simulated/floor/grass,
+/area/horizon/hydroponics/garden)
"uoU" = (
/obj/effect/floor_decal/industrial/warning{
dir = 5
@@ -44463,33 +44554,6 @@
},
/turf/simulated/floor/tiled/white,
/area/medical/icu)
-"uFm" = (
-/obj/machinery/alarm/south,
-/obj/effect/floor_decal/corner/mauve{
- dir = 10
- },
-/obj/structure/table/standard,
-/obj/machinery/reagentgrinder{
- pixel_x = -6;
- pixel_y = 7
- },
-/obj/item/stack/material/phoron{
- pixel_y = 8
- },
-/obj/item/stack/material/phoron{
- pixel_y = 8
- },
-/obj/item/stack/material/phoron{
- pixel_y = 8
- },
-/obj/item/stack/material/phoron{
- pixel_y = 8
- },
-/obj/item/stack/material/phoron{
- pixel_y = 8
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
"uFo" = (
/obj/machinery/door/window/holowindoor{
dir = 1
@@ -44782,23 +44846,20 @@
/obj/machinery/door/firedoor,
/turf/simulated/floor/reinforced,
/area/horizon/bar)
-"uMM" = (
-/obj/machinery/door/firedoor,
-/obj/machinery/door/blast/shutters{
- density = 0;
- dir = 2;
- icon_state = "shutter0";
- id = "LCKDshutters";
- name = "MedBay Lockdown Shutters";
- opacity = 0
+"uMu" = (
+/obj/item/reagent_containers/blood/OMinus,
+/obj/item/reagent_containers/blood/sbs,
+/obj/item/reagent_containers/blood/OMinus,
+/obj/item/reagent_containers/blood/OMinus,
+/obj/structure/closet/walllocker/medical/secure{
+ name = "O- Blood Locker";
+ pixel_y = 32
},
-/obj/machinery/door/airlock/glass_medical{
- dir = 4;
- name = "Paramedic Quarters";
- req_access = list(67)
+/turf/simulated/floor/tiled/freezer{
+ name = "cold storage tiles";
+ temperature = 278
},
-/turf/simulated/floor/tiled/full,
-/area/medical/paramedic)
+/area/medical/surgery)
"uMT" = (
/obj/effect/floor_decal/spline/fancy/wood{
dir = 10
@@ -45166,25 +45227,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/research_port)
-"uUT" = (
-/obj/structure/cable/green{
- icon_state = "4-8"
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 4
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
- dir = 4
- },
-/obj/effect/floor_decal/corner/white/diagonal,
-/obj/machinery/door/airlock/glass_medical{
- dir = 4;
- name = "Paramedic Quarters";
- req_access = list(67)
- },
-/obj/machinery/door/firedoor,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"uVi" = (
/obj/effect/floor_decal/industrial/warning,
/obj/structure/lattice/catwalk/indoor/grate,
@@ -45315,15 +45357,6 @@
},
/turf/simulated/floor/wood,
/area/horizon/library)
-"uZt" = (
-/obj/machinery/power/terminal{
- dir = 8
- },
-/obj/machinery/atmospherics/pipe/simple/hidden/supply,
-/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
-/obj/structure/cable/yellow,
-/turf/simulated/floor/tiled/dark,
-/area/engineering/smes/rust)
"uZD" = (
/obj/effect/floor_decal/industrial/hatch/yellow,
/obj/machinery/door/firedoor,
@@ -45401,6 +45434,12 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/security/checkpoint2)
+"vbY" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/structure/table/standard,
+/obj/structure/roller_rack/two,
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"vcv" = (
/obj/effect/floor_decal/corner/white{
dir = 5
@@ -45606,15 +45645,6 @@
/obj/structure/extinguisher_cabinet/east,
/turf/simulated/floor/tiled/dark/full,
/area/rnd/chemistry)
-"vgs" = (
-/obj/effect/floor_decal/industrial/warning,
-/obj/structure/railing/mapped,
-/obj/machinery/atmospherics/portables_connector{
- dir = 1
- },
-/obj/effect/floor_decal/industrial/outline/yellow,
-/turf/simulated/floor/tiled/dark/full,
-/area/engineering/engine_room/rust)
"vgt" = (
/obj/structure/disposaloutlet{
dir = 1;
@@ -46269,6 +46299,18 @@
"vyP" = (
/turf/simulated/floor/carpet/brown,
/area/horizon/library)
+"vzd" = (
+/obj/machinery/door/blast/shutters{
+ density = 0;
+ dir = 4;
+ icon_state = "shutter0";
+ id = "LCKDshutters";
+ name = "MedBay Lockdown Shutters";
+ opacity = 0
+ },
+/obj/effect/map_effect/window_spawner/full/reinforced/firedoor,
+/turf/simulated/floor/tiled/dark/full,
+/area/medical/paramedic)
"vzv" = (
/obj/structure/platform{
dir = 1
@@ -46332,6 +46374,36 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/horizon/maintenance/deck_two/fore/starboard)
+"vBf" = (
+/obj/machinery/alarm/south,
+/obj/effect/floor_decal/corner/mauve{
+ dir = 10
+ },
+/obj/structure/table/standard,
+/obj/machinery/reagentgrinder{
+ pixel_x = -6;
+ pixel_y = 7
+ },
+/obj/item/stack/material/phoron{
+ pixel_y = 8
+ },
+/obj/item/stack/material/phoron{
+ pixel_y = 8
+ },
+/obj/item/stack/material/phoron{
+ pixel_y = 8
+ },
+/obj/item/stack/material/phoron{
+ pixel_y = 8
+ },
+/obj/item/stack/material/phoron{
+ pixel_y = 8
+ },
+/obj/item/storage/box/fancy/vials{
+ pixel_x = 10
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"vBn" = (
/obj/structure/table/standard,
/obj/effect/floor_decal/corner_wide/paleblue/full,
@@ -46902,20 +46974,6 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard/far)
-"vNL" = (
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 9
- },
-/obj/structure/window/reinforced{
- name = "adjusted reinforced window"
- },
-/obj/structure/table/wood,
-/obj/item/device/flashlight/lamp/green{
- pixel_x = 1;
- pixel_y = 3
- },
-/turf/simulated/floor/carpet,
-/area/horizon/bar/backroom)
"vNQ" = (
/turf/simulated/wall,
/area/horizon/bar/backroom)
@@ -47307,6 +47365,24 @@
/obj/random/loot,
/turf/simulated/floor/tiled/dark,
/area/maintenance/aux_atmospherics/deck_2/starboard)
+"vVz" = (
+/obj/machinery/camera/network/research{
+ c_tag = "Research - Xenobiology Fore";
+ dir = 1
+ },
+/obj/effect/floor_decal/corner/mauve{
+ dir = 10
+ },
+/obj/structure/table/standard,
+/obj/machinery/firealarm/south,
+/obj/machinery/vending/wallmed1{
+ pixel_y = -32
+ },
+/obj/machinery/microscope/science{
+ pixel_y = 8
+ },
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"vVF" = (
/obj/machinery/disposal/deliveryChute{
dir = 4
@@ -47386,43 +47462,6 @@
/obj/structure/lattice/catwalk/indoor/grate,
/turf/simulated/floor/plating,
/area/maintenance/security_port)
-"vXB" = (
-/obj/machinery/camera/network/research{
- c_tag = "Research - Xenobiology Fore";
- dir = 1
- },
-/obj/effect/floor_decal/corner/mauve{
- dir = 10
- },
-/obj/structure/table/standard,
-/obj/item/device/slime_scanner{
- pixel_x = -11;
- pixel_y = 4
- },
-/obj/item/device/slime_scanner{
- pixel_x = -11;
- pixel_y = 4
- },
-/obj/item/reagent_containers/glass/beaker{
- pixel_y = 8
- },
-/obj/item/reagent_containers/glass/beaker{
- pixel_y = 8
- },
-/obj/item/storage/box/syringes{
- pixel_x = 5;
- pixel_y = 1
- },
-/obj/item/storage/box/syringes{
- pixel_x = 5;
- pixel_y = 1
- },
-/obj/machinery/firealarm/south,
-/obj/machinery/vending/wallmed1{
- pixel_y = -32
- },
-/turf/simulated/floor/tiled/white,
-/area/rnd/xenobiology)
"vXX" = (
/obj/machinery/light/small{
dir = 1
@@ -48610,6 +48649,24 @@
},
/turf/simulated/floor/tiled/dark/full,
/area/engineering/engine_room/rust)
+"wvZ" = (
+/obj/structure/table/standard,
+/obj/effect/floor_decal/corner_wide/green/full,
+/obj/machinery/alarm/west,
+/obj/item/storage/box/masks,
+/obj/item/storage/box/masks,
+/obj/item/storage/box/gloves{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/item/storage/box/gloves{
+ pixel_x = 4;
+ pixel_y = 4
+ },
+/obj/structure/railing/mapped,
+/obj/structure/stairs_lower/stairs_upper,
+/turf/simulated/floor/tiled/white,
+/area/hallway/medical)
"wwa" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -49319,6 +49376,27 @@
},
/turf/simulated/open,
/area/horizon/hydroponics)
+"wOX" = (
+/obj/machinery/light,
+/obj/effect/floor_decal/industrial/outline/yellow,
+/obj/structure/table/rack,
+/obj/item/storage/box/monkeycubes,
+/obj/item/storage/box/monkeycubes,
+/obj/item/storage/box/monkeycubes,
+/obj/item/storage/box/monkeycubes,
+/obj/item/reagent_containers/spray/chemsprayer/xenobiology,
+/obj/item/reagent_containers/spray/chemsprayer/xenobiology,
+/obj/item/melee/baton/slime{
+ pixel_x = 3;
+ pixel_y = -1
+ },
+/obj/item/melee/baton/slime{
+ pixel_x = 3;
+ pixel_y = -1
+ },
+/obj/item/sampler,
+/turf/simulated/floor/tiled/white,
+/area/rnd/xenobiology)
"wPb" = (
/obj/machinery/hologram/holopad,
/turf/simulated/floor/reinforced,
@@ -50073,6 +50151,14 @@
},
/turf/simulated/wall/shuttle/scc_space_ship/cardinal,
/area/maintenance/wing/starboard/far)
+"xhu" = (
+/obj/machinery/body_scanconsole{
+ dir = 1;
+ pixel_y = 6
+ },
+/obj/effect/floor_decal/corner/beige/full,
+/turf/simulated/floor/tiled/dark,
+/area/medical/gen_treatment)
"xhP" = (
/obj/machinery/door/airlock/external{
dir = 1;
@@ -50354,11 +50440,6 @@
/obj/machinery/light,
/turf/simulated/floor/tiled/dark,
/area/horizon/crew_quarters/lounge/bar)
-"xmt" = (
-/obj/machinery/portable_atmospherics/hydroponics/soil,
-/obj/structure/flora/ausbushes/sparsegrass,
-/turf/simulated/floor/grass,
-/area/horizon/hydroponics/garden)
"xmw" = (
/obj/machinery/alarm/east,
/obj/effect/floor_decal/corner/dark_green/full{
@@ -50763,6 +50844,16 @@
},
/turf/simulated/floor/tiled,
/area/rnd/hallway)
+"xyt" = (
+/obj/effect/floor_decal/corner/white/diagonal,
+/obj/effect/floor_decal/industrial/warning/corner{
+ dir = 8
+ },
+/obj/effect/floor_decal/industrial/warning{
+ dir = 1
+ },
+/turf/simulated/floor/tiled,
+/area/medical/paramedic)
"xzd" = (
/obj/effect/floor_decal/corner/mauve/full,
/turf/simulated/floor/tiled/white,
@@ -50899,14 +50990,6 @@
},
/turf/simulated/open,
/area/operations/office)
-"xBN" = (
-/obj/machinery/light{
- dir = 1
- },
-/obj/structure/closet/secure_closet/medical_para,
-/obj/item/defibrillator/compact/loaded,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
"xBU" = (
/obj/effect/floor_decal/industrial/outline/engineering,
/obj/structure/closet/secure_closet/atmos_personal,
@@ -51554,14 +51637,6 @@
},
/turf/simulated/floor/plating,
/area/engineering/engine_room)
-"xQp" = (
-/obj/machinery/door/blast/regular{
- dir = 2;
- id = "EngineEmitterPortWest";
- name = "Supermatter Reactor Waste Management Blast Door"
- },
-/turf/simulated/floor/tiled/full,
-/area/engineering/engine_waste)
"xQz" = (
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/tiled,
@@ -51805,27 +51880,16 @@
},
/turf/simulated/floor/tiled,
/area/operations/lobby)
-"xWa" = (
-/obj/item/rig/medical/equipped{
- pixel_x = 4;
- pixel_y = 5
+"xVW" = (
+/obj/machinery/door/firedoor,
+/obj/machinery/door/airlock/hatch{
+ locked = 1;
+ name = "INDRA Reactor Core Access";
+ req_one_access = list(11,24)
},
-/obj/item/rig/medical/equipped{
- pixel_x = -5;
- pixel_y = 5
- },
-/obj/structure/window/reinforced{
- dir = 8
- },
-/obj/structure/window/reinforced{
- dir = 4
- },
-/obj/structure/table/rack{
- pixel_y = 5
- },
-/obj/machinery/door/window/southleft,
-/turf/simulated/floor/tiled,
-/area/medical/paramedic)
+/obj/effect/floor_decal/industrial/hatch/yellow,
+/turf/simulated/floor/tiled/dark/full,
+/area/engineering/engine_room/rust)
"xWb" = (
/obj/effect/map_effect/window_spawner/full/reinforced/firedoor,
/obj/machinery/door/blast/shutters/open{
@@ -51899,24 +51963,6 @@
},
/turf/simulated/floor/wood,
/area/horizon/bar)
-"xXM" = (
-/obj/effect/floor_decal/corner/mauve{
- dir = 5
- },
-/obj/effect/floor_decal/corner/white{
- dir = 10
- },
-/obj/structure/cable/green{
- d1 = 1;
- d2 = 2;
- icon_state = "1-2"
- },
-/obj/structure/table/standard,
-/obj/machinery/atmospherics/pipe/simple/hidden/supply{
- dir = 6
- },
-/turf/simulated/floor/tiled/dark,
-/area/rnd/xenobiology/xenoflora)
"xXN" = (
/obj/structure/platform{
dir = 8
@@ -52175,16 +52221,6 @@
/obj/effect/floor_decal/industrial/warning/corner,
/turf/simulated/floor/plating,
/area/maintenance/wing/starboard)
-"yci" = (
-/obj/machinery/atmospherics/unary/vent_scrubber/on,
-/obj/machinery/status_display{
- pixel_y = 32
- },
-/obj/effect/floor_decal/corner/dark_blue{
- dir = 5
- },
-/turf/simulated/floor/tiled,
-/area/horizon/security/hallway)
"yct" = (
/obj/random/pottedplant,
/obj/machinery/light{
@@ -61487,7 +61523,7 @@ wRu
quT
pag
tNq
-llB
+gnE
cjX
uBx
xHq
@@ -66712,7 +66748,7 @@ atK
oXY
axB
dKR
-jeY
+jOC
rTP
xGM
rTP
@@ -66924,7 +66960,7 @@ pzr
iNY
jlQ
bOV
-kUc
+wvZ
nkK
nIi
iuP
@@ -67352,7 +67388,7 @@ mwH
dmD
wUU
hmK
-aSd
+pHd
qqK
hoZ
blJ
@@ -67924,7 +67960,7 @@ sMn
vvh
fsf
xhj
-quV
+aSD
oJL
fHq
fQV
@@ -68328,7 +68364,7 @@ qek
kxP
lfF
xhj
-tSC
+uMu
nMp
uUJ
bYB
@@ -68563,7 +68599,7 @@ fol
bsM
uEu
oKE
-jpf
+rcC
vYI
lCF
xVu
@@ -69558,7 +69594,7 @@ kFD
pVz
aUh
kFD
-sxl
+pnu
wEc
hEF
hBL
@@ -69916,13 +69952,13 @@ tNa
gsz
gsz
gsz
-rPY
-xQp
-xQp
-jfp
-xQp
-xQp
-jfp
+qQm
+ayO
+ayO
+jWL
+ayO
+ayO
+jWL
gsz
gsz
gsz
@@ -70152,7 +70188,7 @@ jUB
xQB
vTY
dLo
-cGJ
+xhu
axJ
pJt
hQb
@@ -70374,7 +70410,7 @@ vXs
pef
oMC
oMC
-akX
+bId
mIS
gVn
wmp
@@ -71161,7 +71197,7 @@ aQp
wyV
bNF
ptC
-dPi
+gbR
jnO
uRz
wUs
@@ -71358,12 +71394,12 @@ fKi
xxi
dpG
sYl
-oUt
-oUt
-oUt
-oUt
-oUt
-uUT
+eac
+eac
+eac
+eac
+eac
+egQ
ruV
ruV
ruV
@@ -71560,17 +71596,17 @@ fKi
xxi
isH
akn
-oUt
-xWa
-auU
-aIy
-aOs
-aTm
+eac
+pPV
+apI
+nIL
+tdo
+kgE
ruV
bZD
tao
xSU
-oAy
+cDC
ruV
vTJ
taX
@@ -71762,12 +71798,12 @@ mhj
xxi
isH
amk
-oUt
-xBN
-ohE
-aME
-aQu
-aTt
+eac
+kMM
+qGr
+iOb
+ptx
+gHu
ruV
cua
fAk
@@ -71796,7 +71832,7 @@ pjQ
wVT
vNQ
aib
-vNL
+ilq
uZh
nxI
uws
@@ -71964,12 +72000,12 @@ fKi
nbJ
isH
akn
-oUt
-auj
-axS
-rXm
-avl
-aZR
+eac
+naR
+rzw
+qoc
+mtl
+vbY
ruV
jBw
fAk
@@ -72166,12 +72202,12 @@ wSp
way
vWt
sYl
-oUt
-rEY
-qZM
-fdE
-oXf
-bdy
+eac
+nDI
+xyt
+mzN
+sTw
+tMt
ruV
kiJ
jeP
@@ -72368,12 +72404,12 @@ oWB
nbJ
uMn
uKJ
-oUt
-oUt
-uMM
-oUt
-okq
-oUt
+eac
+eac
+fta
+eac
+vzd
+eac
ruV
ruV
lOO
@@ -73021,7 +73057,7 @@ oNv
xtu
hIq
mOH
-oCG
+mvg
ucY
bTz
srq
@@ -73408,10 +73444,10 @@ hGj
nVX
cSi
xOo
-rAn
+jDG
nfN
uSv
-sBy
+uaR
dvw
gmt
buz
@@ -73610,10 +73646,10 @@ mHh
slm
uZs
vCa
-xmt
+aps
wCt
buG
-eAX
+kMf
hPC
euT
gAP
@@ -73812,10 +73848,10 @@ hTT
slm
sOu
vCa
-xmt
+aps
bCV
jRO
-xmt
+aps
hPC
oTR
giw
@@ -73969,7 +74005,7 @@ jFu
ulg
fnn
fnn
-kyV
+cLa
pFx
abR
gAt
@@ -74014,10 +74050,10 @@ tPJ
oqN
bQt
xOo
-gFc
+oGW
jqQ
qnl
-mBk
+uoM
dvw
gsh
jDa
@@ -74216,10 +74252,10 @@ xuj
gXb
xOo
xOo
-fwE
+arl
bTM
hTt
-xmt
+aps
dvw
mjl
mXh
@@ -74435,9 +74471,9 @@ lSH
fMQ
hLJ
cUR
-rxC
+ugS
dJV
-qVw
+dsc
tIB
tjS
tjS
@@ -74588,7 +74624,7 @@ hDr
jdH
aUB
yjZ
-qJr
+rgy
rCd
dRN
dJh
@@ -75624,7 +75660,7 @@ tGX
gMA
sIR
efA
-eEr
+cai
tfL
kFa
vuo
@@ -75985,7 +76021,7 @@ mPh
wsL
pbN
fZI
-uZt
+pmY
iwu
xvZ
wfD
@@ -76786,9 +76822,9 @@ rkO
uoY
rkO
tOr
-lui
-qPf
-vgs
+pva
+pxA
+dHo
iHo
ums
gVl
@@ -76828,7 +76864,7 @@ ayF
ayF
ayF
hnD
-msO
+jjs
upE
fpQ
drk
@@ -76988,7 +77024,7 @@ aBY
hdo
gzr
ubz
-rbr
+xVW
cBq
sSE
tFH
@@ -77208,10 +77244,10 @@ gcS
tyd
sVn
xee
-fan
-iSn
-fmV
-fGi
+cfB
+jpT
+clh
+sQM
ouk
hKB
aTd
@@ -77392,7 +77428,7 @@ qZl
uoY
omA
ubz
-rbr
+xVW
wVn
tbQ
nzn
@@ -77410,7 +77446,7 @@ nOJ
lHx
wZw
jEM
-jDU
+eHt
jim
fnh
vQd
@@ -77594,9 +77630,9 @@ fJI
hdo
fJI
uUa
-lui
-qPf
-iKQ
+pva
+pxA
+klk
eoh
aCU
gVl
@@ -78223,7 +78259,7 @@ hSU
rRh
eZp
jim
-kyR
+sXa
cer
dEb
upt
@@ -78625,7 +78661,7 @@ uGW
rAi
rAi
iUg
-pPA
+pQf
jim
jES
jeb
@@ -78852,7 +78888,7 @@ hps
hps
hps
hps
-yci
+eGO
vtf
wLk
qDh
@@ -80028,7 +80064,7 @@ bqe
bff
bqe
mHH
-mHM
+ciA
iEB
fyU
aWs
@@ -82059,8 +82095,8 @@ aAx
yeY
rFn
rFn
-lvl
-xXM
+tDw
+iVf
fZU
nfK
mPn
@@ -83495,7 +83531,7 @@ qsw
wgI
qsw
qsw
-qDD
+nZH
iwo
rkv
tXR
@@ -83691,13 +83727,13 @@ iwo
qVH
ool
qsw
-gmE
+tbT
vQJ
-pPM
+wOX
aoD
wye
vht
-uFm
+vBf
iwo
lvq
eXU
@@ -83899,7 +83935,7 @@ qsw
vmO
qsw
qsw
-vXB
+vVz
iwo
ryu
aru
@@ -84101,7 +84137,7 @@ sfr
fPb
aax
sfr
-cJU
+qTK
iwo
ryu
tch
@@ -88339,7 +88375,7 @@ jsR
nLg
aPN
aPN
-hkt
+sfG
yjr
aPN
rdZ
@@ -88755,7 +88791,7 @@ ozr
qgr
rCG
aPN
-ebm
+bZc
tFK
ofb
nOi