diff --git a/baystation12.dme b/baystation12.dme
index 0724e2048b3..b419cd59be9 100644
--- a/baystation12.dme
+++ b/baystation12.dme
@@ -124,6 +124,7 @@
#define FILE_DIR "code/modules/mob/living/silicon/robot"
#define FILE_DIR "code/modules/mob/new_player"
#define FILE_DIR "code/modules/mob/organ"
+#define FILE_DIR "code/modules/mob/simple_animal"
#define FILE_DIR "code/modules/power"
#define FILE_DIR "code/modules/power/antimatter"
#define FILE_DIR "code/modules/power/singularity"
@@ -302,7 +303,6 @@
#include "code\defines\turf.dm"
#include "code\defines\world.dm"
#include "code\defines\area\Space Station 13 areas.dm"
-#include "code\defines\mob\mob.dm"
#include "code\defines\mob\dead\observer.dm"
#include "code\defines\mob\living\living.dm"
#include "code\defines\mob\living\carbon\alien.dm"
@@ -432,6 +432,7 @@
#include "code\game\gamemodes\blob\theblob.dm"
#include "code\game\gamemodes\changeling\changeling.dm"
#include "code\game\gamemodes\changeling\changeling_powers.dm"
+#include "code\game\gamemodes\changeling\modularchangling.dm"
#include "code\game\gamemodes\changeling\traitor_chan.dm"
#include "code\game\gamemodes\cult\cult.dm"
#include "code\game\gamemodes\cult\cult_items.dm"
@@ -605,6 +606,7 @@
#include "code\game\objects\displaycase.dm"
#include "code\game\objects\door_assembly.dm"
#include "code\game\objects\effect_system.dm"
+#include "code\game\objects\electricchair.dm"
#include "code\game\objects\empulse.dm"
#include "code\game\objects\explosion.dm"
#include "code\game\objects\gibs.dm"
@@ -853,6 +855,7 @@
#include "code\modules\mob\login.dm"
#include "code\modules\mob\logout.dm"
#include "code\modules\mob\mob.dm"
+#include "code\modules\mob\mob_defines.dm"
#include "code\modules\mob\mob_grab.dm"
#include "code\modules\mob\mob_helpers.dm"
#include "code\modules\mob\mob_movement.dm"
diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
index dde36fcd480..3819cda6dd7 100644
--- a/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Tajara/examine.dm
@@ -81,24 +81,24 @@
if (src.wear_id)
var/id
- var/photo = 0
+// var/photo = 0
if(istype(src:wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = src:wear_id
id = pda.owner
else
- id = src.wear_id.registered_name
- if (src.wear_id.PHOTO)
- photo = 1
- if (id != src.real_name && in_range(src, usr) && prob(10))
- if (photo)
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
- else
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
+ id = src.wear_id.registered
+// if (src.wear_id.PHOTO)
+// photo = 1
+ if (id != src.real_name && in_range(src, usr))
+// if (photo)
+// usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
+// else
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
else
- if (photo)
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
- else
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
+// if (photo)
+// usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
+// else
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
if (src.is_jittery)
diff --git a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
index 3ac7e6364e1..2fc89ab2252 100644
--- a/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
+++ b/code/WorkInProgress/Cael_Aislinn/Tajara/tajaran.dm
@@ -344,8 +344,8 @@
if (wear_id)
if (istype(wear_id, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/id = wear_id
- if (id.registered_name)
- name = id.registered_name
+ if (id.registered)
+ name = id.registered
else
name = "Unknown"
else if (istype(wear_id, /obj/item/device/pda))
@@ -360,8 +360,8 @@
if (wear_id)
if (istype(wear_id, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/id = wear_id
- if (id.registered_name != real_name)
- name = "[real_name] (as [id.registered_name])"
+ if (id.registered != real_name)
+ name = "[real_name] (as [id.registered])"
else if (istype(wear_id, /obj/item/device/pda))
diff --git a/code/datums/configuration.dm b/code/datums/configuration.dm
index 9e05d3f8541..a929f8342a2 100644
--- a/code/datums/configuration.dm
+++ b/code/datums/configuration.dm
@@ -12,6 +12,11 @@
var/log_game = 0 // log game events
var/log_vote = 0 // log voting
var/log_whisper = 0 // log client whisper
+ var/log_emote = 0 // log emotes
+ var/log_attack = 0 // log attack messages
+ var/log_adminchat = 0 // log admin chat messages
+ var/log_adminwarn = 0 // log warnings admins get about bomb construction and such
+ var/log_pda = 0 // log pda messages
var/sql_enabled = 1 // for sql switching
var/allow_vote_restart = 0 // allow votes to restart
var/allow_vote_mode = 0 // allow votes to change mode
@@ -22,14 +27,18 @@
var/vote_period = 60 // length of voting period (seconds, default 1 minute)
var/vote_no_default = 0 // vote does not default to nochange/norestart (tbi)
var/vote_no_dead = 0 // dead people can't vote (tbi)
+ var/enable_authentication = 0 // goon authentication
var/del_new_on_log = 1 // del's new players if they log before they spawn in
var/feature_object_spell_system = 0 //spawns a spellbook which gives object-type spells instead of verb-type spells for the wizard
var/traitor_scaling = 0 //if amount of traitors scales based on amount of players
+ var/protect_roles_from_antagonist = 0// If security and such can be tratior/cult/other
+ var/Tensioner_Active = 0 // If the tensioner is running.
var/list/mode_names = list()
var/list/modes = list() // allowed modes
var/list/votable_modes = list() // votable modes
var/list/probabilities = list() // relative probability of each mode
+ var/allow_random_events = 0 // enables random events mid-round when set to 1
var/allow_ai = 1 // allow ai job
var/hostedby = null
var/respawn = 1
@@ -49,6 +58,9 @@
var/alert_desc_red_downto = "The self-destruct mechanism has been deactivated. However, there is still however an immediate serious threat to the station. Security may have weapons unholstered at all times, random searches are allowed and advised."
var/alert_desc_delta = "The station's self-destruct mechanism has been engaged. All crew are instructed to obey all instructions given by heads of staff. Any violations of these orders can be punished by death. This is not a drill."
+ var/forbid_singulo_possession = 0
+ var/useircbot = 0
+
//game_options.txt configs
var/health_threshold_crit = 0
@@ -138,6 +150,21 @@
if ("log_whisper")
config.log_whisper = 1
+ if ("log_attack")
+ config.log_attack = 1
+
+ if ("log_emote")
+ config.log_emote = 1
+
+ if ("log_adminchat")
+ config.log_adminchat = 1
+
+ if ("log_adminwarn")
+ config.log_adminwarn = 1
+
+ if ("log_pda")
+ config.log_pda = 1
+
if ("allow_vote_restart")
config.allow_vote_restart = 1
@@ -168,6 +195,9 @@
if ("allow_ai")
config.allow_ai = 1
+ if ("authentication")
+ config.enable_authentication = 1
+
if ("norespawn")
config.respawn = 0
@@ -204,6 +234,12 @@
if ("traitor_scaling")
config.traitor_scaling = 1
+ if("protect_roles_from_antagonist")
+ config.protect_roles_from_antagonist = 1
+
+ if("tensioner_active")
+ config.Tensioner_Active = 1
+
if ("probability")
var/prob_pos = findtext(value, " ")
var/prob_name = null
@@ -219,7 +255,10 @@
else
diary << "Incorrect probability configuration definition: [prob_name] [prob_value]."
- if ("kick_inactive")
+ if("allow_random_events")
+ config.allow_random_events = 1
+
+ if("kick_inactive")
config.kick_inactive = 1
if("load_jobs_from_txt")
@@ -243,6 +282,12 @@
if("alert_delta")
config.alert_desc_delta = value
+ if("forbid_singulo_possession")
+ forbid_singulo_possession = 1
+
+ if("useircbot")
+ useircbot = 1
+
if("require_heads_alive")
config.require_heads_alive = value
diff --git a/code/defines/area/Space Station 13 areas.dm b/code/defines/area/Space Station 13 areas.dm
index 1132d212f46..a467460bd50 100755
--- a/code/defines/area/Space Station 13 areas.dm
+++ b/code/defines/area/Space Station 13 areas.dm
@@ -34,6 +34,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
var/requires_power = 1
var/always_unpowered = 0 //this gets overriden to 1 for space in area/New()
+
var/power_equip = 1
var/power_light = 1
var/power_environ = 1
@@ -42,6 +43,7 @@ NOTE: there are two lists of areas in the end of this file: centcom and station
var/used_light = 0
var/used_environ = 0
+ var/has_gravity = 1
var/no_air = null
var/area/master // master area used for power calcluations
@@ -82,7 +84,7 @@ proc/process_ghost_teleport_locs()
ghostteleportlocs += AR.name
ghostteleportlocs[AR.name] = AR
var/turf/picked = pick(get_area_turfs(AR.type))
- if (picked.z == 1 || picked.z == 3 || picked.z == 5)
+ if (picked.z == 1 || picked.z == 5 || picked.z == 3)
ghostteleportlocs += AR.name
ghostteleportlocs[AR.name] = AR
@@ -147,6 +149,61 @@ proc/process_ghost_teleport_locs()
/area/shuttle/escape/centcom
icon_state = "shuttle"
+/area/shuttle/escape/transit // the area to pass through for 3 minute transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod1
+ name = "Escape Pod One"
+ music = "music/escape.ogg"
+
+/area/shuttle/escape_pod1/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod1/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod1/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod2
+ name = "Escape Pod Two"
+ music = "music/escape.ogg"
+
+/area/shuttle/escape_pod2/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod2/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod2/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod3
+ name = "Escape Pod Three"
+ music = "music/escape.ogg"
+
+/area/shuttle/escape_pod3/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod3/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod3/transit
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod5 //Pod 4 was lost to meteors
+ name = "Escape Pod Five"
+ music = "music/escape.ogg"
+
+/area/shuttle/escape_pod5/station
+ icon_state = "shuttle2"
+
+/area/shuttle/escape_pod5/centcom
+ icon_state = "shuttle"
+
+/area/shuttle/escape_pod5/transit
+ icon_state = "shuttle"
+
/area/shuttle/mining
name = "Mining Shuttle"
music = "music/escape.ogg"
@@ -253,6 +310,7 @@ proc/process_ghost_teleport_locs()
requires_power = 0
luminosity = 1
sd_lighting = 0
+ has_gravity = 1
// === end remove
@@ -561,6 +619,10 @@ proc/process_ghost_teleport_locs()
name = "Escape Shuttle Hallway"
icon_state = "escape"
+/area/hallway/secondary/construction
+ name = "Construction Area"
+ icon_state = "construction"
+
/area/hallway/secondary/entry
name = "Arrival Shuttle Hallway"
icon_state = "entry"
@@ -589,24 +651,20 @@ proc/process_ghost_teleport_locs()
name = "Courtroom"
icon_state = "courtroom"
-/area/crew_quarters/heads/hop
+/area/crew_quarters/heads
name = "Head of Personnel's Quarters"
icon_state = "head_quarters"
-/area/crew_quarters/heads/hor
- name = "Research Director's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/ce
- name = "Chief Engineer's Quarters"
- icon_state = "head_quarters"
-
-/area/crew_quarters/heads/hos
- name = "Head of Security's Quarters"
+/area/crew_quarters/hor
+ name = "Research Director's Office"
icon_state = "head_quarters"
/area/crew_quarters/heads/cmo
- name = "Chief Medical Officer's Quarters"
+ name = "Chief Medical Officer's Office"
+ icon_state = "head_quarters"
+
+/area/crew_quarters/chief
+ name = "Chief Engineer's Office"
icon_state = "head_quarters"
/area/mint
@@ -683,16 +741,67 @@ proc/process_ghost_teleport_locs()
name = "Law Office"
icon_state = "law"
+
+
+
+
+
+
+/area/holodeck
+ name = "Holodeck"
+ icon_state = "Holodeck"
+ luminosity = 1
+ sd_lighting = 0
+
+/area/holodeck/alphadeck
+ name = "Holodeck Alpha"
+
+
+/area/holodeck/source_plating
+ name = "Holodeck - Off"
+ icon_state = "Holodeck"
+
+/area/holodeck/source_emptycourt
+ name = "Holodeck - Empty Court"
+
+/area/holodeck/source_boxingcourt
+ name = "Holodeck - Boxing Court"
+
+/area/holodeck/source_thunderdomecourt
+ name = "Holodeck - Thunderdome Court"
+
+/area/holodeck/source_beach
+ name = "Holodeck - Beach"
+ icon_state = "Holodeck" // Lazy.
+
+/area/holodeck/source_burntest
+ name = "Holodeck - Atmospheric Burn Test"
+
+/area/holodeck/source_wildlife
+ name = "Holodeck - Wildlife Simulation"
+
+
+
+
+
+
+
+
+
+
+
//Engineering
/area/engine
- engineering
-
engine_smes
name = "Engineering SMES"
icon_state = "engine_smes"
requires_power = 0//This area only covers the batteries and they deal with their own power
+ engineering
+ name = "Engineering"
+ icon_state = "engine"
+
particle_accelerator
name = "Particle Accelerator"
icon_state = "engine_pa"
@@ -1014,6 +1123,10 @@ proc/process_ghost_teleport_locs()
name = "Toxins Lab"
icon_state = "toxlab"
+/area/toxins/storage
+ name = "Toxin Storage"
+ icon_state = "toxstorage"
+
/area/toxins/test_area
name = "Toxins Lab Test Area"
icon_state = "toxtest"
@@ -1044,6 +1157,10 @@ proc/process_ghost_teleport_locs()
name = "Autolathe Storage"
icon_state = "storage"
+/area/storage/art
+ name = "Art Supply Storage"
+ icon_state = "storage"
+
/area/storage/auxillary
name = "Auxillary Storage"
icon_state = "auxstorage"
@@ -1302,6 +1419,7 @@ proc/process_ghost_teleport_locs()
icon_state = "storage"
+
// Telecommunications Satellite
/area/tcommsat/entrance
@@ -1343,6 +1461,10 @@ proc/process_ghost_teleport_locs()
var/list/centcom_areas = list (
/area/centcom,
/area/shuttle/escape/centcom,
+ /area/shuttle/escape_pod1/centcom,
+ /area/shuttle/escape_pod2/centcom,
+ /area/shuttle/escape_pod3/centcom,
+ /area/shuttle/escape_pod5/centcom,
/area/shuttle/transport1/centcom,
/area/shuttle/transport2/centcom,
/area/shuttle/administration/centcom,
@@ -1353,6 +1475,10 @@ var/list/centcom_areas = list (
var/list/the_station_areas = list (
/area/shuttle/arrival,
/area/shuttle/escape/station,
+ /area/shuttle/escape_pod1/station,
+ /area/shuttle/escape_pod2/station,
+ /area/shuttle/escape_pod3/station,
+ /area/shuttle/escape_pod5/station,
/area/shuttle/mining/station,
/area/shuttle/transport1/station,
// /area/shuttle/transport2/station,
@@ -1364,6 +1490,7 @@ var/list/the_station_areas = list (
/area/hallway,
/area/bridge,
/area/crew_quarters,
+ /area/holodeck,
/area/mint,
/area/library,
/area/chapel,
@@ -1389,6 +1516,8 @@ var/list/the_station_areas = list (
)
+
+
/area/beach
name = "Keelin's private beach"
icon_state = "null"
diff --git a/code/defines/global.dm b/code/defines/global.dm
index 4006eb1af51..263d5f4e95d 100644
--- a/code/defines/global.dm
+++ b/code/defines/global.dm
@@ -174,6 +174,10 @@ var
list/BorgWireColorToIndex
list/ScrambledFrequencies = list( ) //These are used for electrical storms, and anything else that jams radios.
list/UnscrambledFrequencies = list( )
+ list/AAlarmWireColorToFlag = RandomAAlarmWires() // Air Alarm hacking wires.
+ list/AAlarmIndexToFlag
+ list/AAlarmIndexToWireColor
+ list/AAlarmWireColorToIndex
const/SPEED_OF_LIGHT = 3e8 //not exact but hey!
const/SPEED_OF_LIGHT_SQ = 9e+16
@@ -221,4 +225,4 @@ var
forumsqllogin = "root"
forumsqlpass = ""
forum_activated_group = "2"
- forum_authenticated_group = "10"*/
+ forum_authenticated_group = "10"*/
diff --git a/code/defines/obj.dm b/code/defines/obj.dm
index bf858aad55f..484f205f3b5 100644
--- a/code/defines/obj.dm
+++ b/code/defines/obj.dm
@@ -10,6 +10,7 @@
var/datum/marked_datum
animate_movement = 2
var/throwforce = 1
+
proc/handle_internal_lifeform(mob/lifeform_inside_me, breath_request)
//Return: (NONSTANDARD)
// null if object handles breathing logic for lifeform
@@ -284,6 +285,15 @@
opacity = 0
density = 0
+/obj/effect/sign/deathsposal
+ desc = "A warning sign which reads 'DISPOSAL LEADS TO SPACE'"
+ name = "DISPOSAL LEADS TO SPACE"
+ icon = 'decals.dmi'
+ icon_state = "deathsposal"
+ anchored = 1.0
+ opacity = 0
+ density = 0
+
/obj/effect/sign/pods
desc = "A warning sign which reads 'ESCAPE PODS'"
name = "ESCAPE PODS"
@@ -294,8 +304,8 @@
density = 0
/obj/effect/sign/fire
- desc = "A warning sign which reads 'EXTREME TEMPERATURES'"
- name = "EXTREME TEMPERATURES"
+ desc = "A warning sign which reads 'DANGER: FIRE'"
+ name = "DANGER: FIRE"
icon = 'decals.dmi'
icon_state = "fire"
anchored = 1.0
@@ -412,7 +422,6 @@
var/twohanded = 0 // Two handed and wielded off by default, nyoro~n -Agouri
var/force_unwielded = 0
var/force_wielded = 0
- var/protective_temperature = 0 // Placing this here to avoid runtime errors, due to tiny items being allowed on ears and being queried for this variable
flags = FPRINT | TABLEPASS
pass_flags = PASSTABLE
pressure_resistance = 50
@@ -600,6 +609,10 @@
var/obj/structure/crematorium/connected = null
anchored = 1.0
+
+
+
+
/obj/structure/cable
level = 1
anchored =1
@@ -610,8 +623,9 @@
icon_state = "0-1"
var/d1 = 0
var/d2 = 1
- layer = 2.5
+ layer = 2.44 //Just below unary stuff, which is at 2.45 and above pipes, which are at 2.4
var/color="red"
+ var/obj/structure/powerswitch/power_switch
/obj/structure/cable/yellow
color="yellow"
@@ -744,6 +758,7 @@
desc = "Apply butt."
icon = 'objects.dmi'
icon_state = "stool"
+ anchored = 1.0
flags = FPRINT
pressure_resistance = 3*ONE_ATMOSPHERE
@@ -751,8 +766,7 @@
name = "bed"
desc = "This is used to lie in, sleep in or strap on."
icon_state = "bed"
- anchored = 1.0
- var/list/buckled_mobs = list( )
+ var/mob/living/buckled_mob
/obj/structure/stool/bed/alien
name = "Resting contraption"
@@ -760,44 +774,30 @@
icon_state = "abed"
-/obj/structure/stool/chair
+/obj/structure/stool/bed/chair //YES, chairs are a type of bed, which are a type of stool. This works, believe me. -Pete
name = "chair"
desc = "You sit in this. Either by will or force."
icon_state = "chair"
- var/status = 0.0
- anchored = 1.0
- var/list/buckled_mobs = list( )
-/obj/structure/stool/chair/comfy
+/obj/structure/stool/bed/chair/comfy
name = "comfy chair"
desc = "It looks comfy."
-/obj/structure/stool/chair/comfy/brown
+/obj/structure/stool/bed/chair/comfy/brown
icon_state = "comfychair_brown"
-/obj/structure/stool/chair/comfy/beige
+/obj/structure/stool/bed/chair/comfy/beige
icon_state = "comfychair_beige"
-/obj/structure/stool/chair/comfy/teal
+/obj/structure/stool/bed/chair/comfy/teal
icon_state = "comfychair_teal"
-/obj/structure/stool/chair/comfy/black
+/obj/structure/stool/bed/chair/comfy/black
icon_state = "comfychair_black"
-/obj/structure/stool/chair/comfy/lime
+/obj/structure/stool/bed/chair/comfy/lime
icon_state = "comfychair_lime"
-/obj/structure/stool/chair/e_chair
- name = "electrified chair"
- desc = "Looks absolutely terrifying!"
- icon_state = "e_chair0"
- var/atom/movable/overlay/overl = null
- var/on = 0.0
- var/obj/item/assembly/shock_kit/part1 = null
- var/isshocking
- var/datum/effect/effect/system/spark_spread/spark = new /datum/effect/effect/system/spark_spread
- var/list/mob/living/affected = list()
-
/obj/structure/table
name = "table"
desc = "A square piece of metal standing on four metal legs. It can not move."
@@ -1128,7 +1128,7 @@
reagents = R
R.my_atom = src
POWERFLAG = rand(1,10)
- Uses = rand(2, 5)
+ Uses = rand(7, 25)
//flags |= NOREACT
spawn()
@@ -1145,6 +1145,7 @@
+
/obj/structure/noticeboard
name = "Notice Board"
icon = 'stationobjs.dmi'
@@ -1197,19 +1198,6 @@
new /obj/item/weapon/glass( src )
*/
-/obj/item/weapon/storage/cupbox
- name = "Paper-cup Box"
- icon_state = "box"
- item_state = "syringe_kit"
- New()
- ..()
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
- new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
/obj/structure/falsewall
name = "wall"
@@ -1324,20 +1312,20 @@
throwforce = 14.0
flags = FPRINT | TABLEPASS | CONDUCT
-/obj/item/stack/sheet/r_metal
- name = "steel"
- singular_name = "steel sheet"
+/obj/item/stack/sheet/plasteel
+ name = "plasteel"
+ singular_name = "plasteel sheet"
desc = "This sheet is an alloy of iron and plasma."
- icon_state = "sheet-r_metal"
+ icon_state = "sheet-plasteel"
item_state = "sheet-metal"
m_amt = 7500
throwforce = 15.0
flags = FPRINT | TABLEPASS | CONDUCT
origin_tech = "materials=2"
-/obj/item/stack/tile/steel
- name = "Metal floor tile"
- singular_name = "Steel floor tile"
+/obj/item/stack/tile/plasteel
+ name = "floor tiles"
+ singular_name = "floor tile"
desc = "Those could work as a pretty decent throwing weapon"
icon_state = "tile"
w_class = 3.0
@@ -1350,8 +1338,8 @@
max_amount = 60
/obj/item/stack/tile/grass
- name = "Grass tile"
- singular_name = "Grass floor tile"
+ name = "grass tiles"
+ singular_name = "grass floor tile"
desc = "A patch of grass like they often use on golf courses"
icon_state = "tile_grass"
w_class = 3.0
@@ -1364,8 +1352,8 @@
origin_tech = "biotech=1"
/obj/item/stack/light_w
- name = "Wired glass tile"
- singular_name = "Wired glass tile"
+ name = "wired glass tiles"
+ singular_name = "wired glass floor tile"
desc = "A glass tile, which is wired, somehow."
icon_state = "glass_wire"
w_class = 3.0
@@ -1400,8 +1388,8 @@
del(src)
/obj/item/stack/tile/light
- name = "Light floor tile"
- singular_name = "Light floor tile"
+ name = "light tiles"
+ singular_name = "light floor tile"
desc = "A floor tile, made out off glass. It produces light."
icon_state = "tile_e"
w_class = 3.0
@@ -1435,6 +1423,13 @@
user.u_equip(src)
del(src)
+/obj/item/stack/sheet/cardboard //BubbleWrap
+ name = "cardboard"
+ desc = "Large sheets of card, like boxes folded flat."
+ singular_name = "cardboard sheet"
+ icon_state = "sheet-card"
+ flags = FPRINT | TABLEPASS
+ origin_tech = "materials=1"
/obj/item/weapon/beach_ball
icon = 'beach.dmi'
@@ -1452,3 +1447,30 @@
afterattack(atom/target as mob|obj|turf|area, mob/user as mob)
user.drop_item()
src.throw_at(target, throw_range, throw_speed)
+
+/obj/effect/stop
+ var/victim = null
+ icon_state = "empty"
+ name = "Geas"
+ desc = "You can't resist."
+ // name = ""
+
+
+
+/obj/debug/debugger
+ name = "Quantum Debugger"
+ desc = "A quantum debugger used by Centcomm Reality Engineers to help monitor transiant variables."
+ icon = 'stationobjs.dmi'
+ icon_state = "blackbox"
+
+ var/list/list1 = list()
+ var/list/list2 = list()
+ var/list/list3 = list()
+ var/list/list4 = list()
+ var/list/list5 = list()
+
+ var/var1 = null
+ var/var2 = null
+ var/var3 = null
+ var/var4 = null
+ var/var5 = null
diff --git a/code/defines/obj/clothing.dm b/code/defines/obj/clothing.dm
index 56fd9242b93..0fa01cee787 100644
--- a/code/defines/obj/clothing.dm
+++ b/code/defines/obj/clothing.dm
@@ -9,6 +9,7 @@
var/body_parts_covered = 0 //see setup.dm for appropriate bit flags
+ var/protective_temperature = 0
var/heat_transfer_coefficient = 1 //0 prevents all transfers, 1 is invisible
var/gas_transfer_coefficient = 1 // for leaking gas from turf to mask and vice-versa (for masks right now, but at some point, i'd like to include space helmets)
var/permeability_coefficient = 1 // for chemicals/diseases
diff --git a/code/defines/obj/storage.dm b/code/defines/obj/storage.dm
index 0b704541a82..228d94133a0 100644
--- a/code/defines/obj/storage.dm
+++ b/code/defines/obj/storage.dm
@@ -48,7 +48,8 @@
can_hold = list("/obj/item/weapon/dice")
/obj/item/weapon/storage/box
- name = "Box"
+ name = "box"
+ desc = "It's just an ordinary box."
icon_state = "box"
item_state = "syringe_kit"
@@ -59,34 +60,50 @@
desc = "Full of masks and emergency anesthetic tanks."
/obj/item/weapon/storage/box/syndicate
- icon_state = "box_of_doom"
/obj/item/weapon/storage/box/ert
name = "medical box"
desc = "Full of goodness."
icon_state = "implant"
item_state = "syringe_kit"
+/obj/item/weapon/storage/cupbox
+ name = "box of paper cups"
+ desc = "It has pictures of paper cups on the front."
+ icon_state = "box"
+ item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
+ New()
+ ..()
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
+ new /obj/item/weapon/reagent_containers/food/drinks/sillycup( src )
/obj/item/weapon/storage/pillbottlebox
- name = "pill bottles"
- desc = "A box of pill bottles."
+ name = "box of pill bottles"
+ desc = "It has pictures of pill bottles on its front."
icon_state = "box"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/blankbox
- name = "blank shells"
- desc = "A box containing...stuff..."
+ name = "box of blank shells"
+ desc = "It has a picture of a gun and several warning symbols on the front."
icon_state = "box"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/backpack/clown
- name = "clown's backpack"
- desc = "The backpack made by Honk. Co."
+ name = "Giggles Von Honkerton"
+ desc = "It's a backpack made by Honk! Co."
icon_state = "clownpack"
/obj/item/weapon/storage/backpack/medic
- name = "medic's backpack"
- desc = "The backpack used to keep with the sterile environment."
+ name = "medical backpack"
+ desc = "It's a backpack especially designed for use in a sterile environment."
icon_state = "medicalpack"
/obj/item/weapon/storage/backpack/medic/full
@@ -102,17 +119,20 @@
/obj/item/weapon/storage/backpack/security
name = "security backpack"
- desc = "A very robust backpack."
+ desc = "It's a very robust backpack."
icon_state = "securitypack"
/obj/item/weapon/storage/backpack/satchel
- name = "Satchel"
- desc = "A very robust satchel to wear on your back."
+ name = "satchel"
+ desc = "It's a very robust satchel to wear on your back."
icon_state = "satchel"
+ New()
+ ..()
+
/obj/item/weapon/storage/backpack/bandolier
- name = "Bandolier"
- desc = "A very old bandolier to wear on your back."
+ name = "bandolier"
+ desc = "It's a very old bandolier to wear on your back."
icon_state = "bandolier"
/obj/item/weapon/storage/backpack/medicalsatchel
@@ -122,7 +142,7 @@
/obj/item/weapon/storage/backpack/industrial
name = "industrial backpack"
- desc = "A tough backpack for the daily grind"
+ desc = "It's a tough backpack for the daily grind of station life."
icon_state = "engiepack"
/obj/item/weapon/storage/backpack/industrial/full
@@ -174,7 +194,7 @@
/obj/item/weapon/storage/briefcase
name = "briefcase"
- desc = "Used by the lawyer in the court room."
+ desc = "It's made of AUTHENTIC faux-leather and has a price-tag still attached. Its owner must be a real professional."
icon_state = "briefcase"
flags = FPRINT | TABLEPASS| CONDUCT
force = 8.0
@@ -184,24 +204,90 @@
max_w_class = 3
max_combined_w_class = 16
+/obj/item/weapon/storage/wallet
+ name = "wallet"
+ desc = "It can hold a few small and personal things."
+ storage_slots = 4
+ icon_state = "wallet"
+ can_hold = list(
+ "/obj/item/weapon/spacecash",
+ "/obj/item/weapon/card",
+ "/obj/item/clothing/mask/cigarette",
+ "/obj/item/device/flashlight/pen",
+ "/obj/item/seeds",
+ "/obj/item/stack/medical",
+ "/obj/item/toy/crayon",
+ "/obj/item/weapon/coin",
+ "/obj/item/weapon/dice",
+ "/obj/item/weapon/disk",
+ "/obj/item/weapon/implanter",
+ "/obj/item/weapon/lighter",
+ "/obj/item/weapon/match",
+ "/obj/item/weapon/paper",
+ "/obj/item/weapon/pen",
+ "/obj/item/weapon/photo",
+ "/obj/item/weapon/reagent_containers/dropper",
+ "/obj/item/weapon/screwdriver",
+ "/obj/item/weapon/stamp")
+
+ attackby(obj/item/A as obj, mob/user as mob)
+ ..()
+ update_icon()
+ return
+
+ update_icon()
+ for(var/obj/item/weapon/card/id/ID in contents)
+ if(ID.icon_state == "gold")
+ icon_state = "walletid_gold"
+ return
+ else if(ID.icon_state == "id")
+ icon_state = "walletid"
+ return
+ icon_state = "wallet"
+
+
+
+ proc/get_id()
+ for(var/obj/item/weapon/card/id/ID in contents)
+ if(istype(ID))
+ return ID
+
+/obj/item/weapon/storage/wallet/random/New()
+ ..()
+ var/item1_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
+ var/item2_type
+ if(prob(50))
+ item2_type = pick( /obj/item/weapon/spacecash/c10,/obj/item/weapon/spacecash/c100,/obj/item/weapon/spacecash/c1000,/obj/item/weapon/spacecash/c20,/obj/item/weapon/spacecash/c200,/obj/item/weapon/spacecash/c50, /obj/item/weapon/spacecash/c500)
+ var/item3_type = pick( /obj/item/weapon/coin/silver, /obj/item/weapon/coin/silver, /obj/item/weapon/coin/gold, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron, /obj/item/weapon/coin/iron )
+
+ spawn(2)
+ if(item1_type)
+ new item1_type(src)
+ if(item2_type)
+ new item2_type(src)
+ if(item3_type)
+ new item3_type(src)
+
+
/obj/item/weapon/storage/disk_kit
- name = "data disks"
- desc = "For disks."
+ name = "box of data disks"
+ desc = "It has a picture of a data disk on it."
icon_state = "id"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/disk_kit/disks
/obj/item/weapon/storage/disk_kit/disks2
/obj/item/weapon/storage/fcard_kit
- name = "Fingerprint Cards"
- desc = "This contains cards which are used to take fingerprints."
+ name = "box of fingerprint cards"
+ desc = "It has a picture of a fingerprint on each of its faces."
icon_state = "id"
item_state = "syringe_kit"
/obj/item/weapon/storage/firstaid
- name = "First-Aid"
+ name = "first-aid kit"
desc = "In case of injury."
icon_state = "firstaid"
throw_speed = 2
@@ -209,7 +295,7 @@
var/empty = 0
/obj/item/weapon/storage/firstaid/fire
- name = "Fire First Aid"
+ name = "fire first-aid kit"
desc = "Contains burn treatments."
icon_state = "ointment"
item_state = "firstaid-ointment"
@@ -240,60 +326,78 @@
desc = "WARNING: Do not use without reading these preautions!\nThese devices are extremely dangerous and can cause blindness or deafness if used incorrectly.\nThe chemicals contained in these devices have been tuned for maximal effectiveness and due to\nextreme safety precuaiotn shave been incased in a tamper-proof pack. DO NOT ATTEMPT TO OPEN\nFLASH WARNING: Do not use continually. Excercise extreme care when detonating in closed spaces.\n\tMake attemtps not to detonate withing range of 2 meters of the intended target. It is imperative\n\tthat the targets visit a medical professional after usage. Damage to eyes increases extremely per\n\tuse and according to range. Glasses with flash resistant filters DO NOT always work on high powered\n\tflash devices such as this. EXERCISE CAUTION REGARDLESS OF CIRCUMSTANCES\nSOUND WARNING: Do not use continually. Visit a medical professional if hearing is lost.\n\tThere is a slight chance per use of complete deafness. Exercise caution and restraint.\nSTUN WARNING: If the intended or unintended target is too close to detonation the resulting sound\n\tand flash have been known to cause extreme sensory overload resulting in temporary\n\tincapacitation.\nDO NOT USE CONTINUALLY\nOperating Directions:\n\t1. Pull detonnation pin. ONCE THE PIN IS PULLED THE GRENADE CAN NOT BE DISARMED!\n\t2. Throw grenade. NEVER HOLD A LIVE FLASHBANG\n\t3. The grenade will detonste 10 seconds hafter being primed. EXCERCISE CAUTION\n\t-Never prime another grenade until after the first is detonated\nNote: Usage of this pyrotechnic device without authorization is an extreme offense and can\nresult in severe punishment upwards of 10 years in prison per use.\n\nDefault 3 second wait till from prime to detonation. This can be switched with a screwdriver\nto 10 seconds.\n\nCopyright of Nanotrasen Industries- Military Armnaments Division\nThis device was created by Nanotrasen Labs a member of the Expert Advisor Corporation"
icon_state = "flashbang"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/emp_kit
name = "emp grenades"
desc = "A box with 5 emp grenades."
icon_state = "flashbang"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/gl_kit
name = "Prescription Glasses"
- desc = "This box contains vision correcting glasses."
+ desc = "This box contains nerd glasses."
icon_state = "glasses"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
+
+/obj/item/weapon/storage/seccart_kit
+ name = "Spare R.O.B.U.S.T. Cartridges"
+ desc = "A box full of R.O.B.U.S.T. Cartridges, used by Security."
+ icon = 'pda.dmi'
+ icon_state = "pdabox"
+ item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/handcuff_kit
name = "Spare Handcuffs"
desc = "A box full of handcuffs."
icon_state = "handcuff"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/id_kit
name = "Spare IDs"
- desc = "Has so many blank IDs."
+ desc = "Has many empty IDs."
icon_state = "id"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/lglo_kit
name = "Latex Gloves"
desc = "Contains white gloves."
icon_state = "latex"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/injectbox
name = "DNA-Injectors"
- desc = "This box contains injectors, it seems."
+ desc = "This box contains injectors it seems."
icon_state = "box"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/stma_kit
name = "Sterile Masks"
desc = "This box contains masks of +2 constitution." //I made it better. --SkyMarshal
icon_state = "mask"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/trackimp_kit
name = "Tracking Implant Kit"
- desc = "Box full of tracking utensils."
+ desc = "Box full of tracking implants."
icon_state = "implant"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/chemimp_kit
name = "Chemical Implant Kit"
desc = "Box of stuff used to implant chemicals."
icon_state = "implant"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/deathalarm_kit
name = "Death Alarm Kit"
@@ -351,6 +455,7 @@
/obj/item/weapon/storage/toolbox/electrical
name = "electrical toolbox"
+ desc = "A toolbox for holding tools about electronics."
icon_state = "yellow"
item_state = "toolbox_yellow"
@@ -362,7 +467,7 @@
item_state = "syringe_kit"
/obj/item/weapon/storage/toolbox/syndicate
- name = "Suspicious looking toolbox"
+ name = "suspicious looking toolbox"
desc = "You have no idea what this is."
icon_state = "syndicate"
item_state = "toolbox_syndi"
@@ -403,25 +508,28 @@
icon_state ="koran"
/obj/item/weapon/storage/mousetraps
- name = "Pest-B-Gon Mousetraps"
- desc = "WARNING: Keep out of reach of children."
+ name = "box of Pest-B-Gon Mousetraps"
+ desc = "WARNING: Keep out of reach of children."
icon_state = "mousetraps"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/donkpocket_kit
- name = "Donk-Pockets"
- desc = "Remember to fully heat prior to serving. Product will cool if not eaten within seven minutes."
+ name = "box of donk-pockets"
+ desc = "Instructions: Heat in microwave. Product will cool if not eaten within seven minutes."
icon_state = "donk_kit"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/condimentbottles
- name = "Condiment Bottles"
- desc = "A box of empty condiment bottles."
+ name = "box of condiment bottles"
+ desc = "It has a large ketchup smear on it."
icon_state = "box"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/drinkingglasses
- name = "Drinking Glasses"
- desc = "A box of clean drinking glasses"
+ name = "box of drinking glasses"
+ desc = "It has a picture of drinking glasses on it."
icon_state = "box"
- item_state = "syringe_kit"
\ No newline at end of file
+ item_state = "syringe_kit"
diff --git a/code/defines/obj/weapon.dm b/code/defines/obj/weapon.dm
index e85363a5cbc..5dd7473fe87 100644
--- a/code/defines/obj/weapon.dm
+++ b/code/defines/obj/weapon.dm
@@ -3,7 +3,7 @@
icon = 'weapons.dmi'
/obj/item/weapon/offhand
- name = "Offhand"
+ name = "offhand"
var/linked_weapon_name = ""
w_class = 5.0
icon_state = "offhand"
@@ -13,7 +13,7 @@
/obj/item/weapon/shield/riot
name = "riot shield"
- desc = "A shield adept at blocking blunt objects."
+ desc = "A shield adept at blocking blunt objects from connecting with the torso of the shield wielder."
icon = 'weapons.dmi'
icon_state = "riot"
flags = FPRINT | TABLEPASS| CONDUCT| ONBACK
@@ -29,15 +29,28 @@
IsShield()
return 1
-/*/obj/item/weapon/sord
- name = "SORD"
+
+/obj/item/weapon/nullrod
+ name = "null rod"
+ desc = "A rod of pure obsidian, its very presence disrupts and dampens the powers of Nar-Sie's followers."
+ icon_state = "nullrod"
+ item_state = "nullrod"
+ flags = FPRINT | ONBELT | TABLEPASS
+ force = 15
+ throw_speed = 1
+ throw_range = 4
+ throwforce = 10
+ w_class = 1
+
+/obj/item/weapon/sord
+ name = "\improper SORD"
desc = "This thing is so unspeakably shitty you are having a hard time even holding it."
icon_state = "sord"
item_state = "sord"
flags = FPRINT | ONBELT | TABLEPASS
force = 2
throwforce = 1
- w_class = 3 */
+ w_class = 3
/obj/item/weapon/claymore
name = "claymore"
@@ -47,7 +60,7 @@
flags = FPRINT | ONBELT | TABLEPASS
force = 40
throwforce = 10
- w_class = 3.0
+ w_class = 3
IsShield()
return 1
@@ -68,7 +81,7 @@
origin_tech = "materials=2"
/obj/item/weapon/rsf
- name = "Rapid-Service-Fabricator (RSF)"
+ name = "\improper Rapid-Service-Fabricator"
desc = "A device used to rapidly deploy service items."
icon = 'items.dmi'
icon_state = "rcd"
@@ -81,7 +94,7 @@
w_class = 3.0
/obj/item/weapon/rsp
- name = "Rapid-Seed-Producer (RSP)"
+ name = "\improper Rapid-Seed-Producer"
desc = "A device used to rapidly deploy seeds."
icon = 'items.dmi'
icon_state = "rcd"
@@ -94,7 +107,7 @@
w_class = 3.0
/obj/item/weapon/rcd_ammo
- name = "Compressed matter cartridge"
+ name = "compressed matter cartridge"
desc = "Highly compressed matter for the RCD."
icon = 'ammo.dmi'
icon_state = "rcd"
@@ -108,12 +121,13 @@
var/ammo = 10
/obj/item/weapon/rcd_ammo/large
- name = "Super compressed matter cartridge"
+ name = "super compressed matter cartridge"
ammo = 30
/obj/item/weapon/spacecash
- name = "Space Cash"
- desc = "You're rich, bitch!"
+ name = "space cash"
+ desc = "It's worth 1 credit."
+ gender = PLURAL
icon = 'items.dmi'
icon_state = "spacecash"
opacity = 0
@@ -130,25 +144,31 @@
/obj/item/weapon/spacecash/c10
icon_state = "spacecash10"
access = access_crate_cash
+ desc = "It's worth 10 credits."
/obj/item/weapon/spacecash/c20
icon_state = "spacecash20"
access = access_crate_cash
+ desc = "It's worth 20 credits."
/obj/item/weapon/spacecash/c50
icon_state = "spacecash50"
access = access_crate_cash
+ desc = "It's worth 50 credits."
/obj/item/weapon/spacecash/c100
icon_state = "spacecash100"
access = access_crate_cash
+ desc = "It's worth 100 credits."
/obj/item/weapon/spacecash/c200
icon_state = "spacecash200"
access = access_crate_cash
+ desc = "It's worth 200 credits."
/obj/item/weapon/spacecash/c500
icon_state = "spacecash500"
access = access_crate_cash
+ desc = "It's worth 500 credits."
/obj/item/weapon/spacecash/c1000
icon_state = "spacecash1000"
access = access_crate_cash
-
+ desc = "It's worth 1000 credits."
/obj/item/device/mass_spectrometer
desc = "A hand-held mass spectrometer which identifies trace chemicals in a blood sample."
@@ -174,8 +194,8 @@
origin_tech = "magnets=4;biotech=2"
/obj/item/weapon/melee/baton
- name = "Stun Baton"
- desc = "The police baton of the future."
+ name = "stun baton"
+ desc = "A stun baton for hitting people with."
icon_state = "stunbaton"
item_state = "baton"
flags = FPRINT | ONBELT | TABLEPASS
@@ -187,8 +207,8 @@
var/status = 0
origin_tech = "combat=2"
-/*/obj/item/weapon/melee/chainofcommand
- name = "Chain of Command"
+/obj/item/weapon/melee/chainofcommand
+ name = "chain of command"
desc = "The Captain is first and all other heads are last."
icon_state = "chainofcommand"
item_state = "chainofcommand"
@@ -199,13 +219,13 @@
var/charges = 50.0
var/maximum_charges = 50.0
var/status = 1
- origin_tech = "combat=4" */
+ origin_tech = "combat=4"
/obj/item/weapon/melee/energy
var/active = 0
/obj/item/weapon/melee/energy/axe
- name = "Axe"
+ name = "energy axe"
desc = "An energised battle axe."
icon_state = "axe0"
force = 40.0
@@ -219,7 +239,7 @@
/obj/item/weapon/melee/energy/sword
var/color
name = "energy sword"
- desc = "It cuts AND cooks at the same time!."
+ desc = "May the force be within you."
icon_state = "sword0"
force = 3.0
throwforce = 5.0
@@ -252,7 +272,7 @@
var/datum/effect/effect/system/spark_spread/spark_system
/obj/item/weapon/bananapeel
- name = "Banana Peel"
+ name = "banana peel"
desc = "A peel from a banana."
icon = 'items.dmi'
icon_state = "banana_peel"
@@ -263,8 +283,9 @@
throw_range = 20
/obj/item/weapon/soap
- name = "Soap"
+ name = "soap"
desc = "A cheap bar of soap. Doesn't smell."
+ gender = PLURAL
icon = 'items.dmi'
icon_state = "soap"
w_class = 1.0
@@ -362,7 +383,7 @@
color = "brown"
/obj/item/weapon/bikehorn
- name = "Bike Horn"
+ name = "bike horn"
desc = "A horn off of a bicycle."
icon = 'items.dmi'
icon_state = "bike_horn"
@@ -404,6 +425,7 @@
/obj/item/stack/medical/ointment
name = "ointment"
desc = "Used to treat those nasty burns."
+ gender = PLURAL
singular_name = "ointment"
icon_state = "ointment"
heal_burn = 40
@@ -452,6 +474,92 @@
w_class = 2.0
origin_tech = "magnets=1"
+/obj/item/weapon/card
+ name = "card"
+ desc = "Does card things."
+ icon = 'card.dmi'
+ w_class = 1.0
+
+ var/list/files = list( )
+
+/obj/item/weapon/card/data
+ name = "data disk"
+ desc = "A disk of data."
+ icon_state = "data"
+ var/function = "storage"
+ var/data = "null"
+ var/special = null
+ item_state = "card-id"
+
+/obj/item/weapon/card/data/clown
+ name = "coordinates to clown planet"
+ icon_state = "data"
+ item_state = "card-id"
+ layer = 3
+ level = 2
+ desc = "This card contains coordinates to the fabled Clown Planet. Handle with care."
+ function = "teleporter"
+ data = "Clown Land"
+
+/obj/item/weapon/card/emag
+ desc = "An identification card. Seems to have some funny chip on it, though."
+ name = "modified identification card"
+ icon_state = "emag"
+ item_state = "card-id"
+ origin_tech = "magnets=2;syndicate=2"
+ var/uses = 5
+
+/obj/item/weapon/card/id
+ name = "identification card"
+ desc = "An identification card. No shit."
+ icon_state = "id"
+ item_state = "card-id"
+ var/access = list()
+ var/registered = null
+ var/assignment = null
+// var/obj/item/weapon/photo/PHOTO = null
+ var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
+ var/dorm = 0 // determines if this ID has claimed a dorm already
+
+/obj/item/weapon/card/id/gold
+ name = "identification card"
+ desc = "A golden card which shows power and might."
+ icon_state = "gold"
+ item_state = "gold_id"
+
+/obj/item/weapon/card/id/syndicate
+ name = "agent card"
+ desc = "Shhhhh."
+ access = list(access_maint_tunnels)
+ origin_tech = "syndicate=3"
+
+/obj/item/weapon/card/id/syndicate_command
+ name = "syndicate ID card"
+ desc = "An ID straight from the Syndicate."
+ registered = "Syndicate"
+ assignment = "Syndicate Overlord"
+ access = list(access_syndicate)
+
+/obj/item/weapon/card/id/captains_spare
+ name = "captain's spare ID"
+ desc = "The spare ID of the High Lord himself."
+ icon_state = "gold"
+ item_state = "gold_id"
+ registered = "Captain"
+ assignment = "Captain"
+ New()
+ access = get_access("Captain")
+ ..()
+
+/obj/item/weapon/card/id/centcom
+ name = "\improper CentCom. ID"
+ desc = "An ID straight from Cent. Com."
+ icon_state = "centcom"
+ registered = "Central Command"
+ assignment = "General"
+ New()
+ access = get_all_centcom_access()
+ ..()
/obj/item/weapon/cleaner
desc = "A chemical that cleans messes."
@@ -586,7 +694,7 @@
/obj/item/weapon/fireaxe // DEM AXES MAN, marker -Agouri
icon_state = "fireaxe0"
- name = "Fire axe"
+ name = "fire axe"
desc = "A tool for breaking down those obstructions that stop you from fighting that fire." //Less ROBUST. --SkyMarshal
force = 5
w_class = 4.0
@@ -616,7 +724,7 @@
icon = 'items.dmi'
/obj/item/weapon/disk/nuclear
- name = "Nuclear Authentication Disk"
+ name = "nuclear authentication disk"
desc = "Better keep this safe, it can activate the nuke."
icon_state = "nucleardisk"
item_state = "card-id"
@@ -646,7 +754,7 @@
m_amt = 90
/obj/item/weapon/f_card
- name = "Finger Print Card"
+ name = "finger print card"
desc = "Used to take fingerprints."
icon = 'card.dmi'
icon_state = "fingerprint0"
@@ -659,7 +767,7 @@
/obj/item/weapon/fcardholder
- name = "Finger Print Case"
+ name = "fingerprint card case"
desc = "Holds fingerprint cards."
icon = 'items.dmi'
icon_state = "fcardholder0"
@@ -726,6 +834,7 @@
/obj/item/weapon/handcuffs
name = "handcuffs"
desc = "Use this to keep prisoners in line."
+ gender = PLURAL
icon = 'items.dmi'
icon_state = "handcuff"
flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
@@ -786,6 +895,10 @@
w_class = 2.0
flags = FPRINT | TABLEPASS
+/obj/item/weapon/caution/cone
+ desc = "This cone is trying to warn you of something!"
+ name = "warning cone"
+ icon_state = "cone"
/obj/item/weapon/paper
name = "Paper"
@@ -801,7 +914,7 @@
var/list/stamped
var/see_face = 1
var/body_parts_covered = HEAD
- protective_temperature = T0C + 10
+ var/protective_temperature = 0
var/heat_transfer_coefficient = 0.99
var/gas_transfer_coefficient = 1
var/permeability_coefficient = 0.99
@@ -809,7 +922,8 @@
var/iteration
/obj/item/weapon/directions
- name = "Crumpled Paper"
+ name = "crumpled paper"
+ gender = PLURAL
desc = "This is a crumpled piece of paper."
icon = 'weapons.dmi'
icon_state = "crumpled"
@@ -823,7 +937,7 @@
name = "paper - 'Judgement'"
info = "For crimes against the station, the offender is sentenced to:
\n
\n"
-/obj/item/weapon/paper/certificate //What is this? -Kaleb702
+/obj/item/weapon/paper/certificate
name = "paper - 'Certificate'"
info = "Due to this person's unique actions in the past, we hereby certify that they are \"Totally Radical\"
----Central Command
This paper has been stamped with the central command rubber stamp.
"
stamped = list(/obj/item/weapon/stamp/centcom)
@@ -895,8 +1009,8 @@
name = "multicolor pen"
/obj/item/weapon/banhammer
- desc = "A banhammer."
- name = "Banhammer"
+ desc = "A banhammer"
+ name = "banhammer"
icon = 'items.dmi'
icon_state = "toyhammer"
flags = FPRINT | ONBELT | TABLEPASS
@@ -924,8 +1038,8 @@
m_amt = 3750
/obj/item/weapon/rubber_chicken
- name = "Rubber Chicken"
- desc = "A rubber chicken. Isn't that hilarious?"
+ name = "rubber chicken"
+ desc = "A rubber chicken, isn't that hilarious?"
icon = 'items.dmi'
icon_state = "rubber_chicken"
item_state = "rubber_chicken"
@@ -933,7 +1047,7 @@
/obj/item/weapon/screwdriver
name = "screwdriver"
- desc = "You can be totally screwy with this."
+ desc = "Used for screwing."
icon = 'items.dmi'
icon_state = "screwdriver"
flags = FPRINT | TABLEPASS| CONDUCT
@@ -956,9 +1070,28 @@
item_state = "shard-glass"
g_amt = 3750
-/obj/item/weapon/SWF_uplink
+/*/obj/item/weapon/syndicate_uplink
name = "station bounced radio"
- desc = "Used to communicate it appears."
+ desc = "Remain silent about this..."
+ icon = 'radio.dmi'
+ icon_state = "radio"
+ var/temp = null
+ var/uses = 10.0
+ var/selfdestruct = 0.0
+ var/traitor_frequency = 0.0
+ var/mob/currentUser = null
+ var/obj/item/device/radio/origradio = null
+ flags = FPRINT | TABLEPASS | CONDUCT | ONBELT
+ w_class = 2.0
+ item_state = "radio"
+ throw_speed = 4
+ throw_range = 20
+ m_amt = 100
+ origin_tech = "magnets=2;syndicate=3"*/
+
+/obj/item/weapon/SWF_uplink
+ name = "station-bounced radio"
+ desc = "used to comunicate it appears."
icon = 'radio.dmi'
icon_state = "radio"
var/temp = null
@@ -988,6 +1121,7 @@
var/temp = null
var/spell_type = "verb"
var/max_uses = 5
+ var/op = 1
/obj/item/weapon/spellbook/object_type_spells //used for giving out object spells as opposed to verb spells
spell_type = "object"
@@ -1021,6 +1155,7 @@
/obj/item/weapon/table_parts
name = "table parts"
desc = "Parts of a table. Poor table."
+ gender = PLURAL
icon = 'items.dmi'
icon_state = "table_parts"
m_amt = 3750
@@ -1041,7 +1176,7 @@
flags = null
/obj/item/weapon/teleportation_scroll
- name = "Teleportation Scroll"
+ name = "scroll of teleportation"
desc = "A scroll for moving around."
icon = 'wizard.dmi'
icon_state = "scroll"
@@ -1092,7 +1227,7 @@
var/minor_fault = 0 //If not 100% reliable, it will build up faults.
/obj/item/weapon/cell/crap
- name = "Nanotrasen Brand Rechargable AA Battery"
+ name = "\improper NanoTrasen Brand Rechargable AA Battery"
desc = "You can't top the plasma top." //TOTALLY TRADEMARK INFRINGEMENT
origin_tech = "powerstorage=0"
maxcharge = 500
@@ -1106,7 +1241,7 @@
/obj/item/weapon/cell/super
name = "super-capacity power cell"
- origin_tech = "powerstorage=3"
+ origin_tech = "powerstorage=5"
maxcharge = 20000
g_amt = 70
@@ -1125,7 +1260,7 @@
return 1
/*/obj/item/weapon/cell/potato
- name = "Potato Battery" // This needs more Portal 2 refs. -Kaleb702
+ name = "Potato Battery"
desc = "A rechargable starch based power cell."
icon = 'harvest.dmi'
icon_state = "potato_battery"
@@ -1147,7 +1282,7 @@
for (var/obj/machinery/camera/C in cameras)
friendly_cameras.Add(C.c_tag)
- var/target = input("Select the camera to observe.", null) as null|anything in friendly_cameras
+ var/target = input("Select the camera to observe", null) as null|anything in friendly_cameras
if (!target)
return
for (var/obj/machinery/camera/C in cameras)
@@ -1180,7 +1315,7 @@
g_amt = 50
/obj/item/weapon/module/id_auth
- name = "ID authentication module"
+ name = "\improper ID authentication module"
icon_state = "id_mod"
desc = "A module allowing secure authorization of ID cards."
@@ -1228,7 +1363,7 @@
w_class = 3.0
/obj/item/weapon/kitchenknife
- name = "Kitchen knife"
+ name = "kitchen knife"
icon = 'kitchen.dmi'
icon_state = "knife"
desc = "A general purpose Chef's Knife made by SpaceCook Incorporated. Guaranteed to stay sharp for years to come."
@@ -1242,7 +1377,7 @@
origin_tech = "materials=1"
/obj/item/weapon/butch
- name = "Butcher's Cleaver"
+ name = "butcher's cleaver"
icon = 'kitchen.dmi'
icon_state = "butch"
desc = "A huge thing used for chopping and chopping up meat."
@@ -1256,10 +1391,10 @@
origin_tech = "materials=1"
/obj/item/weapon/tray
- name = "Tray"
+ name = "tray"
icon = 'food.dmi'
icon_state = "tray"
- desc = "A plastic tray to lay food on."
+ desc = "A tray to lay food on."
throwforce = 12.0
throwforce = 10.0
throw_speed = 1
@@ -1371,7 +1506,7 @@
name = "circular saw"
desc = "For heavy duty cutting."
icon = 'surgery.dmi'
- icon_state = "saw"
+ icon_state = "saw3"
flags = FPRINT | TABLEPASS | CONDUCT
force = 15.0
w_class = 1.0
@@ -1392,7 +1527,7 @@
origin_tech = "materials=1;biotech=1"
/obj/item/weapon/syntiflesh
- name = "Syntiflesh"
+ name = "syntiflesh"
desc = "Meat that appears...strange..."
icon = 'food.dmi'
icon_state = "meat"
@@ -1400,6 +1535,20 @@
w_class = 1.0
origin_tech = "biotech=2"
+/obj/item/weapon/hatchet
+ name = "hatchet"
+ desc = "A very sharp axe blade upon a short fibremetal handle. It has a long history of chopping things, but now it is used for chopping wood."
+ icon = 'weapons.dmi'
+ icon_state = "hatchet"
+ flags = FPRINT | TABLEPASS | CONDUCT
+ force = 12.0
+ w_class = 1.0
+ throwforce = 15.0
+ throw_speed = 4
+ throw_range = 4
+ m_amt = 15000
+ origin_tech = "materials=2;combat=1"
+
/obj/item/weapon/stamp
desc = "A rubber stamp for stamping important documents."
name = "rubber stamp"
@@ -1499,8 +1648,17 @@
name = "d6"
desc = "A dice with six sides."
var/sides = 6
- icon_state = "dice"
- item_state = "dice"
+ icon = 'dice.dmi'
+ icon_state = "d66"
+
+/obj/item/weapon/dice/New()
+ icon_state = "[name][rand(sides)]"
+
+/obj/item/weapon/dice/d20 // -- TLE
+ name = "d20"
+ desc = "A dice with twenty sides."
+ sides = 20
+ icon_state = "d2020"
/obj/item/weapon/dice/d8 // -- SkyMarshal
name = "d8"
@@ -1515,14 +1673,6 @@
sides = 12
icon_state = "d20"
item_state = "dice"
-
-/obj/item/weapon/dice/d20 // -- TLE
- name = "d20"
- desc = "A dice with...hell, that is a lot of sides."
- sides = 20
- icon_state = "d20"
- item_state = "dice"
-
/obj/item/weapon/pai_cable
desc = "A flexible coated cable with a universal jack on one end."
desc = "Some spacey cable."
@@ -1532,8 +1682,9 @@
var/obj/machinery/machine
/obj/item/weapon/plastique
- name = "Plastic Explosives"
+ name = "plastic explosives"
desc = "Used to put holes in specific areas without too much extra hole."
+ gender = PLURAL
icon = 'assemblies.dmi'
icon_state = "plastic-explosive0"
item_state = "plasticx"
@@ -1548,6 +1699,7 @@
/obj/item/weapon/stock_parts
name = "stock part"
desc = "What?"
+ gender = PLURAL
icon = 'stock_parts.dmi'
w_class = 2.0
var/rating = 1
@@ -1558,14 +1710,14 @@
//Rank 1
/obj/item/weapon/stock_parts/console_screen
- name = "Console Screen"
+ name = "console screen"
desc = "Used in the construction of computers and other devices with a interactive console."
icon_state = "screen"
origin_tech = "materials=1"
g_amt = 200
/obj/item/weapon/stock_parts/capacitor
- name = "Capacitor"
+ name = "capacitor"
desc = "A basic capacitor used in the construction of a variety of devices."
icon_state = "capacitor"
origin_tech = "powerstorage=1"
@@ -1573,7 +1725,7 @@
g_amt = 50
/obj/item/weapon/stock_parts/scanning_module
- name = "Scanning Module"
+ name = "scanning module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module"
origin_tech = "magnets=1"
@@ -1581,14 +1733,14 @@
g_amt = 20
/obj/item/weapon/stock_parts/manipulator
- name = "Micro-Manipulator"
+ name = "micro-manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani"
origin_tech = "materials=1;programming=1"
m_amt = 30
/obj/item/weapon/stock_parts/micro_laser
- name = "Micro-laser"
+ name = "micro-laser"
desc = "A tiny laser used in certain devices."
icon_state = "micro_laser"
origin_tech = "magnets=1"
@@ -1596,7 +1748,7 @@
g_amt = 20
/obj/item/weapon/stock_parts/matter_bin
- name = "Matter Bin"
+ name = "matter bin"
desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "matter_bin"
origin_tech = "materials=1"
@@ -1605,7 +1757,7 @@
//Rank 2
/obj/item/weapon/stock_parts/capacitor/adv
- name = "Advanced Capacitor"
+ name = "advanced capacitor"
desc = "An advanced capacitor used in the construction of a variety of devices."
origin_tech = "powerstorage=3"
rating = 2
@@ -1613,7 +1765,7 @@
g_amt = 50
/obj/item/weapon/stock_parts/scanning_module/adv
- name = "Advanced Scanning Module"
+ name = "advanced scanning module"
desc = "A compact, high resolution scanning module used in the construction of certain devices."
icon_state = "scan_module"
origin_tech = "magnets=3"
@@ -1622,7 +1774,7 @@
g_amt = 20
/obj/item/weapon/stock_parts/manipulator/nano
- name = "Nano-Manipulator"
+ name = "nano-manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
icon_state = "micro_mani"
origin_tech = "materials=3,programming=2"
@@ -1630,7 +1782,7 @@
m_amt = 30
/obj/item/weapon/stock_parts/micro_laser/high
- name = "High-Power Micro-laser"
+ name = "high-power micro-laser"
desc = "A tiny laser used in certain devices."
icon_state = "micro_laser"
origin_tech = "magnets=3"
@@ -1639,7 +1791,7 @@
g_amt = 20
/obj/item/weapon/stock_parts/matter_bin/adv
- name = "Advanced Matter Bin"
+ name = "advanced matter bin"
desc = "A container for hold compressed matter awaiting re-construction."
icon_state = "matter_bin"
origin_tech = "materials=3"
@@ -1649,7 +1801,7 @@
//Rating 3
/obj/item/weapon/stock_parts/capacitor/super
- name = "Super Capacitor"
+ name = "super capacitor"
desc = "A super-high capacity capacitor used in the construction of a variety of devices."
origin_tech = "powerstorage=5;materials=4"
rating = 3
@@ -1657,7 +1809,7 @@
g_amt = 50
/obj/item/weapon/stock_parts/scanning_module/phasic
- name = "Phasic Scanning Module"
+ name = "phasic scanning module"
desc = "A compact, high resolution phasic scanning module used in the construction of certain devices."
origin_tech = "magnets=5"
rating = 3
@@ -1665,14 +1817,14 @@
g_amt = 20
/obj/item/weapon/stock_parts/manipulator/pico
- name = "Pico-Manipulator"
+ name = "pico-manipulator"
desc = "A tiny little manipulator used in the construction of certain devices."
origin_tech = "materials=5,programming=2"
rating = 3
m_amt = 30
/obj/item/weapon/stock_parts/micro_laser/ultra
- name = "Ultra-High-Power Micro-laser"
+ name = "ultra-high-power micro-laser"
desc = "A tiny laser used in certain devices."
origin_tech = "magnets=5"
rating = 3
@@ -1680,7 +1832,7 @@
g_amt = 20
/obj/item/weapon/stock_parts/matter_bin/super
- name = "Super Matter Bin"
+ name = "super matter bin"
desc = "A container for hold compressed matter awaiting re-construction."
origin_tech = "materials=5"
rating = 3
@@ -1689,7 +1841,7 @@
// Subspace stock parts
/obj/item/weapon/stock_parts/subspace/ansible
- name = "Subspace Ansible"
+ name = "subspace ansible"
icon_state = "subspace_ansible"
desc = "A compact module capable of sensing extradimensional activity."
origin_tech = "programming=3;magnets=5;materials=4;bluespace=2"
@@ -1697,7 +1849,7 @@
g_amt = 10
/obj/item/weapon/stock_parts/subspace/filter
- name = "Hyperwave Filter"
+ name = "hyperwave filter"
icon_state = "hyperwave_filter"
desc = "A tiny device capable of filtering and converting super-intense radiowaves."
origin_tech = "programming=4;magnets=2"
@@ -1705,7 +1857,7 @@
g_amt = 10
/obj/item/weapon/stock_parts/subspace/amplifier
- name = "Subspace Amplifier"
+ name = "subspace amplifier"
icon_state = "subspace_amplifier"
desc = "A compact micro-machine capable of amplifying weak subspace transmissions."
origin_tech = "programming=3;magnets=4;materials=4;bluespace=2"
@@ -1713,7 +1865,7 @@
g_amt = 10
/obj/item/weapon/stock_parts/subspace/treatment
- name = "Subspace Treatment Disk"
+ name = "subspace treatment disk"
icon_state = "treatment_disk"
desc = "A compact micro-machine capable of stretching out hyper-compressed radio waves."
origin_tech = "programming=3;magnets=2;materials=5;bluespace=2"
@@ -1721,7 +1873,7 @@
g_amt = 10
/obj/item/weapon/stock_parts/subspace/analyzer
- name = "Subspace Wavelength Analyzer"
+ name = "subspace wavelength analyzer"
icon_state = "wavelength_analyzer"
desc = "A sophisticated analyzer capable of analyzing cryptic subspace wavelengths."
origin_tech = "programming=3;magnets=4;materials=4;bluespace=2"
@@ -1729,15 +1881,22 @@
g_amt = 10
/obj/item/weapon/stock_parts/subspace/crystal
- name = "Ansible Crystal"
+ name = "ansible crystal"
icon_state = "ansible_crystal"
desc = "A crystal made from pure glass used to transmit laser databursts to subspace."
origin_tech = "magnets=4;materials=4;bluespace=2"
g_amt = 50
/obj/item/weapon/stock_parts/subspace/transmitter
- name = "Subspace Transmitter"
+ name = "subspace transmitter"
icon_state = "subspace_transmitter"
desc = "A large piece of equipment used to open a window into the subspace dimension."
origin_tech = "magnets=5;materials=5;bluespace=3"
- m_amt = 50
\ No newline at end of file
+ m_amt = 50
+
+/obj/item/weapon/ectoplasm
+ name = "ectoplasm"
+ desc = "spooky"
+ gender = PLURAL
+ icon = 'wizard.dmi'
+ icon_state = "ectoplasm"
diff --git a/code/defines/procs/helpers.dm b/code/defines/procs/helpers.dm
index da42f65d22a..ae795db135e 100644
--- a/code/defines/procs/helpers.dm
+++ b/code/defines/procs/helpers.dm
@@ -820,6 +820,8 @@ Turf and target are seperate in case you want to teleport some distance from a t
mob_list.Add(M)
for(var/mob/living/carbon/metroid/M in world)
mob_list.Add(M)
+ for(var/mob/living/simple_animal/M in world)
+ mob_list.Add(M)
// for(var/mob/living/silicon/hivebot/M in world)
// mob_list.Add(M)
// for(var/mob/living/silicon/hive_mainframe/M in world)
diff --git a/code/game/gamemodes/changeling/changeling.dm b/code/game/gamemodes/changeling/changeling.dm
index ca9cc5a53e2..4c9414c3a08 100644
--- a/code/game/gamemodes/changeling/changeling.dm
+++ b/code/game/gamemodes/changeling/changeling.dm
@@ -6,14 +6,14 @@
name = "changeling"
config_tag = "changeling"
restricted_jobs = list("AI", "Cyborg")
- required_players = 1
+ required_players = 15
required_enemies = 1
+ recommended_enemies = 4
uplink_welcome = "Syndicate Uplink Console:"
uplink_uses = 10
var
- changeling_amount
const
prob_int_murder_target = 50 // intercept names the assassination target half the time
prob_right_murder_target_l = 25 // lower bound on probability of naming right assassination target
@@ -35,16 +35,18 @@
waittime_l = 600 //lower bound on time before intercept arrives (in tenths of seconds)
waittime_h = 1800 //upper bound on time before intercept arrives (in tenths of seconds)
- var/const/scaling_coeff = 10.0 //how many players per changeling
+ const/changeling_amount = 4
/datum/game_mode/changeling/announce()
world << "The current game mode is - Changeling!"
world << "There are alien changelings on the station. Do not let the changelings succeed!"
/datum/game_mode/changeling/pre_setup()
- var/list/datum/mind/possible_changelings = get_players_for_role(BE_CHANGELING)
- changeling_amount = max(1, round( num_players() / scaling_coeff) + 1)
+ if(config.protect_roles_from_antagonist)
+ restricted_jobs += protected_jobs
+
+ var/list/datum/mind/possible_changelings = get_players_for_role(BE_CHANGELING)
for(var/datum/mind/player in possible_changelings)
for(var/job in restricted_jobs)//Removing robots from the list
@@ -184,8 +186,10 @@
for(var/datum/objective/objective in changeling.objectives)
if(objective.check_completion())
world << "Objective #[count]: [objective.explanation_text] \green Success"
+ feedback_add_details("changeling_objective","[objective.type]|SUCCESS")
else
world << "Objective #[count]: [objective.explanation_text] \red Failed"
+ feedback_add_details("changeling_objective","[objective.type]|FAIL")
changelingwin = 0
count++
@@ -195,8 +199,10 @@
if(changelingwin)
world << "The changeling was successful!"
+ feedback_add_details("changeling_success","SUCCESS")
else
world << "The changeling has failed!"
+ feedback_add_details("changeling_success","FAIL")
return 1
/datum/changeling //stores changeling powers, changeling recharge thingie, changeling absorbed DNA and changeling ID (for changeling hivemind)
@@ -204,11 +210,17 @@
var/list/absorbed_dna = list()
var/changeling_fakedeath = 0
var/chem_charges = 20.00
+ var/chem_recharge_multiplier = 1
+ var/chem_storage = 50
var/sting_range = 1
var/changelingID = "none"
var/mob/living/host = null
var/geneticdamage = 0.0
var/isabsorbing = 0
+ var/geneticpoints = 5
+ var/purchasedpowers = list()
+
+
/datum/changeling/New()
..()
diff --git a/code/game/gamemodes/changeling/changeling_powers.dm b/code/game/gamemodes/changeling/changeling_powers.dm
index 89eff7a2890..3f3967ae194 100644
--- a/code/game/gamemodes/changeling/changeling_powers.dm
+++ b/code/game/gamemodes/changeling/changeling_powers.dm
@@ -2,14 +2,21 @@
if(!changeling) changeling = new
changeling.host = src
- src.verbs += /client/proc/changeling_lesser_transform
- src.verbs += /client/proc/changeling_fakedeath
+ src.verbs += /datum/changeling/proc/EvolutionMenu
+ for(var/obj/effect/proc_holder/power/P in changeling.purchasedpowers)
+ if(P.isVerb)
+ if(P.allowduringlesserform)
+ if(!(P in src.verbs))
+ src.verbs += P.verbpath
+
+/* src.verbs += /client/proc/changeling_fakedeath
+ src.verbs += /client/proc/changeling_lesser_transform
src.verbs += /client/proc/changeling_blind_sting
src.verbs += /client/proc/changeling_deaf_sting
src.verbs += /client/proc/changeling_silence_sting
src.verbs += /client/proc/changeling_unfat_sting
-
+*/
changeling.changeling_level = 1
return
@@ -17,6 +24,14 @@
if(!changeling) changeling = new
changeling.host = src
+ src.verbs += /datum/changeling/proc/EvolutionMenu
+
+ for(var/obj/effect/proc_holder/power/P in changeling.purchasedpowers)
+ if(P.isVerb)
+ if(!(P in src.verbs))
+ src.verbs += P.verbpath
+
+/*
src.verbs += /client/proc/changeling_absorb_dna
src.verbs += /client/proc/changeling_transform
src.verbs += /client/proc/changeling_lesser_form
@@ -30,6 +45,7 @@
src.verbs += /client/proc/changeling_unfat_sting
src.verbs += /client/proc/changeling_boost_range
+*/
changeling.changeling_level = 2
if (!changeling.absorbed_dna)
changeling.absorbed_dna = list()
@@ -43,6 +59,11 @@
return
/mob/proc/remove_changeling_powers()
+
+ for(var/obj/effect/proc_holder/power/P in changeling.purchasedpowers)
+ if(P.isVerb)
+ src.verbs -= P.verbpath
+/*
src.verbs -= /client/proc/changeling_absorb_dna
src.verbs -= /client/proc/changeling_transform
src.verbs -= /client/proc/changeling_lesser_form
@@ -55,7 +76,7 @@
src.verbs -= /client/proc/changeling_boost_range
src.verbs -= /client/proc/changeling_transformation_sting
src.verbs -= /client/proc/changeling_unfat_sting
-
+*/
/client/proc/changeling_absorb_dna()
set category = "Changeling"
set name = "Absorb DNA"
@@ -79,8 +100,8 @@
usr << "\red This creature is not compatible with our biology."
return
- if (M.mutations & HUSK)
- usr << "\red This creature has already been drained!"
+ if (M.mutations & NOCLONE)
+ usr << "\red This creature's DNA is ruined beyond useability!"
return
if (!G.killing)
@@ -127,20 +148,40 @@
usr.changeling.absorbed_dna[T.real_name] = T.dna
if(usr.nutrition < 400) usr.nutrition = min((usr.nutrition + T.nutrition), 400)
usr.changeling.chem_charges += 10
+ usr.changeling.geneticpoints += 2
if(T.changeling)
if(T.changeling.absorbed_dna)
usr.changeling.absorbed_dna |= T.changeling.absorbed_dna //steal all their loot
+
T.changeling.absorbed_dna = list()
T.changeling.absorbed_dna[T.real_name] = T.dna
+
+ if(T.changeling.purchasedpowers)
+ for(var/obj/effect/proc_holder/power/Tp in T.changeling.purchasedpowers)
+ if(Tp in usr.changeling.purchasedpowers)
+ continue
+ else
+ usr.changeling.purchasedpowers += Tp
+
+ if(!Tp.isVerb)
+ call(Tp.verbpath)()
+
+ else
+ if(usr.changeling.changeling_level == 1)
+ usr.make_lesser_changeling()
+ else
+ usr.make_changeling()
+
+
+
+
usr.changeling.chem_charges += T.changeling.chem_charges
+ usr.changeling.geneticpoints += T.changeling.geneticpoints
T.changeling.chem_charges = 0
usr.changeling.isabsorbing = 0
T.death(0)
- T.real_name = "Unknown"
- M.warn_flavor_changed()
- T.mutations |= HUSK
- T.update_body()
+ T.Drain()
return
@@ -164,7 +205,7 @@
usr << "\red We don't have enough stored chemicals to do that!"
return
- var/S = input("Select the target DNA: ", "Target DNA", null) in usr.changeling.absorbed_dna
+ var/S = input("Select the target DNA: ", "Target DNA", null) as null|anything in usr.changeling.absorbed_dna
if (S == null)
return
@@ -219,9 +260,6 @@
if (istype(W, /obj/item/weapon/implant))
implants += W
- for(var/obj/item/W in usr)
- usr.drop_from_slot(W)
-
usr.update_clothing()
usr.monkeyizing = 1
usr.canmove = 0
@@ -240,6 +278,10 @@
usr.dna = null
O.changeling = usr.changeling
+ for(var/obj/item/W in usr)
+ usr.drop_from_slot(W)
+
+
for(var/obj/T in usr)
del(T)
//for(var/R in usr.organs) //redundant, let's give garbage collector work to do --rastaf0
@@ -263,7 +305,7 @@
usr.mind.transfer_to(O)
O.make_lesser_changeling()
-
+ O.verbs += /client/proc/changeling_lesser_transform
del(usr)
return
@@ -304,15 +346,6 @@
for (var/obj/item/weapon/implant/I in usr) //Still preserving implants
implants += I
- for(var/obj/item/W in usr)
- usr.u_equip(W)
- if (usr.client)
- usr.client.screen -= W
- if (W)
- W.loc = usr.loc
- W.dropped(usr)
- W.layer = initial(W.layer)
-
usr.update_clothing()
usr.monkeyizing = 1
usr.canmove = 0
@@ -326,6 +359,15 @@
sleep(48)
del(animation)
+ for(var/obj/item/W in usr)
+ usr.u_equip(W)
+ if (usr.client)
+ usr.client.screen -= W
+ if (W)
+ W.loc = usr.loc
+ W.dropped(usr)
+ W.layer = initial(W.layer)
+
var/mob/living/carbon/human/O = new /mob/living/carbon/human( src )
if (isblockon(getblock(usr.dna.uni_identity, 11,3),11))
O.gender = FEMALE
@@ -471,10 +513,10 @@
usr << "\blue We stealthily sting [T]."
if(!T.changeling)
- T << "You feel a small prick and a burning sensation in your throat."
+ // T << "You feel a small prick and a burning sensation in your throat."
T.silent += 30
- else
- T << "You feel a small prick."
+ //else
+ // T << "You feel a small prick."
usr.verbs -= /client/proc/changeling_silence_sting
@@ -566,9 +608,9 @@
usr << "\blue We stealthily sting [T]."
if(!T.changeling)
- T.disabilities |= 32
+ T.sdisabilities |= 4
spawn(300)
- T.disabilities &= ~32
+ T.sdisabilities &= ~4
usr.verbs -= /client/proc/changeling_deaf_sting
@@ -713,4 +755,210 @@
spawn(5)
usr.verbs += /client/proc/changeling_unfat_sting
- return
\ No newline at end of file
+ return
+
+/client/proc/changeling_unstun()
+ set category = "Changeling"
+ set name = "Epinephrine Sacs (25)"
+ set desc = "Removes all stuns"
+
+ if(!usr.changeling)
+ usr << "\red You're not a changeling, something's wrong!"
+ return
+
+ if(usr.changeling.chem_charges < 25)
+ usr << "\red We don't have enough stored chemicals to do that!"
+ return
+
+ usr.changeling.chem_charges -= 25
+
+ var/mob/living/carbon/human/C = usr
+
+ if(C)
+ C.stat = 0
+ C.SetParalysis(0)
+ C.SetStunned(0)
+ C.SetWeakened(0)
+ C.lying = 0
+ C.canmove = 1
+
+ usr.verbs -= /client/proc/changeling_unstun
+
+ spawn(5)
+ usr.verbs += /client/proc/changeling_unstun
+
+
+
+/client/proc/changeling_fastchemical()
+
+ usr.changeling.chem_recharge_multiplier = usr.changeling.chem_recharge_multiplier*2
+
+/client/proc/changeling_engorgedglands()
+
+ usr.changeling.chem_storage = usr.changeling.chem_storage+25
+
+/client/proc/changeling_digitalcamo()
+ set category = "Changeling"
+ set name = "Toggle Digital Camoflague (10)"
+ set desc = "The AI can no longer track us, but we will look different if examined. Has a constant cost while active."
+
+ if(!usr.changeling)
+ usr << "\red You're not a changeling, something's wrong!"
+ return
+
+ if(usr.changeling.chem_charges < 10)
+ usr << "\red We don't have enough stored chemicals to do that!"
+ return
+
+ usr.changeling.chem_charges -= 10
+
+ var/mob/living/carbon/human/C = usr
+
+ if(C)
+ C << "[C.digitalcamo ? "We return to normal." : "We distort our form."]"
+ C.digitalcamo = !C.digitalcamo
+ spawn(0)
+ while(C && C.digitalcamo)
+ C.changeling.chem_charges -= 1/4
+ sleep(10)
+
+
+ usr.verbs -= /client/proc/changeling_digitalcamo
+
+ spawn(5)
+ usr.verbs += /client/proc/changeling_digitalcamo
+
+
+/client/proc/changeling_DEATHsting()
+ set category = "Changeling"
+ set name = "Death Sting (40)"
+ set desc = "Causes spasms onto death."
+
+ if(!usr.changeling)
+ usr << "\red You're not a changeling, something's wrong!"
+ return
+
+ var/list/victims = list()
+ for(var/mob/living/carbon/C in oview(usr.changeling.sting_range))
+ victims += C
+ var/mob/T = input(usr, "Who do you wish to sting?") as null | anything in victims
+
+ if(T && T in view(usr.changeling.sting_range))
+
+ if(usr.stat)
+ usr << "\red Not when we are incapacitated."
+ return
+
+ if(usr.changeling.chem_charges < 40)
+ usr << "\red We don't have enough stored chemicals to do that!"
+ return
+
+ usr.changeling.chem_charges -= 40
+ usr.changeling.sting_range = 1
+
+ usr << "\blue We stealthily sting [T]."
+
+ if(!T.changeling)
+ T << "You feel a small prick and your chest becomes tight."
+
+ T.silent = (10)
+ T.Paralyse(10)
+ T.make_jittery(1000)
+
+ if (T.reagents)
+ T.reagents.add_reagent("lexorin", 40)
+
+ else
+ T << "You feel a small prick."
+
+ usr.verbs -= /client/proc/changeling_DEATHsting
+
+ spawn(5)
+ usr.verbs += /client/proc/changeling_DEATHsting
+
+ return
+
+
+
+/client/proc/changeling_rapidregen()
+ set category = "Changeling"
+ set name = "Rapid Regeneration (30)"
+ set desc = "Begins rapidly regenerating. Does not effect stuns or chemicals."
+
+ if(!usr.changeling)
+ usr << "\red You're not a changeling, something's wrong!"
+ return
+
+ if(usr.changeling.chem_charges < 30)
+ usr << "\red We don't have enough stored chemicals to do that!"
+ return
+
+ usr.changeling.chem_charges -= 30
+
+ var/mob/living/carbon/human/C = usr
+
+ spawn(0)
+ for(var/i = 0, i<10,i++)
+ if(C)
+ C.adjustBruteLoss(-10)
+ C.adjustToxLoss(-10)
+ C.adjustOxyLoss(-10)
+ C.adjustFireLoss(-10)
+ sleep(10)
+
+
+ usr.verbs -= /client/proc/changeling_rapidregen
+
+ spawn(5)
+ usr.verbs += /client/proc/changeling_rapidregen
+
+
+
+
+/client/proc/changeling_lsdsting()
+ set category = "Changeling"
+ set name = "Hallucination Sting (15)"
+ set desc = "Causes terror in the target."
+
+ if(!usr.changeling)
+ usr << "\red You're not a changeling, something's wrong!"
+ return
+
+ var/list/victims = list()
+ for(var/mob/living/carbon/C in oview(usr.changeling.sting_range))
+ victims += C
+ var/mob/T = input(usr, "Who do you wish to sting?") as null | anything in victims
+
+ if(T && T in view(usr.changeling.sting_range))
+
+ if(usr.stat)
+ usr << "\red Not when we are incapacitated."
+ return
+
+ if(usr.changeling.chem_charges < 15)
+ usr << "\red We don't have enough stored chemicals to do that!"
+ return
+
+ usr.changeling.chem_charges -= 15
+ usr.changeling.sting_range = 1
+
+ usr << "\blue We stealthily sting [T]."
+
+ if(!T.changeling)
+ // T << "You feel a small prick." // No warning.
+
+ var/timer = rand(300,600)
+
+ spawn(timer)
+ if(T)
+ if(T.reagents)
+ // T.reagents.add_reagent("LSD", 50) // Slight overkill, it seems.
+ T.hallucination = 400
+
+
+ usr.verbs -= /client/proc/changeling_lsdsting
+
+ spawn(5)
+ usr.verbs += /client/proc/changeling_lsdsting
+
+ return
\ No newline at end of file
diff --git a/code/game/gamemodes/changeling/modularchangling.dm b/code/game/gamemodes/changeling/modularchangling.dm
new file mode 100644
index 00000000000..5fd786729ee
--- /dev/null
+++ b/code/game/gamemodes/changeling/modularchangling.dm
@@ -0,0 +1,520 @@
+
+var/list/powers = typesof(/obj/effect/proc_holder/power) //needed for the badmin verb for now
+var/list/obj/effect/proc_holder/power/powerinstances = list()
+
+/obj/effect/proc_holder/power
+ name = "Power"
+ desc = "Placeholder"
+ density = 0
+ opacity = 0
+
+ var/helptext = ""
+
+ var/allowduringlesserform = 0
+ var/isVerb = 1 // Is it an active power, or passive?
+ var/verbpath = null // Path to a verb that contains the effects.
+ var/genomecost = 500000 // Cost for the changling to evolve this power.
+
+/obj/effect/proc_holder/power/absorb_dna
+ name = "Absorb DNA"
+ desc = "Permits us to syphon the DNA from a human. They become one with us, and we become stronger."
+ genomecost = 0
+
+ verbpath = /client/proc/changeling_absorb_dna
+
+
+
+/obj/effect/proc_holder/power/transform
+ name = "Transform"
+ desc = "We take on the apperance and voice of one we have absorbed."
+ genomecost = 0
+
+ verbpath = /client/proc/changeling_transform
+
+
+
+/obj/effect/proc_holder/power/lesser_form
+ name = "Lesser Form"
+ desc = "We debase ourselves and become lesser. We become a monkey."
+ genomecost = 1
+
+ verbpath = /client/proc/changeling_lesser_form
+
+
+
+/obj/effect/proc_holder/power/changeling_greater_form
+ name = "Greater Form"
+ desc = "We become the pinnicle of evolution. We will show the humans what happens when they leave their isle of ignorance."
+ genomecost = 250
+
+ // doesn't happen lol. Yet!
+
+/obj/effect/proc_holder/power/fakedeath
+ name = "Fake Death"
+ desc = "We fake our death while we heal."
+ genomecost = 0
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_fakedeath
+
+
+
+/obj/effect/proc_holder/power/deaf_sting
+ name = "Deaf Sting"
+ desc = "We silently sting a human, completely silencing them for a short time."
+ genomecost = 1
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_deaf_sting
+
+
+
+/obj/effect/proc_holder/power/blind_sting
+ name = "Blind Sting"
+ desc = "We silently sting a human, completely deafening them for a short time."
+ genomecost = 2
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_blind_sting
+
+
+
+/obj/effect/proc_holder/power/paralysis_sting
+ name = "Paralysis Sting"
+ desc = "We silently sting a human, paralyzing them for a short time. We must be wary, they can still whisper."
+ genomecost = 5
+
+
+ verbpath = /client/proc/changeling_paralysis_sting
+
+
+
+/obj/effect/proc_holder/power/silence_sting
+ name = "Silence Sting"
+ desc = "We silently sting a human, completely silencing them for a short time."
+ helptext = "Does not provide a warning to a victim that they've been stung, until they try to speak and can't." // Man, fuck javascript. ' == '
+ genomecost = 2
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_silence_sting
+
+
+
+/obj/effect/proc_holder/power/transformation_sting
+ name = "Transformation Sting"
+ desc = "We silently sting a human, injecting a retrovirus that forces them to transform into another."
+ genomecost = 2
+
+ verbpath = /client/proc/changeling_transformation_sting
+
+
+
+/obj/effect/proc_holder/power/unfat_sting
+ name = "Unfat Sting"
+ desc = "We silently sting a human, forcing them to rapidly metobolize their fat."
+ genomecost = 1
+
+
+ verbpath = /client/proc/changeling_unfat_sting
+
+/obj/effect/proc_holder/power/boost_range
+ name = "Boost Range"
+ desc = "We evolve the ability to shoot our stingers at humans, with some preperation."
+ genomecost = 2
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_boost_range
+
+
+
+/obj/effect/proc_holder/power/Epinephrine
+ name = "Epinephrine sacs"
+ desc = "We evolve additional sacs of adrenaline throughout our body."
+ helptext = "Gives the ability to instantly recover from stuns. High chemical cost."
+ genomecost = 4
+
+ verbpath = /client/proc/changeling_unstun
+
+
+/obj/effect/proc_holder/power/ChemicalSynth
+ name = "Rapid Chemical Synthesis"
+ desc = "We evolve new pathways for producing our necessary chemicals, permitting us to naturally create them faster."
+ helptext = "Doubles the rate at which we naturally recharge chemicals."
+ genomecost = 4
+ isVerb = 0
+
+ verbpath = /client/proc/changeling_fastchemical
+
+
+
+/obj/effect/proc_holder/power/EngorgedGlands
+ name = "Engorged Chemical Glands"
+ desc = "Our chemical glands swell, permitting us to store more chemicals inside of them."
+ helptext = "Allows us to store an extra 25 units of chemicals."
+ genomecost = 4
+ isVerb = 0
+
+
+ verbpath = /client/proc/changeling_engorgedglands
+
+
+
+/obj/effect/proc_holder/power/DigitalCamoflague
+ name = "Digital Camoflauge"
+ desc = "We evolve the ability to distort our form and proprtions, defeating common altgorthms used to detect lifeforms on cameras."
+ helptext = "We cannot be tracked by camera while using this skill. However, humans looking at us will find us.. uncanny. We must constantly expend chemicals to maintain our form like this."
+ genomecost = 4
+ allowduringlesserform = 1
+
+ verbpath = /client/proc/changeling_digitalcamo
+
+
+
+/obj/effect/proc_holder/power/DeathSting
+ name = "Death Sting"
+ desc = "We silently sting a human, filling him with potent chemicals. His rapid death is all but assured."
+ genomecost = 10
+
+ verbpath = /client/proc/changeling_DEATHsting
+
+
+
+/obj/effect/proc_holder/power/rapidregeneration
+ name = "Rapid Regeneration"
+ desc = "We evolve the ability to rapidly regenerate, negating the need for stasis."
+ helptext = "Heals a moderate amount of damage every tick."
+ genomecost = 8
+
+ verbpath = /client/proc/changeling_rapidregen
+
+/obj/effect/proc_holder/power/LSDSting
+ name = "Hallucination Sting"
+ desc = "We evolve the ability to sting a target with a powerful hallunicationary chemical."
+ helptext = "The target does not notice they've been stung. The effect occurs after 30 to 60 seconds."
+ genomecost = 3
+
+ verbpath = /client/proc/changeling_lsdsting
+
+
+
+
+
+
+// Modularchangling, totally stolen from the new player panel. YAYY
+/datum/changeling/proc/EvolutionMenu()//The new one
+ set category = "Changeling"
+ set desc = "Level up!"
+ if (!usr.changeling)
+ return
+
+ src = usr.changeling
+
+ if(!powerinstances.len)
+ for(var/P in powers)
+ var/obj/effect/proc_holder/power/nP = new P
+ if (nP.desc == "Placeholder")
+ del(nP)
+ continue
+ powerinstances += nP
+
+ var/dat = "Changling Evolution Menu"
+
+ //javascript, the part that does most of the work~
+ dat += {"
+
+
+
+
+
+
+ "}
+
+ //body tag start + onload and onkeypress (onkeyup) javascript event calls
+ dat += ""
+
+ //title + search bar
+ dat += {"
+
+
+
+ "}
+
+ //player table header
+ dat += {"
+
+ "}
+
+ var/i = 1
+ for(var/obj/effect/proc_holder/power/P in powerinstances)
+ var/ownsthis = 0
+
+ if(P in usr.changeling.purchasedpowers)
+ ownsthis = 1
+
+
+ var/color = "#e6e6e6"
+ if(i%2 == 0)
+ color = "#f2f2f2"
+
+
+ dat += {"
+
+
+
+
+
+ Evolve [P] - Cost: [ownsthis ? "Purchased" : P.genomecost]
+
+
+ |
+
+
+ "}
+
+ i++
+
+
+ //player table ending
+ dat += {"
+
+
+
+
+
+ "}
+
+ usr << browse(dat, "window=powers;size=900x480")
+
+
+/datum/changeling/Topic(href, href_list)
+ ..()
+
+ if(href_list["P"])
+ usr.changeling.purchasePower(href_list["P"])
+ call(/datum/changeling/proc/EvolutionMenu)()
+
+
+
+/datum/changeling/proc/purchasePower(var/obj/effect/proc_holder/power/Pname)
+ if (!usr.changeling)
+ return
+
+ var/obj/effect/proc_holder/power/Thepower = null
+
+ for (var/obj/effect/proc_holder/power/P in powerinstances)
+ if(P.name == Pname)
+ Thepower = P
+ break
+
+ if(Thepower == null)
+ usr << "This is awkward. Changeling power purchase failed, please report this bug to a coder!"
+ return
+
+ if(Thepower in usr.changeling.purchasedpowers)
+ usr << "We have already evolved this ability!"
+ return
+
+
+ if(usr.changeling.geneticpoints < Thepower.genomecost)
+ usr << "We cannot evolve this... yet. We must acquire more DNA."
+ return
+
+ usr.changeling.geneticpoints -= Thepower.genomecost
+
+ usr.changeling.purchasedpowers += Thepower
+
+ if(!Thepower.isVerb)
+ call(Thepower.verbpath)()
+
+ else
+ if(usr.changeling.changeling_level == 1)
+ usr.make_lesser_changeling()
+ else
+ usr.make_changeling()
+
diff --git a/code/game/gamemodes/game_mode.dm b/code/game/gamemodes/game_mode.dm
index 86246238a58..4f3cdb9cf82 100644
--- a/code/game/gamemodes/game_mode.dm
+++ b/code/game/gamemodes/game_mode.dm
@@ -20,9 +20,11 @@
station_was_nuked = 0 //see nuclearbomb.dm and malfunction.dm
explosion_in_progress = 0 //sit back and relax
list/datum/mind/modePlayer = new
- list/restricted_jobs = list()
+ list/restricted_jobs = list() // Jobs it doesn't make sense to be. I.E chaplain or AI cultist
+ list/protected_jobs = list() // Jobs that can't be tratiors because
required_players = 0
required_enemies = 0
+ recommended_enemies = 0
uplink_welcome
uplink_uses
uplink_items = {"Highly Visible and Dangerous Weapons;
@@ -71,7 +73,11 @@ Badassery;
/obj/item/toy/syndicateballoon:10:For showing that You Are The BOSS (Useless Balloon);
Whitespace:Seperator;"}
-//obj/item/weapon/syndie/c4explosive/heavy:7:High (!) Power Explosive Charge, with Detonator;
+// Items removed from above:
+/*
+/obj/item/weapon/syndie/c4explosive/heavy:7:High (!) Power Explosive Charge, with Detonator;
+/obj/item/weapon/cloaking_device:4:Cloaking Device; //Replacing cloakers with thermals. -Pete
+*/
/datum/game_mode/proc/announce() //to be calles when round starts
world << "Notice: [src] did not define announce()"
@@ -120,6 +126,72 @@ Whitespace:Seperator;"}
/datum/game_mode/proc/declare_completion()
+ var/clients = 0
+ var/surviving_humans = 0
+ var/surviving_total = 0
+ var/ghosts = 0
+ var/escaped_humans = 0
+ var/escaped_total = 0
+ var/escaped_on_pod_1 = 0
+ var/escaped_on_pod_2 = 0
+ var/escaped_on_pod_3 = 0
+ var/escaped_on_pod_5 = 0
+ var/escaped_on_shuttle = 0
+
+ var/list/area/escape_locations = list(/area/shuttle/escape/centcom, /area/shuttle/escape_pod1/centcom, /area/shuttle/escape_pod2/centcom, /area/shuttle/escape_pod3/centcom, /area/shuttle/escape_pod5/centcom)
+
+ for(var/mob/M in world)
+ if(M.client)
+ clients++
+ if(ishuman(M))
+ if(!M.stat)
+ surviving_humans++
+ if(M.loc && M.loc.loc && M.loc.loc.type in escape_locations)
+ escaped_humans++
+ if(!M.stat)
+ surviving_total++
+ if(M.loc && M.loc.loc && M.loc.loc.type in escape_locations)
+ escaped_total++
+
+ if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape/centcom)
+ escaped_on_shuttle++
+
+ if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape_pod1/centcom)
+ escaped_on_pod_1++
+ if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape_pod2/centcom)
+ escaped_on_pod_2++
+ if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape_pod3/centcom)
+ escaped_on_pod_3++
+ if(M.loc && M.loc.loc && M.loc.loc.type == /area/shuttle/escape_pod5/centcom)
+ escaped_on_pod_5++
+
+ if(isobserver(M))
+ ghosts++
+
+ if(clients > 0)
+ feedback_set("round_end_clients",clients)
+ if(ghosts > 0)
+ feedback_set("round_end_ghosts",ghosts)
+ if(surviving_humans > 0)
+ feedback_set("survived_human",surviving_humans)
+ if(surviving_total > 0)
+ feedback_set("survived_total",surviving_total)
+ if(escaped_humans > 0)
+ feedback_set("escaped_human",escaped_humans)
+ if(escaped_total > 0)
+ feedback_set("escaped_total",escaped_total)
+ if(escaped_on_shuttle > 0)
+ feedback_set("escaped_on_shuttle",escaped_on_shuttle)
+ if(escaped_on_pod_1 > 0)
+ feedback_set("escaped_on_pod_1",escaped_on_pod_1)
+ if(escaped_on_pod_2 > 0)
+ feedback_set("escaped_on_pod_2",escaped_on_pod_2)
+ if(escaped_on_pod_3 > 0)
+ feedback_set("escaped_on_pod_3",escaped_on_pod_3)
+ if(escaped_on_pod_5 > 0)
+ feedback_set("escaped_on_pod_5",escaped_on_pod_5)
+
+
return 0
@@ -169,23 +241,79 @@ Whitespace:Seperator;"}
/datum/game_mode/proc/get_players_for_role(var/role, override_jobbans=1)
var/list/candidates = list()
+ var/list/drafted = list()
+ var/datum/mind/applicant = null
+
+ var/roletext
+ switch(role)
+ if(BE_CHANGELING) roletext="changeling"
+ if(BE_TRAITOR) roletext="traitor"
+ if(BE_OPERATIVE) roletext="operative"
+ if(BE_WIZARD) roletext="wizard"
+ if(BE_REV) roletext="revolutionary"
+ if(BE_CULTIST) roletext="cultist"
+
+
for(var/mob/new_player/player in world)
if(player.client && player.ready)
if(player.preferences.be_special & role)
- if(!jobban_isbanned(player, "Syndicate"))
- candidates += player.mind
+ if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans
+ candidates += player.mind // Get a list of all the people who want to be the antagonist for this round
- if(candidates.len < required_enemies)
+ if(restricted_jobs)
+ for(var/datum/mind/player in candidates)
+ for(var/job in restricted_jobs) // Remove people who want to be antagonist but have a job already that precludes it
+ if(player.assigned_role == job)
+ candidates -= player
+
+ if(candidates.len < recommended_enemies)
for(var/mob/new_player/player in world)
if (player.client && player.ready)
- if(!jobban_isbanned(player, "Syndicate"))
- candidates += player.mind
+ if(!(player.preferences.be_special & role)) // We don't have enough people who want to be antagonist, make a seperate list of people who don't want to be one
+ if(!jobban_isbanned(player, "Syndicate") && !jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans
+ drafted += player.mind
- if(candidates.len < required_enemies && override_jobbans) //just to be safe. Ignored jobbans are better than broken round. Shouldn't happen usually. --rastaf0
+ if(restricted_jobs)
+ for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
+ for(var/job in restricted_jobs)
+ if(player.assigned_role == job)
+ drafted -= player
+
+ while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates
+ if(drafted.len > 0)
+ applicant = pick(drafted)
+ if(applicant)
+ candidates += applicant
+ drafted.Remove(applicant)
+
+ else // Not enough scrubs, ABORT ABORT ABORT
+ break
+
+ if(candidates.len < recommended_enemies && override_jobbans) //If we still don't have enough people, we're going to start drafting banned people.
for(var/mob/new_player/player in world)
if (player.client && player.ready)
- candidates += player.mind
- return candidates
+ if(jobban_isbanned(player, "Syndicate") || jobban_isbanned(player, roletext)) //Nodrak/Carn: Antag Job-bans
+ drafted += player.mind
+
+ if(restricted_jobs)
+ for(var/datum/mind/player in drafted) // Remove people who can't be an antagonist
+ for(var/job in restricted_jobs)
+ if(player.assigned_role == job)
+ drafted -= player
+
+ while(candidates.len < recommended_enemies) // Pick randomlly just the number of people we need and add them to our list of candidates
+ if(drafted.len > 0)
+ applicant = pick(drafted)
+ if(applicant)
+ candidates += applicant
+ drafted.Remove(applicant)
+
+ else // Not enough scrubs, ABORT ABORT ABORT
+ break
+
+ return candidates // Returns: The number of people who had the antagonist role set to yes, regardless of recomended_enemies, if that number is greater than recommended_enemies
+ // recommended_enemies if the number of people with that role set to yes is less than recomended_enemies,
+ // Less if there are not enough valid players in the game entirely to make recommended_enemies.
/datum/game_mode/proc/check_player_role_pref(var/role, var/mob/new_player/player)
diff --git a/code/game/hud.dm b/code/game/hud.dm
index d265ec0d134..1b4c2fae2d2 100644
--- a/code/game/hud.dm
+++ b/code/game/hud.dm
@@ -22,6 +22,7 @@
#define ui_belt "SOUTH-1,3"
#define ui_throw "SOUTH-1,8"
#define ui_oxygen "EAST+1, NORTH-4"
+#define ui_pressure "EAST+1, NORTH-5"
#define ui_toxin "EAST+1, NORTH-6"
#define ui_internal "EAST+1, NORTH-2"
#define ui_fire "EAST+1, NORTH-8"
diff --git a/code/game/jobs/job_controller.dm b/code/game/jobs/job_controller.dm
index cf2f443dcff..7b45fa31fdf 100644
--- a/code/game/jobs/job_controller.dm
+++ b/code/game/jobs/job_controller.dm
@@ -269,9 +269,9 @@ var/global/datum/controller/occupations/job_master
else
C = new /obj/item/weapon/card/id(H)
if(C)
- C.registered_name = H.real_name
+ C.registered = H.real_name
C.assignment = title
- C.name = "[C.registered_name]'s ID Card ([C.assignment])"
+ C.name = "[C.registered]'s ID Card ([C.assignment])"
C.access = get_access(rank)
H.equip_if_possible(C, H.slot_wear_id)
if(!H.equip_if_possible(new /obj/item/weapon/pen(H), H.slot_r_store))
diff --git a/code/game/machinery/alarm.dm b/code/game/machinery/alarm.dm
index 56d3f102635..97d538b445f 100644
--- a/code/game/machinery/alarm.dm
+++ b/code/game/machinery/alarm.dm
@@ -1,3 +1,26 @@
+
+/proc/RandomAAlarmWires()
+ //to make this not randomize the wires, just set index to 1 and increment it in the flag for loop (after doing everything else).
+ var/list/AAlarmwires = list(0, 0, 0, 0, 0)
+ AAlarmIndexToFlag = list(0, 0, 0, 0, 0)
+ AAlarmIndexToWireColor = list(0, 0, 0, 0, 0)
+ AAlarmWireColorToIndex = list(0, 0, 0, 0, 0)
+ var/flagIndex = 1
+ for (var/flag=1, flag<32, flag+=flag)
+ var/valid = 0
+ while (!valid)
+ var/colorIndex = rand(1, 5)
+ if (AAlarmwires[colorIndex]==0)
+ valid = 1
+ AAlarmwires[colorIndex] = flag
+ AAlarmIndexToFlag[flagIndex] = flag
+ AAlarmIndexToWireColor[flagIndex] = colorIndex
+ AAlarmWireColorToIndex[colorIndex] = flagIndex
+ flagIndex+=1
+ return AAlarmwires
+
+
+
// A datum for dealing with threshold limit values
// used in /obj/machinery/alarm
/datum/tlv
@@ -49,6 +72,19 @@
#define AALARM_REPORT_TIMEOUT 100
var/datum/radio_frequency/radio_connection
var/locked = 1
+ var/wiresexposed = 0 // If it's been screwdrivered open.
+ var/aidisabled = 0
+ var/AAlarmwires = 31
+ var/shorted = 0
+
+ // Uses code from apc.dm
+
+#define AALARM_WIRE_IDSCAN 1 //Added wires
+#define AALARM_WIRE_POWER 2
+#define AALARM_WIRE_SYPHON 3
+#define AALARM_WIRE_AI_CONTROL 4
+#define AALARM_WIRE_AALARM 5
+
#define AALARM_MODE_SCRUBBING 1
#define AALARM_MODE_VENTING 2 //makes draught
@@ -89,8 +125,18 @@
"carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
"plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
"other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
- "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.20,ONE_ATMOSPHERE*0.35,ONE_ATMOSPHERE*0.8,ONE_ATMOSPHERE*0.9), /* kpa */
- "temperature" = new/datum/tlv(40, 60, 150, 160), // K
+ "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.40,ONE_ATMOSPHERE*1.60), /* kpa */
+ "temperature" = new/datum/tlv(40, 60, 100, 120), // K
+ )
+
+/obj/machinery/alarm/kitchen_cold_room
+ TLV = list(
+ "oxygen" = new/datum/tlv( 16, 19, 135, 140), // Partial pressure, kpa
+ "carbon dioxide" = new/datum/tlv(-1.0, -1.0, 5, 10), // Partial pressure, kpa
+ "plasma" = new/datum/tlv(-1.0, -1.0, 0.2, 0.5), // Partial pressure, kpa
+ "other" = new/datum/tlv(-1.0, -1.0, 0.5, 1.0), // Partial pressure, kpa
+ "pressure" = new/datum/tlv(ONE_ATMOSPHERE*0.80,ONE_ATMOSPHERE*0.90,ONE_ATMOSPHERE*1.50,ONE_ATMOSPHERE*1.60), /* kpa */
+ "temperature" = new/datum/tlv(200, 210, 273.15, 283.15), // K
)
//all air alarms in area are connected via magic
@@ -136,11 +182,222 @@
if (.)
return
user.machine = src
- user << browse(return_text(user),"window=air_alarm")
- onclose(user, "air_alarm")
- refresh_all()
+
+ if ( (get_dist(src, user) > 1 ))
+ if (!istype(user, /mob/living/silicon))
+ user.machine = null
+ user << browse(null, "window=air_alarm")
+ user << browse(null, "window=AAlarmwires")
+ return
+
+
+ else if (istype(user, /mob/living/silicon) && src.aidisabled)
+ user << "AI control for this Air Alarm interface has been disabled."
+ user << browse(null, "window=air_alarm")
+ return
+
+ if(wiresexposed && (!istype(user, /mob/living/silicon)))
+ var/t1 = text("[alarm_area.name] Air Alarm WiresAccess Panel
\n")
+ var/list/AAlarmwires = list(
+ "Orange" = 1,
+ "Dark red" = 2,
+ "White" = 3,
+ "Yellow" = 4,
+ "Black" = 5,
+ )
+ for(var/wiredesc in AAlarmwires)
+ var/is_uncut = src.AAlarmwires & AAlarmWireColorToFlag[AAlarmwires[wiredesc]]
+ t1 += "[wiredesc] wire: "
+ if(!is_uncut)
+ t1 += "Mend"
+
+ else
+ t1 += "Cut "
+ t1 += "Pulse "
+
+ t1 += "
"
+ t1 += text("
\n[(src.locked ? "The Air Alarm is locked." : "The Air Alarm is unlocked.")]
\n[((src.shorted || (stat & (NOPOWER|BROKEN))) ? "The Air Alarm is offline." : "The Air Alarm is working properly!")]
\n[(src.aidisabled ? "The 'AI control allowed' light is off." : "The 'AI control allowed' light is on.")]")
+ t1 += text("
Close
")
+ user << browse(t1, "window=AAlarmwires")
+ onclose(user, "AAlarmwires")
+
+ if(!shorted)
+ user << browse(return_text(),"window=air_alarm")
+ onclose(user, "air_alarm")
+ refresh_all()
+
return
+
+/obj/machinery/alarm/proc/isWireColorCut(var/wireColor)
+ var/wireFlag = AAlarmWireColorToFlag[wireColor]
+ return ((src.AAlarmwires & wireFlag) == 0)
+
+/obj/machinery/alarm/proc/isWireCut(var/wireIndex)
+ var/wireFlag = AAlarmIndexToFlag[wireIndex]
+ return ((src.AAlarmwires & wireFlag) == 0)
+
+/obj/machinery/alarm/proc/cut(var/wireColor)
+ var/wireFlag = AAlarmWireColorToFlag[wireColor]
+ var/wireIndex = AAlarmWireColorToIndex[wireColor]
+ AAlarmwires &= ~wireFlag
+ switch(wireIndex)
+ if(AALARM_WIRE_IDSCAN)
+ src.locked = 1
+ //world << "Idscan wire cut"
+
+ if(AALARM_WIRE_POWER)
+ src.shock(usr, 50)
+ src.shorted = 1
+ update_icon()
+ //world << "Power wire cut"
+
+ if (AALARM_WIRE_AI_CONTROL)
+ if (src.aidisabled == 0)
+ src.aidisabled = 1
+ //world << "AI Control Wire Cut"
+
+ if(AALARM_WIRE_SYPHON)
+ mode = AALARM_MODE_PANIC
+ apply_mode()
+ //world << "Syphon Wire Cut"
+
+ if(AALARM_WIRE_AALARM)
+
+ if (alarm_area.atmosalert(2))
+ post_alert(2)
+ spawn(1)
+ src.updateUsrDialog()
+ update_icon()
+
+ //world << "AAlarm Wire Cut"
+
+ src.updateDialog()
+
+ return
+
+/obj/machinery/alarm/proc/mend(var/wireColor)
+ var/wireFlag = AAlarmWireColorToFlag[wireColor]
+ var/wireIndex = AAlarmWireColorToIndex[wireColor] //not used in this function
+ AAlarmwires |= wireFlag
+ switch(wireIndex)
+ if(AALARM_WIRE_IDSCAN)
+ //world << "Idscan wire mended"
+
+ if(AALARM_WIRE_POWER)
+ src.shorted = 0
+ src.shock(usr, 50)
+ update_icon()
+ //world << "Power wire mended"
+
+ if(AALARM_WIRE_AI_CONTROL)
+ if (src.aidisabled == 1)
+ src.aidisabled = 0
+ //world << "AI Cont. wire mended"
+
+
+ // if(AALARM_WIRE_SYPHON)
+ // world << "Syphon Wire mended"
+
+
+ // if(AALARM_WIRE_AALARM)
+ //world << "AAlarm Wire mended"
+
+ src.updateDialog()
+ return
+
+/obj/machinery/alarm/proc/pulse(var/wireColor)
+ //var/wireFlag = AAlarmWireColorToFlag[wireColor] //not used in this function
+ var/wireIndex = AAlarmWireColorToIndex[wireColor]
+ switch(wireIndex)
+ if(AALARM_WIRE_IDSCAN) //unlocks for 30 seconds, if you have a better way to hack I'm all ears
+ src.locked = 0
+ spawn(300)
+ src.locked = 1
+ //world << "Idscan wire pulsed"
+
+ if (AALARM_WIRE_POWER)
+ // world << "Power wire pulsed"
+ if(shorted == 0)
+ shorted = 1
+ update_icon()
+
+ spawn(1200)
+ if(shorted == 1)
+ shorted = 0
+ update_icon()
+
+
+ if (AALARM_WIRE_AI_CONTROL)
+ // world << "AI Control wire pulsed"
+ if (src.aidisabled == 0)
+ src.aidisabled = 1
+ src.updateDialog()
+ spawn(10)
+ if (src.aidisabled == 1)
+ src.aidisabled = 0
+ src.updateDialog()
+
+ if(AALARM_WIRE_SYPHON)
+ // world << "Syphon wire pulsed"
+ mode = AALARM_MODE_REPLACEMENT
+ apply_mode()
+
+ if(AALARM_WIRE_AALARM)
+ // world << "Aalarm wire pulsed"
+ if (alarm_area.atmosalert(0))
+ post_alert(0)
+ spawn(1)
+ src.updateUsrDialog()
+ update_icon()
+
+ src.updateDialog()
+ return
+
+/obj/machinery/alarm/proc/shock(mob/user, prb)
+ if((stat & (NOPOWER))) // unpowered, no shock
+ return 0
+ if(!prob(prb))
+ return 0 //you lucked out, no shock for you
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(5, 1, src)
+ s.start() //sparks always.
+ if (electrocute_mob(user, get_area(src), src))
+ return 1
+ else
+ return 0
+
+/obj/machinery/alarm/Topic(href, href_list)
+ src.add_fingerprint(usr)
+ usr.machine = src
+
+ if ( (get_dist(src, usr) > 1 ))
+ if (!istype(usr, /mob/living/silicon))
+ usr.machine = null
+ usr << browse(null, "window=air_alarm")
+ usr << browse(null, "window=AAlarmwires")
+ return
+
+ if (href_list["AAlarmwires"])
+ var/t1 = text2num(href_list["AAlarmwires"])
+ if (!( istype(usr.equipped(), /obj/item/weapon/wirecutters) ))
+ usr << "You need wirecutters!"
+ return
+ if (src.isWireColorCut(t1))
+ src.mend(t1)
+ else
+ src.cut(t1)
+ else if (href_list["pulse"])
+ var/t1 = text2num(href_list["pulse"])
+ if (!istype(usr.equipped(), /obj/item/device/multitool))
+ usr << "You need a multitool!"
+ return
+ if (src.isWireColorCut(t1))
+ usr << "You can't pulse a cut wire."
+ return
+ else
+ src.pulse(t1)
+
/obj/machinery/alarm/receive_signal(datum/signal/signal)
if(stat & (NOPOWER|BROKEN))
return
@@ -215,11 +472,11 @@
return 1
-/obj/machinery/alarm/proc/return_text(mob/user)
- if(!(istype(user, /mob/living/silicon)) && locked)
- return "[src][return_status()]
[rcon_text()]
(Swipe ID card to unlock interface)"
+/obj/machinery/alarm/proc/return_text()
+ if(!(istype(usr, /mob/living/silicon)) && locked)
+ return "[src][return_status()]
(Swipe ID card to unlock interface)"
else
- return "[src][return_status()]
[rcon_text()]
[return_controls()]"
+ return "[src][return_status()]
[return_controls()]"
/obj/machinery/alarm/proc/return_status()
var/turf/location = src.loc
@@ -518,6 +775,12 @@ table tr:first-child th:first-child { border: none;}
if(href_list["rcon"])
rcon_setting = text2num(href_list["rcon"])
src.updateUsrDialog()
+
+ if ( (get_dist(src, usr) > 1 ))
+ if (!istype(usr, /mob/living/silicon))
+ usr.machine = null
+ usr << browse(null, "window=air_alarm")
+
if(href_list["command"])
var/device_id = href_list["id_tag"]
switch(href_list["command"])
@@ -636,7 +899,10 @@ table tr:first-child th:first-child { border: none;}
))
/obj/machinery/alarm/update_icon()
- if(stat & (NOPOWER|BROKEN))
+ if(wiresexposed)
+ icon_state = "alarmx"
+ return
+ if((stat & (NOPOWER|BROKEN)) || shorted)
icon_state = "alarmp"
return
switch(max(danger_level, alarm_area.atmosalm))
@@ -648,7 +914,7 @@ table tr:first-child th:first-child { border: none;}
src.icon_state = "alarm1"
/obj/machinery/alarm/process()
- if(stat & (NOPOWER|BROKEN))
+ if((stat & (NOPOWER|BROKEN)) || shorted)
return
var/turf/simulated/location = src.loc
@@ -742,26 +1008,37 @@ table tr:first-child th:first-child { border: none;}
var/new_area_danger_level = 0
for (var/area/A in alarm_area.related)
for (var/obj/machinery/alarm/AA in A)
- if (!(AA.stat & (NOPOWER|BROKEN)))
+ if (!(AA.stat & (NOPOWER|BROKEN)) && !AA.shorted)
new_area_danger_level = max(new_area_danger_level,AA.danger_level)
if (alarm_area.atmosalert(new_area_danger_level)) //if area was in normal state or if area was in alert state
post_alert(new_area_danger_level)
update_icon()
/obj/machinery/alarm/attackby(obj/item/W as obj, mob/user as mob)
- if (istype(W, /obj/item/weapon/wirecutters))
+/* if (istype(W, /obj/item/weapon/wirecutters))
stat ^= BROKEN
src.add_fingerprint(user)
for(var/mob/O in viewers(user, null))
O.show_message(text("\red [] has []activated []!", user, (stat&BROKEN) ? "de" : "re", src), 1)
update_icon()
return
+*/
+ if(istype(W, /obj/item/weapon/screwdriver)) // Opening that Air Alarm up.
+ //user << "You pop the Air Alarm's maintence panel open."
+ wiresexposed = !wiresexposed
+ user << "The wires have been [wiresexposed ? "exposed" : "unexposed"]"
+ update_icon()
+ return
+
+ if (wiresexposed && ((istype(W, /obj/item/device/multitool) || istype(W, /obj/item/weapon/wirecutters))))
+ return src.attack_hand(user)
+
else if (istype(W, /obj/item/weapon/card/id) || istype(W, /obj/item/device/pda))// trying to unlock the interface with an ID card
if(stat & (NOPOWER|BROKEN))
user << "It does nothing"
else
- if(src.allowed(usr))
+ if(src.allowed(usr) && !isWireCut(AALARM_WIRE_IDSCAN))
locked = !locked
user << "\blue You [ locked ? "lock" : "unlock"] the Air Alarm interface."
src.updateUsrDialog()
@@ -861,7 +1138,7 @@ table tr:first-child th:first-child { border: none;}
d2 = text("Initiate Time Lock", src)
var/second = src.time % 60
var/minute = (src.time - second) / 60
- var/dat = text("Fire alarm []\n
\nTimer System: []
\nTime Left: [][] - - + +\n", d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
+ var/dat = "Fire alarm [d1]\n
The current alert level is: [get_security_level()]
\nTimer System: [d2]
\nTime Left: [(minute ? "[minute]:" : null)][second] - - + +\n"
user << browse(dat, "window=firealarm")
onclose(user, "firealarm")
else
@@ -876,7 +1153,7 @@ table tr:first-child th:first-child { border: none;}
d2 = text("[]", src, stars("Initiate Time Lock"))
var/second = src.time % 60
var/minute = (src.time - second) / 60
- var/dat = text("[] []\n
\nTimer System: []
\nTime Left: [][] - - + +\n", stars("Fire alarm"), d1, d2, (minute ? text("[]:", minute) : null), second, src, src, src, src)
+ var/dat = "[stars("Fire alarm")] [d1]\n
The current alert level is: [stars(get_security_level())]
\nTimer System: [d2]
\nTime Left: [(minute ? text("[]:", minute) : null)][second] - - + +\n"
user << browse(dat, "window=firealarm")
onclose(user, "firealarm")
return
diff --git a/code/game/machinery/bots/ed209bot.dm b/code/game/machinery/bots/ed209bot.dm
index 8f2872dba9d..709730ed5d1 100644
--- a/code/game/machinery/bots/ed209bot.dm
+++ b/code/game/machinery/bots/ed209bot.dm
@@ -640,7 +640,7 @@ Auto Patrol: []"},
var/obj/item/device/pda/pda = perp:wear_id
id = pda.id
if (id)
- perpname = id.registered_name
+ perpname = id.registered
else
var/obj/item/device/pda/pda = perp:wear_id
perpname = pda.owner
diff --git a/code/game/machinery/bots/secbot.dm b/code/game/machinery/bots/secbot.dm
index 61338d73778..406fa150b4a 100644
--- a/code/game/machinery/bots/secbot.dm
+++ b/code/game/machinery/bots/secbot.dm
@@ -616,7 +616,7 @@ Auto Patrol: []"},
var/obj/item/device/pda/pda = perp:wear_id
id = pda.id
if(id)
- perpname = id.registered_name
+ perpname = id.registered
else
var/obj/item/device/pda/pda = perp:wear_id
perpname = pda.owner
diff --git a/code/game/machinery/computer/id.dm b/code/game/machinery/computer/id.dm
index 6583bc5f416..3930bf6a46e 100644
--- a/code/game/machinery/computer/id.dm
+++ b/code/game/machinery/computer/id.dm
@@ -64,8 +64,8 @@
target_name = modify.name
else
target_name = "--------"
- if(modify && modify.registered_name)
- target_owner = modify.registered_name
+ if(modify && modify.registered)
+ target_owner = modify.registered
else
target_owner = "--------"
if(modify && modify.assignment)
@@ -169,8 +169,8 @@
switch(href_list["choice"])
if ("modify")
if (modify)
- data_core.manifest_modify(modify.registered_name, modify.assignment)
- modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")
+ data_core.manifest_modify(modify.registered, modify.assignment)
+ modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
if(ishuman(usr))
modify.loc = usr.loc
if(!usr.get_active_hand())
@@ -235,7 +235,7 @@
var/t2 = modify
//var/t1 = input(usr, "What name?", "ID computer", null) as text
if ((authenticated && modify == t2 && (in_range(src, usr) || (istype(usr, /mob/living/silicon))) && istype(loc, /turf)))
- modify.registered_name = href_list["reg"]
+ modify.registered = href_list["reg"]
if ("mode")
mode = text2num(href_list["mode_target"])
if ("print")
@@ -247,6 +247,6 @@
P.name = "paper - 'Crew Manifest'"
printing = null
if (modify)
- modify.name = text("[modify.registered_name]'s ID Card ([modify.assignment])")
+ modify.name = text("[modify.registered]'s ID Card ([modify.assignment])")
updateUsrDialog()
return
\ No newline at end of file
diff --git a/code/game/machinery/computer/medical.dm b/code/game/machinery/computer/medical.dm
index 3c200f6158a..45209a76102 100644
--- a/code/game/machinery/computer/medical.dm
+++ b/code/game/machinery/computer/medical.dm
@@ -228,7 +228,7 @@
src.active1 = null
src.active2 = null
if (src.check_access(src.scan))
- src.authenticated = src.scan.registered_name
+ src.authenticated = src.scan.registered
src.rank = src.scan.assignment
src.screen = 1
if (src.authenticated)
diff --git a/code/game/machinery/computer/security.dm b/code/game/machinery/computer/security.dm
index afa39cbdf3a..ab761ca6c97 100644
--- a/code/game/machinery/computer/security.dm
+++ b/code/game/machinery/computer/security.dm
@@ -221,7 +221,7 @@ What a mess.*/
active1 = null
active2 = null
if(check_access(scan))
- authenticated = scan.registered_name
+ authenticated = scan.registered
rank = scan.assignment
screen = 1
//RECORD FUNCTIONS
diff --git a/code/game/machinery/computer/shuttle.dm b/code/game/machinery/computer/shuttle.dm
index e17df881298..4573f6b5c38 100644
--- a/code/game/machinery/computer/shuttle.dm
+++ b/code/game/machinery/computer/shuttle.dm
@@ -14,23 +14,23 @@
var/obj/item/device/pda/pda = W
W = pda.id
if (!W:access) //no access
- user << "The access level of [W:registered_name]\'s card is not high enough. "
+ user << "The access level of [W:registered]\'s card is not high enough. "
return
var/list/cardaccess = W:access
if(!istype(cardaccess, /list) || !cardaccess.len) //no access
- user << "The access level of [W:registered_name]\'s card is not high enough. "
+ user << "The access level of [W:registered]\'s card is not high enough. "
return
if(!(access_heads in W:access)) //doesn't have this access
- user << "The access level of [W:registered_name]\'s card is not high enough. "
+ user << "The access level of [W:registered]\'s card is not high enough. "
return 0
var/choice = alert(user, text("Would you like to (un)authorize a shortened launch time? [] authorization\s are still needed. Use abort to cancel all authorizations.", src.auth_need - src.authorized.len), "Shuttle Launch", "Authorize", "Repeal", "Abort")
switch(choice)
if("Authorize")
- src.authorized -= W:registered_name
- src.authorized += W:registered_name
+ src.authorized -= W:registered
+ src.authorized += W:registered
if (src.auth_need - src.authorized.len > 0)
message_admins("[key_name_admin(user)] has authorized early shuttle launch")
log_game("[user.ckey] has authorized early shuttle launch")
@@ -45,7 +45,7 @@
src.authorized = list( )
if("Repeal")
- src.authorized -= W:registered_name
+ src.authorized -= W:registered
world << text("\blue Alert: [] authorizations needed until shuttle is launched early", src.auth_need - src.authorized.len)
if("Abort")
diff --git a/code/game/machinery/doors/airlock_electronics.dm b/code/game/machinery/doors/airlock_electronics.dm
index 50bd35d0c9d..08ce5b2a9c6 100644
--- a/code/game/machinery/doors/airlock_electronics.dm
+++ b/code/game/machinery/doors/airlock_electronics.dm
@@ -73,7 +73,7 @@
I = pda.id
if (I && src.check_access(I))
src.locked = 0
- src.last_configurator = I:registered_name
+ src.last_configurator = I:registered
if (locked)
return
diff --git a/code/game/machinery/portable_turret.dm b/code/game/machinery/portable_turret.dm
index 3263c3d9b73..8c8c141782b 100644
--- a/code/game/machinery/portable_turret.dm
+++ b/code/game/machinery/portable_turret.dm
@@ -432,7 +432,7 @@ Neutralize All Unidentified Life Signs: []
"},
var/obj/item/device/pda/pda = perp:wear_id
id = pda.id
if (id)
- perpname = id.registered_name
+ perpname = id.registered
else
var/obj/item/device/pda/pda = perp:wear_id
perpname = pda.owner
diff --git a/code/game/machinery/requests_console.dm b/code/game/machinery/requests_console.dm
index ea8c3f2ff36..0fe117fb052 100644
--- a/code/game/machinery/requests_console.dm
+++ b/code/game/machinery/requests_console.dm
@@ -308,7 +308,7 @@ var/list/obj/machinery/requests_console/allConsoles = list()
if (istype(O, /obj/item/weapon/card/id))
if(src.screen == 9)
var/obj/item/weapon/card/id/T = O
- src.msgVerified = text("Verified by [T.registered_name] ([T.assignment])")
+ src.msgVerified = text("Verified by [T.registered] ([T.assignment])")
src.updateUsrDialog()
if(src.screen == 10)
var/obj/item/weapon/card/id/ID = O
diff --git a/code/game/objects/alien/facehugger.dm b/code/game/objects/alien/facehugger.dm
index ec6cbdfece8..5c9db1b572d 100644
--- a/code/game/objects/alien/facehugger.dm
+++ b/code/game/objects/alien/facehugger.dm
@@ -213,9 +213,10 @@ var/const
proc/RemoveActiveIndicators() //removes the "active" facehugger indicator from all aliens in the world for this hugger
for(var/mob/living/carbon/alien/alien in world)
- for(var/image/image in alien.client.images)
- if(image.icon_state == "facehugger_active" && image.loc == src)
- del(image)
+ if(alien.client)
+ for(var/image/image in alien.client.images)
+ if(image.icon_state == "facehugger_active" && image.loc == src)
+ del(image)
return
diff --git a/code/game/objects/closets/secure/personal.dm b/code/game/objects/closets/secure/personal.dm
index c4b9ae2c016..bcc66a04c21 100644
--- a/code/game/objects/closets/secure/personal.dm
+++ b/code/game/objects/closets/secure/personal.dm
@@ -31,17 +31,17 @@
user << "\red It appears to be broken."
return
var/obj/item/weapon/card/id/I = W
- if(!I || !I.registered_name) return
- if(src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered_name)))
+ if(!I || !I.registered) return
+ if(src.allowed(user) || !src.registered || (istype(I) && (src.registered == I.registered)))
//they can open all lockers, or nobody owns this, or they own this locker
src.locked = !( src.locked )
if(src.locked) src.icon_state = src.icon_locked
else src.icon_state = src.icon_closed
if(!src.registered)
- src.registered = I.registered_name
- src.desc = "Owned by [I.registered_name]."
- src.name = "Personal Closet - [I.registered_name]"
+ src.registered = I.registered
+ src.desc = "Owned by [I.registered]."
+ src.name = "Personal Closet - [I.registered]"
else
user << "\red Access Denied"
else if( (istype(W, /obj/item/weapon/card/emag)||istype(W, /obj/item/weapon/melee/energy/blade)) && !src.broken)
diff --git a/code/game/objects/devices/PDA/PDA.dm b/code/game/objects/devices/PDA/PDA.dm
index 7bbefbc4c2a..115ed8a5ab2 100755
--- a/code/game/objects/devices/PDA/PDA.dm
+++ b/code/game/objects/devices/PDA/PDA.dm
@@ -104,6 +104,7 @@
/obj/item/device/pda/captain
default_cartridge = /obj/item/weapon/cartridge/captain
icon_state = "pda-c"
+ toff = 1
/obj/item/device/pda/quartermaster
default_cartridge = /obj/item/weapon/cartridge/quartermaster
@@ -143,6 +144,26 @@
if (default_cartridge)
cartridge = new default_cartridge(src)
+/obj/item/device/pda/proc/can_use()
+ if(!ismob(loc))
+ return 0
+ var/mob/M = loc
+
+ if(!M.canmove)
+ return 0
+
+ if((src in M.contents) || ( istype(loc, /turf) && in_range(src, M) ) )
+ return 1
+ else
+ return 0
+
+
+/obj/item/device/pda/MouseDrop(obj/over_object as obj, src_location, over_location)
+ var/mob/M = usr
+ if((!istype(over_object, /obj/screen)) && !M.restrained() && !M.stat && can_use())
+ return attack_self(M)
+ return
+
//NOTE: graphic resources are loaded on client login
/obj/item/device/pda/attack_self(mob/user as mob)
user.machine = src
@@ -167,7 +188,9 @@
if (0)
dat += "PERSONAL DATA ASSISTANT v.1.2
"
dat += "Owner: [owner], [ownjob]
"
- dat += text("ID: []
", src, (id ? "[id.registered_name], [id.assignment]" : "----------"))
+ dat += text("ID: []
", src, (id ? "[id.registered], [id.assignment]" : "----------"))
+ dat += text("[]
", src, (id ? "Update PDA Info" : ""))
+
dat += "Station Time: [round(world.time / 36000)+12]:[(world.time / 600 % 60) < 10 ? add_zero(world.time / 600 % 60, 1) : world.time / 600 % 60]"//:[world.time / 100 % 6][world.time / 100 % 10]"
dat += "
"
@@ -323,6 +346,7 @@
dat += data_core.get_manifest(1)
dat += "
"
+
else//Else it links to the cart menu proc. Although, it really uses menu hub 4--menu 4 doesn't really exist as it simply redirects to hub.
dat += cart
@@ -333,9 +357,10 @@
/obj/item/device/pda/Topic(href, href_list)
..()
var/mob/living/U = usr
- U.last_target_click = world.time
//Looking for master was kind of pointless since PDAs don't appear to have one.
- if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
+ //if ((src in U.contents) || ( istype(loc, /turf) && in_range(src, U) ) )
+
+ if(can_use()) //Why reinvent the wheel? There's a proc that does exactly that.
if ( !(U.stat || U.restrained()) )
add_fingerprint(U)
@@ -362,6 +387,9 @@
cartridge.unlock()
if ("Authenticate")//Checks for ID
id_check(U, 1)
+ if("UpdateInfo")
+ ownjob = id.assignment
+ name = "PDA-[owner] ([ownjob])"
if("Eject")//Ejects the cart, only done from hub.
if (!isnull(cartridge))
var/turf/T = loc
@@ -470,6 +498,7 @@
return
var/obj/item/device/pda/P = locate(href_list["target"])
+ if(!istype(P)) return
if(istype(P, /obj/item/device/pda))
if (isnull(P)||P.toff || toff)
@@ -480,8 +509,15 @@
last_text = world.time
+
+// var/AnsweringMS = 0
for (var/obj/machinery/message_server/MS in world)
MS.send_pda_message("[P.owner]","[owner]","[t]")
+// if(MS.active)
+// AnsweringMS++
+
+// if(!AnsweringMS)
+// return
tnote += "→ To [P.owner]:
[t]
"
P.tnote += "← From [owner]:
[t]
"
@@ -508,13 +544,20 @@
// pAI Message
else
+/* var/AnsweringMS = 0
+ for (var/obj/machinery/message_server/MS in world)
+ MS.send_pda_message("[P]","[src]","[t]")
+ if(MS.active)
+ AnsweringMS++
+
+ if(!AnsweringMS)
+ return
+*/
+
tnote += "→ To [P]:
[t]
"
P.tnote += "← From [src]:
[t]
"
- for (var/obj/machinery/message_server/MS in world)
- MS.send_pda_message("[P]","[src]","[t]")
-
if (prob(15)) //Give the AI a chance of intercepting the message
var/who = src
if(prob(50))
@@ -524,6 +567,7 @@
playsound(P.loc, 'twobeep.ogg', 50, 1)
+// log_pda("[usr] (PDA: [src.name]) sent \"[t]\" to [P.name]")
if("Send Honk")//Honk virus
@@ -667,7 +711,7 @@
id = I
else
var/obj/item/weapon/card/I = user.equipped()
- if (istype(I, /obj/item/weapon/card/id) && I:registered_name)
+ if (istype(I, /obj/item/weapon/card/id) && I:registered)
if(id)//Get id and replace it.
user.drop_item()
I.loc = src
@@ -690,29 +734,18 @@
if (C:radio)
C:radio.hostpda = src
- else if (istype(C, /obj/item/weapon/card/id) && C:registered_name)
+ else if (istype(C, /obj/item/weapon/card/id) && C:registered)
if(!owner)
- owner = C:registered_name
+ owner = C:registered
ownjob = C:assignment
name = "PDA-[owner] ([ownjob])"
user << "\blue Card scanned."
else
- var/input=alert("Would you like to insert the card or update owner information?",,"Insert","Update")
//Basic safety check. If either both objects are held by user or PDA is on ground and card is in hand.
-
if ( ( (src in user.contents) && (C in user.contents)) || (istype(loc, /turf) && in_range(src, user) && (C in user.contents)) )
if ( !(user.stat || user.restrained()) )//If they can still act.
- if(input=="Insert")
- id_check(user, 2)
- else
- if(!(owner == C:registered_name))
- user << "\blue Name on card does not match registered name. Please try again."
- else if((owner == C:registered_name) && (ownjob == C:assignment))
- user << "\blue Rank is up to date."
- else if((owner == C:registered_name) && (ownjob != C:assignment))
- ownjob = C:assignment
- name = "PDA-[owner] ([ownjob])"
- user << "\blue Rank updated."
+ id_check(user, 2)
+ user << "\blue You put the ID into the [src.name]'s slot."
updateSelfDialog()//Update self dialog on success.
return//Return in case of failed check or when successful.
updateSelfDialog()//For the non-input related code.
@@ -733,10 +766,21 @@
O.show_message("\red [user] has analyzed [C]'s vitals!", 1)
user.show_message("\blue Analyzing Results for [C]:")
- user.show_message("\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health]% healthy"]", 1)
+ user.show_message("\blue \t Overall Status: [C.stat > 1 ? "dead" : "[C.health - C.halloss]% healthy"]", 1)
user.show_message("\blue \t Damage Specifics: [C.getOxyLoss() > 50 ? "\red" : "\blue"][C.getOxyLoss()]-[C.getToxLoss() > 50 ? "\red" : "\blue"][C.getToxLoss()]-[C.getFireLoss() > 50 ? "\red" : "\blue"][C.getFireLoss()]-[C.getBruteLoss() > 50 ? "\red" : "\blue"][C.getBruteLoss()]", 1)
user.show_message("\blue \t Key: Suffocation/Toxin/Burns/Brute", 1)
user.show_message("\blue \t Body Temperature: [C.bodytemperature-T0C]°C ([C.bodytemperature*1.8-459.67]°F)", 1)
+/*
+ if(istype(C, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = C
+ var/list/damaged = H.get_damaged_organs(1,1)
+ user.show_message("\blue Localized Damage, Brute/Burn:",1)
+ if(length(damaged)>0)
+ for(var/datum/organ/external/org in damaged)
+ user.show_message(text("\blue \t []: []\blue-[]",capitalize(org.getDisplayName()),(org.brute_dam > 0)?"\red [org.brute_dam]":0,(org.burn_dam > 0)?"\red [org.burn_dam]":0),1)
+ else
+ user.show_message("\blue \t Limbs are OK.",1)
+*/
for(var/datum/disease/D in C.viruses)
if(!D.hidden[SCANNER])
user.show_message(text("\red Warning: [D.form] Detected\nName: [D.name].\nType: [D.spread].\nStage: [D.stage]/[D.max_stages].\nPossible Cure: [D.cure]"))
@@ -916,6 +960,7 @@
icon = 'pda.dmi'
icon_state = "pdabox"
item_state = "syringe_kit"
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/PDAbox/New()
..()
diff --git a/code/game/objects/electricchair.dm b/code/game/objects/electricchair.dm
new file mode 100644
index 00000000000..027577f26ab
--- /dev/null
+++ b/code/game/objects/electricchair.dm
@@ -0,0 +1,77 @@
+/obj/structure/stool/bed/chair/e_chair
+ name = "electric chair"
+ desc = "Looks absolutely SHOCKING!"
+ icon_state = "echair0"
+ var/on = 0
+ var/obj/item/assembly/shock_kit/part = null
+ var/last_time = 1.0
+
+/obj/structure/stool/bed/chair/e_chair/New()
+ overlays += image('objects.dmi', src, "echair_over", MOB_LAYER + 1, dir)
+ return
+
+/obj/structure/stool/bed/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ if(istype(W, /obj/item/weapon/wrench))
+ var/obj/structure/stool/bed/chair/C = new /obj/structure/stool/bed/chair(src.loc)
+ playsound(src.loc, 'Ratchet.ogg', 50, 1)
+ C.dir = src.dir
+ src.part.loc = src.loc
+ src.part.master = null
+ src.part = null
+ del(src)
+ return
+ return
+
+/obj/structure/stool/bed/chair/e_chair/verb/toggle()
+ set name = "Toggle Electric Chair"
+ set category = "Object"
+ set src in oview(1)
+
+ if(on)
+ on = 0
+ icon_state = "echair0"
+ else
+ on = 1
+ icon_state = "echair1"
+ return
+
+/obj/structure/stool/bed/chair/e_chair/rotate()
+ ..()
+ overlays = null
+ overlays += image('objects.dmi', src, "echair_over", MOB_LAYER + 1, dir) //there's probably a better way of handling this, but eh. -Pete
+ return
+
+/obj/structure/stool/bed/chair/e_chair/proc/shock()
+ if(!(src.on))
+ return
+ if((src.last_time + 50) > world.time)
+ return
+ src.last_time = world.time
+
+ // special power handling
+ var/area/A = get_area(src)
+ if(!isarea(A))
+ return
+ if(!A.powered(EQUIP))
+ return
+ A.use_power(EQUIP, 5000)
+ var/light = A.power_light
+ A.updateicon()
+
+ flick("echair1", src)
+ var/datum/effect/effect/system/spark_spread/s = new /datum/effect/effect/system/spark_spread
+ s.set_up(12, 1, src)
+ s.start()
+ if(buckled_mob)
+ buckled_mob.burn_skin(85)
+ buckled_mob << "\red You feel a deep shock course through your body!"
+ sleep(1)
+ buckled_mob.burn_skin(85)
+ buckled_mob.Stun(600)
+ for(var/mob/M in hearers(src, null))
+ M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
+
+ A.power_light = light
+ A.updateicon()
+ return
\ No newline at end of file
diff --git a/code/game/objects/items/shock_kit.dm b/code/game/objects/items/shock_kit.dm
index ee5847d0569..3c737ead595 100644
--- a/code/game/objects/items/shock_kit.dm
+++ b/code/game/objects/items/shock_kit.dm
@@ -49,8 +49,8 @@
/obj/item/assembly/shock_kit/receive_signal()
//*****
//world << "Shock kit got r_signal"
- if (istype(src.loc, /obj/structure/stool/chair/e_chair))
- var/obj/structure/stool/chair/e_chair/C = src.loc
+ if (istype(src.loc, /obj/structure/stool/bed/chair/e_chair))
+ var/obj/structure/stool/bed/chair/e_chair/C = src.loc
//world << "Shock kit sending shock to EC"
C.shock()
return
diff --git a/code/game/objects/items/weapons/cards_ids.dm b/code/game/objects/items/weapons/cards_ids.dm
index e237f7f94d0..a314d216d5f 100644
--- a/code/game/objects/items/weapons/cards_ids.dm
+++ b/code/game/objects/items/weapons/cards_ids.dm
@@ -4,38 +4,13 @@ DATA CARD
ID CARD
FINGERPRINT CARD HOLDER
FINGERPRINT CARD
+
*/
-/obj/item/weapon/card
- name = "card"
- desc = "Does card things."
- icon = 'card.dmi'
- w_class = 1.0
- var/list/files = list( )
-/obj/item/weapon/card/emag
- desc = "An identification card. Seems to have some funny chip on it, though."
- name = "modified identification card"
- icon_state = "emag"
- item_state = "card-id"
- origin_tech = "magnets=2;syndicate=2"
- var/uses = 5
-
- New()
- ..()
- uses = rand(3,5)
- return
// DATA CARDS
-/obj/item/weapon/card/data
- name = "data disk"
- desc = "A disk with data."
- icon_state = "data"
- var/function = "storage"
- var/data = "null"
- var/special = null
- item_state = "card-id"
/obj/item/weapon/card/data/verb/label(t as text)
set name = "Label Disk"
@@ -50,58 +25,9 @@ FINGERPRINT CARD
return
+
+
// ID CARDS
-/obj/item/weapon/card/id
- name = "identification card"
- desc = "An identification card."
- icon_state = "id"
- item_state = "card-id"
- var/access = list()
- var/registered_name = null // The name registered on the card
- var/assignment = null
- var/obj/item/weapon/photo/PHOTO = null
- var/over_jumpsuit = 1 // If set to 0, it won't display on top of the mob's jumpsuit
- var/dorm = 0 // determines if this ID has claimed a dorm already
-
-/obj/item/weapon/card/id/gold
- name = "identification card"
- desc = "A golden identification card."
- icon_state = "gold"
- item_state = "gold_id"
-
-/obj/item/weapon/card/id/captains_spare
- name = "Captain's spare ID"
- icon_state = "gold"
- item_state = "gold_id"
- registered_name = "Captain"
- assignment = "Captain"
- New()
- access = get_access("Captain")
- ..()
-
-/obj/item/weapon/card/id/centcom
- name = "CentCom ID"
- desc = "An ID straight from Cent. Com."
- icon_state = "centcom"
- registered_name = "Central Command"
- assignment = "General"
- New()
- access = get_all_centcom_access()
- ..()
-
-/obj/item/weapon/card/id/syndicate
- name = "agent card"
- desc = "Shhhhh."
- access = list(access_maint_tunnels)
- origin_tech = "syndicate=3"
-
-/obj/item/weapon/card/id/syndicate_command
- name = "Syndicate ID card"
- desc = "An ID straight from the Syndicate."
- registered_name = "Syndicate"
- assignment = "Syndicate Overlord"
- access = list(access_syndicate)
-
/obj/item/weapon/card/id/attack_self(mob/user as mob)
for(var/mob/O in viewers(user, null))
@@ -110,6 +36,14 @@ FINGERPRINT CARD
src.add_fingerprint(user)
return
+/obj/item/weapon/card/id/attack_hand(mob/user as mob)
+ var/obj/item/weapon/storage/wallet/WL
+ if( istype(loc, /obj/item/weapon/storage/wallet) )
+ WL = loc
+ ..()
+ if(WL)
+ WL.update_icon()
+
/obj/item/weapon/card/id/verb/read()
set name = "Read ID Card"
set category = "Object"
@@ -119,37 +53,13 @@ FINGERPRINT CARD
return
/obj/item/weapon/card/id/syndicate/attack_self(mob/user as mob)
- src.registered_name = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)
- src.assignment = input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")
- src.name = "[src.registered_name]'s ID Card ([src.assignment])"
- user << "\blue You successfully forge the ID card."
-
-/obj/item/weapon/card/id/attackby(obj/item/weapon/W as obj, mob/user as mob)
- ..()
- if(istype(W,/obj/item/weapon/photo))
- if(!(PHOTO))
- src.PHOTO = W
- usr.before_take_item(W)
- W.loc = src
- //src.orient2hud(usr)
- add_fingerprint(usr)
- usr << "\blue You add the photo to the ID."
- else
- usr << "\blue There is already a photo on this ID."
-
- //PHOTO.loc = locate(0,0,0)
-
-/obj/item/weapon/card/id/verb/removePhoto()
- set name = "Remove Photo From ID"
- set category = "Object"
-
- if(PHOTO)
- contents -= PHOTO
- PHOTO.loc = usr.loc
- PHOTO.layer = 3
- PHOTO = null
+ if(!src.registered)
+ src.registered = input(user, "What name would you like to put on this card?", "Agent card name", ishuman(user) ? user.real_name : user.name)
+ src.assignment = input(user, "What occupation would you like to put on this card?\nNote: This will not grant any access levels other than Maintenance.", "Agent card job assignment", "Assistant")
+ src.name = "[src.registered]'s ID Card ([src.assignment])"
+ user << "\blue You successfully forge the ID card."
else
- usr << "\blue There is no photo to remove."
+ ..()
// FINGERPRINT HOLDER
@@ -271,7 +181,9 @@ FINGERPRINT CARD
return
/obj/item/weapon/f_card/proc/display()
-
+ if(!fingerprints) return
+ if (!istype(src.fingerprints, /list))
+ src.fingerprints = params2list(src.fingerprints)
if (length(src.fingerprints))
var/dat = "Fingerprints on Card
"
for(var/i = 1, i < (src.fingerprints.len + 1), i++)
diff --git a/code/game/objects/items/weapons/dna_injector.dm b/code/game/objects/items/weapons/dna_injector.dm
index 37f7ac4086c..6059f5eeca7 100644
--- a/code/game/objects/items/weapons/dna_injector.dm
+++ b/code/game/objects/items/weapons/dna_injector.dm
@@ -23,7 +23,7 @@
/obj/item/weapon/dnainjector/proc/inject(mob/M as mob)
M.radiation += rand(20,50)
- if (!(M.mutations & HUSK)) // prevents husks from having their DNA changed
+ if (!(M.mutations & NOCLONE)) // prevents drained people from having their DNA changed
if (dnatype == "ui")
if (!block) //isolated block?
if (ue) //unique enzymes? yes
@@ -66,6 +66,8 @@
M.attack_log += text("\[[time_stamp()]\] Has been injected with [name] by [user.name] ([user.ckey])")
user.attack_log += text("\[[time_stamp()]\] Used the [name] to inject [M.name] ([M.ckey])")
+// log_attack("[user.name] ([user.ckey]) used the [name] to inject [M.name] ([M.ckey])")
+
if (user)
if (istype(M, /mob/living/carbon/human))
var/obj/effect/equip_e/human/O = new /obj/effect/equip_e/human( )
diff --git a/code/game/objects/radio/headset.dm b/code/game/objects/radio/headset.dm
index dfd8fd08690..2f77f495002 100644
--- a/code/game/objects/radio/headset.dm
+++ b/code/game/objects/radio/headset.dm
@@ -1,142 +1,142 @@
/obj/item/device/radio/headset
- name = "Radio Headset"
- desc = "An intercom that fits over the head."
+ name = "radio headset"
+ desc = "An updated, modular intercom that fits over the head. Takes encryption keys"
icon_state = "headset"
item_state = "headset"
g_amt = 0
m_amt = 75
subspace_transmission = 1
- protective_temperature = 0
- canhear_range = 1
- var
- translate_binary = 0
- translate_hive = 0
- obj/item/device/encryptionkey/keyslot1 = null
- obj/item/device/encryptionkey/keyslot2 = null
+ canhear_range = 1 // can't hear headsets from very far away
+
+ var/protective_temperature = 0
+ var/translate_binary = 0
+ var/translate_hive = 0
+ var/obj/item/device/encryptionkey/keyslot1 = null
+ var/obj/item/device/encryptionkey/keyslot2 = null
/obj/item/device/radio/headset/New()
..()
- keyslot1 = new /obj/item/device/encryptionkey
+ keyslot1 = new /obj/item/device/encryptionkey/
recalculateChannels()
/obj/item/device/radio/headset/traitor
origin_tech = "syndicate=3"
canhear_range = 0
-
- New()
- ..()
- del(keyslot1)
- keyslot1 = new /obj/item/device/encryptionkey/traitor
+/obj/item/device/radio/headset/traitor/New()
+ ..()
+ del(keyslot1)
+ keyslot1 = new /obj/item/device/encryptionkey/traitor
+ recalculateChannels()
/obj/item/device/radio/headset/binary
origin_tech = "syndicate=3"
canhear_range = 0
-
- New()
- ..()
- del(keyslot1)
- keyslot1 = new /obj/item/device/encryptionkey/binary
+/obj/item/device/radio/headset/binary/New()
+ ..()
+ del(keyslot1)
+ keyslot1 = new /obj/item/device/encryptionkey/binary
+ recalculateChannels()
/obj/item/device/radio/headset/headset_sec
- name = "Security Radio Headset"
+ name = "security radio headset"
desc = "This is used by your elite security force. To access the security channel, use :s."
icon_state = "sec_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sec
/obj/item/device/radio/headset/headset_eng
- name = "Engineering Radio Headset"
+ name = "engineering radio headset"
desc = "When the engineers wish to chat like girls. To access the engineering channel, use :e. "
icon_state = "eng_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_eng
/obj/item/device/radio/headset/headset_rob
- name = "Robotics Radio Headset"
+ name = "robotics radio headset"
desc = "Made specifically for the roboticists who cannot decide between departments. To access the engineering channel, use :e. For research, use :n."
icon_state = "rob_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_rob
/obj/item/device/radio/headset/headset_med
- name = "Medical Radio Headset"
+ name = "medical radio headset"
desc = "A headset for the trained staff of the medbay. To access the medical channel, use :m."
icon_state = "med_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_med
/obj/item/device/radio/headset/headset_sci
- name = "Science Radio Headset"
+ name = "science radio headset"
desc = "A sciency headset. Like usual. To access the science channel, use :n."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_sci
/obj/item/device/radio/headset/headset_medsci
- name = "Medical Research Radio Headset"
+ name = "medical research radio headset"
desc = "A headset that is a result of the mating between medical and science. To access the medical channel, use :m. For science, use :n."
icon_state = "med_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_medsci
/obj/item/device/radio/headset/headset_com
- name = "Command Radio Headset"
+ name = "command radio headset"
desc = "A headset with a commanding channel. To access the command channel, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_com
/obj/item/device/radio/headset/heads/captain
- name = "Captain's Headset"
+ name = "captain's headset"
desc = "The headset of the boss. Channels are as follows: :c - command, :s - security, :e - engineering, :d - mining, :q - cargo, :m - medical, :n - science."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/captain
/obj/item/device/radio/headset/heads/rd
- name = "Research Director's Headset"
+ name = "research director's deadset"
desc = "Headset of the researching God. To access the science channel, use :n. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/rd
/obj/item/device/radio/headset/heads/hos
- name = "Head of Security's Headset"
+ name = "head of security's headset"
desc = "The headset of the man who protects your worthless lifes. To access the security channel, use :s. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hos
/obj/item/device/radio/headset/heads/ce
- name = "Chief Engineer's Headset"
+ name = "chief engineer's headset"
desc = "The headset of the guy who is in charge of morons. To access the engineering channel, use :e. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/ce
/obj/item/device/radio/headset/heads/cmo
- name = "Chief Medical Officer's Headset"
+ name = "chief medical officer's headset"
desc = "The headset of the highly trained medical chief. To access the medical channel, use :m. For command, use :c."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/cmo
/obj/item/device/radio/headset/heads/hop
- name = "Head of Personnel's Headset"
+ name = "head of personnel's headset"
desc = "The headset of the guy who will one day be captain. Channels are as follows: :c - command, :s - security, :q - cargo, :d - mining."
icon_state = "com_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/heads/hop
/obj/item/device/radio/headset/headset_mine
- name = "Mining Radio Headset"
+ name = "mining radio headset"
desc = "Headset used by miners. How useless. To access the mining channel, use :d."
icon_state = "mine_headset"
item_state = "headset"
keyslot2 = new /obj/item/device/encryptionkey/headset_mine
/obj/item/device/radio/headset/heads/qm
- name = "Quartermaster's Headset"
+ name = "quartermaster's headset"
desc = "The headset of the man who control your toiletpaper supply. To access the cargo channel, use :q. For mining, use :d."
icon_state = "cargo_headset"
item_state = "headset"
@@ -154,7 +154,7 @@
keyslot2 = new /obj/item/device/encryptionkey/ert
/obj/item/device/radio/headset/headset_cargo
- name = "Cargo Radio Headset"
+ name = "cargo radio headset"
desc = "Headset used by the QM's slaves. To access the cargo channel, use :q."
icon_state = "cargo_headset"
item_state = "headset"
@@ -163,17 +163,32 @@
/obj/item/device/radio/headset/attackby(obj/item/weapon/W as obj, mob/user as mob)
// ..()
user.machine = src
- if (!istype(W, /obj/item/weapon/screwdriver) && !istype(W, /obj/item/device/encryptionkey/))
+ if (!( istype(W, /obj/item/weapon/screwdriver) || (istype(W, /obj/item/device/encryptionkey/ ))))
return
if(istype(W, /obj/item/weapon/screwdriver))
if(keyslot1 || keyslot2)
+
+ for(var/ch_name in channels)
+ radio_controller.remove_object(src, radiochannels[ch_name])
+ secure_radio_connections[ch_name] = null
+
+
if(keyslot1)
- user.put_in_hands(keyslot1)
+ var/turf/T = get_turf(user)
+ if(T)
+ keyslot1.loc = T
+ keyslot1 = null
+
+
if(keyslot2)
- user.put_in_hands(keyslot2)
+ var/turf/T = get_turf(user)
+ if(T)
+ keyslot2.loc = T
+ keyslot2 = null
+
recalculateChannels()
user << "You pop out the encryption keys in the headset!"
@@ -196,7 +211,9 @@
W.loc = src
keyslot2 = W
+
recalculateChannels()
+
return
@@ -204,10 +221,13 @@
src.channels = list()
src.translate_binary = 0
src.translate_hive = 0
- var/temp_channels = list()
if(keyslot1)
- temp_channels += keyslot1.channels
+ for(var/ch_name in keyslot1.channels)
+ if(ch_name in src.channels)
+ continue
+ src.channels += ch_name
+ src.channels[ch_name] = keyslot1.channels[ch_name]
if(keyslot1.translate_binary)
src.translate_binary = 1
@@ -216,7 +236,11 @@
src.translate_hive = 1
if(keyslot2)
- temp_channels += keyslot2.channels
+ for(var/ch_name in keyslot2.channels)
+ if(ch_name in src.channels)
+ continue
+ src.channels += ch_name
+ src.channels[ch_name] = keyslot2.channels[ch_name]
if(keyslot2.translate_binary)
src.translate_binary = 1
@@ -224,13 +248,14 @@
if(keyslot2.translate_hive)
src.translate_hive = 1
- config(temp_channels)
for (var/ch_name in channels)
if(!radio_controller)
sleep(30) // Waiting for the radio_controller to be created.
if(!radio_controller)
- src.name = "Broken Radio Headset"
+ src.name = "broken radio headset"
return
+ secure_radio_connections[ch_name] = radio_controller.add_object(src, radiochannels[ch_name], RADIO_CHAT)
+
return
\ No newline at end of file
diff --git a/code/game/objects/stacks/metal.dm b/code/game/objects/stacks/metal.dm
index cd1a7499ad7..8cdac52daa7 100644
--- a/code/game/objects/stacks/metal.dm
+++ b/code/game/objects/stacks/metal.dm
@@ -61,9 +61,9 @@ FLOOR TILES
// /datum/stack_recipe/New(title, result_type, req_amount, res_amount, max_res_amount, time, one_per_turf, on_floor = 0)
var/global/list/datum/stack_recipe/metal_recipes = list ( \
- new/datum/stack_recipe("stool", /obj/structure/stool), \
- new/datum/stack_recipe("chair", /obj/structure/stool/chair, one_per_turf = 1), \
- new/datum/stack_recipe("bed", /obj/structure/stool/bed, 2, one_per_turf = 1), \
+ new/datum/stack_recipe("stool", /obj/structure/stool, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("chair", /obj/structure/stool/bed/chair, one_per_turf = 1, on_floor = 1), \
+ new/datum/stack_recipe("bed", /obj/structure/stool/bed, 2, one_per_turf = 1, on_floor = 1), \
new/datum/stack_recipe("table parts", /obj/item/weapon/table_parts, 2), \
new/datum/stack_recipe("rack parts", /obj/item/weapon/rack_parts), \
new/datum/stack_recipe("closet", /obj/structure/closet, 2, one_per_turf = 1), \
diff --git a/code/game/objects/stool.dm b/code/game/objects/stool.dm
index 62a2ff59579..7e628afa744 100644
--- a/code/game/objects/stool.dm
+++ b/code/game/objects/stool.dm
@@ -1,102 +1,84 @@
/obj/structure/stool/ex_act(severity)
-
switch(severity)
if(1.0)
- //SN src = null
del(src)
return
if(2.0)
if (prob(50))
- //SN src = null
del(src)
return
if(3.0)
if (prob(5))
- //SN src = null
del(src)
return
- else
return
/obj/structure/stool/blob_act()
if(prob(75))
- new /obj/item/stack/sheet/metal( src.loc )
+ new /obj/item/stack/sheet/metal(src.loc)
del(src)
/obj/structure/stool/attackby(obj/item/weapon/W as obj, mob/user as mob)
- if (istype(W, /obj/item/weapon/wrench))
+ if(istype(W, /obj/item/weapon/wrench))
playsound(src.loc, 'Ratchet.ogg', 50, 1)
- new /obj/item/stack/sheet/metal( src.loc )
- //SN src = null
+ new /obj/item/stack/sheet/metal(src.loc)
del(src)
return
-
-/obj/structure/stool/bed/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/obj/structure/stool/bed/chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
..()
- if (istype(W, /obj/item/weapon/wrench))
- playsound(src.loc, 'Ratchet.ogg', 50, 1)
- new /obj/item/stack/sheet/metal( src.loc )
- del(src)
- return
-
-/obj/structure/stool/chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
- ..()
- if (istype(W, /obj/item/assembly/shock_kit))
- var/obj/structure/stool/chair/e_chair/E = new /obj/structure/stool/chair/e_chair( src.loc )
+ if(istype(W, /obj/item/assembly/shock_kit))
+ var/obj/structure/stool/bed/chair/e_chair/E = new /obj/structure/stool/bed/chair/e_chair(src.loc)
playsound(src.loc, 'Deconstruct.ogg', 50, 1)
E.dir = src.dir
- E.part1 = W
+ E.part = W
W.loc = E
W.master = E
user.u_equip(W)
W.layer = initial(W.layer)
- //SN src = null
del(src)
return
return
/obj/structure/stool/bed/Del()
- for(var/mob/M in src.buckled_mobs)
- if (M.buckled == src)
- M.lying = 0
- unbuckle_all()
+ unbuckle()
..()
return
-/obj/structure/stool/proc/unbuckle_all()
- for(var/mob/M in src:buckled_mobs)
- if (M.buckled == src)
- M.buckled = null
- M.anchored = 0
- M.update_clothing()
+/obj/structure/stool/bed/proc/unbuckle()
+ if(buckled_mob)
+ if(buckled_mob.buckled == src) //this is probably unneccesary, but it doesn't hurt
+ buckled_mob.buckled = null
+ buckled_mob.anchored = 0
+ buckled_mob.lying = 0
+ buckled_mob = null
+ return
-/obj/structure/stool/proc/manual_unbuckle_all(mob/user as mob)
- var/N = 0;
- for(var/mob/M in src:buckled_mobs)
- if (M.buckled == src)
- if (M != user)
- M.visible_message(\
- "\blue [M.name] was unbuckled by [user.name]!",\
+/obj/structure/stool/bed/proc/manual_unbuckle(mob/user as mob)
+ if(buckled_mob)
+ if(buckled_mob.buckled == src)
+ if(buckled_mob != user)
+ buckled_mob.visible_message(\
+ "\blue [buckled_mob.name] was unbuckled by [user.name]!",\
"You unbuckled from [src] by [user.name].",\
"You hear metal clanking")
else
- M.visible_message(\
- "\blue [M.name] unbuckled \himself!",\
+ buckled_mob.visible_message(\
+ "\blue [buckled_mob.name] unbuckled himself!",\
"You unbuckle yourself from [src].",\
"You hear metal clanking")
-// world << "[M] is no longer buckled to [src]"
- M.anchored = 0
- M.buckled = null
- M.update_clothing()
- N++
- return N
+ unbuckle()
+ src.add_fingerprint(user)
+ return
-/obj/structure/stool/proc/buckle_mob(mob/M as mob, mob/user as mob)
+/obj/structure/stool/bed/proc/buckle_mob(mob/M as mob, mob/user as mob)
if (!ticker)
user << "You can't buckle anyone in before the game starts."
- if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled))
+ if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled || istype(user, /mob/living/silicon/pai)))
return
+
+ unbuckle()
+
if (M == usr)
M.visible_message(\
"\blue [M.name] buckles in!",\
@@ -104,180 +86,57 @@
"You hear metal clanking")
else
M.visible_message(\
- "\blue [M.name] is buckled into [src] by [user.name]!",\
- "You buckled in to [src] by [user.name].",\
+ "\blue [M.name] is buckled in to [src] by [user.name]!",\
+ "You are buckled in to [src] by [user.name].",\
"You hear metal clanking")
M.anchored = 1
M.buckled = src
M.loc = src.loc
M.dir = src.dir
- M.update_clothing()
- src:buckled_mobs += M
+ src.buckled_mob = M
src.add_fingerprint(user)
return
/obj/structure/stool/bed/MouseDrop_T(mob/M as mob, mob/user as mob)
- if (!istype(M)) return
+ if(!istype(M)) return
buckle_mob(M, user)
M.lying = 1
return
+/obj/structure/stool/bed/attack_paw(mob/user as mob)
+ return src.attack_hand(user)
+
/obj/structure/stool/bed/attack_hand(mob/user as mob)
- for(var/mob/M in src.buckled_mobs)
- if (M.buckled == src)
- M.lying = 0
- if (manual_unbuckle_all(user))
- src.add_fingerprint(user)
+ manual_unbuckle(user)
return
-/obj/structure/stool/chair/e_chair/New()
-
- src.overl = new /atom/movable/overlay( src.loc )
- src.overl.icon = 'objects.dmi'
- src.overl.icon_state = "e_chairo0"
- src.overl.layer = 5
- src.overl.name = "electrified chair"
- src.overl.master = src
- spark.set_up(12, 1, src)
- return
-
-/obj/structure/stool/chair/e_chair/Del()
-
- //src.overl = null
- del(src.overl)
- ..()
- return
-
-/obj/structure/stool/chair/e_chair/attackby(obj/item/weapon/W as obj, mob/user as mob)
-
- if (istype(W, /obj/item/weapon/wrench))
- var/obj/structure/stool/chair/C = new /obj/structure/stool/chair( src.loc )
- playsound(src.loc, 'Ratchet.ogg', 50, 1)
- C.dir = src.dir
- src.part1.loc = src.loc
- src.part1.master = null
- src.part1 = null
- //SN src = null
- del(src)
- return
- if(istype(W, /obj/item/device/assembly/signaler))
- var/obj/item/assembly/shock_kit/kit = src.part1
- var/obj/item/device/radio/electropack/target = kit.part2
- var/obj/item/device/assembly/signaler/S = W
- target.set_frequency(S.frequency)
- target.code = S.code
- for(var/mob/M in viewers(src, null))
- M.show_message("\red [user] has set the electric chair using the [W].")
- return
-
-/obj/structure/stool/chair/e_chair/verb/toggle_power()
- set name = "Toggle Electric Chair"
- set category = "Object"
- set src in oview(1)
-
- if ((usr.stat || usr.restrained() || !( usr.canmove ) || usr.lying))
- return
- if(isshocking && on)
- shock()
- src.on = !( src.on )
- src.icon_state = text("e_chair[]", src.on)
- src.overl.icon_state = text("e_chairo[]", src.on)
- return
-
-/obj/structure/stool/chair/e_chair/proc/shock()
- if (!( src.on ))
- return
- if(isshocking)
- processing_objects.Remove(src)
- src.icon_state = text("e_chair[]", src.on)
- src.overl.icon_state = text("e_chairo[]", src.on)
- for(var/mob/living/M in affected)
- M.jitteriness = 0
- M.is_jittery = 0
- M.anchored = 0
- affected.Remove(M)
- isshocking = 0
- return
- else
- src.icon_state = "e_chairs"
- src.overl.icon_state = "e_chairos"
- spark.start()
- for(var/mob/M in hearers(src, null))
- M.show_message("\red The electric chair went off!.", 3, "\red You hear a deep sharp shock.", 2)
- processing_objects.Add(src)
- isshocking = 1
- return
-
-/obj/structure/stool/chair/e_chair/process()
- // special power handling
- var/area/A = get_area(src)
- if(isarea(A) && A.powered(EQUIP))
- A.use_power(EQUIP, 5000)
- for(var/mob/living/M in src.loc)
- affected.Add(M)
- M.make_jittery(1000)
- M.anchored = 1
- M.Stun(600)
- M.burn_skin(10)
- spark.start()
-
-/obj/structure/stool/chair/ex_act(severity)
- unbuckle_all()
- switch(severity)
- if(1.0)
- del(src)
- return
- if(2.0)
- if (prob(50))
- del(src)
- return
- if(3.0)
- if (prob(5))
- del(src)
- return
- return
-
-/obj/structure/stool/chair/blob_act()
- if(prob(75))
- unbuckle_all()
- del(src)
-
-/obj/structure/stool/chair/New()
+/obj/structure/stool/bed/chair/New()
src.verbs -= /atom/movable/verb/pull
- if (src.dir == NORTH)
+ if(src.dir == NORTH)
src.layer = FLY_LAYER
..()
return
-/obj/structure/stool/chair/Del()
- unbuckle_all()
- ..()
- return
-
-/obj/structure/stool/chair/verb/rotate()
+/obj/structure/stool/bed/chair/verb/rotate()
set name = "Rotate Chair"
set category = "Object"
set src in oview(1)
src.dir = turn(src.dir, 90)
- if (src.dir == NORTH)
+ if(src.dir == NORTH)
src.layer = FLY_LAYER
else
src.layer = OBJ_LAYER
+
+ if(buckled_mob)
+ buckled_mob.dir = dir
return
-/obj/structure/stool/chair/MouseDrop_T(mob/M as mob, mob/user as mob)
+/obj/structure/stool/bed/chair/MouseDrop_T(mob/M as mob, mob/user as mob)
+ if(!istype(M)) return
buckle_mob(M, user)
return
-/obj/structure/stool/chair/attack_paw(mob/user as mob)
- return src.attack_hand(user)
-
-/obj/structure/stool/chair/attack_hand(mob/user as mob)
- if (manual_unbuckle_all(user))
- src.add_fingerprint(user)
- return
-
//roller bed
/obj/structure/stool/bed/roller
@@ -286,65 +145,28 @@
icon_state = "down"
anchored = 0
- Move()
- ..()
- for(var/mob/M in src:buckled_mobs)
- if (M.buckled == src)
- M.loc = src.loc
+/obj/structure/stool/bed/roller/Move()
+ ..()
+ if(buckled_mob)
+ if(buckled_mob.buckled == src)
+ buckled_mob.loc = src.loc
- buckle_mob(mob/M as mob, mob/user as mob)
- if (!ticker)
- user << "You can't buckle anyone in before the game starts."
- return 0
- if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled))
- return 0
- if (M == usr)
- M.visible_message(\
- "\blue [M.name] buckles in!",\
- "You buckle yourself to [src].",\
- "You hear metal clanking")
- else
- M.visible_message(\
- "\blue [M.name] is buckled in to [src] by [user.name]!",\
- "You buckled into [src] by [user.name].",\
- "You hear metal clanking")
- M.anchored = 1
- M.buckled = src
- M.loc = src.loc
- M.pixel_y = 6
- M.update_clothing()
- src:buckled_mobs += M
- src.add_fingerprint(user)
- density = 1
- icon_state = "up"
- return 1
+/obj/structure/stool/bed/roller/buckle_mob(mob/M as mob, mob/user as mob)
+ if ((!( istype(M, /mob) ) || get_dist(src, user) > 1 || M.loc != src.loc || user.restrained() || usr.stat || M.buckled || istype(usr, /mob/living/silicon/pai)))
+ return
+ M.pixel_y = 6
+ M.update_clothing()
+ density = 1
+ icon_state = "up"
+ ..()
+ return
- manual_unbuckle_all(mob/user as mob)
- var/N = 0;
- for(var/mob/M in src:buckled_mobs)
- if (M.buckled == src)
- if (M != user)
- M.visible_message(\
- "\blue [M.name] was unbuckled by [user.name]!",\
- "You unbuckled from [src] by [user.name].",\
- "You hear metal clanking")
- else
- var/t_himself = "itself"
- if (M.gender == MALE)
- t_himself = "himself"
- else if (M.gender == FEMALE)
- t_himself = "herself"
-
- M.visible_message(\
- "\blue [M.name] unbuckled [t_himself]!",\
- "You unbuckle yourself from [src].",\
- "You hear metal clanking")
- M.pixel_y = 0
- M.anchored = 0
- M.buckled = null
- M.update_clothing()
- N++
- if(N)
- density = 0
- icon_state = "down"
- return N
+/obj/structure/stool/bed/roller/manual_unbuckle(mob/user as mob)
+ if(buckled_mob)
+ buckled_mob.pixel_y = 0
+ buckled_mob.anchored = 0
+ buckled_mob.buckled = null
+ density = 0
+ icon_state = "down"
+ ..()
+ return
diff --git a/code/game/objects/storage/storage.dm b/code/game/objects/storage/storage.dm
index 25a60d1c7e8..60c5395ed5e 100644
--- a/code/game/objects/storage/storage.dm
+++ b/code/game/objects/storage/storage.dm
@@ -9,6 +9,7 @@
var/obj/screen/storage/boxes = null
var/obj/screen/close/closer = null
w_class = 3.0
+ var/foldable = null // BubbleWrap - if set, can be folded (when empty) into a sheet of cardboard
/obj/item/weapon/storage/proc/return_inv()
@@ -96,7 +97,7 @@
return
//This proc is called when you want to place an item into the storage item.
-/obj/item/weapon/storage/attackby(obj/item/weapon/W as obj, mob/user as mob)
+/obj/item/weapon/storage/attackby(obj/item/W as obj, mob/user as mob)
..()
if(isrobot(user))
user << "\blue You're a robot. No."
@@ -138,6 +139,7 @@
user << "\red The tray won't fit in [src]."
return
else
+
W.loc = user.loc
if ((user.client && user.s_active != src))
user.client.screen -= W
@@ -157,19 +159,13 @@
user << "\red The [src] cannot hold [W] as it's a storage item of the same size."
return //To prevent the stacking of the same sized items.
- if(user)
- user.u_equip(W)
- W.loc = src
- if ((user.client && user.s_active != src))
- user.client.screen -= W
- src.orient2hud(user)
- W.dropped(user)
- add_fingerprint(user)
- for(var/mob/O in viewers(user, null))
- O.show_message(text("\blue [user] has added [W] to [src]!"))
- else
- W.loc = src
- orient_objs(5, 10, 4 + min(7, storage_slots), 10)
+ user.u_equip(W)
+ W.loc = src
+ if ((user.client && user.s_active != src))
+ user.client.screen -= W
+ src.orient2hud(user)
+ W.dropped(user)
+ add_fingerprint(user)
if(istype(src, /obj/item/weapon/storage/backpack/santabag)) // update the santa bag icon
if(contents.len < 5)
@@ -180,6 +176,8 @@
src.icon_state = "giftbag2"
if (istype(W, /obj/item/weapon/gun/energy/crossbow)) return //STEALTHY
+ for(var/mob/O in viewers(user, null))
+ O.show_message(text("\blue [user] has added [W] to [src]!"))
//Foreach goto(139)
return
@@ -249,8 +247,29 @@
/obj/screen/storage/attackby(W, mob/user as mob)
src.master.attackby(W, user)
return
+// BubbleWrap - A box can be folded up to make card
+/obj/item/weapon/storage/attack_self(mob/user as mob)
+ if ( contents.len )
+ return
+ if ( !ispath(src.foldable) )
+ return
+ var/found = 0
+ // Close any open UI windows first
+ for(var/mob/M in range(1))
+ if (M.s_active == src)
+ src.close(M)
+ if ( M == user )
+ found = 1
+ if ( !found ) // User is too far away
+ return
+ // Now make the cardboard
+ user << "\blue You fold [src] flat."
+ new src.foldable(get_turf(src))
+ del(src)
+//BubbleWrap END
/obj/item/weapon/storage/box/
+ foldable = /obj/item/stack/sheet/cardboard //BubbleWrap
/obj/item/weapon/storage/box/survival/New()
..()
@@ -296,7 +315,7 @@
/obj/item/weapon/storage/box/syndicate/New()
..()
- switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "freedom" = 1)))
+ switch (pickweight(list("bloodyspai" = 1, "stealth" = 1, "screwed" = 1, "guns" = 1, "murder" = 1, "freedom" = 1)))
if ("bloodyspai")
new /obj/item/clothing/under/chameleon(src)
new /obj/item/clothing/mask/gas/voice(src)
@@ -325,6 +344,12 @@
new /obj/item/weapon/plastique(src)
return
+ if ("murder")
+ new /obj/item/weapon/melee/energy/sword(src)
+ new /obj/item/clothing/glasses/thermal(src)
+ new /obj/item/weapon/card/emag(src)
+ return
+
if("freedom")
var/obj/item/weapon/implanter/O = new /obj/item/weapon/implanter(src)
O.imp = new /obj/item/weapon/implant/freedom(O)
diff --git a/code/game/response_team.dm b/code/game/response_team.dm
index 5cbcee8c722..21cd845f272 100644
--- a/code/game/response_team.dm
+++ b/code/game/response_team.dm
@@ -238,7 +238,7 @@ proc/trigger_armed_response_team(var/force = 0)
W.access = get_access("Head of Personnel")
W.assignment = "Emergency Response Team"
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access.
- W.registered_name = real_name
+ W.registered = real_name
equip_if_possible(W, slot_wear_id)
return 1
\ No newline at end of file
diff --git a/code/game/sound.dm b/code/game/sound.dm
index 41c9033eae4..44176afb093 100644
--- a/code/game/sound.dm
+++ b/code/game/sound.dm
@@ -10,6 +10,7 @@
if ("clownstep") soundin = pick('clownstep1.ogg','clownstep2.ogg')
if ("swing_hit") soundin = pick('genhit1.ogg', 'genhit2.ogg', 'genhit3.ogg')
if ("hiss") soundin = pick('hiss1.ogg','hiss2.ogg','hiss3.ogg','hiss4.ogg')
+ if ("pageturn") soundin = pick('pageturn1.ogg', 'pageturn2.ogg','pageturn3.ogg')
var/sound/S = sound(soundin)
S.wait = 0 //No queue
@@ -27,10 +28,16 @@
M << S
- for(var/obj/structure/closet/L in range(world.view+extrarange, source))
- if(locate(/mob/, L))
- for(var/mob/Ml in L)
- Ml << S
+ for(var/obj/structure/closet/L in range(world.view+extrarange, source))
+ if(locate(/mob/, L))
+ for(var/mob/M in L)
+ if (M.client)
+ if(M.ear_deaf <= 0 || !M.ear_deaf)
+ if(isturf(source))
+ var/dx = source.x - M.x
+ S.pan = max(-100, min(100, dx/8.0 * 100))
+
+ M << S
// Now plays for people in lockers! -- Polymorph
/mob/proc/playsound_local(var/atom/source, soundin, vol as num, vary, extrarange as num)
@@ -58,14 +65,14 @@
src << S
-client/verb/Toggle_Soundscape()
- set category = "OOC"
+client/verb/Toggle_Soundscape() //All new ambience should be added here so it works with this verb until someone better at things comes up with a fix that isn't awful
+ set category = "Special Verbs"
set name = "Toggle Ambience"
usr:client:no_ambi = !usr:client:no_ambi
if(usr:client:no_ambi)
- usr << sound(pick('shipambience.ogg'), repeat = 0, wait = 0, volume = 0, channel = 2)
+ usr << sound(pick('shipambience.ogg','ambigen1.ogg','ambigen3.ogg','ambigen4.ogg','ambigen5.ogg','ambigen6.ogg','ambigen7.ogg','ambigen8.ogg','ambigen9.ogg','ambigen10.ogg','ambigen11.ogg','ambigen12.ogg','ambigen14.ogg','ambicha1.ogg','ambicha2.ogg','ambicha3.ogg','ambicha4.ogg','ambimalf.ogg','ambispace.ogg','ambimine.ogg','title2.ogg'), repeat = 0, wait = 0, volume = 0, channel = 2)
else
- usr << sound(pick('shipambience.ogg'), repeat = 1, wait = 0, volume = 35, channel = 2)
+ usr << sound(pick('shipambience.ogg','ambigen1.ogg','ambigen3.ogg','ambigen4.ogg','ambigen5.ogg','ambigen6.ogg','ambigen7.ogg','ambigen8.ogg','ambigen9.ogg','ambigen10.ogg','ambigen11.ogg','ambigen12.ogg','ambigen14.ogg','ambicha1.ogg','ambicha2.ogg','ambicha3.ogg','ambicha4.ogg','ambimalf.ogg','ambispace.ogg','ambimine.ogg','title2.ogg'), repeat = 1, wait = 0, volume = 35, channel = 2)
usr << "Toggled ambience sound."
return
diff --git a/code/game/supplyshuttle.dm b/code/game/supplyshuttle.dm
index 1a9fb3a2d68..a0ed2c4d84f 100644
--- a/code/game/supplyshuttle.dm
+++ b/code/game/supplyshuttle.dm
@@ -65,7 +65,7 @@ var/list/supply_groups = new()
if (prob(5))
del(src)
-/area/supplyshuttle/
+/area/supplyshuttle
name = "Supply Shuttle"
icon_state = "supply"
requires_power = 0
@@ -323,8 +323,8 @@ var/list/supply_groups = new()
reqform.info += "[station_name] Supply Requisition Form
"
if (istype(usr:wear_id, /obj/item/weapon/card/id))
- if(usr:wear_id.registered_name)
- idname = usr:wear_id.registered_name
+ if(usr:wear_id.registered)
+ idname = usr:wear_id.registered
if(usr:wear_id.assignment)
idrank = usr:wear_id.assignment
if (istype(usr:wear_id, /obj/item/device/pda))
diff --git a/code/game/verbs/sound.dm b/code/game/verbs/sound.dm
index 3dfca9c3926..2e64eabf73b 100644
--- a/code/game/verbs/sound.dm
+++ b/code/game/verbs/sound.dm
@@ -5,7 +5,6 @@
if(istype(usr,/mob))
var/mob/M = usr
- M.midis = !M.midis
if(M.client)
M.client.midis = !M.client.midis
diff --git a/code/modules/admin/verbs/debug.dm b/code/modules/admin/verbs/debug.dm
index 00dbc514aef..3e64cb8fdb8 100644
--- a/code/modules/admin/verbs/debug.dm
+++ b/code/modules/admin/verbs/debug.dm
@@ -496,9 +496,9 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
log_admin("[key_name(src)] has granted [M.key] full access.")
id.icon_state = "gold"
id:access = get_all_accesses()+get_all_centcom_access()+get_all_syndicate_access()
- id.registered_name = H.real_name
+ id.registered = H.real_name
id.assignment = "Captain"
- id.name = "[id.registered_name]'s ID Card ([id.assignment])"
+ id.name = "[id.registered]'s ID Card ([id.assignment])"
H.equip_if_possible(id, H.slot_wear_id)
H.update_clothing()
else
@@ -658,7 +658,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.assignment = "Tunnel Clown!"
- W.registered_name = M.real_name
+ W.registered = M.real_name
M.equip_if_possible(W, M.slot_wear_id)
var/obj/item/weapon/fireaxe/fire_axe = new(M)
@@ -717,7 +717,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.name = "[M.real_name]'s ID Card"
W.access = get_all_accesses()
W.assignment = "Reaper"
- W.registered_name = M.real_name
+ W.registered = M.real_name
M.equip_if_possible(W, M.slot_wear_id)
if("death commando")//Was looking to add this for a while.
@@ -755,7 +755,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.access = get_all_accesses()
W.access += list("VIP Guest","Custodian","Thunderdome Overseer","Intel Officer","Medical Officer","Death Commando","Research Officer")
W.assignment = "CentCom Review Official"
- W.registered_name = M.real_name
+ W.registered = M.real_name
W.over_jumpsuit = 0
M.equip_if_possible(W, M.slot_wear_id)
@@ -780,7 +780,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "CentCom Commanding Officer"
- W.registered_name = M.real_name
+ W.registered = M.real_name
W.over_jumpsuit = 0
M.equip_if_possible(W, M.slot_wear_id)
@@ -803,7 +803,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Special Operations Officer"
- W.registered_name = M.real_name
+ W.registered = M.real_name
M.equip_if_possible(W, M.slot_wear_id)
if("blue wizard")
@@ -857,7 +857,7 @@ But you can call procs that are of type /mob/living/carbon/human/proc/ for that
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Admiral"
- W.registered_name = M.real_name
+ W.registered = M.real_name
M.equip_if_possible(W, M.slot_wear_id)
M.update_clothing()
diff --git a/code/modules/admin/verbs/onlyone.dm b/code/modules/admin/verbs/onlyone.dm
index 65e09faf50c..a30fa3cf2ae 100644
--- a/code/modules/admin/verbs/onlyone.dm
+++ b/code/modules/admin/verbs/onlyone.dm
@@ -47,7 +47,7 @@
W.access = get_all_accesses()
W.access += get_all_centcom_access()
W.assignment = "Highlander"
- W.registered_name = H.real_name
+ W.registered = H.real_name
H.equip_if_possible(W, H.slot_wear_id)
message_admins("\blue [key_name_admin(usr)] used THERE CAN BE ONLY ONE!", 1)
diff --git a/code/modules/admin/verbs/striketeam.dm b/code/modules/admin/verbs/striketeam.dm
index 405fc5bb814..2a89b07d9ea 100644
--- a/code/modules/admin/verbs/striketeam.dm
+++ b/code/modules/admin/verbs/striketeam.dm
@@ -183,7 +183,7 @@ var/global/sent_strike_team = 0
W.access = get_all_accesses()//They get full station access.
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage)//Let's add their alloted CentCom access.
W.assignment = "Death Commando"
- W.registered_name = real_name
+ W.registered = real_name
equip_if_possible(W, slot_wear_id)
resistances += "alien_embryo"
diff --git a/code/modules/admin/verbs/striketeam_syndicate.dm b/code/modules/admin/verbs/striketeam_syndicate.dm
index eccd7ea42af..1fc2a4bbdec 100644
--- a/code/modules/admin/verbs/striketeam_syndicate.dm
+++ b/code/modules/admin/verbs/striketeam_syndicate.dm
@@ -186,7 +186,7 @@ var/global/sent_syndicate_strike_team = 0
W.access = get_all_accesses()//They get full station access because obviously the syndicate has HAAAX, and can make special IDs for their most elite members.
W.access += list(access_cent_general, access_cent_specops, access_cent_living, access_cent_storage, access_syndicate)//Let's add their forged CentCom access and syndicate access.
W.assignment = "Syndicate Commando"
- W.registered_name = real_name
+ W.registered = real_name
equip_if_possible(W, slot_wear_id)
resistances += "alien_embryo"
diff --git a/code/modules/chemical/Chemistry-Tools.dm b/code/modules/chemical/Chemistry-Tools.dm
index 7b86105926c..272a721658a 100644
--- a/code/modules/chemical/Chemistry-Tools.dm
+++ b/code/modules/chemical/Chemistry-Tools.dm
@@ -400,6 +400,7 @@
usr << "\blue [grenades] / [max_grenades] Grenades."
attackby(obj/item/I as obj, mob/user as mob)
+
if((istype(I, /obj/item/weapon/chem_grenade)) || (istype(I, /obj/item/weapon/flashbang)) || (istype(I, /obj/item/weapon/smokebomb)) || (istype(I, /obj/item/weapon/mustardbomb)) || (istype(I, /obj/item/weapon/empgrenade)))
if(grenades.len < max_grenades)
user.drop_item()
@@ -411,7 +412,15 @@
usr << "\red The grenade launcher cannot hold more grenades."
afterattack(obj/target, mob/user , flag)
- if(target == user) return
+
+ if (istype(target, /obj/item/weapon/storage/backpack ))
+ return
+
+ else if (locate (/obj/structure/table, src.loc))
+ return
+
+ else if(target == user)
+ return
if(grenades.len)
spawn(0) fire_grenade(target,user)
@@ -420,7 +429,60 @@
proc
fire_grenade(atom/target, mob/user)
- if (locate (/obj/structure/table, src.loc))
+ for(var/mob/O in viewers(world.view, user))
+ O.show_message(text("\red [] fired a grenade!", user), 1)
+ user << "\red You fire the grenade launcher!"
+ if (istype(grenades[1], /obj/item/weapon/chem_grenade))
+ var/obj/item/weapon/chem_grenade/F = grenades[1]
+ grenades -= F
+ F.loc = user.loc
+ F.throw_at(target, 30, 2)
+ message_admins("[key_name_admin(user)] fired a chemistry grenade from a grenade launcher ([src.name]).")
+ log_game("[key_name_admin(user)] used a chemistry grenade ([src.name]).")
+ F.state = 1
+ F.icon_state = initial(icon_state)+"_armed"
+ playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
+ spawn(15)
+ F.explode()
+ else if (istype(grenades[1], /obj/item/weapon/flashbang))
+ var/obj/item/weapon/flashbang/F = grenades[1]
+ grenades -= F
+ F.loc = user.loc
+ F.throw_at(target, 30, 2)
+ F.active = 1
+ F.icon_state = "flashbang1"
+ playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
+ spawn(15)
+ F.prime()
+ else if (istype(grenades[1], /obj/item/weapon/smokebomb))
+ var/obj/item/weapon/smokebomb/F = grenades[1]
+ grenades -= F
+ F.loc = user.loc
+ F.throw_at(target, 30, 2)
+ F.icon_state = "flashbang1"
+ playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
+ spawn(15)
+ F.prime()
+ else if (istype(grenades[1], /obj/item/weapon/mustardbomb))
+ var/obj/item/weapon/mustardbomb/F = grenades[1]
+ grenades -= F
+ F.loc = user.loc
+ F.throw_at(target, 30, 2)
+ F.icon_state = "flashbang1"
+ playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
+ spawn(15)
+ F.prime()
+ else if (istype(grenades[1], /obj/item/weapon/empgrenade))
+ var/obj/item/weapon/empgrenade/F = grenades[1]
+ grenades -= F
+ F.loc = user.loc
+ F.throw_at(target, 30, 2)
+ F.active = 1
+ F.icon_state = "empar"
+ playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
+ spawn(15)
+ F.prime()
+ if (locate (/obj/structure/table, src.loc) || locate (/obj/item/weapon/storage, src.loc))
return
else
for(var/mob/O in viewers(world.view, user))
@@ -433,7 +495,7 @@
F.throw_at(target, 30, 2)
message_admins("[key_name_admin(user)] fired a chemistry grenade from a grenade launcher ([src.name]).")
log_game("[key_name_admin(user)] used a chemistry grenade ([src.name]).")
- F.path = 1
+ F.state = 1
F.icon_state = initial(icon_state)+"_armed"
playsound(user.loc, 'armbomb.ogg', 75, 1, -3)
spawn(15)
@@ -480,6 +542,7 @@
/obj/item/weapon/gun/syringe
name = "syringe gun"
+ desc = "A spring loaded rifle designed to fit syringes, designed to incapacitate unruly patients from a distance."
icon = 'gun.dmi'
icon_state = "syringegun"
item_state = "syringegun"
@@ -495,19 +558,19 @@
set src in view()
..()
if (!(usr in view(2)) && usr!=src.loc) return
- usr << "\icon [src] Syringe gun:"
- usr << "\blue [syringes] / [max_syringes] Syringes."
+ usr << "\blue [syringes.len] / [max_syringes] syringes."
attackby(obj/item/I as obj, mob/user as mob)
+
if(istype(I, /obj/item/weapon/reagent_containers/syringe))
if(syringes.len < max_syringes)
user.drop_item()
I.loc = src
syringes += I
- user << "\blue You put the syringe in the syringe gun."
- user << "\blue [syringes.len] / [max_syringes] Syringes."
+ user << "\blue You put the syringe in [src]."
+ user << "\blue [syringes.len] / [max_syringes] syringes."
else
- usr << "\red The syringe gun cannot hold more syringes."
+ usr << "\red [src] cannot hold more syringes."
afterattack(obj/target, mob/user , flag)
if(!isturf(target.loc) || target == user) return
@@ -515,7 +578,7 @@
if(syringes.len)
spawn(0) fire_syringe(target,user)
else
- usr << "\red The syringe gun is empty."
+ usr << "\red [src] is empty."
proc
fire_syringe(atom/target, mob/user)
@@ -558,84 +621,11 @@
return
-/obj/item/weapon/gun/rapidsyringe
+/obj/item/weapon/gun/syringe/rapidsyringe
name = "rapid syringe gun"
- icon = 'gun.dmi'
+ desc = "A modification of the syringe gun design, using a rotating cylinder to store up to four syringes."
icon_state = "rapidsyringegun"
- item_state = "rapidsyringegun"
- w_class = 3.0
- throw_speed = 4
- throw_range = 10
- force = 8.0
- var/list/syringes = new/list()
- var/max_syringes = 40
-
- examine()
- set src in view()
- ..()
- if (!(usr in view(2)) && usr!=src.loc) return
- usr << "\icon [src] Rapid Syringe gun:"
- usr << "\blue [syringes] / [max_syringes] Syringes."
-
- attackby(obj/item/I as obj, mob/user as mob)
- if(istype(I, /obj/item/weapon/reagent_containers/syringe))
- if(syringes.len < max_syringes)
- user.drop_item()
- I.loc = src
- syringes += I
- user << "\blue You put the syringe in the rapid syringe gun."
- user << "\blue [syringes.len] / [max_syringes] Syringes."
- else
- usr << "\red The rapid syringe gun cannot hold more syringes."
-
- afterattack(obj/target, mob/user , flag)
- if(!isturf(target.loc) || target == user) return
-
- if(syringes.len)
- spawn(0) fire_syringe(target,user)
- else
- usr << "\red rapid The syringe gun is empty."
-
- proc
- fire_syringe(atom/target, mob/user)
- if (locate (/obj/structure/table, src.loc))
- return
- else
- var/turf/trg = get_turf(target)
- var/obj/effect/syringe_gun_dummy/D = new/obj/effect/syringe_gun_dummy(get_turf(src))
- var/obj/item/weapon/reagent_containers/syringe/S = syringes[1]
- S.reagents.trans_to(D, S.reagents.total_volume)
- syringes -= S
- del(S)
- D.icon_state = "syringeproj"
- D.name = "syringe"
- playsound(user.loc, 'syringeproj.ogg', 50, 1)
-
- for(var/i=0, i<6, i++)
- if(!D) break
- if(D.loc == trg) break
- step_towards(D,trg)
-
- for(var/mob/living/carbon/M in D.loc)
- if(!istype(M,/mob/living/carbon)) continue
- if(M == user) continue
- D.reagents.trans_to(M, 15)
- M.take_organ_damage(5)
- for(var/mob/O in viewers(world.view, D))
- O.show_message(text("\red [] was hit by the syringe!", M), 1)
-
- del(D)
- if(D)
- for(var/atom/A in D.loc)
- if(A == user) continue
- if(A.density) del(D)
-
- sleep(1)
-
- if (D) spawn(10) del(D)
-
- return
-
+ max_syringes = 4
/obj/structure/reagent_dispensers
name = "Dispenser"
@@ -731,9 +721,15 @@
reagents = R
R.my_atom = src
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ return
attack_self(mob/user as mob)
return
attack(mob/M as mob, mob/user as mob, def_zone)
+ return
+ attackby(obj/item/I as obj, mob/user as mob)
+
return
afterattack(obj/target, mob/user , flag)
return
@@ -943,6 +939,7 @@
return attack_hand()
attackby(obj/item/I as obj, mob/user as mob)
+
return
afterattack(obj/target, mob/user , flag)
@@ -969,7 +966,7 @@
if(!T.dna)
usr << "You are unable to locate any blood. (To be specific, your target seems to be missing their DNA datum)"
return
- if(T.mutations & HUSK) //target done been et, no more blood in him
+ if(T.mutations & NOCLONE) //target done been et, no more blood in him
user << "\red You are unable to locate any blood."
return
B.holder = src
@@ -1093,6 +1090,35 @@
else
icon_state = "[(has_blood?"b":"")][rounded_vol]"
item_state = "syringe_[rounded_vol]"
+ if(reagents.total_volume)
+ var/obj/effect/overlay = new/obj
+ overlay.icon = 'syringefilling.dmi'
+ switch(rounded_vol)
+ if(5) overlay.icon_state = "5"
+ if(10) overlay.icon_state = "10"
+ if(15) overlay.icon_state = "15"
+
+ var/list/rgbcolor = list(0,0,0)
+ var/finalcolor
+ for(var/datum/reagent/re in reagents.reagent_list) // natural color mixing bullshit/algorithm
+ if(!finalcolor)
+ rgbcolor = GetColors(re.color)
+ finalcolor = re.color
+ else
+ var/newcolor[3]
+ var/prergbcolor[3]
+ prergbcolor = rgbcolor
+ newcolor = GetColors(re.color)
+
+ rgbcolor[1] = (prergbcolor[1]+newcolor[1])/2
+ rgbcolor[2] = (prergbcolor[2]+newcolor[2])/2
+ rgbcolor[3] = (prergbcolor[3]+newcolor[3])/2
+
+ finalcolor = rgb(rgbcolor[1], rgbcolor[2], rgbcolor[3])
+
+ overlay.icon += finalcolor
+ if(!istype(src.loc, /turf)) overlay.layer = 30
+ overlays += overlay
/obj/item/weapon/reagent_containers/ld50_syringe
@@ -1135,6 +1161,10 @@
attack_paw()
return attack_hand()
+ attackby(obj/item/I as obj, mob/user as mob)
+
+ return
+
afterattack(obj/target, mob/user , flag)
if(!target.reagents) return
@@ -1252,6 +1282,9 @@
user.attack_log += text("\[[time_stamp()]\] Used the [src.name] to inject [M.name] ([M.ckey])")
log_admin("ATTACK: [user] ([user.ckey]) injected [M] ([M.ckey]) with [src].")
message_admins("ATTACK: [user] ([user.ckey]) injected [M] ([M.ckey]) with [src].")
+// log_attack("[user.name] ([user.ckey]) injected [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
+
src.reagents.reaction(M, INGEST)
if(M.reagents)
var/trans = reagents.trans_to(M, amount_per_transfer_from_this)
@@ -1340,6 +1373,7 @@
return
attackby(obj/item/weapon/W as obj, mob/user as mob)
+
return
attack_self(mob/user as mob)
return
@@ -1380,6 +1414,8 @@
log_admin("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
message_admins("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
+// log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
for(var/mob/O in viewers(world.view, user))
O.show_message("\red [user] feeds [M] [src].", 1)
@@ -1472,6 +1508,7 @@
return 0
attackby(obj/item/I as obj, mob/user as mob)
+
return
afterattack(obj/target, mob/user , flag)
return
@@ -1494,6 +1531,7 @@
var/slices_num
attackby(obj/item/weapon/W as obj, mob/user as mob)
+
if((slices_num <= 0 || !slices_num) || !slice_path)
return 1
var/inaccurate = 0
@@ -1606,6 +1644,8 @@
log_admin("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
message_admins("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
+// log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
if(reagents.total_volume)
reagents.reaction(M, INGEST)
@@ -1697,6 +1737,9 @@
if(!icon_state)
icon_state = "pill[rand(1,20)]"
+ attackby(obj/item/weapon/W as obj, mob/user as mob)
+
+ return
attack_self(mob/user as mob)
return
attack(mob/M as mob, mob/user as mob, def_zone)
@@ -1727,6 +1770,8 @@
message_admins("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
+// log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
if(reagents.total_volume)
reagents.reaction(M, INGEST)
spawn(5)
@@ -1739,6 +1784,10 @@
return 0
+ attackby(obj/item/I as obj, mob/user as mob)
+
+ return
+
afterattack(obj/target, mob/user , flag)
if(target.is_open_container() == 1 && target.reagents)
@@ -2355,6 +2404,7 @@
volume = 50
attackby(obj/item/weapon/W as obj, mob/user as mob)
+
return
attack_self(mob/user as mob)
return
@@ -2388,6 +2438,8 @@
message_admins("ATTACK: [user] ([user.ckey]) fed [M] ([M.ckey]) with [src].")
+// log_attack("[user.name] ([user.ckey]) fed [M.name] ([M.ckey]) with [src.name] (INTENT: [uppertext(user.a_intent)])")
+
if(reagents.total_volume)
reagents.reaction(M, INGEST)
spawn(5)
@@ -2398,6 +2450,7 @@
return 0
attackby(obj/item/I as obj, mob/user as mob)
+
return
afterattack(obj/target, mob/user , flag)
@@ -2448,7 +2501,7 @@
icon_state = "soysauce"
if("frostoil")
name = "Coldsauce"
- desc = "Leaves the tongue numb in it's passage."
+ desc = "Leaves the tongue numb in its passage."
icon_state = "coldsauce"
if("sodiumchloride")
name = "Salt Shaker"
@@ -2761,7 +2814,7 @@
/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater
name = "Flask of Holy Water"
- desc = "A flask of the chaplains holy water."
+ desc = "A flask of the chaplain's holy water."
icon_state = "holyflask"
New()
..()
@@ -2885,12 +2938,12 @@
reagents.add_reagent("toxin", 50)
/obj/item/weapon/reagent_containers/pill/cyanide
- name = "Suicide pill"
+ name = "Cyanide pill"
desc = "Don't swallow this."
icon_state = "pill5"
New()
..()
- reagents.add_reagent("chloralhydrate", 100)
+ reagents.add_reagent("cyanide", 50)
/obj/item/weapon/reagent_containers/pill/adminordrazine
name = "Adminordrazine pill"
@@ -2969,6 +3022,25 @@
..()
reagents.add_reagent("fuel",1000)
+
+ bullet_act(var/obj/item/projectile/Proj)
+ if(istype(Proj ,/obj/item/projectile/beam)||istype(Proj,/obj/item/projectile/bullet))
+ explosion(src.loc,-1,0,2)
+ if(src)
+ del(src)
+
+
+
+ blob_act()
+ explosion(src.loc,0,1,5,7,10)
+ if(src)
+ del(src)
+
+ ex_act()
+ explosion(src.loc,-1,0,2)
+ if(src)
+ del(src)
+
/obj/structure/reagent_dispensers/peppertank
name = "Pepper Spray Refiller"
desc = "Refill pepper spray canisters."
@@ -2976,27 +3048,11 @@
icon_state = "peppertank"
anchored = 1
density = 0
- amount_per_transfer_from_this = 30
+ amount_per_transfer_from_this = 45
New()
..()
reagents.add_reagent("condensedcapsaicin",1000)
-/obj/structure/reagent_dispensers/fueltank/blob_act()
- explosion(src.loc,0,1,5,7,10)
- if(src)
- del(src)
-
-/obj/structure/reagent_dispensers/fueltank/ex_act()
- explosion(src.loc,-1,0,2)
- if(src)
- del(src)
-
-/obj/structure/reagent_dispensers/fueltank/temperature_expose(datum/gas_mixture/air, temperature, volume)
- if(temperature > T0C+500)
- explosion(src.loc,-1,0,2)
- if(src)
- del(src)
- return ..()
/obj/structure/reagent_dispensers/water_cooler
name = "Water-Cooler"
diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm
index 7c02f43e8e1..181a2000efd 100644
--- a/code/modules/clothing/glasses/hud.dm
+++ b/code/modules/clothing/glasses/hud.dm
@@ -92,7 +92,7 @@
C.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
var/perpname = "wot"
if(istype(perp.wear_id,/obj/item/weapon/card/id))
- perpname = perp.wear_id:registered_name
+ perpname = perp.wear_id:registered
else if(istype(perp.wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = perp.wear_id
perpname = tempPda.owner
diff --git a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
index d1fba66d7ca..0d769c83559 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/humanoid.dm
@@ -315,10 +315,10 @@
overlays = null
if(buckled)
- if(istype(buckled, /obj/structure/stool/bed))
- lying = 1
- else
+ if(istype(buckled, /obj/structure/stool/bed/chair))
lying = 0
+ else
+ lying = 1
// Automatically drop anything in store / id / belt if you're not wearing a uniform.
if (zone_sel)
diff --git a/code/modules/mob/living/carbon/alien/larva/larva.dm b/code/modules/mob/living/carbon/alien/larva/larva.dm
index 10c1e4a6832..434d7d01bfd 100644
--- a/code/modules/mob/living/carbon/alien/larva/larva.dm
+++ b/code/modules/mob/living/carbon/alien/larva/larva.dm
@@ -28,13 +28,16 @@
now_pushing = 1
if(ismob(AM))
var/mob/tmob = AM
- /*if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
- if(prob(70))
+ if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
+ /*if(prob(70))
for(var/mob/M in viewers(src, null))
if(M.client)
M << "\red [src] fails to push [tmob]'s fat ass out of the way."
now_pushing = 0
return*/
+ if(tmob.nopush)
+ now_pushing = 0
+ return
tmob.LAssailant = src
now_pushing = 0
@@ -109,7 +112,7 @@
ear_damage += 15
ear_deaf += 60
- bruteloss += b_loss
+ adjustBruteLoss(b_loss)
adjustFireLoss(f_loss)
updatehealth()
@@ -150,7 +153,7 @@
if ((M.client && !( M.blinded )))
M.show_message(text("\red [] has been hit by []", src, O), 1)
if (health > 0)
- bruteloss += (istype(O, /obj/effect/meteor/small) ? 10 : 25)
+ adjustBruteLoss((istype(O, /obj/effect/meteor/small) ? 10 : 25))
adjustFireLoss(30)
updatehealth()
@@ -249,9 +252,7 @@
else
m_select.screen_loc = null
- if(client && client.admin_invis)
- invisibility = 100
- else if (alien_invis)
+ if (alien_invis)
invisibility = 2
if(istype(loc, /turf))//If they are standing on a turf.
AddCamoOverlay(loc)//Overlay camo.
@@ -280,12 +281,25 @@
O.show_message(text("\red [M.name] has bit []!", src), 1)
var/damage = rand(1, 3)
- bruteloss += damage
+ adjustBruteLoss(damage)
updatehealth()
return
+
+/mob/living/carbon/alien/larva/attack_animal(mob/living/simple_animal/M as mob)
+ if(M.melee_damage_upper == 0)
+ M.emote("[M.friendly] [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red [M] [M.attacktext] [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ adjustBruteLoss(damage)
+ updatehealth()
+
+
+
/mob/living/carbon/alien/larva/attack_paw(mob/living/carbon/monkey/M as mob)
if(!(istype(M, /mob/living/carbon/monkey))) return//Fix for aliens receiving double messages when attacking other aliens.
@@ -310,7 +324,7 @@
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [M.name] has bit [src]!"), 1)
- bruteloss += rand(1, 3)
+ adjustBruteLoss(rand(1, 3))
updatehealth()
return
@@ -335,7 +349,7 @@
else
damage = rand(5, 35)
- bruteloss += damage
+ adjustBruteLoss(damage)
updatehealth()
@@ -449,7 +463,7 @@
for(var/mob/O in viewers(M, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [] has weakened []!", M, src), 1, "\red You hear someone fall.", 2)
- bruteloss += damage
+ adjustBruteLoss(damage)
updatehealth()
else
if(M.type != /mob/living/carbon/human/tajaran)
@@ -492,7 +506,7 @@
for(var/mob/O in viewers(src, null))
if ((O.client && !( O.blinded )))
O.show_message(text("\red [M.name] has bit []!", src), 1)
- bruteloss += damage
+ adjustBruteLoss(damage)
updatehealth()
else
M << "\green [name] is too injured for that."
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 55c40cb4ce7..581179cdd8b 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -112,6 +112,7 @@
bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
//Account for massive pressure differences
+
return //TODO: DEFERRED
handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
@@ -171,7 +172,7 @@
if(health <= 20 && prob(1)) spawn(0) emote("gasp")
//if(!rejuv) oxyloss++
- if(!reagents.has_reagent("inaprovaline")) oxyloss++
+ if(!reagents.has_reagent("inaprovaline")) adjustOxyLoss(1)
if(stat != 2) stat = 1
Paralyse(5)
diff --git a/code/modules/mob/living/carbon/human/death.dm b/code/modules/mob/living/carbon/human/death.dm
index 2fd08fb4cb5..b08d24d45c0 100644
--- a/code/modules/mob/living/carbon/human/death.dm
+++ b/code/modules/mob/living/carbon/human/death.dm
@@ -82,3 +82,16 @@
world.Reboot()
return ..(gibbed)
+
+/mob/living/carbon/human/proc/ChangeToHusk()
+ if(mutations & HUSK)
+ return
+ mutations |= HUSK
+ real_name = "Unknown"
+ update_body()
+ return
+
+/mob/living/carbon/human/proc/Drain()
+ ChangeToHusk()
+ mutations |= NOCLONE
+ return
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index ae98f374f1d..016b416965e 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -89,24 +89,24 @@
if (src.wear_id)
var/id
- var/photo = 0
+// var/photo = 0
if(istype(src:wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = src:wear_id
id = pda.owner
else
- id = src.wear_id.registered_name
- if (src.wear_id.PHOTO)
- photo = 1
+ id = src.wear_id.registered
+// if (src.wear_id.PHOTO)
+// photo = 1
if (id != src.real_name && in_range(src, usr))
- if (photo)
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
- else
- usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
+// if (photo)
+// usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo yet doesn't seem to be that person!!!"
+// else
+ usr << "\red [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] yet doesn't seem to be that person!!!"
else
- if (photo)
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
- else
- usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
+// if (photo)
+// usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name] with a photo."
+// else
+ usr << "\blue [src.name] is wearing \icon[src.wear_id] [src.wear_id.name]."
if (src.is_jittery)
diff --git a/code/modules/mob/living/carbon/human/hud.dm b/code/modules/mob/living/carbon/human/hud.dm
index 02f6974676f..aa8b28715bb 100644
--- a/code/modules/mob/living/carbon/human/hud.dm
+++ b/code/modules/mob/living/carbon/human/hud.dm
@@ -478,6 +478,11 @@
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
+ mymob.pressure = new /obj/screen( null )
+ mymob.pressure.icon = 'screen1_old.dmi'
+ mymob.pressure.icon_state = "pressure0"
+ mymob.pressure.name = "pressure"
+ mymob.pressure.screen_loc = ui_pressure
/*
mymob.i_select = new /obj/screen( null )
mymob.i_select.icon_state = "selector"
@@ -669,7 +674,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
- mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
+ mymob.client.screen += list( mymob.pain, mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.nutrition_icon, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.pressure, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm
index c92fa7bd87a..bb84057af2b 100644
--- a/code/modules/mob/living/carbon/human/human.dm
+++ b/code/modules/mob/living/carbon/human/human.dm
@@ -125,7 +125,25 @@
now_pushing = 1
if (ismob(AM))
var/mob/tmob = AM
- if(tmob.a_intent == "help" && a_intent == "help" && tmob.canmove && canmove) // mutual brohugs all around!
+
+//BubbleWrap - Should stop you pushing a restrained person out of the way
+
+ if(istype(tmob, /mob/living/carbon/human))
+
+ for(var/mob/M in range(tmob, 1))
+ if( ((M.pulling == tmob && ( tmob.restrained() && !( M.restrained() ) && M.stat == 0)) || locate(/obj/item/weapon/grab, tmob.grabbed_by.len)) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restrained, you cannot push past"
+ now_pushing = 0
+ return
+ if( tmob.pulling == M && ( M.restrained() && !( tmob.restrained() ) && tmob.stat == 0) )
+ if ( !(world.time % 5) )
+ src << "\red [tmob] is restraining [M], you cannot push past"
+ now_pushing = 0
+ return
+
+ //BubbleWrap: people in handcuffs are always switched around as if they were on 'help' intent to prevent a person being pulled from being seperated from their puller
+ if((tmob.a_intent == "help" || tmob.restrained()) && (a_intent == "help" || src.restrained()) && tmob.canmove && canmove) // mutual brohugs all around!
var/turf/oldloc = loc
loc = tmob.loc
tmob.loc = oldloc
@@ -137,10 +155,20 @@
/*if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
if(prob(40) && !(mutations & FAT))
- visible_message("\red [src] fails to push [tmob]'s fat ass out of the way.", \
- "\red You fail to push [tmob]'s fat ass out of the way.")
+ src << "\red You fail to push [tmob]'s fat ass out of the way."
now_pushing = 0
return*/
+ if(tmob.r_hand && istype(tmob.r_hand, /obj/item/weapon/shield/riot))
+ if(prob(99))
+ now_pushing = 0
+ return
+ if(tmob.l_hand && istype(tmob.l_hand, /obj/item/weapon/shield/riot))
+ if(prob(99))
+ now_pushing = 0
+ return
+ if(tmob.nopush)
+ now_pushing = 0
+ return
tmob.LAssailant = src
@@ -829,10 +857,10 @@
update_body()
if(buckled)
- if(istype(buckled, /obj/structure/stool/bed))
- lying = 1
- else
+ if(istype(buckled, /obj/structure/stool/bed/chair))
lying = 0
+ else
+ lying = 1
// Automatically drop anything in store / id / belt if you're not wearing a uniform.
if (!w_uniform)
@@ -1082,8 +1110,8 @@
if (wear_id)
if (istype(wear_id, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/id = wear_id
- if (id.registered_name)
- name = id.registered_name
+ if (id.registered)
+ name = id.registered
else
name = "Unknown"
else if (istype(wear_id, /obj/item/device/pda))
@@ -1098,8 +1126,8 @@
if (wear_id)
if (istype(wear_id, /obj/item/weapon/card/id))
var/obj/item/weapon/card/id/id = wear_id
- if (id.registered_name != real_name)
- name = "[real_name] (as [id.registered_name])"
+ if (id.registered != real_name)
+ name = "[real_name] (as [id.registered])"
else if (istype(wear_id, /obj/item/device/pda))
@@ -1211,6 +1239,19 @@
return
+//TG Simple Animal
+/mob/living/carbon/human/attack_animal(mob/living/simple_animal/M as mob)
+ if(M.melee_damage_upper == 0)
+ M.emote("[M.friendly] [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\red [M] [M.attacktext] [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ var/dam_zone = pick("chest", "l_hand", "r_hand", "l_leg", "r_leg")
+ var/datum/organ/external/affecting = get_organ(ran_zone(dam_zone))
+ var/armor = run_armor_check(affecting, "melee")
+ apply_damage(damage, BRUTE, affecting, armor)
+ if(armor >= 2) return
/mob/living/carbon/human/attack_metroid(mob/living/carbon/metroid/M as mob)
@@ -1492,7 +1533,7 @@
del(src)
return
if("internal")
- if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && (istype(target.back, /obj/item/weapon/tank) || istype(target.belt, /obj/item/weapon/tank) || istype(target.s_store, /obj/item/weapon/tank)) && !( target.internal )) ) && !( target.internal )))
+ if ((!( (istype(target.wear_mask, /obj/item/clothing/mask) && istype(target.back, /obj/item/weapon/tank) && !( target.internal )) ) && !( target.internal )))
//SN src = null
del(src)
return
@@ -1661,7 +1702,7 @@
return
message = text("\red [] is trying to empty []'s pockets!!", source, target)
if("CPR")
- if (target.cpr_time + 3 >= world.time)
+ if (target.cpr_time >= world.time + 3)
//SN src = null
del(src)
return
@@ -2122,14 +2163,14 @@ It can still be worn/put on as normal.
target.handcuffed = item
item.loc = target
if("CPR")
- if (target.cpr_time + 30 >= world.time)
+ if (target.cpr_time >= world.time + 30)
//SN src = null
del(src)
return
if ((target.health >= -99.0 && target.stat == 1))
target.cpr_time = world.time
var/suff = min(target.getOxyLoss(), 7)
- target.oxyloss -= suff
+ target.adjustOxyLoss(-suff)
target.losebreath = 0
target.updatehealth()
for(var/mob/O in viewers(source, null))
@@ -2177,7 +2218,7 @@ It can still be worn/put on as normal.
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
- W.add_fingerprint(source)
+ W.add_fingerprint(source)
if (target.r_store)
var/obj/item/W = target.r_store
target.u_equip(W)
@@ -2187,7 +2228,7 @@ It can still be worn/put on as normal.
W.loc = target.loc
W.dropped(target)
W.layer = initial(W.layer)
- W.add_fingerprint(source)
+ W.add_fingerprint(source)
if("internal")
if (target.internal)
target.internal.add_fingerprint(source)
@@ -2198,11 +2239,11 @@ It can still be worn/put on as normal.
if (!( istype(target.wear_mask, /obj/item/clothing/mask) ))
return
else
- if (istype(target.back, /obj/item/weapon/tank) && (internalloc == "back" || !internalloc))
+ if (istype(target.back, /obj/item/weapon/tank))
target.internal = target.back
- else if (istype(target.s_store, /obj/item/weapon/tank) && (internalloc == "store" || !internalloc))
+ else if (istype(target.s_store, /obj/item/weapon/tank))
target.internal = target.s_store
- else if (istype(target.belt, /obj/item/weapon/tank) && (internalloc == "belt" || !internalloc))
+ else if (istype(target.belt, /obj/item/weapon/tank))
target.internal = target.belt
if (target.internal)
for(var/mob/M in viewers(target, 1))
@@ -2213,6 +2254,9 @@ It can still be worn/put on as normal.
else
if(source)
source.update_clothing()
+ spawn(0)
+ if(source.machine == target)
+ target.show_inv(source)
if(target)
target.update_clothing()
//SN src = null
@@ -2240,12 +2284,12 @@ It can still be worn/put on as normal.
Right Ear: [(r_ear ? r_ear : "Nothing")]
Head: [(head ? head : "Nothing")]
Shoes: [(shoes ? shoes : "Nothing")]
-
Belt: [(belt ? belt : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(belt, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
+
Belt: [(belt ? belt : "Nothing")]
Uniform: [(w_uniform ? w_uniform : "Nothing")]
(Exo)Suit: [(wear_suit ? wear_suit : "Nothing")]
-
Back: [(back ? back : "Nothing")][(istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
+
Back: [(back ? back : "Nothing")] [((istype(wear_mask, /obj/item/clothing/mask) && istype(back, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : "")]
ID: [(wear_id ? wear_id : "Nothing")]
-
Suit Storage: [(s_store ? s_store : "Nothing")] [(istype(wear_mask, /obj/item/clothing/mask) && istype(s_store, /obj/item/weapon/tank) && !( internal )) ? text(" Set Internal", src) : ""]
+
Suit Storage: [(s_store ? s_store : "Nothing")]
[(handcuffed ? text("Handcuffed") : text("Not Handcuffed"))]
[(internal ? text("Remove Internal") : "")]
Empty Pockets
@@ -2289,11 +2333,11 @@ It can still be worn/put on as normal.
var/obj/item/weapon/card/id/id = wear_id
if (istype(pda))
if (pda.id)
- . = pda.id.registered_name
+ . = pda.id.registered
else
. = pda.owner
else if (istype(id))
- . = id.registered_name
+ . = id.registered
else
return if_no_id
return
@@ -2306,7 +2350,7 @@ It can still be worn/put on as normal.
if (istype(pda))
. = pda.owner
else if (istype(id))
- . = id.registered_name
+ . = id.registered
else
return if_no_id
return
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 7ec31ec32bb..9bafddc407a 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -93,6 +93,9 @@
//Disabilities
handle_disabilities()
+ //Random events (vomiting etc)
+ handle_random_events()
+
//Status updates, death etc.
UpdateLuminosity()
handle_regular_status_updates()
@@ -105,6 +108,9 @@
if(client)
handle_regular_hud_updates()
+ //Being buckled to a chair or bed
+ check_if_buckled()
+
// Yup.
update_canmove()
@@ -451,7 +457,7 @@
if(!breath || (breath.total_moles() == 0))
if(reagents.has_reagent("inaprovaline"))
return
- oxyloss += HUMAN_MAX_OXYLOSS
+ adjustOxyLoss(HUMAN_MAX_OXYLOSS)
oxygen_alert = max(oxygen_alert, 1)
@@ -481,10 +487,10 @@
spawn(0) emote("gasp")
if(O2_pp > 0)
var/ratio = safe_oxygen_min/O2_pp
- oxyloss += min(5*ratio, HUMAN_MAX_OXYLOSS) // Don't fuck them up too fast (space only does HUMAN_MAX_OXYLOSS after all!)
+ adjustOxyLoss(min(5*ratio, HUMAN_MAX_OXYLOSS)) // Don't fuck them up too fast (space only does HUMAN_MAX_OXYLOSS after all!)
oxygen_used = breath.oxygen*ratio/6
else
- oxyloss += HUMAN_MAX_OXYLOSS
+ adjustOxyLoss(HUMAN_MAX_OXYLOSS)
oxygen_alert = max(oxygen_alert, 1)
/*else if (O2_pp > safe_oxygen_max) // Too much oxygen (commented this out for now, I'll deal with pressure damage elsewhere I suppose)
spawn(0) emote("cough")
@@ -493,7 +499,7 @@
oxygen_used = breath.oxygen*ratio/6
oxygen_alert = max(oxygen_alert, 1)*/
else // We're in safe limits
- oxyloss = max(getOxyLoss()-5, 0)
+ adjustOxyLoss(-5)
oxygen_used = breath.oxygen/6
oxygen_alert = 0
@@ -505,10 +511,10 @@
co2overloadtime = world.time
else if(world.time - co2overloadtime > 120)
Paralyse(3)
- oxyloss += 3 // Lets hurt em a little, let them know we mean business
+ adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business
if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
- oxyloss += 8
- if(prob(20) && isbreathing) // Lets give them some chance to know somethings not right though I guess.
+ adjustOxyLoss(8)
+ if(prob(20)) // Lets give them some chance to know somethings not right though I guess.
spawn(0) emote("cough")
else
@@ -640,7 +646,17 @@
bodytemperature += 0.8*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
*/
- //Account for massive pressure differences
+ //Account for massive pressure differences. Done by Polymorph
+ var/pressure = environment.return_pressure()
+ if(!istype(wear_suit, /obj/item/clothing/suit/space)&&!istype(wear_suit, /obj/item/clothing/suit/armor/captain))
+ /*if(pressure < 20)
+ if(prob(25))
+ src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
+ adjustBruteLoss(5)
+ */
+ if(pressure > HAZARD_HIGH_PRESSURE)
+ adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
+
return //TODO: DEFERRED
adjust_body_temperature(current, loc_temp, boost)
@@ -758,14 +774,9 @@
if(nutrition < 500) //so they can't store nutrition to survive without light forever
nutrition += light_amount
if(light_amount > 0) //if there's enough light, heal
- if(getFireLoss())
- heal_overall_damage(0,1)
- if(getBruteLoss())
- heal_overall_damage(1,0)
+ heal_overall_damage(1,1)
adjustToxLoss(-1)
-
- if(getOxyLoss())
- oxyloss--
+ adjustOxyLoss(-1)
/*if(overeatduration > 500 && !(mutations & FAT))
src << "\red You suddenly feel blubbery!"
@@ -857,19 +868,25 @@
if(getOxyLoss() > 50) Paralyse(3)
if(sleeping)
- Paralyse(3)
+// adjustHalLoss(-5)
+ if(paralysis <= 0)
+ Paralyse(2)
if (prob(10) && health && !hal_crit) spawn(0) emote("snore")
if(!src.sleeping_willingly)
src.sleeping--
if(resting)
- Weaken(3)
+ if(weakened <= 0)
+ Weaken(2)
if(health < config.health_threshold_dead || brain_op_stage == 4.0)
death()
else if(health < config.health_threshold_crit)
if(health <= 20 && prob(1)) spawn(0) emote("gasp")
+ //if(!rejuv) oxyloss++
+ if(!reagents.has_reagent("inaprovaline")) adjustOxyLoss(1)
+
if(stat != 2) stat = 1
Paralyse(5)
@@ -1099,7 +1116,7 @@
if (healths)
if (stat != 2)
- switch(health)
+ switch(health - halloss)
if(100 to INFINITY)
healths.icon_state = "health0"
if(80 to 100)
@@ -1133,6 +1150,24 @@
nutrition_icon.icon_state = "nutrition3"
else
nutrition_icon.icon_state = "nutrition4"
+ if (pressure)
+ if(istype(wear_suit, /obj/item/clothing/suit/space)||istype(wear_suit, /obj/item/clothing/suit/armor/captain))
+ pressure.icon_state = "pressure0"
+
+ else
+ var/datum/gas_mixture/environment = loc.return_air()
+ if(environment)
+ switch(environment.return_pressure())
+ if(HAZARD_HIGH_PRESSURE to INFINITY)
+ pressure.icon_state = "pressure2"
+ if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
+ pressure.icon_state = "pressure1"
+ if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
+ pressure.icon_state = "pressure0"
+ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
+ pressure.icon_state = "pressure-1"
+ else
+ pressure.icon_state = "pressure-2"
if(pullin) pullin.icon_state = "pull[pulling ? 1 : 0]"
@@ -1166,6 +1201,7 @@
else
bodytemp.icon_state = "temp-4"
+ if(!client) return 0 //Wish we did not need these
client.screen -= hud_used.blurry
client.screen -= hud_used.druggy
client.screen -= hud_used.vimpaired
@@ -1190,6 +1226,14 @@
if(!head:up && tinted_weldhelh)
client.screen += hud_used.darkMask
+ if(eye_stat > 20)
+ if((eye_stat > 30))
+ client.screen += hud_used.darkMask
+ else
+ client.screen += hud_used.vimpaired
+
+
+
if (stat != 2)
if (machine)
if (!( machine.check_eye(src) ))
@@ -1202,10 +1246,33 @@
return 1
handle_random_events()
+ /* // probably stupid -- Doohl
if (prob(1) && prob(2))
spawn(0)
emote("sneeze")
return
+ */
+
+ // Puke if toxloss is too high
+ if(!stat)
+ if (getToxLoss() >= 45 && nutrition > 20)
+ lastpuke ++
+ if(lastpuke >= 25) // about 25 second delay I guess
+ Stun(5)
+
+ for(var/mob/O in viewers(world.view, src))
+ O.show_message(text("\red [] throws up!", src), 1)
+ playsound(src.loc, 'splat.ogg', 50, 1)
+
+ var/turf/location = loc
+ if (istype(location, /turf/simulated))
+ location.add_vomit_floor(src, 1)
+
+ nutrition -= 20
+ adjustToxLoss(-3)
+
+ // make it so you can only puke so fast
+ lastpuke = 0
handle_virus_updates()
if(bodytemperature > 406)
@@ -1260,13 +1327,13 @@
continue
if(air_master.current_cycle%3==1)
if(!M.nodamage)
- M.bruteloss += 5
+ M.adjustBruteLoss(5)
nutrition += 10
handle_changeling()
if (mind)
if (mind.special_role == "Changeling" && changeling)
- changeling.chem_charges = between(0, (max((0.9 - (changeling.chem_charges / 50)), 0.1) + changeling.chem_charges), 50)
+ changeling.chem_charges = between(0, ((max((0.9 - (changeling.chem_charges / 50)), 0.1)*changeling.chem_recharge_multiplier) + changeling.chem_charges), changeling.chem_storage)
if ((changeling.geneticdamage > 0))
changeling.geneticdamage = changeling.geneticdamage-1
@@ -1306,3 +1373,66 @@
src << ""+pick("The pain is excrutiating!", "Please, just end the pain!", "Your whole body is going numb!")
else if(shock_stage == 80)
src << ""+pick("You see a light at the end of the tunnel!", "You feel like you could die any moment now.", "You're about to lose consciousness.")
+
+/*
+ // Commented out so hunger system won't be such shock
+ // Damage and effect from not eating
+ if(nutrition <= 50)
+ if (prob (0.1))
+ src << "\red Your stomach rumbles."
+ if (prob (10))
+ bruteloss++
+ if (prob (5))
+ src << "You feel very weak."
+ weakened += rand(2, 3)
+*/
+/*
+snippets
+
+ if (mach)
+ if (machine)
+ mach.icon_state = "mach1"
+ else
+ mach.icon_state = null
+
+ if (!m_flag)
+ moved_recently = 0
+ m_flag = null
+
+
+
+ if ((istype(loc, /turf/space) && !( locate(/obj/movable, loc) )))
+ var/layers = 20
+ // ******* Check
+ if (((istype(head, /obj/item/clothing/head) && head.flags & 4) || (istype(wear_mask, /obj/item/clothing/mask) && (!( wear_mask.flags & 4 ) && wear_mask.flags & 8))))
+ layers -= 5
+ if (istype(w_uniform, /obj/item/clothing/under))
+ layers -= 5
+ if ((istype(wear_suit, /obj/item/clothing/suit) && wear_suit.flags & 8))
+ layers -= 10
+ if (layers > oxcheck)
+ oxcheck = layers
+
+
+ if(bodytemperature < 282.591 && (!firemut))
+ if(bodytemperature < 250)
+ adjustFireLoss(4)
+ updatehealth()
+ if(paralysis <= 2) paralysis += 2
+ else if(prob(1) && !paralysis)
+ if(paralysis <= 5) paralysis += 5
+ emote("collapse")
+ src << "\red You collapse from the cold!"
+ if(bodytemperature > 327.444 && (!firemut))
+ if(bodytemperature > 345.444)
+ if(!eye_blurry) src << "\red The heat blurs your vision!"
+ eye_blurry = max(4, eye_blurry)
+ if(prob(3)) adjustFireLoss(rand(1,2))
+ else if(prob(3) && !paralysis)
+ paralysis += 2
+ emote("collapse")
+ src << "\red You collapse from heat exaustion!"
+ plcheck = t_plasma
+ oxcheck = t_oxygen
+ G.turf_add(T, G.total_moles())
+*/
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/monkey/hud.dm b/code/modules/mob/living/carbon/monkey/hud.dm
index 579edf18e6a..c3c692643e3 100644
--- a/code/modules/mob/living/carbon/monkey/hud.dm
+++ b/code/modules/mob/living/carbon/monkey/hud.dm
@@ -390,6 +390,12 @@
mymob.oxygen.name = "oxygen"
mymob.oxygen.screen_loc = ui_oxygen
+ mymob.pressure = new /obj/screen( null )
+ mymob.pressure.icon = 'screen1_old.dmi'
+ mymob.pressure.icon_state = "pressure0"
+ mymob.pressure.name = "pressure"
+ mymob.pressure.screen_loc = ui_pressure
+
/*
mymob.i_select = new /obj/screen( null )
mymob.i_select.icon_state = "selector"
@@ -401,7 +407,6 @@
mymob.m_select.name = "moving"
mymob.m_select.screen_loc = "16:-11,14"
*/
-
mymob.toxin = new /obj/screen( null )
mymob.toxin.icon = ui_style
mymob.toxin.icon_state = "tox0"
@@ -569,7 +574,7 @@
mymob.client.screen = null
//, mymob.i_select, mymob.m_select
- mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.gun_setting_icon) //, mymob.mach )
+ mymob.client.screen += list( mymob.throw_icon, mymob.zone_sel, mymob.oxygen, mymob.toxin, mymob.bodytemp, mymob.internals, mymob.fire, mymob.hands, mymob.healths, mymob.pullin, mymob.blind, mymob.flash, mymob.rest, mymob.sleep, mymob.pressure, mymob.gun_setting_icon) //, mymob.mach )
mymob.client.screen += src.adding + src.other
//if(istype(mymob,/mob/living/carbon/monkey)) mymob.client.screen += src.mon_blo
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index d268b95ede2..397cc762c19 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -46,7 +46,6 @@
//to find it.
src.blinded = null
-
//Disease Check
handle_virus_updates()
@@ -260,7 +259,7 @@
return
if(!breath || (breath.total_moles() == 0))
- oxyloss += 7
+ adjustOxyLoss(7)
oxygen_alert = max(oxygen_alert, 1)
@@ -288,7 +287,7 @@
if (O2_pp == 0)
O2_pp = 0.01
var/ratio = safe_oxygen_min/O2_pp
- oxyloss += min(5*ratio, 7) // Don't fuck them up too fast (space only does 7 after all!)
+ adjustOxyLoss(min(5*ratio, 7)) // Don't fuck them up too fast (space only does 7 after all!)
oxygen_used = breath.oxygen*ratio/6
oxygen_alert = max(oxygen_alert, 1)
/*else if (O2_pp > safe_oxygen_max) // Too much oxygen (commented this out for now, I'll deal with pressure damage elsewhere I suppose)
@@ -298,7 +297,7 @@
oxygen_used = breath.oxygen*ratio/6
oxygen_alert = max(oxygen_alert, 1)*/
else // We're in safe limits
- oxyloss = max(getOxyLoss()-5, 0)
+ adjustOxyLoss(-5)
oxygen_used = breath.oxygen/6
oxygen_alert = 0
@@ -310,9 +309,9 @@
co2overloadtime = world.time
else if(world.time - co2overloadtime > 120)
Paralyse(3)
- oxyloss += 3 // Lets hurt em a little, let them know we mean business
+ adjustOxyLoss(3) // Lets hurt em a little, let them know we mean business
if(world.time - co2overloadtime > 300) // They've been in here 30s now, lets start to kill them for their own good!
- oxyloss += 8
+ adjustOxyLoss(8)
if(prob(20)) // Lets give them some chance to know somethings not right though I guess.
spawn(0) emote("cough")
@@ -368,8 +367,21 @@
if(stat==2)
bodytemperature += 0.1*(environment.temperature - bodytemperature)*environment_heat_capacity/(environment_heat_capacity + 270000)
-
//Account for massive pressure differences
+ var/pressure = environment.return_pressure()
+
+ // if(!wear_suit) Monkies cannot into space.
+ // if(!istype(wear_suit, /obj/item/clothing/suit/space))
+
+ /*if(pressure < 20)
+ if(prob(25))
+ src << "You feel the splittle on your lips and the fluid on your eyes boiling away, the capillteries in your skin breaking."
+ adjustBruteLoss(5)
+ */
+
+ if(pressure > HAZARD_HIGH_PRESSURE)
+
+ adjustBruteLoss(min((10+(round(pressure/(HIGH_STEP_PRESSURE)-2)*5)),MAX_PRESSURE_DAMAGE))
return //TODO: DEFERRED
handle_temperature_damage(body_part, exposed_temperature, exposed_intensity)
@@ -423,8 +435,8 @@
else if(src.health < config.health_threshold_crit)
if(src.health <= 20 && prob(1)) spawn(0) emote("gasp")
- if(!src.rejuv) src.oxyloss++
- if(!src.reagents.has_reagent("inaprovaline")) src.oxyloss++
+ //if(!src.rejuv) src.oxyloss++ //-Nodrak (I can't believe I thought this should be commented back in)
+ if(!src.reagents.has_reagent("inaprovaline") && src.stat != 2) src.adjustOxyLoss(2)
if(src.stat != 2) src.stat = 1
Paralyse(5)
@@ -530,6 +542,21 @@
src.healths.icon_state = "health6"
else
src.healths.icon_state = "health7"
+ if (pressure)
+ var/datum/gas_mixture/environment = loc.return_air()
+ if(environment)
+ switch(environment.return_pressure())
+
+ if(HAZARD_HIGH_PRESSURE to INFINITY)
+ pressure.icon_state = "pressure2"
+ if(WARNING_HIGH_PRESSURE to HAZARD_HIGH_PRESSURE)
+ pressure.icon_state = "pressure1"
+ if(WARNING_LOW_PRESSURE to WARNING_HIGH_PRESSURE)
+ pressure.icon_state = "pressure0"
+ if(HAZARD_LOW_PRESSURE to WARNING_LOW_PRESSURE)
+ pressure.icon_state = "pressure-1"
+ else
+ pressure.icon_state = "pressure-2"
if(src.pullin) src.pullin.icon_state = "pull[src.pulling ? 1 : 0]"
@@ -625,6 +652,6 @@
handle_changeling()
if (mind)
if (mind.special_role == "Changeling" && changeling)
- changeling.chem_charges = between(0, (max((0.9 - (changeling.chem_charges / 50)), 0.1) + changeling.chem_charges), 50)
+ changeling.chem_charges = between(0, ((max((0.9 - (changeling.chem_charges / 50)), 0.1)*changeling.chem_recharge_multiplier) + changeling.chem_charges), changeling.chem_storage)
if ((changeling.geneticdamage > 0))
changeling.geneticdamage = changeling.geneticdamage-1
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/monkey/monkey.dm b/code/modules/mob/living/carbon/monkey/monkey.dm
index 4bb7830e025..6480701a8d0 100644
--- a/code/modules/mob/living/carbon/monkey/monkey.dm
+++ b/code/modules/mob/living/carbon/monkey/monkey.dm
@@ -452,10 +452,10 @@
/mob/living/carbon/monkey/update_clothing()
if(buckled)
- if(istype(buckled, /obj/structure/stool/bed))
- lying = 1
- else
+ if(istype(buckled, /obj/structure/stool/bed/chair))
lying = 0
+ else
+ lying = 1
if(update_icon) // Skie
..()
diff --git a/code/modules/mob/living/silicon/pai/hud.dm b/code/modules/mob/living/silicon/pai/hud.dm
index 974c041116a..4f664e0b4ab 100644
--- a/code/modules/mob/living/silicon/pai/hud.dm
+++ b/code/modules/mob/living/silicon/pai/hud.dm
@@ -13,7 +13,7 @@
client.images += image(tempHud,perp,"hud[ckey(perp:wear_id:GetJobName())]")
var/perpname = "wot"
if(istype(perp.wear_id,/obj/item/weapon/card/id))
- perpname = perp.wear_id:registered_name
+ perpname = perp.wear_id:registered
else if(istype(perp.wear_id,/obj/item/device/pda))
var/obj/item/device/pda/tempPda = perp.wear_id
perpname = tempPda.owner
diff --git a/code/modules/mob/login.dm b/code/modules/mob/login.dm
index a41bf638d99..e7a8d19da5b 100644
--- a/code/modules/mob/login.dm
+++ b/code/modules/mob/login.dm
@@ -2,9 +2,6 @@
log_access("Login: [key_name(src)] from [src.client.address ? src.client.address : "localhost"]")
src.lastKnownIP = src.client.address
src.computer_id = src.client.computer_id
- if(!src.client.midis || !src.midis)
- src.client.midis = 0
- src.midis = 0
if (config.log_access)
for (var/mob/M in world)
if(M == src)
diff --git a/code/modules/mob/mob_defines.dm b/code/modules/mob/mob_defines.dm
new file mode 100644
index 00000000000..8abee2c7478
--- /dev/null
+++ b/code/modules/mob/mob_defines.dm
@@ -0,0 +1,527 @@
+/mob
+ density = 1
+ layer = 4.0
+ animate_movement = 2
+// flags = NOREACT
+//THE SOLUTION BUBBLES was funnier.
+ var/datum/mind/mind
+
+
+
+
+ //MOB overhaul
+
+ //Not in use yet
+// var/obj/organstructure/organStructure = null
+
+ //Vars that have been relocated to organStructure
+ //Vars that have been relocated to organStructure ++END
+
+
+
+ //Vars that should only be accessed via procs
+ var/bruteloss = 0.0//Living
+ var/oxyloss = 0.0//Living
+ var/toxloss = 0.0//Living
+ var/fireloss = 0.0//Living
+ var/cloneloss = 0//Carbon
+ var/brainloss = 0//Carbon
+ var/maxHealth = 100 //Living
+ //Vars that should only be accessed via procs ++END
+
+// var/uses_hud = 0
+ var/obj/screen/pain = null
+ var/obj/screen/flash = null
+ var/obj/screen/blind = null
+ var/obj/screen/hands = null
+ var/obj/screen/mach = null
+ var/obj/screen/sleep = null
+ var/obj/screen/rest = null
+ var/obj/screen/pullin = null
+ var/obj/screen/internals = null
+ var/obj/screen/oxygen = null
+ var/obj/screen/i_select = null
+ var/obj/screen/m_select = null
+ var/obj/screen/toxin = null
+ var/obj/screen/fire = null
+ var/obj/screen/bodytemp = null
+ var/obj/screen/healths = null
+ var/obj/screen/throw_icon = null
+ var/obj/screen/nutrition_icon = null
+ var/obj/screen/pressure = null
+ var/obj/screen/gun/item/item_use_icon = null
+ var/obj/screen/gun/move/gun_move_icon = null
+ var/obj/screen/gun/run/gun_run_icon = null
+ var/obj/screen/gun/mode/gun_setting_icon = null
+
+ var/total_luminosity = 0 //This controls luminosity for mobs, when you pick up lights and such this is edited. If you want the mob to use lights it must update its lum in its life proc or such. Note clamp this value around 7 or such to prevent massive light lag.
+ var/last_luminosity = 0
+
+ /*A bunch of this stuff really needs to go under their own defines instead of being globally attached to mob.
+ A variable should only be globally attached to turfs/objects/whatever, when it is in fact needed as such.
+ The current method unnecessarily clusters up the variable list, especially for humans (although rearranging won't really clean it up a lot but the difference will be noticable for other mobs).
+ I'll make some notes on where certain variable defines should probably go.
+ Changing this around would probably require a good look-over the pre-existing code.
+ */
+ //var/midis = 1 //Check if midis should be played for someone - no, this is something that is tied to clients, not mobs.
+ var/alien_egg_flag = 0//Have you been infected?
+ var/last_special = 0
+ var/obj/screen/zone_sel/zone_sel = null
+
+ var/emote_allowed = 1
+ var/computer_id = null
+ var/lastattacker = null
+ var/lastattacked = null
+ var/attack_log = list( )
+ var/already_placed = 0.0
+ var/obj/machinery/machine = null
+ var/other_mobs = null
+ var/memory = ""
+ var/poll_answer = 0.0
+ var/sdisabilities = 0//Carbon
+ var/disabilities = 0//Carbon
+ var/atom/movable/pulling = null
+ var/stat = 0.0
+ var/next_move = null
+ var/prev_move = null
+ var/monkeyizing = null//Carbon
+ var/other = 0.0
+ var/hand = null
+ var/eye_blind = null//Carbon
+ var/eye_blurry = null//Carbon
+ var/ear_deaf = null//Carbon
+ var/ear_damage = null//Carbon
+ var/stuttering = null//Carbon
+ var/slurring = null
+ var/real_name = null
+ var/original_name = null //Original name is only used in ghost chat! It is not to be edited by anything!
+ var/flavor_text = ""
+ var/blinded = null
+ var/bhunger = 0//Carbon
+ var/ajourn = 0
+ var/rejuv = null
+ var/druggy = 0//Carbon
+ var/confused = 0//Carbon
+ var/antitoxs = null
+ var/plasma = null
+ var/sleeping = 0.0//Carbon
+ var/sleeping_willingly = 0.0 //Carbon, allows people to sleep forever if desired
+ var/admin_observing = 0.0
+ var/resting = 0.0//Carbon
+ var/lying = 0.0
+ var/canmove = 1.0
+ var/eye_stat = null//Living, potentially Carbon
+ var/lastpuke = 0
+
+ var/name_archive //For admin things like possession
+
+ var/timeofdeath = 0.0//Living
+ var/cpr_time = 1.0//Carbon
+ var/health = 100//Living
+
+ var/bodytemperature = 310.055 //98.7 F
+ var/drowsyness = 0.0//Carbon
+ var/dizziness = 0//Carbon
+ var/is_dizzy = 0
+ var/is_jittery = 0
+ var/jitteriness = 0//Carbon
+ var/charges = 0.0
+ var/nutrition = 400.0//Carbon
+ var/overeatduration = 0 // How long this guy is overeating //Carbon
+ var/paralysis = 0.0
+ var/stunned = 0.0
+ var/weakened = 0.0
+ var/losebreath = 0.0//Carbon
+ var/intent = null//Living
+ var/shakecamera = 0
+ var/a_intent = "help"//Living
+ var/m_int = null//Living
+ var/m_intent = "run"//Living
+ var/lastDblClick = 0
+ var/lastKnownIP = null
+ var/obj/structure/stool/bed/buckled = null//Living
+ var/obj/item/weapon/handcuffs/handcuffed = null//Living
+ var/obj/item/l_hand = null//Living
+ var/obj/item/r_hand = null//Living
+ var/obj/item/weapon/back = null//Human/Monkey
+ var/obj/item/weapon/tank/internal = null//Human/Monkey
+ var/obj/item/weapon/storage/s_active = null//Carbon
+ var/obj/item/clothing/mask/wear_mask = null//Carbon
+ var/r_epil = 0
+ var/r_ch_cou = 0
+ var/r_Tourette = 0//Carbon
+
+ var/seer = 0 //for cult//Carbon, probably Human
+
+ var/miming = null //checks if the guy is a mime//Human
+ var/silent = null //Can't talk. Value goes down every life proc.//Human
+
+ var/obj/hud/hud_used = null
+
+ //var/list/organs = list( ) //moved to human.
+ var/list/grabbed_by = list( )
+ var/list/requests = list( )
+
+ var/list/mapobjs = list()
+
+ var/in_throw_mode = 0
+
+ var/coughedtime = null
+
+ var/inertia_dir = 0
+ var/footstep = 1
+
+ var/music_lastplayed = "null"
+
+ var/job = null//Living
+
+ var/nodamage = 0
+ var/logged_in = 0
+
+ var/underwear = 1//Human
+ var/backbag = 2//Human
+ var/be_syndicate = 0//This really should be a client variable.
+ var/be_random_name = 0
+ var/const/blindness = 1//Carbon
+ var/const/deafness = 2//Carbon
+ var/const/muteness = 4//Carbon
+
+
+ var/datum/dna/dna = null//Carbon
+ var/radiation = 0.0//Carbon
+
+ var/mutations = 0//Carbon
+ var/mutations2 = 0//Carbon
+ //telekinesis = 1
+ //firemut = 2
+ //xray = 4
+ //hulk = 8
+ //clumsy = 16
+ //obese = 32
+ //husk = 64
+
+ var/voice_name = "unidentifiable voice"
+ var/voice_message = null // When you are not understood by others (replaced with just screeches, hisses, chimpers etc.)
+ var/say_message = null // When you are understood by others. Currently only used by aliens and monkeys in their say_quote procs
+
+//Generic list for proc holders. Only way I can see to enable certain verbs/procs. Should be modified if needed.
+ var/proc_holder_list[] = list()//Right now unused.
+ //Also unlike the spell list, this would only store the object in contents, not an object in itself.
+
+ /* Add this line to whatever stat module you need in order to use the proc holder list.
+ Unlike the object spell system, it's also possible to attach verb procs from these objects to right-click menus.
+ This requires creating a verb for the object proc holder.
+
+ if (proc_holder_list.len)//Generic list for proc_holder objects.
+ for(var/obj/effect/proc_holder/P in proc_holder_list)
+ statpanel("[P.panel]","",P)
+ */
+
+//The last mob/living/carbon to push/drag/grab this mob (mostly used by Metroids friend recognition)
+ var/mob/living/carbon/LAssailant = null
+
+//Wizard mode, but can be used in other modes thanks to the brand new "Give Spell" badmin button
+ var/obj/effect/proc_holder/spell/list/spell_list = list()
+
+//Changlings, but can be used in other modes
+ var/obj/effect/proc_holder/changpower/list/power_list = list()
+
+//List of active diseases
+
+ var/viruses = list() // replaces var/datum/disease/virus
+
+//Monkey/infected mode
+ var/list/resistances = list()
+ var/datum/disease/virus = null
+
+ mouse_drag_pointer = MOUSE_ACTIVE_POINTER
+
+/*
+//Changeling mode stuff//Carbon
+ var/changeling_level = 0
+ var/list/absorbed_dna = list()
+ var/changeling_fakedeath = 0
+ var/chem_charges = 20.00
+ var/sting_range = 1
+*/
+ var/datum/changeling/changeling = null
+
+ var/universal_speak = 0 // Set to 1 to enable the mob to speak to everyone -- TLE
+ var/obj/control_object // Hacking in to control objects -- TLE
+
+ var/robot_talk_understand = 0
+ var/alien_talk_understand = 0
+ var/taj_talk_understand = 0
+ //You can guess what these are for. --SkyMarshal
+ var/list/atom/hallucinations = list()
+ var/halloss = 0
+ var/hallucination = 0
+
+// TG Porting Variables
+ var/canstun = 1 // determines if this mob can be stunned by things
+ var/canweaken = 1 // determines if this mob can be weakened/knocked down by things
+ var/nopush = 0 //Can they be shoved?
+
+ var/area/lastarea = null
+
+ var/digitalcamo = 0 // Can they be tracked by the AI?
+
+/*For ninjas and others. This variable is checked when a mob moves and I guess it was supposed to allow the mob to move
+through dense areas, such as walls. Setting density to 0 does the same thing. The difference here is that
+the mob is also allowed to move without any sort of restriction. For instance, in space or out of holder objects.*/
+//0 is off, 1 is normal, 2 is for ninjas.
+ var/incorporeal_move = 0
+
+
+ var/update_icon = 1 // Set to 0 if you want that the mob's icon doesn't update when it moves -- Skie
+ // This can be used if you want to change the icon on the fly and want it to stay
+
+ var/UI = 'screen1_old.dmi' // For changing the UI from preferences
+
+// var/obj/effect/organstructure/organStructure = null //for dem organs
+ var/list/organs = list( ) //List of organs.
+
+//Singularity wants you!
+ var/grav_delay = 0
+ var/being_strangled = 0
+
+/mob/proc/contract_disease(var/datum/disease/virus, var/skip_this = 0, var/force_species_check=1)
+// world << "Contract_disease called by [src] with virus [virus]"
+ if(stat >=2) return
+ if(virus.type in resistances)
+ if(prob(99.9)) return
+ resistances.Remove(virus.type)//the resistance is futile
+
+ for(var/datum/disease/D in viruses)
+ if(istype(D, virus.type))
+ return // two viruses of the same kind can't infect a body at once!!
+
+
+ if(force_species_check)
+ var/fail = 1
+ for(var/name in virus.affected_species)
+ var/mob_type = text2path("/mob/living/carbon/[lowertext(name)]")
+ if(mob_type && istype(src, mob_type))
+ fail = 0
+ break
+ if(fail) return
+
+ if(skip_this == 1)
+ //if(src.virus) < -- this used to replace the current disease. Not anymore!
+ //src.virus.cure(0)
+
+ var/datum/disease/v = new virus.type
+ src.viruses += v
+ v.affected_mob = src
+ v.strain_data = v.strain_data.Copy()
+ v.holder = src
+ if(prob(5))
+ v.carrier = 1
+ return
+
+ //if(src.virus) //
+ //return //
+
+
+/*
+ var/list/clothing_areas = list()
+ var/list/covers = list(UPPER_TORSO,LOWER_TORSO,LEGS,FEET,ARMS,HANDS)
+ for(var/Covers in covers)
+ clothing_areas[Covers] = list()
+
+ for(var/obj/item/clothing/Clothing in src)
+ if(Clothing)
+ for(var/Covers in covers)
+ if(Clothing&Covers)
+ clothing_areas[Covers] += Clothing
+
+*/
+ if(prob(15/virus.permeability_mod)) return //the power of immunity compels this disease!
+
+ var/obj/item/clothing/Cl = null
+ var/passed = 1
+
+ //chances to target this zone
+ var/head_ch
+ var/body_ch
+ var/hands_ch
+ var/feet_ch
+
+ switch(virus.spread_type)
+ if(CONTACT_HANDS)
+ head_ch = 0
+ body_ch = 0
+ hands_ch = 100
+ feet_ch = 0
+ if(CONTACT_FEET)
+ head_ch = 0
+ body_ch = 0
+ hands_ch = 0
+ feet_ch = 100
+ else
+ head_ch = 100
+ body_ch = 100
+ hands_ch = 25
+ feet_ch = 25
+
+
+ var/target_zone = pick(head_ch;1,body_ch;2,hands_ch;3,feet_ch;4)//1 - head, 2 - body, 3 - hands, 4- feet
+
+ if(istype(src, /mob/living/carbon/human))
+ var/mob/living/carbon/human/H = src
+
+ switch(target_zone)
+ if(1)
+ if(isobj(H.head))
+ Cl = H.head
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Head pass [passed]"
+ if(passed && isobj(H.wear_mask))
+ Cl = H.wear_mask
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Mask pass [passed]"
+ if(2)//arms and legs included
+ if(isobj(H.wear_suit))
+ Cl = H.wear_suit
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Suit pass [passed]"
+ if(passed && isobj(H.slot_w_uniform))
+ Cl = H.slot_w_uniform
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Uniform pass [passed]"
+ if(3)
+ if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&HANDS)
+ Cl = H.wear_suit
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Suit pass [passed]"
+
+ if(passed && isobj(H.gloves))
+ Cl = H.gloves
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Gloves pass [passed]"
+ if(4)
+ if(isobj(H.wear_suit) && H.wear_suit.body_parts_covered&FEET)
+ Cl = H.wear_suit
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Suit pass [passed]"
+
+ if(passed && isobj(H.shoes))
+ Cl = H.shoes
+ passed = prob(Cl.permeability_coefficient*100*virus.permeability_mod)
+// world << "Shoes pass [passed]"
+ else
+ src << "Something strange's going on, something's wrong."
+
+ /*if("feet")
+ if(H.shoes && istype(H.shoes, /obj/item/clothing/))
+ Cl = H.shoes
+ passed = prob(Cl.permeability_coefficient*100)
+ //
+ world << "Shoes pass [passed]"
+ */ //
+ else if(istype(src, /mob/living/carbon/monkey))
+ var/mob/living/carbon/monkey/M = src
+ switch(target_zone)
+ if(1)
+ if(M.wear_mask && isobj(M.wear_mask))
+ Cl = M.wear_mask
+ passed = prob(Cl.permeability_coefficient*100+virus.permeability_mod)
+ //world << "Mask pass [passed]"
+
+ if(passed && virus.spread_type == AIRBORNE && internals)
+ passed = (prob(50*virus.permeability_mod))
+
+ if(passed)
+ //world << "Infection in the mob [src]. YAY"
+
+
+/*
+ var/score = 0
+ if(istype(src, /mob/living/carbon/human))
+ if(src:gloves) score += 5
+ if(istype(src:wear_suit, /obj/item/clothing/suit/space)) score += 10
+ if(istype(src:wear_suit, /obj/item/clothing/suit/bio_suit)) score += 10
+ if(istype(src:head, /obj/item/clothing/head/helmet/space)) score += 5
+ if(istype(src:head, /obj/item/clothing/head/bio_hood)) score += 5
+ if(wear_mask)
+ score += 5
+ if((istype(src:wear_mask, /obj/item/clothing/mask) || istype(src:wear_mask, /obj/item/clothing/mask/surgical)) && !internal)
+ score += 5
+ if(internal)
+ score += 5
+ if(score > 20)
+ return
+ else if(score == 20 && prob(95))
+ return
+ else if(score >= 15 && prob(75))
+ return
+ else if(score >= 10 && prob(55))
+ return
+ else if(score >= 5 && prob(35))
+ return
+ else if(prob(15))
+ return
+ else*/
+ var/datum/disease/v = new virus.type
+ src.viruses += v
+ v.affected_mob = src
+ v.strain_data = v.strain_data.Copy()
+ v.holder = src
+ if(prob(5))
+ v.carrier = 1
+ return
+ return
+
+
+// ++++ROCKDTBEN++++ MOB PROCS
+
+/mob/proc/getBruteLoss()
+ return bruteloss
+
+/mob/proc/adjustBruteLoss(var/amount)
+ bruteloss = max(bruteloss + amount, 0)
+
+/mob/proc/getOxyLoss()
+ return oxyloss
+
+/mob/proc/adjustOxyLoss(var/amount)
+ oxyloss = max(oxyloss + amount, 0)
+
+/mob/proc/setOxyLoss(var/amount)
+ oxyloss = amount
+
+/mob/proc/getToxLoss()
+ return toxloss
+
+/mob/proc/adjustToxLoss(var/amount)
+ toxloss = max(toxloss + amount, 0)
+
+/mob/proc/setToxLoss(var/amount)
+ toxloss = amount
+
+/mob/proc/getFireLoss()
+ return fireloss
+
+/mob/proc/adjustFireLoss(var/amount)
+ fireloss = max(fireloss + amount, 0)
+
+/mob/proc/getCloneLoss()
+ return cloneloss
+
+/mob/proc/adjustCloneLoss(var/amount)
+ cloneloss = max(cloneloss + amount, 0)
+
+/mob/proc/setCloneLoss(var/amount)
+ cloneloss = amount
+
+/mob/proc/getBrainLoss()
+ return brainloss
+
+/mob/proc/adjustBrainLoss(var/amount)
+ brainloss = max(brainloss + amount, 0)
+
+/mob/proc/setBrainLoss(var/amount)
+ brainloss = amount
+
+// ++++ROCKDTBEN++++ MOB PROCS //END
+
diff --git a/code/modules/mob/screen.dm b/code/modules/mob/screen.dm
index 99c8cd0cbff..e4b74b739eb 100644
--- a/code/modules/mob/screen.dm
+++ b/code/modules/mob/screen.dm
@@ -389,28 +389,43 @@
if ((!( usr.stat ) && usr.canmove && !( usr.restrained() )))
if (usr.internal)
usr.internal = null
+ usr << "\blue No longer running on internals."
if (usr.internals)
usr.internals.icon_state = "internal0"
else
- if (!( istype(usr.wear_mask, /obj/item/clothing/mask) ))
- return
- else
- if (istype(usr.back, /obj/item/weapon/tank))
- usr.internal = usr.back
- else if (ishuman(usr) && istype(usr:s_store, /obj/item/weapon/tank))
- usr.internal = usr:s_store
- else if (ishuman(usr) && istype(usr:belt, /obj/item/weapon/tank))
- usr.internal = usr:belt
- else if (istype(usr.l_hand, /obj/item/weapon/tank))
- usr.internal = usr.l_hand
- else if (istype(usr.r_hand, /obj/item/weapon/tank))
- usr.internal = usr.r_hand
- if (usr.internal)
- //for(var/mob/M in viewers(usr, 1))
- // M.show_message(text("[] is now running on internals.", usr), 1)
- usr << "You are now running on internals."
- if (usr.internals)
- usr.internals.icon_state = "internal1"
+ if(ishuman(usr))
+ if (!( istype(usr.wear_mask, /obj/item/clothing/mask) ))
+ usr << "\red You are not wearing a mask"
+ return
+ else
+ if (istype(usr.back, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr.back] on your back."
+ usr.internal = usr.back
+ else if (ishuman(usr) && istype(usr:s_store, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr:s_store] on your [usr:wear_suit]."
+ usr.internal = usr:s_store
+ else if (ishuman(usr) && istype(usr:belt, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr:belt] on your belt."
+ usr.internal = usr:belt
+ else if (istype(usr:l_store, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr:l_store] in your left pocket."
+ usr.internal = usr:l_store
+ else if (istype(usr:r_store, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr:r_store] in your right pocket."
+ usr.internal = usr:r_store
+ else if (istype(usr.l_hand, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr.l_hand] on your left hand."
+ usr.internal = usr.l_hand
+ else if (istype(usr.r_hand, /obj/item/weapon/tank))
+ usr << "\blue You are now running on internals from the [usr.r_hand] on your right hand."
+ usr.internal = usr.r_hand
+ if (usr.internal)
+ //for(var/mob/M in viewers(usr, 1))
+ // M.show_message(text("[] is now running on internals.", usr), 1)
+ if (usr.internals)
+ usr.internals.icon_state = "internal1"
+ else
+ usr << "\blue You don't have an oxygen tank."
if("pull")
usr.pulling = null
if("sleep")
@@ -470,7 +485,7 @@
O.show_message(text("\red [] is trying to break the handcuffs!", usr), 1)
spawn(0)
if(do_after(usr, 50))
- if(!usr:handcuffed) return
+ if(!usr:handcuffed || usr:buckled) return
for(var/mob/O in viewers(usr))
O.show_message(text("\red [] manages to break the handcuffs!", usr), 1)
usr << "\green You successfully break your handcuffs."
@@ -546,7 +561,7 @@
for(var/mob/O in viewers(usr))
O.show_message(text("\red [] manages to unbuckle themself!", usr), 1)
usr << "\blue You successfully unbuckle yourself."
- usr:buckled.manual_unbuckle_all(usr)
+ usr:buckled.manual_unbuckle(usr)
if("module")
if(issilicon(usr))
if(usr:module)
diff --git a/code/modules/mob/simple_animal/constructs.dm b/code/modules/mob/simple_animal/constructs.dm
new file mode 100644
index 00000000000..e698f4b4745
--- /dev/null
+++ b/code/modules/mob/simple_animal/constructs.dm
@@ -0,0 +1,331 @@
+
+/////////////////Juggernaut///////////////
+
+/mob/living/simple_animal/constructarmoured
+ name = "Juggernaut"
+ desc = "A possessed suit of armour driven by the will of the restless dead"
+ icon = 'mob.dmi'
+ icon_state = "armour"
+ icon_living = "armour"
+ icon_dead = "shade_dead"
+ maxHealth = 250
+ health = 250
+ speak_emote = list("hisses")
+ emote_hear = list("wails","screeches")
+ response_help = "thinks better of touching"
+ response_disarm = "flails at"
+ response_harm = "harmlessly punches the"
+ harm_intent_damage = 0
+ melee_damage_lower = 30
+ melee_damage_upper = 30
+ attacktext = "smashes their armoured gauntlet into"
+ minbodytemp = 0
+ maxbodytemp = 4000
+ min_oxy = 0
+ max_co2 = 0
+ max_tox = 0
+ speed = 3
+ wall_smash = 1
+ nopush = 1
+ a_intent = "harm"
+ stop_automated_movement = 1
+ canstun = 0
+ canweaken = 0
+
+
+ Life()
+ ..()
+ if(stat == 2)
+ new /obj/item/weapon/ectoplasm (src.loc)
+ for(var/mob/M in viewers(src, null))
+ if((M.client && !( M.blinded )))
+ M.show_message("\red [src] collapses in a shattered heap ")
+ ghostize(0)
+ del src
+ return
+
+/mob/living/simple_animal/constructarmoured/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(O.force)
+ if(O.force >= 11)
+ health -= O.force
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("\red \b [src] has been attacked with the [O] by [user]. ")
+ else
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("\red \b The [O] bounces harmlessly off of [src]. ")
+ else
+ usr << "\red This weapon is ineffective, it does no damage."
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("\red [user] gently taps [src] with the [O]. ")
+
+
+/mob/living/simple_animal/constructarmoured/Bump(atom/movable/AM as mob|obj, yes)
+
+ spawn( 0 )
+ if ((!( yes ) || now_pushing))
+ return
+ now_pushing = 1
+ if(ismob(AM))
+ var/mob/tmob = AM
+ if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
+ if(prob(5))
+ src << "\red You fail to push [tmob]'s fat ass out of the way."
+ now_pushing = 0
+ return
+ if(tmob.nopush)
+ now_pushing = 0
+ return
+
+ tmob.LAssailant = src
+ now_pushing = 0
+ ..()
+ if (!( istype(AM, /atom/movable) ))
+ return
+ if (!( now_pushing ))
+ now_pushing = 1
+ if (!( AM.anchored ))
+ var/t = get_dir(src, AM)
+ if (istype(AM, /obj/structure/window))
+ if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST)
+ for(var/obj/structure/window/win in get_step(AM,t))
+ now_pushing = 0
+ return
+ step(AM, t)
+ now_pushing = null
+ return
+ return
+
+
+/mob/living/simple_animal/constructarmoured/attack_animal(mob/living/simple_animal/M as mob)
+ if(istype(M, /mob/living/simple_animal/constructbuilder))
+ health += 10
+ M.emote("mends some of \the [src]'s wounds")
+ else
+ if(M.melee_damage_upper <= 0)
+ M.emote("[M.friendly] \the [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\The [M] [M.attacktext] \the [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ health -= damage
+
+
+
+
+/mob/living/simple_animal/constructarmoured/examine()
+ set src in oview()
+
+ var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
+ if (src.health < src.maxHealth)
+ msg += ""
+ if (src.health >= src.maxHealth/2)
+ msg += "It looks slightly dented.\n"
+ else
+ msg += "It looks severely dented!\n"
+ msg += ""
+ msg += "*---------*"
+
+ usr << msg
+ return
+
+////////////////////////Wraith/////////////////////////////////////////////
+
+
+
+/mob/living/simple_animal/constructwraith
+ name = "Wraith"
+ desc = "A wicked bladed shell contraption piloted by a bound spirit"
+ icon = 'mob.dmi'
+ icon_state = "floating"
+ icon_living = "floating"
+ icon_dead = "shade_dead"
+ maxHealth = 75
+ health = 75
+ speak_emote = list("hisses")
+ emote_hear = list("wails","screeches")
+ response_help = "thinks better of touching"
+ response_disarm = "flails at"
+ response_harm = "punches the"
+ melee_damage_lower = 25
+ melee_damage_upper = 25
+ attacktext = "slashes"
+ minbodytemp = 0
+ maxbodytemp = 4000
+ min_oxy = 0
+ max_co2 = 0
+ max_tox = 0
+ speed = -1
+ a_intent = "harm"
+ stop_automated_movement = 1
+ canstun = 0
+ canweaken = 0
+ see_in_dark = 7
+
+ Life()
+ ..()
+ if(stat == 2)
+ new /obj/item/weapon/ectoplasm (src.loc)
+ for(var/mob/M in viewers(src, null))
+ if((M.client && !( M.blinded )))
+ M.show_message("\red [src] collapses in a shattered heap ")
+ ghostize(0)
+ del src
+ return
+
+
+/mob/living/simple_animal/constructwraith/attackby(var/obj/item/O as obj, var/mob/user as mob)
+ if(O.force)
+ health -= O.force
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("\red \b [src] has been attacked with the [O] by [user]. ")
+ else
+ usr << "\red This weapon is ineffective, it does no damage."
+ for(var/mob/M in viewers(src, null))
+ if ((M.client && !( M.blinded )))
+ M.show_message("\red [user] gently taps [src] with the [O]. ")
+
+/mob/living/simple_animal/constructwraith/Bump(atom/movable/AM as mob|obj, yes)
+
+ spawn( 0 )
+ if ((!( yes ) || now_pushing))
+ return
+ now_pushing = 1
+ if(ismob(AM))
+ var/mob/tmob = AM
+ if(istype(tmob, /mob/living/carbon/human) && tmob.mutations & FAT)
+ if(prob(50))
+ src << "\red You fail to push [tmob]'s fat ass out of the way."
+ now_pushing = 0
+ return
+ if(tmob.nopush)
+ now_pushing = 0
+ return
+
+ tmob.LAssailant = src
+ now_pushing = 0
+ ..()
+ if (!( istype(AM, /atom/movable) ))
+ return
+ if (!( now_pushing ))
+ now_pushing = 1
+ if (!( AM.anchored ))
+ var/t = get_dir(src, AM)
+ if (istype(AM, /obj/structure/window))
+ if(AM:ini_dir == NORTHWEST || AM:ini_dir == NORTHEAST || AM:ini_dir == SOUTHWEST || AM:ini_dir == SOUTHEAST)
+ for(var/obj/structure/window/win in get_step(AM,t))
+ now_pushing = 0
+ return
+ step(AM, t)
+ now_pushing = null
+ return
+ return
+
+/mob/living/simple_animal/constructwraith/attack_animal(mob/living/simple_animal/M as mob)
+ if(istype(M, /mob/living/simple_animal/constructbuilder))
+ health += 10
+ M.emote("mends some of \the [src]'s wounds")
+ else
+ if(M.melee_damage_upper <= 0)
+ M.emote("[M.friendly] \the [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\The [M] [M.attacktext] \the [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ health -= damage
+
+
+
+/mob/living/simple_animal/constructwraith/examine()
+ set src in oview()
+
+ var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
+ if (src.health < src.maxHealth)
+ msg += ""
+ if (src.health >= src.maxHealth/2)
+ msg += "It looks slightly dented.\n"
+ else
+ msg += "It looks severely dented!\n"
+ msg += ""
+ msg += "*---------*"
+
+ usr << msg
+ return
+
+
+
+/////////////////////////////Artificer/////////////////////////
+
+/mob/living/simple_animal/constructbuilder
+ name = "Artificer"
+ desc = "A bulbous construct dedicated to building and maintaining The Cult of Nar-Sie's armies"
+ icon = 'mob.dmi'
+ icon_state = "artificer"
+ icon_living = "artificer"
+ icon_dead = "shade_dead"
+ maxHealth = 50
+ health = 50
+ speak_emote = list("hisses")
+ emote_hear = list("wails","screeches")
+ response_help = "thinks better of touching"
+ response_disarm = "flails at"
+ response_harm = "viciously beats"
+ harm_intent_damage = 5
+ melee_damage_lower = 5
+ melee_damage_upper = 5
+ attacktext = "rams"
+ minbodytemp = 0
+ maxbodytemp = 4000
+ min_oxy = 0
+ max_co2 = 0
+ max_tox = 0
+ speed = 0
+ wall_smash = 1
+ nopush = 1
+ a_intent = "harm"
+ stop_automated_movement = 1
+ canstun = 0
+ canweaken = 0
+
+ Life()
+ ..()
+ if(stat == 2)
+ new /obj/item/weapon/ectoplasm (src.loc)
+ for(var/mob/M in viewers(src, null))
+ if((M.client && !( M.blinded )))
+ M.show_message("\red [src] collapses in a shattered heap ")
+ ghostize(0)
+ del src
+ return
+
+/mob/living/simple_animal/constructbuilder/attack_animal(mob/living/simple_animal/M as mob)
+ if(istype(M, /mob/living/simple_animal/constructbuilder))
+ health += 5
+ M.emote("mends some of \the [src]'s wounds")
+ else
+ if(M.melee_damage_upper <= 0)
+ M.emote("[M.friendly] \the [src]")
+ else
+ for(var/mob/O in viewers(src, null))
+ O.show_message("\The [M] [M.attacktext] \the [src]!", 1)
+ var/damage = rand(M.melee_damage_lower, M.melee_damage_upper)
+ health -= damage
+
+/mob/living/simple_animal/constructbuilder/examine()
+ set src in oview()
+
+ var/msg = "*---------*\nThis is \icon[src] \a [src]!\n"
+ if (src.health < src.maxHealth)
+ msg += ""
+ if (src.health >= src.maxHealth/2)
+ msg += "It looks slightly dented.\n"
+ else
+ msg += "It looks severely dented!\n"
+ msg += ""
+ msg += "*---------*"
+
+ usr << msg
+ return
\ No newline at end of file
diff --git a/code/setup.dm b/code/setup.dm
index 81d1f959e9d..b514ae203c8 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -18,6 +18,17 @@
#define HUMAN_NEEDED_OXYGEN MOLES_CELLSTANDARD*BREATH_PERCENTAGE*0.16
//Amount of air needed before pass out/suffocation commences
+// Pressure limits.
+#define HAZARD_HIGH_PRESSURE 750
+#define HIGH_STEP_PRESSURE HAZARD_HIGH_PRESSURE/2
+#define WARNING_HIGH_PRESSURE HAZARD_HIGH_PRESSURE*0.7
+#define HAZARD_LOW_PRESSURE 20
+#define WARNING_LOW_PRESSURE HAZARD_LOW_PRESSURE*2.5
+#define MAX_PRESSURE_DAMAGE 20
+
+// Doors!
+#define DOOR_CRUSH_DAMAGE 10
+
// Factor of how fast mob nutrition decreases
#define HUNGER_FACTOR 0.1
#define REAGENTS_METABOLISM 0.05
@@ -72,7 +83,10 @@
#define TANK_FRAGMENT_PRESSURE (50.*ONE_ATMOSPHERE) // Boom 3x3 base explosion
#define TANK_FRAGMENT_SCALE (10.*ONE_ATMOSPHERE) // +1 for each SCALE kPa aboe threshold
// was 2 atm
-#define MAX_EXPLOSION_RANGE 14 // Defaults to 12 (was 8) -- TLE
+
+//This was a define, but I changed it to a variable so it can be changed in-game.(kept the all-caps definition because... code...) -Errorage
+var/MAX_EXPLOSION_RANGE = 14
+//#define MAX_EXPLOSION_RANGE 14 // Defaults to 12 (was 8) -- TLE
#define NORMPIPERATE 30 //pipe-insulation rate divisor
@@ -131,6 +145,17 @@
//Cant seem to find a mob bitflags area other than the powers one
#define NOGRAV 1
+//Bit flags for the flags_inv variable, which determine when a piece of clothing hides another. IE a helmet hiding glasses.
+#define HIDEGLOVES 1 //APPLIES ONLY TO THE EXTERIOR SUIT!!
+#define HIDESUITSTORAGE 2 //APPLIES ONLY TO THE EXTERIOR SUIT!!
+#define HIDEJUMPSUIT 4 //APPLIES ONLY TO THE EXTERIOR SUIT!!
+#define HIDESHOES 8 //APPLIES ONLY TO THE EXTERIOR SUIT!!
+#define HIDEMASK 1 //APPLIES ONLY TO HELMETS!!
+#define HIDEEARS 2 //APPLIES ONLY TO HELMETS!!
+#define HIDEEYES 4 //APPLIES ONLY TO HELMETS!!
+
+
+//Cant seem to find a mob bitflags area other than the powers one
// bitflags for clothing parts
#define HEAD 1
@@ -174,6 +199,7 @@ var/const
mFingerprints =(1<<1)
mShock =(1<<2)
mSmallsize =(1<<3)
+ NOCLONE =(1<<4)
//mob/var/stat things
var/const
@@ -194,6 +220,13 @@ var/const
#define MAINT 8 // under maintaince
#define EMPED 16 // temporary broken by EMP pulse
+//bitflags for door switches.
+#define OPEN 1
+#define IDSCAN 2
+#define BOLTS 4
+#define SHOCK 8
+#define SAFE 16
+
#define ENGINE_EJECT_Z 3
//metal, glass, rod stacks
@@ -229,6 +262,7 @@ var/list/global_mutations = list() // list of hidden mutation things
#define TOX "tox"
#define OXY "oxy"
#define CLONE "clone"
+#define HALLOSS "halloss"
#define STUN "stun"
#define WEAKEN "weaken"
@@ -245,4 +279,4 @@ var/static/list/scarySounds = list('thudswoosh.ogg','Taser.ogg','armbomb.ogg','h
#define SEC_LEVEL_GREEN 0
#define SEC_LEVEL_BLUE 1
#define SEC_LEVEL_RED 2
-#define SEC_LEVEL_DELTA 3
+#define SEC_LEVEL_DELTA 3
\ No newline at end of file
diff --git a/icons/mob/mob.dmi b/icons/mob/mob.dmi
index 24f8f5276cf..01345217876 100644
Binary files a/icons/mob/mob.dmi and b/icons/mob/mob.dmi differ
diff --git a/icons/mob/screen1.dmi b/icons/mob/screen1.dmi
index 16e6b814c31..b3a330e691d 100644
Binary files a/icons/mob/screen1.dmi and b/icons/mob/screen1.dmi differ
diff --git a/icons/mob/screen1_old.dmi b/icons/mob/screen1_old.dmi
index 1918ebce9fe..9e14930b16e 100644
Binary files a/icons/mob/screen1_old.dmi and b/icons/mob/screen1_old.dmi differ
diff --git a/icons/obj/dice.dmi b/icons/obj/dice.dmi
new file mode 100644
index 00000000000..669ad215c5c
Binary files /dev/null and b/icons/obj/dice.dmi differ
diff --git a/icons/obj/monitors.dmi b/icons/obj/monitors.dmi
index cf0a91bed17..094bd162d1a 100644
Binary files a/icons/obj/monitors.dmi and b/icons/obj/monitors.dmi differ
diff --git a/icons/obj/objects.dmi b/icons/obj/objects.dmi
index 28e0bd88ef9..947d1f403ba 100644
Binary files a/icons/obj/objects.dmi and b/icons/obj/objects.dmi differ
diff --git a/icons/obj/syringefilling.dmi b/icons/obj/syringefilling.dmi
new file mode 100644
index 00000000000..5fbf001d265
Binary files /dev/null and b/icons/obj/syringefilling.dmi differ
diff --git a/maps/tgstation.2.0.8.dmm b/maps/tgstation.2.0.8.dmm
index a46a044c264..467a17f9704 100755
--- a/maps/tgstation.2.0.8.dmm
+++ b/maps/tgstation.2.0.8.dmm
@@ -105,9 +105,9 @@
"aca" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/warden{name = "Armory"})
"acb" = (/obj/structure/closet/wardrobe/hos,/turf/simulated/floor{dir = 8; icon_state = "carpetside"},/area/security/hos)
"acc" = (/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
-"acd" = (/obj/structure/stool/chair{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
+"acd" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
"ace" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{icon_state = "carpet"},/area/security/hos)
-"acf" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
+"acf" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Head of Security"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
"acg" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/security/hos)
"ach" = (/obj/machinery/camera{c_tag = "Head Security's Office"; dir = 8; network = "Security"},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/keycard_auth{pixel_x = 25},/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/security/hos)
"aci" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/security/main)
@@ -186,8 +186,8 @@
"adD" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/glass/glass_security{name = "Security"; req_access_txt = "1"},/turf/simulated/floor,/area/security/main)
"adE" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/main)
"adF" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/main)
-"adG" = (/obj/structure/stool/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/security/main)
-"adH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/stool/chair,/turf/simulated/floor,/area/security/main)
+"adG" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/security/main)
+"adH" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/security/main)
"adI" = (/obj/machinery/atmospherics/pipe/manifold/supply/hidden,/turf/simulated/floor,/area/security/main)
"adJ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/main)
"adK" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor,/area/security/main)
@@ -211,19 +211,19 @@
"aec" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/brig)
"aed" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/brig)
"aee" = (/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/cable,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/security/main)
-"aef" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/security/main)
+"aef" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/security/main)
"aeg" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor,/area/security/main)
"aeh" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
"aei" = (/obj/structure/table,/obj/item/clothing/glasses/sunglasses,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
-"aej" = (/obj/structure/stool/chair{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
+"aej" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
"aek" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
"ael" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor,/area/security/main)
"aem" = (/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = list()},/turf/simulated/floor,/area/security/main)
"aen" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light{dir = 4},/obj/machinery/vending/snack,/turf/simulated/floor,/area/security/main)
"aeo" = (/obj/structure/closet/secure_closet/courtroom,/turf/simulated/floor,/area/crew_quarters/courtroom)
-"aep" = (/obj/machinery/light{dir = 1},/obj/structure/stool/chair,/turf/simulated/floor,/area/crew_quarters/courtroom)
+"aep" = (/obj/machinery/light{dir = 1},/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/crew_quarters/courtroom)
"aeq" = (/obj/structure/table/woodentable,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/crew_quarters/courtroom)
-"aer" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/crew_quarters/courtroom)
+"aer" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/crew_quarters/courtroom)
"aes" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/crew_quarters/courtroom)
"aet" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom)
"aeu" = (/obj/item/device/radio/intercom{broadcasting = 0; listening = 1; name = "Station Intercom (General)"; pixel_y = 20},/obj/machinery/camera{c_tag = "Courtroom North"},/turf/simulated/floor,/area/crew_quarters/courtroom)
@@ -243,7 +243,7 @@
"aeI" = (/obj/structure/table,/turf/simulated/floor,/area/security/main)
"aeJ" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/security/main)
"aeK" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/security/main)
-"aeL" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor,/area/security/main)
+"aeL" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/security/main)
"aeM" = (/obj/machinery/camera{c_tag = "HQ East"; dir = 1; network = "Security"},/turf/simulated/floor,/area/security/main)
"aeN" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/security/main)
"aeO" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/security/main)
@@ -251,7 +251,7 @@
"aeQ" = (/obj/structure/table/woodentable,/obj/item/weapon/paper/Court,/turf/simulated/floor,/area/crew_quarters/courtroom)
"aeR" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/crew_quarters/courtroom)
"aeS" = (/obj/structure/table/woodentable,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = 0},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"aeT" = (/obj/structure/stool/chair{name = "Witness"},/obj/machinery/door/window/northleft{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom)
+"aeT" = (/obj/structure/stool/bed/chair{name = "Witness"},/obj/machinery/door/window/northleft{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom)
"aeU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/wall,/area/crew_quarters/courtroom)
"aeV" = (/obj/item/weapon/cigbutt,/obj/structure/disposalpipe/segment,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aeW" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -281,23 +281,23 @@
"afu" = (/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor{icon_state = "dark"},/area/security/warden)
"afv" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating,/area/security/warden)
"afw" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/pen,/obj/item/weapon/book/manual/security_space_law,/obj/item/weapon/clipboard,/obj/item/weapon/paper{info = "5 Deployable Barriers
4 Portable Flashers + Wrench
1 Set of Riot Armor
1 Bulletproof Vest
1 Ablative Vest
2 Bomb Suits
1 Biohazard Suit
1 Chemical Implant Kit
1 Tracking Implant Kit
1 Loyalty Implant Kit
1 Box of Spare Handcuffs
2 Empty Lockboxes
3 Riot shields
3 Helmets
3 Armor Vests
1 Ion Rifle
2 Stun Batons
3 Energy Guns
3 Laser Rifles
3 Gas Masks"; name = "Armoury Inventory"},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
-"afx" = (/obj/structure/stool/chair{dir = 2},/obj/effect/landmark/start{name = "Warden"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
+"afx" = (/obj/structure/stool/bed/chair{dir = 2},/obj/effect/landmark/start{name = "Warden"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"afy" = (/obj/structure/table,/obj/machinery/door_control{id = "armory"; name = "Armory Access"; pixel_x = -2; pixel_y = 2; req_access_txt = ""},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"afz" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "showroomfloor"},/area/security/warden)
"afA" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/cable,/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/warden)
"afB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/cable,/obj/structure/cable{icon_state = "0-2"; pixel_y = 1; d2 = 2},/turf/simulated/floor,/area/security/main)
-"afC" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/security/main)
+"afC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/security/main)
"afD" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/courtroom)
"afE" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/courtroom)
"afF" = (/obj/machinery/flasher{id = "Cell 4"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/courtroom)
"afG" = (/obj/machinery/light/small{dir = 1},/obj/structure/closet/secure_closet/brig{id = "Courtroom"; name = "Courtroom Holding Cell Locker"},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/machinery/camera{c_tag = "Courtroom Holding Cell"; dir = 8; network = "Security"},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/courtroom)
"afH" = (/obj/machinery/door/window/southleft{dir = 1; name = "Security"; req_access_txt = "1"},/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; listening = 0; name = "Station Intercom (Court)"; pixel_x = -28},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
-"afI" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/crew_quarters/courtroom)
+"afI" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 5; icon_state = "blue"},/area/crew_quarters/courtroom)
"afJ" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 9},/area/crew_quarters/courtroom)
"afK" = (/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom)
"afL" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "neutral"; dir = 1},/area/crew_quarters/courtroom)
"afM" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 5},/area/crew_quarters/courtroom)
-"afN" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/crew_quarters/courtroom)
+"afN" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/crew_quarters/courtroom)
"afO" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"afP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"afQ" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/cable,/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/warden)
@@ -323,13 +323,13 @@
"agk" = (/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/courtroom)
"agl" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/crew_quarters/courtroom)
"agm" = (/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"agn" = (/obj/structure/stool/chair{dir = 4},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
-"ago" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/crew_quarters/courtroom)
+"agn" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/courtroom)
+"ago" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 6},/area/crew_quarters/courtroom)
"agp" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 10},/area/crew_quarters/courtroom)
"agq" = (/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/courtroom)
"agr" = (/obj/item/device/radio/beacon,/turf/simulated/floor{icon_state = "neutral"},/area/crew_quarters/courtroom)
"ags" = (/obj/structure/table/woodentable,/turf/simulated/floor{icon_state = "neutral"; dir = 6},/area/crew_quarters/courtroom)
-"agt" = (/obj/structure/stool/chair{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/crew_quarters/courtroom)
+"agt" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "red"; dir = 10},/area/crew_quarters/courtroom)
"agu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/wall,/area/crew_quarters/courtroom)
"agv" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"agw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -366,11 +366,11 @@
"ahb" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahc" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ahd" = (/turf/simulated/wall/r_wall,/area/security/brig)
-"ahe" = (/obj/structure/stool/chair,/obj/machinery/camera{c_tag = "Interrogation"; dir = 4; network = "Security"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
-"ahf" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
+"ahe" = (/obj/structure/stool/bed/chair,/obj/machinery/camera{c_tag = "Interrogation"; dir = 4; network = "Security"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
+"ahf" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"ahg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"ahh" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/window/reinforced,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable,/turf/simulated/floor/plating,/area/security/brig)
-"ahi" = (/obj/structure/stool/chair{dir = 8},/obj/item/device/radio/intercom{frequency = 1442; layer = 4; name = "Intercom"; pixel_y = 20},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/security/brig)
+"ahi" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/device/radio/intercom{frequency = 1442; layer = 4; name = "Intercom"; pixel_y = 20},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor,/area/security/brig)
"ahj" = (/obj/machinery/vending/security,/turf/simulated/floor,/area/security/brig)
"ahk" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/security/brig)
"ahl" = (/obj/machinery/vending/coffee,/turf/simulated/floor,/area/security/brig)
@@ -390,9 +390,9 @@
"ahz" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/wall/r_wall,/area/crew_quarters/courtroom)
"ahA" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/wall/r_wall,/area/crew_quarters/courtroom)
"ahB" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"ahC" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"ahD" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom)
-"ahE" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/crew_quarters/courtroom)
+"ahC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/courtroom)
+"ahD" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/crew_quarters/courtroom)
+"ahE" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor,/area/crew_quarters/courtroom)
"ahF" = (/turf/simulated/wall,/area/crew_quarters/courtroom)
"ahG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{req_access_txt = 1},/turf/simulated/wall,/area/maintenance/fsmaint)
"ahH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/security/brig)
@@ -420,18 +420,18 @@
"aid" = (/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"aie" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/courtroom)
"aif" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"aig" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/crew_quarters/courtroom)
+"aig" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/crew_quarters/courtroom)
"aih" = (/obj/machinery/atmospherics/binary/pump{dir = 1; icon_state = "intact_on"; name = "Distribution Pipe"; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHWEST)"; icon_state = "warnplate"; dir = 9},/area/maintenance/fsmaint)
"aii" = (/obj/structure/stool,/obj/machinery/light/small{dir = 4},/turf/simulated/floor/plating{tag = "icon-warnplate (NORTHEAST)"; icon_state = "warnplate"; dir = 5},/area/maintenance/fsmaint)
"aij" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aik" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"ail" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aim" = (/obj/structure/grille{density = 0; icon_state = "brokengrille"},/obj/structure/lattice,/turf/space,/area)
-"ain" = (/obj/structure/stool/chair{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; dir = 0; frequency = 1442; listening = 0; name = "Intercom"; pixel_x = -27},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
-"aio" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
+"ain" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{broadcasting = 1; dir = 0; frequency = 1442; listening = 0; name = "Intercom"; pixel_x = -27},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
+"aio" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"aip" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"aiq" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/structure/window/reinforced{dir = 1},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/obj/structure/cable,/turf/simulated/floor/plating,/area/security/brig)
-"air" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/brig)
+"air" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/security/brig)
"ais" = (/obj/machinery/light{dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/security/brig)
"ait" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/security/brig)
"aiu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/brig)
@@ -448,7 +448,7 @@
"aiF" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/hallway/primary/fore)
"aiG" = (/turf/simulated/floor,/area/hallway/primary/fore)
"aiH" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/window/northleft{base_state = "right"; dir = 4; icon_state = "right"},/turf/simulated/floor,/area/crew_quarters/courtroom)
-"aiI" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/camera{c_tag = "Courtroom South"; dir = 8; network = "SS13"},/turf/simulated/floor,/area/crew_quarters/courtroom)
+"aiI" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/camera{c_tag = "Courtroom South"; dir = 8; network = "SS13"},/turf/simulated/floor,/area/crew_quarters/courtroom)
"aiJ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/maintenance/fsmaint)
"aiK" = (/obj/machinery/atmospherics/binary/pump{dir = 8; icon_state = "intact_on"; name = "Air In"; on = 1},/turf/simulated/floor/plating{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/maintenance/fsmaint)
"aiL" = (/obj/machinery/door/airlock/maintenance{name = "Atmospherics Maintenance"; req_access_txt = "12;24"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -492,10 +492,10 @@
"ajx" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"ajy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "dark"},/area/security/brig)
"ajz" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor/plating,/area/security/brig)
-"ajA" = (/obj/structure/stool/chair{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
+"ajA" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
"ajB" = (/obj/structure/table,/obj/item/kitchen/donut_box,/turf/simulated/floor,/area/security/brig)
"ajC" = (/obj/structure/table,/obj/item/weapon/handcuffs,/obj/machinery/atmospherics/unary/vent_pump{dir = 4; layer = 2.4; on = 1},/turf/simulated/floor,/area/security/brig)
-"ajD" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = -1},/turf/simulated/floor,/area/security/brig)
+"ajD" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = -1},/turf/simulated/floor,/area/security/brig)
"ajE" = (/obj/machinery/flasher{id = "Cell 2"; pixel_x = 0; pixel_y = 24},/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig)
"ajF" = (/obj/structure/closet/secure_closet/brig{id = "Cell 2"; name = "Cell 2 Locker"},/obj/machinery/light/small{dir = 1},/obj/machinery/camera{c_tag = "Brig Cell 2"; dir = 8; network = "Security"},/turf/simulated/floor{icon_state = "floorgrime"},/area/security/brig)
"ajG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/wall,/area/crew_quarters)
@@ -515,7 +515,7 @@
"ajU" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = -1},/turf/simulated/floor,/area/security/brig)
"ajV" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/obj/item/clothing/glasses/sunglasses,/turf/simulated/floor,/area/security/brig)
"ajW" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor,/area/security/brig)
-"ajX" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
+"ajX" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Security Officer"},/turf/simulated/floor,/area/security/brig)
"ajY" = (/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Secure Gate"; name = "Security Blast Door"; opacity = 0},/obj/machinery/door/window/brigdoor{dir = 4; icon_state = "left"; id = "Cell 2"; name = "Cell 2"; req_access_txt = "1"; tag = "icon-left (EAST)"},/turf/simulated/floor,/area/security/brig)
"ajZ" = (/turf/simulated/wall,/area/crew_quarters)
"aka" = (/obj/structure/stool{pixel_y = 8},/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/obj/machinery/atmospherics/unary/vent_pump{dir = 2; on = 1},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/crew_quarters)
@@ -638,7 +638,7 @@
"amn" = (/obj/machinery/power/apc{dir = 1; name = "Detective APC"; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/table/woodentable,/obj/effect/deskclutter,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"amo" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/table/woodentable,/obj/machinery/light/lamp/green{pixel_x = 1; pixel_y = 5},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"amp" = (/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
-"amq" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
+"amq" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"amr" = (/obj/machinery/light/small{dir = 4},/obj/structure/closet/detective,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"ams" = (/turf/simulated/wall,/area/lawoffice)
"amt" = (/obj/machinery/light_switch{pixel_x = -20; pixel_y = 0},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
@@ -671,14 +671,14 @@
"amU" = (/turf/simulated/wall,/area/maintenance/fpmaint)
"amV" = (/turf/simulated/floor/plating,/area/maintenance/fpmaint)
"amW" = (/obj/machinery/light/small{dir = 8},/obj/machinery/computer/security/wooden_tv,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
-"amX" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/security/detectives_office)
+"amX" = (/obj/effect/landmark/start{name = "Detective"},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/security/detectives_office)
"amY" = (/obj/structure/table/woodentable,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/security/detectives_office)
"amZ" = (/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/security/detectives_office)
-"ana" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/security/detectives_office)
+"ana" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/security/detectives_office)
"anb" = (/turf/simulated/floor{dir = 5; icon_state = "carpetside"},/area/security/detectives_office)
"anc" = (/obj/machinery/coatrack,/obj/machinery/light_switch{pixel_x = 20; pixel_y = 0},/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"and" = (/obj/structure/closet/secure_closet/lawyer_personal,/obj/machinery/firealarm{dir = 4; pixel_x = -24},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
-"ane" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
+"ane" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"anf" = (/obj/structure/table/woodentable,/obj/effect/deskclutter,/obj/item/weapon/book/manual/security_space_law,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"ang" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"anh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/lawoffice)
@@ -708,9 +708,9 @@
"anF" = (/turf/simulated/floor{dir = 6; icon_state = "carpetside"},/area/security/detectives_office)
"anG" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/obj/structure/rack{dir = 8; layer = 2.9},/obj/item/weapon/storage/briefcase,/turf/simulated/floor{icon_state = "grimy"},/area/security/detectives_office)
"anH" = (/obj/machinery/copier,/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
-"anI" = (/obj/structure/stool/chair{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
+"anI" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"anJ" = (/obj/structure/table/woodentable,/obj/machinery/light/lamp/green{pixel_x = 1; pixel_y = 5},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
-"anK" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Lawyer"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
+"anK" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Lawyer"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"anL" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/lawoffice)
"anM" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/turf/simulated/floor{icon_state = "redcorner"; dir = 4},/area/hallway/primary/fore)
"anN" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -732,7 +732,7 @@
"aod" = (/obj/machinery/camera{c_tag = "Fitness Room"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor,/area/crew_quarters/fitness)
"aoe" = (/obj/structure/closet,/turf/simulated/floor,/area/crew_quarters/fitness)
"aof" = (/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
-"aog" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aog" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/crew_quarters/fitness)
"aoh" = (/turf/simulated/wall,/area/maintenance/fpmaint2)
"aoi" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
"aoj" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -747,7 +747,7 @@
"aos" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/table,/obj/structure/window/reinforced{dir = 1},/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/security/detectives_office)
"aot" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"aou" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
-"aov" = (/obj/structure/stool/chair,/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
+"aov" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Lawyer"},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"aow" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "wood"},/area/lawoffice)
"aox" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/lawoffice)
"aoy" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/crew_quarters)
@@ -842,7 +842,7 @@
"aqj" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness)
"aqk" = (/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/crew_quarters/fitness)
"aql" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/fitness)
-"aqm" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness)
+"aqm" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/crew_quarters/fitness)
"aqn" = (/obj/structure/table/woodentable,/turf/simulated/floor,/area/crew_quarters/fitness)
"aqo" = (/obj/structure/table/woodentable,/obj/item/weapon/reagent_containers/food/drinks/cola,/turf/simulated/floor,/area/crew_quarters/fitness)
"aqp" = (/obj/machinery/door/airlock/maintenance{req_access_txt = "12"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -1003,8 +1003,8 @@
"ato" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/crew_quarters/fitness)
"atp" = (/obj/machinery/light,/turf/simulated/floor,/area/crew_quarters/fitness)
"atq" = (/obj/machinery/camera{c_tag = "Fitness Room South"; dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
-"atr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
-"ats" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
+"atr" = (/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
+"ats" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/crew_quarters/fitness)
"att" = (/obj/structure/stool{pixel_y = 8},/turf/simulated/floor,/area/crew_quarters/fitness)
"atu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
"atv" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/auxsolarstarboard)
@@ -1192,7 +1192,7 @@
"awV" = (/obj/structure/closet/wardrobe/red,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 8},/area/security/checkpoint2)
"awW" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/security/checkpoint2)
"awX" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/security/checkpoint2)
-"awY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/structure/stool/chair,/turf/simulated/floor,/area/security/checkpoint2)
+"awY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/security/checkpoint2)
"awZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/checkpoint2)
"axa" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/door/airlock/security{name = "Security"; req_access = null; req_access_txt = "1"},/turf/simulated/floor/plating,/area/security/checkpoint2)
"axb" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/fpmaint2)
@@ -1247,9 +1247,9 @@
"axY" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/chapel/main)
"axZ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall,/area/chapel/main)
"aya" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/arrival/station)
-"ayb" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
+"ayb" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple,/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"ayc" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/arrival/station)
-"ayd" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
+"ayd" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark{name = "JoinLate"},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"aye" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/arrival/station)
"ayf" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (WEST)"; icon_state = "propulsion"; dir = 8},/turf/space,/area/shuttle/arrival/station)
"ayg" = (/obj/machinery/camera{c_tag = "Security Checkpoint Internal"; dir = 1; network = "Arrivals"},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "red"; dir = 10},/area/security/checkpoint2)
@@ -1405,7 +1405,7 @@
"aBa" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/chapel/main)
"aBb" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/chapel/main)
"aBc" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/arrival/station)
-"aBd" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
+"aBd" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/arrival/station)
"aBe" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
"aBf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
"aBg" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/airlock/glass,/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -1559,17 +1559,17 @@
"aDY" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aDZ" = (/turf/simulated/floor{dir = 8; icon_state = "carpetside"},/area/chapel/main)
"aEa" = (/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/chapel/main)
-"aEb" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
+"aEb" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aEc" = (/obj/structure/table,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aEd" = (/turf/space,/area/shuttle/escape/station)
"aEe" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/shuttle/arrival/station)
"aEf" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area/shuttle/arrival/station)
"aEg" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "warning"},/area/hallway/secondary/entry)
-"aEh" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
+"aEh" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aEi" = (/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
-"aEj" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
+"aEj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aEk" = (/obj/structure/table,/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
-"aEl" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
+"aEl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aEm" = (/obj/machinery/vending/cigarette,/turf/simulated/floor,/area/hallway/secondary/entry)
"aEn" = (/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/hallway/secondary/entry)
"aEo" = (/obj/machinery/light{dir = 1},/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor,/area/hallway/primary/port)
@@ -1643,7 +1643,7 @@
"aFE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/stool,/turf/simulated/floor{icon_state = "dark"},/area/chapel/main)
"aFF" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aFG" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aFH" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/hallway/secondary/entry)
+"aFH" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/hallway/secondary/entry)
"aFI" = (/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/hallway/secondary/entry)
"aFJ" = (/turf/simulated/floor{dir = 5; icon_state = "carpetside"},/area/hallway/secondary/entry)
"aFK" = (/obj/machinery/vending/coffee,/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -1703,7 +1703,7 @@
"aGM" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aGN" = (/obj/effect/landmark{name = "emcloset"},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/hallway/secondary/entry)
"aGO" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
-"aGP" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "carpetside"},/area/hallway/secondary/entry)
+"aGP" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{dir = 10; icon_state = "carpetside"},/area/hallway/secondary/entry)
"aGQ" = (/turf/simulated/floor{icon_state = "carpetside"},/area/hallway/secondary/entry)
"aGR" = (/turf/simulated/floor{dir = 6; icon_state = "carpetside"},/area/hallway/secondary/entry)
"aGS" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/hallway/secondary/entry)
@@ -1756,7 +1756,7 @@
"aHN" = (/turf/simulated/floor{dir = 9; icon_state = "warning"},/area/hallway/secondary/entry)
"aHO" = (/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/hallway/secondary/entry)
"aHP" = (/turf/simulated/floor{tag = "icon-warningcorner (EAST)"; icon_state = "warningcorner"; dir = 4},/area/hallway/secondary/entry)
-"aHQ" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
+"aHQ" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "grimy"},/area/hallway/secondary/entry)
"aHR" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/hallway/secondary/entry)
"aHS" = (/turf/simulated/wall,/area/maintenance/port)
"aHT" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/maintenance/port)
@@ -1882,10 +1882,10 @@
"aKj" = (/obj/structure/window/reinforced,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/theatre)
"aKk" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/theatre)
"aKl" = (/obj/structure/disposalpipe/segment,/obj/structure/closet/wardrobe/chaplain_black,/turf/simulated/floor{dir = 8; icon_state = "carpetside"},/area/chapel/office)
-"aKm" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/chair,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
+"aKm" = (/obj/effect/landmark/start{name = "Chaplain"},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
"aKn" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/chapel/office)
"aKo" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/stool,/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
-"aKp" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
+"aKp" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"aKq" = (/obj/structure/stool,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 9},/turf/simulated/floor,/area/hallway/secondary/exit)
"aKr" = (/turf/simulated/floor,/area/hallway/secondary/exit)
"aKs" = (/obj/machinery/alarm{pixel_y = 25},/turf/simulated/floor,/area/hallway/secondary/exit)
@@ -1920,15 +1920,15 @@
"aKV" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/emergency,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/storage/tools)
"aKW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/storage/tools)
"aKX" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{icon_state = "red"; dir = 9},/area/bridge)
-"aKY" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge)
+"aKY" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge)
"aKZ" = (/turf/simulated/floor{icon_state = "red"; dir = 1},/area/bridge)
"aLa" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge)
"aLb" = (/obj/structure/table/reinforced,/obj/item/weapon/storage/recordsbox,/turf/simulated/floor,/area/bridge)
-"aLc" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/bridge)
+"aLc" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge)
"aLd" = (/obj/machinery/computer/station_alert,/turf/simulated/floor,/area/bridge)
"aLe" = (/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/bridge)
"aLf" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge)
-"aLg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge)
+"aLg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "whitehall"; dir = 1},/area/bridge)
"aLh" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 5},/area/bridge)
"aLi" = (/obj/structure/bookcase{category = "Fiction"; name = "bookcase (Fiction)"},/turf/simulated/floor{icon_state = "wood"},/area/library)
"aLj" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/simulated/floor{icon_state = "wood"},/area/library)
@@ -1941,8 +1941,8 @@
"aLq" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/hydroponics)
"aLr" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "green"; dir = 4},/area/hydroponics)
"aLs" = (/obj/machinery/hydroponics,/obj/structure/disposalpipe/sortjunction{dir = 1; icon_state = "pipe-j2s"; sortType = list("Hydroponics")},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
-"aLt" = (/obj/structure/stool/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
-"aLu" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
+"aLt" = (/obj/structure/stool/bed/chair{dir = 1},/obj/item/device/radio/intercom{pixel_x = -25},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
+"aLu" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
"aLv" = (/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aLw" = (/turf/simulated/floor{dir = 5; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aLx" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/theatre)
@@ -1953,7 +1953,7 @@
"aLC" = (/obj/structure/table/woodentable,/obj/item/weapon/storage/briefcase,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
"aLD" = (/obj/structure/table/woodentable,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/item/weapon/pen,/obj/item/weapon/reagent_containers/food/drinks/bottle/holywater,/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
"aLE" = (/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/chapel/office)
-"aLF" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
+"aLF" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"aLG" = (/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit)
"aLH" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"aLI" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
@@ -2006,18 +2006,18 @@
"aMD" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aME" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall,/area/crew_quarters/theatre)
"aMF" = (/obj/machinery/disposal{pixel_x = -5; pixel_y = -3},/obj/structure/disposalpipe/trunk{dir = 8},/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
-"aMG" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/requests_console{department = "Theatre"; departmentType = 0; name = "theatre RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
-"aMH" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
-"aMI" = (/obj/machinery/atmospherics/unary/vent_pump,/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
+"aMG" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/requests_console{department = "Theatre"; departmentType = 0; name = "theatre RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
+"aMH" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
+"aMI" = (/obj/machinery/atmospherics/unary/vent_pump,/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
"aMJ" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{dir = 8; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aMK" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aML" = (/obj/machinery/door/airlock{name = "Theatre Storage"; req_access_txt = "46"},/obj/machinery/atmospherics/pipe/simple{color = "blue"; icon_state = "intact-b-f"; level = 1; name = "pipe"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
"aMM" = (/obj/machinery/atmospherics/unary/vent_pump,/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor,/area/crew_quarters/theatre)
"aMN" = (/obj/structure/disposalpipe/segment,/obj/machinery/camera{c_tag = "Counselor's Office"; dir = 4; network = "SS13"},/turf/simulated/floor{dir = 8; icon_state = "carpetside"},/area/chapel/office)
-"aMO" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
+"aMO" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/chapel/office)
"aMP" = (/obj/item/device/radio/intercom{pixel_x = 25},/turf/simulated/floor{dir = 4; icon_state = "carpetside"},/area/chapel/office)
"aMQ" = (/obj/structure/stool,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "chapel"},/area/chapel/main)
-"aMR" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
+"aMR" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor{dir = 8; icon_state = "escape"},/area/hallway/secondary/exit)
"aMS" = (/obj/machinery/door/airlock/external{name = "Escape Airlock"},/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"aMT" = (/obj/machinery/light/small,/turf/simulated/floor/plating,/area/hallway/secondary/exit)
"aMU" = (/turf/simulated/floor/plating,/area/hallway/secondary/exit)
@@ -2025,11 +2025,11 @@
"aMW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aMX" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/wall,/area/security/vacantoffice)
"aMY" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/security/vacantoffice)
-"aMZ" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
+"aMZ" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
"aNa" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice)
"aNb" = (/obj/machinery/alarm{frequency = 1437; pixel_y = 23},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice)
"aNc" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/vacantoffice)
-"aNd" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice)
+"aNd" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice)
"aNe" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/security/vacantoffice)
"aNf" = (/obj/structure/table/woodentable,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor/plating,/area/security/vacantoffice)
"aNg" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/security/vacantoffice)
@@ -2059,13 +2059,13 @@
"aNE" = (/obj/machinery/hologram/holopad,/turf/simulated/floor,/area/bridge)
"aNF" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/bridge)
"aNG" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/bridge)
-"aNH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/bridge)
+"aNH" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/bridge)
"aNI" = (/turf/simulated/floor{icon_state = "whitehall"; dir = 4},/area/bridge)
"aNJ" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{dir = 9; icon_state = "blue"},/area/hallway/primary/central)
"aNK" = (/obj/item/device/radio/intercom{broadcasting = 0; layer = 4; name = "Station Intercom (General)"; pixel_y = 20},/turf/simulated/floor{dir = 1; icon_state = "blue"},/area/hallway/primary/central)
"aNL" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor,/area/hallway/primary/central)
"aNM" = (/obj/structure/bookcase{category = "Non-Fiction"; name = "bookcase (Non-Fiction)"},/turf/simulated/floor{icon_state = "wood"},/area/library)
-"aNN" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/library)
+"aNN" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/library)
"aNO" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "dark"},/area/library)
"aNP" = (/obj/machinery/hydroponics,/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aNQ" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -2116,8 +2116,8 @@
"aOJ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall,/area/mint)
"aOK" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHEAST)"; icon_state = "vault"; dir = 6},/area/mint)
"aOL" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced/tinted{dir = 8; icon_state = "twindow"; tag = ""},/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/mint)
-"aOM" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/mint)
-"aON" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/mint)
+"aOM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/mint)
+"aON" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (SOUTHWEST)"; icon_state = "vault"; dir = 10},/area/mint)
"aOO" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/mint)
"aOP" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/camera{c_tag = "Port Maintenance 2"; dir = 8; network = "SS13"},/turf/simulated/floor/plating,/area/maintenance/port)
"aOQ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area/storage/tools)
@@ -2148,12 +2148,12 @@
"aPp" = (/obj/machinery/door/airlock/command{name = "Bridge"; req_access = null; req_access_txt = "19"},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/structure/cable,/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/bridge)
"aPq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 8},/area/hallway/primary/central)
"aPr" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/hallway/primary/central)
-"aPs" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/library)
+"aPs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/library)
"aPt" = (/obj/structure/table/reinforced,/obj/item/weapon/dice/d20,/turf/simulated/floor{icon_state = "dark"},/area/library)
-"aPu" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor,/area/library)
+"aPu" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/library)
"aPv" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/library)
"aPw" = (/obj/structure/table/reinforced,/obj/item/device/taperecorder{pixel_y = 0},/turf/simulated/floor{icon_state = "dark"},/area/library)
-"aPx" = (/obj/structure/stool/chair{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/library)
+"aPx" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/library)
"aPy" = (/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "wood"},/area/library)
"aPz" = (/obj/structure/disposalpipe/segment,/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/wall,/area/library)
"aPA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
@@ -2166,7 +2166,7 @@
"aPH" = (/turf/simulated/floor{dir = 10; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aPI" = (/turf/simulated/floor{dir = 6; icon_state = "carpetside"},/area/crew_quarters/theatre)
"aPJ" = (/obj/structure/table,/turf/simulated/floor{icon_state = "dark"},/area/crew_quarters/theatre)
-"aPK" = (/obj/structure/stool/chair,/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/crew_quarters/theatre)
+"aPK" = (/obj/structure/stool/bed/chair,/obj/machinery/light{dir = 1},/obj/item/device/radio/intercom{pixel_y = 25},/turf/simulated/floor,/area/crew_quarters/theatre)
"aPL" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/crew_quarters/theatre)
"aPM" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/chapel/office)
"aPN" = (/turf/simulated/floor{dir = 1; icon_state = "carpetcorner"},/area/chapel/office)
@@ -2227,7 +2227,7 @@
"aQQ" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 10},/area/hallway/primary/central)
"aQR" = (/obj/machinery/power/apc{dir = 2; name = "Central Hall APC"; pixel_y = -24},/obj/structure/cable,/turf/simulated/floor{dir = 0; icon_state = "blue"},/area/hallway/primary/central)
"aQS" = (/obj/structure/bookcase{category = "Reference"; name = "bookcase (Reference)"},/turf/simulated/floor{icon_state = "wood"},/area/library)
-"aQT" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/library)
+"aQT" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/library)
"aQU" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 5; icon_state = "intact-r-f"; level = 1; name = "pipe"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/fsmaint)
"aQV" = (/obj/machinery/hydroponics,/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/hydroponics)
"aQW" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 4; icon_state = "intact-r-f"; level = 1; name = "pipe"},/turf/simulated/floor{icon_state = "green"; dir = 10},/area/hydroponics)
@@ -2256,8 +2256,8 @@
"aRt" = (/obj/machinery/camera{c_tag = "Escape Arm Airlocks"; dir = 8; network = "SS13"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/hallway/secondary/exit)
"aRu" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/hallway/secondary/entry)
"aRv" = (/obj/machinery/door/airlock/engineering{name = "Vacant Office"; req_access_txt = "32"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/security/vacantoffice)
-"aRw" = (/obj/structure/stool/chair,/turf/simulated/floor/plating,/area/security/vacantoffice)
-"aRx" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/security/vacantoffice)
+"aRw" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/security/vacantoffice)
+"aRx" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/security/vacantoffice)
"aRy" = (/obj/machinery/copier,/turf/simulated/floor,/area/security/vacantoffice)
"aRz" = (/obj/machinery/portable_atmospherics/canister/oxygen,/turf/simulated/floor/plating,/area/maintenance/port)
"aRA" = (/obj/machinery/meter,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/port)
@@ -2429,7 +2429,7 @@
"aUK" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/turf/simulated/floor,/area/hallway/primary/central)
"aUL" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/crew_quarters/captain)
"aUM" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
-"aUN" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
+"aUN" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aUO" = (/turf/simulated/floor{dir = 9; icon_state = "carpetside"},/area/crew_quarters/captain)
"aUP" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/crew_quarters/captain)
"aUQ" = (/turf/simulated/floor{dir = 1; icon_state = "carpetside"},/area/crew_quarters/captain)
@@ -2444,7 +2444,7 @@
"aUZ" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall/r_wall,/area/crew_quarters/heads)
"aVa" = (/obj/machinery/vending/coffee,/turf/simulated/floor,/area/crew_quarters/heads)
"aVb" = (/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/crew_quarters/heads)
-"aVc" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/crew_quarters/heads)
+"aVc" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/crew_quarters/heads)
"aVd" = (/obj/structure/closet/wardrobe/hop,/turf/simulated/floor,/area/crew_quarters/heads)
"aVe" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/airlock/glass{name = "Central Access"},/turf/simulated/floor,/area/hallway/primary/central)
"aVf" = (/obj/machinery/door/firedoor/border_only{dir = 8},/turf/simulated/floor,/area/hallway/primary/starboard)
@@ -2555,7 +2555,7 @@
"aXg" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/effect/landmark{name = "tripai"},/obj/item/device/radio/intercom{anyai = 0; freerange = 1; name = "General Listening Channel"; pixel_x = 0; pixel_y = 19},/obj/item/device/radio/intercom{anyai = 0; broadcasting = 0; freerange = 1; frequency = 1447; name = "Private Channel"; pixel_x = 0; pixel_y = -26},/obj/item/device/radio/intercom{anyai = 0; broadcasting = 1; freerange = 1; listening = 0; name = "General Broadcasting Channel"; pixel_x = 27; pixel_y = -3},/turf/simulated/floor/grid,/area/turret_protected/ai)
"aXh" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/crew_quarters/heads)
"aXi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/crew_quarters/heads)
-"aXj" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/heads)
+"aXj" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/crew_quarters/heads)
"aXk" = (/obj/machinery/camera{c_tag = "Heads of Staff"; dir = 8; network = "Command"},/obj/structure/table/reinforced,/obj/item/weapon/secstorage/sbriefcase,/turf/simulated/floor,/area/crew_quarters/heads)
"aXl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/crew_quarters/heads)
"aXm" = (/turf/simulated/floor{icon_state = "bot"},/area/hallway/primary/central)
@@ -2602,14 +2602,14 @@
"aYb" = (/obj/machinery/conveyor{dir = 1; id = "packageSort1"},/obj/structure/plasticflaps{opacity = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "floorgrime"},/area/quartermaster/sorting)
"aYc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/wall,/area/quartermaster/sorting)
"aYd" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/quartermaster/sorting)
-"aYe" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/sorting)
+"aYe" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "arrival"; dir = 4},/area/quartermaster/sorting)
"aYf" = (/obj/structure/table/reinforced,/obj/machinery/door/window/eastleft{name = "Mail Desk"; req_access_txt = "0"},/turf/simulated/floor,/area/quartermaster/sorting)
"aYg" = (/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "bluecorner"},/area/hallway/primary/central)
"aYh" = (/obj/machinery/camera{c_tag = "Captain's Quarters"; dir = 4; network = "Command"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aYi" = (/obj/machinery/computer/card,/obj/item/weapon/card/id/captains_spare,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aYj" = (/obj/machinery/computer/communications,/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aYk" = (/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/obj/item/weapon/stamp/captain,/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
-"aYl" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
+"aYl" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aYm" = (/obj/structure/displaycase,/obj/machinery/light{dir = 4; icon_state = "tube1"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aYn" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor/grid,/area/turret_protected/ai)
"aYo" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor/grid,/area/turret_protected/ai)
@@ -2672,7 +2672,7 @@
"aZt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/quartermaster/sorting)
"aZu" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/light{icon_state = "tube1"; dir = 8},/turf/simulated/floor{icon_state = "arrival"; dir = 8},/area/quartermaster/sorting)
"aZv" = (/obj/structure/table/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/simulated/floor,/area/quartermaster/sorting)
-"aZw" = (/obj/structure/stool/chair{dir = 1},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
+"aZw" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Captain"},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aZx" = (/obj/item/weapon/paper{info = "Our scientists stole your suit and shoved it in their destructive analyzer. We replaced it with one that isn't space capable.
--Central Command"; name = "Important Memo"},/obj/item/weapon/book/manual/security_space_law,/obj/structure/table/woodentable,/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aZy" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/keycard_auth{pixel_x = 25},/turf/simulated/floor{icon_state = "wood"},/area/crew_quarters/captain)
"aZz" = (/obj/machinery/light/small{dir = 8},/obj/machinery/turret{desc = ""; dir = 4; id = "aicore"},/turf/simulated/floor/grid,/area/turret_protected/ai)
@@ -2686,7 +2686,7 @@
"aZH" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/crew_quarters/heads)
"aZI" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/crew_quarters/heads)
"aZJ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/crew_quarters/heads)
-"aZK" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads)
+"aZK" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/crew_quarters/heads)
"aZL" = (/obj/machinery/door/window{base_state = "right"; dir = 8; icon = 'windoor.dmi'; icon_state = "right"; name = "Heads of Staff"; req_access_txt = "19"},/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; req_access_txt = "0"},/obj/structure/table/reinforced,/turf/simulated/floor,/area/crew_quarters/heads)
"aZM" = (/turf/simulated/floor{icon_state = "delivery"},/area/hallway/primary/central)
"aZN" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/hallway/primary/central)
@@ -2720,7 +2720,7 @@
"bap" = (/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"baq" = (/obj/machinery/chem_master,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bar" = (/obj/machinery/camera{c_tag = "Chemistry North"; dir = 2; network = "Medbay"; pixel_x = 22},/obj/item/weapon/storage/beakerbox{pixel_x = 2; pixel_y = 2},/obj/item/weapon/reagent_containers/glass/large,/obj/item/weapon/reagent_containers/dropper,/obj/item/weapon/storage/pill_bottle/inaprovaline{pixel_x = 5; pixel_y = -2},/obj/structure/table/reinforced,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"bas" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bas" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bat" = (/obj/structure/table,/obj/item/weapon/screwdriver{pixel_x = 3; pixel_y = 4},/obj/item/clothing/glasses/science,/obj/item/clothing/glasses/science,/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/item/device/assembly/igniter{pixel_x = 3; pixel_y = -7},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; dir = 1; pixel_x = 0; pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bau" = (/obj/structure/table,/obj/item/weapon/chem_grenade,/obj/item/weapon/chem_grenade,/obj/item/weapon/chem_grenade,/obj/item/weapon/chem_grenade,/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/item/device/radio/intercom{dir = 1; name = "Station Intercom (General)"; pixel_x = 0; pixel_y = 25},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/obj/item/device/assembly/timer{pixel_x = -3; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bav" = (/obj/structure/table,/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/item/stack/sheet/glass{amount = 50; pixel_x = 3; pixel_y = 3},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
@@ -2798,14 +2798,14 @@
"bbP" = (/obj/structure/morgue,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbQ" = (/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bbR" = (/obj/structure/table,/obj/machinery/door_control{dir = 4; id = "Chemistry Outer Shutters"; name = "Chemistry Outer Shutters"; pixel_x = -22; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"bbS" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bbS" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Chemist"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbT" = (/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbU" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/structure/closet/secure_closet/chemist_personal{pixel_x = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bbV" = (/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 0; pixel_y = 0},/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bbW" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bbX" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bbY" = (/obj/machinery/camera{c_tag = "RnD Lab North"; dir = 2; network = "Research"},/obj/machinery/power/apc{dir = 1; name = "Lab APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
-"bbZ" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/chair{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
+"bbZ" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bca" = (/obj/machinery/requests_console{department = "Research and Development"; departmentType = 2; name = "rnd Requests Console"; pixel_x = 30; pixel_y = 0},/obj/structure/table,/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/destTagger{pixel_x = 4; pixel_y = 3},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bcb" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/research{name = "Research Division"})
"bcc" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
@@ -2887,8 +2887,8 @@
"bdA" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdB" = (/obj/structure/reagent_dispensers/fueltank,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bdC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/medbay)
-"bdD" = (/obj/structure/stool/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bdE" = (/obj/structure/stool/chair{dir = 8},/obj/effect/sign/securearea{desc = "A warning sign which reads 'NO SMOKING'"; icon_state = "nosmoking2"; name = "NO SMOKING"; pixel_x = 29; pixel_y = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bdD" = (/obj/structure/stool/bed/chair{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; frequency = 1439; icon_state = "off"; id_tag = null; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bdE" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/sign/securearea{desc = "A warning sign which reads 'NO SMOKING'"; icon_state = "nosmoking2"; name = "NO SMOKING"; pixel_x = 29; pixel_y = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bdF" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bdG" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/medical/chemistry)
"bdH" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 1; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
@@ -2964,11 +2964,11 @@
"beZ" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/alarm{dir = 2; pixel_y = 24},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bfa" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bfb" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall,/area/maintenance/maintcentral)
-"bfc" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bfd" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bfc" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bfd" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/alarm{dir = 8; icon_state = "alarm0"; pixel_x = 24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bfe" = (/obj/machinery/power/apc{dir = 4; name = "Morgue APC"; pixel_x = 25},/obj/structure/cable{icon_state = "0-2"; d2 = 2},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bff" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/power/apc{dir = 8; level = 4; name = "Chemistry APC"; pixel_x = -25},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"bfg" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"bfg" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bfh" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bfi" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bfj" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
@@ -3025,10 +3025,10 @@
"bgi" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/grille,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/kitchen)
"bgj" = (/obj/structure/table,/obj/machinery/microwave{pixel_x = -3; pixel_y = 6},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bgk" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
-"bgl" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
+"bgl" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bgm" = (/obj/structure/table,/obj/item/weapon/kitchen/utensil/fork,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bgn" = (/obj/structure/table,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
-"bgo" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
+"bgo" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bgp" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 30},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bgq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/light/small{dir = 8},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bgr" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 8; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/maintenance/maintcentral)
@@ -3043,7 +3043,7 @@
"bgA" = (/obj/machinery/reagentgrinder,/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bgB" = (/obj/item/device/radio/intercom{pixel_x = -25},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/r_n_d/circuit_imprinter,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/lab)
"bgC" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/r_n_d/destructive_analyzer,/turf/simulated/floor{icon_state = "bot"; dir = 1},/area/toxins/lab)
-"bgD" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
+"bgD" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bgE" = (/obj/item/weapon/stock_parts/console_screen,/obj/structure/table,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/console_screen,/obj/item/weapon/stock_parts/matter_bin,/obj/item/weapon/stock_parts/matter_bin,/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"bgF" = (/obj/effect/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/research{name = "Research Division"})
"bgG" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/door/airlock/medical{name = "Research Division Access"; req_access_txt = "47"; req_one_access_txt = "1"},/turf/simulated/floor,/area/medical/research{name = "Research Division"})
@@ -3071,7 +3071,7 @@
"bhc" = (/turf/simulated/floor,/area/quartermaster)
"bhd" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/quartermaster)
"bhe" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = 29},/turf/simulated/floor,/area/quartermaster)
-"bhf" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor,/area/quartermaster)
+"bhf" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/firealarm{pixel_y = 27},/turf/simulated/floor,/area/quartermaster)
"bhg" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/quartermaster)
"bhh" = (/turf/simulated/wall/r_wall,/area/teleporter)
"bhi" = (/obj/effect/sign/securearea,/turf/simulated/wall/r_wall,/area/teleporter)
@@ -3100,7 +3100,7 @@
"bhF" = (/obj/structure/closet/extinguisher{pixel_x = 27; pixel_y = 0},/obj/machinery/camera{c_tag = "Cafeteria North East"; dir = 8; network = "SS13"},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"bhG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/maintenance/maintcentral)
"bhH" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = -32; pixel_y = 0},/obj/machinery/computer/security/medbay,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bhI" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bhI" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bhJ" = (/obj/item/weapon/pen,/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bhK" = (/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bhL" = (/obj/item/device/radio/intercom{broadcasting = 1; freerange = 0; frequency = 1485; listening = 0; name = "Station Intercom (Medbay)"; pixel_x = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
@@ -3132,7 +3132,7 @@
"bil" = (/obj/structure/grille,/obj/structure/disposalpipe/segment,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bim" = (/obj/structure/table,/obj/item/stack/rods{amount = 50},/turf/simulated/floor,/area/quartermaster/storage)
"bin" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/quartermaster/storage)
-"bio" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster)
+"bio" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/quartermaster)
"bip" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster)
"biq" = (/obj/item/device/radio/intercom{dir = 4; name = "Station Intercom (General)"; pixel_x = 27},/turf/simulated/floor,/area/hallway/primary/central)
"bir" = (/obj/structure/table,/turf/simulated/floor,/area/teleporter)
@@ -3167,7 +3167,7 @@
"biU" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/condiment/peppermill,/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"biV" = (/obj/machinery/firealarm{dir = 4; pixel_x = 24},/turf/simulated/floor{icon_state = "bar"},/area/crew_quarters/cafeteria)
"biW" = (/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"biX" = (/obj/structure/stool/chair{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"biX" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Medical Doctor"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"biY" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"biZ" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
"bja" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Morgue"; req_access_txt = "6;5"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/morgue)
@@ -3190,7 +3190,7 @@
"bjr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/simulated/floor/plating,/area/quartermaster/storage)
"bjs" = (/obj/machinery/navbeacon{codes_txt = "delivery;dir=8"; freq = 1400; location = "QM #3"},/turf/simulated/floor{icon_state = "bot"},/area/quartermaster/storage)
"bjt" = (/obj/structure/table,/obj/item/device/multitool,/turf/simulated/floor,/area/quartermaster/storage)
-"bju" = (/obj/structure/stool/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage)
+"bju" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Cargo Technician"},/turf/simulated/floor,/area/quartermaster/storage)
"bjv" = (/obj/machinery/door/window/eastright{name = "Reception Window"; req_access_txt = "0"},/obj/machinery/door/window/westleft{name = "Cargo Office"; req_access_txt = "31"},/obj/structure/table/reinforced,/obj/item/weapon/rag,/turf/simulated/floor,/area/quartermaster/storage)
"bjw" = (/obj/machinery/door/firedoor/border_only{dir = 8},/obj/machinery/door/window/northleft{base_state = "right"; dir = 8; icon_state = "right"},/turf/simulated/floor,/area/quartermaster)
"bjx" = (/obj/machinery/camera{c_tag = "Teleporter Entrance"; dir = 8},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/hallway/primary/central)
@@ -3204,7 +3204,7 @@
"bjF" = (/obj/structure/lattice,/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/space,/area)
"bjG" = (/obj/machinery/power/apc{dir = 8; name = "Meeting Room APC"; pixel_x = -25},/obj/structure/cable,/turf/simulated/floor,/area/bridge/meeting_room)
"bjH" = (/turf/simulated/floor,/area/bridge/meeting_room)
-"bjI" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "red"},/area/bridge/meeting_room)
+"bjI" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "red"},/area/bridge/meeting_room)
"bjJ" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = -3; pixel_y = 7},/turf/simulated/floor,/area/bridge/meeting_room)
"bjK" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "heads_meeting"; name = "Meeting Room Window Shields"; opacity = 0},/obj/machinery/atmospherics/pipe/simple{tag = "icon-intact-b-f (NORTH)"; icon_state = "intact-b-f"; dir = 1; level = 2; color = "blue"},/turf/simulated/floor/plating,/area/bridge/meeting_room)
"bjL" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/hallway/primary/central)
@@ -3261,10 +3261,10 @@
"bkK" = (/obj/machinery/turretid{id = "upload"; pixel_x = -5; pixel_y = -24},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"bkL" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/turf/simulated/floor{icon_state = "dark"},/area/turret_protected/ai_upload)
"bkM" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = -30},/turf/simulated/floor,/area/bridge/meeting_room)
-"bkN" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge/meeting_room)
+"bkN" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "blue"; dir = 4},/area/bridge/meeting_room)
"bkO" = (/obj/structure/table,/turf/simulated/floor,/area/bridge/meeting_room)
"bkP" = (/obj/structure/table,/obj/item/weapon/book/manual/security_space_law,/turf/simulated/floor,/area/bridge/meeting_room)
-"bkQ" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/bridge/meeting_room)
+"bkQ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{tag = "icon-whitehall (WEST)"; icon_state = "whitehall"; dir = 8},/area/bridge/meeting_room)
"bkR" = (/obj/structure/table,/obj/item/weapon/hand_labeler,/obj/item/device/assembly/timer,/turf/simulated/floor,/area/bridge/meeting_room)
"bkS" = (/obj/structure/disposalpipe/trunk{dir = 4},/obj/machinery/disposal,/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
"bkT" = (/obj/machinery/requests_console{department = "Kitchen"; departmentType = 2; name = "Kitchen RC"; pixel_x = -1; pixel_y = -30},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "cafeteria"; dir = 2},/area/crew_quarters/kitchen)
@@ -3291,9 +3291,9 @@
"blo" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"blp" = (/obj/machinery/door/firedoor/border_only,/obj/structure/table/reinforced,/obj/machinery/door/window/westleft{name = "Chemistry Desk"},/obj/machinery/door/window/eastright{name = "Chemistry Desk"; req_access_txt = "33"},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"blq" = (/obj/machinery/camera{c_tag = "Chemistry South"; dir = 1; network = "Medbay"; pixel_x = 22},/obj/machinery/light,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/requests_console{department = "Chemistry"; departmentType = 2; pixel_x = 0; pixel_y = -30},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"blr" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
+"blr" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
"bls" = (/obj/machinery/door/firedoor/border_only,/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/door/window/eastright{name = "Chemistry Desk"},/obj/machinery/door/window/westleft{name = "Chemistry Desk"; req_access_txt = "33"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/chemistry)
-"blt" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/chair,/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
+"blt" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"blu" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"blv" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
"blw" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Research Lab"; req_access_txt = "7"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/lab)
@@ -3332,7 +3332,7 @@
"bmd" = (/obj/machinery/door/airlock/maintenance{name = "Medical Maintenance"; req_access_txt = "5"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor/plating,/area/medical/medbay)
"bme" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bmf" = (/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bmg" = (/obj/machinery/door_control{id = "Patient Room 1 Shutters"; name = "Privacy Shutters"; pixel_y = 25},/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bmg" = (/obj/machinery/door_control{id = "Patient Room 1 Shutters"; name = "Privacy Shutters"; pixel_y = 25},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bmh" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/vending/wallmed1{pixel_y = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bmi" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Hallway East"; dir = 4; network = "Medbay"},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bmj" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
@@ -3352,7 +3352,7 @@
"bmx" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage)
"bmy" = (/obj/machinery/conveyor{dir = 4; id = "QMLoad"},/obj/machinery/light,/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/quartermaster/storage)
"bmz" = (/obj/machinery/door/firedoor/border_only{dir = 4},/obj/machinery/door/window/eastright{name = "Cargo Office"; req_access_txt = "31"},/turf/simulated/floor,/area/quartermaster/storage)
-"bmA" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor,/area/quartermaster)
+"bmA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/quartermaster)
"bmB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster)
"bmC" = (/obj/structure/closet/crate,/turf/simulated/floor,/area/teleporter)
"bmD" = (/obj/machinery/shieldwallgen,/turf/simulated/floor{icon_state = "bot"},/area/teleporter)
@@ -3370,7 +3370,7 @@
"bmP" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/obj/machinery/status_display{density = 0; layer = 4; pixel_x = 32; pixel_y = 0},/obj/effect/sign/electricshock{pixel_y = 32},/turf/simulated/floor,/area/turret_protected/ai_upload_foyer)
"bmQ" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/wall/r_wall,/area/turret_protected/ai_upload_foyer)
"bmR" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 9; pixel_y = -1},/obj/structure/lattice,/obj/structure/grille,/turf/space,/area)
-"bmS" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge/meeting_room)
+"bmS" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "yellow"},/area/bridge/meeting_room)
"bmT" = (/obj/structure/table,/obj/item/device/assembly/signaler,/obj/item/device/assembly/signaler,/turf/simulated/floor,/area/bridge/meeting_room)
"bmU" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor,/area/hallway/primary/central)
"bmV" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/crew_quarters/kitchen)
@@ -3418,7 +3418,7 @@
"bnL" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/turf/simulated/floor{dir = 2; icon_state = "brown"},/area/quartermaster)
"bnM" = (/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/quartermaster)
"bnN" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/quartermaster)
-"bnO" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/power/apc{dir = 2; name = "Cargo Foyer APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/quartermaster)
+"bnO" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/power/apc{dir = 2; name = "Cargo Foyer APC"; pixel_x = 1; pixel_y = -24},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/turf/simulated/floor,/area/quartermaster)
"bnP" = (/obj/machinery/door/firedoor/border_only,/turf/simulated/floor{dir = 8; icon_state = "browncorner"},/area/hallway/primary/central)
"bnQ" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/simulated/floor,/area/hallway/primary/central)
"bnR" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/machinery/shieldwallgen,/turf/simulated/floor{icon_state = "bot"},/area/teleporter)
@@ -3455,7 +3455,7 @@
"bow" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"box" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/poddoor/shutters{density = 0; dir = 8; icon_state = "shutter0"; id = "Genetics Outer Shutters"; name = "Shutters"; opacity = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"boy" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
-"boz" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
+"boz" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"boA" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_Toxins = 1},/obj/machinery/door_control{dir = 4; id = "Genetics Inner Shutters"; name = "Genetics Inner Shutters"; pixel_x = 22; pixel_y = -6},/obj/machinery/door_control{dir = 4; id = "Genetics Outer Shutters"; name = "Genetics Outer Shutters"; pixel_x = 22; pixel_y = 6},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"boB" = (/obj/structure/disposalpipe/segment,/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"boC" = (/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
@@ -3541,7 +3541,7 @@
"bqe" = (/obj/machinery/light_switch{layer = 3.3; pixel_x = -21},/turf/simulated/floor,/area/quartermaster/qm)
"bqf" = (/obj/machinery/power/apc{dir = 1; name = "Quartermaster's Office APC"; pixel_x = 0; pixel_y = 24},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/turf/simulated/floor,/area/quartermaster/qm)
"bqg" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/quartermaster/qm)
-"bqh" = (/obj/structure/stool/chair{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/quartermaster/qm)
+"bqh" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/quartermaster/qm)
"bqi" = (/obj/structure/table,/obj/item/weapon/stamp{name = "Quartermaster's stamp"; pixel_x = -3; pixel_y = 3},/obj/item/weapon/stamp/denied{pixel_x = 4; pixel_y = -2},/obj/machinery/alarm{frequency = 1437; pixel_y = 23},/turf/simulated/floor,/area/quartermaster/qm)
"bqj" = (/obj/machinery/camera{c_tag = "Quartermasters Office"; dir = 2; network = "Cargo"},/obj/machinery/computer/supplycomp,/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/quartermaster/qm)
"bqk" = (/obj/machinery/computer/security/cargo,/turf/simulated/floor,/area/quartermaster/qm)
@@ -3609,7 +3609,7 @@
"bru" = (/turf/simulated/floor,/area/quartermaster/qm)
"brv" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/quartermaster/qm)
"brw" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/quartermaster/qm)
-"brx" = (/obj/structure/stool/chair{dir = 4},/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/quartermaster/qm)
+"brx" = (/obj/structure/stool/bed/chair{dir = 4},/obj/effect/landmark/start{name = "Quartermaster"},/turf/simulated/floor,/area/quartermaster/qm)
"bry" = (/obj/structure/table/reinforced,/obj/machinery/door/firedoor/border_only,/obj/machinery/door/window{dir = 4; icon = 'windoor.dmi'; name = "Quartermaster's desk"; req_access_txt = "41"},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor,/area/quartermaster/qm)
"brz" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AIW"; location = "QM"},/turf/simulated/floor,/area/hallway/primary/aft)
"brA" = (/obj/machinery/navbeacon{codes_txt = "patrol;next_patrol=AftH"; location = "AIW"},/obj/machinery/door/firedoor/border_only{dir = 4},/turf/simulated/floor,/area/hallway/primary/aft)
@@ -3756,7 +3756,7 @@
"bul" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bum" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Patient Room 2 Shutters"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay)
"bun" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"buo" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"buo" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bup" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"buq" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bur" = (/obj/machinery/vending/wallmed1{pixel_y = 28},/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/obj/machinery/sink{icon_state = "sink"; dir = 4; pixel_x = 11; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
@@ -3831,8 +3831,8 @@
"bvI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Patient Room 2 Shutters"; name = "Privacy Shutters"; opacity = 0},/turf/simulated/floor/plating,/area/medical/medbay)
"bvJ" = (/obj/item/device/radio/intercom{freerange = 0; frequency = 1459; name = "Station Intercom (General)"; pixel_x = 29},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bvK" = (/obj/machinery/light{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bvL" = (/obj/structure/stool/chair,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
-"bvM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/chair,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
+"bvL" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
+"bvM" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Geneticist"},/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bvN" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bvO" = (/obj/structure/closet/extinguisher{pixel_x = 27},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bvP" = (/obj/machinery/atmospherics/portables_connector,/turf/simulated/floor{icon_state = "bot"},/area/toxins/toxinslab)
@@ -3863,7 +3863,7 @@
"bwo" = (/obj/structure/rack{dir = 1},/obj/item/clothing/suit/fire/firefighter,/obj/item/weapon/tank/emergency_oxygen,/obj/item/clothing/mask/gas,/obj/item/clothing/glasses/meson,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/turf/simulated/floor,/area/quartermaster/qm)
"bwp" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/quartermaster/qm)
"bwq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/qm)
-"bwr" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/light/small,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/qm)
+"bwr" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light/small,/obj/item/device/radio/intercom{name = "Station Intercom (General)"; pixel_y = -29},/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor,/area/quartermaster/qm)
"bws" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light_switch{pixel_x = 24},/turf/simulated/floor,/area/quartermaster/qm)
"bwt" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 10},/turf/simulated/wall,/area/quartermaster/qm)
"bwu" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor,/area/quartermaster/miningdock)
@@ -3907,7 +3907,7 @@
"bxg" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxh" = (/obj/machinery/light,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxi" = (/obj/machinery/door_control{id = "Patient Room 2 Shutters"; name = "Privacy Shutters"; pixel_y = -25},/obj/machinery/sink{icon_state = "sink"; dir = 4; pixel_x = 11; pixel_y = 2},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
-"bxj" = (/obj/structure/stool/chair{dir = 8},/obj/machinery/door_control{id = "Patient Room 3 Shutters"; name = "Privacy Shutters"; pixel_y = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
+"bxj" = (/obj/structure/stool/bed/chair{dir = 8},/obj/machinery/door_control{id = "Patient Room 3 Shutters"; name = "Privacy Shutters"; pixel_y = -25},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxk" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/obj/machinery/firealarm{dir = 1; pixel_y = -24},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bxl" = (/obj/machinery/scan_consolenew,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
"bxm" = (/obj/structure/table,/obj/machinery/camera{c_tag = "Genetics Cloning"; dir = 1; network = "Medbay"; pixel_x = 22},/obj/item/weapon/packageWrap,/obj/item/weapon/packageWrap,/obj/item/device/destTagger,/turf/simulated/floor{icon_state = "white"},/area/medical/genetics)
@@ -3920,9 +3920,9 @@
"bxt" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/toxins/toxinslab)
"bxu" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/valve,/turf/simulated/floor,/area/toxins/toxinslab)
"bxv" = (/obj/structure/window/reinforced{dir = 8},/obj/structure/table,/obj/machinery/camera{c_tag = "Toxins Lab Center"; dir = 4; network = "SS13"; pixel_x = 6},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
-"bxw" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
+"bxw" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/effect/landmark/start{name = "Scientist"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bxx" = (/obj/structure/table,/obj/item/weapon/storage/toolbox/mechanical{pixel_x = 2; pixel_y = 3},/obj/item/weapon/storage/toolbox/mechanical{pixel_x = -2; pixel_y = -1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
-"bxy" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
+"bxy" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bxz" = (/obj/structure/table,/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bxA" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/portables_connector{dir = 1},/turf/simulated/floor{icon_state = "bot"},/area/toxins/mixing)
"bxB" = (/obj/machinery/atmospherics/pipe/simple/general/visible{tag = "icon-intact (NORTHEAST)"; icon_state = "intact"; dir = 5},/turf/simulated/floor,/area/toxins/mixing)
@@ -4052,14 +4052,14 @@
"bzV" = (/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Sleeper Room"; dir = 2; network = "Medbay"; pixel_x = 22},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bzW" = (/obj/machinery/sink{pixel_y = 30},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bzX" = (/obj/structure/table,/obj/item/weapon/storage/stma_kit{pixel_x = 0; pixel_y = 0},/obj/machinery/firealarm{dir = 1; pixel_x = 24; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bzY" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/rd,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bzZ" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/table,/obj/item/device/taperecorder,/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bAa" = (/obj/machinery/requests_console{announcementConsole = 1; department = "RD's Office"; departmentType = 5; name = "RD RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/wall/r_wall,/area/crew_quarters/heads/hor)
-"bAb" = (/obj/machinery/computer/aifixer,/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 2; network = "Research"; pixel_x = 22},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bAc" = (/obj/machinery/computer/security/research,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bAd" = (/obj/machinery/computer/robotics,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bAe" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bAf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hor)
+"bzY" = (/obj/structure/table,/obj/item/weapon/clipboard,/obj/item/weapon/stamp/rd,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bzZ" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/structure/table,/obj/item/device/taperecorder,/obj/machinery/light{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bAa" = (/obj/machinery/requests_console{announcementConsole = 1; department = "RD's Office"; departmentType = 5; name = "RD RC"; pixel_x = 0; pixel_y = 30},/turf/simulated/wall/r_wall,/area/crew_quarters/hor)
+"bAb" = (/obj/machinery/computer/aifixer,/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 2; network = "Research"; pixel_x = 22},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bAc" = (/obj/machinery/computer/security/research,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bAd" = (/obj/machinery/computer/robotics,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bAe" = (/obj/machinery/light{dir = 1},/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/alarm{frequency = 1439; pixel_y = 23},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bAf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"bAg" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bAh" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bAi" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
@@ -4075,7 +4075,7 @@
"bAs" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating/airless,/area/toxins/test_area)
"bAt" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating/airless,/area/toxins/test_area)
"bAu" = (/turf/simulated/wall/r_wall,/area/toxins/test_area)
-"bAv" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
+"bAv" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/mining/station)
"bAw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bAx" = (/obj/item/weapon/ore/iron,/turf/simulated/floor,/area/quartermaster/miningdock)
"bAy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/closet/crate,/turf/simulated/floor,/area/quartermaster/miningdock)
@@ -4125,14 +4125,14 @@
"bBq" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bBr" = (/obj/machinery/power/apc{dir = 4; name = "Surgery APC"; pixel_x = 25},/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/structure/table,/obj/item/weapon/crowbar,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bBs" = (/turf/simulated/wall/r_wall,/area/medical/surgery)
-"bBt" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/power/apc{dir = 8; name = "RD's Office APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable{d2 = 2; icon_state = "0-4"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBu" = (/obj/structure/stool/chair{dir = 1},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBv" = (/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "2-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/keycard_auth{pixel_x = -25; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBx" = (/obj/structure/stool/chair{dir = 1},/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBy" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBz" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bBA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hor)
+"bBt" = (/obj/structure/table,/obj/item/weapon/paper_bin{pixel_x = 1; pixel_y = 9},/obj/machinery/power/apc{dir = 8; name = "RD's Office APC"; pixel_x = -25; pixel_y = 0},/obj/structure/cable{d2 = 2; icon_state = "0-4"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBu" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBv" = (/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBw" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "2-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/keycard_auth{pixel_x = -25; pixel_y = 32},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBx" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark/start{name = "Research Director"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBy" = (/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBz" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bBA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"bBB" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Toxins Lab"; req_access_txt = "7"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bBC" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bBD" = (/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
@@ -4202,13 +4202,13 @@
"bCP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bCQ" = (/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bCR" = (/obj/structure/closet/secure_closet/personal/patient,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bCS" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/crew_quarters/heads/hor)
-"bCT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/crew_quarters/heads/hor)
-"bCU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bCV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bCW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bCX" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bCY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Research Director's Office"; req_access_txt = "30"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/ai_status_display{layer = 4; pixel_y = -32},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/heads/hor)
+"bCS" = (/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 1; icon_state = "warning"},/area/crew_quarters/hor)
+"bCT" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor{dir = 5; icon_state = "warning"},/area/crew_quarters/hor)
+"bCU" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bCV" = (/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bCW" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/unary/vent_pump{dir = 4; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bCX" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bCY" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/glass{name = "Research Director's Office"; req_access_txt = "30"},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/obj/machinery/ai_status_display{layer = 4; pixel_y = -32},/turf/simulated/floor{icon_state = "white"},/area/crew_quarters/hor)
"bCZ" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/obj/structure/disposalpipe/sortjunction{sortType = list("Research Director")},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bDa" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/camera{c_tag = "Division Hallway South"; dir = 8; network = "Research"; pixel_x = 0; pixel_y = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bDb" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/requests_console{department = "Toxins Lab"; departmentType = 2; name = "Tox lab Requests Console"; pixel_x = -30; pixel_y = -3},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
@@ -4236,7 +4236,7 @@
"bDx" = (/obj/item/weapon/ore/silver,/obj/item/weapon/ore/silver,/turf/simulated/floor,/area/quartermaster/miningdock)
"bDy" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/camera{c_tag = "Mining Dock External"; dir = 8; network = "Cargo"},/turf/simulated/floor,/area/quartermaster/miningdock)
"bDz" = (/obj/structure/closet/emcloset,/turf/simulated/floor,/area/quartermaster/miningdock)
-"bDA" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/quartermaster/miningdock)
+"bDA" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/quartermaster/miningdock)
"bDB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/quartermaster/miningdock)
"bDC" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/maintenance/apmaint)
"bDD" = (/obj/structure/closet,/turf/simulated/floor/plating,/area/maintenance/apmaint)
@@ -4273,11 +4273,11 @@
"bEi" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bEj" = (/obj/effect/landmark/start{name = "Medical Doctor"},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bEk" = (/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/machinery/computer/med_data,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bEl" = (/obj/structure/lamarr,/turf/simulated/floor,/area/crew_quarters/heads/hor)
-"bEm" = (/obj/machinery/door/window/eastright{name = "Lab Cage Access"; req_access_txt = "30"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/crew_quarters/heads/hor)
-"bEn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bEo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bEp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/heads/hor)
+"bEl" = (/obj/structure/lamarr,/turf/simulated/floor,/area/crew_quarters/hor)
+"bEm" = (/obj/machinery/door/window/eastright{name = "Lab Cage Access"; req_access_txt = "30"},/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/crew_quarters/hor)
+"bEn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bEo" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 4; on = 1},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bEp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor/plating,/area/crew_quarters/hor)
"bEq" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 4; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bEr" = (/obj/structure/closet/secure_closet/scientist,/obj/machinery/camera{c_tag = "Toxins Lab West"; dir = 4; network = "SS13"},/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
"bEs" = (/obj/structure/closet/bombcloset,/turf/simulated/floor{icon_state = "white"},/area/toxins/toxinslab)
@@ -4315,7 +4315,7 @@
"bEY" = (/obj/structure/disposalpipe/segment,/obj/structure/cable,/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/security/nuke_storage)
"bEZ" = (/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "caution"; dir = 8},/area/hallway/primary/aft)
"bFa" = (/obj/machinery/door/window{icon = 'windoor.dmi'; dir = 8},/obj/machinery/door/window{base_state = "right"; dir = 4; icon_state = "right"},/obj/structure/table/reinforced,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor,/area/atmos)
-"bFb" = (/obj/structure/stool/chair{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
+"bFb" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
"bFc" = (/turf/simulated/floor,/area/atmos)
"bFd" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area/atmos)
"bFe" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/turf/simulated/floor{icon_state = "bot"},/area/atmos)
@@ -4343,12 +4343,12 @@
"bFA" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/surgery)
"bFB" = (/obj/structure/stool/bed/roller,/turf/simulated/floor{dir = 4; icon_state = "warning"},/area/medical/surgery)
"bFC" = (/obj/structure/table,/obj/item/weapon/storage/belt/medical,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bFD" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/crew_quarters/heads/hor)
-"bFE" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/crew_quarters/heads/hor)
-"bFF" = (/obj/structure/table,/obj/item/device/paicard,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_y = 5},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bFG" = (/obj/structure/table,/obj/item/weapon/circuitboard/aicore,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bFH" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
-"bFI" = (/obj/structure/closet/wardrobe/rd,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/heads/hor)
+"bFD" = (/turf/simulated/floor{dir = 2; icon_state = "warning"},/area/crew_quarters/hor)
+"bFE" = (/obj/structure/window/reinforced{dir = 4},/obj/machinery/light,/turf/simulated/floor{dir = 6; icon_state = "warning"},/area/crew_quarters/hor)
+"bFF" = (/obj/structure/table,/obj/item/device/paicard,/obj/item/weapon/book/manual/robotics_cyborgs{pixel_y = 5},/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bFG" = (/obj/structure/table,/obj/item/weapon/circuitboard/aicore,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bFH" = (/obj/structure/closet/secure_closet/RD,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
+"bFI" = (/obj/structure/closet/wardrobe/rd,/turf/simulated/floor{tag = "icon-cafeteria (NORTHEAST)"; icon_state = "cafeteria"; dir = 5},/area/crew_quarters/hor)
"bFJ" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall/r_wall,/area/toxins/xenobiology)
"bFK" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/mob/living/carbon/monkey,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bFL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
@@ -4358,9 +4358,9 @@
"bFP" = (/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bFQ" = (/obj/machinery/firealarm{dir = 8; pixel_x = -24},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bFR" = (/obj/effect/sign/securearea{desc = "A warning sign which reads 'NO SMOKING'"; icon_state = "nosmoking2"; name = "NO SMOKING"; pixel_x = 1; pixel_y = 29},/obj/machinery/light{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 5},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
-"bFS" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
+"bFS" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bFT" = (/obj/item/device/radio/intercom{pixel_y = 25},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 4; icon_state = "manifold-b-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
-"bFU" = (/obj/machinery/computer/security/telescreen{department = ""; desc = "Used for watching the explosives testing area."; layer = 4; name = "Test Chamber Telescreen"; network = "Bomb Testing"; pixel_x = 32; pixel_y = 0},/obj/structure/stool/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
+"bFU" = (/obj/machinery/computer/security/telescreen{department = ""; desc = "Used for watching the explosives testing area."; layer = 4; name = "Test Chamber Telescreen"; network = "Bomb Testing"; pixel_x = 32; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/driver_button{dir = 2; id = "toxinsdriver"; pixel_x = 24; pixel_y = 24},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bFV" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/toxins/observatory)
"bFW" = (/turf/simulated/floor/airless{dir = 9; icon_state = "warning"},/area/toxins/test_area)
"bFX" = (/turf/simulated/floor/airless{tag = "icon-warning (NORTH)"; icon_state = "warning"; dir = 1},/area/toxins/test_area)
@@ -4412,7 +4412,7 @@
"bGR" = (/obj/structure/table,/obj/item/weapon/storage/lglo_kit{pixel_x = 3; pixel_y = 4},/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/alarm{dir = 1; icon_state = "alarm0"; pixel_y = -22},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden{tag = "icon-manifold-r-f (WEST)"; icon_state = "manifold-r-f"; dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bGS" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bGT" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bGU" = (/turf/simulated/wall/r_wall,/area/crew_quarters/heads/hor)
+"bGU" = (/turf/simulated/wall/r_wall,/area/crew_quarters/hor)
"bGV" = (/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple{dir = 6},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/cable{icon_state = "0-4"; d2 = 4},/obj/machinery/power/apc{dir = 8; name = "Server Room APC"; pixel_x = -25},/obj/structure/filingcabinet,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bGW" = (/obj/machinery/camera{c_tag = "Research Director's Office"; dir = 2; network = "Research"; pixel_x = 22},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bGX" = (/obj/machinery/door/window/northleft{name = "Server Room"; req_access_txt = "30"},/obj/machinery/atmospherics/pipe/simple{dir = 4},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
@@ -4434,7 +4434,7 @@
"bHn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"bHo" = (/obj/machinery/alarm{dir = 4; pixel_x = -23; pixel_y = 0},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bHp" = (/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
-"bHq" = (/obj/machinery/computer/security/telescreen{department = ""; desc = "Used for watching the explosives testing area."; layer = 4; name = "Test Chamber Telescreen"; network = "Bomb Testing"; pixel_x = 32; pixel_y = 0},/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
+"bHq" = (/obj/machinery/computer/security/telescreen{department = ""; desc = "Used for watching the explosives testing area."; layer = 4; name = "Test Chamber Telescreen"; network = "Bomb Testing"; pixel_x = 32; pixel_y = 0},/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bHr" = (/obj/structure/table,/obj/machinery/atmospherics/unary/vent_pump{dir = 1; external_pressure_bound = 101.325; on = 1; pressure_checks = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bHs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/toxins/observatory)
"bHt" = (/turf/simulated/floor/airless{dir = 8; icon_state = "warning"},/area/toxins/test_area)
@@ -4476,7 +4476,7 @@
"bId" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall,/area/medical/surgery)
"bIe" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Operating Theatre"; req_access_txt = "45"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bIf" = (/obj/machinery/computer/rdservercontrol,/obj/machinery/atmospherics/pipe/simple,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
-"bIg" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
+"bIg" = (/obj/machinery/firealarm{dir = 1; pixel_y = -24},/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bIh" = (/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bIi" = (/obj/machinery/atmospherics/unary/cold_sink/freezer{current_temperature = 100; dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
"bIj" = (/obj/machinery/atmospherics/pipe/simple,/obj/structure/table,/turf/simulated/floor{icon_state = "dark"},/area/toxins/server)
@@ -4495,7 +4495,7 @@
"bIw" = (/obj/machinery/door/airlock/maintenance{name = "Toxins Lab Emergency Escape"; req_access_txt = "7"},/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/turf/simulated/floor/plating,/area/toxins/observatory)
"bIx" = (/obj/structure/cable{d2 = 2; icon_state = "4-8"; pixel_y = 1},/obj/machinery/atmospherics/unary/vent_scrubber{dir = 1; on = 1; scrub_N2O = 1; scrub_Toxins = 1},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bIy" = (/obj/machinery/camera{c_tag = "Toxins Lab Southeast"; dir = 1},/obj/structure/cable{d2 = 8; icon_state = "0-8"; pixel_y = 1},/obj/machinery/power/apc{dir = 2; name = "Toxins Lab Observatory APC"; pixel_x = 0; pixel_y = -25},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
-"bIz" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
+"bIz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/observatory)
"bIA" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/toxins/observatory)
"bIB" = (/turf/simulated/floor/airless{dir = 4; icon_state = "warning"},/area/toxins/test_area)
"bIC" = (/turf/simulated/floor/airless{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/toxins/test_area)
@@ -4532,13 +4532,13 @@
"bJh" = (/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
"bJi" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area)
"bJj" = (/obj/machinery/requests_console{announcementConsole = 1; department = "Chief Medical Officer's Office"; departmentType = 5; name = "CMO RC"; pixel_x = -32; pixel_y = 0},/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/machinery/keycard_auth{pixel_x = -25; pixel_y = 32},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
-"bJk" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/stool/chair,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
+"bJk" = (/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/effect/landmark/start{name = "Chief Medical Officer"},/obj/structure/stool/bed/chair,/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bJl" = (/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bJm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/cmo)
"bJn" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 4; icon_state = "2-4"; tag = "90Curve"},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bJo" = (/obj/structure/cable{d2 = 8; icon_state = "0-8"},/obj/machinery/power/apc{dir = 4; name = "Medbay APC"; pixel_x = 24; pixel_y = 0},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bJp" = (/obj/machinery/firealarm{pixel_y = 25},/obj/machinery/atmospherics/unary/vent_scrubber{on = 1; scrub_N2O = 0; scrub_Toxins = 0},/obj/machinery/camera{c_tag = "Surgery Observation"; dir = 2; network = "Medbay"; pixel_x = 22},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
-"bJq" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
+"bJq" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bJr" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Observation Shutters"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
"bJs" = (/obj/structure/table,/obj/item/weapon/hemostat,/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bJt" = (/obj/machinery/computer/operating{id = "medbay"},/obj/machinery/light{dir = 1},/obj/machinery/camera{c_tag = "Operating Theatre"; dir = 2; network = "Medbay"; pixel_x = 22},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -4604,7 +4604,7 @@
"bKB" = (/obj/structure/closet/extinguisher{pixel_x = 27},/obj/machinery/atmospherics/pipe/manifold/scrubbers/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bKC" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/wall,/area/medical/surgery)
"bKD" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
-"bKE" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
+"bKE" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bKF" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Observation Shutters"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
"bKG" = (/obj/structure/table,/obj/machinery/atmospherics/pipe/manifold{color = "red"; icon_state = "manifold-r-f"; level = 1; name = "pipe manifold"},/obj/item/weapon/scalpel,/obj/item/weapon/autopsy_scanner,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bKH" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -4618,7 +4618,7 @@
"bKP" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/effect/sign/biohazard{pixel_x = 28},/turf/simulated/floor{icon_state = "white"},/area/medical/research{name = "Research Division"})
"bKQ" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/machinery/requests_console{department = "Xenobiology"; departmentType = 0; pixel_x = -30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bKR" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
-"bKS" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
+"bKS" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bKT" = (/obj/machinery/atmospherics/valve,/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bKU" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk,/obj/machinery/light{icon_state = "tube1"; dir = 4},/turf/simulated/floor{icon_state = "white"},/area/toxins/xenobiology)
"bKV" = (/obj/machinery/mass_driver{dir = 4; id = "toxinsdriver"},/turf/simulated/floor/plating,/area/toxins/observatory)
@@ -4660,12 +4660,12 @@
"bLF" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; external_pressure_bound = 0; frequency = 1441; icon_state = "in"; id_tag = "waste_out"; initialize_directions = 1; internal_pressure_bound = 4000; on = 1; pressure_checks = 2; pump_direction = 0},/turf/simulated/floor/engine{name = "vacuum floor"; nitrogen = 0.01; oxygen = 0.01},/area/atmos)
"bLG" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/light/small{dir = 4},/turf/simulated/wall,/area/medical/cmo)
"bLH" = (/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
-"bLI" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
+"bLI" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{dir = 8; icon_state = "barber"},/area/medical/cmo)
"bLJ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/cmo)
"bLK" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bLL" = (/obj/machinery/door/firedoor/border_only,/obj/machinery/door/airlock/medical{name = "Surgery Observation"; req_access_txt = "5"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bLM" = (/obj/machinery/hologram/holopad,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
-"bLN" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
+"bLN" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bLO" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Observation Shutters"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor/plating,/area/medical/surgery)
"bLP" = (/obj/structure/table,/obj/item/weapon/surgicaldrill,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bLQ" = (/obj/machinery/optable{id = "medbay"},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -4725,7 +4725,7 @@
"bMS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/obj/effect/landmark{name = "lightsout"},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/disposalpipe/segment,/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bMT" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/wall,/area/medical/surgery)
"bMU" = (/obj/item/device/radio/intercom{dir = 8; name = "Station Intercom (General)"; pixel_x = -28},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
-"bMV" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
+"bMV" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bMW" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Observation Shutters"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/manifold{color = "blue"; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/turf/simulated/floor/plating,/area/medical/surgery)
"bMX" = (/obj/structure/table,/obj/item/weapon/retractor,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bMY" = (/obj/machinery/requests_console{department = "Operating Theatre"; departmentType = 0; name = "OR RC"; pixel_x = 30; pixel_y = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -4783,7 +4783,7 @@
"bNY" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/cmo)
"bNZ" = (/obj/machinery/requests_console{announcementConsole = 0; department = "Medbay"; departmentType = 1; name = "Medbay RC"; pixel_x = 30; pixel_y = 0; pixel_z = 0},/turf/simulated/floor{icon_state = "white"},/area/medical/medbay)
"bOa" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 1; on = 1},/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
-"bOb" = (/obj/structure/stool/chair{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
+"bOb" = (/obj/structure/stool/bed/chair{dir = 4},/obj/machinery/light,/turf/simulated/floor{icon_state = "dark"},/area/medical/surgery)
"bOc" = (/obj/structure/grille,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "Observation Shutters"; name = "Observation Shutters"; opacity = 0},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/turf/simulated/floor/plating,/area/medical/surgery)
"bOd" = (/obj/structure/table,/obj/item/weapon/cautery{pixel_x = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bOe" = (/obj/structure/table,/obj/machinery/light,/obj/item/device/radio/intercom{pixel_y = -25},/obj/item/weapon/cleaner,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
@@ -4805,7 +4805,7 @@
"bOu" = (/obj/machinery/atmospherics/portables_connector{dir = 4},/obj/machinery/portable_atmospherics/scrubber,/turf/simulated/floor{icon_state = "green"; dir = 8},/area/hallway/primary/aft)
"bOv" = (/obj/machinery/atmospherics/pipe/simple{color = "red"; dir = 10; icon_state = "intact-r"; initialize_directions = 10; level = 2},/turf/simulated/wall/r_wall,/area/maintenance/asmaint)
"bOw" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/requests_console{department = "Atmospherics"; departmentType = 4; name = "Atmos RC"; pixel_x = 0; pixel_y = -30},/turf/simulated/floor,/area/atmos)
-"bOx" = (/obj/structure/stool/chair,/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
+"bOx" = (/obj/structure/stool/bed/chair,/obj/effect/landmark/start{name = "Atmospheric Technician"},/turf/simulated/floor,/area/atmos)
"bOy" = (/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; tag = "Streight"},/turf/simulated/floor,/area/atmos)
"bOz" = (/obj/machinery/door/window/northleft{dir = 4; icon_state = "left"; name = "Atmos"; req_access_txt = "24"},/obj/structure/cable{d1 = 4; d2 = 8; icon_state = "4-8"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/atmos)
"bOA" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/cable{d1 = 1; d2 = 8; icon_state = "1-8"; tag = "90Curve"},/turf/simulated/floor,/area/atmos)
@@ -4869,8 +4869,8 @@
"bPG" = (/obj/structure/stool/bed/roller,/obj/machinery/camera{c_tag = "Surgery Recovery Room"; dir = 2; network = "Medbay"; pixel_x = 22},/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bPH" = (/obj/machinery/firealarm{pixel_y = 25},/obj/structure/stool/bed/roller,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bPI" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating,/area/medical/virology)
-"bPJ" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"bPK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
+"bPJ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
+"bPK" = (/obj/structure/disposalpipe/segment{dir = 4; icon_state = "pipe-c"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bPL" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/effect/sign/biohazard,/turf/simulated/wall/r_wall,/area/medical/virology)
"bPM" = (/obj/structure/disposalpipe/segment{dir = 4},/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -23; pixel_y = -8; req_access_txt = "39"},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bPN" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
@@ -4952,8 +4952,8 @@
"bRl" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bRm" = (/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
"bRn" = (/obj/item/device/radio/intercom{pixel_y = -25},/obj/structure/stool/bed,/turf/simulated/floor{icon_state = "white"},/area/medical/surgery)
-"bRo" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"bRp" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 23; pixel_y = 8; req_access_txt = "39"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
+"bRo" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
+"bRp" = (/obj/structure/disposalpipe/segment{dir = 1},/obj/machinery/access_button{command = "cycle_exterior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = 23; pixel_y = 8; req_access_txt = "39"},/obj/machinery/light{icon_state = "tube1"; dir = 4},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bRq" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/light,/obj/machinery/alarm{dir = 4; icon_state = "alarm0"; pixel_x = -22},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bRr" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/obj/machinery/access_button{command = "cycle_interior"; master_tag = "virology_airlock_control"; name = "Virology Access Button"; pixel_x = -8; pixel_y = -19; req_access_txt = "39"},/obj/machinery/sink{dir = 4; icon_state = "sink"; pixel_x = 11; pixel_y = 20},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bRs" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/maintenance/asmaint2)
@@ -5054,9 +5054,9 @@
"bTj" = (/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/assembly/assembly_line)
"bTk" = (/obj/structure/cable{icon_state = "0-2"; d2 = 2},/obj/machinery/power/apc{dir = 1; name = "Assembly Line APC"; pixel_x = 1; pixel_y = 25},/turf/simulated/floor,/area/assembly/assembly_line)
"bTl" = (/obj/effect/landmark/start{name = "Roboticist"},/turf/simulated/floor,/area/assembly/assembly_line)
-"bTm" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/assembly/assembly_line)
+"bTm" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/assembly/assembly_line)
"bTn" = (/obj/machinery/light{dir = 1},/obj/machinery/alarm{pixel_y = 24},/turf/simulated/floor,/area/assembly/assembly_line)
-"bTo" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/assembly/assembly_line)
+"bTo" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/assembly/assembly_line)
"bTp" = (/obj/structure/table/reinforced,/obj/machinery/door/window/westright{name = "Assembly Line Desk"; req_access_txt = "29"},/obj/machinery/door/window/eastleft{name = "Reception Window"},/turf/simulated/floor,/area/assembly/assembly_line)
"bTq" = (/obj/machinery/atmospherics/pipe/manifold{color = "red"; dir = 8; icon_state = "manifold-r-f"; initialize_directions = 11; level = 1; name = "pipe manifold"},/turf/simulated/floor,/area/hallway/primary/aft)
"bTr" = (/obj/machinery/atmospherics/unary/vent_scrubber{dir = 8; icon_state = "off"; on = 1; scrub_N2O = 0; scrub_Toxins = 0},/turf/simulated/floor,/area/hallway/primary/aft)
@@ -5120,7 +5120,7 @@
"bUx" = (/obj/machinery/atmospherics/portables_connector{dir = 2; name = "Gas Input"},/obj/machinery/light{dir = 1},/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bUy" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor{icon_state = "floorgrime"},/area/maintenance/incinerator)
"bUz" = (/obj/structure/table,/obj/item/device/radio/intercom{pixel_x = -25},/obj/item/weapon/virusdish/random{pixel_x = -6; pixel_y = 5},/obj/item/weapon/virusdish/random{pixel_x = 3; pixel_y = 2},/obj/item/weapon/virusdish/random,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
-"bUA" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
+"bUA" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bUB" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bUC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor{icon_state = "white"},/area/medical/virology)
"bUD" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/turf/simulated/floor/plating,/area/medical/virology)
@@ -5496,8 +5496,8 @@
"cbJ" = (/obj/structure/disposaloutlet,/obj/structure/disposalpipe/trunk{dir = 1},/turf/simulated/floor/plating/airless,/area)
"cbK" = (/obj/structure/reagent_dispensers/fueltank,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"cbL" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"cbM" = (/obj/structure/stool/chair,/obj/item/weapon/cigpacket,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
-"cbN" = (/obj/structure/stool/chair,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
+"cbM" = (/obj/structure/stool/bed/chair,/obj/item/weapon/cigpacket,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
+"cbN" = (/obj/structure/stool/bed/chair,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"cbO" = (/obj/machinery/space_heater,/turf/simulated/floor/plating,/area/maintenance/asmaint2)
"cbP" = (/obj/structure/table,/obj/item/stack/sheet/metal{amount = 50},/obj/item/stack/sheet/metal{amount = 50},/turf/simulated/floor,/area/engine/engineering)
"cbQ" = (/obj/structure/table,/obj/item/weapon/cable_coil{pixel_x = 3; pixel_y = -7},/obj/item/weapon/cable_coil,/obj/item/weapon/airlock_electronics,/obj/item/weapon/airlock_electronics,/turf/simulated/floor,/area/engine/engineering)
@@ -5757,9 +5757,9 @@
"cgK" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma3"},/area/alien)
"cgL" = (/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cgM" = (/turf/unsimulated/wall{icon = 'mineral_walls.dmi'; icon_state = "plasma1"},/area/alien)
-"cgN" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
+"cgN" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"cgO" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
-"cgP" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
+"cgP" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/syndicate_elite/mothership)
"cgQ" = (/obj/item/weapon/paper{info = "Some stuff is missing..."; name = "Insert alien artifacts here."},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cgR" = (/obj/machinery/door/airlock/hatch,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor5"},/area/alien)
"cgS" = (/turf/space,/area/syndicate_mothership/elite_squad)
@@ -5815,7 +5815,7 @@
"chQ" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom)
"chR" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom)
"chS" = (/turf/unsimulated/floor{name = "plating"},/area/centcom)
-"chT" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
+"chT" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"chU" = (/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"},/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/syndicate_station/start)
"chV" = (/obj/machinery/door/poddoor{id = "syndicate"; name = "Outer Airlock"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor4"},/area/syndicate_station/start)
"chW" = (/turf/unsimulated/floor{name = "plating"},/turf/simulated/shuttle/wall{dir = 8; icon_state = "diagonalWall3"},/area/shuttle/administration/centcom)
@@ -6042,7 +6042,7 @@
"cmj" = (/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cmk" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cml" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
-"cmm" = (/obj/structure/stool/chair{name = "Judge"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"cmm" = (/obj/structure/stool/bed/chair{name = "Judge"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cmn" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cmo" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cmp" = (/obj/machinery/door/window/northleft,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
@@ -6055,13 +6055,13 @@
"cmw" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"cmx" = (/obj/machinery/door/airlock/centcom{name = "Teleporter Bay"; opacity = 1; req_access_txt = "107"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
"cmy" = (/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
-"cmz" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
-"cmA" = (/obj/structure/stool/chair{name = "Bailiff"},/obj/machinery/door/window/northleft,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"cmz" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
+"cmA" = (/obj/structure/stool/bed/chair{name = "Bailiff"},/obj/machinery/door/window/northleft,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cmB" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cmC" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
-"cmD" = (/obj/structure/stool/chair{name = "Witness"},/obj/machinery/door/window/northleft,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"cmD" = (/obj/structure/stool/bed/chair{name = "Witness"},/obj/machinery/door/window/northleft,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cmE" = (/obj/structure/table/woodentable,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
-"cmF" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
+"cmF" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cmG" = (/turf/unsimulated/wall,/area/centcom/specops)
"cmH" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/centcom/control)
"cmI" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 8},/area/centcom/control)
@@ -6089,16 +6089,16 @@
"cne" = (/obj/structure/closet/secure_closet/anaesthetic{pixel_x = 5},/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
"cnf" = (/obj/machinery/sleeper,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
"cng" = (/obj/machinery/sleep_console,/turf/unsimulated/floor{icon_state = "white"},/area/centcom/test)
-"cnh" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
+"cnh" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cni" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cnj" = (/obj/structure/rack,/obj/item/clothing/glasses/hud/health,/obj/item/weapon/gun/energy/taser,/obj/item/weapon/storage/backpack/medic/full,/obj/item/clothing/suit/space/syndicate/black/med,/obj/item/clothing/head/helmet/space/syndicate/black/med,/obj/item/weapon/paper{info = "Each Medical ERT Memeber has: One Taser, OPne Medic pack with Anasthetic, a hypo-injector and an assortment of meds: Combat, QuikHeal and Cryo-in-a-syringe. Only Cryo heals without side effects, but it will put you to sleep. Combat will make you faster and temp resistant but mutate you, and the QuikHeal is very disoreintating."; name = "Medical ERT information"},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
-"cnk" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
+"cnk" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"cnl" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"cnm" = (/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnn" = (/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
"cno" = (/mob/living/silicon/decoy{name = "A.L.I.C.E."},/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
"cnp" = (/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
-"cnq" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
+"cnq" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"cnr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"cns" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"cnt" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
@@ -6107,14 +6107,14 @@
"cnw" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 4},/area/centcom/control)
"cnx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"cny" = (/obj/machinery/computer/ordercomp,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
-"cnz" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
+"cnz" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnA" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; listening = 0; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnB" = (/obj/machinery/door/window{name = "AI Core Door"; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
"cnC" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
-"cnD" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
+"cnD" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnE" = (/obj/machinery/computer/crew,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnF" = (/turf/unsimulated/floor{icon_state = "greencorner"; dir = 1},/area/centcom/control)
-"cnG" = (/obj/structure/stool/chair,/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/control)
+"cnG" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{dir = 2; icon_state = "carpetside"},/area/centcom/control)
"cnH" = (/obj/structure/closet/bombcloset,/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/specops)
"cnI" = (/turf/unsimulated/floor{tag = "icon-redyellowfull"; icon_state = "redyellowfull"},/area/centcom/specops)
"cnJ" = (/obj/machinery/optable/portable,/obj/machinery/camera{c_tag = "ERT Armoury Left"; dir = 4; network = "CREED"},/obj/item/weapon/storage/briefcase/surgery,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/centcom/specops)
@@ -6130,7 +6130,7 @@
"cnT" = (/obj/machinery/door/airlock/secure/centcom{name = "Special Operations"; req_access_txt = "108"},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/specops)
"cnU" = (/obj/machinery/door/airlock/centcom{name = "Bridge"; opacity = 1; req_access_txt = "109"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cnV" = (/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
-"cnW" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
+"cnW" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "circuit"},/area/centcom/control)
"cnX" = (/obj/machinery/door/airlock/centcom{name = "Courthouse"; opacity = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cnY" = (/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "ERTSEC"; name = "ERT Security Room"; p_open = 0},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"cnZ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
@@ -6150,7 +6150,7 @@
"con" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/specops)
"coo" = (/turf/unsimulated/floor{dir = 6; icon_state = "asteroid8"; name = "sand"; tag = "icon-asteroid8 (SOUTHEAST)"},/area/centcom/specops)
"cop" = (/obj/structure/table/reinforced,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
-"coq" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
+"coq" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cor" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
"cos" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
"cot" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
@@ -6169,11 +6169,11 @@
"coG" = (/obj/machinery/computer/secure_data,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"coH" = (/obj/machinery/computer/security,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"coI" = (/obj/structure/table/reinforced,/obj/item/weapon/card/id/captains_spare,/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
-"coJ" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
+"coJ" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
"coK" = (/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
-"coL" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
+"coL" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/centcom/control)
"coM" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
-"coN" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"coN" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"coO" = (/obj/structure/rack,/obj/item/weapon/pinpointer,/obj/item/clothing/suit/space/syndicate/black/blue,/obj/item/clothing/head/helmet/space/syndicate/black/blue,/obj/item/weapon/storage/belt/security/full,/obj/effect/landmark{name = "nukecode"},/obj/item/weapon/zippo,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/specops)
"coP" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "ERTIN"; name = "ERT-Shuttle Airlock"; opacity = 0},/turf/unsimulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/centcom/specops)
"coQ" = (/obj/structure/bookcase{name = "bookcase (Tactics)"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
@@ -6183,12 +6183,12 @@
"coU" = (/obj/structure/bookcase{name = "bookcase (Reports)"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"coV" = (/obj/structure/table/woodentable,/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control)
"coW" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
-"coX" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
-"coY" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"coX" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"coY" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"coZ" = (/turf/unsimulated/floor{tag = "icon-loadingarea"; icon_state = "loadingarea"},/area/centcom/specops)
"cpa" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; listening = 0; name = "Station Intercom (General)"; pixel_x = -28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cpb" = (/obj/structure/closet/secure_closet/injection,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
-"cpc" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control)
+"cpc" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{dir = 8; icon_state = "wood"},/area/centcom/control)
"cpd" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-burst_l (EAST)"; icon_state = "burst_l"; dir = 4},/turf/space,/area/shuttle/specops/centcom)
"cpe" = (/turf/simulated/shuttle/wall{icon_state = "wall3"},/area/shuttle/specops/centcom)
"cpf" = (/obj/machinery/door/airlock/external,/obj/machinery/door/poddoor{density = 0; icon_state = "pdoor0"; id = "ERTIN"; name = "ERT-Shuttle Airlock"; opacity = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
@@ -6197,12 +6197,12 @@
"cpi" = (/obj/structure/table,/obj/item/assembly/shock_kit{icon = 'assemblies.dmi'},/obj/item/device/assembly/signaler,/obj/item/weapon/handcuffs,/obj/item/weapon/melee/classic_baton,/turf/unsimulated/floor{icon_state = "whiteshiny"},/area/centcom/control)
"cpj" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion (EAST)"; icon_state = "propulsion"; dir = 4},/turf/space,/area/shuttle/specops/centcom)
"cpk" = (/obj/structure/window/reinforced{dir = 4},/obj/structure/shuttle/engine/heater{tag = "icon-heater (WEST)"; icon_state = "heater"; dir = 8},/turf/unsimulated/floor,/area/shuttle/specops/centcom)
-"cpl" = (/obj/machinery/computer/security/telescreen{name = "ERT Monitor"; network = "CREED"; pixel_y = 26},/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
+"cpl" = (/obj/machinery/computer/security/telescreen{name = "ERT Monitor"; network = "CREED"; pixel_y = 26},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpm" = (/obj/machinery/computer/specops_shuttle,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpn" = (/obj/machinery/camera{c_tag = "ERT Shuttle"; dir = 2; network = "CREED"},/obj/structure/table/reinforced,/obj/machinery/recharger{pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpo" = (/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
-"cpp" = (/obj/machinery/door_control{id = "ERTIN"; pixel_y = 26},/obj/structure/stool/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
-"cpq" = (/obj/structure/stool/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
+"cpp" = (/obj/machinery/door_control{id = "ERTIN"; pixel_y = 26},/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
+"cpq" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpr" = (/obj/structure/table/woodentable{dir = 9},/obj/item/weapon/reagent_containers/food/drinks/flask,/obj/item/clothing/mask/cigarette/cigar/havanian,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cps" = (/obj/machinery/computer/security/telescreen{name = "Spec. Ops. Monitor"; network = "CREED"},/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cpt" = (/obj/structure/table/woodentable{dir = 5},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
@@ -6210,17 +6210,17 @@
"cpv" = (/turf/unsimulated/floor{tag = "icon-warning"; icon_state = "warning"},/area/centcom/control)
"cpw" = (/obj/machinery/door/airlock/external{name = "Entrylock"},/obj/machinery/door/poddoor{icon_state = "pdoor1"; id = "ERTOUT"; name = "Entrylock"; p_open = 0},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpx" = (/obj/structure/table/woodentable{dir = 10},/obj/machinery/door_control{name = "Spec Ops Ready Room"; desc = "A remote control switch to block view of the singularity."; icon_state = "doorctrl0"; pixel_y = 15; req_access_txt = "11"; id = "CREED"},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
-"cpy" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
+"cpy" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cpz" = (/obj/item/device/radio/intercom{broadcasting = 1; dir = 1; frequency = 1441; name = "Spec Ops Intercom"; pixel_y = 28},/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cpA" = (/obj/machinery/door/airlock/secure/centcom{name = "General Access"; req_access_txt = "101"},/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/control)
"cpB" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor,/area/centcom/control)
-"cpC" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
+"cpC" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
"cpD" = (/obj/machinery/dna_scannernew,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpE" = (/obj/machinery/computer/cloning,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpF" = (/obj/machinery/clonepod,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpG" = (/obj/machinery/computer/curer,/obj/item/weapon/storage/syringes,/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
-"cpH" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
-"cpI" = (/obj/machinery/door_control{desc = "A remote control switch for the Entrylock."; id = "ERTOUT"; name = "Entrylock Control"; pixel_x = 26},/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
+"cpH" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
+"cpI" = (/obj/machinery/door_control{desc = "A remote control switch for the Entrylock."; id = "ERTOUT"; name = "Entrylock Control"; pixel_x = 26},/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor4"},/area/shuttle/specops/centcom)
"cpJ" = (/turf/space,/turf/simulated/shuttle/wall{dir = 4; icon_state = "diagonalWall3"},/area/shuttle/specops/centcom)
"cpK" = (/obj/machinery/telecomms/allinone,/turf/unsimulated/floor{icon_state = "grimy"},/area/centcom/creed)
"cpL" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{icon_state = "dark"},/area/centcom/control)
@@ -6247,25 +6247,25 @@
"cqg" = (/obj/machinery/door/poddoor{id = "CentComPort"; name = "Security Doors"},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
"cqh" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f9"; icon_state = "swall_f9"; dir = 2},/area/shuttle/escape/centcom)
"cqi" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
-"cqj" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
+"cqj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"cqk" = (/obj/machinery/computer/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
"cql" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqm" = (/obj{anchored = 1; icon = 'shuttle.dmi'; icon_state = "floor3"; layer = 1; name = "floor"},/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/escape/centcom)
-"cqn" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
+"cqn" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon_state = "delivery"},/area/centcom/control)
"cqo" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/shuttle/escape/centcom)
"cqp" = (/obj/machinery/computer/atmos_alert,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
-"cqq" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
+"cqq" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqr" = (/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
-"cqs" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
+"cqs" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqt" = (/obj/machinery/computer/security,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqu" = (/turf/unsimulated/wall{desc = "Why it no open!"; icon = 'rapid_pdoor.dmi'; icon_state = "pdoor1"; name = "Shuttle Bay Blast Door"},/area/centcom/ferry)
"cqv" = (/turf/unsimulated/floor{tag = "icon-warnplate (WEST)"; icon_state = "warnplate"; dir = 8},/area/centcom/ferry)
"cqw" = (/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry)
"cqx" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry)
"cqy" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/control)
-"cqz" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control)
+"cqz" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control)
"cqA" = (/turf/unsimulated/floor{icon_state = "bot"},/area/centcom/control)
-"cqB" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
+"cqB" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "green"; dir = 4},/area/centcom/control)
"cqC" = (/obj/machinery/computer/crew,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqD" = (/obj/machinery/computer/communications,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqE" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s6"; icon_state = "swall_s6"; dir = 2},/area/shuttle/transport1/centcom)
@@ -6281,7 +6281,7 @@
"cqO" = (/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"cqP" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f5"; icon_state = "swall_f5"; dir = 2},/area/shuttle/transport1/centcom)
"cqQ" = (/turf/simulated/shuttle/wall{tag = "icon-swall11"; icon_state = "swall11"; dir = 2},/area/shuttle/transport1/centcom)
-"cqR" = (/obj/structure/stool/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
+"cqR" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"cqS" = (/obj/structure/shuttle/engine/heater{tag = "icon-heater (EAST)"; icon_state = "heater"; dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/plating/airless,/area/shuttle/transport1/centcom)
"cqT" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_l (WEST)"; icon_state = "propulsion_l"; dir = 8},/turf/space,/area/shuttle/transport1/centcom)
"cqU" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{icon_state = "green"; dir = 8},/area/centcom/control)
@@ -6289,23 +6289,23 @@
"cqW" = (/turf/unsimulated/floor{icon_state = "grass1"; name = "grass"},/area/centcom/evac)
"cqX" = (/obj/structure/table,/obj/item/weapon/storage/firstaid/fire,/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 3},/obj/item/weapon/crowbar,/obj/item/weapon/extinguisher,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"cqY" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/shuttle/floor,/area/shuttle/escape/centcom)
-"cqZ" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
+"cqZ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"cra" = (/obj/machinery/door/unpowered/shuttle,/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"crb" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
"crc" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
"crd" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
-"cre" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
+"cre" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"crf" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 1},/turf/simulated/floor/plating,/area/shuttle/escape/centcom)
"crg" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s5"; icon_state = "swall_s5"; dir = 2},/area/shuttle/transport1/centcom)
"crh" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f10"; icon_state = "swall_f10"; dir = 2},/area/shuttle/transport1/centcom)
"cri" = (/turf/simulated/shuttle/floor,/turf/simulated/shuttle/wall{tag = "icon-swall_f6"; icon_state = "swall_f6"; dir = 2},/area/shuttle/transport1/centcom)
-"crj" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
+"crj" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/shuttle/floor,/area/shuttle/transport1/centcom)
"crk" = (/obj/structure/shuttle/engine/propulsion{tag = "icon-propulsion_r (WEST)"; icon_state = "propulsion_r"; dir = 8},/turf/space,/area/shuttle/transport1/centcom)
"crl" = (/turf/unsimulated/floor{tag = "icon-warnplate (EAST)"; icon_state = "warnplate"; dir = 4},/area/centcom/ferry)
"crm" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/ferry)
"crn" = (/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/unsimulated/wall,/area/centcom/ferry)
-"cro" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/control)
-"crp" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/control)
+"cro" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; heat_capacity = 1; icon_state = "warning"},/area/centcom/control)
+"crp" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{dir = 4; heat_capacity = 1; icon_state = "warning"},/area/centcom/control)
"crq" = (/obj/effect/sign/securearea{name = "EXTERNAL AIRLOCK"; desc = "A warning sign which reads 'EXTERNAL AIRLOCK'"; icon_state = "space"; pixel_x = -1},/turf/unsimulated/wall,/area/centcom/evac)
"crr" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
"crs" = (/turf/unsimulated/floor{icon_state = "floor"},/area/centcom/evac)
@@ -6350,7 +6350,7 @@
"csf" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/centcom/control)
"csg" = (/turf/unsimulated/floor{dir = 6; icon_state = "warning"},/area/centcom/control)
"csh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{name = "plating"},/area/centcom/evac)
-"csi" = (/obj/structure/stool/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
+"csi" = (/obj/structure/stool/bed/chair,/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"csj" = (/obj/structure/table,/obj/machinery/blender{pixel_y = 11},/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding)
"csk" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/shaker,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding)
"csl" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "freezerfloor"; dir = 2},/area/centcom/holding)
@@ -6382,10 +6382,10 @@
"csL" = (/obj/machinery/vending/coffee,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"csM" = (/obj/effect/overlay{anchored = 1; icon = 'beach.dmi'; icon_state = "crab"; name = "crab"},/turf/unsimulated/floor{icon = 'icons/misc/beach2.dmi'; icon_state = "sandwater"},/area/centcom/holding)
"csN" = (/turf/unsimulated/floor{icon = 'icons/misc/beach2.dmi'; icon_state = "sandwater"},/area/centcom/holding)
-"csO" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
+"csO" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
"csP" = (/obj/structure/table/reinforced{dir = 4; icon_state = "reinf_tabledir"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
"csQ" = (/obj/structure/table/reinforced{dir = 8; icon_state = "reinf_tabledir"},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
-"csR" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
+"csR" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{icon_state = "floor"},/area/tdome)
"csS" = (/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"csT" = (/obj/machinery/sleep_console{icon_state = "sleeperconsole-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
"csU" = (/obj/machinery/sleeper{icon_state = "sleeper_0-r"; orient = "RIGHT"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
@@ -6396,9 +6396,9 @@
"csZ" = (/turf/unsimulated/floor{icon = 'beach.dmi'; icon_state = "water"; name = "water"},/area/centcom/holding)
"cta" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 5; health = 1e+007},/turf/unsimulated/floor{name = "plating"},/area/tdome)
"ctb" = (/obj/item/weapon/storage/firstaid/regular{pixel_x = 2; pixel_y = 6},/obj/item/weapon/storage/firstaid/regular{pixel_x = -2; pixel_y = 4},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/shuttle/escape/centcom)
-"ctc" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)
+"ctc" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)
"ctd" = (/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)
-"cte" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)
+"cte" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/shuttle/floor4,/area/shuttle/escape/centcom)
"ctf" = (/obj/machinery/vending/cigarette,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"ctg" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
"cth" = (/obj/machinery/vending/cola,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/centcom/holding)
@@ -6433,7 +6433,7 @@
"ctK" = (/obj/machinery/vending/coffee,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctL" = (/obj/structure/closet/secure_closet/meat,/turf/unsimulated/floor{icon_state = "white"},/area/tdome)
"ctM" = (/obj/structure/closet/secure_closet/fridge,/turf/unsimulated/floor{icon_state = "white"},/area/tdome)
-"ctN" = (/obj/structure/stool/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
+"ctN" = (/obj/structure/stool/bed/chair,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctO" = (/obj/structure/disposalpipe/trunk,/obj/structure/disposaloutlet,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctP" = (/obj/machinery/vending/snack,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctQ" = (/obj/structure/table{icon_state = "tabledir"; dir = 9},/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/obj/item/weapon/storage/donkpocket_kit{pixel_x = 3; pixel_y = 3},/turf/unsimulated/floor{icon_state = "white"},/area/tdome)
@@ -6442,7 +6442,7 @@
"ctT" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctU" = (/obj/item/weapon/camera_test,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctV" = (/obj/structure/disposalpipe/segment,/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
-"ctW" = (/obj/structure/stool/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
+"ctW" = (/obj/structure/stool/bed/chair,/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeobserve"},/turf/unsimulated/floor{tag = "icon-redbluefull (WEST)"; icon_state = "redbluefull"; dir = 8},/area/tdome/tdomeobserve)
"ctX" = (/obj/structure/rack,/obj/item/clothing/under/color/red,/obj/item/clothing/shoes/brown,/obj/item/weapon/melee/energy/axe,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"ctY" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/turf/simulated/floor,/area/tdome)
"ctZ" = (/obj/structure/window/reinforced{dir = 5; health = 1e+007},/obj/effect/forcefield{desc = "You can't get in. Heh."; layer = 1; name = "Blocker"},/obj/structure/disposalpipe/segment,/turf/simulated/floor,/area/tdome)
@@ -6481,15 +6481,15 @@
"cuG" = (/obj/structure/rack,/obj/item/clothing/under/color/green,/obj/item/clothing/shoes/brown,/obj/item/clothing/suit/armor/vest,/obj/item/clothing/head/helmet/swat,/obj/item/weapon/gun/energy/laser,/turf/unsimulated/floor{icon_state = "dark"},/area/tdome)
"cuH" = (/turf/unsimulated/floor{icon_state = "greencorner"},/area/tdome)
"cuI" = (/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
-"cuJ" = (/obj/structure/stool/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
+"cuJ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuK" = (/obj/item/weapon/extinguisher,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuL" = (/obj/machinery/atmospherics/valve,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
-"cuM" = (/obj/structure/stool/chair{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
+"cuM" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/disposalpipe/segment,/obj/effect/landmark{name = "tdomeadmin"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuN" = (/obj/machinery/computer/security/telescreen,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuO" = (/obj/machinery/atmospherics/portables_connector{dir = 1},/obj/machinery/portable_atmospherics/canister/sleeping_agent{pixel_x = 1},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuP" = (/obj/item/weapon/wrench,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuQ" = (/obj/structure/disposalpipe/trunk{dir = 1},/obj/machinery/disposal,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
-"cuR" = (/obj/structure/stool/chair,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
+"cuR" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuS" = (/obj/structure/table,/obj/machinery/recharger{pixel_y = 4},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuT" = (/obj/structure/table{dir = 5; icon_state = "tabledir"},/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/obj/item/weapon/chem_grenade/cleaner,/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
"cuU" = (/obj/machinery/computer/pod{id = "thunderdomeaxe"; name = "Thunderdome Axe Supply"},/turf/unsimulated/floor{tag = "icon-redyellowfull (NORTHEAST)"; icon_state = "redyellowfull"; dir = 5},/area/tdome/tdomeadmin)
@@ -6530,7 +6530,7 @@
"cvD" = (/obj/structure/stool,/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station)
"cvE" = (/turf/unsimulated/wall{icon = 'walls.dmi'; icon_state = "rock"; name = "grass"},/area/planet/clown)
"cvF" = (/turf/unsimulated/wall{icon = 'floors.dmi'; icon_state = "grass3"; name = "grass"},/area/planet/clown)
-"cvG" = (/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station)
+"cvG" = (/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{dir = 8; icon_state = "carpetside"},/area/wizard_station)
"cvH" = (/obj/structure/table/woodentable,/obj/item/weapon/pen,/turf/unsimulated/floor{icon_state = "carpet"; dir = 2},/area/wizard_station)
"cvI" = (/obj/effect/showcase,/turf/unsimulated/floor{dir = 1; icon_state = "chapel"},/area/wizard_station)
"cvJ" = (/turf/unsimulated/floor{dir = 1; icon_state = "carpetside"},/area/wizard_station)
@@ -6608,7 +6608,7 @@
"cxd" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cxe" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced,/turf/unsimulated/floor{name = "plating"},/area/derelict/ship)
"cxf" = (/obj/machinery/door/airlock/glass{name = "Hibernation Pods"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
-"cxg" = (/obj/structure/stool/chair{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cxg" = (/obj/structure/stool/bed/chair{dir = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cxh" = (/obj/structure/table,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cxi" = (/turf/simulated/shuttle/wall{tag = "icon-swall3"; icon_state = "swall3"; dir = 2},/area/derelict/ship)
"cxj" = (/obj/item/device/multitool,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
@@ -6636,7 +6636,7 @@
"cxF" = (/turf/simulated/shuttle/wall{tag = "icon-swall12"; icon_state = "swall12"; dir = 2},/area)
"cxG" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s10"; icon_state = "swall_s10"; dir = 2},/area)
"cxH" = (/obj/structure/table,/obj/item/device/analyzer,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cxI" = (/obj/structure/stool/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cxI" = (/obj/structure/stool/bed/chair{dir = 8},/obj/effect/decal/remains/human,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cxJ" = (/obj/machinery/light/small{dir = 4},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cxK" = (/obj/machinery/door/airlock/glass{name = "Living Module"},/turf/simulated/shuttle/floor{icon_state = "floor3"},/area/derelict/ship)
"cxL" = (/obj/machinery/door/unpowered/shuttle,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
@@ -6660,8 +6660,8 @@
"cyd" = (/turf/simulated/shuttle/wall{tag = "icon-swall13"; icon_state = "swall13"; dir = 2},/area)
"cye" = (/turf/simulated/shuttle/wall{tag = "icon-swall_s9"; icon_state = "swall_s9"; dir = 2},/area)
"cyf" = (/obj/item/weapon/shard{icon_state = "medium"},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cyg" = (/obj/item/weapon/shard,/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
-"cyh" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cyg" = (/obj/item/weapon/shard,/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
+"cyh" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cyi" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cyj" = (/obj/structure/cable,/obj/structure/computerframe{anchored = 1},/obj/item/weapon/cable_coil/cut,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
"cyk" = (/obj/structure/rack,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/tank/emergency_oxygen,/turf/unsimulated/floor{icon = 'shuttle.dmi'; icon_state = "floor3"},/area/derelict/ship)
@@ -6749,10 +6749,10 @@
"czO" = (/obj/structure/table,/obj/item/device/radio,/turf/simulated/floor,/area/tcommsat/computer)
"czP" = (/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/turf/simulated/floor,/area/tcommsat/computer)
"czQ" = (/obj/structure/cable{d1 = 2; d2 = 8; icon_state = "2-8"; tag = "90Curve"},/turf/simulated/floor,/area/tcommsat/computer)
-"czR" = (/obj/structure/stool/chair{dir = 4},/turf/simulated/floor,/area/tcommsat/computer)
+"czR" = (/obj/structure/stool/bed/chair{dir = 4},/turf/simulated/floor,/area/tcommsat/computer)
"czS" = (/obj/machinery/computer/telecomms/monitor{network = "tcommsat"},/turf/simulated/floor,/area/tcommsat/computer)
"czT" = (/obj/structure/stool/bed,/obj/item/weapon/bedsheet/orange,/obj/machinery/light{dir = 8},/turf/simulated/floor,/area/tcommsat/lounge)
-"czU" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/tcommsat/lounge)
+"czU" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/tcommsat/lounge)
"czV" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/machinery/light{dir = 4},/turf/simulated/floor,/area/tcommsat/lounge)
"czW" = (/obj/machinery/light{dir = 8},/turf/space,/area/turret_protected/tcomwest)
"czX" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/turf/space,/area/turret_protected/tcomwest)
@@ -6766,9 +6766,9 @@
"cAf" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/wall/r_wall,/area/tcommsat/lounge)
"cAg" = (/obj/machinery/atmospherics/unary/vent_pump{dir = 8; on = 1},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
"cAh" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
-"cAi" = (/obj/structure/stool/chair{dir = 4},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
+"cAi" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
"cAj" = (/obj/structure/table,/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/obj/item/weapon/cigpacket,/turf/simulated/floor,/area/tcommsat/lounge)
-"cAk" = (/obj/structure/stool/chair{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
+"cAk" = (/obj/structure/stool/bed/chair{dir = 8},/obj/structure/cable{d1 = 1; d2 = 4; icon_state = "1-4"; tag = "90Curve"},/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/floor,/area/tcommsat/lounge)
"cAl" = (/obj/structure/cable{tag = "Streight"; icon_state = "4-8"; pixel_x = 1; d1 = 4; d2 = 8},/turf/simulated/wall/r_wall,/area/tcommsat/lounge)
"cAm" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced{dir = 8},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomwest)
"cAn" = (/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 1},/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/turret_protected/tcomwest)
@@ -6785,7 +6785,7 @@
"cAy" = (/obj/machinery/vending/snack,/turf/simulated/floor,/area/tcommsat/lounge)
"cAz" = (/obj/machinery/vending/cola,/turf/simulated/floor,/area/tcommsat/lounge)
"cAA" = (/obj/item/weapon/cigbutt,/obj/machinery/light,/turf/simulated/floor,/area/tcommsat/lounge)
-"cAB" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/tcommsat/lounge)
+"cAB" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/tcommsat/lounge)
"cAC" = (/obj/machinery/disposal,/obj/structure/disposalpipe/trunk{dir = 4},/turf/simulated/floor,/area/tcommsat/lounge)
"cAD" = (/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area/tcommsat/lounge)
"cAE" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/wall/r_wall,/area)
@@ -6932,9 +6932,9 @@
"cDp" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 1},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/effect/sign/securearea,/turf/simulated/floor/plating,/area/turret_protected/tcomfoyer)
"cDq" = (/obj/machinery/turret{id = "tcommfoyer"},/turf/simulated/floor{tag = "icon-warningcorner (NORTH)"; icon_state = "warningcorner"; dir = 1},/area/turret_protected/tcomfoyer)
"cDr" = (/obj/machinery/turretid{icon_state = "motion1"; id = "tcommwest"; lethal = 1; name = "West Wing Turret deactivation control"; pixel_y = 29; req_access = list(61); req_access_txt = "0"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
-"cDs" = (/obj/structure/stool/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
-"cDt" = (/obj/structure/stool/chair,/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
-"cDu" = (/obj/structure/stool/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
+"cDs" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 6},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
+"cDt" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/manifold{color = "blue"; dir = 1; icon_state = "manifold-b-f"; level = 1; name = "pipe manifold"},/obj/machinery/light{dir = 1},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
+"cDu" = (/obj/structure/stool/bed/chair,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
"cDv" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 10},/obj/machinery/turretid{icon_state = "motion1"; id = "tcommeast"; lethal = 1; name = "East Wing Turret deactivation control"; pixel_y = 29; req_access = list(61); req_access_txt = "0"},/turf/simulated/floor,/area/turret_protected/tcomfoyer)
"cDw" = (/obj/machinery/turret{id = "tcommfoyer"},/turf/simulated/floor{tag = "icon-warningcorner"; icon_state = "warningcorner"; dir = 2},/area/turret_protected/tcomfoyer)
"cDx" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 1},/obj/effect/sign/securearea,/turf/simulated/floor/plating,/area/turret_protected/tcomfoyer)
@@ -7107,25 +7107,25 @@
"cGI" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 8},/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/djstation)
"cGJ" = (/obj/machinery/door/airlock/glass{name = "Kitchen"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cGK" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 0; dir = 8; freerange = 1; listening = 1; name = "Pirate Radio Listening Channel"; pixel_x = 0},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
-"cGL" = (/obj/structure/stool/chair,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
+"cGL" = (/obj/structure/stool/bed/chair,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cGM" = (/obj/machinery/door/airlock{name = "Cabin"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cGN" = (/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
"cGO" = (/obj/machinery/sleeper,/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
"cGP" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/djstation)
"cGQ" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/turf/unsimulated/floor{name = "plating"},/area/djstation)
"cGR" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/djstation)
-"cGS" = (/obj/structure/stool/chair{dir = 1},/obj/machinery/light,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/djstation)
+"cGS" = (/obj/structure/stool/bed/chair{dir = 1},/obj/machinery/light,/turf/unsimulated/floor{icon_state = "bar"; dir = 2},/area/djstation)
"cGT" = (/obj/structure/table,/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cGU" = (/obj/structure/table,/obj/item/device/radio/intercom{broadcasting = 1; dir = 8; freerange = 1; listening = 0; name = "Pirate Radio Broadcast Channel"; pixel_x = 0},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cGV" = (/obj/structure/computerframe{anchored = 1},/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
-"cGW" = (/obj/structure/stool/chair{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
+"cGW" = (/obj/structure/stool/bed/chair{dir = 8},/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
"cGX" = (/obj/machinery/light,/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
"cGY" = (/obj/structure/closet,/turf/unsimulated/floor{dir = 2; icon_state = "grimy"},/area/djstation)
"cGZ" = (/obj/structure/grille,/obj/structure/window/reinforced,/obj/structure/window/reinforced{dir = 4},/obj/structure/window/reinforced{dir = 8},/turf/unsimulated/floor{name = "plating"},/area/djstation)
"cHa" = (/obj/machinery/door/airlock{name = "Restroom"; req_access_txt = "0"},/turf/unsimulated/floor{icon_state = "white"},/area/djstation)
"cHb" = (/obj/machinery/status_display{layer = 4; pixel_x = 32; pixel_y = 0},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cHc" = (/turf/unsimulated/floor{icon_state = "white"},/area/djstation)
-"cHd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/stool/chair{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
+"cHd" = (/obj/machinery/light{icon_state = "tube1"; dir = 8},/obj/structure/stool/bed/chair{dir = 4},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cHe" = (/obj/structure/window/reinforced{dir = 1},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cHf" = (/obj/structure/window/reinforced{dir = 1},/obj/structure/rack{dir = 4},/obj/item/clothing/under/soviet,/obj/item/clothing/head/ushanka,/obj/machinery/light{dir = 4; icon_state = "tube1"},/turf/unsimulated/floor{icon_state = "cafeteria"; dir = 2},/area/djstation)
"cHg" = (/obj/machinery/disposal/toilet{tag = "icon-toilet (WEST)"; icon_state = "toilet"; dir = 8},/obj/structure/disposalpipe/trunk,/turf/unsimulated/floor{icon_state = "white"},/area/djstation)
@@ -7271,7 +7271,7 @@
"cJQ" = (/obj/item/weapon/paper{name = "Objectives of a Nuclear Operative"},/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/singularity_engine)
"cJR" = (/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/derelict/bridge/access)
"cJS" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; pixel_y = 0; tag = "Streight"},/turf/simulated/floor,/area/derelict/bridge)
-"cJT" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/derelict/bridge)
+"cJT" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/derelict/bridge)
"cJU" = (/obj/structure/table,/obj/item/weapon/screwdriver,/turf/simulated/floor,/area/derelict/bridge)
"cJV" = (/obj/structure/table,/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/bridge)
"cJW" = (/obj/item/stack/rods,/turf/space,/area)
@@ -7377,11 +7377,11 @@
"cLS" = (/obj/machinery/light/small,/turf/simulated/floor/airless{icon_state = "damaged2"},/area/derelict/hallway/primary)
"cLT" = (/obj/structure/window/basic{dir = 5},/turf/space,/area)
"cLU" = (/obj/structure/table,/turf/simulated/floor,/area/derelict/arrival)
-"cLV" = (/obj/structure/stool/chair,/turf/simulated/floor,/area/derelict/arrival)
+"cLV" = (/obj/structure/stool/bed/chair,/turf/simulated/floor,/area/derelict/arrival)
"cLW" = (/turf/simulated/floor,/area/derelict/arrival)
"cLX" = (/obj/machinery/light/small{dir = 1},/turf/simulated/floor,/area/derelict/arrival)
-"cLY" = (/obj/structure/stool/chair{dir = 8},/obj/item/weapon/pen,/turf/simulated/floor,/area/derelict/arrival)
-"cLZ" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor,/area/derelict/arrival)
+"cLY" = (/obj/structure/stool/bed/chair{dir = 8},/obj/item/weapon/pen,/turf/simulated/floor,/area/derelict/arrival)
+"cLZ" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor,/area/derelict/arrival)
"cMa" = (/turf/simulated/wall,/area/derelict/medical/chapel)
"cMb" = (/obj/item/weapon/shard,/turf/space,/area)
"cMc" = (/obj/structure/grille,/turf/space,/area/derelict/singularity_engine)
@@ -7423,8 +7423,8 @@
"cMM" = (/obj/item/weapon/storage/lightbox/bulbs,/turf/simulated/floor/plating/airless,/area/derelict/singularity_engine)
"cMN" = (/obj/item/weapon/disk/data/demo,/turf/simulated/floor/plating/airless,/area)
"cMO" = (/turf/simulated/floor/airless{icon_state = "damaged4"},/area)
-"cMP" = (/obj/structure/stool/chair{dir = 1},/turf/simulated/floor,/area/derelict/arrival)
-"cMQ" = (/obj/structure/stool/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/arrival)
+"cMP" = (/obj/structure/stool/bed/chair{dir = 1},/turf/simulated/floor,/area/derelict/arrival)
+"cMQ" = (/obj/structure/stool/bed/chair{dir = 1},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor,/area/derelict/arrival)
"cMR" = (/obj/machinery/door{icon = 'icons/obj/doors/doormorgue.dmi'; name = "Coffin Storage"; req_access_txt = "22"},/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/chapel)
"cMS" = (/obj/structure/morgue,/turf/simulated/floor{icon_state = "dark"},/area/derelict/medical/chapel)
"cMT" = (/obj/structure/table,/obj/structure/window/reinforced{dir = 8},/turf/simulated/floor/airless{icon_state = "white"},/area/derelict/medical)
@@ -7989,7 +7989,7 @@
"cXG" = (/obj/structure/table,/obj/machinery/microwave{pixel_y = 6},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cXH" = (/obj/structure/disposalpipe/segment{dir = 1},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cXI" = (/obj/machinery/status_display{layer = 4; pixel_x = 0; pixel_y = 32},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
-"cXJ" = (/obj/structure/stool/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
+"cXJ" = (/obj/structure/stool/bed/chair,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cXK" = (/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cXL" = (/obj/machinery/light{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cXM" = (/obj/machinery/door/airlock{name = "Room 3"},/turf/simulated/floor{dir = 2; icon_state = "carpet"},/area/mine/living_quarters)
@@ -8008,9 +8008,9 @@
"cXZ" = (/obj/machinery/door/airlock/external{name = "Mining West Outpost Airlock"; req_access_txt = "54"},/turf/simulated/floor,/area/mine/west_outpost)
"cYa" = (/obj/structure/table,/obj/machinery/light/small{dir = 8},/obj/item/weapon/reagent_containers/food/drinks/beer,/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cYb" = (/obj/structure/disposalpipe/segment{dir = 1; icon_state = "pipe-c"},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
-"cYc" = (/obj/structure/stool/chair{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
+"cYc" = (/obj/structure/stool/bed/chair{dir = 4},/obj/structure/disposalpipe/segment{dir = 4},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cYd" = (/obj/structure/table,/obj/structure/disposalpipe/segment{dir = 2; icon_state = "pipe-c"},/obj/item/weapon/reagent_containers/food/drinks/beer,/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
-"cYe" = (/obj/structure/stool/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
+"cYe" = (/obj/structure/stool/bed/chair{dir = 8},/turf/simulated/floor{icon_state = "bar"},/area/mine/living_quarters)
"cYf" = (/turf/simulated/floor,/area/mine/storage)
"cYg" = (/obj/machinery/atmospherics/unary/vent_pump{on = 1},/turf/simulated/floor,/area/mine/storage)
"cYh" = (/obj/structure/grille,/obj/structure/window/reinforced{dir = 8},/obj/structure/window/reinforced{dir = 4},/turf/simulated/floor/plating,/area/mine/storage)
diff --git a/sound/effects/pageturn1.ogg b/sound/effects/pageturn1.ogg
new file mode 100644
index 00000000000..0fe537cd1da
Binary files /dev/null and b/sound/effects/pageturn1.ogg differ
diff --git a/sound/effects/pageturn2.ogg b/sound/effects/pageturn2.ogg
new file mode 100644
index 00000000000..e34f7fdd507
Binary files /dev/null and b/sound/effects/pageturn2.ogg differ
diff --git a/sound/effects/pageturn3.ogg b/sound/effects/pageturn3.ogg
new file mode 100644
index 00000000000..8b2d61fdc6d
Binary files /dev/null and b/sound/effects/pageturn3.ogg differ