diff --git a/code/game/gamemodes/changeling/powers/mutations.dm b/code/game/gamemodes/changeling/powers/mutations.dm
index 9007acec900..f4d628deebd 100644
--- a/code/game/gamemodes/changeling/powers/mutations.dm
+++ b/code/game/gamemodes/changeling/powers/mutations.dm
@@ -312,6 +312,8 @@
flags_inv = HIDEJUMPSUIT
cold_protection = 0
heat_protection = 0
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/armor/changeling/New()
..()
diff --git a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
index cf1dab5d24e..8690ee8047f 100644
--- a/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
+++ b/code/game/gamemodes/miniantags/abduction/abduction_gear.dm
@@ -21,6 +21,8 @@
var/datum/icon_snapshot/disguise
var/stealth_armor = list(melee = 15, bullet = 15, laser = 15, energy = 15, bomb = 15, bio = 15, rad = 15)
var/combat_armor = list(melee = 50, bullet = 50, laser = 50, energy = 50, bomb = 50, bio = 50, rad = 50)
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/armor/abductor/vest/proc/flip_mode()
switch(mode)
diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm
index 76b233f3cc6..77de69f6767 100644
--- a/code/modules/clothing/clothing.dm
+++ b/code/modules/clothing/clothing.dm
@@ -316,14 +316,13 @@ BLIND // can't see anything
flags |= MASKCOVERSMOUTH
if(initial(flags) & AIRTIGHT) //If the mask is airtight and thus, one that you'd be able to run internals from yet can't because it was adjusted, make it airtight again.
flags |= AIRTIGHT
- if(H.head == src)
- if(flags_inv == HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
- if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
- user.unEquip(src)
- else //Otherwise, put it in an available hand, the active one preferentially.
- src.loc = user
- H.head = null
- user.put_in_hands(src)
+ if(H.head == src && flags_inv == HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
+ if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
+ user.unEquip(src)
+ else //Otherwise, put it in an available hand, the active one preferentially.
+ src.loc = user
+ H.head = null
+ user.put_in_hands(src)
else
icon_state += "_up"
to_chat(user, "You push \the [src] out of the way.")
@@ -332,13 +331,10 @@ BLIND // can't see anything
mask_adjusted = 1
if(adjusted_flags)
slot_flags = adjusted_flags
- if(ishuman(user))
- if(H.internal)
- if(user.wear_mask == src) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals.
- Otherwise, they adjusted it while it was in their hands or some such so we won't be needing to turn off internals.*/
- if(H.internals)
- H.internals.icon_state = "internal0"
- H.internal = null
+ if(ishuman(user) && H.internal && user.wear_mask == src && H.internals) /*If the user was wearing the mask providing internals on their face at the time it was adjusted, turn off internals.
+ Otherwise, they adjusted it while it was in their hands or some such so we won't be needing to turn off internals.*/
+ H.internals.icon_state = "internal0"
+ H.internal = null
if(flags_inv & HIDEFACE) //Means that only things like bandanas and balaclavas will be affected since they obscure the identity of the wearer.
flags_inv &= ~HIDEFACE /*Done after the above to avoid having to do a check for initial(src.flags_inv == HIDEFACE).
This reveals the user's face since the bandana will now be going on their head.*/
@@ -346,14 +342,13 @@ BLIND // can't see anything
flags &= ~MASKCOVERSMOUTH
if(flags & AIRTIGHT) //If the mask was airtight, it won't be anymore since you just pushed it off your face.
flags &= ~AIRTIGHT
- if(user.wear_mask == src)
- if(initial(flags_inv) == HIDEFACE) //Means that you won't have to take off and put back on simple things like breath masks which, realistically, can just be pulled down off your face.
- if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
- user.unEquip(src)
- else //Otherwise, put it in an available hand, the active one preferentially.
- src.loc = user
- user.wear_mask = null
- user.put_in_hands(src)
+ if(user.wear_mask == src && initial(flags_inv) == HIDEFACE) //Means that you won't have to take off and put back on simple things like breath masks which, realistically, can just be pulled down off your face.
+ if(H.l_hand && H.r_hand) //If both hands are occupied, drop the object on the ground.
+ user.unEquip(src)
+ else //Otherwise, put it in an available hand, the active one preferentially.
+ src.loc = user
+ user.wear_mask = null
+ user.put_in_hands(src)
usr.update_inv_wear_mask()
usr.update_inv_head()
@@ -452,6 +447,7 @@ BLIND // can't see anything
var/suit_adjusted = 0
var/ignore_suitadjust = 1
var/adjust_flavour = null
+ var/list/hide_tail_by_species = null
//Proc that opens and closes jackets.
/obj/item/clothing/suit/proc/adjustsuit(var/mob/user)
@@ -496,6 +492,15 @@ BLIND // can't see anything
else
to_chat(user, "You attempt to button up the velcro on \the [src], before promptly realising how retarded you are.")
+/obj/item/clothing/suit/equipped(var/mob/living/carbon/human/user, var/slot) //Handle tail-hiding on a by-species basis.
+ if(ishuman(user) && hide_tail_by_species && slot == slot_wear_suit)
+ if(user.species.name in hide_tail_by_species)
+ if(!(flags_inv & HIDETAIL)) //Hide the tail if the user's species is in the hide_tail_by_species list and the tail isn't already hidden.
+ flags_inv |= HIDETAIL
+ else
+ if(!(initial(flags_inv) & HIDETAIL) && (flags_inv & HIDETAIL)) //Otherwise, remove the HIDETAIL flag if it wasn't already in the flags_inv to start with.
+ flags_inv &= ~HIDETAIL
+
/obj/item/clothing/suit/verb/openjacket(var/mob/user) //The verb you can use to adjust jackets.
set name = "Open/Close Jacket"
set category = "Object"
diff --git a/code/modules/clothing/spacesuits/miscellaneous.dm b/code/modules/clothing/spacesuits/miscellaneous.dm
index 3d4fde34e6d..1c7deb94970 100644
--- a/code/modules/clothing/spacesuits/miscellaneous.dm
+++ b/code/modules/clothing/spacesuits/miscellaneous.dm
@@ -14,10 +14,13 @@
"Drask" = 'icons/mob/species/drask/helmet.dmi'
)
/obj/item/clothing/head/helmet/space/capspace/equipped(var/mob/living/carbon/human/user, var/slot)
- if (ishuman(user) && user.species.name == "Vox")
- flags &= ~BLOCKHAIR
- else
- flags |= BLOCKHAIR
+ if(ishuman(user) && slot == slot_head)
+ if(user.species.name == "Vox")
+ if(flags & BLOCKHAIR)
+ flags &= ~BLOCKHAIR
+ else
+ if((initial(flags) & BLOCKHAIR) && !(flags & BLOCKHAIR))
+ flags |= BLOCKHAIR
/obj/item/clothing/suit/space/captain
name = "captain's space suit"
diff --git a/code/modules/clothing/suits/alien.dm b/code/modules/clothing/suits/alien.dm
index 5b664f21b35..664e1dea237 100644
--- a/code/modules/clothing/suits/alien.dm
+++ b/code/modules/clothing/suits/alien.dm
@@ -1,4 +1,9 @@
//Unathi clothing.
+/obj/item/clothing/suit/unathi/
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/unathi/robe
name = "roughspun robes"
diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm
index a4606c26a65..ea811f68be6 100644
--- a/code/modules/clothing/suits/armor.dm
+++ b/code/modules/clothing/suits/armor.dm
@@ -8,6 +8,10 @@
max_heat_protection_temperature = ARMOR_MAX_TEMP_PROTECT
strip_delay = 60
put_on_delay = 40
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/armor/vest
name = "armor"
@@ -84,6 +88,8 @@
desc = "A vest drenched in the blood of Greytide. It has seen better days."
icon_state = "bloody_armor"
item_state = "bloody_armor"
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/armor/hos
name = "armored coat"
@@ -114,6 +120,8 @@
icon_state = "jensencoat"
item_state = "jensencoat"
flags_inv = 0
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/armor/vest/warden
name = "Warden's armored jacket"
@@ -150,6 +158,7 @@
flags_inv = HIDEJUMPSUIT
strip_delay = 80
put_on_delay = 60
+ hide_tail_by_species = list("Vox")
/obj/item/clothing/suit/armor/riot/knight
name = "plate armour"
@@ -230,22 +239,25 @@
return 0
/obj/item/clothing/suit/armor/reactive/attack_self(mob/user as mob)
- src.active = !( src.active )
- if (src.active)
- to_chat(user, "\blue The reactive armor is now active.")
- src.icon_state = "reactive"
- src.item_state = "reactive"
+ active = !(active)
+ if(active)
+ to_chat(user, "The reactive armor is now active.")
+ icon_state = "reactive"
+ item_state = "reactive"
else
- to_chat(user, "\blue The reactive armor is now inactive.")
- src.icon_state = "reactiveoff"
- src.item_state = "reactiveoff"
- src.add_fingerprint(user)
- return
+ to_chat(user, "The reactive armor is now inactive.")
+ icon_state = "reactiveoff"
+ item_state = "reactiveoff"
+ add_fingerprint(user)
+ user.update_inv_wear_suit()
/obj/item/clothing/suit/armor/reactive/emp_act(severity)
active = 0
- src.icon_state = "reactiveoff"
- src.item_state = "reactiveoff"
+ icon_state = "reactiveoff"
+ item_state = "reactiveoff"
+
+ var/mob/living/carbon/human/user = usr
+ user.update_inv_wear_suit()
..()
@@ -264,6 +276,8 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
cold_protection = UPPER_TORSO | LOWER_TORSO | LEGS | FEET | ARMS | HANDS
min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT
+ species_fit = null
+ sprite_sheets = null
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100)
/obj/item/clothing/suit/armor/heavy
@@ -278,6 +292,7 @@
body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
slowdown = 3
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT
+ hide_tail_by_species = list("Vox")
/obj/item/clothing/suit/armor/tdome
armor = list(melee = 80, bullet = 80, laser = 50, energy = 50, bomb = 100, bio = 100, rad = 100)
@@ -286,6 +301,7 @@
flags = THICKMATERIAL
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS
+ hide_tail_by_species = list("Vox")
/obj/item/clothing/suit/armor/tdome/red
name = "Red Thunderdome Armor"
diff --git a/code/modules/clothing/suits/bio.dm b/code/modules/clothing/suits/bio.dm
index 608eec15107..06fbf32b056 100644
--- a/code/modules/clothing/suits/bio.dm
+++ b/code/modules/clothing/suits/bio.dm
@@ -25,6 +25,11 @@
flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT|HIDETAIL
strip_delay = 70
put_on_delay = 70
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
+ hide_tail_by_species = list("Vox")
//Standard biosuit, orange stripe
/obj/item/clothing/head/bio_hood/general
@@ -83,4 +88,6 @@
icon_state = "plaguedoctor"
item_state = "bio_suit"
strip_delay = 40
- put_on_delay = 20
\ No newline at end of file
+ put_on_delay = 20
+ species_fit = null
+ sprite_sheets = null
\ No newline at end of file
diff --git a/code/modules/clothing/suits/jobs.dm b/code/modules/clothing/suits/jobs.dm
index b0e027f1a5a..1288d02cbf4 100644
--- a/code/modules/clothing/suits/jobs.dm
+++ b/code/modules/clothing/suits/jobs.dm
@@ -25,6 +25,10 @@
/obj/item/device/healthanalyzer, /obj/item/device/flashlight, \
/obj/item/device/radio, /obj/item/weapon/tank/emergency_oxygen,/obj/item/device/rad_laser)
armor = list(melee = 10, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 10, rad = 0)
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//Botonist
/obj/item/clothing/suit/apron
@@ -119,10 +123,6 @@
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list(/obj/item/weapon/kitchen/knife)
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
//Detective
/obj/item/clothing/suit/storage/det_suit
@@ -174,6 +174,10 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
heat_protection = UPPER_TORSO|LOWER_TORSO|LEGS|ARMS
flags_size = ONESIZEFITSALL
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//Engineering
/obj/item/clothing/suit/storage/hazardvest
@@ -189,6 +193,12 @@
)
//Lawyer
+/obj/item/clothing/suit/storage/lawyer
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
+
/obj/item/clothing/suit/storage/lawyer/blackjacket
name = "black suit jacket"
desc = "A snappy dress jacket."
@@ -233,6 +243,10 @@
suit_adjusted = 1
action_button_name = "Button/Unbutton Jacket"
adjust_flavour = "unbutton"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/storage/ntrep
name = "\improper NanoTrasen Representative jacket"
@@ -244,6 +258,10 @@
ignore_suitadjust = 0
action_button_name = "Button/Unbutton Jacket"
adjust_flavour = "unbutton"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//Medical
/obj/item/clothing/suit/storage/fr_jacket
@@ -258,6 +276,10 @@
suit_adjusted = 1
action_button_name = "Button/Unbutton Jacket"
adjust_flavour = "unbutton"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//Mime
/obj/item/clothing/suit/suspenders
@@ -266,3 +288,7 @@
icon = 'icons/obj/clothing/belts.dmi'
icon_state = "suspenders"
blood_overlay_type = "armor" //it's the less thing that I can put here
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
diff --git a/code/modules/clothing/suits/labcoat.dm b/code/modules/clothing/suits/labcoat.dm
index 96065432f3d..6926105541d 100644
--- a/code/modules/clothing/suits/labcoat.dm
+++ b/code/modules/clothing/suits/labcoat.dm
@@ -21,66 +21,38 @@
desc = "Bluer than the standard model."
icon_state = "labcoat_cmo_open"
item_state = "labcoat_cmo_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/mad
name = "mad scientist's labcoat"
desc = "It makes you look capable of konking someone on the noggin and shooting them into space."
icon_state = "labcoat_green_open"
item_state = "labcoat_green_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/genetics
name = "geneticist labcoat"
desc = "A suit that protects against minor chemical spills. Has a blue stripe on the shoulder."
icon_state = "labcoat_gen_open"
item_state = "labcoat_gen_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/chemist
name = "chemist labcoat"
desc = "A suit that protects against minor chemical spills. Has an orange stripe on the shoulder."
icon_state = "labcoat_chem_open"
item_state = "labcoat_chem_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/virologist
name = "virologist labcoat"
desc = "A suit that protects against minor chemical spills. Offers slightly more protection against biohazards than the standard model. Has a green stripe on the shoulder."
icon_state = "labcoat_vir_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/science
name = "scientist labcoat"
desc = "A suit that protects against minor chemical spills. Has a purple stripe on the shoulder."
icon_state = "labcoat_tox_open"
item_state = "labcoat_tox_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
/obj/item/clothing/suit/storage/labcoat/mortician
name = "coroner labcoat"
desc = "A suit that protects against minor chemical spills. Has a black stripe on the shoulder."
icon_state = "labcoat_mort_open"
item_state = "labcoat_mort_open"
- species_fit = list("Vox")
- sprite_sheets = list(
- "Vox" = 'icons/mob/species/vox/suit.dmi'
- )
diff --git a/code/modules/clothing/suits/miscellaneous.dm b/code/modules/clothing/suits/miscellaneous.dm
index c0319294889..a88fdd6f970 100644
--- a/code/modules/clothing/suits/miscellaneous.dm
+++ b/code/modules/clothing/suits/miscellaneous.dm
@@ -16,6 +16,10 @@
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/bluetag)
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/redtag
name = "red laser tag armour"
@@ -25,6 +29,10 @@
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
allowed = list (/obj/item/weapon/gun/energy/laser/redtag)
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/*
* Costume
@@ -34,13 +42,20 @@
desc = "Yarr."
icon_state = "pirate_old"
item_state = "pirate_old"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/pirate_black
name = "black pirate coat"
desc = "Yarr."
icon_state = "pirate"
item_state = "pirate"
-
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/hgpirate
name = "pirate captain coat"
@@ -99,7 +114,10 @@
item_state = "wcoat"
blood_overlay_type = "armor"
body_parts_covered = UPPER_TORSO|LOWER_TORSO
-
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/apron/overalls
name = "coveralls"
@@ -233,6 +251,10 @@
desc = "Your classic, non-racist poncho."
icon_state = "classicponcho"
item_state = "classicponcho"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/poncho/green
name = "green poncho"
@@ -280,6 +302,10 @@
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"
item_state = "ianshirt"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//pyjamas
//originally intended to be pinstripes >.>
@@ -323,12 +349,20 @@
desc = "It makes you stand out. Just the opposite of why it's typically worn. Nice try trying to blend in while wearing it."
icon_state = "brtrenchcoat"
item_state = "brtrenchcoat"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/blacktrenchcoat
name = "black trench coat"
desc = "That shade of black just makes you look a bit more evil. Good for those mafia types."
icon_state = "bltrenchcoat"
item_state = "bltrenchcoat"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
//actual suits
@@ -473,6 +507,10 @@
cold_protection = UPPER_TORSO|LOWER_TORSO|ARMS
action_button_name = "Zip/Unzip Jacket"
adjust_flavour = "unzip"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/jacket/pilot
name = "security bomber jacket"
@@ -504,12 +542,26 @@
desc = "A classy clown officer's overcoat, also designed by Hugo Boss."
icon_state = "officersuit"
item_state = "officersuit"
+ ignore_suitadjust = 0
+ action_button_name = "Button/Unbutton Jacket"
+ adjust_flavour = "unbutton"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/soldiercoat
name = "Clown Soldier's Coat"
desc = "An overcoat for the clown soldier, to keep him warm during those cold winter nights on the front."
icon_state = "soldiersuit"
item_state = "soldiersuit"
+ ignore_suitadjust = 0
+ action_button_name = "Button/Unbutton Jacket"
+ adjust_flavour = "unbutton"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/toggle/owlwings
name = "owl cloak"
diff --git a/code/modules/clothing/suits/utility.dm b/code/modules/clothing/suits/utility.dm
index 1ddca764fd2..2178821e3fa 100644
--- a/code/modules/clothing/suits/utility.dm
+++ b/code/modules/clothing/suits/utility.dm
@@ -32,7 +32,10 @@
/obj/item/clothing/suit/fire/firefighter
icon_state = "firesuit"
item_state = "firefighter"
-
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/suit/fire/heavy
name = "firesuit"
@@ -48,6 +51,10 @@
icon_state = "atmos_firesuit"
item_state = "firesuit_atmos"
max_heat_protection_temperature = FIRE_IMMUNITY_SUIT_MAX_TEMP_PROTECT
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/*
* Bomb protection
@@ -85,6 +92,11 @@
min_cold_protection_temperature = ARMOR_MIN_TEMP_PROTECT
strip_delay = 70
put_on_delay = 70
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
+ hide_tail_by_species = list("Vox")
/obj/item/clothing/head/bomb_hood/security
icon_state = "bombsuitsec"
diff --git a/code/modules/clothing/under/accessories/accessory.dm b/code/modules/clothing/under/accessories/accessory.dm
index 21fbbec640d..9cf067d6ab2 100644
--- a/code/modules/clothing/under/accessories/accessory.dm
+++ b/code/modules/clothing/under/accessories/accessory.dm
@@ -90,6 +90,10 @@
icon_state = "waistcoat"
item_state = "waistcoat"
item_color = "waistcoat"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/accessory/stethoscope
name = "stethoscope"
diff --git a/code/modules/clothing/under/accessories/storage.dm b/code/modules/clothing/under/accessories/storage.dm
index 4c5997d3330..705c498b88f 100644
--- a/code/modules/clothing/under/accessories/storage.dm
+++ b/code/modules/clothing/under/accessories/storage.dm
@@ -74,6 +74,10 @@
desc = "Sturdy mess of synthcotton belts and buckles, ready to share your burden."
icon_state = "webbing"
item_color = "webbing"
+ species_fit = list("Vox")
+ sprite_sheets = list(
+ "Vox" = 'icons/mob/species/vox/suit.dmi'
+ )
/obj/item/clothing/accessory/storage/black_vest
name = "black webbing vest"
diff --git a/code/modules/customitems/item_defines.dm b/code/modules/customitems/item_defines.dm
index daec35505a6..fd4864b7900 100644
--- a/code/modules/customitems/item_defines.dm
+++ b/code/modules/customitems/item_defines.dm
@@ -212,6 +212,8 @@
desc = "A labcoat with a few markings denoting it as the labcoat of roboticist."
icon = 'icons/obj/custom_items.dmi'
icon_state = "aeneasrinil_open"
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/jacket/fluff/kidosvest // Anxipal: Kido Qasteth
name = "Kido's Vest"
@@ -222,6 +224,8 @@
ignore_suitadjust = 1
action_button_name = null
adjust_flavour = null
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/fluff/kluys // Kluys: Cripty Pandaen
name = "Nano Fibre Jacket"
@@ -259,6 +263,8 @@
desc = "A suit that protects against minor chemical spills. Has a red stripe on the shoulders and rolled up sleeves."
icon = 'icons/obj/custom_items.dmi'
icon_state = "labcoat_red_open"
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/suit/fluff/stobarico_greatcoat // Stobarico: F.U.R.R.Y
name = "\improper F.U.R.R.Y's Nanotrasen Greatcoat"
@@ -333,6 +339,8 @@
ignore_suitadjust = 1
action_button_name = null
adjust_flavour = null
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/under/fluff/fox
name = "Aeronautics Jumpsuit"
@@ -440,6 +448,8 @@
icon = 'icons/obj/clothing/ties.dmi'
icon_state = "vest_black"
item_state = "vest_black"
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/under/pants/fluff/combat
name = "combat pants"
@@ -455,6 +465,8 @@
item_state = "elliot_windbreaker_open"
adjust_flavour = "unzip"
suit_adjusted = 1
+ species_fit = null
+ sprite_sheets = null
/obj/item/device/fluff/tattoo_gun/elliot_cybernetic_tat
desc = "A cheap plastic tattoo application pen.
This one seems heavily used."
diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm
index 46bd2e284eb..b1c53a86e7c 100644
--- a/code/modules/mob/living/carbon/human/update_icons.dm
+++ b/code/modules/mob/living/carbon/human/update_icons.dm
@@ -623,7 +623,12 @@ var/global/list/damage_icon_parts = list()
for(var/obj/item/clothing/accessory/A in w_uniform:accessories)
var/tie_color = A.item_color
if(!tie_color) tie_color = A.icon_state
- standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
+ if(A.icon_override)
+ standing.overlays += image("icon" = A.icon_override, "icon_state" = "[A.icon_state]")
+ else if(A.sprite_sheets && A.sprite_sheets[species.name])
+ standing.overlays += image("icon" = A.sprite_sheets[species.name], "icon_state" = "[A.icon_state]")
+ else
+ standing.overlays += image("icon" = 'icons/mob/ties.dmi', "icon_state" = "[tie_color]")
overlays_standing[UNIFORM_LAYER] = standing
else
@@ -889,7 +894,6 @@ var/global/list/damage_icon_parts = list()
/mob/living/carbon/human/update_inv_wear_suit(var/update_icons=1)
-
if(client && hud_used)
var/obj/screen/inventory/inv = hud_used.inv_slots[slot_wear_suit]
if(inv)
@@ -1257,13 +1261,25 @@ var/global/list/damage_icon_parts = list()
//Adds a collar overlay above the helmet layer if the suit has one
// Suit needs an identically named sprite in icons/mob/collar.dmi
+// For suits with species_fit and sprite_sheets, an identically named sprite needs to exist in a file like this icons/mob/species/[species_name_here]/collar.dmi.
/mob/living/carbon/human/proc/update_collar(var/update_icons=1)
var/icon/C = new('icons/mob/collar.dmi')
var/image/standing = null
if(wear_suit)
- if(wear_suit.icon_state in C.IconStates())
- standing = image("icon" = C, "icon_state" = "[wear_suit.icon_state]")
+ if(wear_suit.icon_override)
+ var/icon_path = "[wear_suit.icon_override]"
+ icon_path = "[copytext(icon_path, 1, findtext(icon_path, "/suit.dmi"))]/collar.dmi" //If this file doesn't exist, the end result is that COLLAR_LAYER will be unchanged (empty) so there won't be an issue.
+ var/icon/icon_file = new(icon_path)
+ standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]")
+ else if(wear_suit.sprite_sheets && wear_suit.sprite_sheets[species.name])
+ var/icon_path = "[wear_suit.sprite_sheets[species.name]]"
+ icon_path = "[copytext(icon_path, 1, findtext(icon_path, "/suit.dmi"))]/collar.dmi" //If this file doesn't exist, the end result is that COLLAR_LAYER will be unchanged (empty) so there won't be an issue.
+ var/icon/icon_file = new(icon_path)
+ standing = image("icon" = icon_file, "icon_state" = "[wear_suit.icon_state]")
+ else
+ if(wear_suit.icon_state in C.IconStates())
+ standing = image("icon" = C, "icon_state" = "[wear_suit.icon_state]")
overlays_standing[COLLAR_LAYER] = standing
diff --git a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm
index 9658f2b9326..9e9de74e73e 100644
--- a/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm
+++ b/code/modules/research/xenoarchaeology/tools/anomaly_suit.dm
@@ -6,6 +6,8 @@
icon_state = "engspace_suit"
item_state = "engspace_suit"
armor = list(melee = 0, bullet = 0, laser = 0, energy = 0, bomb = 0, bio = 100, rad = 100)
+ species_fit = null
+ sprite_sheets = null
/obj/item/clothing/head/bio_hood/anomaly
name = "Anomaly hood"
diff --git a/icons/mob/species/vox/collar.dmi b/icons/mob/species/vox/collar.dmi
new file mode 100644
index 00000000000..c0b8c6ba936
Binary files /dev/null and b/icons/mob/species/vox/collar.dmi differ
diff --git a/icons/mob/species/vox/eyes.dmi b/icons/mob/species/vox/eyes.dmi
index f761fb361a7..d2ca8399639 100644
Binary files a/icons/mob/species/vox/eyes.dmi and b/icons/mob/species/vox/eyes.dmi differ
diff --git a/icons/mob/species/vox/mask.dmi b/icons/mob/species/vox/mask.dmi
index cd9c224051b..dcf01b87eb5 100644
Binary files a/icons/mob/species/vox/mask.dmi and b/icons/mob/species/vox/mask.dmi differ
diff --git a/icons/mob/species/vox/suit.dmi b/icons/mob/species/vox/suit.dmi
index 895de207c1e..b8340ac1c9c 100644
Binary files a/icons/mob/species/vox/suit.dmi and b/icons/mob/species/vox/suit.dmi differ
diff --git a/icons/obj/clothing/suits.dmi b/icons/obj/clothing/suits.dmi
index 7893396874b..378de746198 100644
Binary files a/icons/obj/clothing/suits.dmi and b/icons/obj/clothing/suits.dmi differ