From 4b7cdb86c4897822773a6d4cb092d9f12ca69649 Mon Sep 17 00:00:00 2001 From: SatinIsle <98125273+SatinIsle@users.noreply.github.com> Date: Mon, 4 Nov 2024 20:20:53 +0000 Subject: [PATCH] Emergency door release (#16559) Added an extra button to all station dorms, an emergency door release. This can be pulled by the occupants to immediately unbolt and open the door even if it is unpowered. Why we need this: During deadshifts, it's somewhat common for players to go and scene in a dorm and lock the door. Then if the power goes out, they generally need to ahelp to get out, because they'll have bolted themselves in. Obviously there are a few ways to solve this, such as special doors, making the room always powered or making a variation of the lock itself that doesn't use power. However, I felt that having an extra lever allows people to keep whatever vibe they want as for power in their scenes, has a cool vibe itself, and I also have plans for how I can use this specifically in events. --- code/game/machinery/door_control.dm | 20 ++++++++++ icons/obj/door_release.dmi | Bin 0 -> 787 bytes maps/groundbase/gb-z2.dmm | 46 ++++++++++++++++++++++ maps/stellar_delight/stellar_delight1.dmm | 44 +++++++++++++++++++++ maps/tether/tether-01-surface1.dmm | 40 +++++++++++++++++++ 5 files changed, 150 insertions(+) create mode 100644 icons/obj/door_release.dmi diff --git a/code/game/machinery/door_control.dm b/code/game/machinery/door_control.dm index 23e19a54a01..0c29400e73e 100644 --- a/code/game/machinery/door_control.dm +++ b/code/game/machinery/door_control.dm @@ -221,3 +221,23 @@ spawn(0) if(SG?.anchored) SG.toggle() + +/obj/machinery/button/remote/airlock/release + icon = 'icons/obj/door_release.dmi' + name = "emergency door release" + desc = "Forces the opening of doors in an emergency, regardless of whether they're powered." + + use_power = USE_POWER_OFF + idle_power_usage = 0 + active_power_usage = 0 + +/obj/machinery/button/remote/airlock/release/trigger() + for(var/obj/machinery/door/airlock/D in machines) + if(D.id_tag == id) + if(D.locked) + D.unlock(1) + if(D.density) + D.open(1) + +/obj/machinery/button/remote/airlock/release/powered() + return 1 //Is always able to be used diff --git a/icons/obj/door_release.dmi b/icons/obj/door_release.dmi new file mode 100644 index 0000000000000000000000000000000000000000..669aa390b0b80110fa11376ad092fad123b63d0e GIT binary patch literal 787 zcmV+u1MK{XP)005u_0{{R3dEt5<0000gP)t-sz`(%F z05h=&Gwne^GygL^Jw4brH!LhHAvqiX006+i!2ka<0094H004_vdH?_b00DGTPE!Ct z=GbNc005MFR9JLGWpiV4X>fFDZ*Bkpc$`yKaB_9`^iy#0_2eo`Eh^5;&r`5fFwryM z;w;ZhDainGjE%TBGg33tGfE(w;*!LYR3K9+B|pC?xuht^K#7YpC9|j)q>+m=ttc@! z6~s2gRB1@GN+Vnet*7Mx00H+&L_t(&f$f<=O2beTMUw>x)?yKKAT1r)P7Lh^1Q(zPomUECXM$Nl zz`5W;9Jl}no#;S1cQ4XT+V`%$*Ovqpy=V4AbMt@lOAa?lLI^3(PW!N0K%=oO#?34i zsLzLh=1D9NCa`-U540xh%A@Il)rg!0(~F6eqN2SUj%#~oUR2P z&0O2^eQ^4?8uw<4-)dNd;ofUm&!ts R{U-nb002ovPDHLkV1iv_Vy*xH literal 0 HcmV?d00001 diff --git a/maps/groundbase/gb-z2.dmm b/maps/groundbase/gb-z2.dmm index e3d7326b77d..537bcba1d87 100644 --- a/maps/groundbase/gb-z2.dmm +++ b/maps/groundbase/gb-z2.dmm @@ -2120,6 +2120,12 @@ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/button/remote/airlock/release{ + dir = 8; + pixel_y = -7; + pixel_x = 27; + id = "dorm5" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room5) "fn" = ( @@ -2641,6 +2647,12 @@ icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/button/remote/airlock/release{ + dir = 4; + pixel_y = -7; + pixel_x = -27; + id = "dorm4" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room4) "gQ" = ( @@ -6090,6 +6102,12 @@ icon_state = "2-4" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/button/remote/airlock/release{ + dir = 4; + pixel_y = -7; + pixel_x = -27; + id = "dorm6" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room6) "qG" = ( @@ -7288,6 +7306,12 @@ icon_state = "2-8" }, /obj/machinery/atmospherics/pipe/simple/hidden/scrubbers, +/obj/machinery/button/remote/airlock/release{ + dir = 8; + pixel_y = -7; + pixel_x = 27; + id = "dorm3" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room3) "uf" = ( @@ -13390,6 +13414,11 @@ /obj/structure/bed/chair/sofa/corp/left{ dir = 4 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 27; + pixel_x = 7; + id = "dorm8" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room8) "Lu" = ( @@ -15037,6 +15066,12 @@ /obj/structure/bed/chair/sofa/corp/left{ dir = 8 }, +/obj/machinery/button/remote/airlock/release{ + dir = 8; + pixel_y = -7; + pixel_x = 27; + id = "dorm1" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room1) "PU" = ( @@ -15368,6 +15403,11 @@ /obj/structure/bed/chair/sofa/corp/right{ dir = 8 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 27; + pixel_x = -7; + id = "dorm7" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room7) "QP" = ( @@ -16945,6 +16985,12 @@ /obj/structure/bed/chair/sofa/corp/right{ dir = 4 }, +/obj/machinery/button/remote/airlock/release{ + dir = 4; + pixel_y = -7; + pixel_x = -27; + id = "dorm2" + }, /turf/simulated/floor/wood, /area/groundbase/dorms/room2) "Vz" = ( diff --git a/maps/stellar_delight/stellar_delight1.dmm b/maps/stellar_delight/stellar_delight1.dmm index b6a140ba19d..10c67153881 100644 --- a/maps/stellar_delight/stellar_delight1.dmm +++ b/maps/stellar_delight/stellar_delight1.dmm @@ -7207,6 +7207,12 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -22; + pixel_x = 6; + dir = 1; + id = "dorm4" + }, /turf/simulated/floor/carpet, /area/stellardelight/deck1/dorms/dorm4) "oB" = ( @@ -7545,6 +7551,12 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -22; + pixel_x = -8; + dir = 1; + id = "dorm6" + }, /turf/simulated/floor/carpet/purcarpet, /area/stellardelight/deck1/dorms/dorm6) "pn" = ( @@ -8799,6 +8811,11 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 24; + pixel_x = -7; + id = "dorm8" + }, /turf/simulated/floor/carpet, /area/stellardelight/deck1/dorms/dorm8) "rX" = ( @@ -16042,6 +16059,11 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 24; + pixel_x = 7; + id = "dorm1" + }, /turf/simulated/floor/carpet, /area/stellardelight/deck1/dorms/dorm1) "HY" = ( @@ -21133,6 +21155,12 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -22; + pixel_x = 6; + dir = 1; + id = "dorm3" + }, /turf/simulated/floor/carpet/purcarpet, /area/stellardelight/deck1/dorms/dorm3) "SQ" = ( @@ -22475,6 +22503,11 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 24; + pixel_x = -7; + id = "dorm7" + }, /turf/simulated/floor/carpet/purcarpet, /area/stellardelight/deck1/dorms/dorm7) "Vw" = ( @@ -22760,6 +22793,11 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = 24; + pixel_x = 7; + id = "dorm2" + }, /turf/simulated/floor/carpet/purcarpet, /area/stellardelight/deck1/dorms/dorm2) "Wb" = ( @@ -23885,6 +23923,12 @@ /obj/structure/closet/crate/bin{ anchored = 1 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -22; + pixel_x = -8; + dir = 1; + id = "dorm5" + }, /turf/simulated/floor/carpet, /area/stellardelight/deck1/dorms/dorm5) "Yt" = ( diff --git a/maps/tether/tether-01-surface1.dmm b/maps/tether/tether-01-surface1.dmm index 2e93b90624e..413088b4ad2 100644 --- a/maps/tether/tether-01-surface1.dmm +++ b/maps/tether/tether-01-surface1.dmm @@ -22258,6 +22258,11 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = 33; + id = "dorm7" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_7) "aMA" = ( @@ -22326,6 +22331,11 @@ pixel_y = -4; specialfunctions = 4 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = -33; + id = "dorm8" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_8) "aMD" = ( @@ -23381,6 +23391,11 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = 33; + id = "dorm5" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_5) "aOI" = ( @@ -23445,6 +23460,11 @@ pixel_y = -4; specialfunctions = 4 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = -33; + id = "dorm6" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_6) "aOL" = ( @@ -24537,6 +24557,11 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = 33; + id = "dorm3" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_3) "aQI" = ( @@ -24605,6 +24630,11 @@ pixel_y = -4; specialfunctions = 4 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = -33; + id = "dorm4" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_4) "aQL" = ( @@ -25617,6 +25647,11 @@ /obj/structure/cable/orange{ icon_state = "1-2" }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = 33; + id = "dorm1" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_1) "aSV" = ( @@ -25627,6 +25662,11 @@ pixel_y = -4; specialfunctions = 4 }, +/obj/machinery/button/remote/airlock/release{ + pixel_y = -4; + pixel_x = -33; + id = "dorm2" + }, /turf/simulated/floor/wood, /area/crew_quarters/sleep/Dorm_2) "aSW" = (