diff --git a/code/game/objects/items/storage/garment.dm b/code/game/objects/items/storage/garment.dm
index 403b4843f3f5..2148377b26bb 100644
--- a/code/game/objects/items/storage/garment.dm
+++ b/code/game/objects/items/storage/garment.dm
@@ -14,6 +14,10 @@
name = "head of security's garment bag"
desc = "A bag for storing extra clothes and shoes. This one belongs to the head of security."
+/obj/item/storage/bag/garment/warden
+ name = "warden's garment bag"
+ desc = "A bag for storing extra clothes and shoes. This one belongs to the warden."
+
/obj/item/storage/bag/garment/hop
name = "head of personnel's garment bag"
desc = "A bag for storing extra clothes and shoes. This one belongs to the head of personnel."
@@ -89,6 +93,20 @@
new /obj/item/clothing/head/hats/hos/cap(src)
new /obj/item/clothing/mask/gas/sechailer/swat(src)
new /obj/item/clothing/neck/cloak/hos(src)
+ new /obj/item/clothing/head/helmet/sec(src) // monkestation addition
+
+/obj/item/storage/bag/garment/warden/PopulateContents()
+ new /obj/item/clothing/suit/armor/vest/warden(src)
+ new /obj/item/clothing/head/hats/warden(src)
+ new /obj/item/clothing/head/hats/warden/drill(src)
+ new /obj/item/clothing/head/beret/sec/navywarden(src)
+ new /obj/item/clothing/suit/armor/vest/warden/alt(src)
+ new /obj/item/clothing/under/rank/security/warden/formal(src)
+ new /obj/item/clothing/under/rank/security/warden/skirt(src)
+ new /obj/item/clothing/gloves/krav_maga/sec(src)
+ new /obj/item/clothing/glasses/hud/security/sunglasses(src)
+ new /obj/item/clothing/mask/gas/sechailer(src)
+ new /obj/item/clothing/head/helmet/sec(src) // monkestation addition
/obj/item/storage/bag/garment/research_director/PopulateContents()
new /obj/item/clothing/under/rank/rnd/research_director(src)
diff --git a/code/game/objects/structures/crates_lockers/closets/secure/security.dm b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
index 378c9a63e03c..2247ebeadcbf 100755
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -85,27 +85,17 @@
..()
new /obj/item/dog_bone(src)
new /obj/item/radio/headset/headset_sec(src)
- new /obj/item/clothing/suit/armor/vest/warden(src)
- new /obj/item/clothing/head/hats/warden(src)
- new /obj/item/clothing/head/hats/warden/drill(src)
- new /obj/item/clothing/head/beret/sec/navywarden(src)
- new /obj/item/clothing/suit/armor/vest/warden/alt(src)
- new /obj/item/clothing/under/rank/security/warden/formal(src)
- new /obj/item/clothing/under/rank/security/warden/skirt(src)
- new /obj/item/clothing/glasses/hud/security/sunglasses(src)
new /obj/item/holosign_creator/security(src)
- new /obj/item/clothing/mask/gas/sechailer(src)
+ new /obj/item/storage/bag/garment/warden(src)
new /obj/item/storage/box/zipties(src)
new /obj/item/storage/box/flashbangs(src)
new /obj/item/storage/belt/security/full(src)
new /obj/item/flashlight/seclite(src)
- new /obj/item/clothing/gloves/krav_maga/sec(src)
new /obj/item/door_remote/head_of_security(src)
new /obj/item/storage/box/bodycamera(src) //monkestation edit: Security Liability Act
new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src) //undoing ancient removal
new /obj/item/ammo_box/advanced/s12gauge/rubber(src) //he can have some rubber ammo too
-
/obj/structure/closet/secure_closet/security
name = "security officer's locker"
req_access = list(ACCESS_BRIG)
diff --git a/code/modules/mod/mod_theme.dm b/code/modules/mod/mod_theme.dm
index 0fc32a044a5a..7f5306098c78 100644
--- a/code/modules/mod/mod_theme.dm
+++ b/code/modules/mod/mod_theme.dm
@@ -696,7 +696,7 @@
a few years out of date, leading to an overall lower capacity for modules."
default_skin = "security"
armor_type = /datum/armor/mod_theme_security
- complexity_max = DEFAULT_MAX_COMPLEXITY - 3
+ complexity_max = DEFAULT_MAX_COMPLEXITY - 2 // monkestation edit DEFAULT_MAX_COMPLEXITY - 3 -> DEFAULT_MAX_COMPLEXITY - 2
slowdown_inactive = 1
slowdown_active = 0.5
allowed_suit_storage = list(
diff --git a/code/modules/mod/mod_types.dm b/code/modules/mod/mod_types.dm
index 8a43147bb1d0..2666f765c710 100644
--- a/code/modules/mod/mod_types.dm
+++ b/code/modules/mod/mod_types.dm
@@ -54,6 +54,7 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/tether,
/obj/item/mod/module/magboot,
+ /obj/item/mod/module/visor/meson, //monkestation edit
)
default_pins = list(
/obj/item/mod/module/magboot,
@@ -87,6 +88,7 @@
/obj/item/mod/module/rad_protection,
/obj/item/mod/module/flashlight,
/obj/item/mod/module/jetpack,
+ /obj/item/mod/module/visor/meson, // monkestation addition
)
default_pins = list(
/obj/item/mod/module/jetpack,
@@ -117,6 +119,7 @@
/obj/item/mod/module/clamp,
/obj/item/mod/module/drill,
/obj/item/mod/module/mouthhole,
+ /obj/item/mod/module/visor/meson, // monkestation addition
)
default_pins = list(
/obj/item/mod/module/gps,
@@ -131,6 +134,7 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
/obj/item/mod/module/quick_carry,
+ /obj/item/mod/module/visor/medhud, // monkestation addition
)
/obj/item/mod/control/pre_equipped/rescue
@@ -141,6 +145,7 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/health_analyzer,
/obj/item/mod/module/injector,
+ /obj/item/mod/module/visor/medhud, // monkestation addition
)
/obj/item/mod/control/pre_equipped/research
@@ -152,6 +157,7 @@
/obj/item/mod/module/flashlight,
/obj/item/mod/module/circuit,
/obj/item/mod/module/t_ray,
+ /obj/item/mod/module/visor/diaghud, // monkestation addition
)
/obj/item/mod/control/pre_equipped/security
@@ -163,6 +169,7 @@
/obj/item/mod/module/jetpack,
/obj/item/mod/module/pepper_shoulders,
/obj/item/mod/module/criminalcapture,
+ /obj/item/mod/module/visor/sechud, // monkestation addition
)
/obj/item/mod/control/pre_equipped/safeguard
@@ -176,6 +183,7 @@
/obj/item/mod/module/megaphone,
/obj/item/mod/module/projectile_dampener,
/obj/item/mod/module/pepper_shoulders,
+ /obj/item/mod/module/visor/sechud, // monkestation addition
)
default_pins = list(
/obj/item/mod/module/jetpack,
diff --git a/code/modules/surgery/organs/autosurgeon.dm b/code/modules/surgery/organs/autosurgeon.dm
index 427e686a2a6e..926ce90a75c4 100644
--- a/code/modules/surgery/organs/autosurgeon.dm
+++ b/code/modules/surgery/organs/autosurgeon.dm
@@ -136,6 +136,13 @@
uses = 1
starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/medical
+// monkestation edit start
+/obj/item/autosurgeon/security_hud
+ name = "autosurgeon"
+ desc = "A single use autosurgeon that contains a security heads-up display augment. A screwdriver can be used to remove it, but implants can't be placed back in."
+ uses = 1
+ starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/security
+// monkestation edit end
/obj/item/autosurgeon/syndicate
name = "suspicious autosurgeon"
diff --git a/monkestation/code/modules/clothing/head/helmet.dm b/monkestation/code/modules/clothing/head/helmet.dm
new file mode 100644
index 000000000000..843ff2d3a6d3
--- /dev/null
+++ b/monkestation/code/modules/clothing/head/helmet.dm
@@ -0,0 +1,85 @@
+/obj/item/clothing/head/helmet
+ var/hud_attachable = FALSE
+ var/obj/item/clothing/glasses/hud/hud_glasses = null
+ var/datum/atom_hud/our_hud = null
+ var/hud_trait = null
+
+/obj/item/clothing/head/helmet/equipped(mob/living/carbon/human/user, slot)
+ ..()
+ if(!(slot & ITEM_SLOT_HEAD))
+ return
+ give_hud(user)
+
+/obj/item/clothing/head/helmet/dropped(mob/living/carbon/human/user)
+ ..()
+ if(!istype(user) || user.head != src)
+ return
+ remove_hud(user)
+
+/obj/item/clothing/head/helmet/proc/give_hud(mob/living/carbon/human/user)
+ if(!hud_glasses)
+ return
+ if(hud_glasses.hud_type)
+ our_hud = GLOB.huds[hud_glasses.hud_type]
+ our_hud.show_to(user)
+ if(hud_glasses.hud_trait)
+ hud_trait = hud_glasses.hud_trait
+ ADD_TRAIT(user, hud_trait, HELMET_TRAIT)
+
+/obj/item/clothing/head/helmet/proc/remove_hud(mob/living/carbon/human/user)
+ if(our_hud)
+ our_hud.hide_from(user)
+ our_hud = null
+ if(hud_trait)
+ REMOVE_TRAIT(user, hud_trait, HELMET_TRAIT)
+ hud_trait = null
+
+/obj/item/clothing/head/helmet/attackby(obj/item/I, mob/user, params)
+ if(hud_attachable && !hud_glasses && istype(I, /obj/item/clothing/glasses/hud))
+ user.transferItemToLoc(I, src)
+ hud_glasses = I
+
+ balloon_alert(user, "attached [I]")
+
+ var/mob/living/carbon/human/wearer = loc
+ if (istype(wearer) && wearer.head == src)
+ give_hud(wearer)
+ else
+ return ..()
+
+/obj/item/clothing/head/helmet/screwdriver_act(mob/living/user, obj/item/tool)
+ if(hud_attachable && hud_glasses)
+ tool?.play_tool_sound(src)
+ balloon_alert(user, "unscrewed [hud_glasses]")
+
+ var/obj/item/to_remove = hud_glasses
+
+ // The forcemove here will call exited on the glasses, and automatically update our references / etc
+ to_remove.forceMove(drop_location())
+ if(Adjacent(user) && !issilicon(user))
+ user.put_in_hands(to_remove)
+ else
+ return ..()
+
+/obj/item/clothing/head/helmet/Exited(atom/movable/gone, direction)
+ if (gone == hud_glasses)
+ hud_glasses = null
+
+ var/mob/living/carbon/human/wearer = loc
+ if (istype(wearer) && wearer.head == src)
+ remove_hud(wearer)
+ else
+ return ..()
+
+/obj/item/clothing/head/helmet/sec
+ hud_attachable = TRUE
+
+/obj/item/clothing/head/helmet/alt
+ hud_attachable = TRUE
+
+/obj/item/clothing/head/helmet/examine(mob/user)
+ . = ..()
+ if(hud_glasses)
+ . += "It has \a [hud_glasses] [hud_attachable ? "mounted on it with a few screws" : "permanently mounted on it"]."
+ else if (hud_attachable)
+ . += "It has a mounting point for some HUD glasses."
diff --git a/monkestation/code/modules/clothing/spacesuits/hardsuits/misc.dm b/monkestation/code/modules/clothing/spacesuits/hardsuits/misc.dm
index 47e557f02ad9..92f38cb24f49 100644
--- a/monkestation/code/modules/clothing/spacesuits/hardsuits/misc.dm
+++ b/monkestation/code/modules/clothing/spacesuits/hardsuits/misc.dm
@@ -129,3 +129,7 @@
icon_state = "hardsuit0-sec"
armor_type = /datum/armor/hardsuit/sec
hardsuit_type = "sec"
+
+/obj/item/clothing/head/helmet/space/hardsuit/sec/New(loc, ...)
+ . = ..()
+ hud_glasses = new /obj/item/clothing/glasses/hud/security(src)
diff --git a/monkestation/code/modules/clothing/spacesuits/hardsuits/security.dm b/monkestation/code/modules/clothing/spacesuits/hardsuits/security.dm
deleted file mode 100644
index 02d50108d1f9..000000000000
--- a/monkestation/code/modules/clothing/spacesuits/hardsuits/security.dm
+++ /dev/null
@@ -1,14 +0,0 @@
-/obj/item/clothing/head/helmet/space/hardsuit/security
- name = "security hardsuit helmet"
- desc = "A special helmet designed for work in a hazardous, low pressure environment. Has an additional layer of armor."
- icon_state = "hardsuit0-security"
- hardsuit_type = "security"
- armor_type = /datum/armor/hardsuit/security
-
-
-/obj/item/clothing/suit/space/hardsuit/security
- icon_state = "hardsuit-security"
- name = "security hardsuit"
- desc = "A special suit that protects against hazardous, low pressure environments. Has an additional layer of armor."
- armor_type = /datum/armor/hardsuit/security
- helmettype = /obj/item/clothing/head/helmet/space/hardsuit/security
diff --git a/tgstation.dme b/tgstation.dme
index 4e36c0bc13fd..21e7fe11c406 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -7187,6 +7187,7 @@
#include "monkestation\code\modules\clothing\gloves\power_gloves.dm"
#include "monkestation\code\modules\clothing\head\costume.dm"
#include "monkestation\code\modules\clothing\head\hat.dm"
+#include "monkestation\code\modules\clothing\head\helmet.dm"
#include "monkestation\code\modules\clothing\head\misc.dm"
#include "monkestation\code\modules\clothing\head\wig.dm"
#include "monkestation\code\modules\clothing\jobs\brig_physician.dm"
@@ -7209,7 +7210,6 @@
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\medical.dm"
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\misc.dm"
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\science.dm"
-#include "monkestation\code\modules\clothing\spacesuits\hardsuits\security.dm"
#include "monkestation\code\modules\clothing\suit_accessories\bodycamera.dm"
#include "monkestation\code\modules\clothing\suit_accessories\bodycamera_box.dm"
#include "monkestation\code\modules\clothing\suit_accessories\camera.dm"