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