Skip to content

Commit f53aa2d

Browse files
SorenonDATA-xPUNGEDJolly-66
authored
Arachnid Roundstart Security HUDs (#5588)
## About The Pull Request ### Additions - Gives arachnid players access to roundstart security huds as they cannot wear glasses - Any pair of HUD glasses can be attached to security helmets to give the wearer its HUD - Security hardsuit helmets spawn with unremovable sec HUDs attached - Most prebuilt modsuits now start with their department's relevant HUD module ## Why It's Good For The Game - Should make playing security as an arachnid much less painful ## Changelog :cl: add: Added the ability to attach HUD glasses to security helmets, with security hardsuit helmets having an unremovable sec HUD. add: Most prebuilt modsuits now start with their department's relevant HUD module qol: The Warden's locker now has a garment bag /:cl: --------- Co-authored-by: DATAxPUNGED <[email protected]> Co-authored-by: Jolly <[email protected]>
1 parent b8ce75e commit f53aa2d

File tree

9 files changed

+125
-27
lines changed

9 files changed

+125
-27
lines changed

code/game/objects/items/storage/garment.dm

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,10 @@
1414
name = "head of security's garment bag"
1515
desc = "A bag for storing extra clothes and shoes. This one belongs to the head of security."
1616

17+
/obj/item/storage/bag/garment/warden
18+
name = "warden's garment bag"
19+
desc = "A bag for storing extra clothes and shoes. This one belongs to the warden."
20+
1721
/obj/item/storage/bag/garment/hop
1822
name = "head of personnel's garment bag"
1923
desc = "A bag for storing extra clothes and shoes. This one belongs to the head of personnel."
@@ -89,6 +93,20 @@
8993
new /obj/item/clothing/head/hats/hos/cap(src)
9094
new /obj/item/clothing/mask/gas/sechailer/swat(src)
9195
new /obj/item/clothing/neck/cloak/hos(src)
96+
new /obj/item/clothing/head/helmet/sec(src) // monkestation addition
97+
98+
/obj/item/storage/bag/garment/warden/PopulateContents()
99+
new /obj/item/clothing/suit/armor/vest/warden(src)
100+
new /obj/item/clothing/head/hats/warden(src)
101+
new /obj/item/clothing/head/hats/warden/drill(src)
102+
new /obj/item/clothing/head/beret/sec/navywarden(src)
103+
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
104+
new /obj/item/clothing/under/rank/security/warden/formal(src)
105+
new /obj/item/clothing/under/rank/security/warden/skirt(src)
106+
new /obj/item/clothing/gloves/krav_maga/sec(src)
107+
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
108+
new /obj/item/clothing/mask/gas/sechailer(src)
109+
new /obj/item/clothing/head/helmet/sec(src) // monkestation addition
92110

93111
/obj/item/storage/bag/garment/research_director/PopulateContents()
94112
new /obj/item/clothing/under/rank/rnd/research_director(src)

code/game/objects/structures/crates_lockers/closets/secure/security.dm

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -85,27 +85,17 @@
8585
..()
8686
new /obj/item/dog_bone(src)
8787
new /obj/item/radio/headset/headset_sec(src)
88-
new /obj/item/clothing/suit/armor/vest/warden(src)
89-
new /obj/item/clothing/head/hats/warden(src)
90-
new /obj/item/clothing/head/hats/warden/drill(src)
91-
new /obj/item/clothing/head/beret/sec/navywarden(src)
92-
new /obj/item/clothing/suit/armor/vest/warden/alt(src)
93-
new /obj/item/clothing/under/rank/security/warden/formal(src)
94-
new /obj/item/clothing/under/rank/security/warden/skirt(src)
95-
new /obj/item/clothing/glasses/hud/security/sunglasses(src)
9688
new /obj/item/holosign_creator/security(src)
97-
new /obj/item/clothing/mask/gas/sechailer(src)
89+
new /obj/item/storage/bag/garment/warden(src)
9890
new /obj/item/storage/box/zipties(src)
9991
new /obj/item/storage/box/flashbangs(src)
10092
new /obj/item/storage/belt/security/full(src)
10193
new /obj/item/flashlight/seclite(src)
102-
new /obj/item/clothing/gloves/krav_maga/sec(src)
10394
new /obj/item/door_remote/head_of_security(src)
10495
new /obj/item/storage/box/bodycamera(src) //monkestation edit: Security Liability Act
10596
new /obj/item/gun/ballistic/shotgun/automatic/combat/compact(src) //undoing ancient removal
10697
new /obj/item/ammo_box/advanced/s12gauge/rubber(src) //he can have some rubber ammo too
10798

108-
10999
/obj/structure/closet/secure_closet/security
110100
name = "security officer's locker"
111101
req_access = list(ACCESS_BRIG)

code/modules/mod/mod_theme.dm

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -696,7 +696,7 @@
696696
a few years out of date, leading to an overall lower capacity for modules."
697697
default_skin = "security"
698698
armor_type = /datum/armor/mod_theme_security
699-
complexity_max = DEFAULT_MAX_COMPLEXITY - 3
699+
complexity_max = DEFAULT_MAX_COMPLEXITY - 2 // monkestation edit DEFAULT_MAX_COMPLEXITY - 3 -> DEFAULT_MAX_COMPLEXITY - 2
700700
slowdown_inactive = 1
701701
slowdown_active = 0.5
702702
allowed_suit_storage = list(

code/modules/mod/mod_types.dm

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
/obj/item/mod/module/flashlight,
5555
/obj/item/mod/module/tether,
5656
/obj/item/mod/module/magboot,
57+
/obj/item/mod/module/visor/meson, //monkestation edit
5758
)
5859
default_pins = list(
5960
/obj/item/mod/module/magboot,
@@ -87,6 +88,7 @@
8788
/obj/item/mod/module/rad_protection,
8889
/obj/item/mod/module/flashlight,
8990
/obj/item/mod/module/jetpack,
91+
/obj/item/mod/module/visor/meson, // monkestation addition
9092
)
9193
default_pins = list(
9294
/obj/item/mod/module/jetpack,
@@ -117,6 +119,7 @@
117119
/obj/item/mod/module/clamp,
118120
/obj/item/mod/module/drill,
119121
/obj/item/mod/module/mouthhole,
122+
/obj/item/mod/module/visor/meson, // monkestation addition
120123
)
121124
default_pins = list(
122125
/obj/item/mod/module/gps,
@@ -131,6 +134,7 @@
131134
/obj/item/mod/module/flashlight,
132135
/obj/item/mod/module/health_analyzer,
133136
/obj/item/mod/module/quick_carry,
137+
/obj/item/mod/module/visor/medhud, // monkestation addition
134138
)
135139

136140
/obj/item/mod/control/pre_equipped/rescue
@@ -141,6 +145,7 @@
141145
/obj/item/mod/module/flashlight,
142146
/obj/item/mod/module/health_analyzer,
143147
/obj/item/mod/module/injector,
148+
/obj/item/mod/module/visor/medhud, // monkestation addition
144149
)
145150

146151
/obj/item/mod/control/pre_equipped/research
@@ -152,6 +157,7 @@
152157
/obj/item/mod/module/flashlight,
153158
/obj/item/mod/module/circuit,
154159
/obj/item/mod/module/t_ray,
160+
/obj/item/mod/module/visor/diaghud, // monkestation addition
155161
)
156162

157163
/obj/item/mod/control/pre_equipped/security
@@ -163,6 +169,7 @@
163169
/obj/item/mod/module/jetpack,
164170
/obj/item/mod/module/pepper_shoulders,
165171
/obj/item/mod/module/criminalcapture,
172+
/obj/item/mod/module/visor/sechud, // monkestation addition
166173
)
167174

168175
/obj/item/mod/control/pre_equipped/safeguard
@@ -176,6 +183,7 @@
176183
/obj/item/mod/module/megaphone,
177184
/obj/item/mod/module/projectile_dampener,
178185
/obj/item/mod/module/pepper_shoulders,
186+
/obj/item/mod/module/visor/sechud, // monkestation addition
179187
)
180188
default_pins = list(
181189
/obj/item/mod/module/jetpack,

code/modules/surgery/organs/autosurgeon.dm

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,13 @@
136136
uses = 1
137137
starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/medical
138138

139+
// monkestation edit start
140+
/obj/item/autosurgeon/security_hud
141+
name = "autosurgeon"
142+
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."
143+
uses = 1
144+
starting_organ = /obj/item/organ/internal/cyberimp/eyes/hud/security
145+
// monkestation edit end
139146

140147
/obj/item/autosurgeon/syndicate
141148
name = "suspicious autosurgeon"
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
/obj/item/clothing/head/helmet
2+
var/hud_attachable = FALSE
3+
var/obj/item/clothing/glasses/hud/hud_glasses = null
4+
var/datum/atom_hud/our_hud = null
5+
var/hud_trait = null
6+
7+
/obj/item/clothing/head/helmet/equipped(mob/living/carbon/human/user, slot)
8+
..()
9+
if(!(slot & ITEM_SLOT_HEAD))
10+
return
11+
give_hud(user)
12+
13+
/obj/item/clothing/head/helmet/dropped(mob/living/carbon/human/user)
14+
..()
15+
if(!istype(user) || user.head != src)
16+
return
17+
remove_hud(user)
18+
19+
/obj/item/clothing/head/helmet/proc/give_hud(mob/living/carbon/human/user)
20+
if(!hud_glasses)
21+
return
22+
if(hud_glasses.hud_type)
23+
our_hud = GLOB.huds[hud_glasses.hud_type]
24+
our_hud.show_to(user)
25+
if(hud_glasses.hud_trait)
26+
hud_trait = hud_glasses.hud_trait
27+
ADD_TRAIT(user, hud_trait, HELMET_TRAIT)
28+
29+
/obj/item/clothing/head/helmet/proc/remove_hud(mob/living/carbon/human/user)
30+
if(our_hud)
31+
our_hud.hide_from(user)
32+
our_hud = null
33+
if(hud_trait)
34+
REMOVE_TRAIT(user, hud_trait, HELMET_TRAIT)
35+
hud_trait = null
36+
37+
/obj/item/clothing/head/helmet/attackby(obj/item/I, mob/user, params)
38+
if(hud_attachable && !hud_glasses && istype(I, /obj/item/clothing/glasses/hud))
39+
user.transferItemToLoc(I, src)
40+
hud_glasses = I
41+
42+
balloon_alert(user, "attached [I]")
43+
44+
var/mob/living/carbon/human/wearer = loc
45+
if (istype(wearer) && wearer.head == src)
46+
give_hud(wearer)
47+
else
48+
return ..()
49+
50+
/obj/item/clothing/head/helmet/screwdriver_act(mob/living/user, obj/item/tool)
51+
if(hud_attachable && hud_glasses)
52+
tool?.play_tool_sound(src)
53+
balloon_alert(user, "unscrewed [hud_glasses]")
54+
55+
var/obj/item/to_remove = hud_glasses
56+
57+
// The forcemove here will call exited on the glasses, and automatically update our references / etc
58+
to_remove.forceMove(drop_location())
59+
if(Adjacent(user) && !issilicon(user))
60+
user.put_in_hands(to_remove)
61+
else
62+
return ..()
63+
64+
/obj/item/clothing/head/helmet/Exited(atom/movable/gone, direction)
65+
if (gone == hud_glasses)
66+
hud_glasses = null
67+
68+
var/mob/living/carbon/human/wearer = loc
69+
if (istype(wearer) && wearer.head == src)
70+
remove_hud(wearer)
71+
else
72+
return ..()
73+
74+
/obj/item/clothing/head/helmet/sec
75+
hud_attachable = TRUE
76+
77+
/obj/item/clothing/head/helmet/alt
78+
hud_attachable = TRUE
79+
80+
/obj/item/clothing/head/helmet/examine(mob/user)
81+
. = ..()
82+
if(hud_glasses)
83+
. += "It has \a [hud_glasses] [hud_attachable ? "mounted on it with a few <b>screws</b>" : "permanently mounted on it"]."
84+
else if (hud_attachable)
85+
. += "It has a mounting point for some <b>HUD</b> glasses."

monkestation/code/modules/clothing/spacesuits/hardsuits/misc.dm

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -129,3 +129,7 @@
129129
icon_state = "hardsuit0-sec"
130130
armor_type = /datum/armor/hardsuit/sec
131131
hardsuit_type = "sec"
132+
133+
/obj/item/clothing/head/helmet/space/hardsuit/sec/New(loc, ...)
134+
. = ..()
135+
hud_glasses = new /obj/item/clothing/glasses/hud/security(src)

monkestation/code/modules/clothing/spacesuits/hardsuits/security.dm

Lines changed: 0 additions & 14 deletions
This file was deleted.

tgstation.dme

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7176,6 +7176,7 @@
71767176
#include "monkestation\code\modules\clothing\gloves\power_gloves.dm"
71777177
#include "monkestation\code\modules\clothing\head\costume.dm"
71787178
#include "monkestation\code\modules\clothing\head\hat.dm"
7179+
#include "monkestation\code\modules\clothing\head\helmet.dm"
71797180
#include "monkestation\code\modules\clothing\head\misc.dm"
71807181
#include "monkestation\code\modules\clothing\head\wig.dm"
71817182
#include "monkestation\code\modules\clothing\jobs\brig_physician.dm"
@@ -7198,7 +7199,6 @@
71987199
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\medical.dm"
71997200
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\misc.dm"
72007201
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\science.dm"
7201-
#include "monkestation\code\modules\clothing\spacesuits\hardsuits\security.dm"
72027202
#include "monkestation\code\modules\clothing\suit_accessories\bodycamera.dm"
72037203
#include "monkestation\code\modules\clothing\suit_accessories\bodycamera_box.dm"
72047204
#include "monkestation\code\modules\clothing\suit_accessories\camera.dm"

0 commit comments

Comments
 (0)