diff --git a/code/__DEFINES/colors.dm b/code/__DEFINES/colors.dm
index cef464bf17b..d714298e1c0 100644
--- a/code/__DEFINES/colors.dm
+++ b/code/__DEFINES/colors.dm
@@ -236,3 +236,36 @@
#define AMBIENT_OCCLUSION filter(type="drop_shadow", x=0, y=-2, size=4, color="#04080FAA")
/// Icon filter that creates gaussian blur
#define GAUSSIAN_BLUR(filter_size) filter(type="blur", size=filter_size)
+
+#define CABLE_COLOR_BLUE "blue"
+ #define CABLE_HEX_COLOR_BLUE COLOR_STRONG_BLUE
+#define CABLE_COLOR_BROWN "brown"
+ #define CABLE_HEX_COLOR_BROWN COLOR_ORANGE_BROWN
+#define CABLE_COLOR_CYAN "cyan"
+ #define CABLE_HEX_COLOR_CYAN COLOR_CYAN
+#define CABLE_COLOR_GREEN "green"
+ #define CABLE_HEX_COLOR_GREEN COLOR_DARK_LIME
+#define CABLE_COLOR_ORANGE "orange"
+ #define CABLE_HEX_COLOR_ORANGE COLOR_MOSTLY_PURE_ORANGE
+#define CABLE_COLOR_PINK "pink"
+ #define CABLE_HEX_COLOR_PINK COLOR_LIGHT_PINK
+#define CABLE_COLOR_RED "red"
+ #define CABLE_HEX_COLOR_RED COLOR_RED
+#define CABLE_COLOR_WHITE "white"
+ #define CABLE_HEX_COLOR_WHITE COLOR_WHITE
+#define CABLE_COLOR_YELLOW "yellow"
+ #define CABLE_HEX_COLOR_YELLOW COLOR_YELLOW
+
+
+
+GLOBAL_LIST_INIT(cable_colors, list(
+ CABLE_COLOR_BLUE = CABLE_HEX_COLOR_BLUE,
+ CABLE_COLOR_CYAN = CABLE_HEX_COLOR_CYAN,
+ CABLE_COLOR_GREEN = CABLE_HEX_COLOR_GREEN,
+ CABLE_COLOR_ORANGE = CABLE_HEX_COLOR_ORANGE,
+ CABLE_COLOR_PINK = CABLE_HEX_COLOR_PINK,
+ CABLE_COLOR_RED = CABLE_HEX_COLOR_RED,
+ CABLE_COLOR_WHITE = CABLE_HEX_COLOR_WHITE,
+ CABLE_COLOR_YELLOW = CABLE_HEX_COLOR_YELLOW,
+ CABLE_COLOR_BROWN = CABLE_HEX_COLOR_BROWN
+ ))
diff --git a/code/datums/components/transforming.dm b/code/datums/components/transforming.dm
index a3217395582..218127b30e4 100644
--- a/code/datums/components/transforming.dm
+++ b/code/datums/components/transforming.dm
@@ -140,7 +140,8 @@
* user - the mob transforming the item
*/
/datum/component/transforming/proc/default_transform_message(obj/item/source, mob/user)
- source.balloon_alert(user, "[active ? "enabled" : "disabled"] [source]")
+ if(user)
+ source.balloon_alert(user, "[active ? "enabled" : "disabled"] [source]")
playsound(user ? user : source.loc, 'sound/weapons/batonextend.ogg', 50, TRUE)
/*
@@ -180,6 +181,10 @@
source.hitsound = hitsound_on
source.w_class = w_class_on
source.icon_state = "[source.icon_state]_on"
+ source.inhand_icon_state = "[source.inhand_icon_state]_on"
+ if(ismob(source.loc))
+ var/mob/loc_mob = source.loc
+ loc_mob.update_held_items()
/*
* Set our transformed item into its inactive state.
@@ -205,6 +210,10 @@
source.hitsound = initial(source.hitsound)
source.w_class = initial(source.w_class)
source.icon_state = initial(source.icon_state)
+ source.inhand_icon_state = initial(source.inhand_icon_state)
+ if(ismob(source.loc))
+ var/mob/loc_mob = source.loc
+ loc_mob.update_held_items()
/*
* If [clumsy_check] is set to TRUE, attempt to cause a side effect for clumsy people activating this item.
diff --git a/code/datums/greyscale/config_types/greyscale_configs.dm b/code/datums/greyscale/config_types/greyscale_configs.dm
index 5825d5be73a..7892c1b8791 100644
--- a/code/datums/greyscale/config_types/greyscale_configs.dm
+++ b/code/datums/greyscale/config_types/greyscale_configs.dm
@@ -47,6 +47,21 @@
icon_file = 'icons/obj/tools.dmi'
json_config = 'code/datums/greyscale/json_configs/wirecutters.json'
+/datum/greyscale_config/wirecutters_belt_overlay
+ name = "Belt Worn Icon"
+ icon_file = 'icons/obj/clothing/belt_overlays.dmi'
+ json_config = 'code/datums/greyscale/json_configs/wirecutters.json'
+
+/datum/greyscale_config/wirecutter_inhand_left
+ name = "Held Wirecutter, Left"
+ icon_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/wirecutter_worn.json'
+
+/datum/greyscale_config/wirecutter_inhand_right
+ name = "Held Wirecutter, Right"
+ icon_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/wirecutter_worn.json'
+
/datum/greyscale_config/screwdriver
name = "Screwdriver"
icon_file = 'icons/obj/tools.dmi'
@@ -67,6 +82,16 @@
icon_file = 'icons/obj/clothing/belt_overlays.dmi'
json_config = 'code/datums/greyscale/json_configs/screwdriver_worn.json'
+/datum/greyscale_config/gloves_inhand_left
+ name = "Held Gloves, Left"
+ icon_file = 'icons/mob/inhands/clothing/gloves_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/gloves_inhand.json'
+
+/datum/greyscale_config/gloves_inhand_right
+ name = "Held Gloves, Right"
+ icon_file = 'icons/mob/inhands/clothing/gloves_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/gloves_inhand.json'
+
/datum/greyscale_config/jumpsuit
name = "Jumpsuit"
icon_file = 'icons/obj/clothing/under/color.dmi'
@@ -154,6 +179,16 @@
icon_file = 'icons/mob/clothing/feet.dmi'
json_config = 'code/datums/greyscale/json_configs/sneakers_worn.json'
+/datum/greyscale_config/sneakers_inhand_left
+ name = "Held Sneakers, Left"
+ icon_file = 'icons/mob/inhands/clothing/shoes_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/sneakers_inhand.json'
+
+/datum/greyscale_config/sneakers_inhand_right
+ name = "Held Sneakers, Right"
+ icon_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/sneakers_inhand.json'
+
/datum/greyscale_config/sneakers_orange
name = "Orange Sneakers"
icon_file = 'icons/obj/clothing/shoes.dmi'
@@ -164,6 +199,16 @@
icon_file = 'icons/mob/clothing/feet.dmi'
json_config = 'code/datums/greyscale/json_configs/sneakers_orange_worn.json'
+/datum/greyscale_config/sneakers_orange_inhand_left
+ name = "Held Orange Sneakers, Left"
+ icon_file = 'icons/mob/inhands/clothing/shoes_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/sneakers_orange_inhand.json'
+
+/datum/greyscale_config/sneakers_orange_inhand_right
+ name = "Held Orange Sneakers, Right"
+ icon_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/sneakers_orange_inhand.json'
+
/datum/greyscale_config/sneakers_wheelys
name = "Wheeled Sneakers"
icon_file = 'icons/obj/clothing/shoes.dmi'
@@ -478,61 +523,61 @@
icon_file = 'icons/obj/clothing/masks.dmi'
json_config = 'code/datums/greyscale/json_configs/bandana.json'
-/datum/greyscale_config/bandana_up
- name = "Bandana Up"
- icon_file = 'icons/obj/clothing/masks.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandana_up.json'
-
/datum/greyscale_config/bandana_worn
name = "Worn Bandana"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/bandana_worn.json'
-/datum/greyscale_config/bandana_worn_up
- name = "Worn Bandana Up"
- icon_file = 'icons/mob/clothing/mask.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandana_worn_up.json'
+/datum/greyscale_config/bandana_inhands_left
+ name = "Held Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandana_inhands.json'
+
+/datum/greyscale_config/bandana_inhands_right
+ name = "Held Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandana_inhands.json'
/datum/greyscale_config/bandstriped
name = "Striped Bandana"
icon_file = 'icons/obj/clothing/masks.dmi'
json_config = 'code/datums/greyscale/json_configs/bandstriped.json'
-/datum/greyscale_config/bandstriped_up
- name = "Striped Bandana Up"
- icon_file = 'icons/obj/clothing/masks.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandstriped_up.json'
-
/datum/greyscale_config/bandstriped_worn
name = "Worn Striped Bandana"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/bandstriped_worn.json'
-/datum/greyscale_config/bandstriped_worn_up
- name = "Worn Striped Bandana Up"
- icon_file = 'icons/mob/clothing/mask.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandstriped_worn_up.json'
+/datum/greyscale_config/bandana_striped_inhands_left
+ name = "Held Striped Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandanastriped_inhands.json'
+
+/datum/greyscale_config/bandana_striped_inhands_right
+ name = "Held Striped Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandanastriped_inhands.json'
/datum/greyscale_config/bandskull
name = "Skull Bandana"
icon_file = 'icons/obj/clothing/masks.dmi'
json_config = 'code/datums/greyscale/json_configs/bandskull.json'
-/datum/greyscale_config/bandskull_up
- name = "Skull Bandana Up"
- icon_file = 'icons/obj/clothing/masks.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandskull_up.json'
+/datum/greyscale_config/bandana_skull_inhands_left
+ name = "Held Skull Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandanaskull_inhands.json'
+
+/datum/greyscale_config/bandana_skull_inhands_right
+ name = "Held Skull Bandana, Left"
+ icon_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
+ json_config = 'code/datums/greyscale/json_configs/bandanaskull_inhands.json'
/datum/greyscale_config/bandskull_worn
name = "Worn Skull Bandana"
icon_file = 'icons/mob/clothing/mask.dmi'
json_config = 'code/datums/greyscale/json_configs/bandskull_worn.json'
-/datum/greyscale_config/bandskull_worn_up
- name = "Worn Skull Bandana Up"
- icon_file = 'icons/mob/clothing/mask.dmi'
- json_config = 'code/datums/greyscale/json_configs/bandskull_worn_up.json'
-
/datum/greyscale_config/material_airlock
name = "Material Airlock"
icon_file = 'icons/obj/doors/airlocks/material/material.dmi'
diff --git a/code/datums/greyscale/json_configs/bandana.json b/code/datums/greyscale/json_configs/bandana.json
index a56d9b18265..268266fc0d6 100644
--- a/code/datums/greyscale/json_configs/bandana.json
+++ b/code/datums/greyscale/json_configs/bandana.json
@@ -6,5 +6,13 @@
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
+ ],
+ "bandana_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandana_inhands.json b/code/datums/greyscale/json_configs/bandana_inhands.json
new file mode 100644
index 00000000000..0948b930bb0
--- /dev/null
+++ b/code/datums/greyscale/json_configs/bandana_inhands.json
@@ -0,0 +1,10 @@
+{
+ "greyscale_bandana": [
+ {
+ "type": "icon_state",
+ "icon_state": "greyscale_bandana",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+}
diff --git a/code/datums/greyscale/json_configs/bandana_up.json b/code/datums/greyscale/json_configs/bandana_up.json
deleted file mode 100644
index 393d7b0710f..00000000000
--- a/code/datums/greyscale/json_configs/bandana_up.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "bandana_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/code/datums/greyscale/json_configs/bandana_worn.json b/code/datums/greyscale/json_configs/bandana_worn.json
index bc0e6c002d5..a3347c34c1a 100644
--- a/code/datums/greyscale/json_configs/bandana_worn.json
+++ b/code/datums/greyscale/json_configs/bandana_worn.json
@@ -6,5 +6,13 @@
"blend_mode": "overlay",
"color_ids": [ 1 ]
}
+ ],
+ "bandana_worn_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandana_worn_up.json b/code/datums/greyscale/json_configs/bandana_worn_up.json
deleted file mode 100644
index b5375d5dfa0..00000000000
--- a/code/datums/greyscale/json_configs/bandana_worn_up.json
+++ /dev/null
@@ -1,10 +0,0 @@
-{
- "bandana_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- }
- ]
-}
diff --git a/code/datums/greyscale/json_configs/bandstriped_up.json b/code/datums/greyscale/json_configs/bandanaskull_inhands.json
similarity index 66%
rename from code/datums/greyscale/json_configs/bandstriped_up.json
rename to code/datums/greyscale/json_configs/bandanaskull_inhands.json
index da464432cd4..b7067cf3c2e 100644
--- a/code/datums/greyscale/json_configs/bandstriped_up.json
+++ b/code/datums/greyscale/json_configs/bandanaskull_inhands.json
@@ -1,14 +1,14 @@
{
- "bandstriped_up": [
+ "greyscale_bandana": [
{
"type": "icon_state",
- "icon_state": "bandana_cloth_up",
+ "icon_state": "greyscale_bandana",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
- "icon_state": "bandana_stripe_up",
+ "icon_state": "greyscale_bandana_skull",
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
diff --git a/code/datums/greyscale/json_configs/bandskull_up.json b/code/datums/greyscale/json_configs/bandanastriped_inhands.json
similarity index 66%
rename from code/datums/greyscale/json_configs/bandskull_up.json
rename to code/datums/greyscale/json_configs/bandanastriped_inhands.json
index c01dc7bcf43..106dce4db58 100644
--- a/code/datums/greyscale/json_configs/bandskull_up.json
+++ b/code/datums/greyscale/json_configs/bandanastriped_inhands.json
@@ -1,14 +1,14 @@
{
- "bandskull_up": [
+ "greyscale_bandana": [
{
"type": "icon_state",
- "icon_state": "bandana_cloth_up",
+ "icon_state": "greyscale_bandana",
"blend_mode": "overlay",
"color_ids": [ 1 ]
},
{
"type": "icon_state",
- "icon_state": "bandana_skull_up",
+ "icon_state": "greyscale_bandana_stripe",
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
diff --git a/code/datums/greyscale/json_configs/bandskull.json b/code/datums/greyscale/json_configs/bandskull.json
index 18344d5d13a..46dc76d9034 100644
--- a/code/datums/greyscale/json_configs/bandskull.json
+++ b/code/datums/greyscale/json_configs/bandskull.json
@@ -12,5 +12,19 @@
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
+ ],
+ "bandskull_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandskull_worn.json b/code/datums/greyscale/json_configs/bandskull_worn.json
index 3d2e34688c9..ef48106be99 100644
--- a/code/datums/greyscale/json_configs/bandskull_worn.json
+++ b/code/datums/greyscale/json_configs/bandskull_worn.json
@@ -12,5 +12,19 @@
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
+ ],
+ "bandskull_worn_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_skull_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandskull_worn_up.json b/code/datums/greyscale/json_configs/bandskull_worn_up.json
deleted file mode 100644
index be37d2ee2b8..00000000000
--- a/code/datums/greyscale/json_configs/bandskull_worn_up.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "bandskull_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_skull_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/code/datums/greyscale/json_configs/bandstriped.json b/code/datums/greyscale/json_configs/bandstriped.json
index e31fb50309f..370ec6722c7 100644
--- a/code/datums/greyscale/json_configs/bandstriped.json
+++ b/code/datums/greyscale/json_configs/bandstriped.json
@@ -12,5 +12,19 @@
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
+ ],
+ "bandstriped_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandstriped_worn.json b/code/datums/greyscale/json_configs/bandstriped_worn.json
index 89d729aa4c9..a9d25f9737a 100644
--- a/code/datums/greyscale/json_configs/bandstriped_worn.json
+++ b/code/datums/greyscale/json_configs/bandstriped_worn.json
@@ -12,5 +12,19 @@
"blend_mode": "overlay",
"color_ids": [ 2 ]
}
+ ],
+ "bandstriped_worn_up": [
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_cloth_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "bandana_stripe_worn_up",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
]
}
diff --git a/code/datums/greyscale/json_configs/bandstriped_worn_up.json b/code/datums/greyscale/json_configs/bandstriped_worn_up.json
deleted file mode 100644
index 7d08ea651ac..00000000000
--- a/code/datums/greyscale/json_configs/bandstriped_worn_up.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
- "bandstriped_worn_up": [
- {
- "type": "icon_state",
- "icon_state": "bandana_cloth_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 1 ]
- },
- {
- "type": "icon_state",
- "icon_state": "bandana_stripe_worn_up",
- "blend_mode": "overlay",
- "color_ids": [ 2 ]
- }
- ]
-}
diff --git a/code/datums/greyscale/json_configs/gloves_inhand.json b/code/datums/greyscale/json_configs/gloves_inhand.json
new file mode 100644
index 00000000000..7b1bb5100f4
--- /dev/null
+++ b/code/datums/greyscale/json_configs/gloves_inhand.json
@@ -0,0 +1,10 @@
+{
+ "greyscale_gloves": [
+ {
+ "type": "icon_state",
+ "icon_state": "greyscale_gloves",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ }
+ ]
+}
diff --git a/code/datums/greyscale/json_configs/sneakers_inhand.json b/code/datums/greyscale/json_configs/sneakers_inhand.json
new file mode 100644
index 00000000000..f6d712ff181
--- /dev/null
+++ b/code/datums/greyscale/json_configs/sneakers_inhand.json
@@ -0,0 +1,16 @@
+{
+ "sneakers_back": [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ]
+}
diff --git a/code/datums/greyscale/json_configs/sneakers_orange_inhand.json b/code/datums/greyscale/json_configs/sneakers_orange_inhand.json
new file mode 100644
index 00000000000..de2cae90e03
--- /dev/null
+++ b/code/datums/greyscale/json_configs/sneakers_orange_inhand.json
@@ -0,0 +1,35 @@
+{
+ "sneakers_back": [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ }
+ ],
+ "sneakers_chained": [
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_back",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_front",
+ "blend_mode": "overlay",
+ "color_ids": [ 2 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "sneakers_chained",
+ "blend_mode": "overlay"
+ }
+ ]
+}
diff --git a/code/datums/greyscale/json_configs/wirecutter_worn.json b/code/datums/greyscale/json_configs/wirecutter_worn.json
new file mode 100644
index 00000000000..a5158a3b389
--- /dev/null
+++ b/code/datums/greyscale/json_configs/wirecutter_worn.json
@@ -0,0 +1,15 @@
+{
+ "cutters": [
+ {
+ "type": "icon_state",
+ "icon_state": "cutters",
+ "blend_mode": "overlay",
+ "color_ids": [ 1 ]
+ },
+ {
+ "type": "icon_state",
+ "icon_state": "cutters_cutty_thingy",
+ "blend_mode": "overlay"
+ }
+ ]
+}
diff --git a/code/datums/martial/krav_maga.dm b/code/datums/martial/krav_maga.dm
index b35e0fd3798..d6cfaab3339 100644
--- a/code/datums/martial/krav_maga.dm
+++ b/code/datums/martial/krav_maga.dm
@@ -182,7 +182,7 @@
name = "krav maga gloves"
desc = "These gloves can teach you to perform Krav Maga using nanochips."
icon_state = "fightgloves"
- inhand_icon_state = "fightgloves"
+ greyscale_colors = "#c41e0d"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
@@ -193,7 +193,7 @@
name = "combat gloves plus"
desc = "These tactical gloves are fireproof and electrically insulated, and through the use of nanochip technology will teach you the martial art of krav maga."
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ greyscale_colors = "#2f2e31"
siemens_coefficient = 0
strip_delay = 80
cold_protection = HANDS
diff --git a/code/game/atoms.dm b/code/game/atoms.dm
index a1cee72a469..005000a410b 100644
--- a/code/game/atoms.dm
+++ b/code/game/atoms.dm
@@ -241,7 +241,7 @@
SET_PLANE_IMPLICIT(src, plane)
- if(greyscale_config && greyscale_colors)
+ if(greyscale_config && greyscale_colors) //we'll check again at item/init for inhand/belt/worn configs.
update_greyscale()
//atom color stuff
@@ -1228,6 +1228,7 @@
switch(var_name)
if(NAMEOF(src, color))
add_atom_colour(color, ADMIN_COLOUR_PRIORITY)
+ update_appearance()
/**
diff --git a/code/game/machinery/syndicatebomb.dm b/code/game/machinery/syndicatebomb.dm
index 23e15d1206f..e848dee1dae 100644
--- a/code/game/machinery/syndicatebomb.dm
+++ b/code/game/machinery/syndicatebomb.dm
@@ -280,7 +280,7 @@
desc = "A powerful secondary explosive of syndicate design and unknown composition, it should be stable under normal conditions..."
icon = 'icons/obj/assemblies/assemblies.dmi'
icon_state = "bombcore"
- inhand_icon_state = "eshield0"
+ inhand_icon_state = "eshield"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/game/machinery/washing_machine.dm b/code/game/machinery/washing_machine.dm
index bd1875c4822..d67d9c113a5 100644
--- a/code/game/machinery/washing_machine.dm
+++ b/code/game/machinery/washing_machine.dm
@@ -296,12 +296,9 @@ GLOBAL_LIST_INIT(dye_registry, list(
..()
held_mob.machine_wash(washer)
-/obj/item/clothing/shoes/sneakers/machine_wash(obj/machinery/washing_machine/washer)
- if(chained)
- chained = FALSE
- slowdown = SHOES_SLOWDOWN
- new /obj/item/restraints/handcuffs(loc)
- ..()
+/obj/item/clothing/shoes/sneakers/orange/machine_wash(obj/machinery/washing_machine/washer)
+ attached_cuffs?.forceMove(loc)
+ return ..()
/obj/machinery/washing_machine/relaymove(mob/living/user, direction)
container_resist_act(user)
diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 53a61235f3f..a961604885e 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -224,6 +224,9 @@ GLOBAL_DATUM_INIT(welding_sparks, /mutable_appearance, mutable_appearance('icons
if(sharpness && force > 5) //give sharp objects butchering functionality, for consistency
AddComponent(/datum/component/butchering, speed = 8 SECONDS * toolspeed)
+ if(!greyscale_config && greyscale_colors && (greyscale_config_worn || greyscale_config_belt || greyscale_config_inhand_right || greyscale_config_inhand_left))
+ update_greyscale()
+
. = ..()
// Handle adding item associated actions
diff --git a/code/game/objects/items/RCL.dm b/code/game/objects/items/RCL.dm
index c288927a6b8..76ea341aaae 100644
--- a/code/game/objects/items/RCL.dm
+++ b/code/game/objects/items/RCL.dm
@@ -205,7 +205,7 @@
return //If we've run out, display message and exit
else
last = null
- loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
+ loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
last = loaded.place_turf(get_turf(src), user, turn(user.dir, 180))
is_empty(user) //If we've run out, display message
@@ -225,7 +225,7 @@
for(var/obj/structure/pipe_cleaner/C in T)
if(!C)
continue
- if(C.color != GLOB.pipe_cleaner_colors[colors[current_color_index]])
+ if(C.color != GLOB.cable_colors[colors[current_color_index]])
continue
if(C.d1 == 0)
return C
@@ -243,7 +243,7 @@
if(fromdir == dirnum) //pipe_cleaners can't loop back on themselves
pipe_cleanersuffix = "invalid"
var/image/img = image(icon = 'icons/hud/radial.dmi', icon_state = "cable_[pipe_cleanersuffix]")
- img.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
+ img.color = GLOB.cable_colors[colors[current_color_index]]
wiredirs[icondir] = img
return wiredirs
@@ -278,7 +278,7 @@
if(!T.can_have_cabling())
return
- loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
+ loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
var/obj/structure/pipe_cleaner/linkingCable = findLinkingCable(user)
@@ -312,7 +312,7 @@
var/cwname = colors[current_color_index]
to_chat(user, "Color changed to [cwname]!")
if(loaded)
- loaded.color = GLOB.pipe_cleaner_colors[colors[current_color_index]]
+ loaded.color = GLOB.cable_colors[colors[current_color_index]]
loaded.update_appearance()
if(wiring_gui_menu)
wiringGuiUpdate(user)
diff --git a/code/game/objects/items/candle.dm b/code/game/objects/items/candle.dm
index d159ca971c2..76097726905 100644
--- a/code/game/objects/items/candle.dm
+++ b/code/game/objects/items/candle.dm
@@ -5,7 +5,7 @@
humankind. The jewelry he kept for himself."
icon = 'icons/obj/candle.dmi'
icon_state = "candle1"
- inhand_icon_state = "candle1"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_TINY
light_color = LIGHT_COLOR_FIRE
heat = 1000
diff --git a/code/game/objects/items/choice_beacon.dm b/code/game/objects/items/choice_beacon.dm
index f9e707e6893..1a9fae99019 100644
--- a/code/game/objects/items/choice_beacon.dm
+++ b/code/game/objects/items/choice_beacon.dm
@@ -4,6 +4,8 @@
icon = 'icons/obj/device.dmi'
icon_state = "gangtool-blue"
inhand_icon_state = "radio"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
var/uses = 1
/obj/item/choice_beacon/attack_self(mob/user)
diff --git a/code/game/objects/items/cigs_lighters.dm b/code/game/objects/items/cigs_lighters.dm
index 2fd5f2cfb88..0012e1719df 100644
--- a/code/game/objects/items/cigs_lighters.dm
+++ b/code/game/objects/items/cigs_lighters.dm
@@ -128,6 +128,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
name = "cigarette"
desc = "A roll of tobacco and nicotine."
icon_state = "cigoff"
+ inhand_icon_state = "cigon" //gets overriden during intialize(), just have it for unit test sanity.
throw_speed = 0.5
w_class = WEIGHT_CLASS_TINY
body_parts_covered = null
@@ -529,6 +530,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "cigaroff"
icon_on = "cigaron"
icon_off = "cigaroff" //make sure to add positional sprites in icons/obj/cigarettes.dmi if you add more.
+ inhand_icon_state = "cigaron" //gets overriden during intialize(), just have it for unit test sanity.
inhand_icon_on = "cigaron"
inhand_icon_off = "cigaroff"
type_butt = /obj/item/cigbutt/cigarbutt
@@ -580,6 +582,7 @@ CIGARETTE PACKETS ARE IN FANCY.DM
icon_state = "pipeoff"
icon_on = "pipeon" //Note - these are in masks.dmi
icon_off = "pipeoff"
+ inhand_icon_state = null
inhand_icon_on = null
inhand_icon_off = null
smoketime = 0
diff --git a/code/game/objects/items/debug_items.dm b/code/game/objects/items/debug_items.dm
index bab3db586d8..01eaa136069 100644
--- a/code/game/objects/items/debug_items.dm
+++ b/code/game/objects/items/debug_items.dm
@@ -30,6 +30,8 @@
icon = 'icons/obj/device.dmi'
icon_state = "hypertool"
inhand_icon_state = "hypertool"
+ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
toolspeed = 0.1
tool_behaviour = null
@@ -44,6 +46,7 @@
return FALSE
return TRUE
+
/obj/item/debug/omnitool/attack_self(mob/user)
if(!user)
return
@@ -119,4 +122,32 @@
else
RemoveElement(/datum/element/eyestab)
+/obj/item/debug/omnitool/item_spawner/attack_self(mob/user)
+ if(!user || !user.client)
+ return
+ var/path = text2path(tgui_input_text(user, "Insert an item typepath to spawn", "ADMINS ONLY. FUCK AROUND AND FIND OUT."))
+ if(!path)
+ return
+ var/choice = tgui_alert(user, "Subtypes only?",, list("Yes", "No"))
+ if(!choice)
+ return
+ if(!user.client.holder)
+ if(!isliving(user))
+ return
+ var/mob/living/living_user = user
+ to_chat(user, span_warning("As you try to use [src], you hear strange tearing sounds, as if the coder gods were attempting to reach out and choke you themselves."))
+ playsound(src, 'sound/effects/dimensional_rend.ogg')
+ sleep(4 SECONDS)
+ var/confirmation = tgui_alert(user, "Are you certain you want to do that?", "Admins Only. Last Chance.", list("Yes", "No"))
+ if(!confirmation || confirmation == ("No"))
+ return
+ if(!user.client.holder) //safety if the admin readmined to save their ass lol.
+ to_chat(user, span_reallybig("You shouldn't have done that..."))
+ playsound(src, 'sound/voice/borg_deathsound.ogg')
+ sleep(3 SECONDS)
+ living_user.gib()
+ return
+ var/turf/loc_turf = get_turf(src)
+ for(var/spawn_atom in (choice == "No" ? typesof(path) : subtypesof(path)))
+ new spawn_atom(loc_turf)
diff --git a/code/game/objects/items/defib.dm b/code/game/objects/items/defib.dm
index 24f09c244af..5ae4baf3b3b 100644
--- a/code/game/objects/items/defib.dm
+++ b/code/game/objects/items/defib.dm
@@ -268,7 +268,7 @@
name = "compact defibrillator"
desc = "A belt-equipped defibrillator that can be rapidly deployed."
icon_state = "defibcompact"
- inhand_icon_state = "defibcompact"
+ inhand_icon_state = null
worn_icon_state = "defibcompact"
w_class = WEIGHT_CLASS_NORMAL
slot_flags = ITEM_SLOT_BELT
@@ -291,7 +291,7 @@
name = "combat defibrillator"
desc = "A belt-equipped blood-red defibrillator. Can revive through thick clothing, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or aggressive manner."
icon_state = "defibcombat" //needs defib inhand sprites
- inhand_icon_state = "defibcombat"
+ inhand_icon_state = null
worn_icon_state = "defibcombat"
combat = TRUE
safety = FALSE
@@ -315,7 +315,7 @@
name = "elite Nanotrasen defibrillator"
desc = "A belt-equipped state-of-the-art defibrillator. Can revive through thick clothing, has an experimental self-recharging battery, and can be utilized in combat via applying the paddles in a disarming or aggressive manner."
icon_state = "defibnt" //needs defib inhand sprites
- inhand_icon_state = "defibnt"
+ inhand_icon_state = null
worn_icon_state = "defibnt"
paddle_type = /obj/item/shockpaddles/syndicate/nanotrasen
paddle_state = "defibnt-paddles"
diff --git a/code/game/objects/items/devices/flashlight.dm b/code/game/objects/items/devices/flashlight.dm
index 5912e9e09dd..f16c964d044 100644
--- a/code/game/objects/items/devices/flashlight.dm
+++ b/code/game/objects/items/devices/flashlight.dm
@@ -261,7 +261,7 @@
name = "banana lamp"
desc = "Only a clown would think to make a ghetto banana-shaped lamp. Even has a goofy pullstring."
icon_state = "bananalamp"
- inhand_icon_state = "bananalamp"
+ inhand_icon_state = null
// FLARES
@@ -369,7 +369,7 @@
name = "suspicious lantern"
desc = "A suspicious looking lantern."
icon_state = "syndilantern"
- inhand_icon_state = "syndilantern"
+ inhand_icon_state = null
light_range = 10
/obj/item/flashlight/lantern/jade
@@ -384,7 +384,7 @@
desc = "Extract from a yellow slime. It emits a strong light when squeezed."
icon = 'icons/obj/lighting.dmi'
icon_state = "slime"
- inhand_icon_state = "slime"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_materials = null
@@ -457,7 +457,7 @@
color = LIGHT_COLOR_GREEN
icon_state = "glowstick"
base_icon_state = "glowstick"
- inhand_icon_state = "glowstick"
+ inhand_icon_state = null
worn_icon_state = "lightstick"
grind_results = list(/datum/reagent/phenol = 15, /datum/reagent/hydrogen = 10, /datum/reagent/oxygen = 5) //Meth-in-a-stick
/// How many seconds of fuel we have left
diff --git a/code/game/objects/items/devices/gps.dm b/code/game/objects/items/devices/gps.dm
index 6af2fd40b3e..96976eeb82b 100644
--- a/code/game/objects/items/devices/gps.dm
+++ b/code/game/objects/items/devices/gps.dm
@@ -6,6 +6,8 @@
icon_state = "gps-c"
inhand_icon_state = "electronic"
worn_icon_state = "electronic"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
obj_flags = UNIQUE_RENAME
diff --git a/code/game/objects/items/devices/pipe_painter.dm b/code/game/objects/items/devices/pipe_painter.dm
index ddae7360feb..ce8e6a71536 100644
--- a/code/game/objects/items/devices/pipe_painter.dm
+++ b/code/game/objects/items/devices/pipe_painter.dm
@@ -3,7 +3,7 @@
desc = "Used for coloring pipes, unsurprisingly."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler1"
- inhand_icon_state = "flight"
+ inhand_icon_state = null
item_flags = NOBLUDGEON
var/paint_color = "grey"
diff --git a/code/game/objects/items/devices/pressureplates.dm b/code/game/objects/items/devices/pressureplates.dm
index 707e07a0d5a..34895911f35 100644
--- a/code/game/objects/items/devices/pressureplates.dm
+++ b/code/game/objects/items/devices/pressureplates.dm
@@ -2,7 +2,9 @@
name = "pressure plate"
desc = "An electronic device that triggers when stepped on. Ctrl-Click to toggle the pressure plate off and on."
icon = 'icons/obj/puzzle_small.dmi'
- inhand_icon_state = "flash"
+ inhand_icon_state = "flashtool"
+ lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
icon_state = "pressureplate"
layer = LOW_OBJ_LAYER
var/trigger_mob = TRUE
diff --git a/code/game/objects/items/devices/radio/headset.dm b/code/game/objects/items/devices/radio/headset.dm
index 9420cfa8d10..ee062f30fa7 100644
--- a/code/game/objects/items/devices/radio/headset.dm
+++ b/code/game/objects/items/devices/radio/headset.dm
@@ -19,6 +19,8 @@ GLOBAL_LIST_INIT(channel_tokens, list(
desc = "An updated, modular intercom that fits over the head. Takes encryption keys."
icon_state = "headset"
inhand_icon_state = "headset"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "headset"
custom_materials = list(/datum/material/iron=75)
subspace_transmission = TRUE
@@ -115,7 +117,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "syndicate headset"
desc = "A syndicate headset that can be used to hear all radio frequencies. Protects ears from flashbangs."
icon_state = "syndie_headset"
- inhand_icon_state = "syndie_headset"
/obj/item/radio/headset/syndicate/alt/Initialize(mapload)
. = ..()
@@ -138,7 +139,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "security bowman headset"
desc = "This is used by your elite security force. Protects ears from flashbangs."
icon_state = "sec_headset_alt"
- inhand_icon_state = "sec_headset_alt"
/obj/item/radio/headset/headset_sec/alt/Initialize(mapload)
. = ..()
@@ -205,7 +205,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\proper the captain's bowman headset"
desc = "The headset of the boss. Protects ears from flashbangs."
icon_state = "com_headset_alt"
- inhand_icon_state = "com_headset_alt"
/obj/item/radio/headset/heads/captain/alt/Initialize(mapload)
. = ..()
@@ -227,7 +226,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\proper the head of security's bowman headset"
desc = "The headset of the man in charge of keeping order and protecting the station. Protects ears from flashbangs."
icon_state = "com_headset_alt"
- inhand_icon_state = "com_headset_alt"
/obj/item/radio/headset/heads/hos/alt/Initialize(mapload)
. = ..()
@@ -293,7 +291,6 @@ GLOBAL_LIST_INIT(channel_tokens, list(
name = "\improper CentCom bowman headset"
desc = "A headset especially for emergency response personnel. Protects ears from flashbangs."
icon_state = "cent_headset_alt"
- inhand_icon_state = "cent_headset_alt"
keyslot = null
/obj/item/radio/headset/headset_cent/alt/Initialize(mapload)
diff --git a/code/game/objects/items/devices/radio/radio.dm b/code/game/objects/items/devices/radio/radio.dm
index 9ddf57190bf..a23a1caed8c 100644
--- a/code/game/objects/items/devices/radio/radio.dm
+++ b/code/game/objects/items/devices/radio/radio.dm
@@ -4,7 +4,9 @@
icon = 'icons/obj/radio.dmi'
name = "station bounced radio"
icon_state = "walkietalkie"
- inhand_icon_state = "walkietalkie"
+ inhand_icon_state = "radio"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
worn_icon_state = "radio"
desc = "A basic handheld radio that communicates with local telecommunication networks."
dog_fashion = /datum/dog_fashion/back
diff --git a/code/game/objects/items/devices/sensor_device.dm b/code/game/objects/items/devices/sensor_device.dm
index 325dccbd3fb..dc45521532e 100644
--- a/code/game/objects/items/devices/sensor_device.dm
+++ b/code/game/objects/items/devices/sensor_device.dm
@@ -5,6 +5,8 @@
icon_state = "scanner"
inhand_icon_state = "electronic"
worn_icon_state = "electronic"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
w_class = WEIGHT_CLASS_SMALL
slot_flags = ITEM_SLOT_BELT
custom_price = PAYCHECK_CREW * 5
diff --git a/code/game/objects/items/devices/traitordevices.dm b/code/game/objects/items/devices/traitordevices.dm
index 345fdbcf179..53e2726093d 100644
--- a/code/game/objects/items/devices/traitordevices.dm
+++ b/code/game/objects/items/devices/traitordevices.dm
@@ -207,6 +207,8 @@ effective or pretty fucking useless.
icon = 'icons/obj/clothing/belts.dmi'
icon_state = "utility"
inhand_icon_state = "utility"
+ lefthand_file = 'icons/mob/inhands/equipment/belt_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/belt_righthand.dmi'
worn_icon_state = "utility"
slot_flags = ITEM_SLOT_BELT
attack_verb_continuous = list("whips", "lashes", "disciplines")
diff --git a/code/game/objects/items/dna_injector.dm b/code/game/objects/items/dna_injector.dm
index fecdad49e2d..73ef14aecef 100644
--- a/code/game/objects/items/dna_injector.dm
+++ b/code/game/objects/items/dna_injector.dm
@@ -3,6 +3,7 @@
desc = "A cheap single use autoinjector that injects the user with DNA."
icon = 'icons/obj/medical/syringe.dmi'
icon_state = "dnainjector"
+ inhand_icon_state = "dnainjector"
worn_icon_state = "pen"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
@@ -17,6 +18,24 @@
var/used = FALSE
+/obj/item/dnainjector/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+ if(used)
+ update_appearance()
+
+/obj/item/dnainjector/vv_edit_var(vname, vval)
+ . = ..()
+ if(vname == NAMEOF(src, used))
+ update_appearance()
+
+/obj/item/dnainjector/update_icon_state()
+ . = ..()
+ icon_state = inhand_icon_state = "[initial(icon_state)][used ? "0" : null]"
+
+/obj/item/dnainjector/update_desc(updates)
+ . = ..()
+ desc = "[initial(desc)][used ? "This one is used up." : null]"
/obj/item/dnainjector/attack_paw(mob/user, list/modifiers)
return attack_hand(user, modifiers)
@@ -77,8 +96,7 @@
to_chat(user, span_notice("It appears that [target] does not have compatible DNA."))
used = TRUE
- icon_state = "dnainjector0"
- desc += " This one is used up."
+ update_appearance()
/obj/item/dnainjector/timed
var/duration = 600
diff --git a/code/game/objects/items/dualsaber.dm b/code/game/objects/items/dualsaber.dm
index a7d004dbfb3..26aad7ed001 100644
--- a/code/game/objects/items/dualsaber.dm
+++ b/code/game/objects/items/dualsaber.dm
@@ -4,6 +4,7 @@
/obj/item/dualsaber
icon = 'icons/obj/weapons/transforming_energy.dmi'
icon_state = "dualsaber0"
+ inhand_icon_state = "dualsaber0"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
name = "double-bladed energy sword"
@@ -71,7 +72,7 @@
return HAS_TRAIT(src, TRAIT_WIELDED) && sharpness
/obj/item/dualsaber/update_icon_state()
- icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color][HAS_TRAIT(src, TRAIT_WIELDED)]" : "dualsaber0"
+ icon_state = inhand_icon_state = HAS_TRAIT(src, TRAIT_WIELDED) ? "dualsaber[saber_color][HAS_TRAIT(src, TRAIT_WIELDED)]" : "dualsaber0"
return ..()
/obj/item/dualsaber/suicide_act(mob/living/carbon/user)
diff --git a/code/game/objects/items/food/bread.dm b/code/game/objects/items/food/bread.dm
index 93e95b14f21..b87861c3836 100644
--- a/code/game/objects/items/food/bread.dm
+++ b/code/game/objects/items/food/bread.dm
@@ -249,7 +249,7 @@
desc = "Bon appetit!"
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "baguette"
- inhand_icon_state = "baguette"
+ inhand_icon_state = null
worn_icon_state = "baguette"
food_reagents = list(/datum/reagent/consumable/nutriment = 8, /datum/reagent/consumable/nutriment/vitamin = 3)
bite_consumption = 3
@@ -332,7 +332,7 @@
desc = "Alas, it is limited."
icon = 'icons/obj/food/burgerbread.dmi'
icon_state = "garlicbread"
- inhand_icon_state = "garlicbread"
+ inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 10, /datum/reagent/consumable/nutriment/vitamin = 6, /datum/reagent/consumable/garlic = 2)
bite_consumption = 3
tastes = list("bread" = 1, "garlic" = 1, "butter" = 1)
diff --git a/code/game/objects/items/food/misc.dm b/code/game/objects/items/food/misc.dm
index 7d9373b6ee7..8ee5e68d57c 100644
--- a/code/game/objects/items/food/misc.dm
+++ b/code/game/objects/items/food/misc.dm
@@ -367,7 +367,7 @@
desc = "A delicious lollipop. Makes for a great Valentine's present."
icon = 'icons/obj/food/lollipop.dmi'
icon_state = "lollipop_stick"
- inhand_icon_state = "lollipop_stick"
+ inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1, /datum/reagent/iron = 10, /datum/reagent/consumable/sugar = 5, /datum/reagent/medicine/omnizine = 2) //Honk
tastes = list("candy" = 1)
foodtypes = JUNKFOOD | SUGAR
@@ -402,7 +402,7 @@
name = "bubblegum"
desc = "A rubbery strip of gum. Not exactly filling, but it keeps you busy."
icon_state = "bubblegum"
- inhand_icon_state = "bubblegum"
+ inhand_icon_state = null
color = "#E48AB5" // craftable custom gums someday?
food_reagents = list(/datum/reagent/consumable/sugar = 5)
tastes = list("candy" = 1)
diff --git a/code/game/objects/items/food/pancakes.dm b/code/game/objects/items/food/pancakes.dm
index d6e2a06a1ef..b40e66a673f 100644
--- a/code/game/objects/items/food/pancakes.dm
+++ b/code/game/objects/items/food/pancakes.dm
@@ -4,7 +4,7 @@
name = "pancake"
desc = "A fluffy pancake. The softer, superior relative of the waffle."
icon_state = "pancakes_1"
- inhand_icon_state = "pancakes"
+ inhand_icon_state = null
food_reagents = list(/datum/reagent/consumable/nutriment = 4, /datum/reagent/consumable/nutriment/vitamin = 2)
tastes = list("pancakes" = 1)
foodtypes = GRAIN | SUGAR | BREAKFAST
@@ -16,7 +16,6 @@
name = "goopy pancake"
desc = "A barely cooked mess that some may mistake for a pancake. It longs for the griddle."
icon_state = "rawpancakes_1"
- inhand_icon_state = "rawpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 1, /datum/reagent/consumable/nutriment/vitamin = 1)
tastes = list("milky batter" = 1)
burns_on_grill = FALSE
@@ -56,7 +55,6 @@
name = "blueberry pancake"
desc = "A fluffy and delicious blueberry pancake."
icon_state = "bbpancakes_1"
- inhand_icon_state = "bbpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("pancakes" = 1, "blueberries" = 1)
@@ -64,7 +62,6 @@
name = "chocolate chip pancake"
desc = "A fluffy and delicious chocolate chip pancake."
icon_state = "ccpancakes_1"
- inhand_icon_state = "ccpancakes"
food_reagents = list(/datum/reagent/consumable/nutriment = 6, /datum/reagent/consumable/nutriment/vitamin = 5)
tastes = list("pancakes" = 1, "chocolate" = 1)
diff --git a/code/game/objects/items/food/pie.dm b/code/game/objects/items/food/pie.dm
index e17de92fa66..234865cac72 100644
--- a/code/game/objects/items/food/pie.dm
+++ b/code/game/objects/items/food/pie.dm
@@ -1,6 +1,7 @@
/obj/item/food/pie
icon = 'icons/obj/food/piecake.dmi'
+
bite_consumption = 3
w_class = WEIGHT_CLASS_NORMAL
max_volume = 80
diff --git a/code/game/objects/items/grenades/spawnergrenade.dm b/code/game/objects/items/grenades/spawnergrenade.dm
index ac71011023a..9a3b888a765 100644
--- a/code/game/objects/items/grenades/spawnergrenade.dm
+++ b/code/game/objects/items/grenades/spawnergrenade.dm
@@ -54,7 +54,7 @@
name = "C.L.U.W.N.E."
desc = "A sleek device often given to clowns on their 10th birthdays for protection. You can hear faint scratching coming from within."
icon_state = "clown_ball"
- inhand_icon_state = "clown_ball"
+ inhand_icon_state = null
spawner_type = list(/mob/living/simple_animal/hostile/retaliate/clown/fleshclown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk, /mob/living/simple_animal/hostile/retaliate/clown/longface, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/chlown, /mob/living/simple_animal/hostile/retaliate/clown/clownhulk/honcmunculus, /mob/living/simple_animal/hostile/retaliate/clown/mutant/glutton, /mob/living/simple_animal/hostile/retaliate/clown/banana, /mob/living/simple_animal/hostile/retaliate/clown/honkling, /mob/living/simple_animal/hostile/retaliate/clown/lube)
deliveryamt = 1
@@ -62,6 +62,6 @@
name = "stuffed C.L.U.W.N.E."
desc = "A sleek device often given to clowns on their 10th birthdays for protection. While a typical C.L.U.W.N.E only holds one creature, sometimes foolish young clowns try to cram more in, often to disasterous effect."
icon_state = "clown_broken"
- inhand_icon_state = "clown_broken"
+ inhand_icon_state = null
spawner_type = /mob/living/simple_animal/hostile/retaliate/clown/mutant
deliveryamt = 5
diff --git a/code/game/objects/items/handcuffs.dm b/code/game/objects/items/handcuffs.dm
index 7b358c1e677..f4e109f22ba 100644
--- a/code/game/objects/items/handcuffs.dm
+++ b/code/game/objects/items/handcuffs.dm
@@ -29,6 +29,7 @@
gender = PLURAL
icon_state = "handcuff"
worn_icon_state = "handcuff"
+ inhand_icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
flags_1 = CONDUCT_1
@@ -137,15 +138,17 @@
name = "cable restraints"
desc = "Looks like some cables tied together. Could be used to tie something up."
icon_state = "cuff"
- inhand_icon_state = "coil"
- color = "#ff0000"
+ inhand_icon_state = "coil_red"
+ color = CABLE_HEX_COLOR_RED
+ ///for generating the correct icons based off the original cable's color.
+ var/cable_color = CABLE_COLOR_RED
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
custom_materials = list(/datum/material/iron=150, /datum/material/glass=75)
breakouttime = 30 SECONDS
cuffsound = 'sound/weapons/cablecuff.ogg'
-/obj/item/restraints/handcuffs/cable/Initialize(mapload)
+/obj/item/restraints/handcuffs/cable/Initialize(mapload, new_color)
. = ..()
var/static/list/hovering_item_typechecks = list(
@@ -159,6 +162,29 @@
)
AddElement(/datum/element/contextual_screentip_item_typechecks, hovering_item_typechecks)
+ AddElement(/datum/element/update_icon_updates_onmob, (slot_flags|ITEM_SLOT_HANDCUFFED))
+
+ if(new_color)
+ set_cable_color(new_color)
+
+/obj/item/restraints/handcuffs/cable/proc/set_cable_color(new_color)
+ color = GLOB.cable_colors[new_color]
+ cable_color = new_color
+ update_appearance(UPDATE_ICON)
+
+/obj/item/restraints/handcuffs/cable/vv_edit_var(vname, vval)
+ if(vname == NAMEOF(src, cable_color))
+ set_cable_color(vval)
+ datum_flags |= DF_VAR_EDITED
+ return TRUE
+ return ..()
+
+/obj/item/restraints/handcuffs/cable/update_icon_state()
+ . = ..()
+ if(cable_color)
+ var/new_inhand_icon = "coil_[cable_color]"
+ if(new_inhand_icon != inhand_icon_state)
+ inhand_icon_state = new_inhand_icon //small memory optimization.
/**
* # Sinew restraints
@@ -171,7 +197,8 @@
name = "sinew restraints"
desc = "A pair of restraints fashioned from long strands of flesh."
icon_state = "sinewcuff"
- inhand_icon_state = "sinewcuff"
+ inhand_icon_state = null
+ cable_color = null
custom_materials = null
color = null
@@ -179,49 +206,65 @@
* Red cable restraints
*/
/obj/item/restraints/handcuffs/cable/red
- color = "#ff0000"
+ color = CABLE_HEX_COLOR_RED
+ cable_color = CABLE_COLOR_RED
+ inhand_icon_state = "coil_red"
/**
* Yellow cable restraints
*/
/obj/item/restraints/handcuffs/cable/yellow
- color = "#ffff00"
+ color = CABLE_HEX_COLOR_YELLOW
+ cable_color = CABLE_COLOR_YELLOW
+ inhand_icon_state = "coil_yellow"
/**
* Blue cable restraints
*/
/obj/item/restraints/handcuffs/cable/blue
- color = "#1919c8"
+ color =CABLE_HEX_COLOR_BLUE
+ cable_color = CABLE_COLOR_BLUE
+ inhand_icon_state = "coil_blue"
/**
* Green cable restraints
*/
/obj/item/restraints/handcuffs/cable/green
- color = "#00aa00"
+ color = CABLE_HEX_COLOR_GREEN
+ cable_color = CABLE_COLOR_GREEN
+ inhand_icon_state = "coil_green"
/**
* Pink cable restraints
*/
/obj/item/restraints/handcuffs/cable/pink
- color = "#ff3ccd"
+ color = CABLE_HEX_COLOR_PINK
+ cable_color = CABLE_COLOR_PINK
+ inhand_icon_state = "coil_pink"
/**
* Orange (the color) cable restraints
*/
/obj/item/restraints/handcuffs/cable/orange
- color = "#ff8000"
+ color = CABLE_HEX_COLOR_ORANGE
+ cable_color = CABLE_COLOR_ORANGE
+ inhand_icon_state = "coil_orange"
/**
* Cyan cable restraints
*/
/obj/item/restraints/handcuffs/cable/cyan
- color = "#00ffff"
+ color = CABLE_HEX_COLOR_CYAN
+ cable_color = CABLE_COLOR_CYAN
+ inhand_icon_state = "coil_cyan"
/**
* White cable restraints
*/
/obj/item/restraints/handcuffs/cable/white
- color = null
+ color = CABLE_HEX_COLOR_WHITE
+ cable_color = CABLE_COLOR_WHITE
+ inhand_icon_state = "coil_white"
/obj/item/restraints/handcuffs/cable/attackby(obj/item/I, mob/user, params) //Slapcrafting
if(istype(I, /obj/item/stack/rods))
@@ -262,12 +305,14 @@
name = "zipties"
desc = "Plastic, disposable zipties that can be used to restrain temporarily but are destroyed after use."
icon_state = "cuff"
+ inhand_icon_state = "cuff_white"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
custom_materials = null
breakouttime = 45 SECONDS
trashtype = /obj/item/restraints/handcuffs/cable/zipties/used
color = null
+ cable_color = null
/**
* # Used zipties
@@ -277,7 +322,6 @@
/obj/item/restraints/handcuffs/cable/zipties/used
desc = "A pair of broken zipties."
icon_state = "cuff_used"
- inhand_icon_state = "cuff"
/obj/item/restraints/handcuffs/cable/zipties/used/attack()
return
@@ -295,7 +339,6 @@
/obj/item/restraints/handcuffs/cable/zipties/fake/used
desc = "A pair of broken fake zipties."
icon_state = "cuff_used"
- inhand_icon_state = "cuff"
/**
* # Generic leg cuffs
@@ -307,6 +350,7 @@
desc = "Use this to keep prisoners in line."
gender = PLURAL
icon_state = "handcuff"
+ inhand_icon_state = "handcuff"
lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
flags_1 = CONDUCT_1
diff --git a/code/game/objects/items/holy_weapons.dm b/code/game/objects/items/holy_weapons.dm
index 3efd8e8550b..63fcc1b42b5 100644
--- a/code/game/objects/items/holy_weapons.dm
+++ b/code/game/objects/items/holy_weapons.dm
@@ -363,7 +363,9 @@
desc = "Used for absolutely hilarious sacrifices."
icon = 'icons/obj/wizard.dmi'
icon_state = "clownrender"
- inhand_icon_state = "render"
+ inhand_icon_state = "cultdagger"
+ lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
worn_icon_state = "render"
hitsound = 'sound/items/bikehorn.ogg'
sharpness = SHARP_EDGED
@@ -423,6 +425,8 @@
inhand_icon_state = "fedora"
slot_flags = ITEM_SLOT_HEAD
icon = 'icons/obj/clothing/hats.dmi'
+ lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
force = 0
throw_speed = 4
throw_range = 7
diff --git a/code/game/objects/items/inspector.dm b/code/game/objects/items/inspector.dm
index 5fb1763c333..538e9a373a7 100644
--- a/code/game/objects/items/inspector.dm
+++ b/code/game/objects/items/inspector.dm
@@ -10,6 +10,8 @@
icon_state = "inspector"
worn_icon_state = "salestagger"
inhand_icon_state = "electronic"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
throwforce = 0
w_class = WEIGHT_CLASS_TINY
throw_range = 1
diff --git a/code/game/objects/items/kitchen.dm b/code/game/objects/items/kitchen.dm
index 70493a52c6e..bb8f0cb1a75 100644
--- a/code/game/objects/items/kitchen.dm
+++ b/code/game/objects/items/kitchen.dm
@@ -103,6 +103,7 @@
desc = "Used to knock out the Bartender."
icon_state = "rolling_pin"
worn_icon_state = "rolling_pin"
+ inhand_icon_state = "rolling_pin"
force = 8
throwforce = 5
throw_speed = 3
@@ -118,6 +119,7 @@
name = "metal rolling pin"
desc = "A heavy metallic rolling pin used to bash in those annoying ingredients."
icon_state = "metal_rolling_pin"
+ inhand_icon_state = "metal_rolling_pin"
force = 12
flags_1 = CONDUCT_1
custom_materials = list(/datum/material/iron = MINERAL_MATERIAL_AMOUNT * 1.5, /datum/material/plastic = MINERAL_MATERIAL_AMOUNT * 1.5)
diff --git a/code/game/objects/items/latexballoon.dm b/code/game/objects/items/latexballoon.dm
index 78df10ab7c3..b0d5590e7be 100644
--- a/code/game/objects/items/latexballoon.dm
+++ b/code/game/objects/items/latexballoon.dm
@@ -2,7 +2,9 @@
name = "latex glove"
desc = "Sterile and airtight."
icon_state = "latexballon"
- inhand_icon_state = "lgloves"
+ inhand_icon_state = "greyscale_gloves"
+ lefthand_file = 'icons/mob/inhands/clothing/gloves_righthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/gloves_lefthand.dmi'
force = 0
throwforce = 0
w_class = WEIGHT_CLASS_TINY
@@ -19,6 +21,8 @@
if (icon_state == "latexballon_bursted")
return
icon_state = "latexballon_blow"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
inhand_icon_state = "latexballon"
user.update_held_items()
to_chat(user, span_notice("You blow up [src] with [tank]."))
@@ -35,7 +39,9 @@
return
playsound(src, 'sound/weapons/gun/pistol/shot.ogg', 100, TRUE)
icon_state = "latexballon_bursted"
- inhand_icon_state = "lgloves"
+ inhand_icon_state = initial(inhand_icon_state)
+ lefthand_file = initial(lefthand_file)
+ righthand_file = initial(righthand_file)
if(isliving(loc))
var/mob/living/user = src.loc
user.update_held_items()
diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index c75a06c9642..5c068e780e5 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -100,6 +100,10 @@
if(active)
if(sword_color_icon)
icon_state = "[icon_state]_[sword_color_icon]"
+ inhand_icon_state = "[inhand_icon_state]_[sword_color_icon]"
+ if(ismob(loc))
+ var/mob/loc_mob = loc
+ loc_mob.update_held_items()
if(embedding)
updateEmbedding()
heat = active_heat
@@ -111,7 +115,8 @@
STOP_PROCESSING(SSobj, src)
tool_behaviour = (active ? TOOL_SAW : NONE) //Lets energy weapons cut trees. Also lets them do bonecutting surgery, which is kinda metal!
- balloon_alert(user, "[name] [active ? "enabled":"disabled"]")
+ if(user)
+ balloon_alert(user, "[name] [active ? "enabled":"disabled"]")
playsound(user ? user : src, active ? 'sound/weapons/saberon.ogg' : 'sound/weapons/saberoff.ogg', 35, TRUE)
set_light_on(active)
return COMPONENT_NO_DEFAULT_MESSAGE
@@ -121,6 +126,7 @@
name = "energy axe"
desc = "An energized battle axe."
icon_state = "axe"
+ inhand_icon_state = "axe"
lefthand_file = 'icons/mob/inhands/weapons/axes_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/axes_righthand.dmi'
hitsound = 'sound/weapons/bladeslice.ogg'
@@ -158,6 +164,7 @@
name = "energy sword"
desc = "May the force be within you."
icon_state = "e_sword"
+ inhand_icon_state = "e_sword"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
hitsound = SFX_SWING_HIT
@@ -219,7 +226,7 @@
// The colored energy swords we all know and love.
/obj/item/melee/energy/sword/saber
/// Assoc list of all possible saber colors to color define.
- var/list/possible_colors = list(
+ var/list/possible_sword_colors = list(
"red" = COLOR_SOFT_RED,
"blue" = LIGHT_COLOR_LIGHT_CYAN,
"green" = LIGHT_COLOR_GREEN,
@@ -227,19 +234,30 @@
)
/// Whether this saber has been multitooled.
var/hacked = FALSE
+ var/hacked_color
/obj/item/melee/energy/sword/saber/Initialize(mapload)
. = ..()
- if(!sword_color_icon && LAZYLEN(possible_colors))
- sword_color_icon = pick(possible_colors)
+ if(!sword_color_icon && LAZYLEN(possible_sword_colors))
+ sword_color_icon = pick(possible_sword_colors)
if(sword_color_icon)
- set_light_color(possible_colors[sword_color_icon])
+ set_light_color(possible_sword_colors[sword_color_icon])
/obj/item/melee/energy/sword/saber/process()
. = ..()
- if(hacked)
- set_light_color(possible_colors[pick(possible_colors)])
+ if(blade_active && hacked)
+ if(!LAZYLEN(possible_sword_colors))
+ possible_sword_colors = list(
+ "red" = COLOR_SOFT_RED,
+ "blue" = LIGHT_COLOR_LIGHT_CYAN,
+ "green" = LIGHT_COLOR_GREEN,
+ "purple" = LIGHT_COLOR_LAVENDER,
+ )
+ possible_sword_colors -= hacked_color
+ hacked_color = pick(possible_sword_colors)
+ set_light_color(possible_sword_colors[hacked_color])
+ possible_sword_colors -= hacked_color
/obj/item/melee/energy/sword/saber/red
sword_color_icon = "red"
@@ -262,12 +280,14 @@
to_chat(user, span_warning("RNBW_ENGAGE"))
if(force >= active_force)
icon_state = "[initial(icon_state)]_on_rainbow"
+ inhand_icon_state = "[initial(inhand_icon_state)]_on_rainbow"
user.update_held_items()
/obj/item/melee/energy/sword/pirate
name = "energy cutlass"
desc = "Arrrr matey."
icon_state = "e_cutlass"
+ inhand_icon_state = "e_cutlass"
lefthand_file = 'icons/mob/inhands/weapons/swords_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/swords_righthand.dmi'
light_color = COLOR_RED
diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm
index d328d557b9d..4cce6b8e815 100644
--- a/code/game/objects/items/mop.dm
+++ b/code/game/objects/items/mop.dm
@@ -3,6 +3,7 @@
name = "mop"
icon = 'icons/obj/janitor.dmi'
icon_state = "mop"
+ inhand_icon_state = "mop"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
force = 8
@@ -72,7 +73,6 @@
name = "advanced mop"
max_reagent_volume = 10
icon_state = "advmop"
- inhand_icon_state = "mop"
lefthand_file = 'icons/mob/inhands/equipment/custodial_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/custodial_righthand.dmi'
force = 12
diff --git a/code/game/objects/items/plushes.dm b/code/game/objects/items/plushes.dm
index 63b9912abbb..40fa897c7c2 100644
--- a/code/game/objects/items/plushes.dm
+++ b/code/game/objects/items/plushes.dm
@@ -533,7 +533,7 @@
name = "space lizard plushie"
desc = "An adorable stuffed toy that resembles a very determined spacefaring lizardperson. To infinity and beyond, little guy."
icon_state = "plushie_spacelizard"
- inhand_icon_state = "plushie_spacelizard"
+ inhand_icon_state = null
// space lizards can't hit people with their tail, it's stuck in their suit
attack_verb_continuous = list("claws", "hisses", "bops")
attack_verb_simple = list("claw", "hiss", "bops")
@@ -543,7 +543,7 @@
name = "snake plushie"
desc = "An adorable stuffed toy that resembles a snake. Not to be mistaken for the real thing."
icon_state = "plushie_snake"
- inhand_icon_state = "plushie_snake"
+ inhand_icon_state = null
attack_verb_continuous = list("bites", "hisses", "tail slaps")
attack_verb_simple = list("bite", "hiss", "tail slap")
squeak_override = list('sound/weapons/bite.ogg' = 1)
@@ -552,7 +552,7 @@
name = "operative plushie"
desc = "A stuffed toy that resembles a syndicate nuclear operative. The tag claims operatives to be purely fictitious."
icon_state = "plushie_nuke"
- inhand_icon_state = "plushie_nuke"
+ inhand_icon_state = null
attack_verb_continuous = list("shoots", "nukes", "detonates")
attack_verb_simple = list("shoot", "nuke", "detonate")
squeak_override = list('sound/effects/hit_punch.ogg' = 1)
@@ -561,7 +561,7 @@
name = "plasmaman plushie"
desc = "A stuffed toy that resembles your purple coworkers. Mmm, yeah, in true plasmaman fashion, it's not cute at all despite the designer's best efforts."
icon_state = "plushie_pman"
- inhand_icon_state = "plushie_pman"
+ inhand_icon_state = null
attack_verb_continuous = list("burns", "space beasts", "fwooshes")
attack_verb_simple = list("burn", "space beast", "fwoosh")
squeak_override = list('sound/effects/extinguish.ogg' = 1)
@@ -570,7 +570,7 @@
name = "slime plushie"
desc = "An adorable stuffed toy that resembles a slime. It is practically just a hacky sack."
icon_state = "plushie_slime"
- inhand_icon_state = "plushie_slime"
+ inhand_icon_state = null
attack_verb_continuous = list("blorbles", "slimes", "absorbs")
attack_verb_simple = list("blorble", "slime", "absorb")
squeak_override = list('sound/effects/blobattack.ogg' = 1)
@@ -580,7 +580,7 @@
name = "awakened plushie"
desc = "An ancient plushie that has grown enlightened to the true nature of reality."
icon_state = "plushie_awake"
- inhand_icon_state = "plushie_awake"
+ inhand_icon_state = null
/obj/item/toy/plush/awakenedplushie/Initialize(mapload)
. = ..()
@@ -590,7 +590,7 @@
name = "bee plushie"
desc = "A cute toy that resembles an even cuter bee."
icon_state = "plushie_h"
- inhand_icon_state = "plushie_h"
+ inhand_icon_state = null
attack_verb_continuous = list("stings")
attack_verb_simple = list("sting")
gender = FEMALE
@@ -658,7 +658,7 @@
name = "moth plushie"
desc = "A plushie depicting an adorable mothperson. It's a huggable bug!"
icon_state = "moffplush"
- inhand_icon_state = "moffplush"
+ inhand_icon_state = null
attack_verb_continuous = list("flutters", "flaps")
attack_verb_simple = list("flutter", "flap")
squeak_override = list('sound/voice/moth/scream_moth.ogg'=1)
@@ -686,7 +686,6 @@
name = "peacekeeper plushie"
desc = "A plushie depicting a peacekeeper cyborg. Only you can prevent human harm!"
icon_state = "pkplush"
- inhand_icon_state = "pkplush"
attack_verb_continuous = list("hugs", "squeezes")
attack_verb_simple = list("hug", "squeeze")
squeak_override = list('sound/weapons/thudswoosh.ogg'=1)
@@ -695,7 +694,7 @@
name = "runner plushie"
desc = "A plushie depicting a xenomorph runner, made to commemorate the centenary of the Battle of LV-426. Much cuddlier than the real thing."
icon_state = "rouny"
- inhand_icon_state = "rouny"
+ inhand_icon_state = null
attack_verb_continuous = list("slashes", "bites", "charges")
attack_verb_simple = list("slash", "bite", "charge")
squeak_override = list('sound/items/intents/Help.ogg' = 1)
@@ -704,7 +703,7 @@
name = "abductor plushie"
desc = "A plushie depicting an alien abductor. The tag on it is in an indecipherable language."
icon_state = "abductor"
- inhand_icon_state = "abductor"
+ inhand_icon_state = null
attack_verb_continuous = list("abducts", "probes")
attack_verb_continuous = list("abduct", "probe")
squeak_override = list('sound/weather/ashstorm/inside/weak_end.ogg' = 1) //very faint sound since abductors are silent as far as "speaking" is concerned.
@@ -713,7 +712,7 @@
name = "abductor agent plushie"
desc = "A plushie depicting an alien abductor agent. The stun baton is attached to the hand of the plushie, and appears to be inert. I wouldn't stay alone with it."
icon_state = "abductor_agent"
- inhand_icon_state = "abductor_agent"
+ inhand_icon_state = null
attack_verb_continuous = list("abducts", "probes", "stuns")
attack_verb_continuous = list("abduct", "probe", "stun")
squeak_override = list(
@@ -725,7 +724,7 @@
name = "cucumber greek"
desc = "A plushie depicting a large cucumber with eyes, it seems that according to the manufacturer of the toy, the human race will look like in the future."
icon_state = "cucumber"
- inhand_icon_state = "cucumber"
+ inhand_icon_state = null
attack_verb_continuous = list("squishуы", "creakes", "crunches")
attack_verb_simple = list("squish", "creak", "crunch")
squeak_override = list(
diff --git a/code/game/objects/items/religion.dm b/code/game/objects/items/religion.dm
index 836a684f74e..e935cf171fd 100644
--- a/code/game/objects/items/religion.dm
+++ b/code/game/objects/items/religion.dm
@@ -272,30 +272,36 @@
name = "Crusader's Hood"
desc = "A brownish hood."
icon_state = "crusader"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_NORMAL
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACE
armor = list(MELEE = 50, BULLET = 50, LASER = 50, ENERGY = 50, BOMB = 60, BIO = 0, FIRE = 60, ACID = 60)
/obj/item/clothing/head/helmet/plate/crusader/blue
icon_state = "crusader-blue"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/plate/crusader/red
icon_state = "crusader-red"
+ inhand_icon_state = null
//Prophet helmet
/obj/item/clothing/head/helmet/plate/crusader/prophet
name = "Prophet's Hat"
desc = "A religious-looking hat."
icon_state = null
+ inhand_icon_state = null
flags_1 = 0
armor = list(MELEE = 60, BULLET = 60, LASER = 60, ENERGY = 60, BOMB = 70, BIO = 50, FIRE = 60, ACID = 60) //religion protects you from disease, honk.
worn_y_offset = 6
/obj/item/clothing/head/helmet/plate/crusader/prophet/red
icon_state = "prophet-red"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/plate/crusader/prophet/blue
icon_state = "prophet-blue"
+ inhand_icon_state = null
//Structure conversion staff
/obj/item/godstaff
diff --git a/code/game/objects/items/stacks/bscrystal.dm b/code/game/objects/items/stacks/bscrystal.dm
index 8f2b25a79f2..5576f378f30 100644
--- a/code/game/objects/items/stacks/bscrystal.dm
+++ b/code/game/objects/items/stacks/bscrystal.dm
@@ -66,7 +66,7 @@
name = "bluespace polycrystal"
icon = 'icons/obj/telescience.dmi'
icon_state = "polycrystal"
- inhand_icon_state = "sheet-polycrystal"
+ inhand_icon_state = null
singular_name = "bluespace polycrystal"
desc = "A stable polycrystal, made of fused-together bluespace crystals. You could probably break one off."
mats_per_unit = list(/datum/material/bluespace=MINERAL_MATERIAL_AMOUNT)
diff --git a/code/game/objects/items/stacks/medical.dm b/code/game/objects/items/stacks/medical.dm
index bd7c9e6e236..e373e3194d0 100644
--- a/code/game/objects/items/stacks/medical.dm
+++ b/code/game/objects/items/stacks/medical.dm
@@ -368,6 +368,7 @@
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "bone-gel"
+ inhand_icon_state = "bone-gel"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
diff --git a/code/game/objects/items/stacks/sheets/hot_ice.dm b/code/game/objects/items/stacks/sheets/hot_ice.dm
index 142d6c586f8..69b96bc541f 100644
--- a/code/game/objects/items/stacks/sheets/hot_ice.dm
+++ b/code/game/objects/items/stacks/sheets/hot_ice.dm
@@ -1,7 +1,7 @@
/obj/item/stack/sheet/hot_ice
name = "hot ice"
icon_state = "hot-ice"
- inhand_icon_state = "hot-ice"
+ inhand_icon_state = null
singular_name = "hot ice piece"
icon = 'icons/obj/stack_objects.dmi'
mats_per_unit = list(/datum/material/hot_ice=MINERAL_MATERIAL_AMOUNT)
diff --git a/code/game/objects/items/stacks/sheets/leather.dm b/code/game/objects/items/stacks/sheets/leather.dm
index 98d65b26a72..6503b655f05 100644
--- a/code/game/objects/items/stacks/sheets/leather.dm
+++ b/code/game/objects/items/stacks/sheets/leather.dm
@@ -2,7 +2,7 @@
name = "hide"
desc = "Something went wrong."
icon_state = "sheet-hide"
- inhand_icon_state = "sheet-hide"
+ inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/animalhide
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(human_recipes, list( \
desc = "The by-product of corgi farming."
singular_name = "corgi hide piece"
icon_state = "sheet-corgi"
- inhand_icon_state = "sheet-corgi"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/corgi
GLOBAL_LIST_INIT(gondola_recipes, list ( \
@@ -47,7 +47,7 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
desc = "A thin layer of mothroach hide."
singular_name = "mothroach hide piece"
icon_state = "sheet-mothroach"
- inhand_icon_state = "sheet-mothroach"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/mothroach
/obj/item/stack/sheet/animalhide/gondola
@@ -55,7 +55,7 @@ GLOBAL_LIST_INIT(gondola_recipes, list ( \
desc = "The extremely valuable product of gondola hunting."
singular_name = "gondola hide piece"
icon_state = "sheet-gondola"
- inhand_icon_state = "sheet-gondola"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/gondola
/obj/item/stack/sheet/animalhide/gondola/get_main_recipes()
@@ -75,7 +75,7 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
desc = "The by-product of cat farming."
singular_name = "cat hide piece"
icon_state = "sheet-cat"
- inhand_icon_state = "sheet-cat"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/cat
/obj/item/stack/sheet/animalhide/monkey
@@ -83,7 +83,7 @@ GLOBAL_LIST_INIT(corgi_recipes, list ( \
desc = "The by-product of monkey farming."
singular_name = "monkey hide piece"
icon_state = "sheet-monkey"
- inhand_icon_state = "sheet-monkey"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/monkey
GLOBAL_LIST_INIT(monkey_recipes, list ( \
@@ -100,7 +100,7 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
desc = "Sssssss..."
singular_name = "lizard skin piece"
icon_state = "sheet-lizard"
- inhand_icon_state = "sheet-lizard"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/lizard
/obj/item/stack/sheet/animalhide/xeno
@@ -108,7 +108,7 @@ GLOBAL_LIST_INIT(monkey_recipes, list ( \
desc = "The skin of a terrible creature."
singular_name = "alien hide piece"
icon_state = "sheet-xeno"
- inhand_icon_state = "sheet-xeno"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/xeno
GLOBAL_LIST_INIT(xeno_recipes, list ( \
@@ -147,7 +147,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "This hide was stripped of its hair, but still needs washing and tanning."
singular_name = "hairless hide piece"
icon_state = "sheet-hairlesshide"
- inhand_icon_state = "sheet-hairlesshide"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/hairlesshide
/obj/item/stack/sheet/wethide
@@ -155,7 +155,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "This hide has been cleaned but still needs to be dried."
singular_name = "wet hide piece"
icon_state = "sheet-wetleather"
- inhand_icon_state = "sheet-wetleather"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/wethide
/// Reduced when exposed to high temperatures
var/wetness = 30
@@ -182,7 +182,7 @@ GLOBAL_LIST_INIT(xeno_recipes, list ( \
desc = "The by-product of mob grinding."
singular_name = "leather piece"
icon_state = "sheet-leather"
- inhand_icon_state = "sheet-leather"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/leather
GLOBAL_LIST_INIT(leather_recipes, list ( \
@@ -307,7 +307,7 @@ GLOBAL_LIST_INIT(sinew_recipes, list ( \
desc = "The scaly skin of a space carp. It looks quite beatiful when detached from the foul creature who once wore it."
singular_name = "carp scale"
icon_state = "sheet-carp"
- inhand_icon_state = "sheet-carp"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/carp
GLOBAL_LIST_INIT(carp_recipes, list ( \
diff --git a/code/game/objects/items/stacks/sheets/mineral.dm b/code/game/objects/items/stacks/sheets/mineral.dm
index 3c661a4b6d1..0d9076ff7c1 100644
--- a/code/game/objects/items/stacks/sheets/mineral.dm
+++ b/code/game/objects/items/stacks/sheets/mineral.dm
@@ -34,7 +34,7 @@ GLOBAL_LIST_INIT(sandstone_recipes, list ( \
desc = "This appears to be a combination of both sand and stone."
singular_name = "sandstone brick"
icon_state = "sheet-sandstone"
- inhand_icon_state = "sheet-sandstone"
+ inhand_icon_state = null
throw_speed = 3
throw_range = 5
mats_per_unit = list(/datum/material/sandstone=MINERAL_MATERIAL_AMOUNT)
@@ -240,7 +240,7 @@ GLOBAL_LIST_INIT(silver_recipes, list ( \
/obj/item/stack/sheet/mineral/bananium
name = "bananium"
icon_state = "sheet-bananium"
- inhand_icon_state = "sheet-bananium"
+ inhand_icon_state = null
singular_name = "bananium sheet"
sheettype = "bananium"
mats_per_unit = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT)
@@ -331,7 +331,7 @@ GLOBAL_LIST_INIT(plastitanium_recipes, list ( \
/obj/item/stack/sheet/mineral/snow
name = "snow"
icon_state = "sheet-snow"
- inhand_icon_state = "sheet-snow"
+ inhand_icon_state = null
mats_per_unit = list(/datum/material/snow = MINERAL_MATERIAL_AMOUNT)
singular_name = "snow block"
force = 1
@@ -475,7 +475,7 @@ GLOBAL_LIST_INIT(metalhydrogen_recipes, list(
/obj/item/stack/sheet/mineral/metal_hydrogen
name = "metal hydrogen"
icon_state = "sheet-metalhydrogen"
- inhand_icon_state = "sheet-metalhydrogen"
+ inhand_icon_state = null
singular_name = "metal hydrogen sheet"
w_class = WEIGHT_CLASS_NORMAL
resistance_flags = FIRE_PROOF | LAVA_PROOF | ACID_PROOF | INDESTRUCTIBLE
diff --git a/code/game/objects/items/stacks/sheets/sheet_types.dm b/code/game/objects/items/stacks/sheets/sheet_types.dm
index 891a7113a27..ee94ba4938e 100644
--- a/code/game/objects/items/stacks/sheets/sheet_types.dm
+++ b/code/game/objects/items/stacks/sheets/sheet_types.dm
@@ -434,7 +434,7 @@ GLOBAL_LIST_INIT(cloth_recipes, list ( \
desc = "Is it cotton? Linen? Denim? Burlap? Canvas? You can't tell."
singular_name = "cloth roll"
icon_state = "sheet-cloth"
- inhand_icon_state = "sheet-cloth"
+ inhand_icon_state = null
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
@@ -465,7 +465,7 @@ GLOBAL_LIST_INIT(durathread_recipes, list ( \
desc = "A fabric sown from incredibly durable threads, known for its usefulness in armor production."
singular_name = "durathread roll"
icon_state = "sheet-durathread"
- inhand_icon_state = "sheet-cloth"
+ inhand_icon_state = null
resistance_flags = FLAMMABLE
force = 0
throwforce = 0
@@ -674,7 +674,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects."
singular_name = "lesser gem"
icon_state = "sheet-lessergem"
- inhand_icon_state = "sheet-lessergem"
+ inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/lessergem
@@ -683,7 +683,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
desc = "Rare kind of gems which are only gained by blood sacrifice to minor deities. They are needed in crafting powerful objects."
singular_name = "greater gem"
icon_state = "sheet-greatergem"
- inhand_icon_state = "sheet-greatergem"
+ inhand_icon_state = null
novariants = TRUE
merge_type = /obj/item/stack/sheet/greatergem
@@ -694,7 +694,7 @@ GLOBAL_LIST_INIT(bronze_recipes, list ( \
name = "bones"
icon = 'icons/obj/stack_objects.dmi'
icon_state = "bone"
- inhand_icon_state = "sheet-bone"
+ inhand_icon_state = null
mats_per_unit = list(/datum/material/bone = MINERAL_MATERIAL_AMOUNT)
singular_name = "bone"
desc = "Someone's been drinking their milk."
diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm
index 78f6362863f..f627aadacfa 100644
--- a/code/game/objects/items/stacks/tiles/tile_types.dm
+++ b/code/game/objects/items/stacks/tiles/tile_types.dm
@@ -119,7 +119,7 @@
singular_name = "fairygrass floor tile"
desc = "A patch of odd, glowing blue grass."
icon_state = "tile_fairygrass"
- inhand_icon_state = "tile-fairygrass"
+ inhand_icon_state = null
turf_type = /turf/open/floor/grass/fairy
resistance_flags = FLAMMABLE
merge_type = /obj/item/stack/tile/fairygrass
diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm
index 6ccb8784e9c..de2120c26be 100644
--- a/code/game/objects/items/storage/backpack.dm
+++ b/code/game/objects/items/storage/backpack.dm
@@ -671,7 +671,7 @@
name = "wings"
desc = "Granted to the henchmen who deserve it. This probably doesn't include you."
icon_state = "henchmen"
- inhand_icon_state = "henchmen"
+ inhand_icon_state = null
/obj/item/storage/backpack/duffelbag/cops
name = "police bag"
diff --git a/code/game/objects/items/storage/bags.dm b/code/game/objects/items/storage/bags.dm
index 592473d6f21..d6cc550ecb1 100644
--- a/code/game/objects/items/storage/bags.dm
+++ b/code/game/objects/items/storage/bags.dm
@@ -511,7 +511,7 @@
name = "harpoon quiver"
desc = "A quiver for holding harpoons."
icon_state = "quiver"
- inhand_icon_state = "quiver"
+ inhand_icon_state = null
worn_icon_state = "harpoon_quiver"
/obj/item/storage/bag/harpoon_quiver/Initialize(mapload)
diff --git a/code/game/objects/items/storage/belt.dm b/code/game/objects/items/storage/belt.dm
index c23c69750ee..bbfa614151f 100644
--- a/code/game/objects/items/storage/belt.dm
+++ b/code/game/objects/items/storage/belt.dm
@@ -475,7 +475,7 @@
name = "cummerbund"
desc = "A pleated sash that pairs well with a suit jacket."
icon_state = "cummerbund"
- inhand_icon_state = "cummerbund"
+ inhand_icon_state = null
worn_icon_state = "cummerbund"
/obj/item/storage/belt/military
@@ -699,7 +699,7 @@
name = "fannypack"
desc = "A dorky fannypack for keeping small items in."
icon_state = "fannypack_leather"
- inhand_icon_state = "fannypack_leather"
+ inhand_icon_state = null
worn_icon_state = "fannypack_leather"
dying_key = DYE_REGISTRY_FANNYPACK
custom_price = PAYCHECK_CREW * 2
@@ -712,68 +712,58 @@
/obj/item/storage/belt/fannypack/black
name = "black fannypack"
icon_state = "fannypack_black"
- inhand_icon_state = "fannypack_black"
worn_icon_state = "fannypack_black"
/obj/item/storage/belt/fannypack/red
name = "red fannypack"
icon_state = "fannypack_red"
- inhand_icon_state = "fannypack_red"
worn_icon_state = "fannypack_red"
/obj/item/storage/belt/fannypack/purple
name = "purple fannypack"
icon_state = "fannypack_purple"
- inhand_icon_state = "fannypack_purple"
worn_icon_state = "fannypack_purple"
/obj/item/storage/belt/fannypack/blue
name = "blue fannypack"
icon_state = "fannypack_blue"
- inhand_icon_state = "fannypack_blue"
worn_icon_state = "fannypack_blue"
/obj/item/storage/belt/fannypack/orange
name = "orange fannypack"
icon_state = "fannypack_orange"
- inhand_icon_state = "fannypack_orange"
worn_icon_state = "fannypack_orange"
/obj/item/storage/belt/fannypack/white
name = "white fannypack"
icon_state = "fannypack_white"
- inhand_icon_state = "fannypack_white"
worn_icon_state = "fannypack_white"
/obj/item/storage/belt/fannypack/green
name = "green fannypack"
icon_state = "fannypack_green"
- inhand_icon_state = "fannypack_green"
worn_icon_state = "fannypack_green"
/obj/item/storage/belt/fannypack/pink
name = "pink fannypack"
icon_state = "fannypack_pink"
- inhand_icon_state = "fannypack_pink"
worn_icon_state = "fannypack_pink"
/obj/item/storage/belt/fannypack/cyan
name = "cyan fannypack"
icon_state = "fannypack_cyan"
- inhand_icon_state = "fannypack_cyan"
worn_icon_state = "fannypack_cyan"
/obj/item/storage/belt/fannypack/yellow
name = "yellow fannypack"
icon_state = "fannypack_yellow"
- inhand_icon_state = "fannypack_yellow"
worn_icon_state = "fannypack_yellow"
/obj/item/storage/belt/sabre
name = "sabre sheath"
desc = "An ornate sheath designed to hold an officer's blade."
icon_state = "sheath"
- inhand_icon_state = "sheath"
+ inhand_icon_state = null
worn_icon_state = "sheath"
w_class = WEIGHT_CLASS_BULKY
@@ -824,7 +814,7 @@
name = "botanical belt"
desc = "A belt used to hold most hydroponics supplies. Suprisingly, not green."
icon_state = "plantbelt"
- inhand_icon_state = "plantbelt"
+ inhand_icon_state = "championbelt"
worn_icon_state = "plantbelt"
content_overlays = TRUE
diff --git a/code/game/objects/items/storage/boxes/food_boxes.dm b/code/game/objects/items/storage/boxes/food_boxes.dm
index 785d5c55b26..e66130ee805 100644
--- a/code/game/objects/items/storage/boxes/food_boxes.dm
+++ b/code/game/objects/items/storage/boxes/food_boxes.dm
@@ -50,7 +50,7 @@
name = "paper sack"
desc = "A sack neatly crafted out of paper."
icon_state = "paperbag_None"
- inhand_icon_state = "paperbag_None"
+ inhand_icon_state = null
illustration = null
resistance_flags = FLAMMABLE
foldable = null
diff --git a/code/game/objects/items/storage/boxes/service_boxes.dm b/code/game/objects/items/storage/boxes/service_boxes.dm
index bbb6a935003..a0b8869d56b 100644
--- a/code/game/objects/items/storage/boxes/service_boxes.dm
+++ b/code/game/objects/items/storage/boxes/service_boxes.dm
@@ -76,6 +76,8 @@
icon = 'icons/obj/cigarettes.dmi'
icon_state = "matchbox"
inhand_icon_state = "zippo"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "lighter"
w_class = WEIGHT_CLASS_TINY
slot_flags = ITEM_SLOT_BELT
diff --git a/code/game/objects/items/storage/fancy.dm b/code/game/objects/items/storage/fancy.dm
index a6b42d23826..99e83d4b244 100644
--- a/code/game/objects/items/storage/fancy.dm
+++ b/code/game/objects/items/storage/fancy.dm
@@ -154,7 +154,7 @@
icon = 'icons/obj/candle.dmi'
icon_state = "candlebox5"
base_icon_state = "candlebox"
- inhand_icon_state = "candlebox5"
+ inhand_icon_state = null
worn_icon_state = "cigpack"
throwforce = 2
slot_flags = ITEM_SLOT_BELT
@@ -480,11 +480,11 @@
SHOULD_CALL_PARENT(FALSE)
if(!contents.len)
icon_state = "[base_icon_state]_empty"
- else
+ else
if(contents.len < 5)
icon_state = "[base_icon_state]_[contents.len]"
- else
+ else
icon_state = base_icon_state
return
-
+
diff --git a/code/game/objects/items/storage/sixpack.dm b/code/game/objects/items/storage/sixpack.dm
index 82f528c1380..f73970be2a7 100644
--- a/code/game/objects/items/storage/sixpack.dm
+++ b/code/game/objects/items/storage/sixpack.dm
@@ -4,8 +4,8 @@
icon = 'icons/obj/storage/storage.dmi'
icon_state = "canholder"
inhand_icon_state = "cola"
- lefthand_file = 'icons/mob/inhands/items/food_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/items/food_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
custom_materials = list(/datum/material/plastic = 1200)
max_integrity = 500
diff --git a/code/game/objects/items/storage/toolbox.dm b/code/game/objects/items/storage/toolbox.dm
index 27471897f42..afc2e605a32 100644
--- a/code/game/objects/items/storage/toolbox.dm
+++ b/code/game/objects/items/storage/toolbox.dm
@@ -146,17 +146,20 @@
material_flags = NONE
/obj/item/storage/toolbox/electrical/PopulateContents()
- var/pickedcolor = pick("red","yellow","green","blue","pink","orange","cyan","white")
+ var/pickedcolor = pick(GLOB.cable_colors)
new /obj/item/screwdriver(src)
new /obj/item/wirecutters(src)
new /obj/item/t_scanner(src)
new /obj/item/crowbar(src)
- new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
- new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
+ var/obj/item/stack/cable_coil/new_cable_one = new(src, MAXCOIL)
+ new_cable_one.set_cable_color(pickedcolor)
+ var/obj/item/stack/cable_coil/new_cable_two = new(src, MAXCOIL)
+ new_cable_two.set_cable_color(pickedcolor)
if(prob(5))
new /obj/item/clothing/gloves/color/yellow(src)
else
- new /obj/item/stack/cable_coil(src,MAXCOIL,pickedcolor)
+ var/obj/item/stack/cable_coil/new_cable_three = new(src, MAXCOIL)
+ new_cable_three.set_cable_color(pickedcolor)
/obj/item/storage/toolbox/syndicate
name = "suspicious looking toolbox"
@@ -206,7 +209,7 @@
/obj/item/storage/toolbox/artistic/Initialize(mapload)
. = ..()
atom_storage.max_total_storage = 20
- atom_storage.max_slots = 10
+ atom_storage.max_slots = 11
/obj/item/storage/toolbox/artistic/PopulateContents()
new /obj/item/storage/crayons(src)
@@ -219,6 +222,7 @@
new /obj/item/stack/pipe_cleaner_coil/orange(src)
new /obj/item/stack/pipe_cleaner_coil/cyan(src)
new /obj/item/stack/pipe_cleaner_coil/white(src)
+ new /obj/item/stack/pipe_cleaner_coil/brown(src)
/obj/item/storage/toolbox/ammo
name = "ammo box"
diff --git a/code/game/objects/items/tanks/jetpack.dm b/code/game/objects/items/tanks/jetpack.dm
index 5639d70fd8e..102d6ace895 100644
--- a/code/game/objects/items/tanks/jetpack.dm
+++ b/code/game/objects/items/tanks/jetpack.dm
@@ -166,7 +166,7 @@
name = "jet harness (oxygen)"
desc = "A lightweight tactical harness, used by those who don't want to be weighed down by traditional jetpacks."
icon_state = "jetpack-mini"
- inhand_icon_state = "jetpack-mini"
+ inhand_icon_state = "jetpack-black"
volume = 40
throw_range = 7
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/game/objects/items/theft_tools.dm b/code/game/objects/items/theft_tools.dm
index c5cd3de9d79..c45fbb386b1 100644
--- a/code/game/objects/items/theft_tools.dm
+++ b/code/game/objects/items/theft_tools.dm
@@ -161,7 +161,7 @@
name = "supermatter sliver"
desc = "A tiny, highly volatile sliver of a supermatter crystal. Do not handle without protection!"
icon_state = "supermatter_sliver"
- inhand_icon_state = "supermattersliver"
+ inhand_icon_state = null //touching it dusts you, so no need for an inhand icon.
pulseicon = "supermatter_sliver_pulse"
layer = ABOVE_MOB_LAYER
plane = GAME_PLANE_UPPER
diff --git a/code/game/objects/items/tools/crowbar.dm b/code/game/objects/items/tools/crowbar.dm
index dccd8c3a708..613c7f6571b 100644
--- a/code/game/objects/items/tools/crowbar.dm
+++ b/code/game/objects/items/tools/crowbar.dm
@@ -3,6 +3,7 @@
desc = "A small crowbar. This handy tool is useful for lots of things, such as prying floor tiles or opening unpowered doors."
icon = 'icons/obj/tools.dmi'
icon_state = "crowbar"
+ inhand_icon_state = "crowbar"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
usesound = 'sound/items/crowbar.ogg'
@@ -30,6 +31,7 @@
/obj/item/crowbar/red
icon_state = "crowbar_red"
+ inhand_icon_state = "crowbar_red"
force = 8
/obj/item/crowbar/abductor
diff --git a/code/game/objects/items/tools/wirecutters.dm b/code/game/objects/items/tools/wirecutters.dm
index f8402111f25..6d43fa5efa9 100644
--- a/code/game/objects/items/tools/wirecutters.dm
+++ b/code/game/objects/items/tools/wirecutters.dm
@@ -9,6 +9,9 @@
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
greyscale_config = /datum/greyscale_config/wirecutters
+ greyscale_config_belt = /datum/greyscale_config/wirecutters_belt_overlay
+ greyscale_config_inhand_left = /datum/greyscale_config/wirecutter_inhand_left
+ greyscale_config_inhand_right = /datum/greyscale_config/wirecutter_inhand_right
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT
diff --git a/code/game/objects/items/tools/wrench.dm b/code/game/objects/items/tools/wrench.dm
index 874b979c80c..adc26bab293 100644
--- a/code/game/objects/items/tools/wrench.dm
+++ b/code/game/objects/items/tools/wrench.dm
@@ -3,6 +3,7 @@
desc = "A wrench with common uses. Can be found in your hand."
icon = 'icons/obj/tools.dmi'
icon_state = "wrench"
+ inhand_icon_state = "wrench"
worn_icon_state = "wrench"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
@@ -32,7 +33,6 @@
name = "alien wrench"
desc = "A polarized wrench. It causes anything placed between the jaws to turn."
icon = 'icons/obj/abductor.dmi'
- icon_state = "wrench"
belt_icon_state = "wrench_alien"
custom_materials = list(/datum/material/iron = 5000, /datum/material/silver = 2500, /datum/material/plasma = 1000, /datum/material/titanium = 2000, /datum/material/diamond = 2000)
usesound = 'sound/effects/empulse.ogg'
@@ -43,6 +43,7 @@
name = "medical wrench"
desc = "A medical wrench with common(medical?) uses. Can be found in your hand."
icon_state = "wrench_medical"
+ inhand_icon_state = "wrench_medical"
force = 2 //MEDICAL
throwforce = 4
attack_verb_continuous = list("heals", "medicals", "taps", "pokes", "analyzes") //"cobbyed"
@@ -85,6 +86,7 @@
name = "combat wrench"
desc = "It's like a normal wrench but edgier. Can be found on the battlefield."
icon_state = "wrench_combat"
+ inhand_icon_state = "wrench_combat"
belt_icon_state = "wrench_combat"
attack_verb_continuous = list("devastates", "brutalizes", "commits a war crime against", "obliterates", "humiliates")
attack_verb_simple = list("devastate", "brutalize", "commit a war crime against", "obliterate", "humiliate")
diff --git a/code/game/objects/items/weaponry.dm b/code/game/objects/items/weaponry.dm
index 2d32292c872..703c02e2dee 100644
--- a/code/game/objects/items/weaponry.dm
+++ b/code/game/objects/items/weaponry.dm
@@ -223,11 +223,13 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
if(10)
user.visible_message(span_warning("[user]'s eyes light up with a vengeful fire!"), \
span_userdanger("YOU FEEL THE POWER OF VALHALLA FLOWING THROUGH YOU! THERE CAN BE ONLY ONE!!!"))
- user.update_icons()
new_name = "GORE-DRENCHED CLAYMORE OF [pick("THE WHIMSICAL SLAUGHTER", "A THOUSAND SLAUGHTERED CATTLE", "GLORY AND VALHALLA", "ANNIHILATION", "OBLITERATION")]"
icon_state = "claymore_gold"
inhand_icon_state = "cultblade"
+ lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
remove_atom_colour(ADMIN_COLOUR_PRIORITY)
+ user.update_held_items()
name = new_name
playsound(user, 'sound/items/screwdriver2.ogg', 50, TRUE)
@@ -342,7 +344,7 @@ for further reading, please see: https://github.com/tgstation/tgstation/pull/301
name = "throwing star"
desc = "An ancient weapon still used to this day, due to its ease of lodging itself into its victim's body parts."
icon_state = "throwingstar"
- inhand_icon_state = "eshield0"
+ inhand_icon_state = "eshield"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
force = 2
diff --git a/code/game/objects/structures/tables_racks.dm b/code/game/objects/structures/tables_racks.dm
index 98317ba3b7f..2819e3ba2dc 100644
--- a/code/game/objects/structures/tables_racks.dm
+++ b/code/game/objects/structures/tables_racks.dm
@@ -841,6 +841,7 @@
desc = "Parts of a rack."
icon = 'icons/obj/weapons/items_and_weapons.dmi'
icon_state = "rack_parts"
+ inhand_icon_state = "rack_parts"
flags_1 = CONDUCT_1
custom_materials = list(/datum/material/iron=2000)
var/building = FALSE
diff --git a/code/game/objects/structures/watercloset.dm b/code/game/objects/structures/watercloset.dm
index a701fe39896..9f8e6dd3a8e 100644
--- a/code/game/objects/structures/watercloset.dm
+++ b/code/game/objects/structures/watercloset.dm
@@ -248,6 +248,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/urinal, 32)
icon = 'icons/obj/watercloset.dmi'
icon_state = "rubberducky"
inhand_icon_state = "rubberducky"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "duck"
/obj/structure/sink
diff --git a/code/modules/admin/verbs/BrokenInhands.dm b/code/modules/admin/verbs/BrokenInhands.dm
deleted file mode 100644
index ebdeb24ebcb..00000000000
--- a/code/modules/admin/verbs/BrokenInhands.dm
+++ /dev/null
@@ -1,35 +0,0 @@
-/proc/getbrokeninhands()
- var/text
- for(var/A in typesof(/obj/item))
- var/obj/item/O = new A( locate(1,1,1) )
- if(!O)
- continue
- var/icon/IL = new(O.lefthand_file)
- var/list/Lstates = IL.IconStates()
- var/icon/IR = new(O.righthand_file)
- var/list/Rstates = IR.IconStates()
- var/icon/J = new(O.icon)
- var/list/istates = J.IconStates()
- if(!Lstates.Find(O.icon_state) && !Lstates.Find(O.inhand_icon_state))
- if(O.icon_state)
- text += "[O.type] WANTS IN LEFT HAND CALLED\n\"[O.icon_state]\".\n"
- if(!Rstates.Find(O.icon_state) && !Rstates.Find(O.inhand_icon_state))
- if(O.icon_state)
- text += "[O.type] WANTS IN RIGHT HAND CALLED\n\"[O.icon_state]\".\n"
-
-
- if(O.icon_state)
- if(!istates.Find(O.icon_state))
- text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.icon_state]\" IN \"[O.icon]\"\n"
- if(O.inhand_icon_state)
- if(!istates.Find(O.inhand_icon_state))
- text += "[O.type] MISSING NORMAL ICON CALLED\n\"[O.inhand_icon_state]\" IN \"[O.icon]\"\n"
- text+="\n"
- qdel(O)
- if(text)
- var/F = file("broken_icons.txt")
- fdel(F)
- WRITE_FILE(F, text)
- to_chat(world, "Completely successfully and written to [F]", confidential = TRUE)
-
-
diff --git a/code/modules/antagonists/abductor/equipment/abduction_gear.dm b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
index 1ad80f39d9b..0be54a14f70 100644
--- a/code/modules/antagonists/abductor/equipment/abduction_gear.dm
+++ b/code/modules/antagonists/abductor/equipment/abduction_gear.dm
@@ -642,7 +642,6 @@ Congratulations! You are now trained for invasive xenobiology research!"}
desc = "An advanced alien headset designed to monitor communications of human space stations. Why does it have a microphone? No one knows."
icon = 'icons/obj/abductor.dmi'
icon_state = "abductor_headset"
- inhand_icon_state = "abductor_headset"
keyslot2 = /obj/item/encryptionkey/heads/captain
/obj/item/radio/headset/abductor/Initialize(mapload)
@@ -730,7 +729,7 @@ Congratulations! You are now trained for invasive xenobiology research!"}
name = "agent headgear"
desc = "Abduct with style - spiky style. Prevents digital tracking."
icon_state = "alienhelmet"
- inhand_icon_state = "alienhelmet"
+ inhand_icon_state = null
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
/obj/item/clothing/head/helmet/abductor/equipped(mob/living/user, slot)
diff --git a/code/modules/antagonists/changeling/powers/mutations.dm b/code/modules/antagonists/changeling/powers/mutations.dm
index ba8081ade33..36c480dfcbe 100644
--- a/code/modules/antagonists/changeling/powers/mutations.dm
+++ b/code/modules/antagonists/changeling/powers/mutations.dm
@@ -502,6 +502,7 @@
/obj/item/clothing/head/helmet/space/changeling
name = "flesh mass"
icon_state = "lingspacehelmet"
+ inhand_icon_state = null
desc = "A covering of pressure and temperature-resistant organic tissue with a glass-like chitin front."
item_flags = DROPDEL
clothing_flags = STOPSPRESSUREDAMAGE
@@ -534,6 +535,7 @@
name = "chitinous mass"
desc = "A tough, hard covering of black chitin."
icon_state = "lingarmor"
+ inhand_icon_state = null
item_flags = DROPDEL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 10, BIO = 10, FIRE = 90, ACID = 90)
@@ -551,6 +553,7 @@
name = "chitinous mass"
desc = "A tough, hard covering of black chitin with transparent chitin in front."
icon_state = "lingarmorhelmet"
+ inhand_icon_state = null
item_flags = DROPDEL
armor = list(MELEE = 40, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 10, BIO = 10, FIRE = 90, ACID = 90)
flags_inv = HIDEEARS|HIDEHAIR|HIDEEYES|HIDEFACIALHAIR|HIDEFACE|HIDESNOUT
diff --git a/code/modules/antagonists/cult/cult_bastard_sword.dm b/code/modules/antagonists/cult/cult_bastard_sword.dm
index dd640725d00..8401adc8620 100644
--- a/code/modules/antagonists/cult/cult_bastard_sword.dm
+++ b/code/modules/antagonists/cult/cult_bastard_sword.dm
@@ -16,6 +16,7 @@
attack_verb_simple = list("attack", "slash", "stab", "slice", "tear", "lacerate", "rip", "dice", "rend")
icon = 'icons/obj/cult/items_and_weapons.dmi'
icon_state = "cultbastard"
+ inhand_icon_state = "cultbastard"
hitsound = 'sound/weapons/bladeslice.ogg'
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
@@ -40,7 +41,7 @@
start_spin_message = span_danger("%USER begins swinging the sword around with inhuman strength!"), \
end_spin_message = span_warning("%USER's inhuman strength dissipates and the sword's runes grow cold!") \
)
-
+
/obj/item/cult_bastard/proc/on_spin(mob/living/user, duration)
var/oldcolor = user.color
user.color = "#ff0000"
diff --git a/code/modules/antagonists/cult/cult_items.dm b/code/modules/antagonists/cult/cult_items.dm
index 2e89b416ec8..f0de743e91c 100644
--- a/code/modules/antagonists/cult/cult_items.dm
+++ b/code/modules/antagonists/cult/cult_items.dm
@@ -174,6 +174,7 @@ Striking a noncultist, however, will tear their flesh."}
/obj/item/clothing/head/hooded/cult_hoodie
name = "ancient cultist hood"
icon_state = "culthood"
+ inhand_icon_state = "culthood"
desc = "A torn, dust-caked hood. Strange letters line the inside."
flags_inv = HIDEFACE|HIDEHAIR|HIDEEARS
flags_cover = HEADCOVERSEYES
@@ -205,13 +206,13 @@ Striking a noncultist, however, will tear their flesh."}
name = "cultist hood"
desc = "An armored hood worn by the followers of Nar'Sie."
icon_state = "cult_hoodalt"
- inhand_icon_state = "cult_hoodalt"
+ inhand_icon_state = null
/obj/item/clothing/suit/hooded/cultrobes/alt
name = "cultist robes"
desc = "An armored set of robes worn by the followers of Nar'Sie."
icon_state = "cultrobesalt"
- inhand_icon_state = "cultrobesalt"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/alt
/obj/item/clothing/suit/hooded/cultrobes/alt/ghost
@@ -225,7 +226,7 @@ Striking a noncultist, however, will tear their flesh."}
/obj/item/clothing/head/magus
name = "magus helm"
icon_state = "magus"
- inhand_icon_state = "magus"
+ inhand_icon_state = null
desc = "A helm worn by the followers of Nar'Sie."
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEARS|HIDEEYES|HIDESNOUT
armor = list(MELEE = 50, BULLET = 30, LASER = 50,ENERGY = 50, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10)
@@ -237,7 +238,7 @@ Striking a noncultist, however, will tear their flesh."}
icon_state = "magusred"
icon = 'icons/obj/clothing/suits/wizard.dmi'
worn_icon = 'icons/mob/clothing/suits/wizard.dmi'
- inhand_icon_state = "magusred"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/tome, /obj/item/melee/cultblade)
armor = list(MELEE = 50, BULLET = 30, LASER = 50,ENERGY = 50, BOMB = 25, BIO = 10, FIRE = 10, ACID = 10)
@@ -247,7 +248,7 @@ Striking a noncultist, however, will tear their flesh."}
name = "\improper Nar'Sien hardened armor"
desc = "A heavily-armored exosuit worn by warriors of the Nar'Sien cult. It can withstand hard vacuum."
icon_state = "cult_armor"
- inhand_icon_state = "cult_armor"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_BULKY
allowed = list(/obj/item/tome, /obj/item/melee/cultblade, /obj/item/tank/internals)
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
@@ -262,7 +263,7 @@ Striking a noncultist, however, will tear their flesh."}
name = "\improper Nar'Sien hardened helmet"
desc = "A heavily-armored helmet worn by warriors of the Nar'Sien cult. It can withstand hard vacuum."
icon_state = "cult_helmet"
- inhand_icon_state = "cult_helmet"
+ inhand_icon_state = null
armor = list(MELEE = 50, BULLET = 40, LASER = 50, ENERGY = 60, BOMB = 50, BIO = 100, FIRE = 100, ACID = 100)
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | PLASMAMAN_HELMET_EXEMPT
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -289,7 +290,7 @@ Striking a noncultist, however, will tear their flesh."}
name = "empowered cultist armor"
desc = "Empowered armor which creates a powerful shield around the user."
icon_state = "cult_armor"
- inhand_icon_state = "cult_armor"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_BULKY
armor = list(MELEE = 50, BULLET = 40, LASER = 50,ENERGY = 50, BOMB = 50, BIO = 30, FIRE = 50, ACID = 60)
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/cult_shield
@@ -506,6 +507,8 @@ Striking a noncultist, however, will tear their flesh."}
light_range = 1
icon_state = "torch"
inhand_icon_state = "torch"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
color = "#ff0000"
on_damage = 15
slot_flags = null
diff --git a/code/modules/antagonists/heretic/items/heretic_armor.dm b/code/modules/antagonists/heretic/items/heretic_armor.dm
index 55d42e0b48c..255919f30b1 100644
--- a/code/modules/antagonists/heretic/items/heretic_armor.dm
+++ b/code/modules/antagonists/heretic/items/heretic_armor.dm
@@ -15,7 +15,7 @@
name = "ominous armor"
desc = "A ragged, dusty set of robes. Strange eyes line the inside."
icon_state = "eldritch_armor"
- inhand_icon_state = "eldritch_armor"
+ inhand_icon_state = null
flags_inv = HIDESHOES|HIDEJUMPSUIT
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
allowed = list(/obj/item/melee/sickly_blade)
@@ -53,7 +53,7 @@
desc = "Black like tar, doesn't reflect any light. Runic symbols line the outside, \
with each flash you loose comprehension of what you are seeing."
icon_state = "void_cloak"
- inhand_icon_state = "void_cloak"
+ inhand_icon_state = null
allowed = list(/obj/item/melee/sickly_blade)
hoodtype = /obj/item/clothing/head/hooded/cult_hoodie/void
flags_inv = NONE
@@ -61,10 +61,10 @@
// slightly worse than normal cult robes
armor = list(MELEE = 30, BULLET = 30, LASER = 30,ENERGY = 30, BOMB = 15, BIO = 0, FIRE = 0, ACID = 0)
alternative_mode = TRUE
-
+
/obj/item/clothing/suit/hooded/cultrobes/void/Initialize(mapload)
. = ..()
-
+
create_storage(type = /datum/storage/pockets/void_cloak)
/obj/item/clothing/suit/hooded/cultrobes/void/Initialize(mapload)
diff --git a/code/modules/antagonists/heretic/items/madness_mask.dm b/code/modules/antagonists/heretic/items/madness_mask.dm
index e620a95c01d..36cbb426c6f 100644
--- a/code/modules/antagonists/heretic/items/madness_mask.dm
+++ b/code/modules/antagonists/heretic/items/madness_mask.dm
@@ -3,7 +3,7 @@
name = "Abyssal Mask"
desc = "A mask created from the suffering of existance. Looking down it's eyes, you notice something gazing back at you."
icon_state = "mad_mask"
- inhand_icon_state = "mad_mask"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
diff --git a/code/modules/antagonists/traitor/datum_traitor.dm b/code/modules/antagonists/traitor/datum_traitor.dm
index 7f1cc05f09e..e4dcc9132c6 100644
--- a/code/modules/antagonists/traitor/datum_traitor.dm
+++ b/code/modules/antagonists/traitor/datum_traitor.dm
@@ -329,7 +329,12 @@
/datum/outfit/traitor/post_equip(mob/living/carbon/human/H, visualsOnly)
var/obj/item/melee/energy/sword/sword = locate() in H.held_items
- sword.icon_state = "e_sword_on_red"
- sword.worn_icon_state = "e_sword_on_red"
+ if(sword.flags_1 & INITIALIZED_1)
+ sword.attack_self()
+ else //Atoms aren't initialized during the screenshots unit test, so we can't call attack_self for it as the sword doesn't have the transforming weapon component to handle the icon changes. The below part is ONLY for the antag screenshots unit test.
+ sword.icon_state = "e_sword_on_red"
+ sword.inhand_icon_state = "e_sword_on_red"
+ sword.worn_icon_state = "e_sword_on_red"
+
+ H.update_held_items()
- H.update_held_items()
diff --git a/code/modules/balloon_alert/balloon_alert.dm b/code/modules/balloon_alert/balloon_alert.dm
index 9464959e31a..ad7832ca735 100644
--- a/code/modules/balloon_alert/balloon_alert.dm
+++ b/code/modules/balloon_alert/balloon_alert.dm
@@ -33,6 +33,7 @@
// I would've made the maptext_height update on its own, but I don't know
// if this would look bad on laggy clients.
/atom/proc/balloon_alert_perform(mob/viewer, text)
+
var/client/viewer_client = viewer.client
if (isnull(viewer_client))
return
diff --git a/code/modules/capture_the_flag/ctf_equipment.dm b/code/modules/capture_the_flag/ctf_equipment.dm
index 598ac1c7986..844e0931bd5 100644
--- a/code/modules/capture_the_flag/ctf_equipment.dm
+++ b/code/modules/capture_the_flag/ctf_equipment.dm
@@ -485,14 +485,14 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/red
name = "red shielded vest"
- inhand_icon_state = "ert_security"
+ inhand_icon_state = null
team_shield_icon = "shield-red"
greyscale_colors = COLOR_VIVID_RED
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/red
name = "light red shielded vest"
- inhand_icon_state = "ert_security"
+ inhand_icon_state = null
team_shield_icon = "shield-red"
greyscale_colors = COLOR_VIVID_RED
@@ -501,14 +501,14 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/blue
name = "blue shielded vest"
- inhand_icon_state = "ert_command"
+ inhand_icon_state = null
team_shield_icon = "shield-old"
greyscale_colors = COLOR_DARK_CYAN
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/blue
name = "light blue shielded vest"
- inhand_icon_state = "ert_command"
+ inhand_icon_state = null
team_shield_icon = "shield-old"
greyscale_colors = COLOR_DARK_CYAN
@@ -517,14 +517,14 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/green
name = "green shielded vest"
- inhand_icon_state = "ert_green"
+ inhand_icon_state = null
team_shield_icon = "shield-green"
greyscale_colors = COLOR_LIME
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/green
name = "light green shielded vest"
- inhand_icon_state = "ert_green"
+ inhand_icon_state = null
team_shield_icon = "shield-green"
greyscale_colors = COLOR_LIME
@@ -533,13 +533,13 @@
// Regular
/obj/item/clothing/suit/armor/vest/ctf/yellow
name = "yellow shielded vest"
- inhand_icon_state = "ert_engineer"
+ inhand_icon_state = null
team_shield_icon = "shield-yellow"
greyscale_colors = COLOR_VIVID_YELLOW
// Light
/obj/item/clothing/suit/armor/vest/ctf/light/yellow
name = "light yellow shielded vest"
- inhand_icon_state = "ert_engineer"
+ inhand_icon_state = null
team_shield_icon = "shield-yellow"
greyscale_colors = COLOR_VIVID_YELLOW
diff --git a/code/modules/clothing/chameleon.dm b/code/modules/clothing/chameleon.dm
index 88f556e459d..b01809d2901 100644
--- a/code/modules/clothing/chameleon.dm
+++ b/code/modules/clothing/chameleon.dm
@@ -468,6 +468,7 @@
name = "insulated gloves"
icon_state = "yellow"
inhand_icon_state = "ygloves"
+ greyscale_colors = null
resistance_flags = NONE
armor = list(MELEE = 10, BULLET = 10, LASER = 10, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 50, ACID = 50)
@@ -598,6 +599,7 @@
/obj/item/clothing/shoes/chameleon
name = "black shoes"
icon_state = "sneakers"
+ inhand_icon_state = "sneakers_back"
greyscale_colors = "#545454#ffffff"
greyscale_config = /datum/greyscale_config/sneakers
greyscale_config_worn = /datum/greyscale_config/sneakers_worn
diff --git a/code/modules/clothing/glasses/_glasses.dm b/code/modules/clothing/glasses/_glasses.dm
index 8167fff5906..2aed402c10f 100644
--- a/code/modules/clothing/glasses/_glasses.dm
+++ b/code/modules/clothing/glasses/_glasses.dm
@@ -182,13 +182,15 @@
name = "eyepatch"
desc = "Yarr."
icon_state = "eyepatch"
- inhand_icon_state = "eyepatch"
+ inhand_icon_state = null
/obj/item/clothing/glasses/monocle
name = "monocle"
desc = "Such a dapper eyepiece!"
icon_state = "monocle"
inhand_icon_state = "headset" // lol
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
/obj/item/clothing/glasses/material
name = "optical material scanner"
@@ -284,13 +286,13 @@
name = "prescription glasses"
desc = "Made by Uncool. Co."
icon_state = "hipster_glasses"
- inhand_icon_state = "hipster_glasses"
+ inhand_icon_state = null
/obj/item/clothing/glasses/regular/circle
name = "circle glasses"
desc = "Why would you wear something so controversial yet so brave?"
icon_state = "circle_glasses"
- inhand_icon_state = "circle_glasses"
+ inhand_icon_state = null
//Here lies green glasses, so ugly they died. RIP
@@ -401,7 +403,7 @@
name = "blind personnel blindfold"
desc = "Indicates that the wearer suffers from blindness."
icon_state = "blindfoldwhite"
- inhand_icon_state = "blindfoldwhite"
+ inhand_icon_state = null
var/colored_before = FALSE
/obj/item/clothing/glasses/blindfold/white/visual_equipped(mob/living/carbon/human/user, slot)
@@ -430,7 +432,7 @@
/obj/item/clothing/glasses/sunglasses/big
desc = "Strangely ancient technology used to help provide rudimentary eye cover. Larger than average enhanced shielding blocks flashes."
icon_state = "bigsunglasses"
- inhand_icon_state = "bigsunglasses"
+ inhand_icon_state = null
/obj/item/clothing/glasses/thermal
name = "optical thermal scanner"
@@ -502,32 +504,32 @@
name = "optical thermal eyepatch"
desc = "An eyepatch with built-in thermal optics."
icon_state = "eyepatch"
- inhand_icon_state = "eyepatch"
+ inhand_icon_state = null
/obj/item/clothing/glasses/cold
name = "cold goggles"
desc = "A pair of goggles meant for low temperatures."
icon_state = "cold"
- inhand_icon_state = "cold"
+ inhand_icon_state = null
/obj/item/clothing/glasses/heat
name = "heat goggles"
desc = "A pair of goggles meant for high temperatures."
icon_state = "heat"
- inhand_icon_state = "heat"
+ inhand_icon_state = null
/obj/item/clothing/glasses/orange
name = "orange glasses"
desc = "A sweet pair of orange shades."
icon_state = "orangeglasses"
- inhand_icon_state = "orangeglasses"
+ inhand_icon_state = null
glass_colour_type = /datum/client_colour/glass_colour/lightorange
/obj/item/clothing/glasses/red
name = "red glasses"
desc = "Hey, you're looking good, senpai!"
icon_state = "redglasses"
- inhand_icon_state = "redglasses"
+ inhand_icon_state = null
glass_colour_type = /datum/client_colour/glass_colour/red
/obj/item/clothing/glasses/geist_gazers
@@ -597,7 +599,7 @@
name = "binoclard lenses"
desc = "Shows you know how to sew a lapel and center a back vent."
icon_state = "binoclard_lenses"
- inhand_icon_state = "binoclard_lenses"
+ inhand_icon_state = null
/obj/item/clothing/glasses/salesman
name = "colored glasses"
@@ -644,10 +646,10 @@
name = "O.S.I. Sunglasses"
desc = "There's no such thing as good news! Just bad news and... weird news.."
icon_state = "osi_glasses"
- inhand_icon_state = "osi_glasses"
+ inhand_icon_state = null
/obj/item/clothing/glasses/phantom
name = "Phantom Thief Mask"
desc = "Lookin' cool."
icon_state = "phantom_glasses"
- inhand_icon_state = "phantom_glasses"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/gloves/_gloves.dm b/code/modules/clothing/gloves/_gloves.dm
index ecf518b319c..1a7428017d3 100644
--- a/code/modules/clothing/gloves/_gloves.dm
+++ b/code/modules/clothing/gloves/_gloves.dm
@@ -3,8 +3,12 @@
gender = PLURAL //Carn: for grammarically correct text-parsing
w_class = WEIGHT_CLASS_SMALL
icon = 'icons/obj/clothing/gloves.dmi'
+ inhand_icon_state = "greyscale_gloves"
lefthand_file = 'icons/mob/inhands/clothing/gloves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/gloves_righthand.dmi'
+ greyscale_colors = null
+ greyscale_config_inhand_left = /datum/greyscale_config/gloves_inhand_left
+ greyscale_config_inhand_right = /datum/greyscale_config/gloves_inhand_right
siemens_coefficient = 0.5
body_parts_covered = HANDS
slot_flags = ITEM_SLOT_GLOVES
diff --git a/code/modules/clothing/gloves/bone.dm b/code/modules/clothing/gloves/bone.dm
index e2b0cfe0760..a03faa0fa88 100644
--- a/code/modules/clothing/gloves/bone.dm
+++ b/code/modules/clothing/gloves/bone.dm
@@ -2,7 +2,7 @@
name = "bone bracers"
desc = "For when you're expecting to get slapped on the wrist. Offers modest protection to your arms."
icon_state = "bracers"
- inhand_icon_state = "bracers"
+ inhand_icon_state = null
strip_delay = 40
equip_delay_other = 20
body_parts_covered = ARMS
diff --git a/code/modules/clothing/gloves/botany.dm b/code/modules/clothing/gloves/botany.dm
index 84ee42e0724..681c3d67153 100644
--- a/code/modules/clothing/gloves/botany.dm
+++ b/code/modules/clothing/gloves/botany.dm
@@ -2,7 +2,8 @@
name = "botanist's leather gloves"
desc = "These leather gloves protect against thorns, barbs, prickles, spikes and other harmful objects of floral origin. They're also quite warm."
icon_state = "leather"
- inhand_icon_state = "ggloves"
+ inhand_icon_state = null
+ greyscale_colors = null
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
diff --git a/code/modules/clothing/gloves/boxing.dm b/code/modules/clothing/gloves/boxing.dm
index 4522a70bfcf..deed90b1696 100644
--- a/code/modules/clothing/gloves/boxing.dm
+++ b/code/modules/clothing/gloves/boxing.dm
@@ -2,19 +2,19 @@
name = "boxing gloves"
desc = "Because you really needed another excuse to punch your crewmates."
icon_state = "boxing"
- inhand_icon_state = "boxing"
+ greyscale_colors = "#f32110"
equip_delay_other = 60
species_exception = list(/datum/species/golem) // now you too can be a golem boxing champion
clothing_traits = list(TRAIT_CHUNKYFINGERS)
/obj/item/clothing/gloves/boxing/green
icon_state = "boxinggreen"
- inhand_icon_state = "boxinggreen"
+ greyscale_colors = "#00a500"
/obj/item/clothing/gloves/boxing/blue
icon_state = "boxingblue"
- inhand_icon_state = "boxingblue"
+ greyscale_colors = "#0074fa"
/obj/item/clothing/gloves/boxing/yellow
icon_state = "boxingyellow"
- inhand_icon_state = "boxingyellow"
+ greyscale_colors = "#d2a800"
diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm
index 5eb48aaba35..b138b01a9d7 100644
--- a/code/modules/clothing/gloves/color.dm
+++ b/code/modules/clothing/gloves/color.dm
@@ -1,5 +1,6 @@
/obj/item/clothing/gloves/color
dying_key = DYE_REGISTRY_GLOVES
+ greyscale_colors = null
/obj/item/clothing/gloves/color/yellow
desc = "These gloves provide protection against electric shock. The thickness of the rubber makes your fingers seem bigger."
@@ -43,7 +44,7 @@
desc = "How're you gonna get 'em off, nerd?"
name = "spray-on insulated gloves"
icon_state = "sprayon"
- inhand_icon_state = "sprayon"
+ inhand_icon_state = null
item_flags = DROPDEL
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
resistance_flags = ACID_PROOF
@@ -72,6 +73,7 @@
name = "budget insulated gloves"
icon_state = "yellow"
inhand_icon_state = "ygloves"
+ greyscale_colors = null
siemens_coefficient = 1 //Set to a default of 1, gets overridden in Initialize()
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 25, FIRE = 0, ACID = 0)
resistance_flags = NONE
@@ -94,6 +96,7 @@
name = "fingerless insulated gloves"
icon_state = "yellowcut"
inhand_icon_state = "ygloves"
+ greyscale_colors = null
clothing_traits = list(TRAIT_FINGERPRINT_PASSTHROUGH)
/obj/item/clothing/gloves/cut/heirloom
@@ -103,7 +106,7 @@
desc = "These gloves are fire-resistant."
name = "black gloves"
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ greyscale_colors = "#2f2e31"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
@@ -115,7 +118,7 @@
name = "fingerless gloves"
desc = "Plain black gloves without fingertips for the hard working."
icon_state = "fingerless"
- inhand_icon_state = "fingerless"
+ greyscale_colors = "#2f2e31"
strip_delay = 40
equip_delay_other = 20
cold_protection = HANDS
@@ -128,13 +131,13 @@
name = "orange gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "orange"
- inhand_icon_state = "orangegloves"
+ greyscale_colors = "#ff9300"
/obj/item/clothing/gloves/color/red
name = "red gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "red"
- inhand_icon_state = "redgloves"
+ greyscale_colors = "#da0000"
/obj/item/clothing/gloves/color/red/insulated
@@ -148,31 +151,32 @@
name = "rainbow gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "rainbow"
- inhand_icon_state = "rainbowgloves"
+ inhand_icon_state = "rainbow_gloves"
+ greyscale_colors = null
/obj/item/clothing/gloves/color/blue
name = "blue gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "blue"
- inhand_icon_state = "bluegloves"
+ greyscale_colors = "#00b7ef"
/obj/item/clothing/gloves/color/purple
name = "purple gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "purple"
- inhand_icon_state = "purplegloves"
+ greyscale_colors = "#cc33ff"
/obj/item/clothing/gloves/color/green
name = "green gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "green"
- inhand_icon_state = "greengloves"
+ greyscale_colors = "#a8e61d"
/obj/item/clothing/gloves/color/grey
name = "grey gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "gray"
- inhand_icon_state = "graygloves"
+ greyscale_colors = "#999999"
// Grey gloves intended to be paired with winter coats (specifically EVA winter coats)
/obj/item/clothing/gloves/color/grey/protects_cold
@@ -188,19 +192,20 @@
name = "light brown gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "lightbrown"
- inhand_icon_state = "lightbrowngloves"
+ greyscale_colors = "#c09f72"
/obj/item/clothing/gloves/color/brown
name = "brown gloves"
desc = "A pair of gloves, they don't look special in any way."
icon_state = "brown"
- inhand_icon_state = "browngloves"
+ greyscale_colors = "#83613d"
/obj/item/clothing/gloves/color/captain
desc = "Regal blue gloves, with a nice gold trim, a diamond anti-shock coating, and an integrated thermal barrier. Swanky."
name = "captain's gloves"
icon_state = "captain"
- inhand_icon_state = "egloves"
+ inhand_icon_state = null
+ greyscale_colors = null
siemens_coefficient = 0
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
@@ -214,7 +219,8 @@
desc = "These gloves provide excellent heat and electric insulation. They are so thin you can barely feel them."
name = "advanced insulated gloves"
icon_state = "ce_insuls"
- inhand_icon_state = "lgloves"
+ inhand_icon_state = null
+ greyscale_colors = null
siemens_coefficient = 0
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
@@ -226,7 +232,8 @@
name = "latex gloves"
desc = "Cheap sterile gloves made from latex. Provides quicker carrying from a good grip."
icon_state = "latex"
- inhand_icon_state = "latex"
+ inhand_icon_state = "latex_gloves"
+ greyscale_colors = null
siemens_coefficient = 0.3
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 0, ACID = 0)
clothing_traits = list(TRAIT_QUICK_CARRY, TRAIT_FINGERPRINT_PASSTHROUGH)
@@ -236,14 +243,16 @@
name = "nitrile gloves"
desc = "Pricy sterile gloves that are thicker than latex. Excellent grip ensures very fast carrying of patients along with the faster use time of various chemical related items."
icon_state = "nitrile"
- inhand_icon_state = "nitrilegloves"
+ inhand_icon_state = "greyscale_gloves"
+ greyscale_colors = "#99eeff"
clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_FASTMED)
/obj/item/clothing/gloves/color/infiltrator
name = "infiltrator gloves"
desc = "Specialized tactical gloves for carrying people around. Has tactical rubber grips for tactical ease of kidnapping. Tactically."
icon_state = "infiltrator"
- inhand_icon_state = "infiltrator"
+ inhand_icon_state = null
+ greyscale_colors = null
siemens_coefficient = 0
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 70, FIRE = 0, ACID = 0)
clothing_traits = list(TRAIT_QUICKER_CARRY)
@@ -253,8 +262,9 @@
name = "tinker's gloves"
desc = "Overdesigned engineering gloves that have automated construction subrutines dialed in, allowing for faster construction while worn."
icon = 'icons/obj/clothing/gloves.dmi'
+ inhand_icon_state = "greyscale_gloves"
icon_state = "clockwork_gauntlets"
- inhand_icon_state = "clockwork_gauntlets"
+ greyscale_colors = "#db6f05"
siemens_coefficient = 0.8
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 70, FIRE = 0, ACID = 0)
clothing_traits = list(TRAIT_QUICK_BUILD)
@@ -264,16 +274,18 @@
name = "white gloves"
desc = "These look pretty fancy."
icon_state = "white"
- inhand_icon_state = "wgloves"
+ greyscale_colors = "#ffffff"
custom_price = PAYCHECK_CREW
/obj/item/clothing/gloves/kim
name = "aerostatic gloves"
desc = "Breathable red gloves for expert handling of a pen and notebook."
icon_state = "aerostatic_gloves"
- inhand_icon_state = "aerostatic_gloves"
+ greyscale_colors = "#a63814"
/obj/item/clothing/gloves/maid
name = "maid arm covers"
desc = "Cylindrical looking tubes that go over your arm, weird."
icon_state = "maid_arms"
+ inhand_icon_state = null
+ greyscale_colors = null
diff --git a/code/modules/clothing/gloves/combat.dm b/code/modules/clothing/gloves/combat.dm
index 3c30a8c1dc9..82177444a30 100644
--- a/code/modules/clothing/gloves/combat.dm
+++ b/code/modules/clothing/gloves/combat.dm
@@ -2,7 +2,7 @@
name = "combat gloves"
desc = "These tactical gloves are fireproof and electrically insulated."
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ greyscale_colors = "#2f2e31"
siemens_coefficient = 0
strip_delay = 80
cold_protection = HANDS
@@ -11,3 +11,10 @@
max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT
resistance_flags = NONE
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 90, FIRE = 80, ACID = 50)
+
+/obj/item/clothing/gloves/combat/wizard
+ name = "enchanted gloves"
+ desc = "These gloves have been enchanted with a spell that makes them electrically insulated and fireproof."
+ icon_state = "wizard"
+ greyscale_colors = null
+ inhand_icon_state = null
diff --git a/code/modules/clothing/gloves/plasmaman.dm b/code/modules/clothing/gloves/plasmaman.dm
index 9be23483f47..65c99ec34db 100644
--- a/code/modules/clothing/gloves/plasmaman.dm
+++ b/code/modules/clothing/gloves/plasmaman.dm
@@ -2,7 +2,7 @@
desc = "Covers up those scandalous boney hands."
name = "plasma envirogloves"
icon_state = "plasmaman"
- inhand_icon_state = "bgloves"
+ greyscale_colors = "#913b00"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
@@ -13,90 +13,106 @@
/obj/item/clothing/gloves/color/plasmaman/black
name = "black envirogloves"
icon_state = "blackplasma"
+ greyscale_colors = "#2f2e31"
/obj/item/clothing/gloves/color/plasmaman/plasmanitrile
name = "nitrile envirogloves"
desc = "Pricy nitrile gloves made for plasmamen."
icon_state = "nitrile"
+ greyscale_colors = "#913b00"
clothing_traits = list(TRAIT_QUICKER_CARRY, TRAIT_FASTMED)
/obj/item/clothing/gloves/color/plasmaman/white
name = "white envirogloves"
icon_state = "whiteplasma"
+ greyscale_colors = "#ffffff"
/obj/item/clothing/gloves/color/plasmaman/robot
name = "roboticist envirogloves"
icon_state = "robotplasma"
+ greyscale_colors = "#932500"
/obj/item/clothing/gloves/color/plasmaman/janny
name = "janitor envirogloves"
icon_state = "jannyplasma"
+ greyscale_colors = "#883391"
/obj/item/clothing/gloves/color/plasmaman/cargo
name = "cargo envirogloves"
icon_state = "cargoplasma"
+ greyscale_colors = "#bb9042"
/obj/item/clothing/gloves/color/plasmaman/engineer
name = "engineering envirogloves"
icon_state = "engieplasma"
+ greyscale_colors = "#d75600"
siemens_coefficient = 0
/obj/item/clothing/gloves/color/plasmaman/atmos
name = "atmos envirogloves"
icon_state = "atmosplasma"
+ greyscale_colors = "#00a5ff"
/obj/item/clothing/gloves/color/plasmaman/explorer
name = "explorer envirogloves"
icon_state = "explorerplasma"
+ greyscale_colors = "#47453d"
/obj/item/clothing/gloves/color/plasmaman/botanic_leather
name = "botany envirogloves"
desc = "These leather gloves protect your boney hands against thorns, barbs, prickles, spikes and other harmful objects of floral origin."
icon_state = "botanyplasma"
+ greyscale_colors = "#3164ff"
clothing_traits = list(TRAIT_PLANT_SAFE)
/obj/item/clothing/gloves/color/plasmaman/prototype
name = "prototype envirogloves"
icon_state = "protoplasma"
+ greyscale_colors = "#911801"
/obj/item/clothing/gloves/color/plasmaman/clown
name = "clown envirogloves"
icon_state = "clownplasma"
-
-/obj/item/clothing/gloves/combat/wizard
- name = "enchanted gloves"
- desc = "These gloves have been enchanted with a spell that makes them electrically insulated and fireproof."
- icon_state = "wizard"
+ greyscale_colors = "#ff0000"
/obj/item/clothing/gloves/color/plasmaman/head_of_personnel
name = "head of personnel's envirogloves"
desc = "Covers up those scandalous, bony hands. Appears to be an attempt at making a replica of the captain's gloves."
icon_state = "hopplasma"
+ inhand_icon_state = null
+ greyscale_colors = null
/obj/item/clothing/gloves/color/plasmaman/chief_engineer
name = "chief engineer's envirogloves"
icon_state = "ceplasma"
+ greyscale_colors = "#45ff00"
siemens_coefficient = 0
/obj/item/clothing/gloves/color/plasmaman/research_director
name = "research director's envirogloves"
icon_state = "rdplasma"
+ greyscale_colors = "#64008a"
/obj/item/clothing/gloves/color/plasmaman/centcom_commander
name = "CentCom commander envirogloves"
icon_state = "commanderplasma"
+ greyscale_colors = "#009100"
/obj/item/clothing/gloves/color/plasmaman/centcom_official
name = "CentCom official envirogloves"
icon_state = "officialplasma"
+ greyscale_colors = "#10af77"
/obj/item/clothing/gloves/color/plasmaman/centcom_intern
name = "CentCom intern envirogloves"
icon_state = "internplasma"
+ greyscale_colors = "#00974b"
/obj/item/clothing/gloves/color/plasmaman/radio
name = "translation envirogloves"
desc = "Allows the less vocally-capable plasmamen to use sign language over comms."
icon_state = "radio_gplasma"
+ inhand_icon_state = null
+ greyscale_colors = null
worn_icon_state = "radio_g"
clothing_traits = list(TRAIT_CAN_SIGN_ON_COMMS)
diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm
index 926d339ff15..d5a54d88339 100644
--- a/code/modules/clothing/gloves/special.dm
+++ b/code/modules/clothing/gloves/special.dm
@@ -3,7 +3,7 @@
name = "\improper H.A.U.L. gauntlets"
desc = "These clunky gauntlets allow you to drag things with more confidence on them not getting nabbed from you."
icon_state = "haul_gauntlet"
- inhand_icon_state = "bgloves"
+ greyscale_colors = "#2f2e31"
equip_delay_self = 3 SECONDS
equip_delay_other = 4 SECONDS
clothing_traits = list(TRAIT_CHUNKYFINGERS)
@@ -53,7 +53,7 @@
name = "Gloves of the North Star"
desc = "Just looking at these fills you with an urge to beat the shit out of people."
icon_state = "rapid"
- inhand_icon_state = "rapid"
+ inhand_icon_state = null
clothing_traits = list(TRAIT_FINGERPRINT_PASSTHROUGH)
/obj/item/clothing/gloves/rapid/Initialize(mapload)
@@ -64,7 +64,7 @@
name = "translation gloves"
desc = "A pair of electronic gloves which connect to nearby radios wirelessly. Allows for sign language users to 'speak' over comms."
icon_state = "radio_g"
- inhand_icon_state = "radio_g"
+ inhand_icon_state = null
clothing_traits = list(TRAIT_CAN_SIGN_ON_COMMS)
/obj/item/clothing/gloves/race
@@ -72,4 +72,4 @@
desc = "Extremely finely made gloves meant for use by sportsmen in speed-shooting competitions."
clothing_traits = list(TRAIT_DOUBLE_TAP)
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ greyscale_colors = "#2f2e31"
diff --git a/code/modules/clothing/gloves/tacklers.dm b/code/modules/clothing/gloves/tacklers.dm
index 16af9af1404..a94cf06a612 100644
--- a/code/modules/clothing/gloves/tacklers.dm
+++ b/code/modules/clothing/gloves/tacklers.dm
@@ -2,7 +2,7 @@
name = "gripper gloves"
desc = "Special gloves that manipulate the blood vessels in the wearer's hands, granting them the ability to launch headfirst into walls."
icon_state = "tackle"
- inhand_icon_state = "tackle"
+ inhand_icon_state = null
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
resistance_flags = NONE
@@ -47,7 +47,7 @@
name = "dolphin gloves"
desc = "Sleek, aerodynamic gripper gloves that are less effective at actually performing takedowns, but more effective at letting the user sail through the hallways and cause accidents."
icon_state = "tackledolphin"
- inhand_icon_state = "tackledolphin"
+ inhand_icon_state = null
tackle_stam_cost = 15
base_knockdown = 0.5 SECONDS
@@ -60,7 +60,8 @@
name = "gorilla gloves"
desc = "Premium quality combative gloves, heavily reinforced to give the user an edge in close combat tackles, though they are more taxing to use than normal gripper gloves. Fireproof to boot!"
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ inhand_icon_state = "greyscale_gloves"
+ greyscale_colors = "#2f2e31"
tackle_stam_cost = 30
base_knockdown = 1.25 SECONDS
@@ -83,7 +84,7 @@
name = "rocket gloves"
desc = "The ultimate in high risk, high reward, perfect for when you need to stop a criminal from fifty feet away or die trying. Banned in most Spinward gridiron football and rugby leagues."
icon_state = "tacklerocket"
- inhand_icon_state = "tacklerocket"
+ inhand_icon_state = null
tackle_stam_cost = 50
base_knockdown = 2 SECONDS
@@ -96,7 +97,7 @@
name = "improvised gripper gloves"
desc = "Ratty looking fingerless gloves wrapped with sticky tape. Beware anyone wearing these, for they clearly have no shame and nothing to lose."
icon_state = "fingerless"
- inhand_icon_state = "fingerless"
+ inhand_icon_state = null
tackle_stam_cost = 30
base_knockdown = 1.75 SECONDS
@@ -107,4 +108,4 @@
name = "football gloves"
desc = "Gloves for football players! Teaches them how to tackle like a pro."
icon_state = "tackle_gloves"
- inhand_icon_state = "tackle_gloves"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/head/cakehat.dm b/code/modules/clothing/head/cakehat.dm
index efcc07c886c..5cf4b736e54 100644
--- a/code/modules/clothing/head/cakehat.dm
+++ b/code/modules/clothing/head/cakehat.dm
@@ -6,12 +6,6 @@
hat_type = "cakehat"
lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
- hitsound = 'sound/weapons/tap.ogg'
- var/hitsound_on = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat
- var/hitsound_off = 'sound/weapons/tap.ogg'
- var/force_on = 15
- var/throwforce_on = 15
- var/damtype_on = BURN
flags_inv = HIDEEARS|HIDEHAIR
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
light_range = 2 //luminosity when on
@@ -20,9 +14,15 @@
heat = 999
dog_fashion = /datum/dog_fashion/head
+ hitsound = 'sound/weapons/tap.ogg'
+ var/hitsound_on = 'sound/weapons/sear.ogg' //so we can differentiate between cakehat and energyhat
+ var/hitsound_off = 'sound/weapons/tap.ogg'
+ var/force_on = 15
+ var/throwforce_on = 15
+ var/damtype_on = BURN
/obj/item/clothing/head/hardhat/cakehat/process()
- var/turf/location = src.loc
+ var/turf/location = loc
if(ishuman(location))
var/mob/living/carbon/human/wearer = location
if(wearer.is_holding(src) || wearer.head == src)
@@ -65,11 +65,11 @@
heat = 0
/obj/item/clothing/head/hardhat/cakehat/energycake/turn_on(mob/living/user)
- playsound(user, 'sound/weapons/saberon.ogg', 5, TRUE)
+ playsound(src, 'sound/weapons/saberon.ogg', 5, TRUE)
to_chat(user, span_warning("You turn on \the [src]."))
- ..()
+ return ..()
/obj/item/clothing/head/hardhat/cakehat/energycake/turn_off(mob/living/user)
- playsound(user, 'sound/weapons/saberoff.ogg', 5, TRUE)
+ playsound(src, 'sound/weapons/saberoff.ogg', 5, TRUE)
to_chat(user, span_warning("You turn off \the [src]."))
- ..()
+ return ..()
diff --git a/code/modules/clothing/head/collectable.dm b/code/modules/clothing/head/collectable.dm
index b0f375ee152..76799889c41 100644
--- a/code/modules/clothing/head/collectable.dm
+++ b/code/modules/clothing/head/collectable.dm
@@ -25,7 +25,7 @@
name = "collectable chef's hat"
desc = "A rare chef's hat meant for hat collectors!"
icon_state = "chef"
- inhand_icon_state = "chef"
+ inhand_icon_state = "chefhat"
dog_fashion = /datum/dog_fashion/head/chef
@@ -46,7 +46,7 @@
name = "collectable captain's hat"
desc = "A collectable hat that'll make you look just like a real comdom!"
icon_state = "captain"
- inhand_icon_state = "caphat"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head/captain
@@ -72,13 +72,15 @@
desc = "A collectable welding helmet. Now with 80% less lead! Not for actual welding. Any welding done while wearing this helmet is done so at the owner's own risk!"
icon_state = "welding"
inhand_icon_state = "welding"
+ lefthand_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
clothing_flags = SNUG_FIT
/obj/item/clothing/head/collectable/slime
name = "collectable slime hat"
desc = "Just like a real brain slug!"
icon_state = "headslime"
- inhand_icon_state = "headslime"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
@@ -89,13 +91,13 @@
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#8F7654"
- inhand_icon_state = "detective"
+ inhand_icon_state = null
/obj/item/clothing/head/collectable/pirate
name = "collectable pirate hat"
desc = "You'd make a great Dread Syndie Roberts!"
icon_state = "pirate"
- inhand_icon_state = "pirate"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head/pirate
@@ -103,7 +105,7 @@
name = "collectable kitty ears"
desc = "The fur feels... a bit too realistic."
icon_state = "kitty"
- inhand_icon_state = "kitty"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head/kitty
@@ -112,7 +114,7 @@
name = "collectable rabbit ears"
desc = "Not as lucky as the feet!"
icon_state = "bunny"
- inhand_icon_state = "bunny"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head/rabbit
@@ -129,7 +131,7 @@
desc = "WARNING! Offers no real protection, or luminosity, but damn, is it fancy!"
clothing_flags = SNUG_FIT
icon_state = "hardhat0_yellow"
- inhand_icon_state = "hardhat0_yellow"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head
@@ -149,14 +151,14 @@
name = "collectable Thunderdome helmet"
desc = "Go Red! I mean Green! I mean Red! No Green!"
icon_state = "thunderdome"
- inhand_icon_state = "thunderdome"
+ inhand_icon_state = "thunderdome_helmet"
clothing_flags = SNUG_FIT
- flags_inv = HIDEHAIR
+ flags_inv = HIDEHAIR|HIDEHAIR
/obj/item/clothing/head/collectable/swat
name = "collectable SWAT helmet"
desc = "That's not real blood. That's red paint." //Reference to the actual description
- icon_state = "swat"
- inhand_icon_state = "swat"
+ icon_state = "swatsyndie"
+ inhand_icon_state = "swatsyndie_helmet"
clothing_flags = SNUG_FIT
flags_inv = HIDEHAIR
diff --git a/code/modules/clothing/head/cone.dm b/code/modules/clothing/head/cone.dm
index 62179f47e30..01caef21d42 100644
--- a/code/modules/clothing/head/cone.dm
+++ b/code/modules/clothing/head/cone.dm
@@ -3,7 +3,7 @@
name = "warning cone"
icon = 'icons/obj/janitor.dmi'
icon_state = "cone"
- inhand_icon_state = "cone"
+ inhand_icon_state = null
force = 1
throwforce = 3
throw_speed = 2
diff --git a/code/modules/clothing/head/costume.dm b/code/modules/clothing/head/costume.dm
index be7d643dd46..2fe390485f1 100644
--- a/code/modules/clothing/head/costume.dm
+++ b/code/modules/clothing/head/costume.dm
@@ -23,7 +23,7 @@
name = "cueball helmet"
desc = "A large, featureless white orb meant to be worn on your head. How do you even see out of this thing?"
icon_state = "cueball"
- inhand_icon_state="cueball"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
flags_cover = HEADCOVERSEYES|HEADCOVERSMOUTH
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -32,7 +32,7 @@
name = "snowman head"
desc = "A ball of white styrofoam. So festive."
icon_state = "snowman_h"
- inhand_icon_state = "snowman_h"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
flags_cover = HEADCOVERSEYES
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -41,7 +41,7 @@
name = "witch costume wig"
desc = "Eeeee~heheheheheheh!"
icon_state = "witch"
- inhand_icon_state = "witch"
+ inhand_icon_state = null
flags_inv = HIDEHAIR
/obj/item/clothing/head/maidheadband
@@ -53,7 +53,7 @@
name = "chicken suit head"
desc = "Bkaw!"
icon_state = "chickenhead"
- inhand_icon_state = "chickensuit"
+ inhand_icon_state = "chicken_head"
clothing_flags = SNUG_FIT
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -61,7 +61,7 @@
name = "griffon head"
desc = "Why not 'eagle head'? Who knows."
icon_state = "griffinhat"
- inhand_icon_state = "griffinhat"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -92,7 +92,7 @@
desc = "Purify in style!"
flags_inv = HIDEHAIR //bald
icon_state = "shrine_wig"
- inhand_icon_state = "shrine_wig"
+ inhand_icon_state = null
worn_y_offset = 1
@@ -169,26 +169,26 @@
/obj/item/clothing/head/irs
name = "internal revenue service cap"
icon_state = "irs_hat"
- inhand_icon_state = "irs_hat"
+ inhand_icon_state = null
/obj/item/clothing/head/tmc
name = "Lost M.C. bandana"
icon_state = "tmc_hat"
- inhand_icon_state = "tmc_hat"
+ inhand_icon_state = null
/obj/item/clothing/head/deckers
name = "Decker headphones"
icon_state = "decker_hat"
- inhand_icon_state = "decker_hat"
+ inhand_icon_state = null
/obj/item/clothing/head/yuri
name = "yuri initiate helmet"
icon_state = "yuri_helmet"
- inhand_icon_state = "yuri_helmet"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
/obj/item/clothing/head/allies
name = "allies helmet"
icon_state = "allies_helmet"
- inhand_icon_state = "allies_helmet"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/head/fedora.dm b/code/modules/clothing/head/fedora.dm
index c3f7074841c..7ffc93270f2 100644
--- a/code/modules/clothing/head/fedora.dm
+++ b/code/modules/clothing/head/fedora.dm
@@ -6,18 +6,18 @@
/obj/item/clothing/head/fedora/Initialize(mapload)
. = ..()
-
+
create_storage(type = /datum/storage/pockets/small/fedora)
/obj/item/clothing/head/fedora/white
name = "white fedora"
icon_state = "fedora_white"
- inhand_icon_state = "fedora_white"
+ inhand_icon_state = null
/obj/item/clothing/head/fedora/beige
name = "beige fedora"
icon_state = "fedora_beige"
- inhand_icon_state = "fedora_beige"
+ inhand_icon_state = null
/obj/item/clothing/head/fedora/suicide_act(mob/user)
if(user.gender == FEMALE)
@@ -32,4 +32,4 @@
/obj/item/clothing/head/fedora/carpskin
name = "carpskin fedora"
icon_state = "fedora_carpskin"
- inhand_icon_state = "fedora_carpskin"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/head/hardhat.dm b/code/modules/clothing/head/hardhat.dm
index 5fe0b11929e..e2205722733 100644
--- a/code/modules/clothing/head/hardhat.dm
+++ b/code/modules/clothing/head/hardhat.dm
@@ -2,7 +2,7 @@
name = "hard hat"
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight."
icon_state = "hardhat0_yellow"
- inhand_icon_state = "hardhat0_yellow"
+ inhand_icon_state = null
armor = list(MELEE = 15, BULLET = 5, LASER = 20, ENERGY = 10, BOMB = 20, BIO = 50, FIRE = 100, ACID = 50, WOUND = 10) // surprisingly robust against head trauma
flags_inv = 0
actions_types = list(/datum/action/item_action/toggle_helmet_light)
@@ -48,13 +48,13 @@
/obj/item/clothing/head/hardhat/orange
icon_state = "hardhat0_orange"
- inhand_icon_state = "hardhat0_orange"
+ inhand_icon_state = null
hat_type = "orange"
dog_fashion = null
/obj/item/clothing/head/hardhat/red
icon_state = "hardhat0_red"
- inhand_icon_state = "hardhat0_red"
+ inhand_icon_state = null
hat_type = "red"
dog_fashion = null
name = "firefighter helmet"
@@ -68,7 +68,7 @@
name = "workplace-ready firefighter helmet"
desc = "By applying state of the art lighting technology to a fire helmet, and using photo-chemical hardening methods, this hardhat will protect you from robust workplace hazards."
icon_state = "hardhat0_purple"
- inhand_icon_state = "hardhat0_purple"
+ inhand_icon_state = null
light_range = 5
resistance_flags = FIRE_PROOF | ACID_PROOF
custom_materials = list(/datum/material/iron = 4000, /datum/material/glass = 1000, /datum/material/plastic = 3000, /datum/material/silver = 500)
@@ -76,7 +76,7 @@
/obj/item/clothing/head/hardhat/white
icon_state = "hardhat0_white"
- inhand_icon_state = "hardhat0_white"
+ inhand_icon_state = null
hat_type = "white"
clothing_flags = STOPSPRESSUREDAMAGE | PLASMAMAN_HELMET_EXEMPT
heat_protection = HEAD
@@ -87,13 +87,13 @@
/obj/item/clothing/head/hardhat/dblue
icon_state = "hardhat0_dblue"
- inhand_icon_state = "hardhat0_dblue"
+ inhand_icon_state = null
hat_type = "dblue"
dog_fashion = null
/obj/item/clothing/head/hardhat/atmos
icon_state = "hardhat0_atmos"
- inhand_icon_state = "hardhat0_atmos"
+ inhand_icon_state = null
hat_type = "atmos"
dog_fashion = null
name = "atmospheric technician's firefighting helmet"
@@ -164,13 +164,13 @@
/obj/item/clothing/head/hardhat/weldhat/orange
icon_state = "hardhat0_orange"
- inhand_icon_state = "hardhat0_orange"
+ inhand_icon_state = null
hat_type = "orange"
/obj/item/clothing/head/hardhat/weldhat/white
desc = "A piece of headgear used in dangerous working conditions to protect the head. Comes with a built-in flashlight AND welding shield!" //This bulb is not smaller
icon_state = "hardhat0_white"
- inhand_icon_state = "hardhat0_white"
+ inhand_icon_state = null
light_range = 4 //Boss always takes the best stuff
hat_type = "white"
clothing_flags = STOPSPRESSUREDAMAGE | PLASMAMAN_HELMET_EXEMPT
@@ -181,14 +181,14 @@
/obj/item/clothing/head/hardhat/weldhat/dblue
icon_state = "hardhat0_dblue"
- inhand_icon_state = "hardhat0_dblue"
+ inhand_icon_state = null
hat_type = "dblue"
/obj/item/clothing/head/hardhat/pumpkinhead
name = "carved pumpkin"
desc = "A jack o' lantern! Believed to ward off evil spirits."
icon_state = "hardhat0_pumpkin"
- inhand_icon_state = "hardhat0_pumpkin"
+ inhand_icon_state = null
hat_type = "pumpkin"
clothing_flags = SNUG_FIT | PLASMAMAN_HELMET_EXEMPT
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -227,7 +227,7 @@
name = "carved blumpkin"
desc = "A very blue jack o' lantern! Believed to ward off vengeful chemists."
icon_state = "hardhat0_blumpkin"
- inhand_icon_state = "hardhat0_blumpkin"
+ inhand_icon_state = null
hat_type = "blumpkin"
light_color = "#76ff8e"
dog_fashion = /datum/dog_fashion/head/blumpkin/unlit
@@ -244,7 +244,7 @@
name = "novelty reindeer hat"
desc = "Some fake antlers and a very fake red nose."
icon_state = "hardhat0_reindeer"
- inhand_icon_state = "hardhat0_reindeer"
+ inhand_icon_state = null
hat_type = "reindeer"
flags_inv = 0
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
diff --git a/code/modules/clothing/head/hat.dm b/code/modules/clothing/head/hat.dm
index b56e326f6d1..91f01e3dbbe 100644
--- a/code/modules/clothing/head/hat.dm
+++ b/code/modules/clothing/head/hat.dm
@@ -11,7 +11,7 @@
name = "constable helmet"
desc = "A british looking helmet."
icon_state = "constable"
- inhand_icon_state = "constable"
+ inhand_icon_state = null
custom_price = PAYCHECK_COMMAND * 1.5
worn_y_offset = 4
@@ -19,13 +19,13 @@
name = "space police cap"
desc = "A blue cap for patrolling the daily beat."
icon_state = "policecap_families"
- inhand_icon_state = "policecap_families"
+ inhand_icon_state = null
/obj/item/clothing/head/canada
name = "striped red tophat"
desc = "It smells like fresh donut holes. / Il sent comme des trous de beignets frais."
icon_state = "canada"
- inhand_icon_state = "canada"
+ inhand_icon_state = null
/obj/item/clothing/head/redcoat
name = "redcoat's hat"
@@ -53,13 +53,13 @@
name = "bowler-hat"
desc = "Gentleman, elite aboard!"
icon_state = "bowler"
- inhand_icon_state = "bowler"
+ inhand_icon_state = null
/obj/item/clothing/head/bearpelt
name = "bear pelt hat"
desc = "Fuzzy."
icon_state = "bearpelt"
- inhand_icon_state = "bearpelt"
+ inhand_icon_state = null
/obj/item/clothing/head/flatcap
name = "flat cap"
@@ -68,14 +68,14 @@
greyscale_config = /datum/greyscale_config/beret
greyscale_config_worn = /datum/greyscale_config/beret/worn
greyscale_colors = "#8F7654"
- inhand_icon_state = "detective"
+ inhand_icon_state = null
/obj/item/clothing/head/hunter
name = "bounty hunting hat"
desc = "Ain't nobody gonna cheat the hangman in my town."
icon_state = "cowboy"
worn_icon_state = "hunter"
- inhand_icon_state = "hunter"
+ inhand_icon_state = null
armor = list(MELEE = 5, BULLET = 5, LASER = 5, ENERGY = 15, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
resistance_flags = FIRE_PROOF | ACID_PROOF
@@ -146,7 +146,7 @@
name = "pharaoh hat"
desc = "Walk like an Egyptian."
icon_state = "pharoah_hat"
- inhand_icon_state = "pharoah_hat"
+ inhand_icon_state = null
/obj/item/clothing/head/nemes
name = "headdress of Nemes"
@@ -162,7 +162,7 @@
name = "\improper CentCom Head Intern beancap"
desc = "A horrifying mix of beanie and softcap in CentCom green. You'd have to be pretty desperate for power over your peers to agree to wear this."
icon_state = "intern_hat"
- inhand_icon_state = "intern_hat"
+ inhand_icon_state = null
/obj/item/clothing/head/coordinator
name = "coordinator cap"
@@ -175,13 +175,13 @@
name = "frosty hat"
desc = "Hee-ho!"
icon_state = "JackFrostHat"
- inhand_icon_state = "JackFrostHat"
+ inhand_icon_state = null
/obj/item/clothing/head/weddingveil
name = "wedding veil"
desc = "A gauzy white veil."
icon_state = "weddingveil"
- inhand_icon_state = "weddingveil"
+ inhand_icon_state = null
/obj/item/clothing/head/centcom_cap
name = "\improper CentCom commander cap"
@@ -196,13 +196,13 @@
name = "human skin hat"
desc = "This will scare them. All will know my power."
icon_state = "human_leather"
- inhand_icon_state = "human_leather"
+ inhand_icon_state = null
/obj/item/clothing/head/ushanka
name = "ushanka"
desc = "Perfect for winter in Siberia, da?"
icon_state = "ushankadown"
- inhand_icon_state = "ushankadown"
+ inhand_icon_state = null
flags_inv = HIDEEARS|HIDEHAIR
cold_protection = HEAD
min_cold_protection_temperature = FIRE_HELM_MIN_TEMP_PROTECT
diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm
index f1e4ddf9564..cf9b5d64879 100644
--- a/code/modules/clothing/head/helmet.dm
+++ b/code/modules/clothing/head/helmet.dm
@@ -53,7 +53,7 @@
name = "bulletproof helmet"
desc = "A bulletproof combat helmet that excels in protecting the wearer against traditional projectile weaponry and explosives to a minor extent."
icon_state = "helmetalt"
- inhand_icon_state = "helmetalt"
+ inhand_icon_state = "swat_helmet"
armor = list(MELEE = 15, BULLET = 60, LASER = 10, ENERGY = 10, BOMB = 40, BIO = 0, FIRE = 50, ACID = 50, WOUND = 5)
dog_fashion = null
@@ -65,7 +65,7 @@
name = "tactical combat helmet"
desc = "A tactical black helmet, sealed from outside hazards with a plate of glass and not much else."
icon_state = "marine_command"
- inhand_icon_state = "helmetalt"
+ inhand_icon_state = "marine_helmet"
armor = list(MELEE = 50, BULLET = 50, LASER = 30, ENERGY = 25, BOMB = 50, BIO = 100, FIRE = 40, ACID = 50, WOUND = 20)
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
clothing_flags = STOPSPRESSUREDAMAGE | PLASMAMAN_HELMET_EXEMPT
@@ -97,14 +97,14 @@
name = "blue helmet"
desc = "A reliable, blue tinted helmet reminding you that you still owe that engineer a beer."
icon_state = "blueshift"
- inhand_icon_state = "blueshift"
+ inhand_icon_state = "blueshift_helmet"
custom_premium_price = PAYCHECK_COMMAND
/obj/item/clothing/head/helmet/riot
name = "riot helmet"
desc = "It's a helmet specifically designed to protect against close range attacks."
icon_state = "riot"
- inhand_icon_state = "helmet"
+ inhand_icon_state = "riot_helmet"
toggle_message = "You pull the visor down on"
alt_toggle_message = "You push the visor up on"
can_toggle = 1
@@ -145,6 +145,7 @@
name = "helmet of justice"
desc = "WEEEEOOO. WEEEEEOOO. WEEEEOOOO."
icon_state = "justice"
+ inhand_icon_state = "justice_helmet"
toggle_message = "You turn off the lights on"
alt_toggle_message = "You turn on the lights on"
actions_types = list(/datum/action/item_action/toggle_helmet_light)
@@ -180,7 +181,7 @@
name = "\improper SWAT helmet"
desc = "An extremely robust, space-worthy helmet in a nefarious red and black stripe pattern."
icon_state = "swatsyndie"
- inhand_icon_state = "swatsyndie"
+ inhand_icon_state = "swatsyndie_helmet"
armor = list(MELEE = 40, BULLET = 30, LASER = 30,ENERGY = 40, BOMB = 50, BIO = 90, FIRE = 100, ACID = 100, WOUND = 15)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
@@ -195,7 +196,7 @@
name = "\improper SWAT helmet"
desc = "An extremely robust helmet with the Nanotrasen logo emblazoned on the top."
icon_state = "swat"
- inhand_icon_state = "swat"
+ inhand_icon_state = "swat_helmet"
clothing_flags = PLASMAMAN_HELMET_EXEMPT
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
@@ -209,7 +210,7 @@
desc = "'Let the battle commence!'"
flags_inv = HIDEEARS|HIDEHAIR
icon_state = "thunderdome"
- inhand_icon_state = "thunderdome"
+ inhand_icon_state = "thunderdome_helmet"
armor = list(MELEE = 80, BULLET = 80, LASER = 50, ENERGY = 50, BOMB = 100, BIO = 100, FIRE = 90, ACID = 90)
cold_protection = HEAD
min_cold_protection_temperature = SPACE_HELM_MIN_TEMP_PROTECT
@@ -231,7 +232,7 @@
armor = list(MELEE = 25, BULLET = 0, LASER = 25, ENERGY = 10, BOMB = 10, BIO = 0, FIRE = 100, ACID = 50, WOUND = 5)
resistance_flags = FIRE_PROOF
icon_state = "roman"
- inhand_icon_state = "roman"
+ inhand_icon_state = "roman_helmet"
strip_delay = 100
dog_fashion = null
@@ -243,7 +244,6 @@
name = "\improper Roman legionnaire helmet"
desc = "An ancient helmet made of bronze and leather. Has a red crest on top of it."
icon_state = "roman_c"
- inhand_icon_state = "roman_c"
/obj/item/clothing/head/helmet/roman/legionnaire/fake
desc = "An ancient helmet made of plastic and leather. Has a red crest on top of it."
@@ -253,7 +253,7 @@
name = "gladiator helmet"
desc = "Ave, Imperator, morituri te salutant."
icon_state = "gladiator"
- inhand_icon_state = "gladiator"
+ inhand_icon_state = "gladiator_helmet"
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEHAIR
flags_cover = HEADCOVERSEYES
dog_fashion = null
@@ -263,7 +263,7 @@
desc = "They have chosen their own end."
icon_state = "redtaghelm"
flags_cover = HEADCOVERSEYES
- inhand_icon_state = "redtaghelm"
+ inhand_icon_state = "redtag_helmet"
armor = list(MELEE = 15, BULLET = 10, LASER = 20,ENERGY = 10, BOMB = 20, BIO = 0, FIRE = 0, ACID = 50)
// Offer about the same protection as a hardhat.
dog_fashion = null
@@ -273,7 +273,7 @@
desc = "They'll need more men."
icon_state = "bluetaghelm"
flags_cover = HEADCOVERSEYES
- inhand_icon_state = "bluetaghelm"
+ inhand_icon_state = "bluetag_helmet"
armor = list(MELEE = 15, BULLET = 10, LASER = 20,ENERGY = 10, BOMB = 20, BIO = 0, FIRE = 0, ACID = 50)
// Offer about the same protection as a hardhat.
dog_fashion = null
@@ -282,7 +282,7 @@
name = "medieval helmet"
desc = "A classic metal helmet."
icon_state = "knight_green"
- inhand_icon_state = "knight_green"
+ inhand_icon_state = "knight_helmet"
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80) // no wound armor cause getting domed in a bucket head sounds like concussion city
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -291,21 +291,18 @@
/obj/item/clothing/head/helmet/knight/blue
icon_state = "knight_blue"
- inhand_icon_state = "knight_blue"
/obj/item/clothing/head/helmet/knight/yellow
icon_state = "knight_yellow"
- inhand_icon_state = "knight_yellow"
/obj/item/clothing/head/helmet/knight/red
icon_state = "knight_red"
- inhand_icon_state = "knight_red"
/obj/item/clothing/head/helmet/knight/greyscale
name = "knight helmet"
desc = "A classic medieval helmet, if you hold it upside down you could see that it's actually a bucket."
icon_state = "knight_greyscale"
- inhand_icon_state = "knight_greyscale"
+ inhand_icon_state = null
armor = list(MELEE = 35, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 10, FIRE = 40, ACID = 40)
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix
@@ -316,14 +313,14 @@
flags_cover = HEADCOVERSEYES
armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 35, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50)
icon_state = "skull"
- inhand_icon_state = "skull"
+ inhand_icon_state = null
strip_delay = 100
/obj/item/clothing/head/helmet/durathread
name = "durathread helmet"
desc = "A helmet made from durathread and leather."
icon_state = "durathread"
- inhand_icon_state = "durathread"
+ inhand_icon_state = "durathread_helmet"
resistance_flags = FLAMMABLE
armor = list(MELEE = 20, BULLET = 10, LASER = 30, ENERGY = 40, BOMB = 15, BIO = 0, FIRE = 40, ACID = 50, WOUND = 5)
strip_delay = 60
@@ -354,7 +351,7 @@
name = "infiltrator helmet"
desc = "The galaxy isn't big enough for the two of us."
icon_state = "infiltrator"
- inhand_icon_state = "infiltrator"
+ inhand_icon_state = "infiltrator_helmet"
armor = list(MELEE = 40, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 70, BIO = 0, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
flash_protect = FLASH_PROTECTION_WELDER
@@ -366,7 +363,7 @@
name = "\improper Elder Atmosian Helmet"
desc = "A superb helmet made with the toughest and rarest materials available to man."
icon_state = "h2helmet"
- inhand_icon_state = "h2helmet"
+ inhand_icon_state = "h2_helmet"
armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 30, BOMB = 85, BIO = 10, FIRE = 65, ACID = 40, WOUND = 15)
material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS //Can change color and add prefix
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
diff --git a/code/modules/clothing/head/jobs.dm b/code/modules/clothing/head/jobs.dm
index d82ccce130f..1a0a3b36ea1 100644
--- a/code/modules/clothing/head/jobs.dm
+++ b/code/modules/clothing/head/jobs.dm
@@ -7,7 +7,7 @@
//Chef
/obj/item/clothing/head/chefhat
name = "chef's hat"
- inhand_icon_state = "chef"
+ inhand_icon_state = "chefhat"
icon_state = "chef"
desc = "The commander in chef's head wear."
strip_delay = 10
@@ -97,6 +97,7 @@
desc = "There's only one man who can sniff out the dirty stench of crime, and he's likely wearing this hat."
armor = list(MELEE = 25, BULLET = 5, LASER = 25, ENERGY = 35, BOMB = 0, BIO = 0, FIRE = 30, ACID = 50, WOUND = 5)
icon_state = "detective"
+ inhand_icon_state = "det_hat"
var/candy_cooldown = 0
dog_fashion = /datum/dog_fashion/head/detective
@@ -193,7 +194,7 @@
name = "warden's campaign hat"
desc = "A special armored campaign hat with the security insignia emblazoned on it. Uses reinforced fabric to offer sufficient protection."
icon_state = "wardendrill"
- inhand_icon_state = "wardendrill"
+ inhand_icon_state = null
dog_fashion = null
var/mode = DRILL_DEFAULT
diff --git a/code/modules/clothing/head/justice.dm b/code/modules/clothing/head/justice.dm
index 0b224d1e196..0402be4f757 100644
--- a/code/modules/clothing/head/justice.dm
+++ b/code/modules/clothing/head/justice.dm
@@ -2,23 +2,23 @@
name = "justice hat"
desc = "Fight for what's righteous!"
icon_state = "justicered"
- inhand_icon_state = "justicered"
+ inhand_icon_state = null
clothing_flags = SNUG_FIT
flags_inv = HIDEHAIR|HIDEEARS|HIDEEYES|HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
flags_cover = HEADCOVERSEYES
/obj/item/clothing/head/justice/blue
icon_state = "justiceblue"
- inhand_icon_state = "justiceblue"
+ inhand_icon_state = null
/obj/item/clothing/head/justice/yellow
icon_state = "justiceyellow"
- inhand_icon_state = "justiceyellow"
+ inhand_icon_state = null
/obj/item/clothing/head/justice/green
icon_state = "justicegreen"
- inhand_icon_state = "justicegreen"
+ inhand_icon_state = null
/obj/item/clothing/head/justice/pink
icon_state = "justicepink"
- inhand_icon_state = "justicepink"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/head/mind_monkey_helmet.dm b/code/modules/clothing/head/mind_monkey_helmet.dm
index ec442dc50d8..d600ff0bec7 100644
--- a/code/modules/clothing/head/mind_monkey_helmet.dm
+++ b/code/modules/clothing/head/mind_monkey_helmet.dm
@@ -6,7 +6,7 @@
desc = "A fragile, circuitry embedded helmet for boosting the intelligence of a monkey to a higher level. You see several warning labels..."
icon_state = "monkeymind"
- inhand_icon_state = "monkeymind"
+ inhand_icon_state = null
strip_delay = 100
var/mob/living/carbon/human/magnification = null ///if the helmet is on a valid target (just works like a normal helmet if not (cargo please stop))
var/polling = FALSE///if the helmet is currently polling for targets (special code for removal)
diff --git a/code/modules/clothing/head/pirate.dm b/code/modules/clothing/head/pirate.dm
index dece685062c..551e5f0db34 100644
--- a/code/modules/clothing/head/pirate.dm
+++ b/code/modules/clothing/head/pirate.dm
@@ -2,7 +2,7 @@
name = "pirate hat"
desc = "Yarr."
icon_state = "pirate"
- inhand_icon_state = "pirate"
+ inhand_icon_state = null
dog_fashion = /datum/dog_fashion/head/pirate
/obj/item/clothing/head/pirate
@@ -33,13 +33,13 @@
/obj/item/clothing/head/pirate/captain
name = "pirate captain hat"
icon_state = "hgpiratecap"
- inhand_icon_state = "hgpiratecap"
+ inhand_icon_state = null
/obj/item/clothing/head/bandana
name = "pirate bandana"
desc = "Yarr."
icon_state = "bandana"
- inhand_icon_state = "bandana"
+ inhand_icon_state = null
/obj/item/clothing/head/bandana/armored
diff --git a/code/modules/clothing/head/soft_caps.dm b/code/modules/clothing/head/soft_caps.dm
index c81fdcf0cfd..71da30db98b 100644
--- a/code/modules/clothing/head/soft_caps.dm
+++ b/code/modules/clothing/head/soft_caps.dm
@@ -2,7 +2,7 @@
name = "cargo cap"
desc = "It's a baseball hat in a tasteful brown colour."
icon_state = "cargosoft"
- inhand_icon_state = "helmet"
+ inhand_icon_state = "greyscale_softcap" //todo wip
var/soft_type = "cargo"
dog_fashion = /datum/dog_fashion/head/cargo_tech
@@ -118,6 +118,7 @@
name = "rainbow cap"
desc = "It's a baseball hat in a bright rainbow of colors."
icon_state = "rainbowsoft"
+ inhand_icon_state = "rainbow_softcap"
soft_type = "rainbow"
dog_fashion = null
diff --git a/code/modules/clothing/head/sombrero.dm b/code/modules/clothing/head/sombrero.dm
index 5c74378f167..a5febec39c0 100644
--- a/code/modules/clothing/head/sombrero.dm
+++ b/code/modules/clothing/head/sombrero.dm
@@ -23,7 +23,6 @@
/obj/item/clothing/head/sombrero/shamebrero
name = "shamebrero"
icon_state = "shamebrero"
- inhand_icon_state = "shamebrero"
desc = "Once it's on, it never comes off."
dog_fashion = null
greyscale_colors = "#d565d3#f8db18"
diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm
index 9520731f455..3f47081a22e 100644
--- a/code/modules/clothing/head/tinfoilhat.dm
+++ b/code/modules/clothing/head/tinfoilhat.dm
@@ -2,7 +2,7 @@
name = "tinfoil hat"
desc = "Thought control rays, psychotronic scanning. Don't mind that, I'm protected cause I made this hat."
icon_state = "foilhat"
- inhand_icon_state = "foilhat"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = -5,ENERGY = -15, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
equip_delay_other = 140
clothing_flags = ANTI_TINFOIL_MANEUVER
diff --git a/code/modules/clothing/head/welding.dm b/code/modules/clothing/head/welding.dm
index b953e085661..0e7f489581b 100644
--- a/code/modules/clothing/head/welding.dm
+++ b/code/modules/clothing/head/welding.dm
@@ -4,6 +4,8 @@
icon_state = "welding"
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
inhand_icon_state = "welding"
+ lefthand_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
custom_materials = list(/datum/material/iron=1750, /datum/material/glass=400)
flash_protect = FLASH_PROTECTION_WELDER
tint = 2
@@ -17,3 +19,8 @@
/obj/item/clothing/head/welding/attack_self(mob/user)
weldingvisortoggle(user)
+
+/obj/item/clothing/head/welding/visor_toggling()
+ . = ..()
+ inhand_icon_state = "[initial(inhand_icon_state)][up ? "off" : ""]"
+
diff --git a/code/modules/clothing/masks/animal_masks.dm b/code/modules/clothing/masks/animal_masks.dm
index 1c7bbcae78a..ba4fed2917f 100644
--- a/code/modules/clothing/masks/animal_masks.dm
+++ b/code/modules/clothing/masks/animal_masks.dm
@@ -109,7 +109,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A rubber pig mask with a built-in voice modulator."
animal_type = "pig"
icon_state = "pig"
- inhand_icon_state = "pig"
+ inhand_icon_state = null
animal_sounds = list("Oink!","Squeeeeeeee!","Oink Oink!")
curse_spawn_sound = 'sound/magic/pighead_curse.ogg'
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
@@ -122,7 +122,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
name = "frog mask"
desc = "An ancient mask carved in the shape of a frog.
Sanity is like gravity, all it needs is a push."
icon_state = "frog"
- inhand_icon_state = "frog"
+ inhand_icon_state = null
animal_sounds = list("Ree!!", "Reee!!","REEE!!","REEEEE!!")
animal_sounds_alt_probability = 5
animal_sounds_alt = list("HUUUUU!!","SMOOOOOKIN'!!","Hello my baby, hello my honey, hello my rag-time gal.", "Feels bad, man.", "GIT DIS GUY OFF ME!!" ,"SOMEBODY STOP ME!!", "NORMIES, GET OUT!!")
@@ -134,7 +134,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
/obj/item/clothing/mask/animal/cowmask
name = "cow mask"
icon_state = "cowmask"
- inhand_icon_state = "cowmask"
+ inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
curse_spawn_sound = 'sound/magic/cowhead_curse.ogg'
animal_sounds = list("Moooooooo!","Moo!","Moooo!")
@@ -147,7 +147,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a horse."
animal_type = "horse"
icon_state = "horsehead"
- inhand_icon_state = "horsehead"
+ inhand_icon_state = null
animal_sounds = list("NEEIIGGGHHHH!", "NEEEIIIIGHH!", "NEIIIGGHH!", "HAAWWWWW!", "HAAAWWW!")
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDEEYES|HIDEEARS|HIDESNOUT
curse_spawn_sound = 'sound/magic/horsehead_curse.ogg'
@@ -169,7 +169,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a rat."
animal_type = "rat"
icon_state = "rat"
- inhand_icon_state = "rat"
+ inhand_icon_state = null
animal_sounds = list("Skree!","SKREEE!","Squeak!")
/obj/item/clothing/mask/animal/small/rat/cursed
@@ -180,7 +180,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a fox."
animal_type = "fox"
icon_state = "fox"
- inhand_icon_state = "fox"
+ inhand_icon_state = null
animal_sounds = list("Ack-Ack!","Ack-Ack-Ack-Ackawoooo!","Geckers!","AWOO!","TCHOFF!")
/obj/item/clothing/mask/animal/small/fox/cursed
@@ -191,7 +191,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a bee."
animal_type = "bee"
icon_state = "bee"
- inhand_icon_state = "bee"
+ inhand_icon_state = null
animal_sounds = list("BZZT!", "BUZZZ!", "B-zzzz!", "Bzzzzzzttttt!")
/obj/item/clothing/mask/animal/small/bee/cursed
@@ -202,7 +202,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a bear."
animal_type = "bear"
icon_state = "bear"
- inhand_icon_state = "bear"
+ inhand_icon_state = null
animal_sounds = list("RAWR!","Rawr!","GRR!","Growl!")
/obj/item/clothing/mask/animal/small/bear/cursed
@@ -213,7 +213,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a bat."
animal_type = "bat"
icon_state = "bat"
- inhand_icon_state = "bat"
+ inhand_icon_state = null
/obj/item/clothing/mask/animal/small/bat/cursed
cursed = TRUE
@@ -223,7 +223,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
name = "raven mask"
desc = "A mask made of soft vinyl and latex, representing the head of a raven."
icon_state = "raven"
- inhand_icon_state = "raven"
+ inhand_icon_state = null
animal_type = "raven"
animal_sounds = list("CAW!", "C-CAWW!", "Squawk!")
animal_sounds_alt = list("Nevermore...")
@@ -237,7 +237,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask made of soft vinyl and latex, representing the head of a jackal."
animal_type = "jackal"
icon_state = "jackal"
- inhand_icon_state = "jackal"
+ inhand_icon_state = null
animal_sounds = list("YAP!", "Woof!", "Bark!", "AUUUUUU!")
/obj/item/clothing/mask/animal/small/jackal/cursed
@@ -248,7 +248,7 @@ GLOBAL_LIST_INIT(cursed_animal_masks, list(
desc = "A mask carved out of wood, detailed carefully by hand."
animal_type = "tribal" //honk.
icon_state = "bumba"
- inhand_icon_state = "bumba"
+ inhand_icon_state = null
animal_sounds = list("Bad juju, mon!", "Da Iwa be praised!", "Sum bad mojo, dat!", "You do da voodoo, mon!")
animal_sounds_alt = list("Eekum-bokum!", "Oomenacka!", "In mah head..... Zombi.... Zombi!")
animal_sounds_alt_probability = 5
diff --git a/code/modules/clothing/masks/bandana.dm b/code/modules/clothing/masks/bandana.dm
index 5b702027319..1488711749f 100644
--- a/code/modules/clothing/masks/bandana.dm
+++ b/code/modules/clothing/masks/bandana.dm
@@ -12,11 +12,12 @@
name = "bandana"
desc = "A fine bandana with nanotech lining."
icon_state = "bandana"
+ inhand_icon_state = "greyscale_bandana"
worn_icon_state = "bandana_worn"
greyscale_config = /datum/greyscale_config/bandana
greyscale_config_worn = /datum/greyscale_config/bandana_worn
- var/greyscale_config_up = /datum/greyscale_config/bandana_up
- var/greyscale_config_worn_up = /datum/greyscale_config/bandana_worn_up
+ greyscale_config_inhand_left = /datum/greyscale_config/bandana_inhands_left
+ greyscale_config_inhand_right = /datum/greyscale_config/bandana_inhands_right
greyscale_colors = "#2e2e2e"
/obj/item/clothing/mask/bandana/attack_self(mob/user)
@@ -24,20 +25,16 @@
to_chat(user, span_warning("You must undo [src] in order to push it into a hat!"))
return
adjustmask(user)
- if(greyscale_config == initial(greyscale_config) && greyscale_config_worn == initial(greyscale_config_worn))
+
+/obj/item/clothing/mask/bandana/adjustmask(mob/living/user)
+ . = ..()
+ if(mask_adjusted)
worn_icon_state += "_up"
undyeable = TRUE
- set_greyscale(
- new_config = greyscale_config_up,
- new_worn_config = greyscale_config_worn_up
- )
else
+ inhand_icon_state = initial(inhand_icon_state)
worn_icon_state = initial(worn_icon_state)
undyeable = initial(undyeable)
- set_greyscale(
- new_config = initial(greyscale_config),
- new_worn_config = initial(greyscale_config_worn)
- )
/obj/item/clothing/mask/bandana/AltClick(mob/user)
. = ..()
@@ -128,8 +125,8 @@
worn_icon_state = "bandstriped_worn"
greyscale_config = /datum/greyscale_config/bandstriped
greyscale_config_worn = /datum/greyscale_config/bandstriped_worn
- greyscale_config_up = /datum/greyscale_config/bandstriped_up
- greyscale_config_worn_up = /datum/greyscale_config/bandstriped_worn_up
+ greyscale_config_inhand_left = /datum/greyscale_config/bandana_striped_inhands_left
+ greyscale_config_inhand_right = /datum/greyscale_config/bandana_striped_inhands_right
greyscale_colors = "#2e2e2e#C6C6C6"
undyeable = TRUE
@@ -182,8 +179,8 @@
worn_icon_state = "bandskull_worn"
greyscale_config = /datum/greyscale_config/bandskull
greyscale_config_worn = /datum/greyscale_config/bandskull_worn
- greyscale_config_up = /datum/greyscale_config/bandskull_up
- greyscale_config_worn_up = /datum/greyscale_config/bandskull_worn_up
+ greyscale_config_inhand_left = /datum/greyscale_config/bandana_skull_inhands_left
+ greyscale_config_inhand_right = /datum/greyscale_config/bandana_skull_inhands_right
greyscale_colors = "#2e2e2e#C6C6C6"
undyeable = TRUE
diff --git a/code/modules/clothing/masks/boxing.dm b/code/modules/clothing/masks/boxing.dm
index 819449a7a30..6f7593f61b1 100644
--- a/code/modules/clothing/masks/boxing.dm
+++ b/code/modules/clothing/masks/boxing.dm
@@ -15,7 +15,7 @@
name = "infiltrator balaclava"
desc = "It makes you feel safe in your anonymity, but for a stealth outfit you sure do look obvious that you're up to no good. It seems to have a built in heads-up display."
icon_state = "syndicate_balaclava"
- inhand_icon_state = "syndicate_balaclava"
+ inhand_icon_state = "balaclava"
clothing_flags = MASKINTERNALS
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
@@ -47,7 +47,7 @@
name = "Luchador Mask"
desc = "Worn by robust fighters, flying high to defeat their foes!"
icon_state = "luchag"
- inhand_icon_state = "luchag"
+ inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
w_class = WEIGHT_CLASS_SMALL
modifies_speech = TRUE
@@ -80,19 +80,17 @@
name = "Tecnicos Mask"
desc = "Worn by robust fighters who uphold justice and fight honorably."
icon_state = "luchador"
- inhand_icon_state = "luchador"
/obj/item/clothing/mask/luchador/rudos
name = "Rudos Mask"
desc = "Worn by robust fighters who are willing to do anything to win."
icon_state = "luchar"
- inhand_icon_state = "luchar"
/obj/item/clothing/mask/russian_balaclava
name = "russian balaclava"
desc = "Protects your face from snow."
icon_state = "rus_balaclava"
- inhand_icon_state = "rus_balaclava"
+ inhand_icon_state = "balaclava"
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
visor_flags_inv = HIDEFACE|HIDEFACIALHAIR|HIDESNOUT
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/modules/clothing/masks/costume.dm b/code/modules/clothing/masks/costume.dm
index 59f83fe80b6..7eb5da57743 100644
--- a/code/modules/clothing/masks/costume.dm
+++ b/code/modules/clothing/masks/costume.dm
@@ -30,12 +30,12 @@
name = "mummy mask"
desc = "Ancient bandages."
icon_state = "mummy_mask"
- inhand_icon_state = "mummy_mask"
+ inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
/obj/item/clothing/mask/scarecrow
name = "sack mask"
desc = "A burlap sack with eyeholes."
icon_state = "scarecrow_sack"
- inhand_icon_state = "scarecrow_sack"
+ inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
diff --git a/code/modules/clothing/masks/gasmask.dm b/code/modules/clothing/masks/gasmask.dm
index 393d10f838e..0e6611a88e6 100644
--- a/code/modules/clothing/masks/gasmask.dm
+++ b/code/modules/clothing/masks/gasmask.dm
@@ -107,7 +107,7 @@
name = "captain's gas mask"
desc = "Nanotrasen cut corners and repainted a spare atmospheric gas mask, but don't tell anyone."
icon_state = "gas_cap"
- inhand_icon_state = "gas_cap"
+ inhand_icon_state = "gasmask_captain"
resistance_flags = FIRE_PROOF | ACID_PROOF
/obj/item/clothing/mask/gas/atmos/centcom
@@ -161,6 +161,7 @@
name = "syndicate mask"
desc = "A close-fitting tactical mask that can be connected to an air supply."
icon_state = "syndicate"
+ inhand_icon_state = "syndicate_gasmask"
resistance_flags = FIRE_PROOF | ACID_PROOF
strip_delay = 60
w_class = WEIGHT_CLASS_SMALL
@@ -172,6 +173,8 @@
clothing_flags = MASKINTERNALS
icon_state = "clown"
inhand_icon_state = "clown_hat"
+ lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
dye_color = DYE_CLOWN
w_class = WEIGHT_CLASS_SMALL
flags_cover = MASKCOVERSEYES
@@ -223,7 +226,9 @@
desc = "A feminine clown mask for the dabbling crossdressers or female entertainers."
clothing_flags = MASKINTERNALS
icon_state = "sexyclown"
- inhand_icon_state = "sexyclown"
+ inhand_icon_state = "sexyclown_hat"
+ lefthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
species_exception = list(/datum/species/golem/bananium)
@@ -234,7 +239,7 @@
desc = "The traditional mime's mask. It has an eerie facial posture."
clothing_flags = MASKINTERNALS
icon_state = "mime"
- inhand_icon_state = "mime"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
@@ -281,7 +286,7 @@
desc = "A mask used when acting as a monkey."
clothing_flags = MASKINTERNALS
icon_state = "monkeymask"
- inhand_icon_state = "monkeymask"
+ inhand_icon_state = "owl_mask"
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
has_fov = FALSE
@@ -291,7 +296,7 @@
desc = "A traditional female mime's mask."
clothing_flags = MASKINTERNALS
icon_state = "sexymime"
- inhand_icon_state = "sexymime"
+ inhand_icon_state = null
flags_cover = MASKCOVERSEYES
resistance_flags = FLAMMABLE
species_exception = list(/datum/species/golem)
@@ -319,6 +324,7 @@
name = "carp mask"
desc = "Gnash gnash."
icon_state = "carp_mask"
+ inhand_icon_state = null
has_fov = FALSE
flags_cover = MASKCOVERSEYES
@@ -326,7 +332,7 @@
name = "tiki mask"
desc = "A creepy wooden mask. Surprisingly expressive for a poorly carved bit of wood."
icon_state = "tiki_eyebrow"
- inhand_icon_state = "tiki_eyebrow"
+ inhand_icon_state = null
custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 1.25)
resistance_flags = FLAMMABLE
has_fov = FALSE
@@ -373,7 +379,7 @@
name = "bounty hunting mask"
desc = "A custom tactical mask with decals added."
icon_state = "hunter"
- inhand_icon_state = "hunter"
+ inhand_icon_state = "gas_atmos"
resistance_flags = FIRE_PROOF | ACID_PROOF
flags_inv = HIDEFACIALHAIR|HIDEFACE|HIDEEYES|HIDEEARS|HIDEHAIR|HIDESNOUT
has_fov = FALSE
@@ -405,4 +411,4 @@
icon_state = "driscoll_mask"
flags_inv = HIDEFACIALHAIR
w_class = WEIGHT_CLASS_NORMAL
- inhand_icon_state = "driscoll_mask"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/masks/gondola.dm b/code/modules/clothing/masks/gondola.dm
index 683b8a07d31..7a8283293de 100644
--- a/code/modules/clothing/masks/gondola.dm
+++ b/code/modules/clothing/masks/gondola.dm
@@ -2,7 +2,7 @@
name = "gondola mask"
desc = "Genuine gondola fur."
icon_state = "gondola"
- inhand_icon_state = "gondola"
+ inhand_icon_state = null
flags_inv = HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
w_class = WEIGHT_CLASS_SMALL
modifies_speech = TRUE
diff --git a/code/modules/clothing/masks/hailer.dm b/code/modules/clothing/masks/hailer.dm
index 395ccd20821..b85ce26e4f0 100644
--- a/code/modules/clothing/masks/hailer.dm
+++ b/code/modules/clothing/masks/hailer.dm
@@ -80,7 +80,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
name = "spacepol mask"
desc = "A close-fitting tactical mask created in cooperation with a certain megacorporation, comes with an especially aggressive Compli-o-nator 3000."
icon_state = "spacepol"
- inhand_icon_state = "spacepol"
+ inhand_icon_state = "spacepol_mask"
tint = 1.5
flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF
visor_flags_cover = MASKCOVERSMOUTH | MASKCOVERSEYES | PEPPERPROOF
@@ -189,7 +189,7 @@ GLOBAL_LIST_INIT(hailer_phrases, list(
name = "police whistle"
desc = "A police whistle for when you need to make sure the criminals hear you."
icon_state = "whistle"
- inhand_icon_state = "whistle"
+ inhand_icon_state = null
slot_flags = ITEM_SLOT_MASK|ITEM_SLOT_NECK
custom_price = PAYCHECK_COMMAND * 1.5
w_class = WEIGHT_CLASS_SMALL
diff --git a/code/modules/clothing/masks/muzzle.dm b/code/modules/clothing/masks/muzzle.dm
index 7f4544810f7..acf43ad503a 100644
--- a/code/modules/clothing/masks/muzzle.dm
+++ b/code/modules/clothing/masks/muzzle.dm
@@ -3,6 +3,8 @@
desc = "To stop that awful noise."
icon_state = "muzzle"
inhand_icon_state = "blindfold"
+ lefthand_file = 'icons/mob/inhands/clothing/glasses_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/glasses_righthand.dmi'
clothing_flags = BLOCKS_SPEECH
flags_cover = MASKCOVERSMOUTH
w_class = WEIGHT_CLASS_SMALL
@@ -21,6 +23,8 @@
desc = "To silence those pesky patients before putting them under."
icon_state = "breathmuzzle"
inhand_icon_state = "breathmuzzle"
+ lefthand_file = 'icons/mob/inhands/clothing/masks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/masks_righthand.dmi'
body_parts_covered = NONE
clothing_flags = MASKINTERNALS | BLOCKS_SPEECH
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 0, ACID = 0)
diff --git a/code/modules/clothing/masks/surgical.dm b/code/modules/clothing/masks/surgical.dm
index aedb1bfacee..44434cdb6ce 100644
--- a/code/modules/clothing/masks/surgical.dm
+++ b/code/modules/clothing/masks/surgical.dm
@@ -2,7 +2,7 @@
name = "sterile mask"
desc = "A sterile mask designed to help prevent the spread of diseases."
icon_state = "sterile"
- inhand_icon_state = "sterile"
+ inhand_icon_state = "s_mask"
w_class = WEIGHT_CLASS_TINY
flags_inv = HIDEFACE|HIDESNOUT
flags_cover = MASKCOVERSMOUTH
diff --git a/code/modules/clothing/shoes/_shoes.dm b/code/modules/clothing/shoes/_shoes.dm
index 7c9a1de6b19..0c7f6e51bad 100644
--- a/code/modules/clothing/shoes/_shoes.dm
+++ b/code/modules/clothing/shoes/_shoes.dm
@@ -5,7 +5,6 @@
righthand_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi'
desc = "Comfortable-looking shoes."
gender = PLURAL //Carn: for grammarically correct text-parsing
- var/chained = FALSE
body_parts_covered = FEET
slot_flags = ITEM_SLOT_FEET
diff --git a/code/modules/clothing/shoes/boots.dm b/code/modules/clothing/shoes/boots.dm
index 0b8435a6395..7f3b6a6dd3c 100644
--- a/code/modules/clothing/shoes/boots.dm
+++ b/code/modules/clothing/shoes/boots.dm
@@ -3,8 +3,6 @@
desc = "High speed, low drag combat boots."
icon_state = "jackboots"
inhand_icon_state = "jackboots"
- lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
armor = list(MELEE = 25, BULLET = 25, LASER = 25, ENERGY = 25, BOMB = 50, BIO = 90, FIRE = 70, ACID = 50)
strip_delay = 40
resistance_flags = NONE
@@ -19,7 +17,7 @@
name = "sneakboots"
desc = "These boots have special noise cancelling soles. Perfect for stealth, if it wasn't for the color scheme."
icon_state = "sneakboots"
- inhand_icon_state = "sneakboots"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
resistance_flags = FIRE_PROOF | ACID_PROOF
clothing_traits = list(TRAIT_SILENT_FOOTSTEPS)
@@ -35,8 +33,6 @@
desc = "Nanotrasen-issue Security combat boots for combat scenarios or combat situations. All combat, all the time."
icon_state = "jackboots"
inhand_icon_state = "jackboots"
- lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
strip_delay = 30
equip_delay_other = 50
resistance_flags = NONE
@@ -58,7 +54,7 @@
name = "winter boots"
desc = "Boots lined with 'synthetic' animal fur."
icon_state = "winterboots"
- inhand_icon_state = "winterboots"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 80, FIRE = 0, ACID = 0)
cold_protection = FEET|LEGS
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
@@ -75,7 +71,7 @@
name = "ice hiking boots"
desc = "A pair of winter boots with special grips on the bottom, designed to prevent slipping on frozen surfaces."
icon_state = "iceboots"
- inhand_icon_state = "iceboots"
+ inhand_icon_state = null
clothing_flags = NOSLIP_ICE
// A pair of ice boots intended for general crew EVA use - see EVA winter coat for comparison.
@@ -96,8 +92,6 @@
desc = "Nanotrasen-issue Engineering lace-up work boots for the especially blue-collar."
icon_state = "workboots"
inhand_icon_state = "jackboots"
- lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 80, FIRE = 0, ACID = 0)
strip_delay = 20
equip_delay_other = 40
@@ -119,7 +113,7 @@
name = "russian boots"
desc = "Comfy shoes."
icon_state = "rus_shoes"
- inhand_icon_state = "rus_shoes"
+ inhand_icon_state = null
lace_time = 8 SECONDS
/obj/item/clothing/shoes/russian/Initialize(mapload)
@@ -131,10 +125,10 @@
name = "green lizardskin shoes"
desc = "They may have lost some of their lustre over the years, but these green lizardskin shoes fit you perfectly."
icon_state = "lizardskin_shoes"
- inhand_icon_state = "lizardskin_shoes"
+ inhand_icon_state = null
/obj/item/clothing/shoes/kim
name = "aerostatic boots"
desc = "A crisp, clean set of boots for working long hours on the beat."
icon_state = "aerostatic_boots"
- inhand_icon_state = "aerostatic_boots"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/shoes/costume.dm b/code/modules/clothing/shoes/costume.dm
index 21189069a7d..4ba306b2f12 100644
--- a/code/modules/clothing/shoes/costume.dm
+++ b/code/modules/clothing/shoes/costume.dm
@@ -2,7 +2,7 @@
name = "roman sandals"
desc = "Sandals with buckled leather straps on it."
icon_state = "roman"
- inhand_icon_state = "roman"
+ inhand_icon_state = "wizshoe"
strip_delay = 100
equip_delay_other = 100
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0)
@@ -12,7 +12,7 @@
name = "griffon boots"
desc = "A pair of costume boots fashioned after bird talons."
icon_state = "griffinboots"
- inhand_icon_state = "griffinboots"
+ inhand_icon_state = null
lace_time = 8 SECONDS
/obj/item/clothing/shoes/griffin/Initialize(mapload)
@@ -47,6 +47,7 @@
desc = "All this talk of antags, greytiding, and griefing... I just wanna grill for god's sake!"
name = "grilling sandals"
icon_state = "cookflops"
+ inhand_icon_state = "cookflops"
can_be_tied = FALSE
species_exception = list(/datum/species/golem)
@@ -54,28 +55,28 @@
name = "frosty boots"
desc = "For when you're stepping on up to the plate."
icon_state = "JackFrostShoes"
- inhand_icon_state = "JackFrostShoes_worn"
+ inhand_icon_state = null
/obj/item/clothing/shoes/swagshoes
name = "swag shoes"
desc = "They got me for my foams!"
icon_state = "SwagShoes"
- inhand_icon_state = "SwagShoes"
+ inhand_icon_state = null
/obj/item/clothing/shoes/glow
name = "glow shoes"
desc = "t3h c00L3st sh03z j00'LL 3v3r f1nd."
icon_state = "glow_shoes"
- inhand_icon_state = "glow_shoes"
+ inhand_icon_state = null
/obj/item/clothing/shoes/jackbros
name = "frosty boots"
desc = "For when you're stepping on up to the plate."
icon_state = "JackFrostShoes"
- inhand_icon_state = "JackFrostShoes_worn"
+ inhand_icon_state = null
/obj/item/clothing/shoes/saints
name = "saints sneakers"
desc = "Officially branded Saints sneakers. Incredibly valuable!"
icon_state = "saints_shoes"
- inhand_icon_state = "saints_shoes"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/shoes/cult.dm b/code/modules/clothing/shoes/cult.dm
index f7077a7b97d..80d03d3a09e 100644
--- a/code/modules/clothing/shoes/cult.dm
+++ b/code/modules/clothing/shoes/cult.dm
@@ -2,7 +2,7 @@
name = "\improper Nar'Sien invoker boots"
desc = "A pair of boots worn by the followers of Nar'Sie."
icon_state = "cult"
- inhand_icon_state = "cult"
+ inhand_icon_state = null
cold_protection = FEET
min_cold_protection_temperature = SHOES_MIN_TEMP_PROTECT
heat_protection = FEET
diff --git a/code/modules/clothing/shoes/galoshes.dm b/code/modules/clothing/shoes/galoshes.dm
index afb257a8058..2682af0e7fe 100644
--- a/code/modules/clothing/shoes/galoshes.dm
+++ b/code/modules/clothing/shoes/galoshes.dm
@@ -2,6 +2,7 @@
desc = "A pair of yellow rubber boots, designed to prevent slipping on wet surfaces."
name = "galoshes"
icon_state = "galoshes"
+ inhand_icon_state = "galoshes"
clothing_flags = NOSLIP
slowdown = SHOES_SLOWDOWN+1
strip_delay = 30
diff --git a/code/modules/clothing/shoes/gunboots.dm b/code/modules/clothing/shoes/gunboots.dm
index 02220ec2b61..5edb0589d7f 100644
--- a/code/modules/clothing/shoes/gunboots.dm
+++ b/code/modules/clothing/shoes/gunboots.dm
@@ -3,8 +3,6 @@
desc = "This is what all those research points added up to, the ultimate workplace hazard."
icon_state = "jackboots"
inhand_icon_state = "jackboots"
- lefthand_file = 'icons/mob/inhands/equipment/security_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/security_righthand.dmi'
/// What projectile do we shoot?
var/projectile_type = /obj/projectile/bullet/c10mm
/// Each step, this is the chance we fire a shot
diff --git a/code/modules/clothing/shoes/jumpboots.dm b/code/modules/clothing/shoes/jumpboots.dm
index f3a77ac5e7f..5d4e3654c60 100644
--- a/code/modules/clothing/shoes/jumpboots.dm
+++ b/code/modules/clothing/shoes/jumpboots.dm
@@ -2,7 +2,7 @@
name = "jump boots"
desc = "A specialized pair of combat boots with a built-in propulsion system for rapid foward movement."
icon_state = "jetboots"
- inhand_icon_state = "jetboots"
+ inhand_icon_state = null
resistance_flags = FIRE_PROOF
actions_types = list(/datum/action/item_action/bhop)
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 90, FIRE = 0, ACID = 0)
@@ -14,7 +14,7 @@
/obj/item/clothing/shoes/bhop/Initialize(mapload)
. = ..()
-
+
create_storage(type = /datum/storage/pockets/shoes)
/obj/item/clothing/shoes/bhop/ui_action_click(mob/user, action)
@@ -39,7 +39,7 @@
name = "rocket boots"
desc = "Very special boots with built-in rocket thrusters! SHAZBOT!"
icon_state = "rocketboots"
- inhand_icon_state = "rocketboots"
+ inhand_icon_state = null
actions_types = list(/datum/action/item_action/bhop/brocket)
jumpdistance = 20 //great for throwing yourself into walls and people at high speeds
jumpspeed = 5
diff --git a/code/modules/clothing/shoes/kindlekicks.dm b/code/modules/clothing/shoes/kindlekicks.dm
index 0d35641aa01..0b8a65e0d33 100644
--- a/code/modules/clothing/shoes/kindlekicks.dm
+++ b/code/modules/clothing/shoes/kindlekicks.dm
@@ -2,7 +2,7 @@
name = "Kindle Kicks"
desc = "They'll sure kindle something in you, and it's not childhood nostalgia..."
icon_state = "kindleKicks"
- inhand_icon_state = "kindleKicks"
+ inhand_icon_state = null
actions_types = list(/datum/action/item_action/kindle_kicks)
light_system = MOVABLE_LIGHT
light_range = 2
diff --git a/code/modules/clothing/shoes/magboots.dm b/code/modules/clothing/shoes/magboots.dm
index f8df5dbe1c3..282ca61861a 100644
--- a/code/modules/clothing/shoes/magboots.dm
+++ b/code/modules/clothing/shoes/magboots.dm
@@ -2,6 +2,7 @@
desc = "Magnetic boots, often used during extravehicular activity to ensure the user remains safely attached to the vehicle."
name = "magboots"
icon_state = "magboots0"
+ inhand_icon_state = "magboots"
var/magboot_state = "magboots"
var/magpulse = FALSE
var/slowdown_active = 2
diff --git a/code/modules/clothing/shoes/sandals.dm b/code/modules/clothing/shoes/sandals.dm
index 9172b0b0627..54bd8f75891 100644
--- a/code/modules/clothing/shoes/sandals.dm
+++ b/code/modules/clothing/shoes/sandals.dm
@@ -2,6 +2,7 @@
desc = "A pair of rather plain wooden sandals."
name = "sandals"
icon_state = "wizard"
+ inhand_icon_state = "wizshoe"
custom_materials = list(/datum/material/wood = MINERAL_MATERIAL_AMOUNT * 0.5)
strip_delay = 5
equip_delay_other = 50
diff --git a/code/modules/clothing/shoes/sneakers.dm b/code/modules/clothing/shoes/sneakers.dm
index c802e1cd37c..0469cf98f64 100644
--- a/code/modules/clothing/shoes/sneakers.dm
+++ b/code/modules/clothing/shoes/sneakers.dm
@@ -1,9 +1,14 @@
/obj/item/clothing/shoes/sneakers
dying_key = DYE_REGISTRY_SNEAKERS
icon_state = "sneakers"
+ inhand_icon_state = "sneakers_back"
+ lefthand_file = 'icons/mob/inhands/clothing/shoes_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/shoes_righthand.dmi'
greyscale_colors = "#2d2d33#ffffff"
greyscale_config = /datum/greyscale_config/sneakers
greyscale_config_worn = /datum/greyscale_config/sneakers_worn
+ greyscale_config_inhand_left = /datum/greyscale_config/sneakers_inhand_left
+ greyscale_config_inhand_right = /datum/greyscale_config/sneakers_inhand_right
flags_1 = IS_PLAYER_COLORABLE_1
/obj/item/clothing/shoes/sneakers/black
@@ -52,6 +57,7 @@
name = "rainbow shoes"
desc = "Very gay shoes."
icon_state = "rain_bow"
+ inhand_icon_state = "rainbow_sneakers"
greyscale_colors = null
greyscale_config = null
@@ -65,30 +71,72 @@
greyscale_colors = "#d15b1b#ffffff"
greyscale_config = /datum/greyscale_config/sneakers_orange
greyscale_config_worn = /datum/greyscale_config/sneakers_orange_worn
+ greyscale_config_inhand_left = /datum/greyscale_config/sneakers_orange_inhand_left
+ greyscale_config_inhand_right = /datum/greyscale_config/sneakers_orange_inhand_right
flags_1 = NONE
+ var/obj/item/restraints/handcuffs/attached_cuffs
+
+/obj/item/clothing/shoes/sneakers/orange/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob, (slot_flags|ITEM_SLOT_HANDCUFFED))
+
+/obj/item/clothing/shoes/sneakers/orange/handle_atom_del(atom/deleting_atom)
+ if(deleting_atom == attached_cuffs)
+ moveToNullspace(attached_cuffs)
+ return ..()
+
+/obj/item/clothing/shoes/sneakers/orange/Destroy()
+ QDEL_NULL(attached_cuffs)
+ return ..()
+
+/obj/item/clothing/shoes/sneakers/orange/Exited(atom/movable/gone, direction)
+ if(gone == attached_cuffs)
+ attached_cuffs = null
+ slowdown = SHOES_SLOWDOWN
+ update_appearance(UPDATE_ICON)
+ return ..()
+
+/obj/item/clothing/shoes/sneakers/orange/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs)
+ if(arrived.type == /obj/item/restraints/handcuffs)
+ attached_cuffs = arrived
+ slowdown = 15
+ update_appearance(UPDATE_ICON)
+ return ..()
+
+/obj/item/clothing/shoes/sneakers/orange/update_icon_state()
+ . = ..()
+ if(attached_cuffs)
+ icon_state = inhand_icon_state = "sneakers_chained"
+ else
+ icon_state = initial(icon_state)
+ inhand_icon_state = initial(inhand_icon_state)
+ update_greyscale()
/obj/item/clothing/shoes/sneakers/orange/attack_self(mob/user)
- if (chained)
- chained = FALSE
- slowdown = SHOES_SLOWDOWN
- new /obj/item/restraints/handcuffs( user.loc )
- icon_state = initial(icon_state)
- return
+ if(attached_cuffs)
+ to_chat(user, span_notice("You remove [attached_cuffs] from [src]."))
+ if(Adjacent(user)) //tk is love, tk is life.
+ user.put_in_hands(attached_cuffs)
+ else
+ attached_cuffs.forceMove(drop_location())
+ return
+ return ..()
-/obj/item/clothing/shoes/sneakers/orange/attackby(obj/H, loc, params)
- ..()
- // Note: not using istype here because we want to ignore all subtypes
- if (H.type == /obj/item/restraints/handcuffs && !chained)
- qdel(H)
- chained = TRUE
- slowdown = 15
- icon_state = "sneakers_chained"
- return
+/obj/item/clothing/shoes/sneakers/orange/pre_attack(atom/movable/attacking_movable, mob/living/user, params)
+ if(attached_cuffs || attacking_movable.type != /obj/item/restraints/handcuffs)
+ return ..()
+ attacking_movable.forceMove(src)
+ return TRUE
+
+/obj/item/clothing/shoes/sneakers/orange/attackby(obj/item/attacking_item, mob/user, params)
+ if(attached_cuffs || attacking_item.type != /obj/item/restraints/handcuffs) // Note: not using istype here because we want to ignore all subtypes
+ return ..()
+ attacking_item.forceMove(src)
/obj/item/clothing/shoes/sneakers/orange/allow_attack_hand_drop(mob/user)
if(ishuman(user))
var/mob/living/carbon/human/C = user
- if(C.shoes == src && chained == 1)
+ if(C.shoes == src && attached_cuffs)
to_chat(user, span_warning("You need help taking these off!"))
return FALSE
return ..()
@@ -97,7 +145,7 @@
var/mob/m = usr
if(ishuman(m))
var/mob/living/carbon/human/c = m
- if(c.shoes == src && chained == 1)
+ if(c.shoes == src && attached_cuffs)
to_chat(c, span_warning("You need help taking these off!"))
return
return ..()
diff --git a/code/modules/clothing/shoes/wheelys.dm b/code/modules/clothing/shoes/wheelys.dm
index 29dfe19c256..055c463c44b 100644
--- a/code/modules/clothing/shoes/wheelys.dm
+++ b/code/modules/clothing/shoes/wheelys.dm
@@ -5,7 +5,9 @@
greyscale_colors = "#545454#ffffff"
icon_state = "sneakers"
greyscale_config = /datum/greyscale_config/sneakers_wheelys
- inhand_icon_state = "wheelys"
+ inhand_icon_state = "sneakers_back"
+ greyscale_config_inhand_left = /datum/greyscale_config/sneakers_inhand_left
+ greyscale_config_inhand_right = /datum/greyscale_config/sneakers_inhand_right
worn_icon = 'icons/mob/large-worn-icons/64x64/feet.dmi'
worn_x_dimension = 64
worn_y_dimension = 64
@@ -60,6 +62,7 @@
name = "roller skates"
desc = "An EightO brand pair of roller skates. The wheels are retractable, though're quite bulky to walk in."
icon_state = "rollerskates"
+ inhand_icon_state = null
greyscale_colors = null
greyscale_config = null
worn_icon_state = "rollerskates"
@@ -72,6 +75,7 @@
name = "ski shoes"
desc = "A pair of shoes equipped with foldable skis! Very handy to move in snowy environments unimpeded."
icon_state = "skishoes"
+ inhand_icon_state = null
greyscale_colors = null
greyscale_config = null
worn_icon_state = "skishoes"
diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm
index 02fb8c90931..e69e235f67d 100644
--- a/code/modules/clothing/spacesuits/_spacesuits.dm
+++ b/code/modules/clothing/spacesuits/_spacesuits.dm
@@ -5,9 +5,9 @@
/obj/item/clothing/head/helmet/space
name = "space helmet"
icon_state = "spaceold"
+ inhand_icon_state = "space_helmet"
desc = "A special helmet with solar UV shielding to protect your eyes from harmful rays."
clothing_flags = STOPSPRESSUREDAMAGE | THICKMATERIAL | SNUG_FIT | PLASMAMAN_HELMET_EXEMPT
- inhand_icon_state = "spaceold"
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 80, ACID = 70)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDEFACIALHAIR|HIDESNOUT
diff --git a/code/modules/clothing/spacesuits/freedom.dm b/code/modules/clothing/spacesuits/freedom.dm
index 426c8360834..9a05b743a53 100644
--- a/code/modules/clothing/spacesuits/freedom.dm
+++ b/code/modules/clothing/spacesuits/freedom.dm
@@ -2,7 +2,7 @@
name = "eagle helmet"
desc = "An advanced, space-proof helmet. It appears to be modeled after an old-world eagle."
icon_state = "griffinhat"
- inhand_icon_state = "griffinhat"
+ inhand_icon_state = null
armor = list(MELEE = 20, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 100, BIO = 100, FIRE = 80, ACID = 80)
strip_delay = 130
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
@@ -12,7 +12,7 @@
name = "eagle suit"
desc = "An advanced, light suit, fabricated from a mixture of synthetic feathers and space-resistant material. A gun holster appears to be integrated into the suit and the wings appear to be stuck in 'freedom' mode."
icon_state = "freedom"
- inhand_icon_state = "freedom"
+ inhand_icon_state = null
allowed = list(/obj/item/gun, /obj/item/ammo_box, /obj/item/ammo_casing, /obj/item/melee/baton, /obj/item/restraints/handcuffs, /obj/item/tank/internals)
armor = list(MELEE = 20, BULLET = 40, LASER = 30,ENERGY = 40, BOMB = 100, BIO = 100, FIRE = 80, ACID = 80)
strip_delay = 130
diff --git a/code/modules/clothing/spacesuits/pirate.dm b/code/modules/clothing/spacesuits/pirate.dm
index 93149f4fdbd..e345531c629 100644
--- a/code/modules/clothing/spacesuits/pirate.dm
+++ b/code/modules/clothing/spacesuits/pirate.dm
@@ -2,14 +2,14 @@
name = "modified EVA helmet"
desc = "A modified helmet to allow space pirates to intimidate their customers whilst staying safe from the void. Comes with some additional protection."
icon_state = "spacepirate"
- inhand_icon_state = "spacepiratehelmet"
+ inhand_icon_state = "space_pirate_helmet"
armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 60, ACID = 75)
strip_delay = 40
equip_delay_other = 20
/obj/item/clothing/head/helmet/space/pirate/bandana
icon_state = "spacebandana"
- inhand_icon_state = "spacepiratehelmet"
+ inhand_icon_state = "space_bandana_helmet"
/obj/item/clothing/suit/space/pirate
name = "modified EVA suit"
diff --git a/code/modules/clothing/spacesuits/plasmamen.dm b/code/modules/clothing/spacesuits/plasmamen.dm
index 55c96a6547d..1a32edb6325 100644
--- a/code/modules/clothing/spacesuits/plasmamen.dm
+++ b/code/modules/clothing/spacesuits/plasmamen.dm
@@ -178,94 +178,94 @@
name = "security plasma envirosuit helmet"
desc = "A plasmaman containment helmet designed for security officers, protecting them from burning alive, alongside other undesirables."
icon_state = "security_envirohelm"
- inhand_icon_state = "security_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75)
/obj/item/clothing/head/helmet/space/plasmaman/security/warden
name = "warden's plasma envirosuit helmet"
desc = "A plasmaman containment helmet designed for the warden. A pair of white stripes being added to differeciate them from other members of security."
icon_state = "warden_envirohelm"
- inhand_icon_state = "warden_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/security/head_of_security
name = "head of security's plasma envirosuit helmet"
desc = "A special containment helmet designed for the Head of Security. A pair of gold stripes are added to differentiate them from other members of security."
icon_state = "hos_envirohelm"
- inhand_icon_state = "hos_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, WOUND = 10)
/obj/item/clothing/head/helmet/space/plasmaman/prisoner
name = "prisoner's plasma envirosuit helmet"
desc = "A plasmaman containment helmet for prisoners."
icon_state = "prisoner_envirohelm"
- inhand_icon_state = "prisoner_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/medical
name = "medical doctor's plasma envirosuit helmet"
desc = "An envirohelmet designed for plasmaman medical doctors, having two stripes down its length to denote as much."
icon_state = "doctor_envirohelm"
- inhand_icon_state = "doctor_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/paramedic
name = "paramedic plasma envirosuit helmet"
desc = "An envirohelmet designed for plasmaman paramedics, with darker blue stripes compared to the medical model."
icon_state = "paramedic_envirohelm"
- inhand_icon_state = "paramedic_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/viro
name = "virology plasma envirosuit helmet"
desc = "The helmet worn by the safest people on the station, those who are completely immune to the monstrosities they create."
icon_state = "virologist_envirohelm"
- inhand_icon_state = "virologist_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/chemist
name = "chemistry plasma envirosuit helmet"
desc = "A plasmaman envirosuit designed for chemists, two orange stripes going down its face."
icon_state = "chemist_envirohelm"
- inhand_icon_state = "chemist_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/chief_medical_officer
name = "chief medical officer's plasma envirosuit helmet"
desc = "A special containment helmet designed for the Chief Medical Officer. A gold stripe applied to differentiate them from other medical staff."
icon_state = "cmo_envirohelm"
- inhand_icon_state = "cmo_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/science
name = "science plasma envirosuit helmet"
desc = "A plasmaman envirohelmet designed for scientists."
icon_state = "scientist_envirohelm"
- inhand_icon_state = "scientist_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/robotics
name = "robotics plasma envirosuit helmet"
desc = "A plasmaman envirohelmet designed for roboticists."
icon_state = "roboticist_envirohelm"
- inhand_icon_state = "roboticist_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/genetics
name = "geneticist's plasma envirosuit helmet"
desc = "A plasmaman envirohelmet designed for geneticists."
icon_state = "geneticist_envirohelm"
- inhand_icon_state = "geneticist_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/research_director
name = "research director's plasma envirosuit helmet"
desc = "A special containment helmet designed for the Research Director. A light brown design is applied to differentiate them from other scientists."
icon_state = "rd_envirohelm"
- inhand_icon_state = "rd_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/engineering
name = "engineering plasma envirosuit helmet"
desc = "A space-worthy helmet specially designed for engineer plasmamen, the usual purple stripes being replaced by engineering's orange."
icon_state = "engineer_envirohelm"
- inhand_icon_state = "engineer_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75)
/obj/item/clothing/head/helmet/space/plasmaman/atmospherics
name = "atmospherics plasma envirosuit helmet"
desc = "A space-worthy helmet specially designed for atmos technician plasmamen, the usual purple stripes being replaced by atmos' blue. Has improved thermal shielding."
icon_state = "atmos_envirohelm"
- inhand_icon_state = "atmos_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75)
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT // Same protection as the Atmospherics Hardhat
@@ -273,7 +273,7 @@
name = "chief engineer's plasma envirosuit helmet"
desc = "A special containment helmet designed for the Chief Engineer, the usual purple stripes being replaced by the chief's green. Has improved thermal shielding."
icon_state = "ce_envirohelm"
- inhand_icon_state = "ce_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 100, ACID = 75)
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT // Same protection as the Atmospherics Hardhat
@@ -282,32 +282,32 @@
name = "cargo plasma envirosuit helmet"
desc = "A plasmaman envirohelmet designed for cargo techs and quartermasters."
icon_state = "cargo_envirohelm"
- inhand_icon_state = "cargo_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/mining
name = "mining plasma envirosuit helmet"
desc = "A khaki helmet given to plasmamen miners operating on lavaland."
icon_state = "explorer_envirohelm"
- inhand_icon_state = "explorer_envirohelm"
+ inhand_icon_state = null
visor_icon = "explorer_envisor"
/obj/item/clothing/head/helmet/space/plasmaman/chaplain
name = "chaplain's plasma envirosuit helmet"
desc = "An envirohelmet specially designed for only the most pious of plasmamen."
icon_state = "chap_envirohelm"
- inhand_icon_state = "chap_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/white
name = "white plasma envirosuit helmet"
desc = "A generic white envirohelm."
icon_state = "white_envirohelm"
- inhand_icon_state = "white_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/curator
name = "curator's plasma envirosuit helmet"
desc = "A slight modification on a traditional voidsuit helmet, this helmet was Nanotrasen's first solution to the *logistical problems* that come with employing plasmamen. Despite their limitations, these helmets still see use by historians and old-school plasmamen alike."
icon_state = "prototype_envirohelm"
- inhand_icon_state = "prototype_envirohelm"
+ inhand_icon_state = "void_helmet"
actions_types = list(/datum/action/item_action/toggle_welding_screen)
smile_state = "prototype_smile"
visor_icon = "prototype_envisor"
@@ -316,26 +316,26 @@
name = "botany plasma envirosuit helmet"
desc = "A green and blue envirohelmet designating its wearer as a botanist. While not specifically designed for it, it would protect against minor plant-related injuries."
icon_state = "botany_envirohelm"
- inhand_icon_state = "botany_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/janitor
name = "janitor's plasma envirosuit helmet"
desc = "A grey helmet bearing a pair of purple stripes, designating the wearer as a janitor."
icon_state = "janitor_envirohelm"
- inhand_icon_state = "janitor_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/mime
name = "mime envirosuit helmet"
desc = "The make-up is painted on, it's a miracle it doesn't chip. It's not very colourful."
icon_state = "mime_envirohelm"
- inhand_icon_state = "mime_envirohelm"
+ inhand_icon_state = null
visor_icon = "mime_envisor"
/obj/item/clothing/head/helmet/space/plasmaman/clown
name = "clown envirosuit helmet"
desc = "The make-up is painted on, it's a miracle it doesn't chip. 'HONK!'"
icon_state = "clown_envirohelm"
- inhand_icon_state = "clown_envirohelm"
+ inhand_icon_state = null
visor_icon = "clown_envisor"
smile_state = "clown_smile"
@@ -343,29 +343,29 @@
name = "head of personnel's envirosuit helmet"
desc = "A special containment helmet designed for the Head of Personnel. Embarrassingly enough, it looks way too much like the captain's design save for the red stripes."
icon_state = "hop_envirohelm"
- inhand_icon_state = "hop_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/captain
name = "captain's plasma envirosuit helmet"
desc = "A special containment helmet designed for the Captain. Embarrassingly enough, it looks way too much like the Head of Personnel's design save for the gold stripes. I mean, come on. Gold stripes can fix anything."
icon_state = "captain_envirohelm"
- inhand_icon_state = "captain_envirohelm"
+ inhand_icon_state = null
armor = list(MELEE = 20, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 100, FIRE = 100, ACID = 75, WOUND = 10)
/obj/item/clothing/head/helmet/space/plasmaman/centcom_commander
name = "CentCom commander plasma envirosuit helmet"
desc = "A special containment helmet designed for the Higher Central Command Staff. Not many of these exist, as CentCom does not usually employ plasmamen to higher staff positions due to their complications."
icon_state = "commander_envirohelm"
- inhand_icon_state = "commander_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/centcom_official
name = "CentCom official plasma envirosuit helmet"
desc = "A special containment helmet designed for CentCom Staff. They sure do love their green."
icon_state = "official_envirohelm"
- inhand_icon_state = "official_envirohelm"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/space/plasmaman/centcom_intern
name = "CentCom intern plasma envirosuit helmet"
desc = "A special containment helmet designed for CentCom Staff. You know, so any coffee spills don't kill the poor sod."
icon_state = "intern_envirohelm"
- inhand_icon_state = "intern_envirohelm"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/spacesuits/santa.dm b/code/modules/clothing/spacesuits/santa.dm
index c67b2e5d745..d7ffc91acec 100644
--- a/code/modules/clothing/spacesuits/santa.dm
+++ b/code/modules/clothing/spacesuits/santa.dm
@@ -2,6 +2,7 @@
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
+ inhand_icon_state = "santahat"
flags_cover = HEADCOVERSEYES
dog_fashion = /datum/dog_fashion/head/santa
diff --git a/code/modules/clothing/spacesuits/softsuit.dm b/code/modules/clothing/spacesuits/softsuit.dm
index b383e25d418..7958bfc9cc2 100644
--- a/code/modules/clothing/spacesuits/softsuit.dm
+++ b/code/modules/clothing/spacesuits/softsuit.dm
@@ -3,12 +3,12 @@
name = "NASA Void Helmet"
desc = "An old, NASA CentCom branch designed, dark red space suit helmet."
icon_state = "void"
- inhand_icon_state = "void"
+ inhand_icon_state = "void_helmet"
/obj/item/clothing/suit/space/nasavoid
name = "NASA Voidsuit"
icon_state = "void"
- inhand_icon_state = "void"
+ inhand_icon_state = null
desc = "An old, NASA CentCom branch designed, dark red space suit."
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool)
@@ -16,12 +16,11 @@
name = "Engineering Void Helmet"
desc = "A CentCom engineering dark red space suit helmet. While old and dusty, it still gets the job done."
icon_state = "void"
- inhand_icon_state = "void"
/obj/item/clothing/suit/space/nasavoid/old
name = "Engineering Voidsuit"
icon_state = "void"
- inhand_icon_state = "void"
+ inhand_icon_state = null
desc = "A CentCom engineering dark red space suit. Age has degraded the suit making it difficult to move around in."
slowdown = 4
allowed = list(/obj/item/flashlight, /obj/item/tank/internals, /obj/item/multitool)
@@ -37,7 +36,7 @@
/obj/item/clothing/head/helmet/space/eva
name = "EVA helmet"
icon_state = "space"
- inhand_icon_state = "space"
+ inhand_icon_state = "space_helmet"
desc = "A lightweight space helmet with the basic ability to protect the wearer from the vacuum of space during emergencies."
flash_protect = FLASH_PROTECTION_NONE
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 50, ACID = 65)
@@ -65,7 +64,7 @@
name = "emergency space helmet"
desc = "A bulky, air-tight helmet meant to protect the user during emergency situations. It doesn't look very durable."
icon_state = "syndicate-helm-orange"
- inhand_icon_state = "syndicate-helm-orange"
+ inhand_icon_state = "syndicate-helm-orange" //resprite?
armor = list(MELEE = 5, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
strip_delay = 65
diff --git a/code/modules/clothing/spacesuits/specialops.dm b/code/modules/clothing/spacesuits/specialops.dm
index bc6e081ff7c..c656f4516c2 100644
--- a/code/modules/clothing/spacesuits/specialops.dm
+++ b/code/modules/clothing/spacesuits/specialops.dm
@@ -4,6 +4,7 @@
greyscale_config = /datum/greyscale_config/beret_badge
greyscale_config_worn = /datum/greyscale_config/beret_badge/worn
icon_state = "beret_badge"
+ inhand_icon_state = null
greyscale_colors = "#397F3F#FFCE5B"
flags_inv = 0
diff --git a/code/modules/clothing/spacesuits/syndi.dm b/code/modules/clothing/spacesuits/syndi.dm
index c31e95f244d..f9d388f4259 100644
--- a/code/modules/clothing/spacesuits/syndi.dm
+++ b/code/modules/clothing/spacesuits/syndi.dm
@@ -2,7 +2,7 @@
/obj/item/clothing/head/helmet/space/syndicate
name = "red space helmet"
icon_state = "syndicate"
- inhand_icon_state = "syndicate"
+ inhand_icon_state = "space_syndicate"
desc = "Has a tag on it: Totally not property of an enemy corporation, honest!"
armor = list(MELEE = 40, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 80, ACID = 85)
@@ -20,7 +20,7 @@
/obj/item/clothing/head/helmet/space/syndicate/green
name = "green space helmet"
icon_state = "syndicate-helm-green"
- inhand_icon_state = "syndicate-helm-green"
+ inhand_icon_state = "space_helmet_syndicate"
/obj/item/clothing/suit/space/syndicate/green
name = "green space suit"
@@ -140,7 +140,7 @@
desc = "A specialised black and gold helmet that's more compact than its standard Syndicate counterpart. Can be ultra-compressed into even the tightest of spaces."
w_class = WEIGHT_CLASS_SMALL
icon_state = "syndicate-contract-helm"
- inhand_icon_state = "syndicate-contract-helm"
+ inhand_icon_state = "contractor_helmet"
/obj/item/clothing/suit/space/syndicate/contract
name = "contractor space suit"
@@ -148,7 +148,7 @@
slowdown = 1
w_class = WEIGHT_CLASS_SMALL
icon_state = "syndicate-contract"
- inhand_icon_state = "syndicate-contract"
+ inhand_icon_state = null
//Black with yellow/red engineering syndicate space suit
/obj/item/clothing/head/helmet/space/syndicate/black/engie
diff --git a/code/modules/clothing/suits/ablativecoat.dm b/code/modules/clothing/suits/ablativecoat.dm
index 9db23eb3a00..be67f80b5bb 100644
--- a/code/modules/clothing/suits/ablativecoat.dm
+++ b/code/modules/clothing/suits/ablativecoat.dm
@@ -18,7 +18,7 @@
icon = 'icons/obj/clothing/suits/armor.dmi'
icon_state = "ablativecoat"
worn_icon = 'icons/mob/clothing/suits/armor.dmi'
- inhand_icon_state = "ablativecoat"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
armor = list(MELEE = 10, BULLET = 10, LASER = 60, ENERGY = 60, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100)
hoodtype = /obj/item/clothing/head/hooded/ablative
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index a8e4cc4185c..5ae286968a6 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -22,7 +22,7 @@
name = "armor vest"
desc = "A slim Type I armored vest that provides decent protection against most types of damage."
icon_state = "armoralt"
- inhand_icon_state = "armoralt"
+ inhand_icon_state = "armor"
blood_overlay_type = "armor"
dog_fashion = /datum/dog_fashion/back
@@ -71,7 +71,7 @@
name = "large armor vest"
desc = "A large, yet comfortable piece of armor, protecting you from some threats."
icon_state = "blueshift"
- inhand_icon_state = "blueshift"
+ inhand_icon_state = null
custom_premium_price = PAYCHECK_COMMAND
/obj/item/clothing/suit/armor/vest/cuirass
@@ -162,7 +162,7 @@
name = "captain's parade coat"
desc = "For when an armoured vest isn't fashionable enough."
icon_state = "capformal"
- inhand_icon_state = "capspacesuit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/suit/armor/vest/capcarapace/captains_formal/Initialize(mapload)
@@ -186,7 +186,7 @@
name = "bone armor"
desc = "A tribal armor plate, crafted from animal bone."
icon_state = "bonearmor"
- inhand_icon_state = "bonearmor"
+ inhand_icon_state = null
blood_overlay_type = "armor"
armor = list(MELEE = 35, BULLET = 25, LASER = 25, ENERGY = 35, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50, WOUND = 10)
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS
@@ -235,7 +235,7 @@
name = "infiltrator vest"
desc = "This vest appears to be made of of highly flexible materials that absorb impacts with ease."
icon_state = "infiltrator"
- inhand_icon_state = "infiltrator"
+ inhand_icon_state = null
armor = list(MELEE = 40, BULLET = 40, LASER = 30, ENERGY = 40, BOMB = 70, BIO = 0, FIRE = 100, ACID = 100)
resistance_flags = FIRE_PROOF | ACID_PROOF
strip_delay = 80
@@ -310,26 +310,26 @@
name = "plate armour"
desc = "A classic suit of plate armour, highly effective at stopping melee attacks."
icon_state = "knight_green"
- inhand_icon_state = "knight_green"
+ inhand_icon_state = null
allowed = list(/obj/item/nullrod, /obj/item/claymore, /obj/item/banner, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
/obj/item/clothing/suit/armor/riot/knight/yellow
icon_state = "knight_yellow"
- inhand_icon_state = "knight_yellow"
+ inhand_icon_state = null
/obj/item/clothing/suit/armor/riot/knight/blue
icon_state = "knight_blue"
- inhand_icon_state = "knight_blue"
+ inhand_icon_state = null
/obj/item/clothing/suit/armor/riot/knight/red
icon_state = "knight_red"
- inhand_icon_state = "knight_red"
+ inhand_icon_state = null
/obj/item/clothing/suit/armor/riot/knight/greyscale
name = "knight armour"
desc = "A classic suit of armour, able to be made from many different materials."
icon_state = "knight_greyscale"
- inhand_icon_state = "knight_greyscale"
+ inhand_icon_state = null
material_flags = MATERIAL_EFFECTS | MATERIAL_ADD_PREFIX | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS//Can change color and add prefix
armor = list(MELEE = 35, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 10, BIO = 10, FIRE = 40, ACID = 40, WOUND = 15)
@@ -337,7 +337,7 @@
name = "durathread vest"
desc = "A vest made of durathread with strips of leather acting as trauma plates."
icon_state = "durathread"
- inhand_icon_state = "durathread"
+ inhand_icon_state = null
strip_delay = 60
equip_delay_other = 40
max_integrity = 200
@@ -348,14 +348,14 @@
name = "russian vest"
desc = "A bulletproof vest with forest camo. Good thing there's plenty of forests to hide in around here, right?"
icon_state = "rus_armor"
- inhand_icon_state = "rus_armor"
+ inhand_icon_state = null
armor = list(MELEE = 25, BULLET = 30, LASER = 0, ENERGY = 10, BOMB = 10, BIO = 0, FIRE = 20, ACID = 50, WOUND = 10)
/obj/item/clothing/suit/armor/vest/russian_coat
name = "russian battle coat"
desc = "Used in extremly cold fronts, made out of real bears."
icon_state = "rus_coat"
- inhand_icon_state = "rus_coat"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
@@ -365,7 +365,7 @@
name = "\improper Elder Atmosian Armor"
desc = "A superb armor made with the toughest and rarest materials available to man."
icon_state = "h2armor"
- inhand_icon_state = "h2armor"
+ inhand_icon_state = null
material_flags = MATERIAL_EFFECTS | MATERIAL_COLOR | MATERIAL_AFFECT_STATISTICS//Can change color and add prefix
armor = list(MELEE = 25, BULLET = 20, LASER = 30, ENERGY = 30, BOMB = 85, BIO = 10, FIRE = 65, ACID = 40, WOUND = 15)
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 72d6b7b3446..0aba4fb2961 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -2,6 +2,7 @@
/obj/item/clothing/head/bio_hood
name = "bio hood"
icon_state = "bio"
+ inhand_icon_state = "bio_hood"
desc = "A hood that protects the head and face from biological contaminants."
clothing_flags = THICKMATERIAL | BLOCK_GAS_SMOKE_EFFECT | SNUG_FIT | PLASMAMAN_HELMET_EXEMPT
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 30, ACID = 100)
diff --git a/code/modules/clothing/suits/chaplainsuits.dm b/code/modules/clothing/suits/chaplainsuits.dm
index c6acf66d02c..32a467e96a0 100644
--- a/code/modules/clothing/suits/chaplainsuits.dm
+++ b/code/modules/clothing/suits/chaplainsuits.dm
@@ -46,14 +46,14 @@
name = "student robe"
desc = "The uniform of a bygone institute of learning."
icon_state = "studentuni"
- inhand_icon_state = "studentuni"
+ inhand_icon_state = null
body_parts_covered = ARMS|CHEST
/obj/item/clothing/suit/chaplainsuit/armor/witchhunter
name = "witchunter garb"
desc = "This worn outfit saw much use back in the day."
icon_state = "witchhunter"
- inhand_icon_state = "witchhunter"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
/obj/item/clothing/suit/hooded/chaplainsuit/monkhabit
@@ -70,7 +70,7 @@
name = "monk's hood"
desc = "For when a man wants to cover up his tonsure."
icon_state = "monkhood"
- inhand_icon_state = "monkhood"
+ inhand_icon_state = null
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS
@@ -78,7 +78,7 @@
name = "eastern monk's robes"
desc = "Best combined with a shaved head."
icon_state = "monkrobeeast"
- inhand_icon_state = "monkrobeeast"
+ inhand_icon_state = null
body_parts_covered = GROIN|LEGS
flags_inv = HIDEJUMPSUIT
@@ -86,7 +86,7 @@
name = "white robe"
desc = "Good for clerics and sleepy crewmembers."
icon_state = "whiterobe"
- inhand_icon_state = "whiterobe"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
@@ -103,7 +103,7 @@
name = "forgotten helmet"
desc = "It has the unyielding gaze of a god eternally forgotten."
icon_state = "clockwork_helmet"
- inhand_icon_state = "clockwork_helmet_inhand"
+ inhand_icon_state = null
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -114,7 +114,7 @@
name = "forgotten armour"
desc = "It sounds like hissing steam, ticking cogs, gone silent, It looks like a dead machine, trying to tick with life."
icon_state = "clockwork_cuirass"
- inhand_icon_state = "clockwork_cuirass_inhand"
+ inhand_icon_state = null
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
slowdown = 0
clothing_flags = NONE
@@ -123,7 +123,7 @@
name = "crusader helmet"
desc = "Deus Vult."
icon_state = "knight_templar"
- inhand_icon_state = "knight_templar"
+ inhand_icon_state = null
armor = list(MELEE = 50, BULLET = 10, LASER = 10, ENERGY = 10, BOMB = 0, BIO = 0, FIRE = 80, ACID = 80)
flags_inv = HIDEMASK|HIDEEARS|HIDEEYES|HIDEFACE|HIDEHAIR|HIDESNOUT
flags_cover = HEADCOVERSEYES | HEADCOVERSMOUTH
@@ -134,7 +134,7 @@
name = "crusader armour"
desc = "God wills it!"
icon_state = "knight_templar"
- inhand_icon_state = "knight_templar"
+ inhand_icon_state = null
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
slowdown = 0
clothing_flags = NONE
@@ -144,26 +144,26 @@
desc = "A cage that restrains the will of the self, allowing one to see the profane world for what it is."
flags_inv = NONE
icon_state = "cage"
- inhand_icon_state = "cage"
+ inhand_icon_state = null
worn_y_offset = 7
/obj/item/clothing/head/helmet/chaplain/ancient
name = "ancient helmet"
desc = "None may pass!"
icon_state = "knight_ancient"
- inhand_icon_state = "knight_ancient"
+ inhand_icon_state = null
/obj/item/clothing/suit/chaplainsuit/armor/ancient
name = "ancient armour"
desc = "Defend the treasure..."
icon_state = "knight_ancient"
- inhand_icon_state = "knight_ancient"
+ inhand_icon_state = null
/obj/item/clothing/head/helmet/chaplain/witchunter_hat
name = "witchunter hat"
desc = "This hat saw much use back in the day."
icon_state = "witchhunterhat"
- inhand_icon_state = "witchhunterhat"
+ inhand_icon_state = null
flags_cover = HEADCOVERSEYES
flags_inv = HIDEEYES
@@ -171,7 +171,7 @@
name = "adept hood"
desc = "Its only heretical when others do it."
icon_state = "crusader"
- inhand_icon_state = "crusader"
+ inhand_icon_state = null
flags_cover = HEADCOVERSEYES
flags_inv = HIDEHAIR|HIDEFACE|HIDEEARS
@@ -179,7 +179,7 @@
name = "adept robes"
desc = "The ideal outfit for burning the unfaithful."
icon_state = "crusader"
- inhand_icon_state = "crusader"
+ inhand_icon_state = null
/obj/item/clothing/suit/chaplainsuit/armor/crusader
name = "Crusader's Armour"
@@ -202,7 +202,7 @@
icon_state = "chaplain_hoodie"
icon = 'icons/obj/clothing/suits/chaplain.dmi'
worn_icon = 'icons/mob/clothing/suits/chaplain.dmi'
- inhand_icon_state = "chaplain_hoodie"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
allowed = list(/obj/item/storage/book/bible, /obj/item/nullrod, /obj/item/reagent_containers/cup/glass/bottle/holywater, /obj/item/storage/fancy/candle_box, /obj/item/candle, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman)
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood
@@ -218,7 +218,7 @@
name = "leader hoodie"
desc = "Now you're ready for some 50 dollar bling water."
icon_state = "chaplain_hoodie_leader"
- inhand_icon_state = "chaplain_hoodie_leader"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/chaplain_hood/leader
/obj/item/clothing/head/hooded/chaplain_hood/leader
diff --git a/code/modules/clothing/suits/cloaks.dm b/code/modules/clothing/suits/cloaks.dm
index ee3f01ab9d5..1374551829b 100644
--- a/code/modules/clothing/suits/cloaks.dm
+++ b/code/modules/clothing/suits/cloaks.dm
@@ -5,7 +5,7 @@
desc = "It's a cape that can be worn around your neck."
icon = 'icons/obj/clothing/cloaks.dmi'
icon_state = "qmcloak"
- inhand_icon_state = "qmcloak"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_SMALL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDESUITSTORAGE
diff --git a/code/modules/clothing/suits/costume.dm b/code/modules/clothing/suits/costume.dm
index 251cd2b1b7e..c1212ec98aa 100644
--- a/code/modules/clothing/suits/costume.dm
+++ b/code/modules/clothing/suits/costume.dm
@@ -23,7 +23,7 @@
name = "pirate coat"
desc = "Yarr."
icon_state = "pirate"
- inhand_icon_state = "pirate"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
allowed = list(/obj/item/melee/energy/sword/pirate, /obj/item/clothing/glasses/eyepatch, /obj/item/reagent_containers/cup/glass/bottle/rum)
species_exception = list(/datum/species/golem)
@@ -38,7 +38,7 @@
name = "pirate captain coat"
desc = "Yarr."
icon_state = "hgpirate"
- inhand_icon_state = "hgpirate"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/pirate/armored
armor = list(MELEE = 30, BULLET = 50, LASER = 30,ENERGY = 40, BOMB = 30, BIO = 30, FIRE = 60, ACID = 75)
@@ -50,7 +50,7 @@
name = "cyborg suit"
desc = "Suit for a cyborg costume."
icon_state = "death"
- inhand_icon_state = "death"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS|FEET
flags_1 = CONDUCT_1
fire_resist = T0C+5200
@@ -60,7 +60,7 @@
name = "justice suit"
desc = "this pretty much looks ridiculous" //Needs no fixing
icon_state = "justice"
- inhand_icon_state = "justice"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
armor = list(MELEE = 35, BULLET = 30, LASER = 30, ENERGY = 40, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50)
@@ -86,7 +86,7 @@
name = "purple bartender apron"
desc = "A fancy purple apron for a stylish person."
icon_state = "purplebartenderapron"
- inhand_icon_state = "purplebartenderapron"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/syndicatefake
@@ -106,7 +106,7 @@
name = "\improper Hastur's robe"
desc = "Robes not meant to be worn by man."
icon_state = "hastur"
- inhand_icon_state = "hastur"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -131,7 +131,7 @@
name = "monkey suit"
desc = "A suit that looks like a primate."
icon_state = "monkeysuit"
- inhand_icon_state = "monkeysuit"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS|GROIN|LEGS|FEET|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
@@ -141,7 +141,7 @@
icon_state = "owl_wings"
icon = 'icons/obj/clothing/suits/costume.dmi'
worn_icon = 'icons/mob/clothing/suits/costume.dmi'
- inhand_icon_state = "owl_wings"
+ inhand_icon_state = null
toggle_noun = "wings"
body_parts_covered = ARMS|CHEST
@@ -153,7 +153,7 @@
name = "griffon cloak"
desc = "A plush white cloak made of synthetic feathers. Soft to the touch, stylish, and a 2 meter wing span that will drive your captives mad."
icon_state = "griffin_wings"
- inhand_icon_state = "griffin_wings"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/cardborg
name = "cardborg suit"
@@ -187,7 +187,7 @@
name = "snowman outfit"
desc = "Two white spheres covered in white glitter. 'Tis the season."
icon_state = "snowman"
- inhand_icon_state = "snowman"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN
flags_inv = HIDEJUMPSUIT
@@ -195,26 +195,26 @@
name = "poncho"
desc = "Your classic, non-racist poncho."
icon_state = "classicponcho"
- inhand_icon_state = "classicponcho"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/costume/poncho/green
name = "green poncho"
desc = "Your classic, non-racist poncho. This one is green."
icon_state = "greenponcho"
- inhand_icon_state = "greenponcho"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/poncho/red
name = "red poncho"
desc = "Your classic, non-racist poncho. This one is red."
icon_state = "redponcho"
- inhand_icon_state = "redponcho"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/poncho/ponchoshame
name = "poncho of shame"
desc = "Forced to live on your shameful acting as a fake Mexican, you and your poncho have grown inseparable. Literally."
icon_state = "ponchoshame"
- inhand_icon_state = "ponchoshame"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/poncho/ponchoshame/Initialize(mapload)
. = ..()
@@ -370,7 +370,7 @@
name = "shrine maiden's outfit"
desc = "Makes you want to exterminate some troublesome youkai."
icon_state = "shrine_maiden"
- inhand_icon_state = "shrine_maiden"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
flags_inv = HIDEJUMPSUIT
@@ -378,31 +378,31 @@
name = "striped sweater"
desc = "Reminds you of someone, but you just can't put your finger on it..."
icon_state = "waldo_shirt"
- inhand_icon_state = "waldo_shirt"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/dracula
name = "dracula coat"
desc = "Looks like this belongs in a very old movie set."
icon_state = "draculacoat"
- inhand_icon_state = "draculacoat"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/drfreeze_coat
name = "doctor freeze's labcoat"
desc = "A labcoat imbued with the power of features and freezes."
icon_state = "drfreeze_coat"
- inhand_icon_state = "drfreeze_coat"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/gothcoat
name = "gothic coat"
desc = "Perfect for those who want to stalk around a corner of a bar."
icon_state = "gothcoat"
- inhand_icon_state = "gothcoat"
+ inhand_icon_state = null
/obj/item/clothing/suit/costume/xenos
name = "xenos suit"
desc = "A suit made out of chitinous alien hide."
icon_state = "xenos"
- inhand_icon_state = "xenos_helm"
+ inhand_icon_state = "xenos_suit"
body_parts_covered = CHEST|GROIN|LEGS|ARMS|HANDS
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
allowed = list(/obj/item/clothing/mask/facehugger/toy)
@@ -411,35 +411,35 @@
name = "pharoah tunic"
desc = "Lavish space tomb not included."
icon_state = "pharoah"
- inhand_icon_state = "pharoah"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN
/obj/item/clothing/suit/costume/changshan_red
name = "red changshan"
desc = "A gorgeously embroidered silk shirt."
icon_state = "changshan_red"
- inhand_icon_state = "changshan_red"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
/obj/item/clothing/suit/costume/changshan_blue
name = "blue changshan"
desc = "A gorgeously embroidered silk shirt."
icon_state = "changshan_blue"
- inhand_icon_state = "changshan_blue"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
/obj/item/clothing/suit/costume/cheongsam_red
name = "red cheongsam"
desc = "A gorgeously embroidered silk dress."
icon_state = "cheongsam_red"
- inhand_icon_state = "cheongsam_red"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
/obj/item/clothing/suit/costume/cheongsam_blue
name = "blue cheongsam"
desc = "A gorgeously embroidered silk dress."
icon_state = "cheongsam_blue"
- inhand_icon_state = "cheongsam_blue"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
/obj/item/clothing/suit/costume/bronze
@@ -464,7 +464,7 @@
name = "mystic's hood"
desc = "The balance of reality tips towards order."
icon_state = "mystichood"
- inhand_icon_state = "mystichood"
+ inhand_icon_state = null
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS|HIDEFACIALHAIR|HIDEFACE|HIDEMASK
@@ -474,14 +474,14 @@
icon_state = "capformal"
icon = 'icons/obj/clothing/suits/armor.dmi'
worn_icon = 'icons/mob/clothing/suits/armor.dmi'
- inhand_icon_state = "capspacesuit"
+ inhand_icon_state = null
armor = list(MELEE = 25, BULLET = 15, LASER = 25, ENERGY = 35, BOMB = 25, BIO = 0, FIRE = 50, ACID = 50)
/obj/item/clothing/suit/costume/hawaiian
name = "hawaiian overshirt"
desc = "A cool shirt for chilling on the beach."
icon_state = "hawaiian_blue"
- inhand_icon_state = "hawaiian_blue"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/costume/football_armor
@@ -503,7 +503,7 @@
name = "decker hoodie"
desc = "Based? Based on what?"
icon_state = "decker_suit"
- inhand_icon_state = "decker_suit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
@@ -511,21 +511,21 @@
name = "soviet armored coat"
desc = "Conscript reporting! Sponsored by DonkSoft Co. for historical reenactment of the Third World War!"
icon_state = "soviet_suit"
- inhand_icon_state = "soviet_suit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
/obj/item/clothing/suit/costume/yuri
name = "yuri initiate coat"
desc = "Yuri is master! Sponsored by DonkSoft Co. for historical reenactment of the Third World War!"
icon_state = "yuri_coat"
- inhand_icon_state = "yuri_coat"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
/obj/item/clothing/suit/costume/tmc
name = "\improper Lost M.C. cut"
desc = "Making sure everyone knows you're in the best biker gang this side of Alderney."
icon_state = "tmc_suit"
- inhand_icon_state = "tmc_suit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
@@ -533,6 +533,6 @@
name = "powder ganger jacket"
desc = "Remind Security of their mistakes in giving prisoners blasting charges."
icon_state = "pg_suit"
- inhand_icon_state = "pg_suit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
diff --git a/code/modules/clothing/suits/ghostsheet.dm b/code/modules/clothing/suits/ghostsheet.dm
index 52ff8b7ff1d..46538931f32 100644
--- a/code/modules/clothing/suits/ghostsheet.dm
+++ b/code/modules/clothing/suits/ghostsheet.dm
@@ -2,7 +2,7 @@
name = "ghost sheet"
desc = "The hands float by themselves, so it's extra spooky."
icon_state = "ghost_sheet"
- inhand_icon_state = "ghost_sheet"
+ inhand_icon_state = null
throwforce = 0
throw_speed = 1
throw_range = 2
diff --git a/code/modules/clothing/suits/jacket.dm b/code/modules/clothing/suits/jacket.dm
index f5a910d47c8..f4acf74356a 100644
--- a/code/modules/clothing/suits/jacket.dm
+++ b/code/modules/clothing/suits/jacket.dm
@@ -84,33 +84,33 @@
name = "military jacket"
desc = "A canvas jacket styled after classical American military garb. Feels sturdy, yet comfortable."
icon_state = "militaryjacket"
- inhand_icon_state = "militaryjacket"
+ inhand_icon_state = null
allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/gun/ballistic/automatic/pistol, /obj/item/gun/ballistic/revolver, /obj/item/radio)
/obj/item/clothing/suit/jacket/letterman
name = "letterman jacket"
desc = "A classic brown letterman jacket. Looks pretty hot and heavy."
icon_state = "letterman"
- inhand_icon_state = "letterman"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/jacket/letterman_red
name = "red letterman jacket"
desc = "A letterman jacket in a sick red color. Radical."
icon_state = "letterman_red"
- inhand_icon_state = "letterman_red"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/jacket/letterman_syndie
name = "blood-red letterman jacket"
desc = "Oddly, this jacket seems to have a large S on the back..."
icon_state = "letterman_s"
- inhand_icon_state = "letterman_s"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
/obj/item/clothing/suit/jacket/letterman_nanotrasen
name = "blue letterman jacket"
desc = "A blue letterman jacket with a proud Nanotrasen N on the back. The tag says that it was made in Space China."
icon_state = "letterman_n"
- inhand_icon_state = "letterman_n"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index 110ce27ba52..96db8ae76b8 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -9,7 +9,7 @@
icon_state = "apron"
icon = 'icons/obj/clothing/suits/utility.dmi'
worn_icon = 'icons/mob/clothing/suits/utility.dmi'
- inhand_icon_state = "apron"
+ inhand_icon_state = null
blood_overlay_type = "armor"
body_parts_covered = CHEST|GROIN
allowed = list(
@@ -33,7 +33,7 @@
name = "horticultural waders"
desc = "A pair of heavy duty leather waders, perfect for insulating your soft flesh from spills, soil and thorns."
icon_state = "hort_waders"
- inhand_icon_state = "hort_waders"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS
//Captain
@@ -63,9 +63,9 @@
name = "chef's apron"
desc = "An apron-jacket used by a high class chef."
icon_state = "chef"
+ inhand_icon_state = "chef"
icon = 'icons/obj/clothing/suits/jacket.dmi'
worn_icon = 'icons/mob/clothing/suits/jacket.dmi'
- inhand_icon_state = "chef"
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 0, ACID = 0)
body_parts_covered = CHEST|GROIN|ARMS
allowed = list(
@@ -81,7 +81,7 @@
name = "cook's apron"
desc = "A basic, dull, white chef's apron."
icon_state = "apronchef"
- inhand_icon_state = "apronchef"
+ inhand_icon_state = null
blood_overlay_type = "armor"
body_parts_covered = CHEST|GROIN
allowed = list(
@@ -110,25 +110,25 @@
name = "noir trenchcoat"
desc = "A hard-boiled private investigator's dark trenchcoat."
icon_state = "noirdet"
- inhand_icon_state = "greydet"
+ inhand_icon_state = null
/obj/item/clothing/suit/jacket/det_suit/noir
name = "noir suit coat"
desc = "A dapper private investigator's dark suit coat."
icon_state = "detsuit"
- inhand_icon_state = "detsuit"
+ inhand_icon_state = null
/obj/item/clothing/suit/jacket/det_suit/kim
name = "aerostatic bomber jacket"
desc = "A jacket once worn by the revolutionary air brigades during the Antecentennial Revolution. There are quite a few pockets on the inside, mostly for storing notebooks and compasses."
icon_state = "aerostatic_bomber_jacket"
- inhand_icon_state = "aerostatic_bomber_jacket"
+ inhand_icon_state = null
/obj/item/clothing/suit/jacket/det_suit/disco
name = "disco ass blazer"
desc = "Looks like someone skinned this blazer off some long extinct disco-animal. It has an enigmatic white rectangle on the back and the right sleeve."
icon_state = "jamrock_blazer"
- inhand_icon_state = "jamrock_blazer"
+ inhand_icon_state = null
//Engineering
/obj/item/clothing/suit/hazardvest
@@ -137,7 +137,7 @@
icon_state = "hazard"
icon = 'icons/obj/clothing/suits/utility.dmi'
worn_icon = 'icons/mob/clothing/suits/utility.dmi'
- inhand_icon_state = "hazard"
+ inhand_icon_state = null
blood_overlay_type = "armor"
allowed = list(
/obj/item/fireaxe/metal_h2_axe,
@@ -164,7 +164,7 @@
icon_state = "suitjacket_blue"
icon = 'icons/obj/clothing/suits/jacket.dmi'
worn_icon = 'icons/mob/clothing/suits/jacket.dmi'
- inhand_icon_state = "suitjacket_blue"
+ inhand_icon_state = null
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
species_exception = list(/datum/species/golem)
@@ -173,7 +173,7 @@
name = "purple suit jacket"
desc = "A foppish dress jacket."
icon_state = "suitjacket_purp"
- inhand_icon_state = "suitjacket_purp"
+ inhand_icon_state = null
/obj/item/clothing/suit/toggle/lawyer/black
name = "black suit jacket"
@@ -202,42 +202,42 @@
name = "security officer's jacket"
desc = "This jacket is for those special occasions when a security officer isn't required to wear their armor."
icon_state = "officerbluejacket"
- inhand_icon_state = "officerbluejacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/jacket/officer/tan
name = "security officer's jacket"
desc = "This jacket is for those special occasions when a security officer isn't required to wear their armor."
icon_state = "officertanjacket"
- inhand_icon_state = "officertanjacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/jacket/warden/blue
name = "warden's jacket"
desc = "Perfectly suited for the warden that wants to leave an impression of style on those who visit the brig."
icon_state = "wardenbluejacket"
- inhand_icon_state = "wardenbluejacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/jacket/warden/tan
name = "warden's jacket"
desc = "Perfectly suited for the warden that wants to leave an impression of style on those who visit the brig."
icon_state = "wardentanjacket"
- inhand_icon_state = "wardentanjacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/jacket/hos/blue
name = "head of security's jacket"
desc = "This piece of clothing was specifically designed for asserting superior authority."
icon_state = "hosbluejacket"
- inhand_icon_state = "hosbluejacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
/obj/item/clothing/suit/jacket/hos/tan
name = "head of security's jacket"
desc = "This piece of clothing was specifically designed for asserting superior authority."
icon_state = "hostanjacket"
- inhand_icon_state = "hostanjacket"
+ inhand_icon_state = null
body_parts_covered = CHEST|ARMS
//Surgeon
@@ -268,7 +268,7 @@
name = "treasure hunter's coat"
desc = "Both fashionable and lightly armoured, this jacket is favoured by treasure hunters the galaxy over."
icon_state = "curator"
- inhand_icon_state = "curator"
+ inhand_icon_state = null
blood_overlay_type = "coat"
body_parts_covered = CHEST|ARMS
allowed = list(
@@ -287,7 +287,7 @@
icon_state = "techpriest"
icon = 'icons/obj/clothing/suits/costume.dmi'
worn_icon = 'icons/mob/clothing/suits/costume.dmi'
- inhand_icon_state = "techpriest"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
hoodtype = /obj/item/clothing/head/hooded/techpriest
@@ -295,6 +295,6 @@
name = "techpriest's hood"
desc = "A hood for those who REALLY love their toasters."
icon_state = "techpriesthood"
- inhand_icon_state = "techpriesthood"
+ inhand_icon_state = null
body_parts_covered = HEAD
flags_inv = HIDEHAIR|HIDEEARS
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index e09686629ed..0e16e95b504 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -35,7 +35,7 @@
name = "chief medical officer's labcoat"
desc = "Bluer than the standard model."
icon_state = "labcoat_cmo"
- inhand_icon_state = "labcoat_cmo"
+ inhand_icon_state = null
/obj/item/clothing/suit/toggle/labcoat/cmo/Initialize(mapload)
. = ..()
@@ -47,13 +47,13 @@
name = "paramedic's jacket"
desc = "A dark blue jacket for paramedics with reflective stripes."
icon_state = "labcoat_paramedic"
- inhand_icon_state = "labcoat_paramedic"
+ inhand_icon_state = null
/obj/item/clothing/suit/toggle/labcoat/mad
name = "\proper The Mad's labcoat"
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
icon_state = "labgreen"
- inhand_icon_state = "labgreen"
+ inhand_icon_state = null
/obj/item/clothing/suit/toggle/labcoat/genetics
name = "geneticist labcoat"
diff --git a/code/modules/clothing/suits/lasertag.dm b/code/modules/clothing/suits/lasertag.dm
index 9af3e48923e..5bea86ea312 100644
--- a/code/modules/clothing/suits/lasertag.dm
+++ b/code/modules/clothing/suits/lasertag.dm
@@ -4,7 +4,7 @@
icon_state = "bluetag"
icon = 'icons/obj/clothing/suits/costume.dmi'
worn_icon = 'icons/mob/clothing/suits/costume.dmi'
- inhand_icon_state = "bluetag"
+ inhand_icon_state = null
blood_overlay_type = "armor"
body_parts_covered = CHEST
allowed = list (/obj/item/gun/energy/laser/bluetag)
@@ -16,7 +16,7 @@
icon_state = "redtag"
icon = 'icons/obj/clothing/suits/costume.dmi'
worn_icon = 'icons/mob/clothing/suits/costume.dmi'
- inhand_icon_state = "redtag"
+ inhand_icon_state = null
blood_overlay_type = "armor"
body_parts_covered = CHEST
allowed = list (/obj/item/gun/energy/laser/redtag)
diff --git a/code/modules/clothing/suits/reactive_armour.dm b/code/modules/clothing/suits/reactive_armour.dm
index 9b27f192f46..4abe44ed1c5 100644
--- a/code/modules/clothing/suits/reactive_armour.dm
+++ b/code/modules/clothing/suits/reactive_armour.dm
@@ -31,7 +31,7 @@
name = "reactive armor"
desc = "Doesn't seem to do much for some reason."
icon_state = "reactiveoff"
- inhand_icon_state = "reactiveoff"
+ inhand_icon_state = null
blood_overlay_type = "armor"
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 100, ACID = 100)
actions_types = list(/datum/action/item_action/toggle)
@@ -50,19 +50,13 @@
///The cooldown itself of the reactive armor for when it can activate again.
var/reactivearmor_cooldown = 0
-
/obj/item/clothing/suit/armor/reactive/Initialize(mapload)
. = ..()
AddElement(/datum/element/update_icon_updates_onmob, ITEM_SLOT_OCLOTHING)
/obj/item/clothing/suit/armor/reactive/update_icon_state()
. = ..()
- if(active)
- icon_state = "reactive"
- inhand_icon_state = "reactive"
- else
- icon_state = "reactiveoff"
- inhand_icon_state = "reactiveoff"
+ icon_state = "reactive[active ? null : "off"]"
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user)
active = !active
diff --git a/code/modules/clothing/suits/shirt.dm b/code/modules/clothing/suits/shirt.dm
index e034958bc95..b2c2e9057fb 100644
--- a/code/modules/clothing/suits/shirt.dm
+++ b/code/modules/clothing/suits/shirt.dm
@@ -2,7 +2,7 @@
name = "worn shirt"
desc = "A worn out, curiously comfortable t-shirt with a picture of Ian. You wouldn't go so far as to say it feels like being hugged when you wear it, but it's pretty close. Good for sleeping in."
icon_state = "ianshirt"
- inhand_icon_state = "ianshirt"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
///How many times has this shirt been washed? (In an ideal world this is just the determinant of the transform matrix.)
var/wash_count = 0
@@ -21,5 +21,5 @@
name = "gamer shirt"
desc = "A baggy shirt with vintage game character Phanic the Weasel. Why would anyone wear this?"
icon_state = "nerdshirt"
- inhand_icon_state = "nerdshirt"
+ inhand_icon_state = null
species_exception = list(/datum/species/golem)
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 5d751623c06..78b5dbb8594 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -59,7 +59,7 @@
name = "firesuit"
desc = "An expensive firesuit that protects against even the most deadly of station fires. Designed to protect even if the wearer is set aflame."
icon_state = "atmos_firesuit"
- inhand_icon_state = "firesuit_atmos"
+ inhand_icon_state = null
max_heat_protection_temperature = FIRE_IMMUNITY_MAX_TEMP_PROTECT
/*
@@ -87,7 +87,7 @@
name = "bomb suit"
desc = "A suit designed for safety when handling explosives."
icon_state = "bombsuit"
- inhand_icon_state = "bombsuit"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_BULKY
clothing_flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
@@ -105,21 +105,21 @@
/obj/item/clothing/head/bomb_hood/security
icon_state = "bombsuit_sec"
- inhand_icon_state = "bombsuit_sec"
+ inhand_icon_state = null
/obj/item/clothing/suit/utility/bomb_suit/security
icon_state = "bombsuit_sec"
- inhand_icon_state = "bombsuit_sec"
+ inhand_icon_state = null
allowed = list(/obj/item/gun/energy, /obj/item/melee/baton, /obj/item/restraints/handcuffs)
/obj/item/clothing/head/bomb_hood/white
icon_state = "bombsuit_white"
- inhand_icon_state = "bombsuit_white"
+ inhand_icon_state = null
/obj/item/clothing/suit/utility/bomb_suit/white
icon_state = "bombsuit_white"
- inhand_icon_state = "bombsuit_white"
+ inhand_icon_state = null
/*
* Radiation protection
diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm
index 2f1699bb853..38950e4ebb5 100644
--- a/code/modules/clothing/suits/wintercoats.dm
+++ b/code/modules/clothing/suits/wintercoats.dm
@@ -75,7 +75,7 @@
name = "centcom winter coat"
desc = "A luxurious winter coat woven in the bright green and gold colours of Central Command. It has a small pin in the shape of the Nanotrasen logo for a zipper."
icon_state = "coatcentcom"
- inhand_icon_state = "coatcentcom"
+ inhand_icon_state = null
armor = list(MELEE = 35, BULLET = 40, LASER = 40, ENERGY = 50, BOMB = 35, BIO = 10, FIRE = 10, ACID = 60)
hoodtype = /obj/item/clothing/head/hooded/winterhood/centcom
@@ -111,7 +111,7 @@
name = "head of personnel's winter coat"
desc = "A cozy winter coat, covered in thick fur. The breast features a proud yellow chevron, reminding everyone that you're the second banana."
icon_state = "coathop"
- inhand_icon_state = "coathop"
+ inhand_icon_state = null
armor = list(MELEE = 10, BULLET = 15, LASER = 15, ENERGY = 25, BOMB = 10, BIO = 0, FIRE = 0, ACID = 35)
allowed = list(
/obj/item/melee/baton/telescopic,
@@ -148,7 +148,7 @@
name = "janitors winter coat"
desc = "A purple-and-beige winter coat that smells of space cleaner."
icon_state = "coatjanitor"
- inhand_icon_state = "coatjanitor"
+ inhand_icon_state = null
allowed = list(
/obj/item/grenade/chem_grenade,
/obj/item/holosign_creator,
@@ -212,7 +212,7 @@
name = "chief medical officer's winter coat"
desc = "A winter coat in a vibrant shade of blue with a small silver caduceus instead of a plastic zipper tab. The normal liner is replaced with an exceptionally thick, soft layer of fur."
icon_state = "coatcmo"
- inhand_icon_state = "coatcmo"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 50, FIRE = 20, ACID = 30)
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/cmo
@@ -232,7 +232,7 @@
name = "chemistry winter coat"
desc = "A lab-grade winter coat made with acid resistant polymers. For the enterprising chemist who was exiled to a frozen wasteland on the go."
icon_state = "coatchemistry"
- inhand_icon_state = "coatchemistry"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/chemistry
/obj/item/clothing/suit/hooded/wintercoat/medical/chemistry/Initialize(mapload)
@@ -248,7 +248,7 @@
name = "virology winter coat"
desc = "A white winter coat with green markings. Warm, but wont fight off the common cold or any other disease. Might make people stand far away from you in the hallway. The zipper tab looks like an oversized bacteriophage."
icon_state = "coatviro"
- inhand_icon_state = "coatviro"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/viro
/obj/item/clothing/suit/hooded/wintercoat/medical/viro/Initialize(mapload)
@@ -264,7 +264,7 @@
name = "paramedic winter coat"
desc = "A winter coat with blue markings. Warm, but probably won't protect from biological agents. For the cozy doctor on the go."
icon_state = "coatparamed"
- inhand_icon_state = "coatparamed"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/medical/paramedic
/obj/item/clothing/head/hooded/winterhood/medical/paramedic
@@ -304,7 +304,7 @@
name = "research director's winter coat"
desc = "A thick arctic winter coat with an outdated atomic model instead of a plastic zipper tab. Most in the know are heavily aware that Bohr's model of the atom was outdated by the time of the 1930s when the Heisenbergian and Schrodinger models were generally accepted for true. Nevertheless, we still see its use in anachronism, roleplaying, and, in this case, as a zipper tab. At least it should keep you warm on your ivory pillar."
icon_state = "coatrd"
- inhand_icon_state = "coatrd"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 20, BIO = 0, FIRE = 30, ACID = 0)
hoodtype = /obj/item/clothing/head/hooded/winterhood/science/rd
@@ -324,7 +324,7 @@
name = "robotics winter coat"
desc = "A black winter coat with a badass flaming robotic skull for the zipper tab. This one has bright red designs and a few useless buttons."
icon_state = "coatrobotics"
- inhand_icon_state = "coatrobotics"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/science/robotics
/obj/item/clothing/head/hooded/winterhood/science/robotics
@@ -336,7 +336,7 @@
name = "genetics winter coat"
desc = "A white winter coat with a DNA helix for the zipper tab."
icon_state = "coatgenetics"
- inhand_icon_state = "coatgenetics"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/science/genetics
/obj/item/clothing/head/hooded/winterhood/science/genetics
@@ -381,7 +381,7 @@
name = "chief engineer's winter coat"
desc = "A white winter coat with reflective green and yellow stripes. Stuffed with asbestos, treated with fire retardant PBDE, lined with a micro thin sheet of lead foil and snugly fitted to your body's measurements. This baby's ready to save you from anything except the thyroid cancer and systemic fibrosis you'll get from wearing it. The zipper tab is a tiny golden wrench."
icon_state = "coatce"
- inhand_icon_state = "coatce"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 30, ACID = 10)
hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering/ce
@@ -426,7 +426,7 @@
name = "quartermaster's winter coat"
desc = "A dark brown winter coat that has a golden crate pin for its zipper pully."
icon_state = "coatqm"
- inhand_icon_state = "coatqm"
+ inhand_icon_state = null
hoodtype = /obj/item/clothing/head/hooded/winterhood/cargo/qm
/obj/item/clothing/suit/hooded/wintercoat/cargo/qm/Initialize(mapload)
diff --git a/code/modules/clothing/suits/wiz_robe.dm b/code/modules/clothing/suits/wiz_robe.dm
index cac7b8f8abe..fe71d63f5b0 100644
--- a/code/modules/clothing/suits/wiz_robe.dm
+++ b/code/modules/clothing/suits/wiz_robe.dm
@@ -46,13 +46,14 @@
name = "\improper Magus helm"
desc = "A mysterious helmet that hums with an unearthly power."
icon_state = "magus"
- inhand_icon_state = "magus"
+ inhand_icon_state = null
dog_fashion = null
/obj/item/clothing/head/wizard/santa
name = "Santa's hat"
desc = "Ho ho ho. Merrry X-mas!"
icon_state = "santahat"
+ inhand_icon_state = "santahat"
flags_inv = HIDEHAIR|HIDEFACIALHAIR
dog_fashion = null
@@ -76,37 +77,37 @@
name = "red wizard robe"
desc = "A magnificent red gem-lined robe that seems to radiate power."
icon_state = "redwizard"
- inhand_icon_state = "redwizrobe"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/yellow
name = "yellow wizard robe"
desc = "A magnificent yellow gem-lined robe that seems to radiate power."
icon_state = "yellowwizard"
- inhand_icon_state = "yellowwizrobe"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/black
name = "black wizard robe"
desc = "An unnerving black gem-lined robe that reeks of death and decay."
icon_state = "blackwizard"
- inhand_icon_state = "blackwizrobe"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/marisa
name = "witch robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
- inhand_icon_state = "marisarobe"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/magusblue
name = "\improper Magus robe"
desc = "A set of armored robes that seem to radiate a dark power."
icon_state = "magusblue"
- inhand_icon_state = "magusblue"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/magusred
name = "\improper Magus robe"
desc = "A set of armored robes that seem to radiate a dark power."
icon_state = "magusred"
- inhand_icon_state = "magusred"
+ inhand_icon_state = null
/obj/item/clothing/suit/wizrobe/santa
@@ -134,7 +135,7 @@
name = "witch robe"
desc = "Magic is all about the spell power, ZE!"
icon_state = "marisa"
- inhand_icon_state = "marisarobe"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 0, FIRE = 0, ACID = 0)
resistance_flags = FLAMMABLE
@@ -142,7 +143,7 @@
name = "papier-mache robe" // no non-latin characters!
desc = "A robe held together by various bits of clear-tape and paste."
icon_state = "wizard-paper"
- inhand_icon_state = "wizard-paper"
+ inhand_icon_state = null
var/robe_charge = TRUE
actions_types = list(/datum/action/item_action/stickmen)
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index 34fef42caab..6c87c18c384 100755
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -92,7 +92,9 @@
name = "waistcoat"
desc = "For some classy, murderous fun."
icon_state = "waistcoat"
- inhand_icon_state = "waistcoat"
+ inhand_icon_state = "wcoat"
+ lefthand_file = 'icons/mob/inhands/clothing/suits_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/suits_righthand.dmi'
minimize_when_attached = FALSE
attachment_slot = null
greyscale_config = /datum/greyscale_config/waistcoat
@@ -115,6 +117,8 @@
desc = "The final touch that holds it all together."
icon_state = "maidcorset"
inhand_icon_state = "maidapron"
+ lefthand_file = 'icons/mob/inhands/clothing/suits_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/suits_righthand.dmi'
minimize_when_attached = FALSE
attachment_slot = null
diff --git a/code/modules/clothing/under/costume.dm b/code/modules/clothing/under/costume.dm
index 446efbf634b..d8f81652b9b 100644
--- a/code/modules/clothing/under/costume.dm
+++ b/code/modules/clothing/under/costume.dm
@@ -15,13 +15,14 @@
name = "jabroni outfit"
desc = "The leather club is two sectors down."
icon_state = "darkholme"
- inhand_icon_state = "darkholme"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/owl
name = "owl uniform"
desc = "A soft brown jumpsuit made of synthetic feathers and strong conviction."
icon_state = "owl"
+ inhand_icon_state = "owl"
can_adjust = FALSE
/obj/item/clothing/under/costume/griffin
@@ -34,7 +35,7 @@
name = "blue schoolgirl uniform"
desc = "It's just like one of my Japanese animes!"
icon_state = "schoolgirl"
- inhand_icon_state = "schoolgirl"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
can_adjust = FALSE
@@ -42,37 +43,37 @@
/obj/item/clothing/under/costume/schoolgirl/red
name = "red schoolgirl uniform"
icon_state = "schoolgirlred"
- inhand_icon_state = "schoolgirlred"
+ inhand_icon_state = null
/obj/item/clothing/under/costume/schoolgirl/green
name = "green schoolgirl uniform"
icon_state = "schoolgirlgreen"
- inhand_icon_state = "schoolgirlgreen"
+ inhand_icon_state = null
/obj/item/clothing/under/costume/schoolgirl/orange
name = "orange schoolgirl uniform"
icon_state = "schoolgirlorange"
- inhand_icon_state = "schoolgirlorange"
+ inhand_icon_state = null
/obj/item/clothing/under/costume/pirate
name = "pirate outfit"
desc = "Yarr."
icon_state = "pirate"
- inhand_icon_state = "pirate"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/soviet
name = "soviet uniform"
desc = "For the Motherland!"
icon_state = "soviet"
- inhand_icon_state = "soviet"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/redcoat
name = "redcoat uniform"
desc = "Looks old."
icon_state = "redcoat"
- inhand_icon_state = "redcoat"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/kilt
@@ -95,7 +96,7 @@
name = "gladiator uniform"
desc = "Are you not entertained? Is that not why you are here?"
icon_state = "gladiator"
- inhand_icon_state = "gladiator"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
female_sprite_flags = NO_FEMALE_UNIFORM
supports_variations_flags = CLOTHING_DIGITIGRADE_VARIATION_NO_NEW_ICON
@@ -150,20 +151,20 @@
/obj/item/clothing/under/costume/singer/yellow
name = "yellow performer's outfit"
icon_state = "ysing"
- inhand_icon_state = "ysing"
+ inhand_icon_state = null
female_sprite_flags = NO_FEMALE_UNIFORM
/obj/item/clothing/under/costume/singer/blue
name = "blue performer's outfit"
icon_state = "bsing"
- inhand_icon_state = "bsing"
+ inhand_icon_state = null
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
/obj/item/clothing/under/costume/mummy
name = "mummy wrapping"
desc = "Return the slab or suffer my stale references."
icon_state = "mummy"
- inhand_icon_state = "mummy"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
female_sprite_flags = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -173,7 +174,7 @@
name = "scarecrow clothes"
desc = "Perfect camouflage for hiding in botany."
icon_state = "scarecrow"
- inhand_icon_state = "scarecrow"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
female_sprite_flags = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -183,7 +184,7 @@
name = "draculass coat"
desc = "A dress inspired by the ancient \"Victorian\" era."
icon_state = "draculass"
- inhand_icon_state = "draculass"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
can_adjust = FALSE
@@ -192,14 +193,14 @@
name = "doctor freeze's jumpsuit"
desc = "A modified scientist jumpsuit to look extra cool."
icon_state = "drfreeze"
- inhand_icon_state = "drfreeze"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/lobster
name = "foam lobster suit"
desc = "Who beheaded the college mascot?"
icon_state = "lobster"
- inhand_icon_state = "lobster"
+ inhand_icon_state = null
female_sprite_flags = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -214,7 +215,7 @@
name = "skeleton jumpsuit"
desc = "A black jumpsuit with a white bone pattern printed on it. Spooky!"
icon_state = "skeleton"
- inhand_icon_state = "skeleton"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS|LEGS
female_sprite_flags = NO_FEMALE_UNIFORM
can_adjust = FALSE
@@ -224,7 +225,7 @@
name = "mech pilot's suit"
desc = "A mech pilot's suit. Might make your butt look big."
icon_state = "red_mech_suit"
- inhand_icon_state = "red_mech_suit"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS
female_sprite_flags = NO_FEMALE_UNIFORM
@@ -243,7 +244,7 @@
desc = "The latest in fashionable russian outfits."
icon = 'icons/obj/clothing/under/security.dmi'
icon_state = "hostanclothes"
- inhand_icon_state = "hostanclothes"
+ inhand_icon_state = null
worn_icon = 'icons/mob/clothing/under/security.dmi'
alt_covers_chest = TRUE
armor = list(MELEE = 10, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 30, ACID = 30)
@@ -283,13 +284,13 @@
name = "jack bros outfit"
desc = "For when it's time to hee some hos."
icon_state = "JackFrostUniform"
- inhand_icon_state = "JackFrostUniform"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/deckers
name = "deckers outfit"
icon_state = "decker_jumpsuit"
- inhand_icon_state = "decker_jumpsuit"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/football_suit
@@ -305,14 +306,14 @@
name = "Swag outfit"
desc = "Why don't you go secure some bitches?"
icon_state = "SwagOutfit"
- inhand_icon_state = "SwagOutfit"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/referee
name = "referee uniform"
desc = "A standard black and white striped uniform to signal authority."
icon_state = "referee"
- inhand_icon_state = "referee"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/joker
@@ -324,25 +325,25 @@
/obj/item/clothing/under/costume/yuri
name = "yuri initiate jumpsuit"
icon_state = "yuri_uniform"
- inhand_icon_state = "yuri_uniform"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/dutch
name = "dutch's suit"
desc = "You can feel a god damn plan coming on."
icon_state = "DutchUniform"
- inhand_icon_state = "DutchUniform"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/osi
name = "O.S.I. jumpsuit"
icon_state = "osi_jumpsuit"
- inhand_icon_state = "osi_jumpsuit"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/costume/tmc
name = "Lost MC clothing"
icon_state = "tmc_jumpsuit"
- inhand_icon_state = "tmc_jumpsuit"
+ inhand_icon_state = null
can_adjust = FALSE
diff --git a/code/modules/clothing/under/jobs/Plasmaman/centcom.dm b/code/modules/clothing/under/jobs/Plasmaman/centcom.dm
index cbab4e8c6dd..c2717e0d0dc 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/centcom.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/centcom.dm
@@ -2,16 +2,16 @@
name = "CentCom commander plasma envirosuit"
desc = "It's an envirosuit worn by CentCom's highest-tier Commanders."
icon_state = "commander_envirosuit"
- inhand_icon_state = "commander_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/centcom_official
name = "CentCom official plasma envirosuit"
desc = "It's an envirosuit worn by CentCom Officers."
icon_state = "official_envirosuit"
- inhand_icon_state = "official_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/centcom_intern
name = "CentCom intern plasma envirosuit"
desc = "It's an envirosuit worn by those interning for CentCom. The top is styled after a polo shirt for easy identification."
icon_state = "intern_envirosuit"
- inhand_icon_state = "intern_envirosuit"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
index 660b6befbbf..b5583748984 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/civilian_service.dm
@@ -54,67 +54,67 @@
name = "cargo plasma envirosuit"
desc = "A joint envirosuit used by plasmamen quartermasters and cargo techs alike, due to the logistical problems of differenciating the two with the length of their pant legs."
icon_state = "cargo_envirosuit"
- inhand_icon_state = "cargo_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/mining
name = "mining plasma envirosuit"
desc = "An air-tight khaki suit designed for operations on lavaland by plasmamen."
icon_state = "explorer_envirosuit"
- inhand_icon_state = "explorer_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/chef
name = "chef's plasma envirosuit"
desc = "A white plasmaman envirosuit designed for cullinary practices. One might question why a member of a species that doesn't need to eat would become a chef."
icon_state = "chef_envirosuit"
- inhand_icon_state = "chef_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/enviroslacks
name = "enviroslacks"
desc = "The pet project of a particularly posh plasmaman, this custom suit was quickly appropriated by Nanotrasen for its detectives, lawyers, and bartenders alike."
icon_state = "enviroslacks"
- inhand_icon_state = "enviroslacks"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/chaplain
name = "chaplain's plasma envirosuit"
desc = "An envirosuit specially designed for only the most pious of plasmamen."
icon_state = "chap_envirosuit"
- inhand_icon_state = "chap_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/curator
name = "curator's plasma envirosuit"
desc = "Made out of a modified voidsuit, this suit was Nanotrasen's first solution to the *logistical problems* that come with employing plasmamen. Due to the modifications, the suit is no longer space-worthy. Despite their limitations, these suits are still in used by historian and old-styled plasmamen alike."
icon_state = "prototype_envirosuit"
- inhand_icon_state = "prototype_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/janitor
name = "janitor's plasma envirosuit"
desc = "A grey and purple envirosuit designated for plasmamen janitors."
icon_state = "janitor_envirosuit"
- inhand_icon_state = "janitor_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/botany
name = "botany envirosuit"
desc = "A green and blue envirosuit designed to protect plasmamen from minor plant-related injuries."
icon_state = "botany_envirosuit"
- inhand_icon_state = "botany_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/mime
name = "mime envirosuit"
desc = "It's not very colourful."
icon_state = "mime_envirosuit"
- inhand_icon_state = "mime_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/clown
name = "clown envirosuit"
desc = "'HONK!'"
icon_state = "clown_envirosuit"
- inhand_icon_state = "clown_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/prisoner
name = "prisoner envirosuit"
desc = "An orange envirosuit identifying and protecting a criminal plasmaman. Its suit sensors are stuck in the \"Fully On\" position."
icon_state = "prisoner_envirosuit"
- inhand_icon_state = "prisoner_envirosuit"
+ inhand_icon_state = null
has_sensor = LOCKED_SENSORS
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
diff --git a/code/modules/clothing/under/jobs/Plasmaman/command.dm b/code/modules/clothing/under/jobs/Plasmaman/command.dm
index 797d596bf4e..05648fc8518 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/command.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/command.dm
@@ -2,7 +2,7 @@
name = "captain's plasma envirosuit"
desc = "It's a blue envirosuit with some gold markings denoting the rank of \"Captain\"."
icon_state = "captain_envirosuit"
- inhand_icon_state = "captain_envirosuit"
+ inhand_icon_state = null
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, WOUND = 15)
@@ -11,13 +11,13 @@
name = "head of personnel's plasma envirosuit"
desc = "It's an envirosuit worn by someone who works in the position of \"Head of Personnel\"."
icon_state = "hop_envirosuit"
- inhand_icon_state = "hop_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/security/head_of_security
name = "head of security's envirosuit"
desc = "A plasmaman containment suit decorated for those few with the dedication to achieve the position of Head of Security."
icon_state = "hos_envirosuit"
- inhand_icon_state = "hos_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95, WOUND = 10)
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -26,19 +26,19 @@
name = "chief engineer's plasma envirosuit"
desc = "An air-tight suit designed to be used by plasmamen insane enough to achieve the rank of \"Chief Engineer\"."
icon_state = "ce_envirosuit"
- inhand_icon_state = "ce_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
/obj/item/clothing/under/plasmaman/chief_medical_officer
name = "chief medical officer's plasma envirosuit"
desc = "It's an envirosuit worn by those with the experience to be \"Chief Medical Officer\"."
icon_state = "cmo_envirosuit"
- inhand_icon_state = "cmo_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
/obj/item/clothing/under/plasmaman/research_director
name = "research director's plasma envirosuit"
desc = "It's an envirosuit worn by those with the know-how to achieve the position of \"Research Director\"."
icon_state = "rd_envirosuit"
- inhand_icon_state = "rd_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
diff --git a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
index 4a7d162be4f..e0774ea09ed 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/engineering.dm
@@ -2,13 +2,13 @@
name = "engineering plasma envirosuit"
desc = "An air-tight suit designed to be used by plasmamen employed as engineers, the usual purple stripes being replaced by engineering's orange. It protects the user from fire and acid damage."
icon_state = "engineer_envirosuit"
- inhand_icon_state = "engineer_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
/obj/item/clothing/under/plasmaman/atmospherics
name = "atmospherics plasma envirosuit"
desc = "An air-tight suit designed to be used by plasmamen employed as atmos technicians, the usual purple stripes being replaced by atmos' blue."
icon_state = "atmos_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
- inhand_icon_state = "atmos_envirosuit"
diff --git a/code/modules/clothing/under/jobs/Plasmaman/medsci.dm b/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
index 5c57f0f4b04..2159d7f2f2e 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/medsci.dm
@@ -2,40 +2,40 @@
name = "medical plasma envirosuit"
desc = "A suit designed for the station's more plasma-based doctors."
icon_state = "doctor_envirosuit"
- inhand_icon_state = "doctor_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/paramedic
name = "paramedic envirosuit"
desc = "A suit designed for the station's plasmaman paramedics."
icon_state = "paramedic_envirosuit"
- inhand_icon_state = "paramedic_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/science
name = "science plasma envirosuit"
desc = "A plasmaman envirosuit designed for scientists."
icon_state = "scientist_envirosuit"
- inhand_icon_state = "scientist_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/robotics
name = "robotics plasma envirosuit"
desc = "A plasmaman envirosuit designed for roboticists."
icon_state = "roboticist_envirosuit"
- inhand_icon_state = "roboticist_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/viro
name = "virology plasma envirosuit"
desc = "The suit worn by the safest people on the station, those who are completely immune to the monstrosities they create."
icon_state = "virologist_envirosuit"
- inhand_icon_state = "virologist_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/genetics
name = "genetics plasma envirosuit"
desc = "A plasmaman envirosuit designed for geneticists."
icon_state = "geneticist_envirosuit"
- inhand_icon_state = "geneticist_envirosuit"
+ inhand_icon_state = null
/obj/item/clothing/under/plasmaman/chemist
name = "chemistry plasma envirosuit"
desc = "A plasmaman envirosuit designed for chemists."
icon_state = "chemist_envirosuit"
- inhand_icon_state = "chemist_envirosuit"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/under/jobs/Plasmaman/security.dm b/code/modules/clothing/under/jobs/Plasmaman/security.dm
index 12b0671e61e..99bcb8ab948 100644
--- a/code/modules/clothing/under/jobs/Plasmaman/security.dm
+++ b/code/modules/clothing/under/jobs/Plasmaman/security.dm
@@ -2,7 +2,7 @@
name = "security plasma envirosuit"
desc = "A plasmaman containment suit designed for security officers, offering a limited amount of extra protection."
icon_state = "security_envirosuit"
- inhand_icon_state = "security_envirosuit"
+ inhand_icon_state = null
armor = list(MELEE = 10, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 100, FIRE = 95, ACID = 95)
sensor_mode = SENSOR_COORDS
random_sensor = FALSE
@@ -11,4 +11,4 @@
name = "warden plasma envirosuit"
desc = "A plasmaman containment suit designed for the warden, white stripes being added to differentiate them from other members of security."
icon_state = "warden_envirosuit"
- inhand_icon_state = "warden_envirosuit"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm
index ae00027810e..3324a346174 100644
--- a/code/modules/clothing/under/jobs/cargo.dm
+++ b/code/modules/clothing/under/jobs/cargo.dm
@@ -42,7 +42,7 @@
desc = "It's a snappy jumpsuit with a sturdy set of overalls. It is very dirty."
name = "shaft miner's jumpsuit"
icon_state = "miner"
- inhand_icon_state = "miner"
+ inhand_icon_state = null
armor = list(MELEE = 0, BULLET = 0, LASER = 0, ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 80, ACID = 0, WOUND = 10)
resistance_flags = NONE
@@ -50,4 +50,4 @@
desc = "A green uniform for operating in hazardous environments."
name = "shaft miner's jumpsuit"
icon_state = "explorer"
- inhand_icon_state = "explorer"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/under/jobs/civilian/civilian.dm b/code/modules/clothing/under/jobs/civilian/civilian.dm
index 396b4c8b812..10745c5c026 100644
--- a/code/modules/clothing/under/jobs/civilian/civilian.dm
+++ b/code/modules/clothing/under/jobs/civilian/civilian.dm
@@ -48,6 +48,7 @@
name = "cook's suit"
desc = "A suit which is given only to the most hardcore cooks in space."
icon_state = "chef"
+ inhand_icon_state = "chef"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/civilian/chef/skirt
@@ -113,6 +114,7 @@
desc = "It's the official uniform of the station's janitor. It has minor protection from biohazards."
name = "janitor's jumpsuit"
icon_state = "janitor"
+ inhand_icon_state = "janitor"
armor = list(MELEE = 0, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 0, ACID = 0)
/obj/item/clothing/under/rank/civilian/janitor/skirt
@@ -251,5 +253,6 @@
name = "grilling shorts"
desc = "For when all you want in life is to grill for god's sake!"
icon_state = "cookjorts"
+ inhand_icon_state = "cookjorts"
can_adjust = FALSE
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
diff --git a/code/modules/clothing/under/jobs/civilian/clown_mime.dm b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
index b779d7504f0..b0acdfed475 100644
--- a/code/modules/clothing/under/jobs/civilian/clown_mime.dm
+++ b/code/modules/clothing/under/jobs/civilian/clown_mime.dm
@@ -3,13 +3,13 @@
name = "mime's outfit"
desc = "It's not very colourful."
icon_state = "mime"
- inhand_icon_state = "mime"
+ inhand_icon_state = null
/obj/item/clothing/under/rank/civilian/mime/skirt
name = "mime's skirt"
desc = "It's not very colourful."
icon_state = "mime_skirt"
- inhand_icon_state = "mime"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
@@ -19,7 +19,7 @@
name = "sexy mime outfit"
desc = "Pretty inappropriate for a circus."
icon_state = "sexymime"
- inhand_icon_state = "sexymime"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
can_adjust = FALSE
@@ -86,4 +86,4 @@
name = "sexy-clown suit"
desc = "It makes you look HONKable!"
icon_state = "sexyclown"
- inhand_icon_state = "sexyclown"
+ inhand_icon_state = null
diff --git a/code/modules/clothing/under/jobs/civilian/curator.dm b/code/modules/clothing/under/jobs/civilian/curator.dm
index bf5c8c6110c..aaf000afa49 100644
--- a/code/modules/clothing/under/jobs/civilian/curator.dm
+++ b/code/modules/clothing/under/jobs/civilian/curator.dm
@@ -3,7 +3,7 @@
desc = "It's very... sensible."
icon = 'icons/obj/clothing/under/suits.dmi'
icon_state = "red_suit"
- inhand_icon_state = "red_suit"
+ inhand_icon_state = null
worn_icon = 'icons/mob/clothing/under/suits.dmi'
can_adjust = FALSE
@@ -12,7 +12,7 @@
desc = "It's very... sensible."
icon = 'icons/obj/clothing/under/suits.dmi'
icon_state = "red_suit_skirt"
- inhand_icon_state = "red_suit"
+ inhand_icon_state = null
worn_icon = 'icons/mob/clothing/under/suits.dmi'
body_parts_covered = CHEST|GROIN|ARMS
can_adjust = FALSE
@@ -25,7 +25,7 @@
desc = "A rugged uniform suitable for treasure hunting."
icon = 'icons/obj/clothing/under/civilian.dmi'
icon_state = "curator"
- inhand_icon_state = "curator"
+ inhand_icon_state = null
worn_icon = 'icons/mob/clothing/under/civilian.dmi'
/obj/item/clothing/under/rank/civilian/curator/nasa
diff --git a/code/modules/clothing/under/jobs/command.dm b/code/modules/clothing/under/jobs/command.dm
index 71da7147de5..4ec9ac2688f 100644
--- a/code/modules/clothing/under/jobs/command.dm
+++ b/code/modules/clothing/under/jobs/command.dm
@@ -40,5 +40,5 @@
name = "captain's parade uniform"
desc = "A captain's luxury-wear, for special occasions."
icon_state = "captain_parade"
- inhand_icon_state = "by_suit"
+ inhand_icon_state = null
can_adjust = FALSE
diff --git a/code/modules/clothing/under/jobs/engineering.dm b/code/modules/clothing/under/jobs/engineering.dm
index f889e741b6f..34cf02dff87 100644
--- a/code/modules/clothing/under/jobs/engineering.dm
+++ b/code/modules/clothing/under/jobs/engineering.dm
@@ -50,7 +50,7 @@
name = "engineer's hazard jumpsuit"
desc = "A high visibility jumpsuit. Made from fire resistant materials."
icon_state = "hazard"
- inhand_icon_state = "suit-orange"
+ inhand_icon_state = "syndicate-orange"
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/engineering/engineer/skirt
diff --git a/code/modules/clothing/under/jobs/rnd.dm b/code/modules/clothing/under/jobs/rnd.dm
index 512787f98f9..b4b7b73aa0d 100644
--- a/code/modules/clothing/under/jobs/rnd.dm
+++ b/code/modules/clothing/under/jobs/rnd.dm
@@ -82,14 +82,14 @@
desc = "It's a slimming black with reinforced seams; great for industrial work."
name = "roboticist's jumpsuit"
icon_state = "robotics"
- inhand_icon_state = "robotics"
+ inhand_icon_state = null
resistance_flags = NONE
/obj/item/clothing/under/rank/rnd/roboticist/skirt
name = "roboticist's jumpskirt"
desc = "It's a slimming black with reinforced seams; great for industrial work."
icon_state = "robotics_skirt"
- inhand_icon_state = "robotics"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
diff --git a/code/modules/clothing/under/jobs/security.dm b/code/modules/clothing/under/jobs/security.dm
index 38c8b44237d..0e109e2e99d 100644
--- a/code/modules/clothing/under/jobs/security.dm
+++ b/code/modules/clothing/under/jobs/security.dm
@@ -43,21 +43,21 @@
name = "blue shirt and tie"
desc = "I'm a little busy right now, Calhoun."
icon_state = "blueshift"
- inhand_icon_state = "blueshift"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/rank/security/officer/formal
name = "security officer's formal uniform"
desc = "The latest in fashionable security outfits."
icon_state = "officerblueclothes"
- inhand_icon_state = "officerblueclothes"
+ inhand_icon_state = null
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/security/constable
name = "constable outfit"
desc = "A british looking outfit."
icon_state = "constable"
- inhand_icon_state = "constable"
+ inhand_icon_state = null
can_adjust = FALSE
custom_price = PAYCHECK_COMMAND
@@ -88,7 +88,7 @@
desc = "The insignia on this uniform tells you that this uniform belongs to the Warden."
name = "warden's formal uniform"
icon_state = "wardenblueclothes"
- inhand_icon_state = "wardenblueclothes"
+ inhand_icon_state = null
alt_covers_chest = TRUE
/*
@@ -116,14 +116,14 @@
name = "noir suit"
desc = "A hard-boiled private investigator's dark suit, complete with tie clip."
icon_state = "noirdet"
- inhand_icon_state = "greydet"
+ inhand_icon_state = null
alt_covers_chest = TRUE
/obj/item/clothing/under/rank/security/detective/noir/skirt
name = "noir suitskirt"
desc = "A hard-boiled private investigator's grey suitskirt, complete with tie clip."
icon_state = "noirdet_skirt"
- inhand_icon_state = "greydet"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY
@@ -194,7 +194,7 @@
desc = "The insignia on this uniform tells you that this uniform belongs to the Head of Security."
name = "head of security's formal uniform"
icon_state = "hosblueclothes"
- inhand_icon_state = "hosblueclothes"
+ inhand_icon_state = null
alt_covers_chest = TRUE
/*
@@ -205,7 +205,7 @@
name = "police uniform"
desc = "Space not controlled by megacorporations, planets, or pirates is under the jurisdiction of Spacepol."
icon_state = "spacepol"
- inhand_icon_state = "spacepol"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/rank/prisoner
@@ -240,19 +240,19 @@
name = "space police uniform"
desc = "A police uniform often found in the lines at donut shops."
icon_state = "spacepolice_families"
- inhand_icon_state = "spacepolice_families"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/rank/security/detective/disco
name = "superstar cop uniform"
desc = "Flare cut trousers and a dirty shirt that might have been classy before someone took a piss in the armpits. It's the dress of a superstar."
icon_state = "jamrock_suit"
- inhand_icon_state = "jamrock_suit"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/rank/security/detective/kim
name = "aerostatic suit"
desc = "A crisp and well-pressed suit; professional, comfortable and curiously authoritative."
icon_state = "aerostatic_suit"
- inhand_icon_state = "aerostatic_suit"
+ inhand_icon_state = null
can_adjust = FALSE
diff --git a/code/modules/clothing/under/miscellaneous.dm b/code/modules/clothing/under/miscellaneous.dm
index b9dbd0e97fa..d55a9288d10 100644
--- a/code/modules/clothing/under/miscellaneous.dm
+++ b/code/modules/clothing/under/miscellaneous.dm
@@ -18,7 +18,7 @@
name = "Patriotic Suit"
desc = "Motorcycle not included."
icon_state = "ek"
- inhand_icon_state = "ek"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/misc/mailman
@@ -60,7 +60,7 @@
name = "burial garments"
desc = "Traditional burial garments from the early 22nd century."
icon_state = "burial"
- inhand_icon_state = "burial"
+ inhand_icon_state = null
can_adjust = FALSE
has_sensor = NO_SENSORS
@@ -83,7 +83,7 @@
name = "durathread jumpsuit"
desc = "A jumpsuit made from durathread, its resilient fibres provide some protection to the wearer."
icon_state = "durathread"
- inhand_icon_state = "durathread"
+ inhand_icon_state = null
can_adjust = FALSE
armor = list(MELEE = 10, LASER = 10, FIRE = 40, ACID = 10, BOMB = 5, BIO = 10, FIRE = 0, ACID = 0)
@@ -91,7 +91,7 @@
name = "bouncer uniform"
desc = "A uniform made from a little bit more resistant fibers, makes you seem like a cool guy."
icon_state = "bouncer"
- inhand_icon_state = "bouncer"
+ inhand_icon_state = null
can_adjust = FALSE
armor = list(MELEE = 5, BULLET = 0, LASER = 0,ENERGY = 0, BOMB = 0, BIO = 10, FIRE = 30, ACID = 30)
@@ -101,7 +101,7 @@
icon = 'icons/obj/clothing/under/captain.dmi'
worn_icon = 'icons/mob/clothing/under/captain.dmi'
icon_state = "captain_parade"
- inhand_icon_state = "by_suit"
+ inhand_icon_state = null
can_adjust = FALSE
/obj/item/clothing/under/misc/syndicate_souvenir
diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm
index a8f0caba159..62dd8182353 100644
--- a/code/modules/clothing/under/skirt_dress.dm
+++ b/code/modules/clothing/under/skirt_dress.dm
@@ -10,20 +10,20 @@
name = "striped dress"
desc = "Fashion in space."
icon_state = "striped_dress"
- inhand_icon_state = "striped_dress"
+ inhand_icon_state = null
female_sprite_flags = FEMALE_UNIFORM_FULL
/obj/item/clothing/under/dress/sailor
name = "sailor dress"
desc = "Formal wear for a leading lady."
icon_state = "sailor_dress"
- inhand_icon_state = "sailor_dress"
+ inhand_icon_state = null
/obj/item/clothing/under/dress/wedding_dress
name = "wedding dress"
desc = "A luxurious gown for once-in-a-lifetime occasions."
icon_state = "wedding_dress"
- inhand_icon_state = "wedding_dress"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS
flags_cover = HIDESHOES
@@ -31,12 +31,13 @@
name = "red evening gown"
desc = "Fancy dress for space bar singers."
icon_state = "red_evening_gown"
- inhand_icon_state = "red_evening_gown"
+ inhand_icon_state = null
/obj/item/clothing/under/dress/skirt
name = "black skirt"
desc = "A black skirt, very fancy!"
icon_state = "blackskirt"
+ inhand_icon_state = "blackskirt"
/obj/item/clothing/under/dress/skirt/plaid
name = "plaid skirt"
diff --git a/code/modules/clothing/under/suits.dm b/code/modules/clothing/under/suits.dm
index d486812a16b..775a37d77d6 100644
--- a/code/modules/clothing/under/suits.dm
+++ b/code/modules/clothing/under/suits.dm
@@ -8,13 +8,13 @@
name = "white suit"
desc = "A white suit, suitable for an excellent host."
icon_state = "scratch"
- inhand_icon_state = "scratch"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/white/skirt
name = "white suitskirt"
desc = "A white suitskirt, suitable for an excellent host."
icon_state = "white_suit_skirt"
- inhand_icon_state = "scratch"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY|FEMALE_UNIFORM_NO_BREASTS
@@ -36,13 +36,13 @@
name = "black two piece suit"
desc = "A black suit and red tie. Very formal."
icon_state = "black_suit"
- inhand_icon_state = "black_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/black
name = "black suit"
desc = "A professional looking black suit. Ready for some serious law."
icon_state = "blacksuit"
- inhand_icon_state = "blacksuit"
+ inhand_icon_state = null
can_adjust = TRUE
alt_covers_chest = TRUE
@@ -61,13 +61,13 @@
name = "executive suit"
desc = "A formal black suit, intended for the station's finest."
icon_state = "really_black_suit"
- inhand_icon_state = "really_black_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/black_really/skirt
name = "executive suitskirt"
desc = "A formal black suitskirt, intended for the station's finest."
icon_state = "really_black_suit_skirt"
- inhand_icon_state = "really_black_suit_skirt"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|ARMS
dying_key = DYE_REGISTRY_JUMPSKIRT
female_sprite_flags = FEMALE_UNIFORM_TOP_ONLY|FEMALE_UNIFORM_NO_BREASTS
@@ -91,25 +91,25 @@
name = "charcoal suit"
desc = "A charcoal suit and red tie. Very professional."
icon_state = "charcoal_suit"
- inhand_icon_state = "charcoal_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/navy
name = "navy suit"
desc = "A navy suit and red tie, intended for the station's finest."
icon_state = "navy_suit"
- inhand_icon_state = "navy_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/burgundy
name = "burgundy suit"
desc = "A burgundy suit and black tie. Somewhat formal."
icon_state = "burgundy_suit"
- inhand_icon_state = "burgundy_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/checkered
name = "checkered suit"
desc = "That's a very nice suit you have there. Shame if something were to happen to it, eh?"
icon_state = "checkered_suit"
- inhand_icon_state = "checkered_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/tan
name = "tan suit"
@@ -127,7 +127,7 @@
name = "beige suit"
desc = "An excellent light colored suit, experts in the field stress that it should not to be confused with the inferior tan suit."
icon_state = "beige_suit"
- inhand_icon_state = "beige_suit"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/henchmen
name = "henchmen jumpsuit"
@@ -135,7 +135,7 @@
icon = 'icons/obj/clothing/under/syndicate.dmi'
worn_icon = 'icons/mob/clothing/under/syndicate.dmi'
icon_state = "henchmen"
- inhand_icon_state = "henchmen"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|FEET|ARMS|HANDS|HEAD
flags_inv = HIDEGLOVES|HIDESHOES|HIDEEARS|HIDEEYES|HIDEHAIR
@@ -143,10 +143,10 @@
name = "tuxedo"
desc = "A formal black tuxedo. It exudes classiness."
icon_state = "tuxedo"
- inhand_icon_state = "tuxedo"
+ inhand_icon_state = null
/obj/item/clothing/under/suit/carpskin
name = "carpskin suit"
desc = "An luxurious suit made with only the finest scales, perfect for conducting dodgy business deals."
icon_state = "carpskin_suit"
- inhand_icon_state = "carpskin_suit"
+ inhand_icon_state = null
diff --git a/code/modules/events/holiday/easter.dm b/code/modules/events/holiday/easter.dm
index 6d6e7027c52..9248bd33a43 100644
--- a/code/modules/events/holiday/easter.dm
+++ b/code/modules/events/holiday/easter.dm
@@ -59,7 +59,7 @@
/obj/item/clothing/head/bunnyhead
name = "Easter Bunny Head"
icon_state = "bunnyhead"
- inhand_icon_state = "bunnyhead"
+ inhand_icon_state = null
desc = "Considerably more cute than 'Frank'."
slowdown = -0.3
clothing_flags = THICKMATERIAL | SNUG_FIT
@@ -71,7 +71,7 @@
icon_state = "bunnysuit"
icon = 'icons/obj/clothing/suits/costume.dmi'
worn_icon = 'icons/mob/clothing/suits/costume.dmi'
- inhand_icon_state = "bunnysuit"
+ inhand_icon_state = null
slowdown = -0.3
clothing_flags = THICKMATERIAL
body_parts_covered = CHEST|GROIN|LEGS|ARMS
@@ -82,7 +82,7 @@
name = "Easter Bunny Satchel"
desc = "Good for your eyes."
icon_state = "satchel_carrot"
- inhand_icon_state = "satchel_carrot"
+ inhand_icon_state = null
//Egg prizes and egg spawns!
/obj/item/surprise_egg
diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm
index c208ab3a92b..b209f4b3765 100644
--- a/code/modules/food_and_drinks/pizzabox.dm
+++ b/code/modules/food_and_drinks/pizzabox.dm
@@ -2,7 +2,7 @@
name = "pizza bomb"
desc = "Special delivery!"
icon_state = "pizzabomb_inactive"
- inhand_icon_state = "eshield0"
+ inhand_icon_state = "eshield"
lefthand_file = 'icons/mob/inhands/equipment/shields_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/shields_righthand.dmi'
diff --git a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm
index a9f188fc1dc..83603e5ad84 100644
--- a/code/modules/hydroponics/beekeeping/beekeeper_suit.dm
+++ b/code/modules/hydroponics/beekeeping/beekeeper_suit.dm
@@ -3,7 +3,7 @@
name = "beekeeper hat"
desc = "Keeps the lil buzzing buggers out of your eyes."
icon_state = "beekeeper"
- inhand_icon_state = "beekeeper"
+ inhand_icon_state = null
clothing_flags = THICKMATERIAL | SNUG_FIT
@@ -11,7 +11,7 @@
name = "beekeeper suit"
desc = "Keeps the lil buzzing buggers away from your squishy bits."
icon_state = "beekeeper"
- inhand_icon_state = "beekeeper"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
clothing_flags = THICKMATERIAL
allowed = list(/obj/item/melee/flyswatter, /obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/cup/bottle, /obj/item/reagent_containers/cup/beaker, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants)
diff --git a/code/modules/hydroponics/grown/banana.dm b/code/modules/hydroponics/grown/banana.dm
index b997cf9a556..62224feb74c 100644
--- a/code/modules/hydroponics/grown/banana.dm
+++ b/code/modules/hydroponics/grown/banana.dm
@@ -21,7 +21,7 @@
name = "banana"
desc = "It's an excellent prop for a clown."
icon_state = "banana"
- inhand_icon_state = "banana"
+ inhand_icon_state = "banana_peel"
trash_type = /obj/item/grown/bananapeel
bite_consumption_mod = 3
foodtypes = FRUIT
@@ -141,6 +141,7 @@
name = "bluespace banana peel"
desc = "A peel from a bluespace banana."
icon_state = "bluenana_peel"
+ inhand_icon_state = "bluespace_peel"
// Other
/obj/item/grown/bananapeel/specialpeel //used by /obj/item/clothing/shoes/clown_shoes/banana_shoes
diff --git a/code/modules/hydroponics/grown/corn.dm b/code/modules/hydroponics/grown/corn.dm
index de65b879280..d363e8d1106 100644
--- a/code/modules/hydroponics/grown/corn.dm
+++ b/code/modules/hydroponics/grown/corn.dm
@@ -37,7 +37,7 @@
name = "corn cob"
desc = "A reminder of meals gone by."
icon_state = "corncob"
- inhand_icon_state = "corncob"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
@@ -68,7 +68,7 @@
name = "snap corn"
desc = "A cob with snap pops."
icon_state = "snapcorn"
- inhand_icon_state = "corncob"
+ inhand_icon_state = null
w_class = WEIGHT_CLASS_TINY
throwforce = 0
throw_speed = 3
diff --git a/code/modules/hydroponics/grown/flowers.dm b/code/modules/hydroponics/grown/flowers.dm
index 24d2a72376d..b9e40dabd60 100644
--- a/code/modules/hydroponics/grown/flowers.dm
+++ b/code/modules/hydroponics/grown/flowers.dm
@@ -241,6 +241,7 @@
name = "\improper novaflower"
desc = "These beautiful flowers have a crisp smokey scent, like a summer bonfire."
icon_state = "novaflower"
+ inhand_icon_state = "novaflower"
lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
damtype = BURN
diff --git a/code/modules/hydroponics/hydroitemdefines.dm b/code/modules/hydroponics/hydroitemdefines.dm
index 70b694ba321..8c9be1f995f 100644
--- a/code/modules/hydroponics/hydroitemdefines.dm
+++ b/code/modules/hydroponics/hydroitemdefines.dm
@@ -505,6 +505,7 @@
/obj/item/scythe
icon_state = "scythe0"
+ inhand_icon_state = "scythe0"
lefthand_file = 'icons/mob/inhands/weapons/polearms_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/polearms_righthand.dmi'
name = "scythe"
@@ -559,7 +560,7 @@
desc = "It's a tool for cutting grafts off plants."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "secateurs"
- inhand_icon_state = "secateurs"
+ inhand_icon_state = null
worn_icon_state = "cutters"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
@@ -609,7 +610,7 @@
desc = "A high tech, high fidelity pair of plant shears, capable of cutting genetic traits out of a plant."
icon = 'icons/obj/hydroponics/equipment.dmi'
icon_state = "genesheers"
- inhand_icon_state = "secateurs"
+ inhand_icon_state = null
worn_icon_state = "cutters"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
diff --git a/code/modules/instruments/piano_synth.dm b/code/modules/instruments/piano_synth.dm
index 4b07533926f..d911671038d 100644
--- a/code/modules/instruments/piano_synth.dm
+++ b/code/modules/instruments/piano_synth.dm
@@ -55,7 +55,7 @@
name = "\improper Nanotrasen space pods"
desc = "Flex your money, AND ignore what everyone else says, all at once!"
icon_state = "spacepods"
- inhand_icon_state = "spacepods"
+ inhand_icon_state = null
slot_flags = ITEM_SLOT_EARS
strip_delay = 100 //air pods don't fall out
instrument_range = 0 //you're paying for quality here
diff --git a/code/modules/mapfluff/ruins/icemoonruin_code/wrath.dm b/code/modules/mapfluff/ruins/icemoonruin_code/wrath.dm
index c2f187b3258..f5db91dad01 100644
--- a/code/modules/mapfluff/ruins/icemoonruin_code/wrath.dm
+++ b/code/modules/mapfluff/ruins/icemoonruin_code/wrath.dm
@@ -2,7 +2,7 @@
name = "butchering gloves"
desc = "These gloves allow the user to rip apart bodies with precision and ease."
icon_state = "black"
- inhand_icon_state = "blackgloves"
+ greyscale_colors = "#2f2e31"
cold_protection = HANDS
min_cold_protection_temperature = GLOVES_MIN_TEMP_PROTECT
heat_protection = HANDS
diff --git a/code/modules/mining/equipment/explorer_gear.dm b/code/modules/mining/equipment/explorer_gear.dm
index b590685fc7e..c08085c9dc7 100644
--- a/code/modules/mining/equipment/explorer_gear.dm
+++ b/code/modules/mining/equipment/explorer_gear.dm
@@ -5,7 +5,7 @@
icon_state = "explorer"
icon = 'icons/obj/clothing/suits/utility.dmi'
worn_icon = 'icons/mob/clothing/suits/utility.dmi'
- inhand_icon_state = "explorer"
+ inhand_icon_state = null
body_parts_covered = CHEST|GROIN|LEGS|ARMS
cold_protection = CHEST|GROIN|LEGS|ARMS
min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT
@@ -50,6 +50,7 @@
name = "explorer gas mask"
desc = "A military-grade gas mask that can be connected to an air supply."
icon_state = "gas_mining"
+ inhand_icon_state = "explorer_gasmask"
flags_cover = MASKCOVERSEYES | MASKCOVERSMOUTH
visor_flags = BLOCK_GAS_SMOKE_EFFECT | MASKINTERNALS
visor_flags_inv = HIDEFACIALHAIR
@@ -62,10 +63,14 @@
/obj/item/clothing/mask/gas/explorer/attack_self(mob/user)
adjustmask(user)
-/obj/item/clothing/mask/gas/explorer/adjustmask(user)
+/obj/item/clothing/mask/gas/explorer/adjustmask(mob/user)
. = ..()
// adjusted = out of the way = smaller = can fit in boxes
w_class = mask_adjusted ? WEIGHT_CLASS_SMALL : WEIGHT_CLASS_NORMAL
+ inhand_icon_state = mask_adjusted ? "[initial(inhand_icon_state)]_up" : initial(inhand_icon_state)
+ if(user)
+ user.update_held_items()
+
/obj/item/clothing/mask/gas/explorer/examine(mob/user)
. = ..()
diff --git a/code/modules/mining/equipment/mining_tools.dm b/code/modules/mining/equipment/mining_tools.dm
index 33ffb701ef0..76c9a56405f 100644
--- a/code/modules/mining/equipment/mining_tools.dm
+++ b/code/modules/mining/equipment/mining_tools.dm
@@ -3,6 +3,7 @@
name = "pickaxe"
icon = 'icons/obj/mining.dmi'
icon_state = "pickaxe"
+ inhand_icon_state = "pickaxe"
flags_1 = CONDUCT_1
slot_flags = ITEM_SLOT_BELT | ITEM_SLOT_BACK
force = 15
@@ -37,7 +38,6 @@
name = "compact pickaxe"
desc = "A smaller, compact version of the standard pickaxe."
icon_state = "minipick"
- inhand_icon_state = "pickaxe"
worn_icon_state = "pickaxe"
force = 10
throwforce = 7
@@ -48,6 +48,7 @@
/obj/item/pickaxe/silver
name = "silver-plated pickaxe"
icon_state = "spickaxe"
+ inhand_icon_state = "spickaxe"
toolspeed = 0.5 //mines faster than a normal pickaxe, bought from mining vendor
desc = "A silver-plated pickaxe that mines slightly faster than standard-issue."
force = 17
@@ -55,6 +56,7 @@
/obj/item/pickaxe/diamond
name = "diamond-tipped pickaxe"
icon_state = "dpickaxe"
+ inhand_icon_state = "dpickaxe"
toolspeed = 0.3
desc = "A pickaxe with a diamond pick head. Extremely robust at cracking rock walls and digging up dirt."
force = 19
@@ -62,6 +64,7 @@
/obj/item/pickaxe/drill
name = "mining drill"
icon_state = "handdrill"
+ inhand_icon_state = "handdrill"
slot_flags = ITEM_SLOT_BELT
toolspeed = 0.6 //available from roundstart, faster than a pickaxe.
usesound = 'sound/weapons/drill.ogg'
@@ -80,17 +83,20 @@
/obj/item/pickaxe/drill/diamonddrill
name = "diamond-tipped mining drill"
icon_state = "diamonddrill"
+ inhand_icon_state = "diamonddrill"
toolspeed = 0.2
desc = "Yours is the drill that will pierce the heavens!"
/obj/item/pickaxe/drill/cyborg/diamond //This is the BORG version!
name = "diamond-tipped cyborg mining drill" //To inherit the NODROP_1 flag, and easier to change borg specific drill mechanics.
icon_state = "diamonddrill"
+ inhand_icon_state = "diamonddrill"
toolspeed = 0.2
/obj/item/pickaxe/drill/jackhammer
name = "sonic jackhammer"
icon_state = "jackhammer"
+ inhand_icon_state = "jackhammer"
toolspeed = 0.1 //the epitome of powertools. extremely fast mining
usesound = 'sound/weapons/sonic_jackhammer.ogg'
hitsound = 'sound/weapons/sonic_jackhammer.ogg'
@@ -100,6 +106,7 @@
name = "improvised pickaxe"
desc = "A pickaxe made with a knife and crowbar taped together, how does it not break?"
icon_state = "ipickaxe"
+ inhand_icon_state = "ipickaxe"
worn_icon_state = "pickaxe"
force = 10
throwforce = 7
@@ -113,6 +120,7 @@
desc = "A large tool for digging and moving dirt."
icon = 'icons/obj/mining.dmi'
icon_state = "shovel"
+ inhand_icon_state = "shovel"
lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
flags_1 = CONDUCT_1
@@ -147,6 +155,7 @@
name = "spade"
desc = "A small tool for digging and moving dirt."
icon_state = "spade"
+ inhand_icon_state = "spade"
lefthand_file = 'icons/mob/inhands/equipment/hydroponics_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/hydroponics_righthand.dmi'
force = 5
@@ -173,6 +182,7 @@
desc = "The multi-purpose tool you always needed."
icon = 'icons/obj/mining.dmi'
icon_state = "trench_tool"
+ inhand_icon_state = "trench_tool"
lefthand_file = 'icons/mob/inhands/equipment/mining_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/mining_righthand.dmi'
flags_1 = CONDUCT_1
@@ -186,11 +196,25 @@
attack_verb_simple = list("bash", "bludgeon", "thrash", "whack")
wound_bonus = 10
+/obj/item/trench_tool/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
/obj/item/trench_tool/examine(mob/user)
. = ..()
. += span_notice("Use in hand to switch configuration.")
. += span_notice("It functions as a [tool_behaviour] tool.")
+/obj/item/trench_tool/update_icon_state()
+ . = ..()
+ switch(tool_behaviour)
+ if(TOOL_WRENCH)
+ icon_state = inhand_icon_state = initial(icon_state)
+ if(TOOL_SHOVEL)
+ icon_state = inhand_icon_state = "[initial(icon_state)]_shovel"
+ if(TOOL_MINING)
+ icon_state = inhand_icon_state = "[initial(icon_state)]_pick"
+
/obj/item/trench_tool/attack_self(mob/user, modifiers)
. = ..()
if(!user)
@@ -205,7 +229,6 @@
return
switch(tool_result)
if("Wrench")
- icon_state = "trench_tool"
tool_behaviour = TOOL_WRENCH
sharpness = NONE
toolspeed = 0.75
@@ -214,7 +237,6 @@
attack_verb_continuous = list("bashes", "bludgeons", "thrashes", "whacks")
attack_verb_simple = list("bash", "bludgeon", "thrash", "whack")
if("Shovel")
- icon_state = "trench_tool_shovel"
tool_behaviour = TOOL_SHOVEL
sharpness = SHARP_EDGED
toolspeed = 0.25
@@ -223,7 +245,6 @@
attack_verb_continuous = list("slashes", "impales", "stabs", "slices")
attack_verb_simple = list("slash", "impale", "stab", "slice")
if("Pick")
- icon_state = "trench_tool_pick"
tool_behaviour = TOOL_MINING
sharpness = SHARP_POINTY
toolspeed = 0.5
@@ -232,7 +253,7 @@
attack_verb_continuous = list("hits", "pierces", "slices", "attacks")
attack_verb_simple = list("hit", "pierce", "slice", "attack")
playsound(src, 'sound/items/ratchet.ogg', 50, vary = TRUE)
- user.update_held_items()
+ update_appearance(UPDATE_ICON)
/obj/item/trench_tool/proc/check_menu(mob/user)
if(!istype(user))
diff --git a/code/modules/mining/lavaland/megafauna_loot.dm b/code/modules/mining/lavaland/megafauna_loot.dm
index 82bda58357e..d53efe876b6 100644
--- a/code/modules/mining/lavaland/megafauna_loot.dm
+++ b/code/modules/mining/lavaland/megafauna_loot.dm
@@ -341,6 +341,7 @@
desc = "An old relic of hell created by devils to establish themselves as the leadership of hell over the demons. It grows stronger while it possesses a powerful soul."
icon = 'icons/obj/lavaland/artefacts.dmi'
icon_state = "soulscythe"
+ inhand_icon_state = "soulscythe"
lefthand_file = 'icons/mob/inhands/64x64_lefthand.dmi'
righthand_file = 'icons/mob/inhands/64x64_righthand.dmi'
attack_verb_continuous = list("chops", "slices", "cuts", "reaps")
@@ -741,6 +742,7 @@
name = "staff of lava"
desc = "The ability to fill the emergency shuttle with lava. What more could you want out of life?"
icon_state = "lavastaff"
+ inhand_icon_state = "lavastaff"
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
icon = 'icons/obj/weapons/guns/magic.dmi'
@@ -934,6 +936,7 @@
name = "staff of storms"
desc = "An ancient staff retrieved from the remains of Legion. The wind stirs as you move it."
icon_state = "staffofstorms"
+ inhand_icon_state = "staffofstorms"
icon = 'icons/obj/weapons/guns/magic.dmi'
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
diff --git a/code/modules/mining/lavaland/tendril_loot.dm b/code/modules/mining/lavaland/tendril_loot.dm
index 9898622b474..a498dea077e 100644
--- a/code/modules/mining/lavaland/tendril_loot.dm
+++ b/code/modules/mining/lavaland/tendril_loot.dm
@@ -73,8 +73,25 @@
lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi'
righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
icon_state = "asclepius_dormant"
+ inhand_icon_state = "asclepius_dormant"
var/activated = FALSE
- var/usedHand
+
+/obj/item/rod_of_asclepius/Initialize(mapload)
+ . = ..()
+ AddElement(/datum/element/update_icon_updates_onmob)
+
+/obj/item/rod_of_asclepius/update_desc(updates)
+ . = ..()
+ desc = activated ? "A short wooden rod with a mystical snake inseparably gripping itself and the rod to your forearm. It flows with a healing energy that disperses amongst yourself and those around you." : initial(desc)
+
+/obj/item/rod_of_asclepius/update_icon_state()
+ . = ..()
+ icon_state = inhand_icon_state = "ascelpius_[activated ? "active" : "dormant"]"
+
+/obj/item/rod_of_asclepius/vv_edit_var(vname, vval)
+ . = ..()
+ if(vname == NAMEOF(src, activated) && activated)
+ activated()
/obj/item/rod_of_asclepius/attack_self(mob/user)
if(activated)
@@ -83,7 +100,7 @@
to_chat(user, span_warning("The snake carving seems to come alive, if only for a moment, before returning to its dormant state, almost as if it finds you incapable of holding its oath."))
return
var/mob/living/carbon/itemUser = user
- usedHand = itemUser.get_held_index_of_item(src)
+ var/usedHand = itemUser.get_held_index_of_item(src)
if(itemUser.has_status_effect(/datum/status_effect/hippocratic_oath))
to_chat(user, span_warning("You can't possibly handle the responsibility of more than one rod!"))
return
@@ -117,9 +134,8 @@
/obj/item/rod_of_asclepius/proc/activated()
item_flags = DROPDEL
ADD_TRAIT(src, TRAIT_NODROP, CURSED_ITEM_TRAIT(type))
- desc = "A short wooden rod with a mystical snake inseparably gripping itself and the rod to your forearm. It flows with a healing energy that disperses amongst yourself and those around you. "
- icon_state = "asclepius_active"
activated = TRUE
+ update_appearance()
//Memento Mori
/obj/item/clothing/neck/necklace/memento_mori
@@ -557,7 +573,7 @@
name = "concussive gauntlets"
desc = "Pickaxes... for your hands!"
icon_state = "concussive_gauntlets"
- inhand_icon_state = "concussive_gauntlets"
+ inhand_icon_state = null
toolspeed = 0.1
strip_delay = 40
equip_delay_other = 20
@@ -713,7 +729,7 @@
name = "eye of god"
desc = "A strange eye, said to have been torn from an omniscient creature that used to roam the wastes."
icon_state = "godeye"
- inhand_icon_state = "godeye"
+ inhand_icon_state = null
vision_flags = SEE_TURFS
darkness_view = 8
lighting_alpha = LIGHTING_PLANE_ALPHA_MOSTLY_INVISIBLE
diff --git a/code/modules/mining/ores_coins.dm b/code/modules/mining/ores_coins.dm
index be97f76bc16..cb557223b6a 100644
--- a/code/modules/mining/ores_coins.dm
+++ b/code/modules/mining/ores_coins.dm
@@ -11,7 +11,7 @@
name = "rock"
icon = 'icons/obj/ore.dmi'
icon_state = "ore"
- inhand_icon_state = "ore"
+ inhand_icon_state = null
full_w_class = WEIGHT_CLASS_BULKY
singular_name = "ore chunk"
material_flags = MATERIAL_EFFECTS
@@ -73,7 +73,6 @@
/obj/item/stack/ore/uranium
name = "uranium ore"
icon_state = "Uranium ore"
- inhand_icon_state = "Uranium ore"
singular_name = "uranium ore chunk"
points = 30
material_flags = NONE
@@ -87,7 +86,6 @@
/obj/item/stack/ore/iron
name = "iron ore"
icon_state = "Iron ore"
- inhand_icon_state = "Iron ore"
singular_name = "iron ore chunk"
points = 1
mats_per_unit = list(/datum/material/iron=MINERAL_MATERIAL_AMOUNT)
@@ -100,7 +98,6 @@
/obj/item/stack/ore/glass
name = "sand pile"
icon_state = "Glass ore"
- inhand_icon_state = "Glass ore"
singular_name = "sand pile"
points = 1
mats_per_unit = list(/datum/material/glass=MINERAL_MATERIAL_AMOUNT)
@@ -138,7 +135,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/glass/basalt
name = "volcanic ash"
icon_state = "volcanic_sand"
- inhand_icon_state = "volcanic_sand"
singular_name = "volcanic ash pile"
mine_experience = 0
merge_type = /obj/item/stack/ore/glass/basalt
@@ -146,7 +142,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/plasma
name = "plasma ore"
icon_state = "Plasma ore"
- inhand_icon_state = "Plasma ore"
singular_name = "plasma ore chunk"
points = 15
mats_per_unit = list(/datum/material/plasma=MINERAL_MATERIAL_AMOUNT)
@@ -163,7 +158,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/silver
name = "silver ore"
icon_state = "Silver ore"
- inhand_icon_state = "Silver ore"
singular_name = "silver ore chunk"
points = 16
mine_experience = 3
@@ -176,7 +170,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/gold
name = "gold ore"
icon_state = "Gold ore"
- inhand_icon_state = "Gold ore"
singular_name = "gold ore chunk"
points = 18
mine_experience = 5
@@ -189,7 +182,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/diamond
name = "diamond ore"
icon_state = "Diamond ore"
- inhand_icon_state = "Diamond ore"
singular_name = "diamond ore chunk"
points = 50
mats_per_unit = list(/datum/material/diamond=MINERAL_MATERIAL_AMOUNT)
@@ -201,7 +193,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/bananium
name = "bananium ore"
icon_state = "Bananium ore"
- inhand_icon_state = "Bananium ore"
singular_name = "bananium ore chunk"
points = 60
mats_per_unit = list(/datum/material/bananium=MINERAL_MATERIAL_AMOUNT)
@@ -213,7 +204,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
/obj/item/stack/ore/titanium
name = "titanium ore"
icon_state = "Titanium ore"
- inhand_icon_state = "Titanium ore"
singular_name = "titanium ore chunk"
points = 50
mats_per_unit = list(/datum/material/titanium=MINERAL_MATERIAL_AMOUNT)
@@ -227,7 +217,6 @@ GLOBAL_LIST_INIT(sand_recipes, list(\
name = "slag"
desc = "Completely useless."
icon_state = "slag"
- inhand_icon_state = "slag"
singular_name = "slag chunk"
merge_type = /obj/item/stack/ore/slag
diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm
index fcfde8707d4..23d765e63a1 100644
--- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm
+++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_instrument.dm
@@ -5,7 +5,7 @@
icon = 'icons/mob/simple/lavaland/bileworm.dmi'
icon_state = "bilehorn"
allowed_instrument_ids = "bilehorn"
- inhand_icon_state = "bilehorn"
+ inhand_icon_state = null
/datum/crafting_recipe/bilehorn
name = "Bilehorn"
diff --git a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
index fa5f99ee70c..7c04ed65a61 100644
--- a/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
+++ b/code/modules/mob/living/basic/lavaland/bileworm/bileworm_loot.dm
@@ -7,7 +7,7 @@
singular_name = "bileworm skin piece"
icon = 'icons/mob/simple/lavaland/bileworm.dmi'
icon_state = "sheet-bileworm"
- inhand_icon_state = "sheet-bileworm"
+ inhand_icon_state = null
merge_type = /obj/item/stack/sheet/animalhide/bileworm
//trophy
diff --git a/code/modules/mob/living/carbon/alien/special/facehugger.dm b/code/modules/mob/living/carbon/alien/special/facehugger.dm
index a27817a0284..9d7359dd7f2 100644
--- a/code/modules/mob/living/carbon/alien/special/facehugger.dm
+++ b/code/modules/mob/living/carbon/alien/special/facehugger.dm
@@ -276,7 +276,7 @@
/obj/item/clothing/mask/facehugger/impregnated
icon_state = "facehugger_impregnated"
- inhand_icon_state = "facehugger_impregnated"
+ inhand_icon_state = null
worn_icon_state = "facehugger_impregnated"
stat = DEAD
diff --git a/code/modules/mob/living/carbon/human/species_types/snail.dm b/code/modules/mob/living/carbon/human/species_types/snail.dm
index 997de61c46c..247e557a24d 100644
--- a/code/modules/mob/living/carbon/human/species_types/snail.dm
+++ b/code/modules/mob/living/carbon/human/species_types/snail.dm
@@ -57,7 +57,7 @@
name = "snail shell"
desc = "Worn by snails as armor and storage compartment."
icon_state = "snailshell"
- inhand_icon_state = "snailshell"
+ inhand_icon_state = null
lefthand_file = 'icons/mob/inhands/equipment/backpack_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/backpack_righthand.dmi'
armor = list(MELEE = 40, BULLET = 30, LASER = 30, ENERGY = 10, BOMB = 25, BIO = 0, FIRE = 0, ACID = 50)
diff --git a/code/modules/mob/living/simple_animal/bot/construction.dm b/code/modules/mob/living/simple_animal/bot/construction.dm
index 840d266def1..4e0dd06e553 100644
--- a/code/modules/mob/living/simple_animal/bot/construction.dm
+++ b/code/modules/mob/living/simple_animal/bot/construction.dm
@@ -66,7 +66,7 @@
name = "incomplete ED-209 assembly"
desc = "Some sort of bizarre assembly."
icon_state = "ed209_frame"
- inhand_icon_state = "ed209_frame"
+ inhand_icon_state = null
created_name = "ED-209 Security Robot" //To preserve the name if it's a unique securitron I guess
var/lasercolor = ""
var/vest_type = /obj/item/clothing/suit/armor/vest
@@ -311,6 +311,8 @@
desc = "Some sort of bizarre assembly made from a proximity sensor, helmet, and signaler."
icon_state = "helmet_signaler"
inhand_icon_state = "helmet"
+ lefthand_file = 'icons/mob/inhands/clothing/hats_righthand.dmi'
+ righthand_file = 'icons/mob/inhands/clothing/hats_lefthand.dmi'
created_name = "Securitron" //To preserve the name if it's a unique securitron I guess
var/swordamt = 0 //If you're converting it into a grievousbot, how many swords have you attached
var/toyswordamt = 0 //honk
diff --git a/code/modules/ninja/ninja_clothing.dm b/code/modules/ninja/ninja_clothing.dm
index b093aa80016..54ed46c9c3e 100644
--- a/code/modules/ninja/ninja_clothing.dm
+++ b/code/modules/ninja/ninja_clothing.dm
@@ -10,6 +10,7 @@
name = "ninja mask"
desc = "A close-fitting nano-enhanced mask that acts both as an air filter and a post-modern fashion statement."
icon_state = "ninja"
+ inhand_icon_state = "sechailer"
strip_delay = 12 SECONDS
resistance_flags = LAVA_PROOF | FIRE_PROOF | ACID_PROOF
flags_inv = HIDEFACIALHAIR | HIDEFACE | HIDESNOUT
diff --git a/code/modules/paperwork/handlabeler.dm b/code/modules/paperwork/handlabeler.dm
index 5b80981dc2d..d575eb58d93 100644
--- a/code/modules/paperwork/handlabeler.dm
+++ b/code/modules/paperwork/handlabeler.dm
@@ -3,7 +3,7 @@
desc = "A combined label printer, applicator, and remover, all in a single portable device. Designed to be easy to operate and use."
icon = 'icons/obj/bureaucracy.dmi'
icon_state = "labeler0"
- inhand_icon_state = "flight"
+ inhand_icon_state = null
var/label = null
var/labels_left = 30
var/mode = 0
diff --git a/code/modules/paperwork/paperbin.dm b/code/modules/paperwork/paperbin.dm
index 5e82e82b6ce..1a50f4cbace 100644
--- a/code/modules/paperwork/paperbin.dm
+++ b/code/modules/paperwork/paperbin.dm
@@ -202,9 +202,8 @@
var/obj/item/stack/cable_coil/binding_cable
/obj/item/paper_bin/bundlenatural/Initialize(mapload)
- binding_cable = new /obj/item/stack/cable_coil(src, 2)
- binding_cable.color = COLOR_ORANGE_BROWN
- binding_cable.cable_color = "brown"
+ binding_cable = new(src, 2)
+ binding_cable.set_cable_color(CABLE_COLOR_BROWN)
binding_cable.desc += " Non-natural."
return ..()
diff --git a/code/modules/power/cable.dm b/code/modules/power/cable.dm
index a84f2287c6d..b21f2523715 100644
--- a/code/modules/power/cable.dm
+++ b/code/modules/power/cable.dm
@@ -16,7 +16,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
desc = "A flexible, superconducting insulated cable for heavy-duty power transfer."
icon = 'icons/obj/power_cond/layer_cable.dmi'
icon_state = "l2-1-2-4-8-node"
- color = "yellow"
+ color = CABLE_HEX_COLOR_YELLOW
layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER
anchored = TRUE
obj_flags = CAN_BE_HIT
@@ -25,16 +25,19 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
var/cable_layer = CABLE_LAYER_2 //bitflag
var/machinery_layer = MACHINERY_LAYER_1 //bitflag
var/datum/powernet/powernet
+ var/cable_color = CABLE_COLOR_YELLOW
/obj/structure/cable/layer1
- color = "red"
+ color = CABLE_HEX_COLOR_RED
+ cable_color = CABLE_COLOR_RED
cable_layer = CABLE_LAYER_1
machinery_layer = null
layer = WIRE_LAYER - 0.01
icon_state = "l1-1-2-4-8-node"
/obj/structure/cable/layer3
- color = "blue"
+ color = CABLE_HEX_COLOR_BLUE
+ cable_color = CABLE_COLOR_BLUE
cable_layer = CABLE_LAYER_3
machinery_layer = null
layer = WIRE_LAYER + 0.01
@@ -125,7 +128,8 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
/obj/structure/cable/deconstruct(disassembled = TRUE)
if(!(flags_1 & NODECONSTRUCT_1))
- new /obj/item/stack/cable_coil(drop_location(), 1)
+ var/obj/item/stack/cable_coil/cable = new(drop_location(), 1)
+ cable.set_cable_color(cable_color)
qdel(src)
///////////////////////////////////
@@ -411,7 +415,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
gender = NEUTER //That's a cable coil sounds better than that's some cable coils
icon = 'icons/obj/power.dmi'
icon_state = "coil"
- inhand_icon_state = "coil"
+ inhand_icon_state = "coil_yellow"
base_icon_state = "coil"
novariants = FALSE
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
@@ -419,7 +423,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
max_amount = MAXCOIL
amount = MAXCOIL
merge_type = /obj/item/stack/cable_coil // This is here to let its children merge between themselves
- color = "yellow"
+ color = CABLE_HEX_COLOR_YELLOW
desc = "A coil of insulated power cable."
throwforce = 0
w_class = WEIGHT_CLASS_SMALL
@@ -436,7 +440,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
usesound = 'sound/items/deconstruct.ogg'
cost = 1
source = /datum/robot_energy_storage/wire
- var/cable_color = "yellow"
+ var/cable_color = CABLE_COLOR_YELLOW
var/obj/structure/cable/target_type = /obj/structure/cable
var/target_layer = CABLE_LAYER_2
@@ -444,6 +448,9 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
. = ..()
pixel_x = base_pixel_x + rand(-2, 2)
pixel_y = base_pixel_y + rand(-2, 2)
+
+ AddElement(/datum/element/update_icon_updates_onmob, slot_flags)
+
update_appearance()
/obj/item/stack/cable_coil/examine(mob/user)
@@ -458,11 +465,17 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
. = ..()
desc = "A [(amount < 3) ? "piece" : "coil"] of insulated power cable."
+/obj/item/stack/cable_coil/proc/set_cable_color(new_color)
+ color = GLOB.cable_colors[new_color]
+ cable_color = new_color
+ update_appearance(UPDATE_ICON)
+
/obj/item/stack/cable_coil/update_icon_state()
if(novariants)
return
. = ..()
icon_state = "[base_icon_state][amount < 3 ? amount : ""]"
+ inhand_icon_state = "coil_[cable_color]"
/obj/item/stack/cable_coil/suicide_act(mob/user)
if(locate(/obj/structure/chair/stool) in get_turf(user))
@@ -487,6 +500,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
var/image/restraints_icon = image(icon = 'icons/obj/restraints.dmi', icon_state = "cuff")
restraints_icon.maptext = MAPTEXT("= CABLE_RESTRAINTS_COST ? "" : "style='color: red'"]>[CABLE_RESTRAINTS_COST]")
+ restraints_icon.color = color
var/list/radial_menu = list(
"Layer 1" = image(icon = 'icons/hud/radial.dmi', icon_state = "coil-red"),
@@ -502,17 +516,17 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
return
switch(layer_result)
if("Layer 1")
- color = "red"
+ set_cable_color(CABLE_COLOR_RED)
target_type = /obj/structure/cable/layer1
target_layer = CABLE_LAYER_1
novariants = FALSE
if("Layer 2")
- color = "yellow"
+ set_cable_color(CABLE_COLOR_YELLOW)
target_type = /obj/structure/cable
target_layer = CABLE_LAYER_2
novariants = FALSE
if("Layer 3")
- color = "blue"
+ set_cable_color(CABLE_COLOR_BLUE)
target_type = /obj/structure/cable/layer3
target_layer = CABLE_LAYER_3
novariants = FALSE
@@ -520,7 +534,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
name = "multilayer cable hub"
desc = "A multilayer cable hub."
icon_state = "cable_bridge"
- color = "white"
+ set_cable_color(CABLE_COLOR_WHITE)
target_type = /obj/structure/cable/multilayer
target_layer = CABLE_LAYER_2
novariants = TRUE
@@ -528,15 +542,14 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
name = "multi z layer cable hub"
desc = "A multi-z layer cable hub."
icon_state = "cablerelay-broken-cable"
- color = "white"
+ set_cable_color(CABLE_COLOR_WHITE)
target_type = /obj/structure/cable/multilayer/multiz
target_layer = CABLE_LAYER_2
novariants = TRUE
if("Cable restraints")
if (amount >= CABLE_RESTRAINTS_COST)
if(use(CABLE_RESTRAINTS_COST))
- var/obj/item/restraints/handcuffs/cable/restraints = new
- restraints.color = color
+ var/obj/item/restraints/handcuffs/cable/restraints = new(null, cable_color)
user.put_in_hands(restraints)
update_appearance()
@@ -636,7 +649,7 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
cable_layer = CABLE_LAYER_2
machinery_layer = MACHINERY_LAYER_1
layer = WIRE_LAYER - 0.02 //Below all cables Disabled layers can lay over hub
- color = "white"
+ color = CABLE_COLOR_WHITE
/obj/structure/cable/multilayer/update_icon_state()
SHOULD_CALL_PARENT(FALSE)
@@ -646,22 +659,22 @@ GLOBAL_LIST_INIT(wire_node_generating_types, typecacheof(list(/obj/structure/gri
. = ..()
underlays.Cut()
var/mutable_appearance/cable_node_3 = mutable_appearance('icons/obj/power_cond/layer_cable.dmi', "l4-1-2-4-8-node")
- cable_node_3.color = "blue"
+ cable_node_3.color = CABLE_COLOR_BLUE
cable_node_3?.alpha = cable_layer & CABLE_LAYER_3 ? 255 : 0
underlays += cable_node_3
var/mutable_appearance/cable_node_2 = mutable_appearance('icons/obj/power_cond/layer_cable.dmi', "l2-1-2-4-8-node")
- cable_node_2.color = "yellow"
+ cable_node_2.color = CABLE_COLOR_YELLOW
cable_node_2?.alpha = cable_layer & CABLE_LAYER_2 ? 255 : 0
underlays += cable_node_2
var/mutable_appearance/cable_node_1 = mutable_appearance('icons/obj/power_cond/layer_cable.dmi', "l1-1-2-4-8-node")
- cable_node_1.color = "red"
+ cable_node_1.color = CABLE_COLOR_RED
cable_node_1?.alpha = cable_layer & CABLE_LAYER_1 ? 255 : 0
underlays += cable_node_1
var/mutable_appearance/machinery_node = mutable_appearance('icons/obj/power_cond/layer_cable.dmi', "l2-noconnection")
machinery_node.color = "black"
machinery_node?.alpha = machinery_layer & MACHINERY_LAYER_1 ? 255 : 0
underlays += machinery_node
-
+
/obj/structure/cable/multilayer/Initialize(mapload)
. = ..()
var/turf/T = get_turf(src)
diff --git a/code/modules/power/pipecleaners.dm b/code/modules/power/pipecleaners.dm
index 61b93f89ad1..55ab3196723 100644
--- a/code/modules/power/pipecleaners.dm
+++ b/code/modules/power/pipecleaners.dm
@@ -1,14 +1,3 @@
-GLOBAL_LIST_INIT(pipe_cleaner_colors, list(
- "blue" = COLOR_STRONG_BLUE,
- "cyan" = COLOR_CYAN,
- "green" = COLOR_DARK_LIME,
- "orange" = COLOR_MOSTLY_PURE_ORANGE,
- "pink" = COLOR_LIGHT_PINK,
- "red" = COLOR_RED,
- "white" = COLOR_WHITE,
- "yellow" = COLOR_YELLOW
- ))
-
//This is the old cable code, but minus any actual powernet logic
//Wireart is fun
@@ -42,7 +31,9 @@ By design, d1 is the smallest direction and d2 is the highest
layer = WIRE_LAYER //Above hidden pipes, GAS_PIPE_HIDDEN_LAYER
anchored = TRUE
obj_flags = CAN_BE_HIT
- color = COLOR_RED
+ color = CABLE_HEX_COLOR_RED
+ ///For updating inhand icons.
+ var/pipecleaner_color = CABLE_COLOR_RED
/// Pipe_cleaner direction 1 (see above)
var/d1 = 0
/// pipe_cleaner direction 2 (see above)
@@ -51,25 +42,37 @@ By design, d1 is the smallest direction and d2 is the highest
var/obj/item/stack/pipe_cleaner_coil/stored
/obj/structure/pipe_cleaner/yellow
- color = COLOR_YELLOW
+ color = CABLE_HEX_COLOR_YELLOW
+ pipecleaner_color = CABLE_COLOR_YELLOW
/obj/structure/pipe_cleaner/green
- color = COLOR_DARK_LIME
+ color = CABLE_HEX_COLOR_GREEN
+ pipecleaner_color = CABLE_COLOR_GREEN
/obj/structure/pipe_cleaner/blue
- color = COLOR_STRONG_BLUE
+ color = CABLE_HEX_COLOR_BLUE
+ pipecleaner_color = CABLE_COLOR_BLUE
/obj/structure/pipe_cleaner/pink
- color = COLOR_LIGHT_PINK
+ color = CABLE_HEX_COLOR_PINK
+ pipecleaner_color = CABLE_COLOR_YELLOW
/obj/structure/pipe_cleaner/orange
- color = COLOR_MOSTLY_PURE_ORANGE
+ color = CABLE_HEX_COLOR_ORANGE
+ pipecleaner_color = CABLE_COLOR_ORANGE
/obj/structure/pipe_cleaner/cyan
- color = COLOR_CYAN
+ color = CABLE_HEX_COLOR_CYAN
+ pipecleaner_color = CABLE_COLOR_CYAN
/obj/structure/pipe_cleaner/white
- color = COLOR_WHITE
+ color = CABLE_HEX_COLOR_WHITE
+ pipecleaner_color = CABLE_COLOR_WHITE
+
+/obj/structure/pipe_cleaner/brown
+ color = CABLE_HEX_COLOR_BROWN
+ pipecleaner_color = CABLE_COLOR_BROWN
+
// the power pipe_cleaner object
/obj/structure/pipe_cleaner/Initialize(mapload, param_color)
@@ -81,16 +84,23 @@ By design, d1 is the smallest direction and d2 is the highest
d2 = text2num(copytext(icon_state, dash + length(icon_state[dash])))
if(d1)
- stored = new/obj/item/stack/pipe_cleaner_coil(null, 2, null, null, null, color)
+ stored = new/obj/item/stack/pipe_cleaner_coil(null, 2, null, null, null)
else
- stored = new/obj/item/stack/pipe_cleaner_coil(null, 1, null, null, null, color)
+ stored = new/obj/item/stack/pipe_cleaner_coil(null, 1, null, null, null)
+
+ if(param_color)
+ color = GLOB.cable_colors[param_color]
+ pipecleaner_color = param_color
- color = param_color || color
if(!color)
- var/list/pipe_cleaner_colors = GLOB.pipe_cleaner_colors
+ var/list/pipe_cleaner_colors = GLOB.cable_colors
var/random_color = pick(pipe_cleaner_colors)
color = pipe_cleaner_colors[random_color]
+ pipecleaner_color = random_color
+
update_appearance()
+ stored?.set_pipecleaner_color(pipecleaner_color)
+
if(isturf(loc))
var/turf/turf_loc = loc
turf_loc.add_blueprints_preround(src)
@@ -181,7 +191,7 @@ By design, d1 is the smallest direction and d2 is the highest
gender = NEUTER //That's a pipe_cleaner coil sounds better than that's some pipe_cleaner coils
icon = 'icons/obj/power.dmi'
icon_state = "pipecleaner"
- inhand_icon_state = "pipecleaner"
+ inhand_icon_state = "coil_red"
worn_icon_state = "coil"
lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
@@ -203,10 +213,12 @@ By design, d1 is the smallest direction and d2 is the highest
usesound = 'sound/items/deconstruct.ogg'
cost = 1
source = /datum/robot_energy_storage/pipe_cleaner
- color = COLOR_RED
+ color = CABLE_HEX_COLOR_RED
+ ///For updating inhand icons.
+ var/pipecleaner_color = CABLE_COLOR_RED
/obj/item/stack/pipe_cleaner_coil/cyborg/attack_self(mob/user)
- var/list/pipe_cleaner_colors = GLOB.pipe_cleaner_colors
+ var/list/pipe_cleaner_colors = GLOB.cable_colors
var/list/possible_colors = list()
for(var/color in pipe_cleaner_colors)
var/image/pipe_icon = image(icon = src.icon, icon_state = src.icon_state)
@@ -216,8 +228,7 @@ By design, d1 is the smallest direction and d2 is the highest
var/selected_color = show_radial_menu(user, src, possible_colors, custom_check = CALLBACK(src, .proc/check_menu, user), radius = 40, require_near = TRUE)
if(!selected_color)
return
- color = pipe_cleaner_colors[selected_color]
- update_appearance()
+ set_pipecleaner_color(selected_color)
/**
* Checks if we are allowed to interact with a radial menu
@@ -234,6 +245,11 @@ By design, d1 is the smallest direction and d2 is the highest
return FALSE
return TRUE
+/obj/item/stack/pipe_cleaner_coil/proc/set_pipecleaner_color(new_color)
+ color = GLOB.cable_colors[new_color]
+ pipecleaner_color = new_color
+ update_appearance()
+
/obj/item/stack/pipe_cleaner_coil/suicide_act(mob/user)
if(locate(/obj/structure/chair/stool) in get_turf(user))
user.visible_message(span_suicide("[user] is making a noose with [src]! It looks like [user.p_theyre()] trying to commit suicide!"))
@@ -244,12 +260,13 @@ By design, d1 is the smallest direction and d2 is the highest
/obj/item/stack/pipe_cleaner_coil/Initialize(mapload, new_amount = null, list/mat_override=null, mat_amt=1, param_color = null)
. = ..()
+ AddElement(/datum/element/update_icon_updates_onmob, slot_flags)
if(param_color)
- color = param_color
+ set_pipecleaner_color(param_color)
if(!color)
- var/list/pipe_cleaner_colors = GLOB.pipe_cleaner_colors
+ var/list/pipe_cleaner_colors = GLOB.cable_colors
var/random_color = pick(pipe_cleaner_colors)
- color = pipe_cleaner_colors[random_color]
+ set_pipecleaner_color(random_color)
pixel_x = base_pixel_x + rand(-2, 2)
pixel_y = base_pixel_y + rand(-2, 2)
@@ -266,6 +283,7 @@ By design, d1 is the smallest direction and d2 is the highest
/obj/item/stack/pipe_cleaner_coil/update_icon_state()
. = ..()
icon_state = "[initial(inhand_icon_state)][amount < 3 ? amount : ""]"
+ inhand_icon_state = "coil_[pipecleaner_color]"
/obj/item/stack/pipe_cleaner_coil/update_icon()
. = ..()
@@ -277,8 +295,7 @@ By design, d1 is the smallest direction and d2 is the highest
return
var/obj/item/stack/pipe_cleaner_coil/new_pipe_cleaner = ..()
if(istype(new_pipe_cleaner))
- new_pipe_cleaner.color = color
- new_pipe_cleaner.update_appearance()
+ new_pipe_cleaner.set_pipecleaner_color(pipecleaner_color)
//add pipe_cleaners to the stack
/obj/item/stack/pipe_cleaner_coil/proc/give(extra)
@@ -293,8 +310,7 @@ By design, d1 is the smallest direction and d2 is the highest
//////////////////////////////////////////////
/obj/item/stack/pipe_cleaner_coil/proc/get_new_pipe_cleaner(location)
- var/path = /obj/structure/pipe_cleaner
- return new path(location, color)
+ return new /obj/structure/pipe_cleaner(location, pipecleaner_color)
// called when pipe_cleaner_coil is clicked on a turf
/obj/item/stack/pipe_cleaner_coil/proc/place_turf(turf/T, mob/user, dirnew)
@@ -435,28 +451,40 @@ By design, d1 is the smallest direction and d2 is the highest
/////////////////////////////
/obj/item/stack/pipe_cleaner_coil/red
- color = COLOR_RED
+ color = CABLE_HEX_COLOR_RED
+ pipecleaner_color = CABLE_COLOR_RED
/obj/item/stack/pipe_cleaner_coil/yellow
- color = COLOR_YELLOW
+ color = CABLE_HEX_COLOR_YELLOW
+ pipecleaner_color = CABLE_COLOR_YELLOW
/obj/item/stack/pipe_cleaner_coil/blue
- color = COLOR_STRONG_BLUE
+ color = CABLE_HEX_COLOR_BLUE
+ pipecleaner_color = CABLE_COLOR_BLUE
/obj/item/stack/pipe_cleaner_coil/green
- color = COLOR_DARK_LIME
+ color = CABLE_HEX_COLOR_GREEN
+ pipecleaner_color = CABLE_COLOR_GREEN
/obj/item/stack/pipe_cleaner_coil/pink
- color = COLOR_LIGHT_PINK
+ color = CABLE_HEX_COLOR_PINK
+ pipecleaner_color = CABLE_COLOR_PINK
/obj/item/stack/pipe_cleaner_coil/orange
- color = COLOR_MOSTLY_PURE_ORANGE
+ color =CABLE_HEX_COLOR_ORANGE
+ pipecleaner_color = CABLE_COLOR_ORANGE
/obj/item/stack/pipe_cleaner_coil/cyan
- color = COLOR_CYAN
+ color = CABLE_HEX_COLOR_CYAN
+ pipecleaner_color = CABLE_COLOR_CYAN
/obj/item/stack/pipe_cleaner_coil/white
- color = COLOR_WHITE
+ color = CABLE_HEX_COLOR_WHITE
+ pipecleaner_color = CABLE_COLOR_WHITE
+
+/obj/item/stack/pipe_cleaner_coil/brown
+ color = CABLE_HEX_COLOR_BROWN
+ pipecleaner_color = CABLE_COLOR_BROWN
/obj/item/stack/pipe_cleaner_coil/random
color = null
@@ -477,28 +505,40 @@ By design, d1 is the smallest direction and d2 is the highest
update_appearance()
/obj/item/stack/pipe_cleaner_coil/cut/red
- color = COLOR_RED
+ color = CABLE_HEX_COLOR_RED
+ pipecleaner_color = CABLE_COLOR_RED
/obj/item/stack/pipe_cleaner_coil/cut/yellow
- color = COLOR_YELLOW
+ color = CABLE_HEX_COLOR_YELLOW
+ pipecleaner_color = CABLE_COLOR_YELLOW
/obj/item/stack/pipe_cleaner_coil/cut/blue
- color = COLOR_STRONG_BLUE
+ color = CABLE_HEX_COLOR_BLUE
+ pipecleaner_color = CABLE_COLOR_BLUE
/obj/item/stack/pipe_cleaner_coil/cut/green
- color = COLOR_DARK_LIME
+ color = CABLE_HEX_COLOR_GREEN
+ pipecleaner_color = CABLE_COLOR_GREEN
/obj/item/stack/pipe_cleaner_coil/cut/pink
- color = COLOR_LIGHT_PINK
+ color = CABLE_HEX_COLOR_PINK
+ pipecleaner_color = CABLE_COLOR_PINK
/obj/item/stack/pipe_cleaner_coil/cut/orange
- color = COLOR_MOSTLY_PURE_ORANGE
+ color = CABLE_HEX_COLOR_ORANGE
+ pipecleaner_color = CABLE_COLOR_ORANGE
/obj/item/stack/pipe_cleaner_coil/cut/cyan
- color = COLOR_CYAN
+ color = CABLE_HEX_COLOR_CYAN
+ pipecleaner_color = CABLE_COLOR_CYAN
/obj/item/stack/pipe_cleaner_coil/cut/white
- color = COLOR_WHITE
+ color = CABLE_HEX_COLOR_WHITE
+ pipecleaner_color = CABLE_COLOR_WHITE
+
+/obj/item/stack/pipe_cleaner_coil/cut/brown
+ color = CABLE_HEX_COLOR_BROWN
+ pipecleaner_color = CABLE_COLOR_BROWN
/obj/item/stack/pipe_cleaner_coil/cut/random
color = null
diff --git a/code/modules/projectiles/guns/ballistic/automatic.dm b/code/modules/projectiles/guns/ballistic/automatic.dm
index 9ce3ac9a2c0..9e22996ac3f 100644
--- a/code/modules/projectiles/guns/ballistic/automatic.dm
+++ b/code/modules/projectiles/guns/ballistic/automatic.dm
@@ -249,7 +249,7 @@
name = "\improper L6 SAW"
desc = "A heavily modified 7.12x82mm light machine gun, designated 'L6 SAW'. Has 'Aussec Armoury - 2531' engraved on the receiver below the designation."
icon_state = "l6"
- inhand_icon_state = "l6"
+ inhand_icon_state = "l6closedmag"
base_icon_state = "l6"
w_class = WEIGHT_CLASS_HUGE
slot_flags = 0
diff --git a/code/modules/projectiles/guns/ballistic/bow.dm b/code/modules/projectiles/guns/ballistic/bow.dm
index eb807348d8f..4b71292e44e 100644
--- a/code/modules/projectiles/guns/ballistic/bow.dm
+++ b/code/modules/projectiles/guns/ballistic/bow.dm
@@ -97,7 +97,7 @@
name = "quiver"
desc = "Holds arrows for your bow. Good, because while pocketing arrows is possible, it surely can't be pleasant."
icon_state = "quiver"
- inhand_icon_state = "quiver"
+ inhand_icon_state = null
worn_icon_state = "harpoon_quiver"
var/arrow_path = /obj/item/ammo_casing/caseless/arrow
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index 6b365affeaf..0a68ee6060c 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -70,6 +70,8 @@
desc = "An advanced shotgun with two separate magazine tubes, allowing you to quickly toggle between ammo types."
icon_state = "cycler"
inhand_icon_state = "bulldog"
+ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
worn_icon_state = "cshotgun"
w_class = WEIGHT_CLASS_HUGE
semi_auto = TRUE
diff --git a/code/modules/projectiles/guns/ballistic/toy.dm b/code/modules/projectiles/guns/ballistic/toy.dm
index 3a604d37624..9d10bf9d3bb 100644
--- a/code/modules/projectiles/guns/ballistic/toy.dm
+++ b/code/modules/projectiles/guns/ballistic/toy.dm
@@ -61,6 +61,8 @@
icon = 'icons/obj/toys/toy.dmi'
icon_state = "foamcrossbow"
inhand_icon_state = "crossbow"
+ lefthand_file = 'icons/mob/inhands/weapons/guns_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/guns_righthand.dmi'
worn_icon_state = "gun"
worn_icon = null
mag_type = /obj/item/ammo_box/magazine/internal/shot/toy/crossbow
diff --git a/code/modules/projectiles/guns/magic.dm b/code/modules/projectiles/guns/magic.dm
index 486ed08b59d..97eb494af3c 100644
--- a/code/modules/projectiles/guns/magic.dm
+++ b/code/modules/projectiles/guns/magic.dm
@@ -4,8 +4,8 @@
icon = 'icons/obj/weapons/guns/magic.dmi'
icon_state = "staffofnothing"
inhand_icon_state = "staff"
- lefthand_file = 'icons/mob/inhands/items_lefthand.dmi' //not really a gun and some toys use these inhands
- righthand_file = 'icons/mob/inhands/items_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/weapons/staves_lefthand.dmi' //not really a gun and some toys use these inhands
+ righthand_file = 'icons/mob/inhands/weapons/staves_righthand.dmi'
fire_sound = 'sound/weapons/emitter.ogg'
flags_1 = CONDUCT_1
w_class = WEIGHT_CLASS_HUGE
diff --git a/code/modules/projectiles/guns/magic/wand.dm b/code/modules/projectiles/guns/magic/wand.dm
index 9d781f89590..2798fd04791 100644
--- a/code/modules/projectiles/guns/magic/wand.dm
+++ b/code/modules/projectiles/guns/magic/wand.dm
@@ -4,6 +4,8 @@
ammo_type = /obj/item/ammo_casing/magic
icon_state = "nothingwand"
inhand_icon_state = "wand"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
base_icon_state = "nothingwand"
w_class = WEIGHT_CLASS_SMALL
can_charge = FALSE
diff --git a/code/modules/reagents/reagent_containers/condiment.dm b/code/modules/reagents/reagent_containers/condiment.dm
index cc719d275ce..139d86e784d 100644
--- a/code/modules/reagents/reagent_containers/condiment.dm
+++ b/code/modules/reagents/reagent_containers/condiment.dm
@@ -11,8 +11,8 @@
icon = 'icons/obj/food/containers.dmi'
icon_state = "emptycondiment"
inhand_icon_state = "beer" //Generic held-item sprite until unique ones are made.
- lefthand_file = 'icons/mob/inhands/items/food_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/items/food_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
reagent_flags = OPENCONTAINER
obj_flags = UNIQUE_RENAME
possible_transfer_amounts = list(1, 5, 10, 15, 20, 25, 30, 50)
@@ -114,8 +114,8 @@
desc = "Tasty spacey sugar!"
icon_state = "sugar"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/sugar = 50)
fill_icon_thresholds = null
@@ -178,8 +178,8 @@
desc = "It's milk. White and nutritious goodness!"
icon_state = "milk"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/milk = 50)
fill_icon_thresholds = null
@@ -196,8 +196,8 @@
desc = "A big bag of flour. Good for baking!"
icon_state = "flour"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/flour = 30)
fill_icon_thresholds = null
@@ -219,8 +219,8 @@
desc = "It's soy milk. White and nutritious goodness!"
icon_state = "soymilk"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/soymilk = 50)
fill_icon_thresholds = null
@@ -229,8 +229,8 @@
desc = "A big bag of rice. Good for cooking!"
icon_state = "rice"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/rice = 30)
fill_icon_thresholds = null
@@ -239,8 +239,8 @@
desc = "A big box of cornmeal. Great for southern style cooking."
icon_state = "cornmeal"
inhand_icon_state = "carton"
- lefthand_file = 'icons/mob/inhands/equipment/kitchen_lefthand.dmi'
- righthand_file = 'icons/mob/inhands/equipment/kitchen_righthand.dmi'
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
list_reagents = list(/datum/reagent/consumable/cornmeal = 30)
fill_icon_thresholds = null
diff --git a/code/modules/reagents/reagent_containers/cups/_cup.dm b/code/modules/reagents/reagent_containers/cups/_cup.dm
index ba668dc30d5..c0cdcf02a17 100644
--- a/code/modules/reagents/reagent_containers/cups/_cup.dm
+++ b/code/modules/reagents/reagent_containers/cups/_cup.dm
@@ -204,6 +204,8 @@
icon = 'icons/obj/medical/chemical.dmi'
icon_state = "beaker"
inhand_icon_state = "beaker"
+ lefthand_file = 'icons/mob/inhands/items_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items_righthand.dmi'
worn_icon_state = "beaker"
custom_materials = list(/datum/material/glass=500)
fill_icon_thresholds = list(0, 1, 20, 40, 60, 80, 100)
diff --git a/code/modules/reagents/reagent_containers/cups/drinks.dm b/code/modules/reagents/reagent_containers/cups/drinks.dm
index 9a6ce550d7d..883e366301b 100644
--- a/code/modules/reagents/reagent_containers/cups/drinks.dm
+++ b/code/modules/reagents/reagent_containers/cups/drinks.dm
@@ -57,6 +57,7 @@
name = "gold cup"
desc = "You're winner!"
icon_state = "golden_cup"
+ inhand_icon_state = "golden_cup"
w_class = WEIGHT_CLASS_BULKY
force = 14
throwforce = 10
@@ -176,7 +177,7 @@
desc = "A bottle of water filled at an old Earth bottling facility."
icon = 'icons/obj/drinks.dmi'
icon_state = "smallbottle"
- inhand_icon_state = "bottle"
+ inhand_icon_state = null
list_reagents = list(/datum/reagent/water = 49.5, /datum/reagent/fluorine = 0.5)//see desc, don't think about it too hard
custom_materials = list(/datum/material/plastic=1000)
volume = 50
diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
index b23b20e6911..e1e111c106a 100644
--- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm
+++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm
@@ -17,6 +17,8 @@
throwforce = 15
demolition_mod = 0.25
inhand_icon_state = "beer" //Generic held-item sprite until unique ones are made.
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
drink_type = ALCOHOL
age_restricted = TRUE // wrryy can't set an init value to see if drink_type contains ALCOHOL so here we go
///Directly relates to the 'knockdown' duration. Lowered by armor (i.e. helmets)
@@ -117,6 +119,8 @@
demolition_mod = 0.25
w_class = WEIGHT_CLASS_TINY
inhand_icon_state = "broken_beer"
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
hitsound = 'sound/weapons/bladeslice.ogg'
attack_verb_continuous = list("stabs", "slashes", "attacks")
attack_verb_simple = list("stab", "slash", "attack")
@@ -689,6 +693,8 @@
/obj/item/reagent_containers/cup/glass/bottle/juice
custom_price = PAYCHECK_CREW
inhand_icon_state = "carton"
+ lefthand_file = 'icons/mob/inhands/items/drinks_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/drinks_righthand.dmi'
isGlass = FALSE
age_restricted = FALSE
diff --git a/code/modules/reagents/reagent_containers/patch.dm b/code/modules/reagents/reagent_containers/patch.dm
index 1c5f3843689..c6f9061316b 100644
--- a/code/modules/reagents/reagent_containers/patch.dm
+++ b/code/modules/reagents/reagent_containers/patch.dm
@@ -3,7 +3,7 @@
desc = "A chemical patch for touch based applications."
icon = 'icons/obj/medical/chemical.dmi'
icon_state = "bandaid"
- inhand_icon_state = "bandaid"
+ inhand_icon_state = null
possible_transfer_amounts = list()
volume = 40
apply_type = PATCH
diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm
index 4c3c33aadf3..a819ff9d9c7 100644
--- a/code/modules/reagents/reagent_containers/spray.dm
+++ b/code/modules/reagents/reagent_containers/spray.dm
@@ -229,6 +229,8 @@
icon = 'icons/obj/hydroponics/harvest.dmi'
icon_state = "sunflower"
inhand_icon_state = "sunflower"
+ lefthand_file = 'icons/mob/inhands/weapons/plants_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/weapons/plants_righthand.dmi'
amount_per_transfer_from_this = 1
possible_transfer_amounts = list(1)
can_toggle_range = FALSE
diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm
index fab8f29cb8e..6b37d95a66f 100644
--- a/code/modules/reagents/reagent_containers/syringes.dm
+++ b/code/modules/reagents/reagent_containers/syringes.dm
@@ -6,6 +6,7 @@
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
icon_state = "syringe_0"
+ inhand_icon_state = "syringe_0"
worn_icon_state = "pen"
amount_per_transfer_from_this = 5
possible_transfer_amounts = list(5, 10, 15)
@@ -136,7 +137,7 @@
/obj/item/reagent_containers/syringe/update_icon_state()
var/rounded_vol = get_rounded_vol()
- icon_state = "[base_icon_state]_[rounded_vol]"
+ icon_state = inhand_icon_state = "[base_icon_state]_[rounded_vol]"
return ..()
/obj/item/reagent_containers/syringe/update_overlays()
@@ -217,6 +218,7 @@
name = "bluespace syringe"
desc = "An advanced syringe that can hold 60 units of chemicals."
icon_state = "bluespace_0"
+ inhand_icon_state = "bluespace_0"
base_icon_state = "bluespace"
amount_per_transfer_from_this = 20
possible_transfer_amounts = list(10, 20, 30, 40, 50, 60)
@@ -226,6 +228,7 @@
name = "piercing syringe"
desc = "A diamond-tipped syringe that pierces armor when launched at high velocity. It can hold up to 10 units."
icon_state = "piercing_0"
+ inhand_icon_state = "piercing_0"
base_icon_state = "piercing"
volume = 10
possible_transfer_amounts = list(5, 10)
diff --git a/code/modules/research/xenobiology/crossbreeding/_clothing.dm b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
index 5d7fec3f8e2..14faefa54f8 100644
--- a/code/modules/research/xenobiology/crossbreeding/_clothing.dm
+++ b/code/modules/research/xenobiology/crossbreeding/_clothing.dm
@@ -9,7 +9,7 @@ Slimecrossing Armor
name = "rebreather mask"
desc = "A transparent mask, resembling a conventional breath mask, but made of bluish slime. Seems to lack any air supply tube, though."
icon_state = "slime"
- inhand_icon_state = "slime"
+ inhand_icon_state = "b_mask"
body_parts_covered = NONE
w_class = WEIGHT_CLASS_SMALL
clothing_traits = list(TRAIT_NOBREATH)
@@ -97,7 +97,7 @@ Slimecrossing Armor
desc = "An extremely addictive flower, full of peace magic."
icon = 'icons/obj/xenobiology/slimecrossing.dmi'
icon_state = "peaceflower"
- inhand_icon_state = "peaceflower"
+ inhand_icon_state = null
slot_flags = ITEM_SLOT_HEAD
clothing_traits = list(TRAIT_PACIFISM)
body_parts_covered = NONE
@@ -132,7 +132,7 @@ Slimecrossing Armor
icon_state = "adamsuit"
icon = 'icons/obj/clothing/suits/armor.dmi'
worn_icon = 'icons/mob/clothing/suits/armor.dmi'
- inhand_icon_state = "adamsuit"
+ inhand_icon_state = null
flags_inv = NONE
obj_flags = IMMUTABLE_SLOW
slowdown = 4
diff --git a/code/modules/surgery/tools.dm b/code/modules/surgery/tools.dm
index 4c285946bd3..596d2392f5e 100644
--- a/code/modules/surgery/tools.dm
+++ b/code/modules/surgery/tools.dm
@@ -3,6 +3,7 @@
desc = "Retracts stuff."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "retractor"
+ inhand_icon_state = "retractor"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = 6000, /datum/material/glass = 3000, /datum/material/silver = 3000)
@@ -22,6 +23,7 @@
desc = "You think you have seen this before."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "hemostat"
+ inhand_icon_state = "hemostat"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = 5000, /datum/material/glass = 2500, /datum/material/silver = 2500)
@@ -43,6 +45,7 @@
desc = "This stops bleeding."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "cautery"
+ inhand_icon_state = "cautery"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = 2500, /datum/material/glass = 750, /datum/material/silver = 1250)
@@ -66,6 +69,7 @@
desc = "It projects a high power laser used for medical applications."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "e_cautery"
+ inhand_icon_state = "e_cautery"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = 4000, /datum/material/glass = 2000, /datum/material/plasma = 2000, /datum/material/uranium = 3000, /datum/material/titanium = 3000)
@@ -108,6 +112,7 @@
desc = "You can drill using this item. You dig?"
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "drill"
+ inhand_icon_state = "drill"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
hitsound = 'sound/weapons/circsawhit.ogg'
@@ -148,6 +153,7 @@
desc = "Cut, cut, and once more cut."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "scalpel"
+ inhand_icon_state = "scalpel"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
flags_1 = CONDUCT_1
@@ -191,6 +197,7 @@
desc = "For heavy duty cutting."
icon = 'icons/obj/medical/surgery_tools.dmi'
icon_state = "saw"
+ inhand_icon_state = "saw"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
hitsound = 'sound/weapons/circsawhit.ogg'
@@ -296,6 +303,7 @@
name = "laser scalpel"
desc = "An advanced scalpel which uses laser technology to cut."
icon_state = "e_scalpel"
+ inhand_icon_state = "e_scalpel"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
custom_materials = list(/datum/material/iron = 6000, /datum/material/glass = 1500, /datum/material/silver = 2000, /datum/material/gold = 1500, /datum/material/diamond = 200, /datum/material/titanium = 4000)
@@ -349,6 +357,7 @@
icon = 'icons/obj/medical/surgery_tools.dmi'
custom_materials = list(/datum/material/iron = 12000, /datum/material/glass = 4000, /datum/material/silver = 4000, /datum/material/titanium = 5000)
icon_state = "adv_retractor"
+ inhand_icon_state = "adv_retractor"
lefthand_file = 'icons/mob/inhands/equipment/medical_lefthand.dmi'
righthand_file = 'icons/mob/inhands/equipment/medical_righthand.dmi'
w_class = WEIGHT_CLASS_NORMAL
diff --git a/code/modules/unit_tests/_unit_tests.dm b/code/modules/unit_tests/_unit_tests.dm
index 23a80f57ede..be49809e53f 100644
--- a/code/modules/unit_tests/_unit_tests.dm
+++ b/code/modules/unit_tests/_unit_tests.dm
@@ -110,6 +110,7 @@
#include "hydroponics_harvest.dm"
#include "hydroponics_self_mutations.dm"
#include "hydroponics_validate_genes.dm"
+#include "inhands.dm"
#include "keybinding_init.dm"
#include "knockoff_component.dm"
#include "limbsanity.dm"
diff --git a/code/modules/unit_tests/dummy_spawn.dm b/code/modules/unit_tests/dummy_spawn.dm
index f708cd181da..ed359f962b7 100644
--- a/code/modules/unit_tests/dummy_spawn.dm
+++ b/code/modules/unit_tests/dummy_spawn.dm
@@ -18,7 +18,7 @@
for(var/datum/job/one_two_three as anything in subtypesof(/datum/job))
var/datum/job/can_you_hear_this = SSjob.GetJobType(one_two_three)
if(!can_you_hear_this)
- log_world("Job type [one_two_three] could not be retrieved from SSjob")
+ log_test("\tJob type [one_two_three] could not be retrieved from SSjob")
continue
lad.job = can_you_hear_this
lad.dress_up_as_job(can_you_hear_this, TRUE)
diff --git a/code/modules/unit_tests/greyscale_config.dm b/code/modules/unit_tests/greyscale_config.dm
index 625c1efcdc2..9c5106be5b0 100644
--- a/code/modules/unit_tests/greyscale_config.dm
+++ b/code/modules/unit_tests/greyscale_config.dm
@@ -3,6 +3,8 @@
/datum/unit_test/greyscale_item_icon_states/Run()
for(var/obj/item/item_path as anything in subtypesof(/obj/item))
+ if(isnull(initial(item_path.greyscale_colors)))
+ continue //All configs depend on greyscale_colors being defined.
var/held_icon_state = initial(item_path.inhand_icon_state) || initial(item_path.icon_state)
var/datum/greyscale_config/lefthand = SSgreyscale.configurations["[initial(item_path.greyscale_config_inhand_left)]"]
diff --git a/code/modules/unit_tests/inhands.dm b/code/modules/unit_tests/inhands.dm
new file mode 100644
index 00000000000..6dd002846c1
--- /dev/null
+++ b/code/modules/unit_tests/inhands.dm
@@ -0,0 +1,91 @@
+/// Makes sure items with defined inhand_icon_states... actually have icons that exist!
+/datum/unit_test/defined_inhand_icon_states
+ var/static/list/possible_icon_states = list()
+ var/fallback_log_message
+ var/unset_inhand_var_message
+
+/datum/unit_test/defined_inhand_icon_states/proc/generate_possible_icon_states_list(directory_path)
+ if(!directory_path)
+ directory_path = "icons/mob/inhands/"
+ for(var/file_path in flist(directory_path))
+ if(findtext(file_path, ".dmi"))
+ for(var/sprite_icon in icon_states("[directory_path][file_path]", 1)) //2nd arg = 1 enables 64x64+ icon support, otherwise you'll end up with "sword0_1" instead of "sword"
+ possible_icon_states[sprite_icon] += list("[directory_path][file_path]")
+ else
+ possible_icon_states += generate_possible_icon_states_list("[directory_path][file_path]")
+
+/datum/unit_test/defined_inhand_icon_states/Run()
+ generate_possible_icon_states_list()
+
+ for(var/obj/item/item_path as anything in subtypesof(/obj/item))
+ if(initial(item_path.item_flags) & ABSTRACT)
+ continue
+
+ var/skip_left
+ var/skip_right
+ if(initial(item_path.greyscale_colors)) //greyscale stuff has it's own unit test.
+ skip_left = initial(item_path.greyscale_config_inhand_left)
+ skip_right = initial(item_path.greyscale_config_inhand_right)
+ if(skip_left && skip_right)
+ continue
+
+ var/lefthand_file = initial(item_path.lefthand_file)
+ var/righthand_file = initial(item_path.righthand_file)
+
+ var/held_icon_state = initial(item_path.inhand_icon_state)
+ if(!held_icon_state)
+ var/base_icon_state = initial(item_path.icon_state)
+ if(!isnull(base_icon_state) && lefthand_file && righthand_file) //Suggest inhand icons that match with the icon_state var.
+ var/missing_var_message
+ if(base_icon_state in possible_icon_states)
+ for(var/file_place in possible_icon_states[base_icon_state])
+ missing_var_message += (missing_var_message ? " & '[file_place]'" : " - Possible matching sprites for \"[base_icon_state]\" found in: '[file_place]'")
+ unset_inhand_var_message += "\n\t[item_path] does not have an inhand_icon_state value[missing_var_message]"
+ continue
+
+ var/match_message = (held_icon_state in possible_icon_states) ? TRUE : null
+ if(match_message)
+ match_message = null
+ for(var/file_place in possible_icon_states[held_icon_state])
+ match_message += (match_message ? " & '[file_place]'" : " - Matching sprite found in: '[file_place]'")
+
+ if(!(skip_left || skip_right) && !lefthand_file && !righthand_file)
+ TEST_FAIL("Missing both icon files for [item_path].\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+ continue
+
+ var/missing_left
+ var/left_fallback
+ if(!skip_left)
+ if(!lefthand_file)
+ TEST_FAIL("Missing left inhand icon file for [item_path].\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+ else
+ missing_left = !("[lefthand_file]" in possible_icon_states[held_icon_state])
+ if(missing_left && ("[lefthand_file]" in possible_icon_states[""]))
+ left_fallback = TRUE
+
+ var/missing_right
+ var/right_fallback
+ if(!skip_right)
+ if(!righthand_file)
+ TEST_FAIL("Missing right inhand icon file for [item_path].\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+ else
+ missing_right = !("[righthand_file]" in possible_icon_states[held_icon_state])
+ if(missing_right && ("[righthand_file]" in possible_icon_states[""]))
+ right_fallback = TRUE
+
+ if(missing_right && missing_left)
+ if(!match_message && right_fallback && left_fallback)
+ fallback_log_message += "\n\t[item_path] has invalid value, using fallback icon.\n\tinhand_icon_state = \"[held_icon_state]\""
+ continue
+ TEST_FAIL("Missing inhand sprites for [item_path] in both '[lefthand_file]' & '[righthand_file]'.\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+ else if(missing_left)
+ TEST_FAIL("Missing left inhand sprite for [item_path] in '[lefthand_file]'[left_fallback ? ", using fallback icon" : null].\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+ else if(missing_right)
+ TEST_FAIL("Missing right inhand sprite for [item_path] in '[righthand_file]'[right_fallback ? ", using fallback icon" : null].\n\tinhand_icon_state = \"[held_icon_state]\"[match_message]")
+
+ if(fallback_log_message)
+ TEST_FAIL("Invalid inhand_icon_state values should be set to null if there isn't a valid icon.[fallback_log_message]")
+
+ if(unset_inhand_var_message)
+ log_test("\tNotice - Possible inhand icon matches found. It is best to be explicit with inhand sprite values.[unset_inhand_var_message]")
+
diff --git a/code/modules/unit_tests/unit_test.dm b/code/modules/unit_tests/unit_test.dm
index 6b525d7b9dc..f7585804a26 100644
--- a/code/modules/unit_tests/unit_test.dm
+++ b/code/modules/unit_tests/unit_test.dm
@@ -97,7 +97,7 @@ GLOBAL_LIST_EMPTY(unit_test_mapping_logs)
if (fexists(filename))
var/data_filename = "data/screenshots/[path_prefix]_[name].png"
fcopy(icon, data_filename)
- log_test("[path_prefix]_[name] was found, putting in data/screenshots")
+ log_test("\t[path_prefix]_[name] was found, putting in data/screenshots")
else if (fexists("code"))
// We are probably running in a local build
fcopy(icon, filename)
@@ -106,7 +106,7 @@ GLOBAL_LIST_EMPTY(unit_test_mapping_logs)
// We are probably running in real CI, so just pretend it worked and move on
fcopy(icon, "data/screenshots_new/[path_prefix]_[name].png")
- log_test("[path_prefix]_[name] was put in data/screenshots_new")
+ log_test("\t[path_prefix]_[name] was put in data/screenshots_new")
/// Logs a test message. Will use GitHub action syntax found at https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions
/datum/unit_test/proc/log_for_test(text, priority, file, line)
diff --git a/code/modules/uplink/uplink_devices.dm b/code/modules/uplink/uplink_devices.dm
index 5189ac5efa0..c9c2fa3174d 100644
--- a/code/modules/uplink/uplink_devices.dm
+++ b/code/modules/uplink/uplink_devices.dm
@@ -7,7 +7,7 @@
name = "station bounced radio"
icon = 'icons/obj/radio.dmi'
icon_state = "radio"
- inhand_icon_state = "walkietalkie"
+ inhand_icon_state = "radio"
worn_icon_state = "radio"
desc = "A basic handheld radio that communicates with local telecommunication networks."
lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
diff --git a/code/modules/wiremod/core/component.dm b/code/modules/wiremod/core/component.dm
index d9e2dbb92dd..19ad27da45a 100644
--- a/code/modules/wiremod/core/component.dm
+++ b/code/modules/wiremod/core/component.dm
@@ -12,6 +12,8 @@
icon = 'icons/obj/module.dmi'
icon_state = "component"
inhand_icon_state = "electronic"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
/// The name of the component shown on the UI
var/display_name = "Generic"
diff --git a/code/modules/wiremod/core/integrated_circuit.dm b/code/modules/wiremod/core/integrated_circuit.dm
index 2f69de6313e..9caf07da840 100644
--- a/code/modules/wiremod/core/integrated_circuit.dm
+++ b/code/modules/wiremod/core/integrated_circuit.dm
@@ -14,6 +14,8 @@ GLOBAL_LIST_EMPTY_TYPED(integrated_circuits, /obj/item/integrated_circuit)
icon = 'icons/obj/module.dmi'
icon_state = "integrated_circuit"
inhand_icon_state = "electronic"
+ lefthand_file = 'icons/mob/inhands/items/devices_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/items/devices_righthand.dmi'
/// The name that appears on the shell.
var/display_name = ""
diff --git a/code/modules/wiremod/core/usb_cable.dm b/code/modules/wiremod/core/usb_cable.dm
index ed0f1053a3d..e0f0a82a4c3 100644
--- a/code/modules/wiremod/core/usb_cable.dm
+++ b/code/modules/wiremod/core/usb_cable.dm
@@ -4,7 +4,9 @@
desc = "A cable that can connect integrated circuits to anything with a USB port, such as computers and machines."
icon = 'icons/obj/wiremod.dmi'
icon_state = "usb_cable"
- inhand_icon_state = "coil"
+ inhand_icon_state = "coil_yellow"
+ lefthand_file = 'icons/mob/inhands/equipment/tools_lefthand.dmi'
+ righthand_file = 'icons/mob/inhands/equipment/tools_righthand.dmi'
base_icon_state = "coil"
w_class = WEIGHT_CLASS_TINY
custom_materials = list(/datum/material/iron = 75)
diff --git a/icons/mob/clothing/belt_mirror.dmi b/icons/mob/clothing/belt_mirror.dmi
index 42c4aff8cf7..27504d8ea34 100644
Binary files a/icons/mob/clothing/belt_mirror.dmi and b/icons/mob/clothing/belt_mirror.dmi differ
diff --git a/icons/mob/inhands/clothing/glasses_lefthand.dmi b/icons/mob/inhands/clothing/glasses_lefthand.dmi
index a6fa6121cf3..76eb0131be2 100644
Binary files a/icons/mob/inhands/clothing/glasses_lefthand.dmi and b/icons/mob/inhands/clothing/glasses_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/glasses_righthand.dmi b/icons/mob/inhands/clothing/glasses_righthand.dmi
index b4de970ff2b..d080230eb9e 100644
Binary files a/icons/mob/inhands/clothing/glasses_righthand.dmi and b/icons/mob/inhands/clothing/glasses_righthand.dmi differ
diff --git a/icons/mob/inhands/clothing/gloves_lefthand.dmi b/icons/mob/inhands/clothing/gloves_lefthand.dmi
index bcf74323bbf..9ffc8a03cfe 100644
Binary files a/icons/mob/inhands/clothing/gloves_lefthand.dmi and b/icons/mob/inhands/clothing/gloves_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/gloves_righthand.dmi b/icons/mob/inhands/clothing/gloves_righthand.dmi
index f7bfae8e0c7..70c6e6fd1f0 100644
Binary files a/icons/mob/inhands/clothing/gloves_righthand.dmi and b/icons/mob/inhands/clothing/gloves_righthand.dmi differ
diff --git a/icons/mob/inhands/clothing/hats_lefthand.dmi b/icons/mob/inhands/clothing/hats_lefthand.dmi
index fccb54acd0d..4d0904ba1f2 100644
Binary files a/icons/mob/inhands/clothing/hats_lefthand.dmi and b/icons/mob/inhands/clothing/hats_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/hats_righthand.dmi b/icons/mob/inhands/clothing/hats_righthand.dmi
index 90cee0d22f3..2e048ba28db 100644
Binary files a/icons/mob/inhands/clothing/hats_righthand.dmi and b/icons/mob/inhands/clothing/hats_righthand.dmi differ
diff --git a/icons/mob/inhands/clothing/masks_lefthand.dmi b/icons/mob/inhands/clothing/masks_lefthand.dmi
index 42c74be1b36..64fcf4d70bd 100644
Binary files a/icons/mob/inhands/clothing/masks_lefthand.dmi and b/icons/mob/inhands/clothing/masks_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/masks_righthand.dmi b/icons/mob/inhands/clothing/masks_righthand.dmi
index afc02b6d6d1..99f45bd1b17 100644
Binary files a/icons/mob/inhands/clothing/masks_righthand.dmi and b/icons/mob/inhands/clothing/masks_righthand.dmi differ
diff --git a/icons/mob/inhands/clothing/shoes_lefthand.dmi b/icons/mob/inhands/clothing/shoes_lefthand.dmi
index d5b1b042fce..705e588bd04 100644
Binary files a/icons/mob/inhands/clothing/shoes_lefthand.dmi and b/icons/mob/inhands/clothing/shoes_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/shoes_righthand.dmi b/icons/mob/inhands/clothing/shoes_righthand.dmi
index 2fa3f218689..b4d074ef7bd 100644
Binary files a/icons/mob/inhands/clothing/shoes_righthand.dmi and b/icons/mob/inhands/clothing/shoes_righthand.dmi differ
diff --git a/icons/mob/inhands/clothing/suits_lefthand.dmi b/icons/mob/inhands/clothing/suits_lefthand.dmi
index 705b3587a16..9cc065f4290 100644
Binary files a/icons/mob/inhands/clothing/suits_lefthand.dmi and b/icons/mob/inhands/clothing/suits_lefthand.dmi differ
diff --git a/icons/mob/inhands/clothing/suits_righthand.dmi b/icons/mob/inhands/clothing/suits_righthand.dmi
index 52835b9711f..9d1bb1cf75b 100644
Binary files a/icons/mob/inhands/clothing/suits_righthand.dmi and b/icons/mob/inhands/clothing/suits_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/belt_lefthand.dmi b/icons/mob/inhands/equipment/belt_lefthand.dmi
index 0a5a460a910..108dd919a3f 100644
Binary files a/icons/mob/inhands/equipment/belt_lefthand.dmi and b/icons/mob/inhands/equipment/belt_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/belt_righthand.dmi b/icons/mob/inhands/equipment/belt_righthand.dmi
index 568aa3d08e3..ad1e692cbe0 100644
Binary files a/icons/mob/inhands/equipment/belt_righthand.dmi and b/icons/mob/inhands/equipment/belt_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/jetpacks_lefthand.dmi b/icons/mob/inhands/equipment/jetpacks_lefthand.dmi
index c360f5d3314..310f8763d24 100644
Binary files a/icons/mob/inhands/equipment/jetpacks_lefthand.dmi and b/icons/mob/inhands/equipment/jetpacks_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/jetpacks_righthand.dmi b/icons/mob/inhands/equipment/jetpacks_righthand.dmi
index dc045431efc..c4ba1f356c0 100644
Binary files a/icons/mob/inhands/equipment/jetpacks_righthand.dmi and b/icons/mob/inhands/equipment/jetpacks_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/medical_lefthand.dmi b/icons/mob/inhands/equipment/medical_lefthand.dmi
index 83ae1987697..e7965575bd0 100644
Binary files a/icons/mob/inhands/equipment/medical_lefthand.dmi and b/icons/mob/inhands/equipment/medical_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/medical_righthand.dmi b/icons/mob/inhands/equipment/medical_righthand.dmi
index fb21cef0b6f..918e465493e 100644
Binary files a/icons/mob/inhands/equipment/medical_righthand.dmi and b/icons/mob/inhands/equipment/medical_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/security_lefthand.dmi b/icons/mob/inhands/equipment/security_lefthand.dmi
index 0acc816664d..17bd1d3fc10 100644
Binary files a/icons/mob/inhands/equipment/security_lefthand.dmi and b/icons/mob/inhands/equipment/security_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/security_righthand.dmi b/icons/mob/inhands/equipment/security_righthand.dmi
index 351c1b38c5b..04136c3cc39 100644
Binary files a/icons/mob/inhands/equipment/security_righthand.dmi and b/icons/mob/inhands/equipment/security_righthand.dmi differ
diff --git a/icons/mob/inhands/equipment/tools_lefthand.dmi b/icons/mob/inhands/equipment/tools_lefthand.dmi
index aa47817fc26..ffd03a36648 100644
Binary files a/icons/mob/inhands/equipment/tools_lefthand.dmi and b/icons/mob/inhands/equipment/tools_lefthand.dmi differ
diff --git a/icons/mob/inhands/equipment/tools_righthand.dmi b/icons/mob/inhands/equipment/tools_righthand.dmi
index 41b6b151a7f..00749175946 100644
Binary files a/icons/mob/inhands/equipment/tools_righthand.dmi and b/icons/mob/inhands/equipment/tools_righthand.dmi differ
diff --git a/icons/mob/inhands/items/devices_lefthand.dmi b/icons/mob/inhands/items/devices_lefthand.dmi
index bd1f1fcfdc0..79228d50b77 100644
Binary files a/icons/mob/inhands/items/devices_lefthand.dmi and b/icons/mob/inhands/items/devices_lefthand.dmi differ
diff --git a/icons/mob/inhands/items/devices_righthand.dmi b/icons/mob/inhands/items/devices_righthand.dmi
index 81a21c2356d..7232c0b1bab 100644
Binary files a/icons/mob/inhands/items/devices_righthand.dmi and b/icons/mob/inhands/items/devices_righthand.dmi differ
diff --git a/icons/mob/inhands/items/drinks_lefthand.dmi b/icons/mob/inhands/items/drinks_lefthand.dmi
index c4fb929d527..4c0a6f22e15 100644
Binary files a/icons/mob/inhands/items/drinks_lefthand.dmi and b/icons/mob/inhands/items/drinks_lefthand.dmi differ
diff --git a/icons/mob/inhands/items/drinks_righthand.dmi b/icons/mob/inhands/items/drinks_righthand.dmi
index 4f01313df37..08e69d0e64a 100644
Binary files a/icons/mob/inhands/items/drinks_righthand.dmi and b/icons/mob/inhands/items/drinks_righthand.dmi differ
diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi
index 93960307164..e7488be76fb 100644
Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ
diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi
index 1bd1d3edd83..a148b65149b 100644
Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_lefthand.dmi b/icons/mob/inhands/weapons/guns_lefthand.dmi
index fa2b7256965..f62424cc0fd 100644
Binary files a/icons/mob/inhands/weapons/guns_lefthand.dmi and b/icons/mob/inhands/weapons/guns_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/guns_righthand.dmi b/icons/mob/inhands/weapons/guns_righthand.dmi
index c9bfafef1a0..719e9af5e45 100644
Binary files a/icons/mob/inhands/weapons/guns_righthand.dmi and b/icons/mob/inhands/weapons/guns_righthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_lefthand.dmi b/icons/mob/inhands/weapons/swords_lefthand.dmi
index 13666b6ebce..0546e5adfa9 100644
Binary files a/icons/mob/inhands/weapons/swords_lefthand.dmi and b/icons/mob/inhands/weapons/swords_lefthand.dmi differ
diff --git a/icons/mob/inhands/weapons/swords_righthand.dmi b/icons/mob/inhands/weapons/swords_righthand.dmi
index 93a2814ceea..fdf3cce8510 100644
Binary files a/icons/mob/inhands/weapons/swords_righthand.dmi and b/icons/mob/inhands/weapons/swords_righthand.dmi differ
diff --git a/icons/obj/clothing/belt_overlays.dmi b/icons/obj/clothing/belt_overlays.dmi
index 21f0e9dbd43..3e276fdf52a 100644
Binary files a/icons/obj/clothing/belt_overlays.dmi and b/icons/obj/clothing/belt_overlays.dmi differ
diff --git a/icons/obj/clothing/masks.dmi b/icons/obj/clothing/masks.dmi
index 0688b2ad6a2..7b4333e8db0 100644
Binary files a/icons/obj/clothing/masks.dmi and b/icons/obj/clothing/masks.dmi differ
diff --git a/icons/obj/weapons/transforming_energy.dmi b/icons/obj/weapons/transforming_energy.dmi
index 3c3f0ca1060..6fcedfaef46 100644
Binary files a/icons/obj/weapons/transforming_energy.dmi and b/icons/obj/weapons/transforming_energy.dmi differ
diff --git a/tgstation.dme b/tgstation.dme
index 1aa5e25946a..330643cc63d 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -2103,7 +2103,6 @@
#include "code\modules\admin\verbs\atmosdebug.dm"
#include "code\modules\admin\verbs\beakerpanel.dm"
#include "code\modules\admin\verbs\borgpanel.dm"
-#include "code\modules\admin\verbs\BrokenInhands.dm"
#include "code\modules\admin\verbs\cinematic.dm"
#include "code\modules\admin\verbs\color_blind_test.dm"
#include "code\modules\admin\verbs\commandreport.dm"
diff --git a/tools/deploy.sh b/tools/deploy.sh
index 75300b0aaf2..18e6155855b 100755
--- a/tools/deploy.sh
+++ b/tools/deploy.sh
@@ -11,6 +11,7 @@ fi
mkdir -p \
$1/_maps \
+ $1/icons/mob/inhands \
$1/icons/runtime \
$1/sound/runtime \
$1/strings \
@@ -24,6 +25,7 @@ fi
cp tgstation.dmb tgstation.rsc $1/
cp -r _maps/* $1/_maps/
+cp -r icons/mob/inhands/* $1/icons/mob/inhands/
cp -r icons/runtime/* $1/icons/runtime/
cp -r sound/runtime/* $1/sound/runtime/
cp -r strings/* $1/strings/