diff --git a/code/game/objects/items/melee/energy.dm b/code/game/objects/items/melee/energy.dm
index 4930f39b31..ca2fdbaeff 100644
--- a/code/game/objects/items/melee/energy.dm
+++ b/code/game/objects/items/melee/energy.dm
@@ -193,34 +193,31 @@
/obj/item/melee/transforming/energy/sword/saber
possible_colors = list("red" = LIGHT_COLOR_RED, "blue" = LIGHT_COLOR_LIGHT_CYAN, "green" = LIGHT_COLOR_GREEN, "purple" = LIGHT_COLOR_LAVENDER)
- unique_reskin = list("Sword" = "sword0", "Saber" = "esaber0")
+ unique_reskin = list(
+ "Sword" = list("icon_state" = "sword0"),
+ "Saber" = list("icon_state" = "esaber0")
+ )
var/hacked = FALSE
- var/saber = FALSE
/obj/item/melee/transforming/energy/sword/saber/transform_weapon(mob/living/user, supress_message_text)
. = ..()
if(.)
- if(active)
- if(sword_color)
- if(saber)
- icon_state = "esaber[sword_color]"
- else
- icon_state = "sword[sword_color]"
- else
- if(saber)
- icon_state = "esaber0"
+ switch(current_skin)
+ if("Saber")
+ icon_state = "esaber[active ? sword_color : "0"]"
+ // No skin
else
- icon_state = "sword0"
+ icon_state = "sword[active ? sword_color : "0"]"
/obj/item/melee/transforming/energy/sword/saber/reskin_obj(mob/M)
. = ..()
- if(icon_state == "esaber0")
- saber = TRUE
- if(active)
- if(saber)
- icon_state = "esaber[sword_color]"
- else
- icon_state = "sword[sword_color]"
+ if(!.)
+ return
+ switch(current_skin)
+ if("Sword")
+ icon_state = "sword[active ? sword_color : "0"]"
+ if("Saber")
+ icon_state = "esaber[active ? sword_color : "0"]"
/obj/item/melee/transforming/energy/sword/saber/set_sword_color(var/color_forced)
if(color_forced) // wow i really do not like this at fucking all holy SHIT
diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm
index 4ea25bec96..59fe688b69 100644
--- a/code/game/objects/objs.dm
+++ b/code/game/objects/objs.dm
@@ -349,24 +349,31 @@
reskin_obj(user)
return TRUE
+/// Reskins an object according to M's choice, modified to be overridable and supports different icons
/obj/proc/reskin_obj(mob/M)
if(!LAZYLEN(unique_reskin))
- return
+ return FALSE
var/list/items = list()
for(var/reskin_option in unique_reskin)
- var/image/item_image = image(icon = src.icon, icon_state = unique_reskin[reskin_option])
+ var/image/item_image = image(
+ icon = unique_reskin[reskin_option]["icon"] ? unique_reskin[reskin_option]["icon"] : icon,
+ icon_state = unique_reskin[reskin_option]["icon_state"])
items += list("[reskin_option]" = item_image)
sortList(items)
var/pick = show_radial_menu(M, src, items, custom_check = CALLBACK(src, .proc/check_reskin_menu, M), radius = 38, require_near = TRUE)
if(!pick)
- return
- if(!unique_reskin[pick])
- return
+ return FALSE
+ if(!unique_reskin[pick]["icon_state"])
+ return FALSE
current_skin = pick
- icon_state = unique_reskin[pick]
+ var/has_icon = unique_reskin[pick]["icon"]
+ if(has_icon)
+ icon = has_icon
+ icon_state = unique_reskin[pick]["icon_state"]
to_chat(M, "[src] is now skinned as '[pick].'")
+ return TRUE
/**
* Checks if we are allowed to interact with a radial menu for reskins
diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm
index d3ad2ca4c7..66cc5484e4 100644
--- a/code/modules/clothing/gloves/miscellaneous.dm
+++ b/code/modules/clothing/gloves/miscellaneous.dm
@@ -79,16 +79,20 @@
to_chat(user, "With [src] off of your arms, you feel less ready to punch things.")
/obj/item/clothing/gloves/fingerless/pugilist/crafted
- unique_reskin = list("Short" = "armwraps",
- "Extended" = "armwraps_extended"
- )
+ unique_reskin = list(
+ "Short" = list("icon_state" = "armwraps"),
+ "Extended" = list("icon_state" = "armwraps_extended")
+ )
/obj/item/clothing/gloves/fingerless/pugilist/crafted/reskin_obj(mob/M)
. = ..()
- if(icon_state == "armwraps_extended")
- item_state = "armwraps_extended"
- else
+ if(!.)
return
+ switch(current_skin)
+ if("Short")
+ item_state = "armwraps"
+ if("Extended")
+ item_state = "armwraps_extended"
/obj/item/clothing/gloves/fingerless/pugilist/chaplain
name = "armwraps of unyielding resolve"
diff --git a/code/modules/clothing/shoes/miscellaneous.dm b/code/modules/clothing/shoes/miscellaneous.dm
index cdf5512fc6..7c1fc6fe3d 100644
--- a/code/modules/clothing/shoes/miscellaneous.dm
+++ b/code/modules/clothing/shoes/miscellaneous.dm
@@ -275,8 +275,10 @@
pocket_storage_component_path = /datum/component/storage/concrete/pockets/shoes
actions_types = list(/datum/action/item_action/bhop)
permeability_coefficient = 0.05
- unique_reskin = list("Explorer" = "miningjet",
- "Jackboot" = "jetboots")
+ unique_reskin = list(
+ "Explorer" = list("icon_state" = "miningjet"),
+ "Jackboot" = list("icon_state" = "jetboots")
+ )
var/jumpdistance = 5 //-1 from to see the actual distance, e.g 4 goes over 3 tiles
var/jumpspeed = 3
var/recharging_rate = 60 //default 6 seconds between each dash
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index c13a8bfa66..36795d53b8 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -80,9 +80,10 @@
item_state = "hostrench"
flags_inv = 0
strip_delay = 80
- unique_reskin = list("Coat" = "hostrench",
- "Cloak" = "trenchcloak"
- )
+ unique_reskin = list(
+ "Coat" = list("icon_state" = "hostrench"),
+ "Cloak" = list("icon_state" = "trenchcloak")
+ )
/obj/item/clothing/suit/armor/hos/platecarrier
name = "plate carrier"
diff --git a/code/modules/clothing/under/accessories.dm b/code/modules/clothing/under/accessories.dm
index b389e5db70..238b2ec86e 100644
--- a/code/modules/clothing/under/accessories.dm
+++ b/code/modules/clothing/under/accessories.dm
@@ -611,10 +611,17 @@
icon_state = "pride"
above_suit = TRUE
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Rainbow Pride" = "pride",
- "Bisexual Pride" = "pride_bi",
- "Pansexual Pride" = "pride_pan",
- "Asexual Pride" = "pride_ace",
- "Non-binary Pride" = "pride_enby",
- "Transgender Pride" = "pride_trans",
- )
+ unique_reskin = list(
+ "Rainbow Pride" = list("icon_state" = "pride"),
+ "Bisexual Pride" = list("icon_state" = "pride_bi"),
+ "Pansexual Pride" = list("icon_state" = "pride_pan"),
+ "Asexual Pride" = list("icon_state" = "pride_ace"),
+ "Non-binary Pride" = list("icon_state" = "pride_enby"),
+ "Transgender Pride" = list("icon_state" = "pride_trans")
+ )
+
+/obj/item/clothing/accessory/pride/reskin_obj(mob/M)
+ . = ..()
+ if(!.)
+ return
+ name = "[current_skin] pin"
diff --git a/code/modules/mining/equipment/kinetic_crusher.dm b/code/modules/mining/equipment/kinetic_crusher.dm
index 3c2a4541b2..68ca1c979d 100644
--- a/code/modules/mining/equipment/kinetic_crusher.dm
+++ b/code/modules/mining/equipment/kinetic_crusher.dm
@@ -253,8 +253,10 @@
sharpness = SHARP_NONE // use your survival dagger or smth
icon_state = "crusher-hands"
item_state = "crusher0-fist"
- unique_reskin = list("Gauntlets" = "crusher-hands",
- "Fingerless" = "crusher-hands-bare")
+ unique_reskin = list(
+ "Gauntlets" = list("icon_state" = "crusher-hands"),
+ "Fingerless" = list("icon_state" = "crusher-hands-bare")
+ )
detonation_damage = 45 // 60 on wield, compared to normal crusher's 70
backstab_bonus = 70 // 130 on backstab though
var/combo_on_anything = FALSE // @admins if you're varediting this you don't get to whine at me
diff --git a/code/modules/paperwork/pen.dm b/code/modules/paperwork/pen.dm
index cb9570e02f..234c67fd37 100644
--- a/code/modules/paperwork/pen.dm
+++ b/code/modules/paperwork/pen.dm
@@ -105,12 +105,13 @@
custom_materials = list(/datum/material/gold = 750)
sharpness = SHARP_EDGED
resistance_flags = FIRE_PROOF
- unique_reskin = list("Oak" = "pen-fountain-o",
- "Gold" = "pen-fountain-g",
- "Rosewood" = "pen-fountain-r",
- "Black and Silver" = "pen-fountain-b",
- "Command Blue" = "pen-fountain-cb"
- )
+ unique_reskin = list(
+ "Oak" = list("icon_state" = "pen-fountain-o"),
+ "Gold" = list("icon_state" = "pen-fountain-g"),
+ "Rosewood" = list("icon_state" = "pen-fountain-r"),
+ "Black and Silver" = list("icon_state" = "pen-fountain-b"),
+ "Command Blue" = list("icon_state" = "pen-fountain-cb")
+ )
embedding = list("embed_chance" = 75)
/obj/item/pen/fountain/captain/Initialize(mapload)
@@ -118,9 +119,10 @@
AddComponent(/datum/component/butchering, 200, 115) //the pen is mightier than the sword
/obj/item/pen/fountain/captain/reskin_obj(mob/M)
- ..()
- if(current_skin)
- desc = "It's an expensive [current_skin] fountain pen. The nib is quite sharp."
+ . = ..()
+ if(!.)
+ return
+ desc = "It's an expensive [current_skin] fountain pen. The nib is quite sharp."
/obj/item/pen/attack_self(mob/living/carbon/user)
var/deg = input(user, "What angle would you like to rotate the pen head to? (1-360)", "Rotate Pen Head") as null|num
diff --git a/code/modules/projectiles/guns/ballistic.dm b/code/modules/projectiles/guns/ballistic.dm
index 3f2f4d3e65..5c6aff5564 100644
--- a/code/modules/projectiles/guns/ballistic.dm
+++ b/code/modules/projectiles/guns/ballistic.dm
@@ -23,7 +23,7 @@
/obj/item/gun/ballistic/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][suppressed ? "-suppressed" : ""][sawn_off ? "-sawn" : ""]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][suppressed ? "-suppressed" : ""][sawn_off ? "-sawn" : ""]"
else
icon_state = "[initial(icon_state)][suppressed ? "-suppressed" : ""][sawn_off ? "-sawn" : ""]"
diff --git a/code/modules/projectiles/guns/ballistic/pistol.dm b/code/modules/projectiles/guns/ballistic/pistol.dm
index bd6f203882..53ba6d6a92 100644
--- a/code/modules/projectiles/guns/ballistic/pistol.dm
+++ b/code/modules/projectiles/guns/ballistic/pistol.dm
@@ -30,27 +30,28 @@
can_unsuppress = TRUE
automatic_burst_overlay = FALSE
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "cde",
- "N-99" = "n99",
- "Stealth" = "stealthpistol",
- "HKVP-78" = "vp78",
- "Luger" = "p08b",
- "Mk.58" = "secguncomp",
- "PX4 Storm" = "px4"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "cde"),
+ "N-99" = list("icon_state" = "n99"),
+ "Stealth" = list("icon_state" = "stealthpistol"),
+ "HKVP-78" = list("icon_state" = "vp78"),
+ "Luger" = list("icon_state" = "p08b"),
+ "Mk.58" = list("icon_state" = "secguncomp"),
+ "PX4 Storm" = list("icon_state" = "px4")
+ )
/obj/item/gun/ballistic/automatic/pistol/modular/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
else
icon_state = "[initial(icon_state)][chambered ? "" : "-e"][suppressed ? "-suppressed" : ""]"
/obj/item/gun/ballistic/automatic/pistol/modular/update_overlays()
. = ..()
if(magazine && suppressed)
- . += "[unique_reskin[current_skin]]-magazine-sup" //Yes, this means the default iconstate can't have a magazine overlay
+ . += "[unique_reskin[current_skin]["icon_state"]]-magazine-sup" //Yes, this means the default iconstate can't have a magazine overlay
else if (magazine)
- . += "[unique_reskin[current_skin]]-magazine"
+ . += "[unique_reskin[current_skin]["icon_state"]]-magazine"
/obj/item/gun/ballistic/automatic/pistol/m1911
name = "\improper M1911"
diff --git a/code/modules/projectiles/guns/ballistic/revolver.dm b/code/modules/projectiles/guns/ballistic/revolver.dm
index f3b07aa7a4..28f81e13ae 100644
--- a/code/modules/projectiles/guns/ballistic/revolver.dm
+++ b/code/modules/projectiles/guns/ballistic/revolver.dm
@@ -88,13 +88,15 @@
/obj/item/gun/ballistic/revolver/syndicate
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "revolver",
- "Silver" = "russianrevolver",
- "Robust" = "revolvercit",
- "Bulky" = "revolverhakita",
- "Polished" = "revolvertoriate",
- "Soulless" = "revolveroldflip",
- "Soul" = "revolverold")
+ unique_reskin = list(
+ "Default" = list("icon_state" = "revolver"),
+ "Silver" = list("icon_state" = "russianrevolver"),
+ "Robust" = list("icon_state" = "revolvercit"),
+ "Bulky" = list("icon_state" = "revolverhakita"),
+ "Polished" = list("icon_state" = "revolvertoriate"),
+ "Soulless" = list("icon_state" = "revolveroldflip"),
+ "Soul" = list("icon_state" = "revolverold")
+ )
/obj/item/gun/ballistic/revolver/detective
name = "\improper .38 Mars Special"
@@ -102,12 +104,13 @@
icon_state = "detective"
mag_type = /obj/item/ammo_box/magazine/internal/cylinder/rev38
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "detective",
- "Leopard Spots" = "detective_leopard",
- "Black Panther" = "detective_panther",
- "Gold Trim" = "detective_gold",
- "The Peacemaker" = "detective_peacemaker"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "detective"),
+ "Leopard Spots" = list("icon_state" = "detective_leopard"),
+ "Black Panther" = list("icon_state" = "detective_panther"),
+ "Gold Trim" = list("icon_state" = "detective_gold"),
+ "The Peacemaker" = list("icon_state" = "detective_peacemaker")
+ )
var/list/safe_calibers
/obj/item/gun/ballistic/revolver/detective/Initialize(mapload)
@@ -294,13 +297,14 @@
mag_type = /obj/item/ammo_box/magazine/internal/shot/dual
sawn_desc = "Omar's coming!"
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Default" = "dshotgun",
- "Dark Red Finish" = "dshotgun-d",
- "Ash" = "dshotgun-f",
- "Faded Grey" = "dshotgun-g",
- "Maple" = "dshotgun-l",
- "Rosewood" = "dshotgun-p"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "dshotgun"),
+ "Dark Red Finish" = list("icon_state" = "dshotgun-d"),
+ "Ash" = list("icon_state" = "dshotgun-f"),
+ "Faded Grey" = list("icon_state" = "dshotgun-g"),
+ "Maple" = list("icon_state" = "dshotgun-l"),
+ "Rosewood" = list("icon_state" = "dshotgun-p")
+ )
/obj/item/gun/ballistic/revolver/doublebarrel/attackby(obj/item/A, mob/user, params)
..()
@@ -342,9 +346,10 @@
slot_flags = null
mag_type = /obj/item/ammo_box/magazine/internal/shot/improvised
sawn_desc = "I'm just here for the gasoline."
- unique_reskin = list("Default" = "ishotgun",
- "Cobbled" = "old_ishotgun"
- )
+ unique_reskin = list(
+ "Default" = list("icon_state" = "ishotgun"),
+ "Cobbled" = list("icon_state" = "old_ishotgun")
+ )
var/slung = FALSE
/obj/item/gun/ballistic/revolver/doublebarrel/improvised/attackby(obj/item/A, mob/user, params)
diff --git a/code/modules/projectiles/guns/ballistic/shotgun.dm b/code/modules/projectiles/guns/ballistic/shotgun.dm
index b52620e7e0..0b92e63ca6 100644
--- a/code/modules/projectiles/guns/ballistic/shotgun.dm
+++ b/code/modules/projectiles/guns/ballistic/shotgun.dm
@@ -98,9 +98,10 @@
fire_delay = 7
mag_type = /obj/item/ammo_box/magazine/internal/shot/riot
sawn_desc = "Come with me if you want to live."
- unique_reskin = list("Tactical" = "riotshotgun",
- "Wood Stock" = "wood_riotshotgun"
- )
+ unique_reskin = list(
+ "Tactical" = list("icon_state" = "riotshotgun"),
+ "Wood Stock" = list("icon_state" = "wood_riotshotgun")
+ )
/obj/item/gun/ballistic/shotgun/riot/attackby(obj/item/A, mob/user, params)
..()
@@ -238,9 +239,10 @@
fire_delay = 5
mag_type = /obj/item/ammo_box/magazine/internal/shot/com
w_class = WEIGHT_CLASS_HUGE
- unique_reskin = list("Tactical" = "cshotgun",
- "Slick" = "cshotgun_slick"
- )
+ unique_reskin = list(
+ "Tactical" = list("icon_state" = "cshotgun"),
+ "Slick" = list("icon_state" = "cshotgun_slick")
+ )
/obj/item/gun/ballistic/shotgun/automatic/combat/compact
name = "warden's combat shotgun"
@@ -279,7 +281,7 @@
update_icon()
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/update_icon_state()
- icon_state = "[current_skin ? unique_reskin[current_skin] : "cshotgun"][stock ? "" : "c"]"
+ icon_state = "[current_skin ? unique_reskin[current_skin]["icon_state"] : "cshotgun"][stock ? "" : "c"]"
/obj/item/gun/ballistic/shotgun/automatic/combat/compact/afterattack(atom/target, mob/living/user, flag, params)
if(!stock)
@@ -381,7 +383,7 @@
/obj/item/gun/ballistic/shotgun/leveraction/update_icon_state()
if(current_skin)
- icon_state = "[unique_reskin[current_skin]][sawn_off ? "-sawn" : ""][chambered ? "" : "-e"]"
+ icon_state = "[unique_reskin[current_skin]["icon_state"]][sawn_off ? "-sawn" : ""][chambered ? "" : "-e"]"
else
icon_state = "[initial(icon_state)][sawn_off ? "-sawn" : ""][chambered ? "" : "-e"]"
diff --git a/code/modules/reagents/reagent_containers/hypovial.dm b/code/modules/reagents/reagent_containers/hypovial.dm
index 43f9f88976..0f9ffd6514 100644
--- a/code/modules/reagents/reagent_containers/hypovial.dm
+++ b/code/modules/reagents/reagent_containers/hypovial.dm
@@ -9,15 +9,16 @@
possible_transfer_amounts = list(1,2,5,10)
container_flags = APTFT_VERB
obj_flags = UNIQUE_RENAME
- unique_reskin = list("hypovial" = "hypovial",
- "red hypovial" = "hypovial-b",
- "blue hypovial" = "hypovial-d",
- "green hypovial" = "hypovial-a",
- "orange hypovial" = "hypovial-k",
- "purple hypovial" = "hypovial-p",
- "black hypovial" = "hypovial-t",
- "pink hypovial" = "hypovial-pink"
- )
+ unique_reskin = list(
+ "hypovial" = list("icon_state" = "hypovial"),
+ "red hypovial" = list("icon_state" = "hypovial-b"),
+ "blue hypovial" = list("icon_state" = "hypovial-d"),
+ "green hypovial" = list("icon_state" = "hypovial-a"),
+ "orange hypovial" = list("icon_state" = "hypovial-k"),
+ "purple hypovial" = list("icon_state" = "hypovial-p"),
+ "black hypovial" = list("icon_state" = "hypovial-t"),
+ "pink hypovial" = list("icon_state" = "hypovial-pink")
+ )
always_reskinnable = TRUE
cached_icon = "hypovial"
@@ -50,14 +51,15 @@
icon_state = "hypoviallarge"
volume = 120
possible_transfer_amounts = list(1,2,5,10,20)
- unique_reskin = list("large hypovial" = "hypoviallarge",
- "large red hypovial" = "hypoviallarge-b",
- "large blue hypovial" = "hypoviallarge-d",
- "large green hypovial" = "hypoviallarge-a",
- "large orange hypovial" = "hypoviallarge-k",
- "large purple hypovial" = "hypoviallarge-p",
- "large black hypovial" = "hypoviallarge-t"
- )
+ unique_reskin = list(
+ "large hypovial" = list("icon_state" = "hypoviallarge"),
+ "large red hypovial" = list("icon_state" = "hypoviallarge-b"),
+ "large blue hypovial" = list("icon_state" = "hypoviallarge-d"),
+ "large green hypovial" = list("icon_state" = "hypoviallarge-a"),
+ "large orange hypovial" = list("icon_state" = "hypoviallarge-k"),
+ "large purple hypovial" = list("icon_state" = "hypoviallarge-p"),
+ "large black hypovial" = list("icon_state" = "hypoviallarge-t")
+ )
cached_icon = "hypoviallarge"
/obj/item/reagent_containers/glass/bottle/vial/large/bluespace
diff --git a/modular_citadel/code/modules/custom_loadout/custom_items.dm b/modular_citadel/code/modules/custom_loadout/custom_items.dm
index 500db4453f..ec97d0659f 100644
--- a/modular_citadel/code/modules/custom_loadout/custom_items.dm
+++ b/modular_citadel/code/modules/custom_loadout/custom_items.dm
@@ -550,7 +550,10 @@
item_state = "fritz"
attack_verb = list("barked", "boofed", "shotgun'd")
obj_flags = UNIQUE_RENAME
- unique_reskin = list("Goodboye" = "fritz", "Badboye" = "fritz_bad")
+ unique_reskin = list(
+ "Goodboye" = list("icon_state" = "fritz"),
+ "Badboye" = list("icon_state" = "fritz_bad")
+ )
mutantrace_variation = NONE
/obj/item/clothing/neck/cloak/polychromic/polyce
diff --git a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
index a4ce1ae289..789826f5be 100644
--- a/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
+++ b/modular_sand/code/modules/clothing/spacesuits/hardsuit.dm
@@ -122,3 +122,127 @@
explosion(src.loc,0,0,3,flame_range = 3)
qdel(src)
return
+
+/obj/item/clothing/suit/space/hardsuit/mining
+ unique_reskin = list(
+ "Default" = list(
+ "icon" = 'icons/obj/clothing/suits.dmi',
+ "icon_state" = "hardsuit-mining"
+ ),
+ "Conscript" = list(
+ "icon" = 'modular_sand/icons/mob/clothing/suit.dmi',
+ "icon_state" = "commando-armor"
+ )
+ )
+
+/obj/item/clothing/suit/space/hardsuit/mining/Move(atom/newloc, direct, glide_size_override)
+ . = ..()
+ setDir(SOUTH)
+
+/obj/item/clothing/suit/space/hardsuit/mining/equipped(mob/user, slot)
+ . = ..()
+ switch(current_skin)
+ if("Conscript")
+ if(slot == ITEM_SLOT_OCLOTHING)
+ icon = 'modular_sand/icons/mob/clothing/suit.dmi'
+ else
+ icon = 'modular_sand/icons/obj/clothing/suits.dmi'
+ else
+ return
+
+/obj/item/clothing/suit/space/hardsuit/mining/reskin_obj(mob/M)
+ . = ..()
+ if(!.)
+ return
+ var/datum/component/armor_plate/armor_comp = GetComponent(/datum/component/armor_plate)
+ var/armor_level = 0
+ var/armor_max = 0
+ if(armor_comp)
+ armor_level = armor_comp.amount
+ armor_max = armor_comp.maxamount
+
+ var/obj/item/clothing/head/helmet/space/hardsuit/mining/mining_helmet
+ if(istype(helmet))
+ mining_helmet = helmet
+
+ switch(current_skin)
+ if("Default")
+ name = initial(name)
+ desc = initial(desc)
+ if(armor_level != 0)
+ upgrade_icon(amount = armor_level, maxamount = armor_max)
+ mob_overlay_icon = initial(mob_overlay_icon)
+ anthro_mob_worn_overlay = initial(mob_overlay_icon)
+ if(mining_helmet)
+ mining_helmet.name = initial(mining_helmet.name)
+ mining_helmet.desc = initial(mining_helmet.desc)
+ mining_helmet.icon = initial(mining_helmet.icon)
+ mining_helmet.icon_state = initial(mining_helmet.icon_state)
+ if(armor_level != 0)
+ mining_helmet.upgrade_icon(amount = armor_level, maxamount = armor_max)
+ mining_helmet.mob_overlay_icon = initial(mining_helmet.mob_overlay_icon)
+ mining_helmet.anthro_mob_worn_overlay = initial(mining_helmet.anthro_mob_worn_overlay)
+
+ /// Sprited by Dexxiol#3462 :)
+ if("Conscript")
+ name = "Conscript suit"
+ desc = "..and so he left, with new orders and new questions."
+ if(armor_level != 0)
+ upgrade_icon(amount = armor_level, maxamount = armor_max)
+ mob_overlay_icon = 'modular_sand/icons/mob/clothing/suit.dmi'
+ anthro_mob_worn_overlay = 'modular_sand/icons/mob/clothing/suit_digi.dmi'
+
+ if(mining_helmet)
+ mining_helmet.name = "Conscript helmet"
+ mining_helmet.desc = "It shines briefly, full of life."
+ mining_helmet.icon = 'modular_sand/icons/mob/clothing/head.dmi'
+ mining_helmet.icon_state = "commando-helmet"
+ if(armor_level != 0)
+ mining_helmet.upgrade_icon(amount = armor_level, maxamount = armor_max)
+ mining_helmet.mob_overlay_icon = 'modular_sand/icons/mob/clothing/head.dmi'
+ mining_helmet.anthro_mob_worn_overlay = 'modular_sand/icons/mob/clothing/head_muzzled.dmi'
+ if(current_equipped_slot != ITEM_SLOT_OCLOTHING)
+ icon = 'modular_sand/icons/obj/clothing/suits.dmi'
+
+/obj/item/clothing/head/helmet/space/hardsuit/mining/update_icon_state()
+ switch(suit.current_skin)
+ if("Conscript")
+ return
+ else
+ . = ..()
+
+/obj/item/clothing/head/helmet/space/hardsuit/mining/upgrade_icon(datum/source, amount, maxamount)
+ switch(suit.current_skin)
+ if("Conscript")
+ hardsuit_type = "-helmet"
+ if(amount)
+ name = "reinforced Conscript helmet"
+ desc = "It glows weakly, signs of uncertainty."
+ hardsuit_type = "2-helmet"
+ if(amount == maxamount)
+ desc = "It glows violently, martyr to chaos."
+ hardsuit_type = "3-helmet"
+ icon_state = "commando[hardsuit_type]"
+ if(ishuman(loc))
+ var/mob/living/carbon/human/wearer = loc
+ if(wearer.head == src)
+ wearer.update_inv_head()
+ else
+ . = ..()
+
+/obj/item/clothing/suit/space/hardsuit/mining/upgrade_icon(datum/source, amount, maxamount)
+ switch(current_skin)
+ if("Conscript")
+ hardsuit_type = "-armor"
+ if(amount)
+ name = "reinforced Conscript suit"
+ hardsuit_type = "2-armor"
+ if(amount == maxamount)
+ hardsuit_type = "3-armor"
+ icon_state = "commando[hardsuit_type]"
+ if(ishuman(loc))
+ var/mob/living/carbon/human/wearer = loc
+ if(wearer.wear_suit == src)
+ wearer.update_inv_wear_suit()
+ else
+ . = ..()
diff --git a/modular_sand/icons/mob/clothing/head.dmi b/modular_sand/icons/mob/clothing/head.dmi
index bb0472ca29..e4e8b762c5 100644
Binary files a/modular_sand/icons/mob/clothing/head.dmi and b/modular_sand/icons/mob/clothing/head.dmi differ
diff --git a/modular_sand/icons/mob/clothing/head_muzzled.dmi b/modular_sand/icons/mob/clothing/head_muzzled.dmi
index 7cf390295c..168b605f70 100644
Binary files a/modular_sand/icons/mob/clothing/head_muzzled.dmi and b/modular_sand/icons/mob/clothing/head_muzzled.dmi differ
diff --git a/modular_sand/icons/mob/clothing/suit.dmi b/modular_sand/icons/mob/clothing/suit.dmi
index e1bd9910be..cf40ce721c 100644
Binary files a/modular_sand/icons/mob/clothing/suit.dmi and b/modular_sand/icons/mob/clothing/suit.dmi differ
diff --git a/modular_sand/icons/mob/clothing/suit_digi.dmi b/modular_sand/icons/mob/clothing/suit_digi.dmi
index 089aa776a8..70bfbe3245 100644
Binary files a/modular_sand/icons/mob/clothing/suit_digi.dmi and b/modular_sand/icons/mob/clothing/suit_digi.dmi differ
diff --git a/modular_sand/icons/obj/clothing/suits.dmi b/modular_sand/icons/obj/clothing/suits.dmi
index fb389765e8..f2b9bedc0e 100644
Binary files a/modular_sand/icons/obj/clothing/suits.dmi and b/modular_sand/icons/obj/clothing/suits.dmi differ