diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm
index 440bd644adb..1ba06c3b5aa 100644
--- a/code/game/objects/items.dm
+++ b/code/game/objects/items.dm
@@ -70,6 +70,8 @@
var/worn_overlay = null // used similarly as above, except for inhands.
var/worn_overlay_color = null // When you want your worn overlay to have colors. So you can have more than one modular coloring.
var/alpha_mask // when you want to slice out a chunk from a sprite
+ var/has_accents = FALSE // determines whether accent colour is applied or not
+ var/accent_color = COLOR_GRAY // used for accents which are coloured differently to the main body of the sprite
//ITEM_ICONS ARE DEPRECATED. USE CONTAINED SPRITES IN FUTURE
// Used to specify the icon file to be used when the item is worn. If not set the default icon for that slot will be used.
@@ -124,10 +126,12 @@
return ..()
/obj/item/update_icon()
+ cut_overlays()
. = ..()
if(build_from_parts)
- cut_overlays()
add_overlay(overlay_image(icon,"[icon_state]_[worn_overlay]", flags=RESET_COLOR)) //add the overlay w/o coloration of the original sprite
+ if(accent_color && has_accents)
+ add_overlay(overlay_image(icon,"[icon_state]_acc",accent_color, RESET_COLOR))
/obj/item/device
icon = 'icons/obj/device.dmi'
diff --git a/code/game/objects/items/items_icon.dm b/code/game/objects/items/items_icon.dm
index 8566e2bf9cf..b4c136850f3 100644
--- a/code/game/objects/items/items_icon.dm
+++ b/code/game/objects/items/items_icon.dm
@@ -40,7 +40,8 @@ var/list/mob_icon_icon_states = list()
var/image/additional_parts = build_additional_parts(H, mob_icon, slot)
if(additional_parts)
I.add_overlay(additional_parts)
-
+ if(has_accents)
+ I.add_overlay(overlay_image(icon,"[item_state][contained_sprite ? slot_str_to_contained_flag(slot) : ""]_acc",accent_color, RESET_COLOR))
return I
/obj/item/proc/get_image_key_mod()
diff --git a/code/modules/client/preference_setup/loadout/_defines.dm b/code/modules/client/preference_setup/loadout/_defines.dm
index fc01db100c9..3450b5212bb 100644
--- a/code/modules/client/preference_setup/loadout/_defines.dm
+++ b/code/modules/client/preference_setup/loadout/_defines.dm
@@ -1,7 +1,7 @@
#define GEAR_NO_SELECTION BITFLAG(0)
#define GEAR_HAS_COLOR_SELECTION BITFLAG(1)
#define GEAR_HAS_ALPHA_SELECTION BITFLAG(2)
-#define GEAR_HAS_ADDITIONAL_COLOR_SELECTION BITFLAG(3)
+#define GEAR_HAS_ACCENT_COLOR_SELECTION BITFLAG(3)
#define GEAR_HAS_NAME_SELECTION BITFLAG(4)
#define GEAR_HAS_DESC_SELECTION BITFLAG(5)
#define GEAR_HAS_COLOR_ROTATION_SELECTION BITFLAG(6)
diff --git a/code/modules/client/preference_setup/loadout/gear_tweaks.dm b/code/modules/client/preference_setup/loadout/gear_tweaks.dm
index 15cbf1656dd..e930bd7b1ef 100644
--- a/code/modules/client/preference_setup/loadout/gear_tweaks.dm
+++ b/code/modules/client/preference_setup/loadout/gear_tweaks.dm
@@ -68,19 +68,18 @@ Alpha adjustment
item.alpha = metadata
/*
- Additional Color adjustment
+ Accent colour
*/
-var/datum/gear_tweak/color/additional/gear_tweak_additional_color = new()
+var/datum/gear_tweak/color/accent/gear_tweak_accent_color = new()
-/datum/gear_tweak/color/additional/get_contents(var/metadata)
- return "Additional Color: ⚫"
+/datum/gear_tweak/color/accent/get_contents(var/metadata)
+ return "Accent Color: ⚫"
-/datum/gear_tweak/color/additional/tweak_item(var/obj/item/I, var/metadata, var/mob/living/carbon/human/H)
+/datum/gear_tweak/color/accent/tweak_item(var/obj/item/I, var/metadata, var/mob/living/carbon/human/H)
if(valid_colors && !(metadata in valid_colors))
return
- if(I.vars["additional_color"]) // set var/additional_color = COLOR_GREY on item
- I.vars["additional_color"] = metadata
+ I.accent_color = metadata
I.update_icon()
/*
diff --git a/code/modules/client/preference_setup/loadout/loadout.dm b/code/modules/client/preference_setup/loadout/loadout.dm
index 2bc6e2b75ea..69a484e96aa 100644
--- a/code/modules/client/preference_setup/loadout/loadout.dm
+++ b/code/modules/client/preference_setup/loadout/loadout.dm
@@ -390,8 +390,8 @@ var/list/gear_datums = list()
gear_tweaks += list(gear_tweak_free_color_choice)
if(flags & GEAR_HAS_ALPHA_SELECTION)
gear_tweaks += list(gear_tweak_alpha_choice)
- if(flags & GEAR_HAS_ADDITIONAL_COLOR_SELECTION)
- gear_tweaks += list(gear_tweak_additional_color)
+ if(flags & GEAR_HAS_ACCENT_COLOR_SELECTION)
+ gear_tweaks += list(gear_tweak_accent_color)
if(flags & GEAR_HAS_NAME_SELECTION)
gear_tweaks += list(gear_tweak_free_name)
if(flags & GEAR_HAS_DESC_SELECTION)
diff --git a/code/modules/client/preference_setup/loadout/loadout_eyes.dm b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
index afd6781bec7..5bf4f712482 100644
--- a/code/modules/client/preference_setup/loadout/loadout_eyes.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_eyes.dm
@@ -165,4 +165,4 @@
/datum/gear/eyes/colorable
display_name = "colorable glasses"
path = /obj/item/clothing/glasses/colorable
- flags = GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ALPHA_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ALPHA_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
diff --git a/code/modules/client/preference_setup/loadout/loadout_suit.dm b/code/modules/client/preference_setup/loadout/loadout_suit.dm
index 0a8c241b8fa..baf36b254da 100644
--- a/code/modules/client/preference_setup/loadout/loadout_suit.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_suit.dm
@@ -89,9 +89,19 @@
path = /obj/item/clothing/suit/storage/hooded/wintercoat/mars
/datum/gear/suit/labcoat
- display_name = "labcoat"
+ display_name = "labcoat selection"
+ description = "A selection of recolourable labcoats."
path = /obj/item/clothing/suit/storage/toggle/labcoat
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
+
+/datum/gear/suit/labcoat/New()
+ ..()
+ var/list/labcoats = list()
+ labcoats["plain labcoat"] = /obj/item/clothing/suit/storage/toggle/labcoat
+ labcoats["accent labcoat"] = /obj/item/clothing/suit/storage/toggle/labcoat/accent
+ labcoats["accent labcoat, alt"] = /obj/item/clothing/suit/storage/toggle/labcoat/accent/alt
+ labcoats["long labcoat"] = /obj/item/clothing/suit/storage/toggle/longcoat
+ gear_tweaks += new /datum/gear_tweak/path(labcoats)
/datum/gear/suit/cmo_labcoats
display_name = "chief medical officer labcoats selection"
@@ -158,6 +168,18 @@
poncho["poncho, operations"] = /obj/item/clothing/accessory/poncho/roles/cargo
gear_tweaks += new /datum/gear_tweak/path(poncho)
+/datum/gear/suit/poncho_colorable
+ display_name = "poncho selection, colourable"
+ path = /obj/item/clothing/accessory/poncho/colorable
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
+
+/datum/gear/suit/poncho_colorable/New()
+ ..()
+ var/list/col_poncho = list()
+ col_poncho["poncho"] = /obj/item/clothing/accessory/poncho/colorable
+ col_poncho["poncho, alt"] = /obj/item/clothing/accessory/poncho/colorable/alt
+ col_poncho["poncho, gradient"] = /obj/item/clothing/accessory/poncho/colorable/gradient
+ gear_tweaks += new /datum/gear_tweak/path(col_poncho)
/datum/gear/suit/suitjacket
display_name = "suit jacket"
@@ -194,16 +216,18 @@
gear_tweaks += new /datum/gear_tweak/path(coat)
/datum/gear/suit/trenchcoat_colorable
- display_name = "colorable trenchcoat"
+ display_name = "colorable trenchcoat selection"
description = "A sleek canvas trenchcoat in 167,777,216 designer colors."
path = /obj/item/clothing/suit/storage/toggle/trench/colorable
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
-/datum/gear/suit/trenchcoat_colorable_alt
- display_name = "colorable trenchcoat, alt"
- description = "A sleek canvas trenchcoat in 167,777,216 designer colors."
- path = /obj/item/clothing/suit/storage/toggle/trench/colorable/alt
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+/datum/gear/suit/trenchcoat_colorable/New()
+ ..()
+ var/list/trenches = list()
+ trenches["trenchcoat"] = /obj/item/clothing/suit/storage/toggle/trench/colorable
+ trenches["trenchcoat, alt"] = /obj/item/clothing/suit/storage/toggle/trench/colorable/alt
+
+ gear_tweaks += new /datum/gear_tweak/path(trenches)
/datum/gear/suit/ian
display_name = "worn shirt"
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/diona.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/diona.dm
index ff57a688547..dc07677ced9 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno/diona.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno/diona.dm
@@ -59,7 +59,7 @@
cost = 1
whitelisted = list(SPECIES_DIONA, SPECIES_DIONA_COEUS)
sort_category = "Xenowear - Diona"
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/suit/diona/carp
display_name = "carp hide poncho"
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/skrell.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/skrell.dm
index 83053ebc4a8..402cecebece 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno/skrell.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno/skrell.dm
@@ -101,7 +101,7 @@
whitelisted = list(SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
sort_category = "Xenowear - Skrell"
flags = GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION
-
+
/datum/gear/head/skrell/skrell_bandana
display_name = "skrell bandana"
path = /obj/item/clothing/head/skrell/skrell_bandana
@@ -400,7 +400,7 @@ var/datum/gear_tweak/social_credit/social_credit_tweak = new()
path = /obj/item/clothing/under/skrell/wetsuit
whitelisted = list(SPECIES_SKRELL, SPECIES_SKRELL_AXIORI)
sort_category = "Xenowear - Skrell"
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/ears/skrell/tailband
display_name = "SCS tailband"
diff --git a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
index 4a915138e10..971c9a52a5c 100644
--- a/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
+++ b/code/modules/client/preference_setup/loadout/loadout_xeno/unathi.dm
@@ -154,7 +154,7 @@
display_name = "himation cloak"
path = /obj/item/clothing/under/unathi/himation
cost = 1
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/head/sinta_ronin
display_name = "straw hat"
@@ -275,7 +275,7 @@
path = /obj/item/clothing/under/unathi/zazali
whitelisted = list(SPECIES_UNATHI, SPECIES_VAURCA_WORKER, SPECIES_VAURCA_WARRIOR)
sort_category = "Xenowear - Unathi"
- flags = GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/uniform/unathi/huytai
display_name = "huytai outfit"
@@ -392,7 +392,7 @@
whitelisted = list(SPECIES_UNATHI)
origin_restriction = list(/singleton/origin_item/origin/heartland_upper, /singleton/origin_item/origin/trad_nobles, , /singleton/origin_item/origin/tza_upper, /singleton/origin_item/origin/southlands_upper, /singleton/origin_item/origin/zazalai_upper, /singleton/origin_item/origin/broken_nobles)
sort_category = "Xenowear - Unathi"
- flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ADDITIONAL_COLOR_SELECTION
+ flags = GEAR_HAS_NAME_SELECTION | GEAR_HAS_DESC_SELECTION | GEAR_HAS_COLOR_SELECTION | GEAR_HAS_ACCENT_COLOR_SELECTION
/datum/gear/wrists/noble_bracers
display_name = "jeweled bracers"
diff --git a/code/modules/clothing/glasses/colorable.dm b/code/modules/clothing/glasses/colorable.dm
index 4cde56988a1..6b29a553149 100644
--- a/code/modules/clothing/glasses/colorable.dm
+++ b/code/modules/clothing/glasses/colorable.dm
@@ -7,23 +7,4 @@
icon_override = null
contained_sprite = TRUE
update_icon_on_init = TRUE
- var/additional_color = COLOR_GRAY // The default color.
-
-/obj/item/clothing/glasses/colorable/update_icon()
- cut_overlays()
- var/image/frame = image(icon, null, "colorable_glasses_frame")
- frame.appearance_flags = RESET_COLOR|RESET_ALPHA
- frame.color = additional_color
- add_overlay(frame)
-
-/obj/item/clothing/glasses/colorable/build_additional_parts(mob/living/carbon/human/H, mob_icon, slot)
- var/image/image = ..()
- if(slot == slot_glasses_str)
- var/image/frame = image(mob_icon, null, "colorable_glasses_ey_frame")
- frame.appearance_flags = RESET_COLOR|RESET_ALPHA
- frame.color = additional_color
- if(image)
- image.add_overlay(frame)
- else
- image = frame
- return image
+ has_accents = TRUE
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index ee9da5b9ec6..c5a31368d90 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -1,7 +1,7 @@
/obj/item/clothing/suit/storage/toggle/labcoat
name = "labcoat"
desc = "A suit that protects against minor chemical spills."
- icon = 'icons/mob/clothing/suit/labcoat.dmi'
+ icon = 'icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi'
contained_sprite = TRUE
icon_state = "labcoat"
item_state = "labcoat" // used for inhands and onmobs. ESPECIALLY FOR CONTAINED SPRITES
@@ -16,7 +16,7 @@
/obj/item/clothing/suit/storage/toggle/longcoat
name = "long labcoat"
desc = "A long, victorian styled labcoat that protects against minor chemical spills."
- icon = 'icons/mob/clothing/suit/labcoat.dmi'
+ icon = 'icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi'
contained_sprite = TRUE
icon_state = "labcoat_long"
item_state = "labcoat_long" // used for inhands and onmobs. ESPECIALLY FOR CONTAINED SPRITES
@@ -171,3 +171,12 @@
/obj/item/clothing/suit/storage/toggle/labcoat/iac
name = "iac labcoat"
icon_state = "labcoat_iac"
+
+/obj/item/clothing/suit/storage/toggle/labcoat/accent
+ has_accents = TRUE
+ icon_state = "labcoat_accent"
+ item_state = "labcoat_accent"
+
+/obj/item/clothing/suit/storage/toggle/labcoat/accent/alt
+ icon_state = "labcoat_accent_alt"
+ item_state = "labcoat_accent_alt"
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index e7c9e5a2d01..9e101456e92 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -348,8 +348,10 @@
/obj/item/clothing/suit/storage/toggle/trench
name = "brown trenchcoat"
desc = "A rugged canvas trenchcoat."
+ icon = 'icons/obj/item/clothing/suit/storage/toggle/trenchcoat.dmi'
icon_state = "trench"
item_state = "trench"
+ contained_sprite = TRUE
blood_overlay_type = "coat"
body_parts_covered = UPPER_TORSO|ARMS
@@ -390,23 +392,7 @@
/obj/item/clothing/suit/storage/toggle/trench/colorable/alt
icon_state = "trench_colorable2"
item_state = "trench_colorable2"
- var/additional_color = COLOR_GRAY
-
-/obj/item/clothing/suit/storage/toggle/trench/colorable/alt/update_icon()
- cut_overlays()
- var/image/belt = image(icon, null, "trench_colorable2_belt[opened ? "_open" : null]")
- belt.appearance_flags = RESET_COLOR
- belt.color = additional_color
- add_overlay(belt)
-
-/obj/item/clothing/suit/storage/toggle/trench/colorable/alt/get_mob_overlay(mob/living/carbon/human/H, mob_icon, mob_state, slot)
- var/image/I = ..()
- if(slot == slot_wear_suit_str)
- var/image/belt = image(mob_icon, null, "trench_colorable2_belt[opened ? "_open" : null]")
- belt.appearance_flags = RESET_COLOR
- belt.color = additional_color
- I.add_overlay(belt)
- return I
+ has_accents = TRUE
/obj/item/clothing/suit/storage/toggle/highvis
name = "high visibility jacket"
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 50f661569f3..511b2ab29a9 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -420,15 +420,17 @@
/obj/item/clothing/accessory/poncho
name = "poncho"
desc = "A simple, comfortable poncho."
+ icon = 'icons/obj/item/clothing/accessory/poncho/poncho.dmi'
icon_state = "classicponcho"
item_state = "classicponcho"
- icon_override = 'icons/mob/ties.dmi'
+ icon_override = 'icons/obj/item/clothing/accessory/poncho/poncho.dmi'
allowed = list(/obj/item/tank/emergency_oxygen,/obj/item/storage/bible,/obj/item/nullrod,/obj/item/reagent_containers/food/drinks/bottle/holywater)
slot_flags = SLOT_OCLOTHING | SLOT_TIE
body_parts_covered = UPPER_TORSO|LOWER_TORSO|ARMS|LEGS
siemens_coefficient = 0.9
w_class = ITEMSIZE_NORMAL
slot = ACCESSORY_SLOT_CAPE
+ contained_sprite = TRUE
var/allow_tail_hiding = TRUE //in case if you want to allow someone to switch the HIDETAIL var or not
/obj/item/clothing/accessory/poncho/verb/toggle_hide_tail()
@@ -512,6 +514,21 @@
icon_state = "cargoponcho"
item_state = "cargoponcho"
+/obj/item/clothing/accessory/poncho/colorable
+ name = "poncho"
+ desc = "A simple, comfortable cloak without sleeves."
+ icon_state = "colourponcho"
+ item_state = "colourponcho"
+ has_accents = TRUE
+
+/obj/item/clothing/accessory/poncho/colorable/alt
+ icon_state = "trimponcho"
+ item_state = "trimponcho"
+
+/obj/item/clothing/accessory/poncho/colorable/gradient
+ icon_state = "gradponcho"
+ item_state = "gradponcho"
+
/*
* Sashes
*/
diff --git a/code/modules/clothing/under/accessories/xeno/diona.dm b/code/modules/clothing/under/accessories/xeno/diona.dm
index bfcbb32b936..684216c1b8d 100644
--- a/code/modules/clothing/under/accessories/xeno/diona.dm
+++ b/code/modules/clothing/under/accessories/xeno/diona.dm
@@ -15,7 +15,7 @@
drop_sound = 'sound/items/drop/card.ogg'
pickup_sound = 'sound/items/pickup/card.ogg'
-
+
/obj/item/clothing/accessory/poncho/eumponcho
name = "adorned poncho"
desc = "A poncho made of some sort of mesh weave material adorned by a piece of colored fabric wrapped around it."
@@ -24,37 +24,6 @@
item_state = "eumponcho"
icon_override = null
contained_sprite = TRUE
- var/additional_color = COLOR_GRAY
-
-/obj/item/clothing/accessory/poncho/eumponcho/update_icon()
- cut_overlays()
- var/image/gem = image(icon, null, "eumponcho_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- add_overlay(gem)
- var/image/chain = image(icon, null, "eumponcho_chain")
- chain.appearance_flags = RESET_COLOR
- add_overlay(chain)
-
-/obj/item/clothing/accessory/poncho/eumponcho/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
- var/image/I = ..()
- if(slot == slot_wear_suit_str)
- var/image/gem = image(mob_icon, null, "eumponcho_un_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- I.add_overlay(gem)
- var/image/chain = image(mob_icon, null, "eumponcho_un_chain")
- chain.appearance_flags = RESET_COLOR
- I.add_overlay(chain)
- return I
-
-/obj/item/clothing/accessory/poncho/eumponcho/get_accessory_mob_overlay(mob/living/carbon/human/H, force)
- var/image/base = ..()
- var/image/gem = image(icon, null, "eumponcho_un_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- base.add_overlay(gem)
- var/image/chain = image(icon, null, "eumponcho_un_chain")
- chain.appearance_flags = RESET_COLOR
- base.add_overlay(chain)
- return base
+ build_from_parts = TRUE
+ worn_overlay = "chain"
+ has_accents = TRUE
diff --git a/code/modules/clothing/under/accessories/xeno/unathi.dm b/code/modules/clothing/under/accessories/xeno/unathi.dm
index 361701afc18..b3b2781ce3f 100644
--- a/code/modules/clothing/under/accessories/xeno/unathi.dm
+++ b/code/modules/clothing/under/accessories/xeno/unathi.dm
@@ -193,37 +193,6 @@
item_state = "rockstone"
icon_override = null
contained_sprite = TRUE
- var/additional_color = COLOR_GRAY
-
-/obj/item/clothing/accessory/poncho/rockstone/update_icon()
- cut_overlays()
- var/image/gem = image(icon, null, "rockstone_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- add_overlay(gem)
- var/image/chain = image(icon, null, "rockstone_chain")
- chain.appearance_flags = RESET_COLOR
- add_overlay(chain)
-
-/obj/item/clothing/accessory/poncho/rockstone/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
- var/image/I = ..()
- if(slot == slot_wear_suit_str)
- var/image/gem = image(mob_icon, null, "rockstone_un_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- I.add_overlay(gem)
- var/image/chain = image(mob_icon, null, "rockstone_un_chain")
- chain.appearance_flags = RESET_COLOR
- I.add_overlay(chain)
- return I
-
-/obj/item/clothing/accessory/poncho/rockstone/get_accessory_mob_overlay(mob/living/carbon/human/H, force)
- var/image/base = ..()
- var/image/gem = image(icon, null, "rockstone_un_gem")
- gem.appearance_flags = RESET_COLOR
- gem.color = additional_color
- base.add_overlay(gem)
- var/image/chain = image(icon, null, "rockstone_un_chain")
- chain.appearance_flags = RESET_COLOR
- base.add_overlay(chain)
- return base
+ build_from_parts = TRUE
+ worn_overlay = "chain"
+ has_accents = TRUE
diff --git a/code/modules/clothing/under/xenos/skrell.dm b/code/modules/clothing/under/xenos/skrell.dm
index a35c09a84db..bb55cb74a9d 100644
--- a/code/modules/clothing/under/xenos/skrell.dm
+++ b/code/modules/clothing/under/xenos/skrell.dm
@@ -318,23 +318,7 @@
icon = 'icons/obj/item/clothing/under/skrell/wetsuit.dmi'
icon_state = "wetsuit"
item_state = "wetsuit"
- var/additional_color = COLOR_GRAY
-
-/obj/item/clothing/under/skrell/wetsuit/update_icon()
- cut_overlays()
- var/image/accent = image(icon, null, "wetsuit_un_accent")
- accent.appearance_flags = RESET_COLOR
- accent.color = additional_color
- add_overlay(accent)
-
-/obj/item/clothing/under/skrell/wetsuit/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
- var/image/I = ..()
- if(slot == slot_w_uniform_str)
- var/image/accent = image(mob_icon, null, "wetsuit_un_accent")
- accent.appearance_flags = RESET_COLOR
- accent.color = additional_color
- I.add_overlay(accent)
- return I
+ has_accents = TRUE
/obj/item/clothing/suit/storage/toggle/skrell/starcoat
name = "star coat"
diff --git a/code/modules/clothing/under/xenos/unathi.dm b/code/modules/clothing/under/xenos/unathi.dm
index d5da46fbd59..35ccc91c42a 100644
--- a/code/modules/clothing/under/xenos/unathi.dm
+++ b/code/modules/clothing/under/xenos/unathi.dm
@@ -61,29 +61,9 @@
worn by those in the warrior caste or those with something to prove."
icon_state = "zazali"
item_state = "zazali"
- var/additional_color = COLOR_GRAY // The default color.
-
-/obj/item/clothing/under/unathi/zazali/update_icon()
- cut_overlays()
- var/image/top = image(icon, null, "zazali_top")
- top.appearance_flags = RESET_COLOR
- top.color = additional_color
- add_overlay(top)
- var/image/belt = image(icon, null, "zazali_belt")
- belt.appearance_flags = RESET_COLOR
- add_overlay(belt)
-
-/obj/item/clothing/under/unathi/zazali/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
- var/image/I = ..()
- if(slot == slot_w_uniform_str)
- var/image/top = image(mob_icon, null, "zazali_un_top")
- top.appearance_flags = RESET_COLOR
- top.color = additional_color
- I.add_overlay(top)
- var/image/belt = image(mob_icon, null, "zazali_un_belt")
- belt.appearance_flags = RESET_COLOR
- I.add_overlay(belt)
- return I
+ build_from_parts = TRUE
+ worn_overlay = "belt"
+ has_accents = TRUE
/obj/item/clothing/under/unathi/huytai
name = "huytai outfit"
@@ -107,26 +87,6 @@
for simple noble wear (the cloth can be embroidered), and practical for labor!"
icon_state = "himation"
item_state = "himation"
- var/additional_color = COLOR_GRAY
-
-/obj/item/clothing/under/unathi/himation/update_icon()
- cut_overlays()
- var/image/skirt = image(icon, null, "himation_skirt")
- skirt.appearance_flags = RESET_COLOR
- skirt.color = additional_color
- add_overlay(skirt)
- var/image/belt = image(icon, null, "himation_belt")
- belt.appearance_flags = RESET_COLOR
- add_overlay(belt)
-
-/obj/item/clothing/under/unathi/himation/get_mob_overlay(var/mob/living/carbon/human/H, var/mob_icon, var/mob_state, var/slot)
- var/image/I = ..()
- if(slot == slot_w_uniform_str)
- var/image/skirt = image(mob_icon, null, "himation_un_skirt")
- skirt.appearance_flags = RESET_COLOR
- skirt.color = additional_color
- I.add_overlay(skirt)
- var/image/belt = image(mob_icon, null, "himation_un_belt")
- belt.appearance_flags = RESET_COLOR
- I.add_overlay(belt)
- return I
+ build_from_parts = TRUE
+ worn_overlay = "belt"
+ has_accents = TRUE
diff --git a/html/changelogs/accent_items.yml b/html/changelogs/accent_items.yml
new file mode 100644
index 00000000000..805b300be9e
--- /dev/null
+++ b/html/changelogs/accent_items.yml
@@ -0,0 +1,8 @@
+author: Sparky_hotdog
+
+delete-after: True
+
+changes:
+ - rscadd: "Added two new labcoats to the loadout with colourable accents."
+ - rscadd: "Added three new ponchos to the loadout with colourable accents."
+ - tweak: "Merged the colourable trenchcoats into one loadout selection."
diff --git a/icons/mob/clothing/suit/labcoat.dmi b/icons/mob/clothing/suit/labcoat.dmi
deleted file mode 100644
index 6ebef186696..00000000000
Binary files a/icons/mob/clothing/suit/labcoat.dmi and /dev/null differ
diff --git a/icons/mob/suit.dmi b/icons/mob/suit.dmi
index 18aaef68e5a..8a77b0383a6 100644
Binary files a/icons/mob/suit.dmi and b/icons/mob/suit.dmi differ
diff --git a/icons/mob/ties.dmi b/icons/mob/ties.dmi
index f82f24b94d3..06ca1907c81 100644
Binary files a/icons/mob/ties.dmi and b/icons/mob/ties.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index d1bbc0ceca2..9c9250c79f3 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ
diff --git a/icons/obj/clothing/ties.dmi b/icons/obj/clothing/ties.dmi
index cf8b8dfd15c..01fc9a830c8 100644
Binary files a/icons/obj/clothing/ties.dmi and b/icons/obj/clothing/ties.dmi differ
diff --git a/icons/obj/diona_items.dmi b/icons/obj/diona_items.dmi
index cbffa7bf861..cbc63c514cd 100644
Binary files a/icons/obj/diona_items.dmi and b/icons/obj/diona_items.dmi differ
diff --git a/icons/obj/item/clothing/accessory/poncho/poncho.dmi b/icons/obj/item/clothing/accessory/poncho/poncho.dmi
new file mode 100644
index 00000000000..af8c45f1871
Binary files /dev/null and b/icons/obj/item/clothing/accessory/poncho/poncho.dmi differ
diff --git a/icons/obj/item/clothing/eyes/colorable_glasses.dmi b/icons/obj/item/clothing/eyes/colorable_glasses.dmi
index 9211cfab652..3631258f907 100644
Binary files a/icons/obj/item/clothing/eyes/colorable_glasses.dmi and b/icons/obj/item/clothing/eyes/colorable_glasses.dmi differ
diff --git a/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi b/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi
new file mode 100644
index 00000000000..c58c2f959c6
Binary files /dev/null and b/icons/obj/item/clothing/suit/storage/toggle/labcoat.dmi differ
diff --git a/icons/obj/item/clothing/suit/storage/toggle/trenchcoat.dmi b/icons/obj/item/clothing/suit/storage/toggle/trenchcoat.dmi
new file mode 100644
index 00000000000..99679aa7f0e
Binary files /dev/null and b/icons/obj/item/clothing/suit/storage/toggle/trenchcoat.dmi differ
diff --git a/icons/obj/item/clothing/under/skrell/wetsuit.dmi b/icons/obj/item/clothing/under/skrell/wetsuit.dmi
index 7dcf5ae8dab..1dd67b318e0 100644
Binary files a/icons/obj/item/clothing/under/skrell/wetsuit.dmi and b/icons/obj/item/clothing/under/skrell/wetsuit.dmi differ
diff --git a/icons/obj/unathi_items.dmi b/icons/obj/unathi_items.dmi
index 988b4045012..38f0fd44d8b 100644
Binary files a/icons/obj/unathi_items.dmi and b/icons/obj/unathi_items.dmi differ