diff --git a/code/__defines/items_clothing.dm b/code/__defines/items_clothing.dm
index f857a8f232e..c33d92609c2 100644
--- a/code/__defines/items_clothing.dm
+++ b/code/__defines/items_clothing.dm
@@ -34,6 +34,7 @@
#define ACCESSORY_SLOT_ARMOR_L "Leg armor"
#define ACCESSORY_SLOT_ARMOR_S "Armor storage"
#define ACCESSORY_SLOT_ARMOR_M "Misc armor"
+#define ACCESSORY_SLOT_HELM_C "Helmet cover"
// Flags bitmasks.
#define NOBLUDGEON 0x1 // When an item has this it produces no "X has been hit by Y with Z" message with the default handler.
@@ -111,6 +112,21 @@
#define slot_w_uniform_str "slot_w_uniform"
#define slot_head_str "slot_head"
#define slot_wear_suit_str "slot_suit"
+#define slot_l_ear_str "slot_l_ear"
+#define slot_r_ear_str "slot_r_ear"
+#define slot_belt_str "slot_belt"
+#define slot_shoes_str "slot_shoes"
+#define slot_head_str "slot_head"
+#define slot_wear_mask_str "slot_wear_mask"
+#define slot_handcuffed_str "slot_handcuffed"
+#define slot_legcuffed_str "slot_legcuffed"
+#define slot_wear_mask_str "slot_wear_mask"
+#define slot_wear_id_str "slot_wear_id"
+#define slot_gloves_str "slot_gloves"
+#define slot_glasses_str "slot_glasses"
+#define slot_s_store_str "slot_s_store"
+#define slot_tie_str "slot_tie"
+
// Bitflags for clothing parts.
#define HEAD 0x1
diff --git a/code/datums/supplypacks/security.dm b/code/datums/supplypacks/security.dm
index e248acc46c0..94a941a9c6b 100644
--- a/code/datums/supplypacks/security.dm
+++ b/code/datums/supplypacks/security.dm
@@ -281,7 +281,7 @@
/obj/item/clothing/suit/storage/vest/hos,
/obj/item/clothing/under/rank/head_of_security/corp,
/obj/item/clothing/suit/storage/vest/hoscoat,
- /obj/item/clothing/head/helmet/HoS/dermal,
+ /obj/item/clothing/head/helmet/dermal,
/obj/item/weapon/cartridge/hos,
/obj/item/device/radio/headset/heads/hos,
/obj/item/clothing/glasses/sunglasses/sechud,
diff --git a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
index c173ba55acc..1579252628f 100644
--- a/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
+++ b/code/game/gamemodes/changeling/powers/bioelectrogenesis.dm
@@ -102,6 +102,8 @@
desc = "You could probably shock someone badly if you touched them, or recharge something."
icon = 'icons/obj/weapons.dmi'
icon_state = "electric_hand"
+ show_examine = FALSE
+
var/shock_cost = 10
var/agony_amount = 60
var/electrocute_amount = 10
diff --git a/code/game/gamemodes/changeling/powers/electric_lockpick.dm b/code/game/gamemodes/changeling/powers/electric_lockpick.dm
index dd77debc974..29ad6573f68 100644
--- a/code/game/gamemodes/changeling/powers/electric_lockpick.dm
+++ b/code/game/gamemodes/changeling/powers/electric_lockpick.dm
@@ -30,6 +30,7 @@
desc = "This finger appears to be an organic datajack."
icon = 'icons/obj/weapons.dmi'
icon_state = "electric_hand"
+ show_examine = FALSE
/obj/item/weapon/finger_lockpick/New()
if(ismob(loc))
diff --git a/code/game/gamemodes/technomancer/spell_objs.dm b/code/game/gamemodes/technomancer/spell_objs.dm
index fb288131026..2a917b4fd85 100644
--- a/code/game/gamemodes/technomancer/spell_objs.dm
+++ b/code/game/gamemodes/technomancer/spell_objs.dm
@@ -31,6 +31,7 @@
)
throwforce = 0
force = 0
+ show_examine = FALSE
// var/mob/living/carbon/human/owner = null
var/mob/living/owner = null
var/obj/item/weapon/technomancer_core/core = null
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index c5840eaed29..2e8429edd3a 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -382,14 +382,14 @@ var/list/global/slot_flags_enumeration = list(
if(!allow)
return 0
if(slot_tie)
- if(!H.w_uniform && (slot_w_uniform in mob_equip))
+ var/allow = 0
+ for(var/obj/item/clothing/C in H.worn_clothing) //Runs through everything you're wearing, returns if you can't attach the thing
+ if(C.can_attach_accessory(src))
+ allow = 1
+ break
+ if(!allow)
if(!disable_warning)
- H << "You need a jumpsuit before you can attach this [name]."
- return 0
- var/obj/item/clothing/under/uniform = H.w_uniform
- if(uniform.accessories.len && !uniform.can_attach_accessory(src))
- if (!disable_warning)
- H << "You already have an accessory of this type attached to your [uniform]."
+ H << "You're not wearing anything you can attach this [name] to."
return 0
return 1
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 84f9f88602c..3833133f4a5 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -14,6 +14,8 @@
var/show_messages
var/preserve_item = 0 //whether this object is preserved when its owner goes into cryo-storage, gateway, etc
+ var/show_examine = TRUE // Does this pop up on a mob when the mob is examined?
+
/obj/Destroy()
processing_objects -= src
return ..()
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 83aa687957a..cf70a40920c 100644
--- a/code/game/objects/structures/crates_lockers/closets/secure/security.dm
+++ b/code/game/objects/structures/crates_lockers/closets/secure/security.dm
@@ -103,12 +103,13 @@
if(prob(50))
new /obj/item/weapon/storage/backpack/dufflebag/sec(src)
new /obj/item/clothing/head/helmet/HoS(src)
+ new /obj/item/clothing/head/helmet/HoS/hat(src)
new /obj/item/clothing/suit/storage/vest/hos(src)
new /obj/item/clothing/under/rank/head_of_security/jensen(src)
new /obj/item/clothing/under/rank/head_of_security/corp(src)
new /obj/item/clothing/suit/storage/vest/hoscoat/jensen(src)
new /obj/item/clothing/suit/storage/vest/hoscoat(src)
- new /obj/item/clothing/head/helmet/HoS/dermal(src)
+ new /obj/item/clothing/head/helmet/dermal(src)
new /obj/item/weapon/cartridge/hos(src)
new /obj/item/device/radio/headset/heads/hos(src)
new /obj/item/device/radio/headset/heads/hos/alt(src)
@@ -161,7 +162,9 @@
new /obj/item/clothing/under/rank/warden/corp(src)
new /obj/item/clothing/suit/storage/vest/wardencoat(src)
new /obj/item/clothing/suit/storage/vest/wardencoat/alt(src)
+ new /obj/item/clothing/head/helmet/dermal(src)
new /obj/item/clothing/head/helmet/warden(src)
+ new /obj/item/clothing/head/helmet/warden/hat(src)
new /obj/item/weapon/cartridge/security(src)
new /obj/item/device/radio/headset/headset_sec(src)
new /obj/item/device/radio/headset/headset_sec/alt(src)
diff --git a/code/modules/clothing/clothing_accessories.dm b/code/modules/clothing/clothing_accessories.dm
index 58de134f7f8..b0068c61908 100644
--- a/code/modules/clothing/clothing_accessories.dm
+++ b/code/modules/clothing/clothing_accessories.dm
@@ -1,12 +1,17 @@
/obj/item/clothing/proc/can_attach_accessory(obj/item/clothing/accessory/A)
if(valid_accessory_slots && istype(A) && (A.slot in valid_accessory_slots))
- .=1
- else
- return 0
+ if(accessories.len && restricted_accessory_slots && (A.slot in restricted_accessory_slots))
+ for(var/obj/item/clothing/accessory/AC in accessories)
+ if (AC.slot == A.slot)
+ return 0
+ return 1
+ return 0
+
if(accessories.len && restricted_accessory_slots && (A.slot in restricted_accessory_slots))
for(var/obj/item/clothing/accessory/AC in accessories)
if (AC.slot == A.slot)
return 0
+ return 1
/obj/item/clothing/attackby(var/obj/item/I, var/mob/user)
if(istype(I, /obj/item/clothing/accessory))
@@ -22,7 +27,7 @@
return
else
user << "You cannot attach more accessories of this type to [src]."
- return
+ return
if(accessories.len)
for(var/obj/item/clothing/accessory/A in accessories)
@@ -37,6 +42,10 @@
for(var/obj/item/clothing/accessory/A in accessories)
A.attack_hand(user)
return
+ if (ishuman(user) && src.loc == user)
+ var/mob/living/carbon/human/H = user
+ if(src != H.l_store && src != H.r_store && src != H.s_store)
+ return
return ..()
/obj/item/clothing/MouseDrop(var/obj/over_object)
@@ -70,10 +79,16 @@
* user is the user doing the attaching. Can be null, such as when attaching
* items on spawn
*/
+/obj/item/clothing/proc/update_accessory_slowdown()
+ slowdown = initial(slowdown)
+ for(var/obj/item/clothing/accessory/A in accessories)
+ slowdown += A.slowdown
+
/obj/item/clothing/proc/attach_accessory(mob/user, obj/item/clothing/accessory/A)
accessories += A
A.on_attached(src, user)
src.verbs |= /obj/item/clothing/proc/removetie_verb
+ update_accessory_slowdown()
update_clothing_icon()
/obj/item/clothing/proc/remove_accessory(mob/user, obj/item/clothing/accessory/A)
@@ -82,6 +97,7 @@
A.on_removed(user)
accessories -= A
+ update_accessory_slowdown()
update_clothing_icon()
/obj/item/clothing/proc/removetie_verb()
diff --git a/code/modules/clothing/gloves/arm_guards.dm b/code/modules/clothing/gloves/arm_guards.dm
index 84f364e4d5f..d258cb5b637 100644
--- a/code/modules/clothing/gloves/arm_guards.dm
+++ b/code/modules/clothing/gloves/arm_guards.dm
@@ -28,7 +28,7 @@
icon_state = "arm_guards_bullet"
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
siemens_coefficient = 0.7
- armor = list(melee = 10, bullet = 80, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/arm_guard/riot
name = "riot arm guards"
@@ -36,7 +36,7 @@
icon_state = "arm_guards_riot"
item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
siemens_coefficient = 0.5
- armor = list(melee = 80, bullet = 10, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+ armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
/obj/item/clothing/gloves/arm_guard/combat
name = "combat arm guards"
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index 8527e8b501d..3a2a4f73282 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -2,6 +2,8 @@
name = "helmet"
desc = "Standard Security gear. Protects the head from impacts."
icon_state = "helmet"
+ valid_accessory_slots = list(ACCESSORY_SLOT_HELM_C)
+ restricted_accessory_slots = list(ACCESSORY_SLOT_HELM_C)
flags = THICKMATERIAL
armor = list(melee = 40, bullet = 30, laser = 30, energy = 10, bomb = 10, bio = 0, rad = 0)
flags_inv = HIDEEARS|HIDEEYES
@@ -18,6 +20,7 @@
desc = "A helmet painted in Peacekeeper blue. Stands out like a sore thumb."
icon_state = "helmet_sol"
armor = list(melee = 50, bullet = 50, laser = 50,energy = 25, bomb = 30, bio = 0, rad = 0)
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/solgov/command
name = "command helmet"
@@ -61,6 +64,7 @@
armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
+ valid_accessory_slots = null
action_button_name = "Toggle Visor"
/obj/item/clothing/head/helmet/riot/attack_self(mob/user as mob)
@@ -80,6 +84,7 @@
armor = list(melee = 10, bullet = 10, laser = 80 ,energy = 50, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.1
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/bulletproof
name = "bullet-resistant helmet"
@@ -89,6 +94,7 @@
armor = list(melee = 10, bullet = 80, laser = 10 ,energy = 10, bomb = 0, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/combat
name = "combat helmet"
@@ -98,6 +104,7 @@
armor = list(melee = 50, bullet = 50, laser = 50 ,energy = 30, bomb = 30, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.6
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/swat
name = "\improper SWAT helmet"
@@ -115,6 +122,7 @@
icon_state = "alienhelmet"
siemens_coefficient = 0.4
armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 0, rad = 40)
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/alien/tank
name = "alien warhelm"
@@ -137,6 +145,7 @@
flags = BLOCKHAIR
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES
siemens_coefficient = 1
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/tactical
name = "tactical helmet"
@@ -151,6 +160,7 @@
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
flags_inv = HIDEEARS
siemens_coefficient = 0.7
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/augment
name = "Augment Array"
@@ -162,6 +172,7 @@
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELMET_MIN_COLD_PROTECTION_TEMPERATURE
siemens_coefficient = 0.5
+ valid_accessory_slots = null
//Non-hardsuit ERT helmets.
/obj/item/clothing/head/helmet/ert
@@ -170,6 +181,7 @@
icon_state = "erthelmet_cmd"
item_state_slots = list(slot_r_hand_str = "syndicate-helm-green", slot_l_hand_str = "syndicate-helm-green")
armor = list(melee = 62, bullet = 50, laser = 50,energy = 35, bomb = 10, bio = 2, rad = 0)
+ valid_accessory_slots = null
//Commander
/obj/item/clothing/head/helmet/ert/command
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index bb8f29e8925..2396ccd432c 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -103,23 +103,33 @@
icon_state = "beret_corporate_warden"
item_state_slots = list(slot_r_hand_str = "beret_black", slot_l_hand_str = "beret_black")
-/obj/item/clothing/head/helmet/warden //should these be helmets?
+/obj/item/clothing/head/helmet/warden
+ name = "warden's helmet"
+ desc = "Standard Warden gear. Protects the head from impacts."
+
+/obj/item/clothing/head/helmet/warden/hat
name = "warden's hat"
- desc = "It's a special helmet issued to the Warden of a securiy force."
+ desc = "It's a special hat issued to the Warden of a securiy force."
icon_state = "policehelm"
- body_parts_covered = 0
+ valid_accessory_slots = null
/obj/item/clothing/head/helmet/HoS
+ name = "Head of Security helmet"
+ desc = "Standard Head of Security gear. Protects the head from impacts."
+
+/obj/item/clothing/head/helmet/HoS/hat
name = "Head of Security Hat"
desc = "The hat of the Head of Security. For showing the officers who's in charge."
icon_state = "hoscap"
- body_parts_covered = 0
+ valid_accessory_slots = null
-/obj/item/clothing/head/helmet/HoS/dermal
+/obj/item/clothing/head/helmet/dermal
name = "Dermal Armour Patch"
desc = "You're not quite sure how you manage to take it on and off, but it implants nicely in your head."
icon_state = "dermal"
item_state_slots = list(slot_r_hand_str = "", slot_l_hand_str = "")
+ valid_accessory_slots = null
+ show_examine = FALSE
/obj/item/clothing/head/det
name = "fedora"
@@ -128,14 +138,14 @@
allowed = list(/obj/item/weapon/reagent_containers/food/snacks/candy_corn, /obj/item/weapon/pen)
armor = list(melee = 10, bullet = 10, laser = 15, energy = 10, bomb = 0, bio = 0, rad = 0)
siemens_coefficient = 0.9
- body_parts_covered = 0
+ valid_accessory_slots = null
+ show_examine = FALSE
/obj/item/clothing/head/det/grey
icon_state = "detective2"
item_state_slots = list(slot_r_hand_str = "detective", slot_l_hand_str = "detective")
desc = "A grey fedora - either the cornerstone of a detective's style or a poor attempt at looking cool, depending on the person wearing it."
-
/obj/item/clothing/head/beret/engineering
name = "engineering beret"
desc = "A beret with the engineering insignia emblazoned on it. For engineers that are more inclined towards style than safety."
diff --git a/code/modules/clothing/spacesuits/spacesuits.dm b/code/modules/clothing/spacesuits/spacesuits.dm
index 8eb3ad56c96..fdf5a928680 100644
--- a/code/modules/clothing/spacesuits/spacesuits.dm
+++ b/code/modules/clothing/spacesuits/spacesuits.dm
@@ -18,6 +18,7 @@
preserve_item = 1
phoronproof = 1
flash_protection = FLASH_PROTECTION_MAJOR
+ valid_accessory_slots = null
var/obj/machinery/camera/camera
var/list/camera_networks
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index 94f49a2b1a2..fcb3040f811 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -498,28 +498,28 @@
blood_overlay_type = "armor"
/obj/item/clothing/suit/armor/pcarrier/light
- starting_accessories = list(/obj/item/clothing/accessory/armorplate)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate)
/obj/item/clothing/suit/armor/pcarrier/light/sol
- starting_accessories = list(/obj/item/clothing/accessory/armorplate, /obj/item/clothing/accessory/armor/tag)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate, /obj/item/clothing/accessory/armor/tag)
/obj/item/clothing/suit/armor/pcarrier/light/nt
- starting_accessories = list(/obj/item/clothing/accessory/armorplate, /obj/item/clothing/accessory/armor/tag/nt)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate, /obj/item/clothing/accessory/armor/tag/nt)
/obj/item/clothing/suit/armor/pcarrier/medium
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches)
/obj/item/clothing/suit/armor/pcarrier/medium/sol
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag)
/obj/item/clothing/suit/armor/pcarrier/medium/security
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/sec)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/sec)
/obj/item/clothing/suit/armor/pcarrier/medium/command
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/com)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/com)
/obj/item/clothing/suit/armor/pcarrier/medium/nt
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/nt)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches, /obj/item/clothing/accessory/armor/tag/nt)
/obj/item/clothing/suit/armor/pcarrier/blue
name = "blue plate carrier"
@@ -529,7 +529,7 @@
/obj/item/clothing/suit/armor/pcarrier/blue/sol
name = "peacekeeper plate carrier"
desc = "A lightweight plate carrier vest in SCG Peacekeeper colors. It can be equipped with armor plates, but provides no protection of its own."
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/medium, /obj/item/clothing/accessory/storage/pouches/blue, /obj/item/clothing/accessory/armguards/blue, /obj/item/clothing/accessory/armor/tag)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/medium, /obj/item/clothing/accessory/storage/pouches/blue, /obj/item/clothing/accessory/armor/armguards/blue, /obj/item/clothing/accessory/armor/tag)
/obj/item/clothing/suit/armor/pcarrier/green
name = "green plate carrier"
@@ -548,8 +548,8 @@
/obj/item/clothing/suit/armor/pcarrier/tan/tactical
name = "tactical plate carrier"
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/tactical, /obj/item/clothing/accessory/storage/pouches/large/tan)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/tactical, /obj/item/clothing/accessory/storage/pouches/large/tan)
/obj/item/clothing/suit/armor/pcarrier/merc
- starting_accessories = list(/obj/item/clothing/accessory/armorplate/merc, /obj/item/clothing/accessory/armguards/merc, /obj/item/clothing/accessory/legguards/merc, /obj/item/clothing/accessory/storage/pouches/large)
+ starting_accessories = list(/obj/item/clothing/accessory/armor/armorplate/merc, /obj/item/clothing/accessory/armor/armguards/merc, /obj/item/clothing/accessory/armor/legguards/merc, /obj/item/clothing/accessory/storage/pouches/large)
diff --git a/code/modules/clothing/under/accessories/armor.dm b/code/modules/clothing/under/accessories/armor.dm
index f17c5e7ad24..df9e3b7c173 100644
--- a/code/modules/clothing/under/accessories/armor.dm
+++ b/code/modules/clothing/under/accessories/armor.dm
@@ -1,11 +1,25 @@
+/*
+// This file holds all of the accessories used as part of the modular armor system. At some point it might be wise to split this into multiple files.
+*/
+
+/obj/item/clothing/accessory/armor
+ name = "armor accessory"
+ desc = "You should never see this description. Ahelp this, please."
+ icon_override = 'icons/mob/modular_armor.dmi'
+ icon = 'icons/obj/clothing/modular_armor.dmi'
+ icon_state = "pouches"
+ w_class = ITEMSIZE_NORMAL
+
+///////////
//Pouches
+///////////
/obj/item/clothing/accessory/storage/pouches
name = "storage pouches"
desc = "A collection of black pouches that can be attached to a plate carrier. Carries up to two items."
icon_override = 'icons/mob/modular_armor.dmi'
icon = 'icons/obj/clothing/modular_armor.dmi'
-// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi')
icon_state = "pouches"
+ w_class = ITEMSIZE_NORMAL
gender = PLURAL
slot = ACCESSORY_SLOT_ARMOR_S
slots = 2
@@ -31,6 +45,7 @@
desc = "A collection of black pouches that can be attached to a plate carrier. Carries up to four items."
icon_state = "lpouches"
slots = 4
+ slowdown = 0.25
/obj/item/clothing/accessory/storage/pouches/large/blue
desc = "A collection of blue pouches that can be attached to a plate carrier. Carries up to four items."
@@ -48,40 +63,41 @@
desc = "A collection of tan pouches that can be attached to a plate carrier. Carries up to four items."
icon_state = "lpouches_tan"
+////////////////
//Armor plates
-/obj/item/clothing/accessory/armorplate
+////////////////
+/obj/item/clothing/accessory/armor/armorplate
name = "light armor plate"
desc = "A basic armor plate made of steel-reinforced synthetic fibers. Attaches to a plate carrier."
- icon = 'icons/obj/clothing/modular_armor.dmi'
icon_state = "armor_light"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
armor = list(melee = 30, bullet = 15, laser = 40, energy = 10, bomb = 25, bio = 0, rad = 0)
slot = ACCESSORY_SLOT_ARMOR_C
-/obj/item/clothing/accessory/armorplate/medium
+/obj/item/clothing/accessory/armor/armorplate/medium
name = "medium armor plate"
desc = "A plasteel-reinforced synthetic armor plate, providing good protection. Attaches to a plate carrier."
icon_state = "armor_medium"
armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
-/obj/item/clothing/accessory/armorplate/tactical
+/obj/item/clothing/accessory/armor/armorplate/tactical
name = "tactical armor plate"
desc = "A medium armor plate with additional ablative coating. Attaches to a plate carrier."
icon_state = "armor_tactical"
armor = list(melee = 40, bullet = 40, laser = 60, energy = 35, bomb = 30, bio = 0, rad = 0)
-/obj/item/clothing/accessory/armorplate/merc
+/obj/item/clothing/accessory/armor/armorplate/merc
name = "heavy armor plate"
desc = "A ceramics-reinforced synthetic armor plate, providing state of of the art protection. Attaches to a plate carrier."
icon_state = "armor_heavy"
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+//////////////
//Arm guards
-/obj/item/clothing/accessory/armguards
+//////////////
+/obj/item/clothing/accessory/armor/armguards
name = "arm guards"
desc = "A pair of black arm pads reinforced with armor plating. Attaches to a plate carrier."
- icon_override = 'icons/mob/modular_armor.dmi'
- icon = 'icons/obj/clothing/modular_armor.dmi'
// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi')
icon_state = "armguards"
gender = PLURAL
@@ -89,34 +105,58 @@
armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
slot = ACCESSORY_SLOT_ARMOR_A
-/obj/item/clothing/accessory/armguards/blue
+/obj/item/clothing/accessory/armor/armguards/blue
desc = "A pair of blue arm pads reinforced with armor plating. Attaches to a plate carrier."
icon_state = "armguards_blue"
-/obj/item/clothing/accessory/armguards/navy
+/obj/item/clothing/accessory/armor/armguards/navy
desc = "A pair of navy blue arm pads reinforced with armor plating. Attaches to a plate carrier."
icon_state = "armguards_navy"
-/obj/item/clothing/accessory/armguards/green
+/obj/item/clothing/accessory/armor/armguards/green
desc = "A pair of green arm pads reinforced with armor plating. Attaches to a plate carrier."
icon_state = "armguards_green"
-/obj/item/clothing/accessory/armguards/tan
+/obj/item/clothing/accessory/armor/armguards/tan
desc = "A pair of tan arm pads reinforced with armor plating. Attaches to a plate carrier."
icon_state = "armguards_tan"
-/obj/item/clothing/accessory/armguards/merc
+/obj/item/clothing/accessory/armor/armguards/merc
name = "heavy arm guards"
desc = "A pair of red-trimmed black arm pads reinforced with heavy armor plating. Attaches to a plate carrier."
icon_state = "armguards_merc"
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+/obj/item/clothing/accessory/armor/armguards/laserproof
+ name = "ablative arm guards"
+ desc = "These arm guards will protect your arms from energy weapons."
+ icon_state = "armguards_laser"
+ item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
+ siemens_coefficient = 0.4 //This is worse than the other ablative pieces, to avoid this from becoming the poor warden's insulated gloves.
+ armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/accessory/armor/armguards/bulletproof
+ name = "bullet resistant arm guards"
+ desc = "These arm guards will protect your arms from ballistic weapons."
+ icon_state = "armguards_bullet"
+ item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
+ siemens_coefficient = 0.7
+ armor = list(melee = 10, bullet = 80, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/accessory/armor/armguards/riot
+ name = "riot arm guards"
+ desc = "These arm guards will protect your arms from close combat weapons."
+ icon_state = "armguards_riot"
+ item_state_slots = list(slot_r_hand_str = "swat", slot_l_hand_str = "swat")
+ siemens_coefficient = 0.5
+ armor = list(melee = 80, bullet = 10, laser = 10, energy = 50, bomb = 0, bio = 0, rad = 0)
+
+//////////////
//Leg guards
-/obj/item/clothing/accessory/legguards
+//////////////
+/obj/item/clothing/accessory/armor/legguards
name = "leg guards"
desc = "A pair of armored leg pads in black. Attaches to a plate carrier."
- icon_override = 'icons/mob/modular_armor.dmi'
- icon = 'icons/obj/clothing/modular_armor.dmi'
// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi')
icon_state = "legguards"
gender = PLURAL
@@ -124,38 +164,62 @@
armor = list(melee = 40, bullet = 40, laser = 40, energy = 25, bomb = 30, bio = 0, rad = 0)
slot = ACCESSORY_SLOT_ARMOR_L
-/obj/item/clothing/accessory/legguards/blue
+/obj/item/clothing/accessory/armor/legguards/blue
desc = "A pair of armored leg pads in blue. Attaches to a plate carrier."
icon_state = "legguards_blue"
-/obj/item/clothing/accessory/legguards/navy
+/obj/item/clothing/accessory/armor/legguards/navy
desc = "A pair of armored leg pads in navy blue. Attaches to a plate carrier."
icon_state = "legguards_navy"
-/obj/item/clothing/accessory/legguards/green
+/obj/item/clothing/accessory/armor/legguards/green
desc = "A pair of armored leg pads in green. Attaches to a plate carrier."
icon_state = "legguards_green"
-/obj/item/clothing/accessory/legguards/tan
+/obj/item/clothing/accessory/armor/legguards/tan
desc = "A pair of armored leg pads in tan. Attaches to a plate carrier."
icon_state = "legguards_tan"
-/obj/item/clothing/accessory/legguards/merc
+/obj/item/clothing/accessory/armor/legguards/merc
name = "heavy leg guards"
desc = "A pair of heavily armored leg pads in red-trimmed black. Attaches to a plate carrier."
icon_state = "legguards_merc"
armor = list(melee = 60, bullet = 60, laser = 60, energy = 40, bomb = 40, bio = 0, rad = 0)
+/obj/item/clothing/accessory/armor/legguards/laserproof
+ name = "ablative leg guards"
+ desc = "These will protect your legs from energy weapons."
+ icon_state = "legguards_laser"
+ item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots")
+ siemens_coefficient = 0.1
+ armor = list(melee = 10, bullet = 10, laser = 80, energy = 50, bomb = 0, bio = 0, rad = 0)
+/obj/item/clothing/accessory/armor/legguards/bulletproof
+ name = "bullet resistant leg guards"
+ desc = "These will protect your legs from ballistic weapons."
+ icon_state = "legguards_bullet"
+ item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots")
+ siemens_coefficient = 0.7
+ armor = list(melee = 10, bullet = 80, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+
+/obj/item/clothing/accessory/armor/legguards/riot
+ name = "riot leg guards"
+ desc = "These will protect your legs from close combat weapons."
+ icon_state = "legguards_riot"
+ item_state_slots = list(slot_r_hand_str = "jackboots", slot_l_hand_str = "jackboots")
+ siemens_coefficient = 0.5
+ armor = list(melee = 80, bullet = 10, laser = 10, energy = 10, bomb = 0, bio = 0, rad = 0)
+
+//////////////////////////
//Decorative attachments
+//////////////////////////
/obj/item/clothing/accessory/armor/tag
name = "\improper SCG Flag"
desc = "An emblem depicting the Solar Confederate Government's flag."
- icon_override = 'icons/mob/modular_armor.dmi'
- icon = 'icons/obj/clothing/modular_armor.dmi'
// accessory_icons = list(slot_tie_str = 'icons/mob/modular_armor.dmi', slot_wear_suit_str = 'icons/mob/modular_armor.dmi')
icon_state = "solflag"
slot = ACCESSORY_SLOT_ARMOR_M
+ w_class = ITEMSIZE_SMALL
/obj/item/clothing/accessory/armor/tag/sifguard
name = "\improper Sif Defense Force crest"
@@ -226,3 +290,50 @@
name = "\improper AB- blood patch"
desc = "An embroidered patch indicating the wearer's blood type as AB NEGATIVE."
icon_state = "abnegtag"
+
+/////////////////
+// Helmet Covers
+/////////////////
+
+obj/item/clothing/accessory/armor/helmcover
+ name = "helmet cover"
+ desc = "A fabric cover for armored helmets."
+ icon_override = 'icons/mob/ties.dmi'
+ icon = 'icons/obj/clothing/modular_armor.dmi'
+ icon_state = "helmcover_blue"
+ slot = ACCESSORY_SLOT_HELM_C
+
+/obj/item/clothing/accessory/armor/helmcover/blue
+ name = "blue helmet cover"
+ desc = "A fabric cover for armored helmets in a bright blue color."
+ icon_state = "helmcover_blue"
+
+/obj/item/clothing/accessory/armor/helmcover/navy
+ name = "navy blue helmet cover"
+ desc = "A fabric cover for armored helmets. This one is colored navy blue."
+ icon_state = "helmcover_navy"
+
+/obj/item/clothing/accessory/armor/helmcover/green
+ name = "green helmet cover"
+ desc = "A fabric cover for armored helmets. This one has a woodland camouflage pattern."
+ icon_state = "helmcover_green"
+
+/obj/item/clothing/accessory/armor/helmcover/tan
+ name = "tan helmet cover"
+ desc = "A fabric cover for armored helmets. This one has a desert camouflage pattern."
+ icon_state = "helmcover_tan"
+
+/obj/item/clothing/accessory/armor/helmcover/nt
+ name = "\improper NanoTrasen helmet cover"
+ desc = "A fabric cover for armored helmets. This one has NanoTrasen's colors."
+ icon_state = "helmcover_nt"
+
+/obj/item/clothing/accessory/armor/helmcover/pcrc
+ name = "\improper PCRC helmet cover"
+ desc = "A fabric cover for armored helmets. This one is colored navy blue and has a tag in the back with the words PROXIMA CENTAURI RISK CONTROL printed in cyan lettering on it."
+ icon_state = "helmcover_pcrc"
+
+/obj/item/clothing/accessory/armor/helmcover/saare
+ name = "\improper SAARE helmet cover"
+ desc = "A fabric cover for armored helmets. This one has SAARE's colors."
+ icon_state = "helmcover_saare"
\ No newline at end of file
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 54bc007f949..b82da139915 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -133,7 +133,7 @@
msg += "
"
//uniform
- if(w_uniform && !skipjumpsuit)
+ if(w_uniform && !skipjumpsuit && w_uniform.show_examine)
//Ties
var/tie_msg
if(istype(w_uniform,/obj/item/clothing/under) && !skiptie)
@@ -142,7 +142,7 @@
if(skipholster)
var/list/accessories_visible = new/list() //please let this fix the stupid fucking runtimes
for(var/obj/item/clothing/accessory/A in U.accessories)
- if(A.concealed_holster == 0)
+ if(A.concealed_holster == 0 && A.show_examine)
accessories_visible.Add(A)
if(accessories_visible.len)
tie_msg += ". Attached to it is [lowertext(english_list(accessories_visible))]"
@@ -154,7 +154,7 @@
msg += "[T.He] [T.is] wearing \icon[w_uniform] \a [w_uniform][tie_msg].\n"
//head
- if(head)
+ if(head && head.show_examine)
if(head.blood_DNA)
msg += "[T.He] [T.is] wearing \icon[head] [head.gender==PLURAL?"some":"a"] [(head.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [head.name] on [T.his] head!\n"
else
@@ -174,35 +174,35 @@
msg += "[T.He] [T.is] wearing \icon[wear_suit] \a [wear_suit][tie_msg].\n"
//suit/armour storage
- if(s_store && !skipsuitstorage)
+ if(s_store && !skipsuitstorage && s_store.show_examine)
if(s_store.blood_DNA)
msg += "[T.He] [T.is] carrying \icon[s_store] [s_store.gender==PLURAL?"some":"a"] [(s_store.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [s_store.name] on [T.his] [wear_suit.name]!\n"
else
msg += "[T.He] [T.is] carrying \icon[s_store] \a [s_store] on [T.his] [wear_suit.name].\n"
//back
- if(back)
+ if(back && back.show_examine)
if(back.blood_DNA)
msg += "[T.He] [T.has] \icon[back] [back.gender==PLURAL?"some":"a"] [(back.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [back] on [T.his] back.\n"
else
msg += "[T.He] [T.has] \icon[back] \a [back] on [T.his] back.\n"
//left hand
- if(l_hand)
+ if(l_hand && l_hand.show_examine)
if(l_hand.blood_DNA)
msg += "[T.He] [T.is] holding \icon[l_hand] [l_hand.gender==PLURAL?"some":"a"] [(l_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [l_hand.name] in [T.his] left hand!\n"
else
msg += "[T.He] [T.is] holding \icon[l_hand] \a [l_hand] in [T.his] left hand.\n"
//right hand
- if(r_hand)
+ if(r_hand && r_hand.show_examine)
if(r_hand.blood_DNA)
msg += "[T.He] [T.is] holding \icon[r_hand] [r_hand.gender==PLURAL?"some":"a"] [(r_hand.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [r_hand.name] in [T.his] right hand!\n"
else
msg += "[T.He] [T.is] holding \icon[r_hand] \a [r_hand] in [T.his] right hand.\n"
//gloves
- if(gloves && !skipgloves)
+ if(gloves && !skipgloves && gloves.show_examine)
if(gloves.blood_DNA)
msg += "[T.He] [T.has] \icon[gloves] [gloves.gender==PLURAL?"some":"a"] [(gloves.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [gloves.name] on [T.his] hands!\n"
else
@@ -211,7 +211,7 @@
msg += "[T.He] [T.has] [(hand_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained hands!\n"
//handcuffed?
- if(handcuffed)
+ if(handcuffed && handcuffed.show_examine)
if(istype(handcuffed, /obj/item/weapon/handcuffs/cable))
msg += "[T.He] [T.is] \icon[handcuffed] restrained with cable!\n"
else
@@ -222,14 +222,14 @@
msg += "[T.He] [T.is] \icon[buckled] buckled to [buckled]!\n"
//belt
- if(belt)
+ if(belt && belt.show_examine)
if(belt.blood_DNA)
msg += "[T.He] [T.has] \icon[belt] [belt.gender==PLURAL?"some":"a"] [(belt.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [belt.name] about [T.his] waist!\n"
else
msg += "[T.He] [T.has] \icon[belt] \a [belt] about [T.his] waist.\n"
//shoes
- if(shoes && !skipshoes)
+ if(shoes && !skipshoes && shoes.show_examine)
if(shoes.blood_DNA)
msg += "[T.He] [T.is] wearing \icon[shoes] [shoes.gender==PLURAL?"some":"a"] [(shoes.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [shoes.name] on [T.his] feet!\n"
else
@@ -238,7 +238,7 @@
msg += "[T.He] [T.has] [(feet_blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained feet!\n"
//mask
- if(wear_mask && !skipmask)
+ if(wear_mask && !skipmask && wear_mask.show_examine)
var/descriptor = "on [T.his] face"
if(istype(wear_mask, /obj/item/weapon/grenade) && check_has_mouth())
descriptor = "in [T.his] mouth"
@@ -249,22 +249,22 @@
msg += "[T.He] [T.has] \icon[wear_mask] \a [wear_mask] [descriptor].\n"
//eyes
- if(glasses && !skipeyes)
+ if(glasses && !skipeyes && glasses.show_examine)
if(glasses.blood_DNA)
msg += "[T.He] [T.has] \icon[glasses] [glasses.gender==PLURAL?"some":"a"] [(glasses.blood_color != SYNTH_BLOOD_COLOUR) ? "blood" : "oil"]-stained [glasses] covering [T.his] eyes!\n"
else
msg += "[T.He] [T.has] \icon[glasses] \a [glasses] covering [T.his] eyes.\n"
//left ear
- if(l_ear && !skipears)
+ if(l_ear && !skipears && l_ear.show_examine)
msg += "[T.He] [T.has] \icon[l_ear] \a [l_ear] on [T.his] left ear.\n"
//right ear
- if(r_ear && !skipears)
+ if(r_ear && !skipears && r_ear.show_examine)
msg += "[T.He] [T.has] \icon[r_ear] \a [r_ear] on [T.his] right ear.\n"
//ID
- if(wear_id)
+ if(wear_id && wear_id.show_examine)
/*var/id
if(istype(wear_id, /obj/item/device/pda))
var/obj/item/device/pda/pda = wear_id
diff --git a/code/modules/mob/living/carbon/human/inventory.dm b/code/modules/mob/living/carbon/human/inventory.dm
index 5c269c7ce21..871145d8a9d 100644
--- a/code/modules/mob/living/carbon/human/inventory.dm
+++ b/code/modules/mob/living/carbon/human/inventory.dm
@@ -3,6 +3,9 @@ Add fingerprints to items when we put them in our hands.
This saves us from having to call add_fingerprint() any time something is put in a human's hands programmatically.
*/
+/mob/living/carbon/human
+ var/list/worn_clothing = list() //Contains all CLOTHING items worn
+
/mob/living/carbon/human/verb/quick_equip()
set name = "quick-equip"
set hidden = 1
@@ -86,6 +89,7 @@ This saves us from having to call add_fingerprint() any time something is put in
if (W == wear_suit)
if(s_store)
drop_from_inventory(s_store)
+ worn_clothing -= wear_suit
wear_suit = null
update_inv_wear_suit()
else if (W == w_uniform)
@@ -96,16 +100,21 @@ This saves us from having to call add_fingerprint() any time something is put in
if (wear_id)
drop_from_inventory(wear_id)
if (belt)
+ worn_clothing -= belt
drop_from_inventory(belt)
+ worn_clothing -= w_uniform
w_uniform = null
update_inv_w_uniform()
else if (W == gloves)
+ worn_clothing -= gloves
gloves = null
update_inv_gloves()
else if (W == glasses)
+ worn_clothing -= glasses
glasses = null
update_inv_glasses()
else if (W == head)
+ worn_clothing -= head
head = null
if(istype(W, /obj/item))
var/obj/item/I = W
@@ -121,12 +130,15 @@ This saves us from having to call add_fingerprint() any time something is put in
r_ear = null
update_inv_ears()
else if (W == shoes)
+ worn_clothing -= shoes
shoes = null
update_inv_shoes()
else if (W == belt)
+ worn_clothing -= belt
belt = null
update_inv_belt()
else if (W == wear_mask)
+ worn_clothing -= wear_mask
wear_mask = null
if(istype(W, /obj/item))
var/obj/item/I = W
@@ -187,15 +199,21 @@ This saves us from having to call add_fingerprint() any time something is put in
//set redraw_mob to 0 if you don't wish the hud to be updated - if you're doing it manually in your own proc.
/mob/living/carbon/human/equip_to_slot(obj/item/W as obj, slot, redraw_mob = 1)
- if(!slot) return
- if(!istype(W)) return
- if(!has_organ_for_slot(slot)) return
- if(!species || !species.hud || !(slot in species.hud.equip_slots)) return
+ if(!slot)
+ return
+ if(!istype(W))
+ return
+ if(!has_organ_for_slot(slot))
+ return
+ if(!species || !species.hud || !(slot in species.hud.equip_slots))
+ return
+
W.loc = src
switch(slot)
if(slot_back)
src.back = W
W.equipped(src, slot)
+ worn_clothing += back
update_inv_back(redraw_mob)
if(slot_wear_mask)
src.wear_mask = W
@@ -203,6 +221,7 @@ This saves us from having to call add_fingerprint() any time something is put in
update_hair(redraw_mob) //rebuild hair
update_inv_ears(0)
W.equipped(src, slot)
+ worn_clothing += wear_mask
update_inv_wear_mask(redraw_mob)
if(slot_handcuffed)
src.handcuffed = W
@@ -222,6 +241,7 @@ This saves us from having to call add_fingerprint() any time something is put in
if(slot_belt)
src.belt = W
W.equipped(src, slot)
+ worn_clothing += belt
update_inv_belt(redraw_mob)
if(slot_wear_id)
src.wear_id = W
@@ -252,6 +272,7 @@ This saves us from having to call add_fingerprint() any time something is put in
if(slot_gloves)
src.gloves = W
W.equipped(src, slot)
+ worn_clothing += glasses
update_inv_gloves(redraw_mob)
if(slot_head)
src.head = W
@@ -262,18 +283,22 @@ This saves us from having to call add_fingerprint() any time something is put in
if(istype(W,/obj/item/clothing/head/kitty))
W.update_icon(src)
W.equipped(src, slot)
+ worn_clothing += head
update_inv_head(redraw_mob)
if(slot_shoes)
src.shoes = W
W.equipped(src, slot)
+ worn_clothing += shoes
update_inv_shoes(redraw_mob)
if(slot_wear_suit)
src.wear_suit = W
W.equipped(src, slot)
+ worn_clothing += wear_suit
update_inv_wear_suit(redraw_mob)
if(slot_w_uniform)
src.w_uniform = W
W.equipped(src, slot)
+ worn_clothing += w_uniform
update_inv_w_uniform(redraw_mob)
if(slot_l_store)
src.l_store = W
@@ -292,8 +317,8 @@ This saves us from having to call add_fingerprint() any time something is put in
src.remove_from_mob(W)
W.loc = src.back
if(slot_tie)
- var/obj/item/clothing/under/uniform = src.w_uniform
- uniform.attackby(W,src)
+ for(var/obj/item/clothing/C in worn_clothing)
+ C.attackby(W, usr)
else
src << "You are trying to eqip this item to an unsupported inventory slot. How the heck did you manage that? Stop it..."
return
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index cb395ece826..cb0b4a40276 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -1006,6 +1006,13 @@ var/global/list/damage_icon_parts = list()
standing = image(base)
else
standing.color = head.color
+
+ // Accessories - copied from uniform, BOILERPLATE because fuck this system.
+ var/obj/item/clothing/head/hat = head
+ if(istype(hat) && hat.accessories.len)
+ for(var/obj/item/clothing/accessory/A in hat.accessories)
+ standing.overlays |= A.get_mob_overlay()
+
overlays_standing[HEAD_LAYER] = standing
else
diff --git a/html/changelogs/Anewbe - Various1.yml b/html/changelogs/Anewbe - Various1.yml
new file mode 100644
index 00000000000..85c8994fd15
--- /dev/null
+++ b/html/changelogs/Anewbe - Various1.yml
@@ -0,0 +1,39 @@
+################################
+# Example Changelog File
+#
+# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb.
+#
+# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.)
+# When it is, any changes listed below will disappear.
+#
+# Valid Prefixes:
+# bugfix
+# wip (For works in progress)
+# tweak
+# soundadd
+# sounddel
+# rscadd (general adding of nice things)
+# rscdel (general deleting of nice things)
+# imageadd
+# imagedel
+# maptweak
+# spellcheck (typo fixes)
+# experiment
+#################################
+
+# Your name.
+author: Anewbe
+
+# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again.
+delete-after: True
+
+# Any changes you've made. See valid prefix list above.
+# INDENT WITH TWO SPACES. NOT TABS. SPACES.
+# SCREW THIS UP AND IT WON'T WORK.
+# Also, all entries are changed into a single [] after a master changelog generation. Just remove the brackets when you add new entries.
+# Please surround your changes in double quotes ("), as certain characters otherwise screws up compiling. The quotes will not show up in the changelog.
+changes:
+ - rscadd: "Added Warden and HoS helmets."
+ - tweak: "Clothing items must be click+dragged to be unequipped. A lot of them already had this, but the system is now standardized."
+ - tweak: "Accessories now apply slowdown to what they're attached to.
+ - tweak: "Certain items, notably Technomancer spells, no longer show up when you examine the mob wearing them."
\ No newline at end of file
diff --git a/icons/mob/modular_armor.dmi b/icons/mob/modular_armor.dmi
index 2c7d8ea841c..f8e4fe7738e 100644
Binary files a/icons/mob/modular_armor.dmi and b/icons/mob/modular_armor.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index fa22bde1c4e..b90b3bb18de 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/obj/clothing/modular_armor.dmi b/icons/obj/clothing/modular_armor.dmi
index 89ef66aa8cb..10bffa08579 100644
Binary files a/icons/obj/clothing/modular_armor.dmi and b/icons/obj/clothing/modular_armor.dmi differ