diff --git a/code/game/machinery/doors/airlock.dm b/code/game/machinery/doors/airlock.dm
index ac4a516ea88..5e6b66be525 100644
--- a/code/game/machinery/doors/airlock.dm
+++ b/code/game/machinery/doors/airlock.dm
@@ -121,13 +121,10 @@
opacity = 1
assembly_type = /obj/structure/door_assembly/door_assembly_hatch
-/obj/machinery/door/airlock/hatch/delta
- name = "Delta Level Hatch"
- icon = 'icons/obj/doors/Doorhatchele.dmi'
- opacity = 1
+/obj/machinery/door/airlock/hatch/gamma
+ name = "Gamma Level Hatch"
hackProof = 1
aiControlDisabled = 1
- assembly_type = /obj/structure/door_assembly/door_assembly_hatch
/obj/machinery/door/airlock/maintenance_hatch
name = "Maintenance Hatch"
@@ -296,6 +293,11 @@
icon = 'icons/obj/doors/hightechsecurity.dmi'
assembly_type = /obj/structure/door_assembly/door_assembly_highsecurity
+/obj/machinery/door/airlock/highsecurity/red
+ name = "Secure Armory Airlock"
+ hackProof = 1
+ aiControlDisabled = 1
+
/*
About the new airlock wires panel:
* An airlock wire dialog can be accessed by the normal way or by using wirecutters or a multitool on the door while the wire-panel is open. This would show the following wires, which you can either wirecut/mend or send a multitool pulse through. There are 9 wires.
@@ -1072,7 +1074,7 @@ About the new airlock wires panel:
return
-/obj/machinery/door/airlock/hatch/delta/attackby(C as obj, mob/user as mob)
+/obj/machinery/door/airlock/hatch/gamma/attackby(C as obj, mob/user as mob)
//world << text("airlock attackby src [] obj [] mob []", src, C, user)
if(!istype(usr, /mob/living/silicon))
if(src.isElectrified())
@@ -1094,4 +1096,30 @@ About the new airlock wires panel:
src.update_icon()
return
else
- return
\ No newline at end of file
+ return
+
+
+/obj/machinery/door/airlock/highsecurity/red/attackby(C as obj, mob/user as mob)
+ //world << text("airlock attackby src [] obj [] mob []", src, C, user)
+ if(!istype(usr, /mob/living/silicon))
+ if(src.isElectrified())
+ if(src.shock(user, 75))
+ return
+ if(istype(C, /obj/item/device/detective_scanner) || istype(C, /obj/item/taperoll))
+ return
+
+ src.add_fingerprint(user)
+ if((istype(C, /obj/item/weapon/weldingtool) && !( src.operating > 0 ) && src.density))
+ var/obj/item/weapon/weldingtool/W = C
+ if(W.remove_fuel(0,user))
+ if(frozen)
+ frozen = 0
+ if(!src.welded)
+ src.welded = 1
+ else
+ src.welded = null
+ src.update_icon()
+ return
+ else
+ return
+
diff --git a/code/modules/security levels/security levels.dm b/code/modules/security levels/security levels.dm
index 28563c3b488..fe3a9a11f45 100644
--- a/code/modules/security levels/security levels.dm
+++ b/code/modules/security levels/security levels.dm
@@ -14,6 +14,10 @@
level = SEC_LEVEL_BLUE
if("red")
level = SEC_LEVEL_RED
+ if("gamma")
+ level = SEC_LEVEL_GAMMA
+ if("epsiolon")
+ level = SEC_LEVEL_EPSILON
if("delta")
level = SEC_LEVEL_DELTA
@@ -48,7 +52,10 @@
world << "Attention! Code red!"
world << "[config.alert_desc_red_downto]"
security_level = SEC_LEVEL_RED
-
+ for(var/obj/machinery/door/airlock/highsecurity/red/R in machines)
+ if(R.z == 1)
+ R.locked = 0
+ R.update_icon()
/* - At the time of commit, setting status displays didn't work properly
var/obj/machinery/computer/communications/CC = locate(/obj/machinery/computer/communications,world)
if(CC)
@@ -59,6 +66,26 @@
FA.overlays = list()
FA.overlays += image('icons/obj/monitors.dmi', "overlay_red")
+ if(SEC_LEVEL_GAMMA)
+ world << "Attention! GAMMA security level activated!"
+ world << "[config.alert_desc_red_upto]"
+ if(security_level < SEC_LEVEL_RED)
+ for(var/obj/machinery/door/airlock/highsecurity/red/R in machines)
+ if(R.z == 1)
+ R.locked = 0
+ R.update_icon()
+ for(var/obj/machinery/door/airlock/hatch/gamma/H in machines)
+ if(H.z == 1)
+ H.open()
+ spawn(10)
+ H.locked = 1
+ H.update_icon()
+ security_level = SEC_LEVEL_GAMMA
+ if(SEC_LEVEL_EPSILON)
+ world << "Attention! EPSILON security level activated!"
+ world << "[config.alert_desc_red_upto]"
+ security_level = SEC_LEVEL_EPSILON
+
if(SEC_LEVEL_DELTA)
world << "Attention! Delta security level reached!"
world << "[config.alert_desc_delta]"
@@ -78,6 +105,10 @@
return "blue"
if(SEC_LEVEL_RED)
return "red"
+ if(SEC_LEVEL_GAMMA)
+ return "gamma"
+ if(SEC_LEVEL_EPSILON)
+ return "epsilon"
if(SEC_LEVEL_DELTA)
return "delta"
@@ -89,6 +120,10 @@
return "blue"
if(SEC_LEVEL_RED)
return "red"
+ if(SEC_LEVEL_GAMMA)
+ return "gamma"
+ if(SEC_LEVEL_EPSILON)
+ return "epsilon"
if(SEC_LEVEL_DELTA)
return "delta"
@@ -100,6 +135,10 @@
return SEC_LEVEL_BLUE
if("red")
return SEC_LEVEL_RED
+ if("gamma")
+ return SEC_LEVEL_GAMMA
+ if("epsilon")
+ return SEC_LEVEL_EPSILON
if("delta")
return SEC_LEVEL_DELTA
diff --git a/code/setup.dm b/code/setup.dm
index 72dac3dbc44..76357df62b6 100644
--- a/code/setup.dm
+++ b/code/setup.dm
@@ -473,7 +473,9 @@ var/static/list/scarySounds = list('sound/weapons/thudswoosh.ogg','sound/weapons
#define SEC_LEVEL_GREEN 0
#define SEC_LEVEL_BLUE 1
#define SEC_LEVEL_RED 2
-#define SEC_LEVEL_DELTA 3
+#define SEC_LEVEL_GAMMA 3
+#define SEC_LEVEL_EPSILON 4
+#define SEC_LEVEL_DELTA 5
#define TRANSITIONEDGE 7 //Distance from edge to move to another z-level
diff --git a/maps/tgstation-redux-WIP.dmm b/maps/tgstation-redux-WIP.dmm
index 76e9cb122f2..58114bbaf44 100644
--- a/maps/tgstation-redux-WIP.dmm
+++ b/maps/tgstation-redux-WIP.dmm
@@ -160,9 +160,9 @@
"add" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/obj/machinery/atmospherics/pipe/simple/supply/hidden{dir = 4},/turf/simulated/floor,/area/security/prison)
"ade" = (/obj/item/device/radio/intercom{pixel_x = 27},/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 = "Prison Wing Hallway"; dir = 8},/turf/simulated/floor{icon_state = "red"; dir = 4},/area/security/prison)
"adf" = (/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/wall/r_wall,/area)
-"adg" = (/obj/machinery/door/airlock/highsecurity{name = "Secure Armoury Section"; req_access_txt = "3"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/turf/simulated/floor{icon_state = "dark"},/area/security/armoury)
+"adg" = (/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/door/airlock/highsecurity/red,/turf/simulated/floor{icon_state = "dark"},/area/security/armoury)
"adh" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/simulated/wall/r_wall,/area)
-"adi" = (/obj/machinery/door/airlock/hatch/delta{name = "Gamma Armory"},/turf/simulated/floor{icon_state = "dark"},/area)
+"adi" = (/obj/machinery/door/airlock/hatch/gamma{use_power = 0},/turf/simulated/floor{icon_state = "dark"},/area)
"adj" = (/obj/machinery/atmospherics/pipe/simple/supply/hidden,/turf/unsimulated/wall,/area)
"adk" = (/obj/structure/sign/securearea,/turf/simulated/wall/r_wall,/area)
"adl" = (/obj/machinery/door/airlock/vault{icon_state = "door_locked"; locked = 1; req_access_txt = "53"},/obj/structure/cable{d1 = 1; d2 = 2; icon_state = "1-2"; tag = ""},/obj/machinery/atmospherics/pipe/simple/scrubbers/hidden,/turf/simulated/floor{tag = "icon-vault (NORTHEAST)"; icon_state = "vault"; dir = 5},/area/security/nuke_storage)