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"