Merge pull request #12529 from Very-Soft/autoresleever

Auto-Resleeving
This commit is contained in:
Casey
2022-03-25 03:21:41 -04:00
committed by GitHub
11 changed files with 492 additions and 114 deletions

View File

@@ -112,10 +112,11 @@ SUBSYSTEM_DEF(transcore)
if(since_backup < overdue_time)
curr_MR.dead_state = MR_NORMAL
else
if(curr_MR.dead_state != MR_DEAD) //First time switching to dead
/* if(curr_MR.dead_state != MR_DEAD) //First time switching to dead //Remove auto notification! Ghosts have a button to notify, so no more false flags.
if(curr_MR.do_notify)
db.notify(curr_MR)
curr_MR.last_notification = world.time
*/
curr_MR.dead_state = MR_DEAD
if(MC_TICK_CHECK)

View File

@@ -9,6 +9,8 @@
return
for(var/obj/item/W in M)
if(istype(W, /obj/item/weapon/implant/backup) || istype(W, /obj/item/device/nif)) //VOREStation Edit - There's basically no reason to remove either of these
continue //VOREStation Edit
M.drop_from_inventory(W)
log_admin("[key_name(usr)] made [key_name(M)] drop everything!")

View File

@@ -68,8 +68,14 @@
var/datum/transcore_db/db = SStranscore.db_by_mind_name(mind.name)
if(db)
var/datum/transhuman/mind_record/record = db.backed_up[src.mind.name]
if(!(record.dead_state == MR_DEAD))
to_chat(src, "<span class='warning'>Your backup is not past-due yet.</span>")
if(!(record.dead_state == MR_DEAD))
if((world.time - timeofdeath ) > 5 MINUTES) //Allows notify transcore to be used if you have an entry but for some reason weren't marked as dead
record.dead_state = MR_DEAD //Such as if you got scanned but didn't take an implant. It's a little funky, but I mean, you got scanned
db.notify(record) //So you probably will want to let someone know if you die.
record.last_notification = world.time
to_chat(src, "<span class='notice'>New notification has been sent.</span>")
else
to_chat(src, "<span class='warning'>Your backup is not past-due yet.</span>")
else if((world.time - record.last_notification) < 5 MINUTES)
to_chat(src, "<span class='warning'>Too little time has passed since your last notification.</span>")
else
@@ -78,7 +84,7 @@
to_chat(src, "<span class='notice'>New notification has been sent.</span>")
else
to_chat(src,"<span class='warning'>No backup record could be found, sorry.</span>")
/*
/mob/observer/dead/verb/backup_delay()
set category = "Ghost"
set name = "Cancel Transcore Notification"
@@ -97,7 +103,7 @@
to_chat(src, "<span class='notice'>Overdue mind backup notification delayed successfully.</span>")
else
to_chat(src,"<span class='warning'>No backup record could be found, sorry.</span>")
*/
/mob/observer/dead/verb/findghostpod() //Moves the ghost instead of just changing the ghosts's eye -Nodrak
set category = "Ghost"
set name = "Find Ghost Pod"

View File

@@ -485,9 +485,10 @@ This function completely restores a damaged organ to perfect condition.
// remove embedded objects and drop them on the floor
for(var/obj/implanted_object in implants)
if(!istype(implanted_object,/obj/item/weapon/implant) && !istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls
implanted_object.loc = get_turf(src)
implants -= implanted_object
if(istype(implanted_object,/obj/item/weapon/implant) || istype(implanted_object,/obj/item/device/nif)) // We don't want to remove REAL implants. Just shrapnel etc. //VOREStation Edit - NIFs pls
continue
implanted_object.loc = get_turf(src)
implants -= implanted_object
if(!owner.has_embedded_objects())
owner.clear_alert("embeddedobject")

View File

@@ -0,0 +1,173 @@
/obj/machinery/transhuman/autoresleever
name = "automatic resleever"
desc = "Uses advanced technology to detect when someone needs to be resleeved, and automatically prints and sleeves them into a new body. It even generates its own biomass!"
icon = 'icons/obj/machines/autoresleever.dmi'
icon_state = "autoresleever"
density = TRUE
anchored = TRUE
var/equip_body = FALSE //If true, this will spawn the person with equipment
var/default_job = USELESS_JOB //The job that will be assigned if equip_body is true and the ghost doesn't have a job
var/ghost_spawns = FALSE //If true, allows ghosts who haven't been spawned yet to spawn
var/vore_respawn = 15 MINUTES //The time to wait if you died from vore
var/respawn = 30 MINUTES //The time to wait if you didn't die from vore
var/spawn_slots = -1 //How many people can be spawned from this? If -1 it's unlimited
var/spawntype //The kind of mob that will be spawned, if set.
var/update_i = FALSE
/obj/machinery/transhuman/autoresleever/update_icon()
. = ..()
if(stat)
icon_state = "autoresleever-o"
else
icon_state = "autoresleever"
/obj/machinery/transhuman/autoresleever/power_change()
. = ..()
update_icon()
/obj/machinery/transhuman/autoresleever/attack_ghost(mob/observer/dead/user as mob)
update_icon()
if(spawn_slots == 0)
to_chat(user, "<span class='warning'>There are no more respawn slots.</span>")
return
if(user.mind)
if(user.mind.vore_death)
if(vore_respawn <= world.time - user.timeofdeath)
autoresleeve(user)
else
to_chat(user, "<span class='warning'>You must wait [((vore_respawn - (world.time - user.timeofdeath)) * 0.1) / 60] minutes to use \the [src].</span>")
return
else if(respawn <= world.time - user.timeofdeath)
autoresleeve(user)
else
to_chat(user, "<span class='warning'>You must wait [((respawn - (world.time - user.timeofdeath)) * 0.1) /60] minutes to use \the [src].</span>")
return
else if(spawntype)
if(tgui_alert(user, "This [src] spawns something special, would you like to play as it?", "Creachur", list("No","Yes")) == "Yes")
autoresleeve(user)
else if(ghost_spawns)
if(tgui_alert(user, "Would you like to be spawned here as your presently loaded character?", "Spawn here", list("No","Yes")) == "Yes")
autoresleeve(user)
else
to_chat(user, "<span class='warning'>You need to have been spawned in order to respawn here.</span>")
/obj/machinery/transhuman/autoresleever/attackby(var/mob/user) //Let's not let people mess with this.
update_icon()
if(istype(user,/mob/observer/dead))
attack_ghost(user)
else
return
/obj/machinery/transhuman/autoresleever/proc/autoresleeve(var/mob/observer/dead/ghost)
if(stat)
to_chat(ghost, "<span class='warning'>This machine is not functioning...</span>")
return
if(!istype(ghost,/mob/observer/dead))
return
if(ghost.mind && ghost.mind.current && ghost.mind.current.stat != DEAD)
to_chat(ghost, "<span class='warning'>Your body is still alive, you cannot be resleeved.</span>")
return
var/client/ghost_client = ghost.client
//Name matching is ugly but mind doesn't persist to look at.
var/charjob
var/datum/data/record/record_found
record_found = find_general_record("name",ghost_client.prefs.real_name)
//Found their record, they were spawned previously
if(record_found)
charjob = record_found.fields["real_rank"]
else if(equip_body || ghost_spawns)
charjob = default_job
else
to_chat(ghost, "<span class='warning'>It appears as though your loaded character has not been spawned this round, or has quit the round. If you died as a different character, please load them, and try again.</span>")
return
//For logging later
var/player_key = ghost_client.key
var/picked_ckey = ghost_client.ckey
var/picked_slot = ghost_client.prefs.default_slot
var/spawnloc = get_turf(src)
//Did we actually get a loc to spawn them?
if(!spawnloc)
to_chat(ghost, "<span class='warning'>Could not find a valid location to spawn your character.</span>")
return
if(spawntype)
var/spawnthing = new spawntype(spawnloc)
if(isliving(spawnthing))
var/mob/living/L = spawnthing
L.key = player_key
L.ckey = picked_ckey
log_admin("[L.ckey]'s has been spawned as [L] via \the [src].")
message_admins("[L.ckey]'s has been spawned as [L] via \the [src].")
else
to_chat(ghost, "<span class='warning'>You can't play as a [spawnthing]...</span>")
return
if(spawn_slots == -1)
return
else if(spawn_slots == 0)
return
else
spawn_slots --
return
if(tgui_alert(ghost, "Would you like to be resleeved?", "Resleeve", list("No","Yes")) == "No")
return
var/mob/living/carbon/human/new_character
new_character = new(spawnloc)
//We were able to spawn them, right?
if(!new_character)
to_chat(ghost, "Something went wrong and spawning failed.")
return
//Write the appearance and whatnot out to the character
ghost_client.prefs.copy_to(new_character)
if(new_character.dna)
new_character.dna.ResetUIFrom(new_character)
new_character.sync_organ_dna()
new_character.key = player_key
//Were they any particular special role? If so, copy.
if(new_character.mind)
new_character.mind.loaded_from_ckey = picked_ckey
new_character.mind.loaded_from_slot = picked_slot
var/datum/antagonist/antag_data = get_antag_data(new_character.mind.special_role)
if(antag_data)
antag_data.add_antagonist(new_character.mind)
antag_data.place_mob(new_character)
for(var/lang in ghost_client.prefs.alternate_languages)
var/datum/language/chosen_language = GLOB.all_languages[lang]
if(chosen_language)
if(is_lang_whitelisted(src,chosen_language) || (new_character.species && (chosen_language.name in new_character.species.secondary_langs)))
new_character.add_language(lang)
//If desired, apply equipment.
if(equip_body)
if(charjob)
job_master.EquipRank(new_character, charjob, 1)
new_character.mind.assigned_role = charjob
new_character.mind.role_alt_title = job_master.GetPlayerAltTitle(new_character, charjob)
//A redraw for good measure
new_character.regenerate_icons()
new_character.update_transform()
log_admin("[new_character.ckey]'s character [new_character.real_name] has been auto-resleeved.")
message_admins("[new_character.ckey]'s character [new_character.real_name] has been auto-resleeved.")
if(spawn_slots == -1)
return
else if(spawn_slots == 0)
return
else
spawn_slots --
return

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.8 KiB

View File

@@ -2075,6 +2075,10 @@
/obj/machinery/computer/transhuman/resleeving{
dir = 8
},
/obj/item/device/radio/intercom{
dir = 4;
pixel_x = 24
},
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/stellardelight/deck1/resleeving)
"ew" = (
@@ -6726,7 +6730,7 @@
dir = 5
},
/obj/machinery/button/remote/airlock{
desc = "A remote control switch for the medbay foyer.";
desc = "A remote control switch for the cleaning room exit.";
dir = 4;
id = "resleeveexit";
name = "Door Control";
@@ -7381,6 +7385,14 @@
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 1
},
/obj/machinery/button/remote/airlock{
desc = "A remote control switch for the cleaning room.";
dir = 4;
id = "resleeveclean";
name = "Door Control";
pixel_x = -27;
pixel_y = -27
},
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/stellardelight/deck1/resleeving)
"pC" = (
@@ -7970,7 +7982,7 @@
/turf/simulated/floor/carpet,
/area/chapel/main)
"qR" = (
/obj/structure/table/glass,
/obj/machinery/transhuman/autoresleever,
/turf/simulated/floor/tiled/dark,
/area/stellardelight/deck1/resleeving)
"qS" = (
@@ -16013,16 +16025,6 @@
/obj/effect/floor_decal/milspec/color/black,
/turf/simulated/floor/tiled/dark,
/area/security/armoury)
"Ij" = (
/obj/structure/bed/chair{
dir = 1
},
/obj/item/device/radio/intercom{
dir = 8;
pixel_x = -24
},
/turf/simulated/floor/tiled/eris/white/bluecorner,
/area/stellardelight/deck1/resleeving)
"Ik" = (
/obj/structure/cable{
icon_state = "4-8"
@@ -20510,8 +20512,9 @@
/obj/machinery/door/airlock/angled_bay/standard/color{
dir = 8;
door_color = "#ffffff";
id_tag = "resleeveclean";
name = "Cleaning Room";
req_access = null;
req_access = list(5);
stripe_color = "#5a96bb"
},
/turf/simulated/floor/tiled/steel_ridged,
@@ -33859,7 +33862,7 @@ dH
oW
vb
pA
Ij
hv
CG
ZB
hg

View File

@@ -2264,6 +2264,11 @@
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 5
},
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"adS" = (
@@ -2288,6 +2293,11 @@
name = "Mental Health";
req_one_access = list()
},
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"adV" = (
@@ -2358,6 +2368,11 @@
pixel_x = -26;
pixel_y = -26
},
/obj/structure/cable/green{
d1 = 2;
d2 = 4;
icon_state = "2-4"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"adY" = (
@@ -2379,6 +2394,11 @@
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"adZ" = (
@@ -2552,11 +2572,11 @@
/turf/simulated/floor/carpet/blue,
/area/tether/surfacebase/medical/mentalhealth)
"aem" = (
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 4
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/lowernorthhall)
@@ -2824,6 +2844,13 @@
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
dir = 5
},
/obj/structure/disposalpipe/trunk{
dir = 4
},
/obj/machinery/disposal/wall{
dir = 8;
name = "auto-resleeving equipment deposit"
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/lowernorthhall)
"aeE" = (
@@ -3295,6 +3322,17 @@
/obj/effect/floor_decal/steeldecal/steel_decals4{
dir = 4
},
/obj/structure/cable/green{
d1 = 1;
d2 = 4;
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 6
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/lowernorthhall)
"afp" = (
@@ -3345,6 +3383,17 @@
/obj/effect/floor_decal/corner/paleblue/bordercorner2{
dir = 4
},
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/turf/simulated/floor/tiled,
/area/tether/surfacebase/lowernorthhall)
"aft" = (
@@ -3381,6 +3430,7 @@
dir = 4;
pixel_x = 24
},
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"afz" = (
@@ -8206,12 +8256,6 @@
dir = 4
},
/obj/random/junk,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"anG" = (
@@ -11278,11 +11322,13 @@
icon_state = "1-4"
},
/obj/machinery/atmospherics/pipe/manifold/hidden/supply,
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers,
/obj/structure/disposalpipe/segment{
dir = 8;
icon_state = "pipe-c"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 5
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"asU" = (
@@ -13876,6 +13922,11 @@
/obj/machinery/door/firedoor/glass/hidden/steel{
dir = 1
},
/obj/structure/cable/green{
d1 = 1;
d2 = 2;
icon_state = "1-2"
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"awZ" = (
@@ -15870,12 +15921,12 @@
d2 = 8;
icon_state = "2-8"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 10
},
/obj/machinery/atmospherics/pipe/manifold/hidden/scrubbers{
dir = 4
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"azU" = (
@@ -30423,13 +30474,19 @@
/turf/simulated/floor/tiled,
/area/hallway/lower/first_west)
"bbI" = (
/obj/item/weapon/tool/wrench{
desc = "The lower jaw seems to keep jiggling...";
name = "loose wrench";
toolspeed = 3
/obj/machinery/vending/loadout/uniform,
/obj/machinery/light{
dir = 8
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/effect/floor_decal/borderfloorwhite{
dir = 9
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 9
},
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"bbJ" = (
/obj/structure/cable/green,
/obj/structure/cable/green{
@@ -30470,9 +30527,15 @@
/turf/simulated/floor,
/area/maintenance/substation/SurfMedsubstation)
"bbM" = (
/obj/random/cigarettes,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/machinery/transhuman/autoresleever,
/obj/effect/floor_decal/borderfloorwhite{
dir = 1
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 1
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"bbN" = (
/obj/structure/cable/green{
d1 = 4;
@@ -30628,9 +30691,19 @@
/turf/simulated/floor,
/area/maintenance/substation/SurfMedsubstation)
"bbZ" = (
/obj/random/junk,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/structure/disposalpipe/trunk{
dir = 2
},
/obj/machinery/disposal/deliveryChute,
/obj/structure/plasticflaps,
/obj/effect/floor_decal/borderfloorwhite{
dir = 1
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 1
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"bca" = (
/obj/effect/floor_decal/borderfloor,
/obj/effect/floor_decal/corner/brown/border,
@@ -31706,12 +31779,6 @@
},
/turf/simulated/floor/plating,
/area/maintenance/lower/trash_pit)
"bTE" = (
/obj/structure/railing{
dir = 1
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"bWg" = (
/obj/machinery/vending/loadout/costume{
dir = 4
@@ -31803,12 +31870,11 @@
/turf/simulated/floor/tiled/monotile,
/area/crew_quarters/locker/laundry_arrival)
"cqg" = (
/obj/structure/railing{
dir = 1
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/turf/simulated/wall,
/area/tether/surfacebase/medical/autoresleeving)
"cqZ" = (
/obj/effect/floor_decal/borderfloor{
dir = 8
@@ -32326,6 +32392,10 @@
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"dUK" = (
/obj/structure/disposalpipe/segment,
/turf/simulated/wall,
/area/tether/surfacebase/medical/autoresleeving)
"dYd" = (
/obj/machinery/firealarm{
layer = 3.3;
@@ -32773,10 +32843,24 @@
/turf/simulated/floor/plating,
/area/tether/surfacebase/funny/clownoffice)
"fKm" = (
/obj/random/junk,
/obj/random/maintenance/cargo,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/machinery/firealarm{
dir = 8;
pixel_x = -24
},
/obj/effect/floor_decal/borderfloorwhite{
dir = 8
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 8
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 1
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 6
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"fLB" = (
/obj/effect/floor_decal/steeldecal/steel_decals6{
dir = 5
@@ -33806,13 +33890,21 @@
/turf/simulated/floor/tiled,
/area/rnd/hallway)
"idk" = (
/obj/item/weapon/tool/wirecutters{
desc = "It gets jammed a lot.";
name = "janky wirecutters";
toolspeed = 2
/obj/machinery/alarm{
dir = 8;
pixel_x = 22
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/effect/floor_decal/borderfloorwhite{
dir = 6
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 6
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"iee" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply,
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers,
@@ -33895,6 +33987,25 @@
/obj/item/device/radio/beacon,
/turf/simulated/floor/tiled,
/area/tether/surfacebase/surface_one_hall)
"itj" = (
/obj/structure/cable/green{
d2 = 8;
icon_state = "0-8"
},
/obj/machinery/power/apc{
dir = 4;
name = "east bump";
nightshift_setting = 2;
pixel_x = 24
},
/obj/effect/floor_decal/borderfloorwhite{
dir = 6
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 6
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"iue" = (
/turf/simulated/floor/looking_glass{
dir = 1
@@ -34049,9 +34160,6 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 5
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"jhN" = (
@@ -34822,9 +34930,13 @@
/turf/simulated/floor/tiled,
/area/crew_quarters/visitor_laundry)
"lbd" = (
/obj/random/maintenance/cargo,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/effect/floor_decal/borderfloorwhite/corner,
/obj/effect/floor_decal/corner/paleblue/bordercorner,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 8
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"lbu" = (
/obj/effect/floor_decal/borderfloorwhite,
/obj/effect/floor_decal/corner/paleblue/border,
@@ -35003,6 +35115,25 @@
/obj/machinery/holoposter,
/turf/simulated/wall,
/area/hallway/lower/first_west)
"lBv" = (
/obj/machinery/door/airlock/maintenance/medical{
id_tag = "autor";
name = "Auto-Resleeving";
req_access = list(5)
},
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"lBO" = (
/obj/structure/cable{
d1 = 1;
@@ -35148,9 +35279,32 @@
/turf/simulated/floor/tiled,
/area/tether/surfacebase/surface_one_hall)
"lPQ" = (
/obj/item/stack/cable_coil/random_belt,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/machinery/button/remote/airlock{
desc = "A remote control door switch.";
id = "autor";
name = "Exit Button";
pixel_x = -26;
pixel_y = -26
},
/obj/structure/cable/green{
d1 = 4;
d2 = 8;
icon_state = "4-8"
},
/obj/effect/floor_decal/borderfloorwhite{
dir = 10
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 10
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 9
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 9
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"lQu" = (
/obj/item/weapon/reagent_containers/glass/bucket,
/obj/structure/table/steel,
@@ -36375,9 +36529,22 @@
/turf/simulated/floor/carpet/gaycarpet,
/area/tether/surfacebase/funny/clownoffice)
"oPH" = (
/obj/random/pizzabox,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/machinery/light{
dir = 4
},
/obj/item/device/radio/intercom{
dir = 1;
pixel_y = 24
},
/obj/effect/floor_decal/borderfloorwhite{
dir = 5
},
/obj/effect/floor_decal/corner/paleblue/border{
dir = 5
},
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"oQm" = (
/obj/effect/floor_decal/borderfloor/corner,
/obj/structure/cable{
@@ -36818,6 +36985,15 @@
"qwV" = (
/turf/simulated/wall,
/area/tether/surfacebase/security/brig)
"qBa" = (
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"qBb" = (
/obj/machinery/atmospherics/pipe/manifold/hidden/supply{
dir = 1
@@ -37024,12 +37200,12 @@
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"qVi" = (
/obj/structure/railing{
dir = 1
/obj/structure/disposalpipe/segment{
dir = 8;
icon_state = "pipe-c"
},
/obj/machinery/atmospherics/unary/vent_scrubber/on,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/turf/simulated/wall,
/area/tether/surfacebase/medical/autoresleeving)
"qWk" = (
/obj/machinery/light,
/obj/structure/disposalpipe/segment{
@@ -37649,6 +37825,10 @@
},
/turf/simulated/floor/tiled,
/area/engineering/atmos)
"sOx" = (
/obj/machinery/atmospherics/unary/vent_pump/on,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
"sQc" = (
/obj/structure/sign/securearea{
desc = "A warning sign which reads 'HIGH VOLTAGE'";
@@ -38176,10 +38356,17 @@
/turf/simulated/floor/tiled/techfloor,
/area/maintenance/lower/xenoflora)
"utQ" = (
/obj/fiftyspawner/steel,
/obj/random/junk,
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
/obj/structure/disposalpipe/segment,
/obj/effect/floor_decal/borderfloorwhite,
/obj/effect/floor_decal/corner/paleblue/border,
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 8
},
/obj/machinery/shower{
dir = 1
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/autoresleeving)
"uuu" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -38318,6 +38505,9 @@
},
/turf/simulated/floor/tiled/white,
/area/tether/surfacebase/medical/lowerhall)
"uIU" = (
/turf/simulated/wall,
/area/tether/surfacebase/medical/autoresleeving)
"uKS" = (
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
@@ -38465,11 +38655,8 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/scrubbers{
dir = 4
},
/obj/machinery/atmospherics/pipe/simple/hidden/supply{
dir = 4
dir = 5
},
/turf/simulated/floor/plating,
/area/maintenance/lowmedbaymaint)
@@ -53037,11 +53224,11 @@ aan
atP
awE
aeU
aeU
aeU
aeU
aef
aef
uIU
uIU
uIU
lBv
cqg
afE
aef
aef
@@ -53179,11 +53366,11 @@ aan
uHS
awC
aeU
aeU
uIU
bbI
fKm
lPQ
bTE
cqg
akA
aAG
tdg
@@ -53321,10 +53508,10 @@ afb
atO
awC
aeU
aeU
uIU
bbM
lbd
aAI
itj
cqg
jcT
ksK
@@ -53463,10 +53650,10 @@ afb
atO
awp
axO
aeU
uIU
bbZ
utQ
lbd
dUK
qVi
anF
ksK
@@ -53605,11 +53792,11 @@ afb
atO
awG
aed
aeU
uIU
oPH
idk
bbZ
bTE
uIU
sOx
vuO
ksK
tdg
@@ -53747,12 +53934,12 @@ afb
atO
awz
aeU
aeU
uIU
uIU
uIU
uIU
axP
axP
axP
axP
vuO
qBa
ksK
oKn
oKn

View File

@@ -39409,7 +39409,9 @@
alarms_hidden = 1;
dir = 1;
name = "north bump";
pixel_y = 28
pixel_y = 28;
req_access = null;
req_one_access = list(11,67)
},
/obj/structure/cable/green{
icon_state = "0-4"

View File

@@ -440,6 +440,8 @@
name = "\improper Medical Central Hall"
/area/tether/surfacebase/medical/lowerhall
name = "\improper Medical Lower Hall"
/area/tether/surfacebase/medical/autoresleeving
name = "\improper Medical Auto Resleeving"
//North SurfMed3-2 Stairwell
/area/tether/surfacebase/medical/uppernorthstairwell
name = "\improper Medical Stairwell"

View File

@@ -3723,6 +3723,7 @@
#include "code\modules\research\designs\circuits\circuits.dm"
#include "code\modules\research\designs\circuits\circuits_vr.dm"
#include "code\modules\research\designs\circuits\disks.dm"
#include "code\modules\resleeving\autoresleever.dm"
#include "code\modules\resleeving\circuitboards.dm"
#include "code\modules\resleeving\computers.dm"
#include "code\modules\resleeving\designer.dm"