diff --git a/code/controllers/subsystems/transcore_vr.dm b/code/controllers/subsystems/transcore_vr.dm index 6b0815999b..f185c4bbb8 100644 --- a/code/controllers/subsystems/transcore_vr.dm +++ b/code/controllers/subsystems/transcore_vr.dm @@ -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) diff --git a/code/modules/admin/verbs/randomverbs.dm b/code/modules/admin/verbs/randomverbs.dm index 267871366b..fcf5d64e7e 100644 --- a/code/modules/admin/verbs/randomverbs.dm +++ b/code/modules/admin/verbs/randomverbs.dm @@ -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!") diff --git a/code/modules/mob/dead/observer/observer_vr.dm b/code/modules/mob/dead/observer/observer_vr.dm index 1fb9d913c9..c6ea1050d9 100644 --- a/code/modules/mob/dead/observer/observer_vr.dm +++ b/code/modules/mob/dead/observer/observer_vr.dm @@ -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, "Your backup is not past-due yet.") + 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, "New notification has been sent.") + else + to_chat(src, "Your backup is not past-due yet.") else if((world.time - record.last_notification) < 5 MINUTES) to_chat(src, "Too little time has passed since your last notification.") else @@ -78,7 +84,7 @@ to_chat(src, "New notification has been sent.") else to_chat(src,"No backup record could be found, sorry.") - +/* /mob/observer/dead/verb/backup_delay() set category = "Ghost" set name = "Cancel Transcore Notification" @@ -97,7 +103,7 @@ to_chat(src, "Overdue mind backup notification delayed successfully.") else to_chat(src,"No backup record could be found, sorry.") - +*/ /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" diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 363353c2ec..85d0720670 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -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") diff --git a/code/modules/resleeving/autoresleever.dm b/code/modules/resleeving/autoresleever.dm new file mode 100644 index 0000000000..bbef48b8ae --- /dev/null +++ b/code/modules/resleeving/autoresleever.dm @@ -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, "There are no more respawn slots.") + return + if(user.mind) + if(user.mind.vore_death) + if(vore_respawn <= world.time - user.timeofdeath) + autoresleeve(user) + else + to_chat(user, "You must wait [((vore_respawn - (world.time - user.timeofdeath)) * 0.1) / 60] minutes to use \the [src].") + return + else if(respawn <= world.time - user.timeofdeath) + autoresleeve(user) + else + to_chat(user, "You must wait [((respawn - (world.time - user.timeofdeath)) * 0.1) /60] minutes to use \the [src].") + 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, "You need to have been spawned in order to respawn here.") + +/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, "This machine is not functioning...") + return + if(!istype(ghost,/mob/observer/dead)) + return + + if(ghost.mind && ghost.mind.current && ghost.mind.current.stat != DEAD) + to_chat(ghost, "Your body is still alive, you cannot be resleeved.") + 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, "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.") + 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, "Could not find a valid location to spawn your character.") + 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, "You can't play as a [spawnthing]...") + 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 diff --git a/icons/obj/machines/autoresleever.dmi b/icons/obj/machines/autoresleever.dmi new file mode 100644 index 0000000000..1c1bb50706 Binary files /dev/null and b/icons/obj/machines/autoresleever.dmi differ diff --git a/maps/stellardelight/stellar_delight1.dmm b/maps/stellardelight/stellar_delight1.dmm index d74e93ac79..8de74aeb86 100644 --- a/maps/stellardelight/stellar_delight1.dmm +++ b/maps/stellardelight/stellar_delight1.dmm @@ -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 diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index cdba4f64c5..cfafaa8e6f 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -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 diff --git a/maps/tether/tether-03-surface3.dmm b/maps/tether/tether-03-surface3.dmm index 79250a1c3d..8d47397b50 100644 --- a/maps/tether/tether-03-surface3.dmm +++ b/maps/tether/tether-03-surface3.dmm @@ -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" diff --git a/maps/tether/tether_areas.dm b/maps/tether/tether_areas.dm index 7d8c998346..9718cf7ecf 100644 --- a/maps/tether/tether_areas.dm +++ b/maps/tether/tether_areas.dm @@ -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" diff --git a/vorestation.dme b/vorestation.dme index 4d488deb8a..bda8b0f4b4 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -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"