diff --git a/code/__DEFINES/inventory.dm b/code/__DEFINES/inventory.dm index 8cd775c06f77..64aa6aa52627 100644 --- a/code/__DEFINES/inventory.dm +++ b/code/__DEFINES/inventory.dm @@ -174,5 +174,4 @@ GLOBAL_LIST_INIT(security_wintercoat_allowed, typecacheof(list( /obj/item/tank/internals/plasmaman, /obj/item/toy))) -//WS Port - Internals checker #define GET_INTERNAL_SLOTS(C) list(C.head, C.wear_mask) diff --git a/code/__DEFINES/species_clothing_defines.dm b/code/__DEFINES/species_clothing_defines.dm index c74a20877348..517579192634 100644 --- a/code/__DEFINES/species_clothing_defines.dm +++ b/code/__DEFINES/species_clothing_defines.dm @@ -31,12 +31,12 @@ #define KEPORI_UNIFORM_PATH 'icons/mob/species/kepori/onmob_uniform_kepori.dmi' #define KEPORI_SHOES_PATH 'icons/mob/species/kepori/onmob_feet_kepori.dmi' #define KEPORI_SUIT_PATH 'icons/mob/species/kepori/onmob_suit_kepori.dmi' -//#define KEPORI_EARS_PATH 'icons/mob/species/kepori/onmob_ears_kepori.dmi' +#define KEPORI_EARS_PATH 'icons/mob/species/kepori/onmob_ears_kepori.dmi' #define KEPORI_MASK_PATH 'icons/mob/species/kepori/onmob_mask_kepori.dmi' #define KEPORI_HEAD_PATH 'icons/mob/species/kepori/onmob_head_kepori.dmi' +#define KEPORI_GLASSES_PATH 'icons/mob/species/kepori/onmob_eyes_kepori.dmi' #define KEPORI_GLOVES_PATH 'icons/mob/species/kepori/onmob_hands_kepori.dmi' -//#define KEPORI_BELT_PATH 'icons/mob/species/kepori/onmob_belt_kepori.dmi' -//#define KEPORI_GLASSES_PATH 'icons/mob/species/kepori/onmob_eyes_kepori.dmi' -#define KEPORI_UNDERWEAR_TORSO_PATH 'icons/mob/clothing/underwear/species/underwear_torso_kepori.dmi' -#define KEPORI_UNDERWEAR_LEGS_PATH 'icons/mob/clothing/underwear/species/underwear_legs_kepori.dmi' -#define KEPORI_UNDERWEAR_SOCKS_PATH 'icons/mob/clothing/underwear/species/underwear_socks_kepori.dmi' +#define KEPORI_BELT_PATH 'icons/mob/species/kepori/onmob_belt_kepori.dmi' +#define KEPORI_UNDERWEAR_TORSO_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi' +#define KEPORI_UNDERWEAR_LEGS_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi' +#define KEPORI_UNDERWEAR_SOCKS_PATH 'icons/mob/clothing/underwear/species/kepori/underwear_socks_kepori.dmi' diff --git a/code/__HELPERS/global_lists.dm b/code/__HELPERS/global_lists.dm index e44755574eea..5eb2686b2118 100644 --- a/code/__HELPERS/global_lists.dm +++ b/code/__HELPERS/global_lists.dm @@ -42,6 +42,7 @@ init_sprite_accessory_subtypes(/datum/sprite_accessory/spider_spinneret, GLOB.spider_spinneret_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_feathers, GLOB.kepori_feathers_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_body_feathers, GLOB.kepori_body_feathers_list) + init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_head_feathers, GLOB.kepori_head_feathers_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/kepori_tail_feathers, GLOB.kepori_tail_feathers_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_head_quills, GLOB.vox_head_quills_list) init_sprite_accessory_subtypes(/datum/sprite_accessory/vox_neck_quills, GLOB.vox_neck_quills_list) diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index 63990e61ee33..6a3028443dcc 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -108,6 +108,7 @@ "ipc_chassis" = pick(GLOB.ipc_chassis_list), "ipc_screen" = pick(GLOB.ipc_screens_list), "kepori_body_feathers" = pick(GLOB.kepori_body_feathers_list), + "kepori_head_feathers" = pick(GLOB.kepori_head_feathers_list), "kepori_feathers" = pick(GLOB.kepori_feathers_list), "kepori_tail_feathers" = pick(GLOB.kepori_tail_feathers_list), "legs" = "Normal Legs", diff --git a/code/_globalvars/lists/flavor_misc.dm b/code/_globalvars/lists/flavor_misc.dm index f4f000be6d57..f9edbc500142 100644 --- a/code/_globalvars/lists/flavor_misc.dm +++ b/code/_globalvars/lists/flavor_misc.dm @@ -46,6 +46,7 @@ GLOBAL_LIST_EMPTY(spider_legs_list) GLOBAL_LIST_EMPTY(spider_spinneret_list) GLOBAL_LIST_EMPTY(kepori_feathers_list) GLOBAL_LIST_EMPTY(kepori_body_feathers_list) +GLOBAL_LIST_EMPTY(kepori_head_feathers_list) GLOBAL_LIST_EMPTY(kepori_tail_feathers_list) GLOBAL_LIST_EMPTY(vox_head_quills_list) GLOBAL_LIST_EMPTY(vox_neck_quills_list) diff --git a/code/game/objects/items/storage/backpack.dm b/code/game/objects/items/storage/backpack.dm index f8bb97d3a411..5d87b42b78e5 100644 --- a/code/game/objects/items/storage/backpack.dm +++ b/code/game/objects/items/storage/backpack.dm @@ -226,7 +226,7 @@ /obj/item/storage/backpack/satchel/leather name = "leather satchel" desc = "It's a very fancy satchel made with fine leather." - icon = 'icons/obj/storage.dmi' //WS Edit - Suitcases + icon = 'icons/obj/storage.dmi' icon_state = "satchel" item_state = "satchel" diff --git a/code/modules/admin/create_mob.dm b/code/modules/admin/create_mob.dm index 7d5dfccf2804..3b8c5191c9b6 100644 --- a/code/modules/admin/create_mob.dm +++ b/code/modules/admin/create_mob.dm @@ -42,6 +42,7 @@ H.dna.features["squid_face"] = pick(GLOB.squid_face_list) H.dna.features["kepori_feathers"] = pick(GLOB.kepori_feathers_list) H.dna.features["kepori_body_feathers"] = pick(GLOB.kepori_body_feathers_list) + H.dna.features["kepori_head_feathers"] = pick(GLOB.kepori_head_feathers_list) H.dna.features["vox_head_quills"] = pick(GLOB.vox_head_quills_list) H.dna.features["vox_neck_quills"] = pick(GLOB.vox_neck_quills_list) H.dna.features["elzu_horns"] = pick(GLOB.elzu_horns_list) diff --git a/code/modules/client/preferences.dm b/code/modules/client/preferences.dm index 662a549ca631..b9a4fb8f0ca3 100644 --- a/code/modules/client/preferences.dm +++ b/code/modules/client/preferences.dm @@ -114,9 +114,10 @@ GLOBAL_LIST_EMPTY(preferences_datums) "ipc_tail" = "None", "ipc_chassis" = "Morpheus Cyberkinetics (Custom)", "ipc_brain" = "Posibrain", - "kepori_feathers" = "Plain", - "kepori_body_feathers" = "Plain", - "kepori_tail_feathers" = "Fan", + "kepori_feathers" = "None", + "kepori_body_feathers" = "None", + "kepori_head_feathers" = "None", + "kepori_tail_feathers" = "None", "vox_head_quills" = "Plain", "vox_neck_quills" = "Plain", "elzu_horns" = "None", @@ -244,7 +245,7 @@ GLOBAL_LIST_EMPTY(preferences_datums) return #define APPEARANCE_CATEGORY_COLUMN "" -#define MAX_MUTANT_ROWS 4 +#define MAX_MUTANT_ROWS 5 /datum/preferences/proc/ShowChoices(mob/user) show_loadout = (current_tab != 1) ? show_loadout : FALSE @@ -728,6 +729,19 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "" mutant_category = 0 + if("kepori_head_feathers" in pref_species.default_features) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN + + dat += "

Head Feathers

" + dat += "[features["kepori_head_feathers"]]
" + dat += "    Change
" + + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + if("kepori_body_feathers" in pref_species.default_features) if(!mutant_category) dat += APPEARANCE_CATEGORY_COLUMN @@ -836,10 +850,17 @@ GLOBAL_LIST_EMPTY(preferences_datums) //Adds a thing to select which phobia because I can't be assed to put that in the quirks window if("Phobia" in all_quirks) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN dat += "

Phobia

" dat += "[phobia]
" + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + if("Smoker" in all_quirks) dat += "

Smoker

" @@ -853,6 +874,14 @@ GLOBAL_LIST_EMPTY(preferences_datums) dat += "[features["body_size"]]
" + mutant_category++ + if(mutant_category >= MAX_MUTANT_ROWS) + dat += "" + mutant_category = 0 + + if(generic_adjective) + if(!mutant_category) + dat += APPEARANCE_CATEGORY_COLUMN dat += "

Character Adjective

" @@ -1970,6 +1999,12 @@ GLOBAL_LIST_EMPTY(preferences_datums) if (new_kepori_feathers) features["kepori_feathers"] = new_kepori_feathers + if("kepori_head_feathers") + var/new_kepori_feathers + new_kepori_feathers = input(user, "Choose your character's head feathers:", "Character Preference") as null|anything in GLOB.kepori_head_feathers_list + if (new_kepori_feathers) + features["kepori_head_feathers"] = new_kepori_feathers + if("kepori_body_feathers") var/new_kepori_feathers new_kepori_feathers = input(user, "Choose your character's body feathers:", "Character Preference") as null|anything in GLOB.kepori_body_feathers_list diff --git a/code/modules/client/preferences_savefile.dm b/code/modules/client/preferences_savefile.dm index b53d761c41da..3c3040f03906 100644 --- a/code/modules/client/preferences_savefile.dm +++ b/code/modules/client/preferences_savefile.dm @@ -438,6 +438,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car READ_FILE(S["feature_ipc_brain"], features["ipc_brain"]) READ_FILE(S["feature_kepori_feathers"], features["kepori_feathers"]) READ_FILE(S["feature_kepori_body_feathers"], features["kepori_body_feathers"]) + READ_FILE(S["feature_kepori_head_feathers"], features["kepori_head_feathers"]) READ_FILE(S["feature_kepori_tail_feathers"], features["kepori_tail_feathers"]) READ_FILE(S["feature_vox_head_quills"], features["vox_head_quills"]) READ_FILE(S["feature_vox_neck_quills"], features["vox_neck_quills"]) @@ -548,8 +549,9 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car features["ipc_chassis"] = sanitize_inlist(features["ipc_chassis"], GLOB.ipc_chassis_list) features["ipc_brain"] = sanitize_inlist(features["ipc_brain"], GLOB.ipc_brain_list) features["kepori_feathers"] = sanitize_inlist(features["kepori_feathers"], GLOB.kepori_feathers_list, "Plain") - features["kepori_body_feathers"] = sanitize_inlist(features["kepori_body_feathers"], GLOB.kepori_body_feathers_list, "Plain") - features["kepori_tail_feathers"] = sanitize_inlist(features["kepori_tail_feathers"], GLOB.kepori_tail_feathers_list, "Fan") + features["kepori_body_feathers"] = sanitize_inlist(features["kepori_body_feathers"], GLOB.kepori_body_feathers_list, "None") + features["kepori_head_feathers"] = sanitize_inlist(features["kepori_head_feathers"], GLOB.kepori_head_feathers_list, "None") + features["kepori_tail_feathers"] = sanitize_inlist(features["kepori_tail_feathers"], GLOB.kepori_tail_feathers_list, "None") features["vox_head_quills"] = sanitize_inlist(features["vox_head_quills"], GLOB.vox_head_quills_list, "None") features["vox_neck_quills"] = sanitize_inlist(features["vox_neck_quills"], GLOB.vox_neck_quills_list, "None") features["elzu_horns"] = sanitize_inlist(features["elzu_horns"], GLOB.elzu_horns_list) @@ -629,6 +631,7 @@ SAVEFILE UPDATING/VERSIONING - 'Simplified', or rather, more coder-friendly ~Car WRITE_FILE(S["feature_ipc_brain"] , features["ipc_brain"]) WRITE_FILE(S["feature_kepori_feathers"] , features["kepori_feathers"]) WRITE_FILE(S["feature_kepori_body_feathers"], features["kepori_body_feathers"]) + WRITE_FILE(S["feature_kepori_head_feathers"], features["feature_kepori_head_feathers"]) WRITE_FILE(S["feature_kepori_tail_feathers"], features["kepori_tail_feathers"]) WRITE_FILE(S["feature_vox_head_quills"] , features["vox_head_quills"]) WRITE_FILE(S["feature_vox_neck_quills"] , features["vox_neck_quills"]) diff --git a/code/modules/clothing/clothing.dm b/code/modules/clothing/clothing.dm index b1e1cc1f2105..166f437dc3af 100644 --- a/code/modules/clothing/clothing.dm +++ b/code/modules/clothing/clothing.dm @@ -286,7 +286,7 @@ if("[layer]" in mob_species.offset_clothing) // This code taken from Baystation 12 - var/icon/final_I = icon('icons/blanks/32x32.dmi', "nothing") + var/icon/final_I = icon('icons/blanks/64x64.dmi', "nothing") var/list/shifts = mob_species.offset_clothing["[layer]"] // Apply all pixel shifts for each direction. @@ -294,9 +294,10 @@ var/list/facing_list = shifts[shift_facing] var/use_dir = text2num(shift_facing) var/icon/equip = icon(file2use, icon_state = state2use, dir = use_dir) - var/icon/canvas = icon('icons/blanks/32x32.dmi', "nothing") + var/icon/canvas = icon('icons/blanks/64x64.dmi', "nothing") canvas.Blend(equip, ICON_OVERLAY, facing_list["x"]+1, facing_list["y"]+1) final_I.Insert(canvas, dir = use_dir) + final_I = fcopy_rsc(final_I) GLOB.species_clothing_icons[mob_species.id]["[file2use]-[state2use]"] = final_I return TRUE diff --git a/code/modules/clothing/glasses/hud.dm b/code/modules/clothing/glasses/hud.dm index 385baa647432..0698981207bf 100644 --- a/code/modules/clothing/glasses/hud.dm +++ b/code/modules/clothing/glasses/hud.dm @@ -248,7 +248,6 @@ tint = 1 glass_colour_type = /datum/client_colour/glass_colour/gray - /obj/item/clothing/glasses/hud/spacecop/hidden // for the undercover cop name = "sunglasses" desc = "These sunglasses are special, and let you view potential criminals." @@ -274,4 +273,3 @@ desc = "A heads-up display that scans the humanoids in view and provides accurate data about their ID status and security records. This pair also corrects nearsightedness." icon_state = "prescriptionsecurityhud" vision_correction = 1 - diff --git a/code/modules/clothing/gloves/color.dm b/code/modules/clothing/gloves/color.dm index 06bd05a45795..cbac3e0e8901 100644 --- a/code/modules/clothing/gloves/color.dm +++ b/code/modules/clothing/gloves/color.dm @@ -220,7 +220,7 @@ icon_state = "nitrile" transfer_prints = FALSE carrytrait = TRAIT_QUICKER_CARRY - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/gloves/color/latex/nitrile/evil name = "red nitrile gloves" @@ -240,10 +240,8 @@ desc = "Overdesigned engineering gloves that have automated construction subrutines dialed in, allowing for faster construction while worn." icon = 'icons/obj/clothing/clockwork_garb.dmi' icon_state = "clockwork_gauntlets" - siemens_coefficient = 0 //WS Station eddit "Tinkers Gloves Insuls" - permeability_coefficient = 0.05 //WS Station eddit "Tinkers Gloves Insuls" - //siemens_coefficient = 0.8 WS Station eddit "Tinkers Gloves Insuls" - //permeability_coefficient = 0.3 WS Station eddit "Tinkers Gloves Insuls" + siemens_coefficient = 0 + permeability_coefficient = 0.05 carrytrait = TRAIT_QUICK_BUILD custom_materials = list(/datum/material/iron=2000, /datum/material/silver=1500, /datum/material/gold = 1000) @@ -276,7 +274,8 @@ /obj/item/clothing/gloves/color/light_brown = 1, /obj/item/clothing/gloves/color/brown = 1, /obj/item/clothing/gloves/color/white = 1, - /obj/item/clothing/gloves/color/rainbow = 1) + /obj/item/clothing/gloves/color/rainbow = 1, + ) /obj/item/clothing/gloves/maid name = "maid arm covers" diff --git a/code/modules/clothing/gloves/miscellaneous.dm b/code/modules/clothing/gloves/miscellaneous.dm index 314af8aaf44a..9d8db3c035d8 100644 --- a/code/modules/clothing/gloves/miscellaneous.dm +++ b/code/modules/clothing/gloves/miscellaneous.dm @@ -38,7 +38,7 @@ max_heat_protection_temperature = GLOVES_MAX_TEMP_PROTECT resistance_flags = NONE armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 50) - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/gloves/combat/maid name = "combat maid sleeves" diff --git a/code/modules/clothing/head/helmet.dm b/code/modules/clothing/head/helmet.dm index dee6b0d0c9ee..6648f6341196 100644 --- a/code/modules/clothing/head/helmet.dm +++ b/code/modules/clothing/head/helmet.dm @@ -500,6 +500,7 @@ icon_state = "inteq_swat" item_state = "inteq_swat" flags_inv = HIDEHAIR + supports_variations = KEPORI_VARIATION content_overlays = TRUE /obj/item/clothing/head/helmet/inteq @@ -508,6 +509,7 @@ icon_state = "inteq_helmet" icon_state = "inteq_helmet" can_flashlight = TRUE + supports_variations = KEPORI_VARIATION content_overlays = TRUE /obj/item/clothing/head/solgov diff --git a/code/modules/clothing/spacesuits/_spacesuits.dm b/code/modules/clothing/spacesuits/_spacesuits.dm index bd1817e1bf45..cb98f607089c 100644 --- a/code/modules/clothing/spacesuits/_spacesuits.dm +++ b/code/modules/clothing/spacesuits/_spacesuits.dm @@ -40,7 +40,7 @@ slowdown = 1 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 100, "rad" = 50, "fire" = 80, "acid" = 70) flags_inv = HIDEGLOVES|HIDESHOES|HIDEJUMPSUIT - cold_protection = CHEST | GROIN | LEGS | FEET | ARMS | HANDS + cold_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS min_cold_protection_temperature = SPACE_SUIT_MIN_TEMP_PROTECT heat_protection = CHEST|GROIN|LEGS|FEET|ARMS|HANDS max_heat_protection_temperature = SPACE_SUIT_MAX_TEMP_PROTECT diff --git a/code/modules/clothing/suits/armor.dm b/code/modules/clothing/suits/armor.dm index 889bcc0420f2..47ce052d5bec 100644 --- a/code/modules/clothing/suits/armor.dm +++ b/code/modules/clothing/suits/armor.dm @@ -34,7 +34,7 @@ desc = "A Type I armored vest that provides decent protection against most types of damage." icon_state = "armor_alt" item_state = "armoralt" - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/suit/armor/vest/marine name = "light tactical armor vest" @@ -326,7 +326,7 @@ desc = "A luxurious brown coat made from a crossweave of kevlar and ballistic fibre, the collar and wrist trims are made from genuine wolf fur. as protective as it is stylish." icon_state = "armor_inteq_battlecoat" item_state = "inteq_battlecoat" - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION /obj/item/clothing/suit/armor/hos/inteq/honorable //Basically CC higherup clothing for inteq name = "honorable vanguard battlecoat" @@ -334,7 +334,7 @@ icon_state = "armor_inteq_honorable_battlecoat" item_state = "inteq_honorable_battlecoat" armor = list("melee" = 40, "bullet" = 50, "laser" = 50, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 70, "acid" = 90) - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON /obj/item/clothing/suit/armor/inteq/corpsman name = "inteq corpsman vest" diff --git a/code/modules/clothing/suits/wintercoats.dm b/code/modules/clothing/suits/wintercoats.dm index 588a8f1600de..9b141148e5a2 100644 --- a/code/modules/clothing/suits/wintercoats.dm +++ b/code/modules/clothing/suits/wintercoats.dm @@ -1,5 +1,7 @@ // WINTER COATS +//Someone please make the allowed lists globals or something + /obj/item/clothing/suit/hooded/wintercoat name = "winter coat" desc = "A heavy jacket made from 'synthetic' animal furs." @@ -10,14 +12,14 @@ body_parts_covered = CHEST|GROIN|ARMS cold_protection = CHEST|GROIN|ARMS min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) - allowed = list( /obj/item/flashlight, - /obj/item/tank/internals/emergency_oxygen, - /obj/item/tank/internals/plasmaman, - /obj/item/toy, - /obj/item/storage/fancy/cigarettes, - /obj/item/lighter, - ) + allowed = list( + /obj/item/flashlight, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + /obj/item/toy, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + ) /obj/item/clothing/head/hooded/winterhood name = "winter hood" @@ -29,13 +31,11 @@ cold_protection = HEAD min_cold_protection_temperature = FIRE_SUIT_MIN_TEMP_PROTECT flags_inv = HIDEHAIR|HIDEEARS - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/suit/hooded/wintercoat/captain name = "captain's winter coat" icon_state = "coatcaptain" item_state = "coatcaptain" - armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) hoodtype = /obj/item/clothing/head/hooded/winterhood/captain /obj/item/clothing/suit/hooded/wintercoat/captain/Initialize() @@ -44,13 +44,11 @@ /obj/item/clothing/head/hooded/winterhood/captain icon_state = "hood_captain" - armor = list("melee" = 25, "bullet" = 30, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 50) /obj/item/clothing/suit/hooded/wintercoat/security name = "security winter coat" icon_state = "coatsecurity" item_state = "coatsecurity" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/security /obj/item/clothing/suit/hooded/wintercoat/security/Initialize() @@ -59,19 +57,37 @@ /obj/item/clothing/head/hooded/winterhood/security icon_state = "hood_security" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) /obj/item/clothing/suit/hooded/wintercoat/medical name = "medical winter coat" icon_state = "coatmedical" item_state = "coatmedical" - allowed = list(/obj/item/analyzer, /obj/item/sensor_device, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/medical + allowed = list( + /obj/item/analyzer, + /obj/item/sensor_device, + /obj/item/stack/medical, + /obj/item/dnainjector, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/syringe, + /obj/item/reagent_containers/hypospray, + /obj/item/healthanalyzer, + /obj/item/flashlight/pen, + /obj/item/reagent_containers/glass/bottle, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/pill, + /obj/item/storage/pill_bottle, + /obj/item/paper, + /obj/item/melee/classic_baton/telescopic, + /obj/item/toy, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + ) /obj/item/clothing/head/hooded/winterhood/medical icon_state = "hood_medical" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 50, "rad" = 0, "fire" = 0, "acid" = 45) /obj/item/clothing/suit/hooded/wintercoat/medical/paramedic name = "paramedic winter coat" @@ -86,25 +102,52 @@ name = "science winter coat" icon_state = "coatscience" item_state = "coatscience" - allowed = list(/obj/item/analyzer, /obj/item/stack/medical, /obj/item/dnainjector, /obj/item/reagent_containers/dropper, /obj/item/reagent_containers/syringe, /obj/item/reagent_containers/hypospray, /obj/item/healthanalyzer, /obj/item/flashlight/pen, /obj/item/reagent_containers/glass/bottle, /obj/item/reagent_containers/glass/beaker, /obj/item/reagent_containers/pill, /obj/item/storage/pill_bottle, /obj/item/paper, /obj/item/melee/classic_baton/telescopic, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman) - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/science + allowed = list( + /obj/item/analyzer, + /obj/item/stack/medical, + /obj/item/dnainjector, + /obj/item/reagent_containers/dropper, + /obj/item/reagent_containers/syringe, + /obj/item/reagent_containers/hypospray, + /obj/item/healthanalyzer, + /obj/item/flashlight/pen, + /obj/item/reagent_containers/glass/bottle, + /obj/item/reagent_containers/glass/beaker, + /obj/item/reagent_containers/pill, + /obj/item/storage/pill_bottle, + /obj/item/paper, + /obj/item/melee/classic_baton/telescopic, + /obj/item/toy, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + ) /obj/item/clothing/head/hooded/winterhood/science icon_state = "hood_science" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 10, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) /obj/item/clothing/suit/hooded/wintercoat/engineering name = "engineering winter coat" icon_state = "coatengineer" item_state = "coatengineer" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) - allowed = list(/obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/t_scanner, /obj/item/construction/rcd, /obj/item/pipe_dispenser, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/engineering + allowed = list( + /obj/item/flashlight, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + /obj/item/t_scanner, + /obj/item/construction/rcd, + /obj/item/pipe_dispenser, + /obj/item/toy, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + ) + /obj/item/clothing/head/hooded/winterhood/engineering icon_state = "hood_engineer" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) /obj/item/clothing/suit/hooded/wintercoat/engineering/atmos name = "atmospherics winter coat" @@ -119,8 +162,22 @@ name = "hydroponics winter coat" icon_state = "coathydro" item_state = "coathydro" - allowed = list(/obj/item/reagent_containers/spray/plantbgone, /obj/item/plant_analyzer, /obj/item/seeds, /obj/item/reagent_containers/glass/bottle, /obj/item/cultivator, /obj/item/reagent_containers/spray/pestspray, /obj/item/hatchet, /obj/item/storage/bag/plants, /obj/item/toy, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) hoodtype = /obj/item/clothing/head/hooded/winterhood/hydro + allowed = list( + /obj/item/reagent_containers/spray/plantbgone, + /obj/item/plant_analyzer, + /obj/item/seeds, + /obj/item/reagent_containers/glass/bottle, + /obj/item/cultivator, + /obj/item/reagent_containers/spray/pestspray, + /obj/item/hatchet, + /obj/item/storage/bag/plants, + /obj/item/toy, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/tank/internals/plasmaman, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + ) /obj/item/clothing/head/hooded/winterhood/hydro icon_state = "hood_hydro" @@ -138,13 +195,18 @@ name = "mining winter coat" icon_state = "coatminer" item_state = "coatminer" - allowed = list(/obj/item/pickaxe, /obj/item/flashlight, /obj/item/tank/internals/emergency_oxygen, /obj/item/tank/internals/plasmaman, /obj/item/toy, /obj/item/storage/fancy/cigarettes, /obj/item/lighter) - armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) hoodtype = /obj/item/clothing/head/hooded/winterhood/miner + allowed = list( + /obj/item/pickaxe, + /obj/item/flashlight, + /obj/item/tank/internals/emergency_oxygen, + /obj/item/toy, + /obj/item/storage/fancy/cigarettes, + /obj/item/lighter, + ) /obj/item/clothing/head/hooded/winterhood/miner icon_state = "hood_miner" - armor = list("melee" = 10, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 0) // Inteq @@ -154,18 +216,17 @@ icon_state = "coatinteq" item_state = "coatinteq" hoodtype = /obj/item/clothing/head/hooded/winterhood/security/inteq - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/head/hooded/winterhood/security/inteq icon_state = "hood_inteq" - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/suit/hooded/wintercoat/security/inteq/alt name = "inteq hooded coat" desc = "A hooded coat with a fur trim around the hood, comfy! It has a small 'IRMG' embroidered onto the shoulder." icon_state = "coatinteq_alt" item_state = "coatinteq_alt" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/security/inteq/alt /obj/item/clothing/head/hooded/winterhood/security/inteq/alt @@ -173,15 +234,14 @@ desc = "A comfortable looking brown hood." icon_state = "hood_inteq_alt" item_state = "hood_inteq_alt" - armor = list("melee" = 25, "bullet" = 15, "laser" = 30, "energy" = 40, "bomb" = 25, "bio" = 0, "rad" = 0, "fire" = 0, "acid" = 45) // CentCom + /obj/item/clothing/suit/hooded/wintercoat/centcom name = "centcom winter coat" desc = "A luxurious winter coat woven in the bright green and gold colours of Central Command. It has a small pin in the shape of the Nanotrasen logo for a zipper." icon_state = "coatcentcom" item_state = "coatcentcom" - armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60) hoodtype = /obj/item/clothing/head/hooded/winterhood/centcom /obj/item/clothing/suit/hooded/wintercoat/centcom/Initialize(mapload) @@ -190,7 +250,6 @@ /obj/item/clothing/head/hooded/winterhood/centcom icon_state = "hood_centcom" - armor = list("melee" = 35, "bullet" = 40, "laser" = 40, "energy" = 50, "bomb" = 35, "bio" = 10, "rad" = 10, "fire" = 10, "acid" = 60) // SolGov @@ -199,9 +258,7 @@ desc = "An environment-resistant wintercoat in the colors of the Solarian Confederation." icon_state = "coatsolgov" item_state = "coatsolgov" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) hoodtype = /obj/item/clothing/head/hooded/winterhood/solgov /obj/item/clothing/head/hooded/winterhood/solgov icon_state = "hood_solgov" - armor = list("melee" = 0, "bullet" = 0, "laser" = 0, "energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 20, "fire" = 30, "acid" = 45) diff --git a/code/modules/clothing/under/jobs/cargo.dm b/code/modules/clothing/under/jobs/cargo.dm index 2341da5567a9..0af578bfd452 100644 --- a/code/modules/clothing/under/jobs/cargo.dm +++ b/code/modules/clothing/under/jobs/cargo.dm @@ -1,7 +1,7 @@ /obj/item/clothing/under/rank/cargo icon = 'icons/obj/clothing/under/cargo.dmi' mob_overlay_icon = 'icons/mob/clothing/under/cargo.dmi' - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/under/rank/cargo/qm name = "quartermaster's jumpsuit" @@ -16,7 +16,7 @@ item_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION /obj/item/clothing/under/rank/cargo/tech name = "cargo technician's jumpsuit" @@ -24,7 +24,7 @@ icon_state = "cargotech" item_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION alt_covers_chest = TRUE /obj/item/clothing/under/rank/cargo/tech/skirt @@ -33,7 +33,7 @@ icon_state = "cargo_skirt" item_state = "lb_suit" body_parts_covered = CHEST|GROIN|ARMS - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION can_adjust = FALSE /obj/item/clothing/under/rank/cargo/miner @@ -43,7 +43,7 @@ item_state = "miner" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 80, "acid" = 0) resistance_flags = NONE - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION /obj/item/clothing/under/rank/cargo/miner/lavaland desc = "A light uniform for operating in hazardous environments, manufactured en-masse by EXOCOM for the profitable frontier prospector market. Adventurous khaki jeans included." @@ -51,14 +51,14 @@ icon_state = "explorer" item_state = "explorer" can_adjust = TRUE - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/under/rank/cargo/miner/hazard desc = "A thick jumpsuit with reflective stripes for hazardous, low-visibility environments. It's coated in a thick layer of asteroid dust." name = "asteroid miner's jumpsuit" icon_state = "hazard" item_state = "hazard" - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/rank/cargo/miner/lavaland/old icon_state = "explorerold" diff --git a/code/modules/clothing/under/jobs/medical.dm b/code/modules/clothing/under/jobs/medical.dm index bf462c7fda4d..183e957d2338 100644 --- a/code/modules/clothing/under/jobs/medical.dm +++ b/code/modules/clothing/under/jobs/medical.dm @@ -174,7 +174,7 @@ desc = "A light white gown that allows easy access to any patient who wears this." icon_state = "gownwhite" item_state = "gownwhite" - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION can_adjust = FALSE /obj/item/clothing/under/rank/medical/gown/green diff --git a/code/modules/clothing/under/skirt_dress.dm b/code/modules/clothing/under/skirt_dress.dm index 1dabceb6db24..f74748f71fbb 100644 --- a/code/modules/clothing/under/skirt_dress.dm +++ b/code/modules/clothing/under/skirt_dress.dm @@ -93,4 +93,4 @@ desc = "A pretty red dress with big pink ribbons attached. Intended to be worn by Kepori cosplayers, but also fits other species." icon_state = "rilena_dress" item_state = "rilena_dress" - supports_variations = KEPORI_VARIATION + //supports_variations = KEPORI_VARIATION diff --git a/code/modules/clothing/under/syndicate.dm b/code/modules/clothing/under/syndicate.dm index 9eb76ee6bf5e..85c9996489e2 100644 --- a/code/modules/clothing/under/syndicate.dm +++ b/code/modules/clothing/under/syndicate.dm @@ -7,7 +7,7 @@ alt_covers_chest = TRUE icon = 'icons/obj/clothing/under/syndicate.dmi' mob_overlay_icon = 'icons/mob/clothing/under/syndicate.dmi' - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/under/syndicate/skirt name = "tactical skirtleneck" @@ -17,7 +17,7 @@ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) alt_covers_chest = TRUE can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION /obj/item/clothing/under/syndicate/bloodred name = "blood-red sneaksuit" @@ -27,7 +27,7 @@ armor = list("melee" = 10, "bullet" = 10, "laser" = 10,"energy" = 10, "bomb" = 0, "bio" = 0, "rad" = 10, "fire" = 50, "acid" = 40) resistance_flags = FIRE_PROOF | ACID_PROOF can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/bloodred/sleepytime name = "blood-red pajamas" @@ -35,7 +35,7 @@ icon_state = "bloodred_pajamas" item_state = "bl_suit" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/tacticool name = "tacticool turtleneck" @@ -43,7 +43,7 @@ icon_state = "tactifool" item_state = "bl_suit" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) - supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION | VOX_VARIATION /obj/item/clothing/under/syndicate/tacticool/skirt name = "tacticool skirtleneck" @@ -52,7 +52,7 @@ item_state = "bl_suit" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON /obj/item/clothing/under/syndicate/sniper name = "Tactical turtleneck suit" @@ -75,7 +75,7 @@ desc = "With a suit lined with this many pockets, you are ready to operate." icon_state = "syndicate_combat" can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/rus_army name = "advanced military tracksuit" @@ -100,7 +100,7 @@ can_adjust = FALSE armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) alt_covers_chest = TRUE - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/cybersun name = "cybersun jumpsuit" @@ -115,7 +115,7 @@ icon_state = "cybersun" armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 60, "acid" = 100) alt_covers_chest = TRUE - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/cybersun/officer name = "cybersun officer's suit" @@ -130,7 +130,7 @@ icon_state = "cybersun_med" permeability_coefficient = 0.5 armor = list("melee" = 0, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 10, "rad" = 0, "fire" = 0, "acid" = 0) - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION /obj/item/clothing/under/syndicate/medic/skirt name = "Cybersun medical jumpskirt" @@ -138,7 +138,7 @@ icon_state = "cybersun_med_skirt" body_parts_covered = CHEST|GROIN|ARMS can_adjust = FALSE - supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION_NO_NEW_ICON | VOX_VARIATION /obj/item/clothing/under/syndicate/donk name = "Donk! Co. employee uniform" @@ -148,14 +148,14 @@ armor = list("melee" = 10, "bullet" = 0, "laser" = 0,"energy" = 0, "bomb" = 0, "bio" = 0, "rad" = 0, "fire" = 50, "acid" = 40) body_parts_covered = CHEST|GROIN|ARMS alt_covers_chest = TRUE - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/under/syndicate/donk/qm name = "Donk! Co. manager uniform" desc = "The standard uniform of Donk Co. managers. Direct all complaints here." icon_state = "donk_qm" body_parts_covered = CHEST|GROIN|LEGS|ARMS - supports_variations = DIGITIGRADE_VARIATION | KEPORI_VARIATION + supports_variations = DIGITIGRADE_VARIATION /obj/item/clothing/suit/hazardvest/donk name = "Donk! Co. employee vest" diff --git a/code/modules/mob/dead/new_player/sprite_accessories/kepori.dm b/code/modules/mob/dead/new_player/sprite_accessories/kepori.dm index 4ed949c63ef8..9fd4579e46f8 100644 --- a/code/modules/mob/dead/new_player/sprite_accessories/kepori.dm +++ b/code/modules/mob/dead/new_player/sprite_accessories/kepori.dm @@ -1,10 +1,9 @@ -//Kepori mutant parts - -//Start head feathers +// "Hair" feathers /datum/sprite_accessory/kepori_feathers color_src = HAIR - icon = 'icons/mob/kepori_parts.dmi' + body_zone = BODY_ZONE_HEAD + icon = 'icons/mob/species/kepori/kepori_parts.dmi' /datum/sprite_accessory/kepori_feathers/none name = "None" @@ -37,10 +36,6 @@ name = "Spikey" icon_state = "spikey" -/datum/sprite_accessory/kepori_feathers/soap - name = "Soap" - icon_state = "soap" - /datum/sprite_accessory/kepori_feathers/crowned name = "Crowned" icon_state = "crowned" @@ -57,40 +52,60 @@ name = "Bun" icon_state = "bun" -//Start body feathers +// Head/Face feathers + +/datum/sprite_accessory/kepori_head_feathers + color_src = MUTCOLORS_SECONDARY + body_zone = BODY_ZONE_HEAD + icon = 'icons/mob/species/kepori/kepori_parts.dmi' + +/datum/sprite_accessory/kepori_head_feathers/none + name = "None" + +/datum/sprite_accessory/kepori_head_feathers/full + name = "Full" + icon_state = "full" + +/datum/sprite_accessory/kepori_head_feathers/half + name = "Half" + icon_state = "half" + +// Body feathers /datum/sprite_accessory/kepori_body_feathers color_src = MUTCOLORS_SECONDARY - icon = 'icons/mob/kepori_parts.dmi' + body_zone = BODY_ZONE_CHEST + icon = 'icons/mob/species/kepori/kepori_parts.dmi' /datum/sprite_accessory/kepori_body_feathers/none name = "None" -/datum/sprite_accessory/kepori_body_feathers/aftik - name = "Aftik" - icon_state = "aftik" - /datum/sprite_accessory/kepori_body_feathers/belly name = "Belly" icon_state = "belly" -/datum/sprite_accessory/kepori_body_feathers/shirt - name = "Shirt" - icon_state = "shirt" +/datum/sprite_accessory/kepori_body_feathers/belly_wings + name = "Belly + Wings" + icon_state = "bwings" /datum/sprite_accessory/kepori_body_feathers/soap name = "Soap" icon_state = "soap" +/datum/sprite_accessory/kepori_body_feathers/soap_wings + name = "Soap + Wings" + icon_state = "swings" + /datum/sprite_accessory/kepori_body_feathers/wings name = "Wings" icon_state = "wings" -//Start tail feathers +// Tail feathers /datum/sprite_accessory/kepori_tail_feathers color_src = MUTCOLORS_SECONDARY - icon = 'icons/mob/kepori_parts.dmi' + body_zone = BODY_ZONE_CHEST + icon = 'icons/mob/species/kepori/kepori_parts.dmi' /datum/sprite_accessory/kepori_tail_feathers/none name = "None" diff --git a/code/modules/mob/living/carbon/human/consistent_human.dm b/code/modules/mob/living/carbon/human/consistent_human.dm index e63adffeee48..86e6e08c4367 100644 --- a/code/modules/mob/living/carbon/human/consistent_human.dm +++ b/code/modules/mob/living/carbon/human/consistent_human.dm @@ -31,6 +31,7 @@ dna.features["spider_spinneret"] = GLOB.spider_spinneret_list[hex2num(copytext(seed, 11, 12)) % length(GLOB.spider_spinneret_list) + 1] dna.features["kepori_feathers"] = GLOB.kepori_feathers_list[hex2num(copytext(seed, 12, 13)) % length(GLOB.kepori_feathers_list) + 1] dna.features["kepori_body_feathers"] = GLOB.kepori_body_feathers_list[hex2num(copytext(seed, 13, 14)) % length(GLOB.kepori_body_feathers_list) + 1] + dna.features["kepori_head_feathers"] = GLOB.kepori_head_feathers_list[hex2num(copytext(seed, 13, 14)) % length(GLOB.kepori_head_feathers_list) + 1] dna.features["vox_head_quills"] = GLOB.vox_head_quills_list[hex2num(copytext(seed, 14, 15)) % length(GLOB.vox_head_quills_list) + 1] dna.features["vox_neck_quills"] = GLOB.vox_neck_quills_list[hex2num(copytext(seed, 15, 16)) % length(GLOB.vox_neck_quills_list) + 1] dna.features["elzu_horns"] = GLOB.elzu_horns_list[hex2num(copytext(seed, 16, 17)) % length(GLOB.elzu_horns_list) + 1] diff --git a/code/modules/mob/living/carbon/human/species.dm b/code/modules/mob/living/carbon/human/species.dm index 166d2d4e83a0..e848bc01d251 100644 --- a/code/modules/mob/living/carbon/human/species.dm +++ b/code/modules/mob/living/carbon/human/species.dm @@ -688,16 +688,27 @@ GLOBAL_LIST_EMPTY(roundstart_races) var/obj/item/organ/eyes/eyes = H.getorganslot(ORGAN_SLOT_EYES) var/mutable_appearance/eye_overlay var/mutable_appearance/sclera_overlay + if(eyes) if(!HAS_TRAIT(H, TRAIT_EYESCLOSED) && !(H.stat == DEAD)) - eye_overlay = mutable_appearance(species_eye_path || 'icons/mob/human_face.dmi', eyes.eye_icon_state, -BODYPARTS_LAYER) - sclera_overlay = mutable_appearance('icons/mob/human_face.dmi', eyes.sclera_icon_state, -BODYPARTS_LAYER) + + if(iskepori(H)) // Kepori need sclera but don't fit the normal silhouette, so this needs changing. Make better later. + eye_overlay = mutable_appearance('icons/mob/species/kepori/kepori_eyes.dmi', eyes.eye_icon_state, -BODYPARTS_LAYER) + sclera_overlay = mutable_appearance('icons/mob/species/kepori/kepori_eyes.dmi', eyes.sclera_icon_state, -BODYPARTS_LAYER) + + else + eye_overlay = mutable_appearance(species_eye_path || 'icons/mob/human_face.dmi', eyes.eye_icon_state, -BODYPARTS_LAYER) + sclera_overlay = mutable_appearance('icons/mob/human_face.dmi', eyes.sclera_icon_state, -BODYPARTS_LAYER) + if((EYECOLOR in species_traits) && eyes) eye_overlay.color = "#" + H.eye_color + if((SCLERA in species_traits) && eyes) sclera_overlay.color = "#" + H.sclera_color standing += sclera_overlay + standing += eye_overlay + if(EMOTE_OVERLAY in species_traits) // blush if (HAS_TRAIT(H, TRAIT_BLUSHING)) // Caused by either the *blush emote or the "drunk" mood event @@ -939,6 +950,8 @@ GLOBAL_LIST_EMPTY(roundstart_races) S = GLOB.spider_spinneret_list[H.dna.features["spider_spinneret"]] if("kepori_body_feathers") S = GLOB.kepori_body_feathers_list[H.dna.features["kepori_body_feathers"]] + if("kepori_head_feathers") + S = GLOB.kepori_head_feathers_list[H.dna.features["kepori_head_feathers"]] if("kepori_tail_feathers") S = GLOB.kepori_tail_feathers_list[H.dna.features["kepori_tail_feathers"]] if("kepori_feathers") diff --git a/code/modules/mob/living/carbon/human/species_types/kepori.dm b/code/modules/mob/living/carbon/human/species_types/kepori.dm index 5693c646cf3f..3278d3d77c1e 100644 --- a/code/modules/mob/living/carbon/human/species_types/kepori.dm +++ b/code/modules/mob/living/carbon/human/species_types/kepori.dm @@ -2,10 +2,10 @@ name = "\improper Kepori" id = SPECIES_KEPORI default_color = "6060FF" - species_traits = list(MUTCOLORS, EYECOLOR, MUTCOLORS_SECONDARY) + species_traits = list(SCLERA, MUTCOLORS, EYECOLOR, MUTCOLORS_SECONDARY) inherent_traits = list(TRAIT_SCOOPABLE) - mutant_bodyparts = list("kepori_body_feathers", "kepori_tail_feathers", "kepori_feathers") - default_features = list("mcolor" = "0F0", "wings" = "None", "kepori_feathers" = "Plain", "kepori_body_feathers" = "Plain", "kepori_tail_feathers" = "Fan", "body_size" = "Normal") + mutant_bodyparts = list("kepori_body_feathers", "kepori_head_feathers", "kepori_tail_feathers", "kepori_feathers") + default_features = list("mcolor" = "0F0", "wings" = "None", "kepori_feathers" = "None", "kepori_head_feathers" = "None", "kepori_body_feathers" = "None", "kepori_tail_feathers" = "None") meat = /obj/item/reagent_containers/food/snacks/meat/slab/chicken disliked_food = FRIED | GROSS | CLOTH liked_food = MEAT | GORE @@ -15,7 +15,7 @@ attack_sound = 'sound/weapons/slash.ogg' miss_sound = 'sound/weapons/slashmiss.ogg' species_clothing_path = 'icons/mob/clothing/species/kepori.dmi' - species_eye_path = 'icons/mob/kepori_parts.dmi' + species_eye_path = 'icons/mob/species/kepori/kepori_eyes.dmi' heatmod = 0.67 coldmod = 1.5 brutemod = 1.5 @@ -57,17 +57,64 @@ species_robotic_l_leg = /obj/item/bodypart/leg/left/robot/surplus/kepori species_robotic_r_leg = /obj/item/bodypart/leg/right/robot/surplus/kepori + robotic_eyes = /obj/item/organ/eyes/robotic/kepori + /datum/species/kepori/New() . = ..() // This is in new because "[HEAD_LAYER]" etc. is NOT a constant compile-time value. For some reason. // Why not just use HEAD_LAYER? Well, because HEAD_LAYER is a number, and if you try to use numbers as indexes, // BYOND will try to make it an ordered list. So, we have to use a string. This is annoying, but it's the only way to do it smoothly. offset_clothing = list( - "[HEAD_LAYER]" = list("[NORTH]" = list("x" = 0, "y" = -4), "[EAST]" = list("x" = 4, "y" = -4), "[SOUTH]" = list("x" = 0, "y" = -4), "[WEST]" = list("x" = -4, "y" = -4)), - "[GLASSES_LAYER]" = list("[NORTH]" = list("x" = 0, "y" = -4), "[EAST]" = list("x" = 4, "y" = -4), "[SOUTH]" = list("x" = 0, "y" = -4), "[WEST]" = list("x" = -4, "y" = -4)), - "[FACEMASK_LAYER]" = list("[NORTH]" = list("x" = 0, "y" = -5), "[EAST]" = list("x" = 4, "y" = -5), "[SOUTH]" = list("x" = 0, "y" = -5), "[WEST]" = list("x" = -4, "y" = -5)), + "[HEAD_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -3), + "[EAST]" = list("x" = 19, "y" = -3), //ISSUE: The head sprites seem to be cut off when given an offset this large, combined with kepori offset + "[SOUTH]" = list("x" = 8, "y" = -3), + "[WEST]" = list("x" = -3, "y" = -3) + ), + "[GLASSES_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -3), + "[EAST]" = list("x" = 19, "y" = -3), + "[SOUTH]" = list("x" = 8, "y" = -3), + "[WEST]" = list("x" = -3, "y" = -3) + ), + "[FACEMASK_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -3), + "[EAST]" = list("x" = 19, "y" = -3), + "[SOUTH]" = list("x" = 8, "y" = -3), + "[WEST]" = list("x" = -3, "y" = -3) + ), + "[BELT_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -1), + "[EAST]" = list("x" = 8, "y" = -1), + "[SOUTH]" = list("x" = 8, "y" = -1), + "[WEST]" = list("x" = 9, "y" = -1) + ), + "[EARS_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -3), + "[EAST]" = list("x" = 19, "y" = -3), + "[SOUTH]" = list("x" = 8, "y" = -3), + "[WEST]" = list("x" = -3, "y" = -3) + ), + "[SUIT_STORE_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = -1), + "[EAST]" = list("x" = 8, "y" = -1), + "[SOUTH]" = list("x" = 8, "y" = -1), + "[WEST]" = list("x" = -8, "y" = -1) + ), ) +// First list is left hand, second list is right hand. This is used for inhand offsets. +/datum/species/kepori/get_item_offsets_for_dir(dir, hand) + //LEFT/RIGHT + if(dir & NORTH) + return list(list("x" = 9, "y" = -1), list("x" = 7, "y" = -1)) + if(dir & SOUTH) + return list(list("x" = 7, "y" = -1), list("x" = 9, "y" = -1)) + if(dir & EAST) + return list(list("x" = 18, "y" = -2), list("x" = 21, "y" = -2)) //("x" = 18, "y" = 2), list("x" = 21, "y" = -1)) + if(dir & WEST) + return list(list("x" = -4, "y" = -2), list("x" = -1, "y" = -2)) //("x" = -5, "y" = -1), list("x" = -1, "y" = 2)) + /datum/species/kepori/random_name(gender,unique,lastname) if(unique) return random_unique_kepori_name() @@ -86,17 +133,27 @@ return equip_delay_self_check(I, H, bypass_equip_delay_self) /datum/species/kepori/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) - ..() + . = ..() + + C.base_pixel_x -= 8 + C.pixel_x = C.base_pixel_x + C.update_hands_on_rotate() + if(ishuman(C)) keptackle = new keptackle.Grant(C) /datum/species/kepori/on_species_loss(mob/living/carbon/human/C, datum/species/new_species, pref_load) + . = ..() + + C.base_pixel_x += 8 + C.pixel_x = C.base_pixel_x + C.stop_updating_hands() + if(keptackle) keptackle.Remove(C) - qdel(C.GetComponent(/datum/component/tackler)) - ..() + qdel(C.GetComponent(/datum/component/tackler)) /datum/action/innate/keptackle name = "Pounce" diff --git a/code/modules/mob/living/carbon/human/species_types/vox.dm b/code/modules/mob/living/carbon/human/species_types/vox.dm index fd03e184b9ba..b9cc8306762e 100644 --- a/code/modules/mob/living/carbon/human/species_types/vox.dm +++ b/code/modules/mob/living/carbon/human/species_types/vox.dm @@ -67,14 +67,29 @@ /datum/species/vox/New() . = ..() + // This is in new because "[HEAD_LAYER]" etc. is NOT a constant compile-time value. For some reason. + // Why not just use HEAD_LAYER? Well, because HEAD_LAYER is a number, and if you try to use numbers as indexes, + // BYOND will try to make it an ordered list. So, we have to use a string. This is annoying, but it's the only way to do it smoothly. + offset_clothing = list( + "[SUIT_STORE_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = 0), + "[EAST]" = list("x" = 8, "y" = 0), + "[SOUTH]" = list("x" = 8, "y" = 0), + "[WEST]" = list("x" = -8, "y" = 0) + ), + "[EARS_LAYER]" = list( + "[NORTH]" = list("x" = 8, "y" = 0), + "[EAST]" = list("x" = 8, "y" = 0), + "[SOUTH]" = list("x" = 8, "y" = 0), + "[WEST]" = list("x" = -8, "y" = 0) + ), + ) /datum/species/vox/random_name(gender,unique,lastname) if(unique) return random_unique_vox_name() return vox_name() - - /datum/species/vox/on_species_gain(mob/living/carbon/C, datum/species/old_species, pref_load) . = ..() C.base_pixel_x -= 9 diff --git a/code/modules/mob/living/carbon/human/update_icons.dm b/code/modules/mob/living/carbon/human/update_icons.dm index be99a1e4d547..beecda12b083 100644 --- a/code/modules/mob/living/carbon/human/update_icons.dm +++ b/code/modules/mob/living/carbon/human/update_icons.dm @@ -1,5 +1,4 @@ #define RESOLVE_ICON_STATE(I) (I.mob_overlay_state || I.icon_state) -#define CHECK_USE_AUTOGEN (handled_by_bodytype ? null : dna.species) //Is this gross overuse of macros? Yes. Fuck you. /////////////////////// //UPDATE_ICONS SYSTEM// @@ -111,9 +110,6 @@ There are several things that need to be remembered: if(wear_suit && (wear_suit.flags_inv & HIDEJUMPSUIT)) return - var/target_overlay = U.icon_state - if(U.adjusted == ALT_STYLE) - target_overlay = "[target_overlay]_d" var/t_color = U.item_color @@ -122,10 +118,18 @@ There are several things that need to be remembered: if(U.adjusted == ALT_STYLE) t_color = "[t_color]_d" + ///The final thing we overlay. Set on build_worn_icon. var/mutable_appearance/uniform_overlay + ///icon file of the clothing var/icon_file = U.mob_overlay_icon - var/handled_by_bodytype = TRUE + ///The icon state to overlay + var/target_overlay = U.icon_state + if(U.adjusted == ALT_STYLE) + target_overlay = "[target_overlay]_d" + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + if(!uniform_overlay) //Kapu's autistic attempt at digitigrade handling //Hi Kapu @@ -135,21 +139,29 @@ There are several things that need to be remembered: icon_file = U.mob_overlay_icon target_overlay = "[target_overlay]_digi" - else if((dna.species.bodytype & BODYTYPE_VOX) && (U.supports_variations & VOX_VARIATION)) - icon_file = VOX_UNIFORM_PATH - if(U.vox_override_icon) - icon_file = U.vox_override_icon + else if(dna.species.bodytype & BODYTYPE_VOX) + if(U.supports_variations & VOX_VARIATION) + icon_file = VOX_UNIFORM_PATH + if(U.vox_override_icon) + icon_file = U.vox_override_icon + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(U.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_UNIFORM_PATH + if(U.kepoi_override_icon) + icon_file = U.kepoi_override_icon + else + handled_by_bodytype = TRUE - else if((dna.species.bodytype & BODYTYPE_KEPORI) && (U.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_UNIFORM_PATH - if(U.kepoi_override_icon) - icon_file = U.kepoi_override_icon if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(U)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = U.mob_overlay_icon || DEFAULT_UNIFORM_PATH - uniform_overlay = U.build_worn_icon(default_layer = UNIFORM_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, override_file = icon_file, override_state = target_overlay, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + uniform_overlay = U.build_worn_icon(default_layer = UNIFORM_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, override_file = icon_file, override_state = target_overlay, mob_species = use_autogen) if(!uniform_overlay) return @@ -176,7 +188,8 @@ There are several things that need to be remembered: var/handled_by_bodytype //TODO: add an icon file for ID slot stuff, so it's less snowflakey - id_overlay = I.build_worn_icon(default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi', mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + id_overlay = I.build_worn_icon(default_layer = ID_LAYER, default_icon_file = 'icons/mob/mob.dmi', mob_species = use_autogen) if(!id_overlay) return @@ -206,29 +219,41 @@ There are several things that need to be remembered: //Bloody hands end - var/mutable_appearance/gloves_overlay + if(gloves) var/obj/item/I = gloves update_hud_gloves(I) - var/handled_by_bodytype = TRUE + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/gloves_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_GLOVES_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_GLOVES_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_GLOVES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_GLOVES_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_GLOVES_PATH - gloves_overlay = I.build_worn_icon(default_layer = GLOVES_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + gloves_overlay = I.build_worn_icon(default_layer = GLOVES_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = use_autogen) if(!gloves_overlay) return @@ -250,25 +275,37 @@ There are several things that need to be remembered: var/obj/item/I = glasses update_hud_glasses(I) if(!(head?.flags_inv & HIDEEYES) && !(wear_mask?.flags_inv & HIDEEYES)) + ///The final thing we overlay. Set on build_worn_icon. var/mutable_appearance/glasses_overlay - var/handled_by_bodytype = TRUE + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_GLASSES_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon -/*uncomment post kepori resprite - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_GLASSES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon -*/ + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_GLASSES_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_GLASSES_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE + if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_GLASSES_PATH - glasses_overlay = I.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + glasses_overlay = I.build_worn_icon(default_layer = GLASSES_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = use_autogen) if(!glasses_overlay) return @@ -288,27 +325,38 @@ There are several things that need to be remembered: if(ears) var/obj/item/I = ears - var/mutable_appearance/ears_overlay update_hud_ears(I) - var/handled_by_bodytype = TRUE + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/ears_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_EARS_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_EARS_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_EARS_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon -/*uncomment post kepori resprite - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_EARS_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon -*/ if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_EARS_PATH - ears_overlay = I.build_worn_icon(default_layer = EARS_LAYER, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + ears_overlay = I.build_worn_icon(default_layer = EARS_LAYER, override_file = icon_file, mob_species = use_autogen) if(!ears_overlay) return @@ -328,11 +376,17 @@ There are several things that need to be remembered: if(shoes) var/obj/item/I = shoes + update_hud_shoes(I) + ///The final thing we overlay. Set on build_worn_icon. var/mutable_appearance/shoes_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + ///The icon state to overlay var/target_overlay = I.icon_state - update_hud_shoes(I) - var/handled_by_bodytype = TRUE + + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE if((dna.species.bodytype & BODYTYPE_DIGITIGRADE) && ((I.supports_variations & DIGITIGRADE_VARIATION) || (I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE))) var/obj/item/bodypart/leg = src.get_bodypart(BODY_ZONE_L_LEG) @@ -342,21 +396,28 @@ There are several things that need to be remembered: icon_file = I.mob_overlay_icon target_overlay = "[target_overlay]_digi" - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_SHOES_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon + else if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_SHOES_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_SHOES_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_SHOES_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_SHOES_PATH - shoes_overlay = I.build_worn_icon(default_layer = SHOES_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, mob_species = CHECK_USE_AUTOGEN, override_state = target_overlay) + var/use_autogen = handled_by_bodytype ? dna.species : null + shoes_overlay = I.build_worn_icon(default_layer = SHOES_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, mob_species = use_autogen, override_state = target_overlay) if(!shoes_overlay) return @@ -394,31 +455,44 @@ There are several things that need to be remembered: inv.update_appearance() if(head) var/obj/item/I = head - var/mutable_appearance/head_overlay update_hud_head(I) - var/handled_by_bodytype = TRUE + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/head_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + ///The icon state to overlay var/target_overlay = I.icon_state + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) if((head_bodypart.bodytype & BODYTYPE_SNOUT) && (I.supports_variations & SNOUTED_VARIATION)) target_overlay = "[target_overlay]_snouted" - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_HEAD_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon + else if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_HEAD_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_HEAD_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_HEAD_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_HEAD_PATH - head_overlay = I.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, mob_species = CHECK_USE_AUTOGEN, override_state = target_overlay) + var/use_autogen = handled_by_bodytype ? dna.species : null + head_overlay = I.build_worn_icon(default_layer = HEAD_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, mob_species = use_autogen, override_state = target_overlay) if(!head_overlay) return @@ -436,26 +510,39 @@ There are several things that need to be remembered: if(belt) var/obj/item/I = belt - var/mutable_appearance/belt_overlay update_hud_belt(I) - var/handled_by_bodytype + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/belt_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon - if((I.supports_variations & VOX_VARIATION) && (dna.species.bodytype & BODYTYPE_VOX)) - icon_file = VOX_BELT_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + - //if((I.supports_variations & KEPORI_VARIATION) && (dna.species.bodytype & BODYTYPE_KEPORI)) - //icon_file = KEPORI_BELT_PATH - //if(I.kepoi_override_icon) -// icon_file = I.kepoi_override_icon + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_BELT_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_BELT_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_BELT_PATH - belt_overlay = I.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + belt_overlay = I.build_worn_icon(default_layer = BELT_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = use_autogen) if(!belt_overlay) return @@ -474,33 +561,46 @@ There are several things that need to be remembered: if(wear_suit) var/obj/item/I = wear_suit - var/mutable_appearance/suit_overlay update_hud_wear_suit(I) + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/suit_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + ///The icon state to overlay var/target_overlay = I.icon_state - var/handled_by_bodytype = TRUE + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + if((dna.species.bodytype & BODYTYPE_DIGITIGRADE) && ((I.supports_variations & DIGITIGRADE_VARIATION) || (I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE))) icon_file = DIGITIGRADE_SUIT_PATH if((I.supports_variations & DIGITIGRADE_VARIATION_SAME_ICON_FILE)) icon_file = I.mob_overlay_icon target_overlay = "[target_overlay]_digi" - else if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_SUIT_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon + else if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_SUIT_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE - else if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_SUIT_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_SUIT_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = I.mob_overlay_icon - suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN, override_state = target_overlay) + var/use_autogen = handled_by_bodytype ? dna.species : null + suit_overlay = wear_suit.build_worn_icon(default_layer = SUIT_LAYER, override_file = icon_file, mob_species = use_autogen, override_state = target_overlay) if(!suit_overlay) return @@ -546,31 +646,44 @@ There are several things that need to be remembered: if(wear_mask) var/obj/item/I = wear_mask update_hud_wear_mask(I) + ///The final thing we overlay. Set on build_worn_icon. var/mutable_appearance/mask_overlay + + ///icon file of the clothing var/icon_file = I.mob_overlay_icon + ///The icon state to overlay var/target_overlay = I.icon_state - var/handled_by_bodytype = TRUE + + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE if(!(ITEM_SLOT_MASK in check_obscured_slots())) var/obj/item/bodypart/head_bodypart = src.get_bodypart(BODY_ZONE_HEAD) if((head_bodypart.bodytype & BODYTYPE_SNOUT) && (I.supports_variations & SNOUTED_VARIATION)) target_overlay = "[target_overlay]_snouted" - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_MASK_PATH - if(I.vox_override_icon) - icon_file = I.vox_override_icon - - if((dna.species.bodytype & BODYTYPE_KEPORI) && (I.supports_variations & KEPORI_VARIATION)) - icon_file = KEPORI_MASK_PATH - if(I.kepoi_override_icon) - icon_file = I.kepoi_override_icon + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_MASK_PATH + if(I.vox_override_icon) + icon_file = I.vox_override_icon + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) + if(I.supports_variations & KEPORI_VARIATION) + icon_file = KEPORI_MASK_PATH + if(I.kepoi_override_icon) + icon_file = I.kepoi_override_icon + else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) icon_file = DEFAULT_MASK_PATH - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE - mask_overlay = I.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN, override_state = target_overlay) + var/use_autogen = handled_by_bodytype ? dna.species : null + mask_overlay = I.build_worn_icon(default_layer = FACEMASK_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = use_autogen, override_state = target_overlay) if(!mask_overlay) return @@ -588,17 +701,48 @@ There are several things that need to be remembered: if(wear_neck) var/obj/item/I = wear_neck + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/neck_overlay + + ///icon file of the clothing + var/icon_file = I.mob_overlay_icon + ///The icon state to overlay + var/target_overlay = I.icon_state + + /// Does this clothing need to be generated via greyscale? + var/handled_by_bodytype = FALSE + + update_hud_neck(I) if(!(ITEM_SLOT_NECK in check_obscured_slots())) - var/icon_file = I.mob_overlay_icon - var/handled_by_bodytype = TRUE + + if(dna.species.bodytype & BODYTYPE_VOX) // there is neither a vox or kepori neck path, we just tell it to greyscale no matter what +// if(I.supports_variations & VOX_VARIATION) +// icon_file = VOX_NECK_PATH +// if(I.vox_override_icon) +// icon_file = I.vox_override_icon +// else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) +// if(I.supports_variations & KEPORI_VARIATION) +// icon_file = KEPORI_NECK_PATH +// if(I.kepoi_override_icon) +// icon_file = I.kepoi_override_icon +// else + handled_by_bodytype = TRUE if(!(icon_exists(icon_file, RESOLVE_ICON_STATE(I)))) - handled_by_bodytype = FALSE + handled_by_bodytype = TRUE icon_file = DEFAULT_NECK_PATH - overlays_standing[NECK_LAYER] = wear_neck.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = icon_file, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + var/use_autogen = handled_by_bodytype ? dna.species : null + neck_overlay = I.build_worn_icon(default_layer = NECK_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, mob_species = use_autogen, override_state = target_overlay) + if(!neck_overlay) + return + + overlays_standing[NECK_LAYER] = neck_overlay apply_overlay(NECK_LAYER) @@ -611,23 +755,42 @@ There are several things that need to be remembered: if(back) var/obj/item/I = back - var/mutable_appearance/back_overlay update_hud_back(I) - var/icon_file = I.mob_overlay_icon - var/handled_by_bodytype = TRUE - if((dna.species.bodytype & BODYTYPE_VOX) && (I.supports_variations & VOX_VARIATION)) - icon_file = VOX_BACK_PATH + ///The final thing we overlay. Set on build_worn_icon. + var/mutable_appearance/back_overlay - if(!icon_exists(icon_file, RESOLVE_ICON_STATE(I))) - icon_file = DEFAULT_BACK_PATH - handled_by_bodytype = FALSE + ///icon file of the clothing + var/icon_file = I.mob_overlay_icon - back_overlay = I.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, override_file = icon_file, mob_species = CHECK_USE_AUTOGEN) + /// Does this clothing need to be generated via greyscale + var/handled_by_bodytype = FALSE if(!back_overlay) - return - overlays_standing[BACK_LAYER] = back_overlay - apply_overlay(BACK_LAYER) + if(dna.species.bodytype & BODYTYPE_VOX) + if(I.supports_variations & VOX_VARIATION) + icon_file = VOX_BACK_PATH + else + handled_by_bodytype = TRUE + + else if(dna.species.bodytype & BODYTYPE_KEPORI) +// if(I.supports_variations & KEPORI_VARIATION) +// icon_file = KEPORI_BACK_PATH +// else + handled_by_bodytype = TRUE + + if(!icon_exists(icon_file, RESOLVE_ICON_STATE(I))) + icon_file = DEFAULT_BACK_PATH + handled_by_bodytype = TRUE + + var/use_autogen = handled_by_bodytype ? dna.species : null + back_overlay = I.build_worn_icon(default_layer = BACK_LAYER, default_icon_file = icon_file, override_file = icon_file, isinhands = FALSE, override_file = icon_file, mob_species = use_autogen) + + if(!back_overlay) + return + overlays_standing[BACK_LAYER] = back_overlay + + if(back_overlay) //This is faster fuck you + apply_overlay(BACK_LAYER) /mob/living/carbon/human/update_inv_legcuffed() remove_overlay(LEGCUFF_LAYER) @@ -768,6 +931,7 @@ in this situation default_icon_file is expected to match either the lefthand_ or ^this female part sucks and will be fully ripped out ideally */ +// Note: if handled_by_bodytype is TRUE before calling this, it makes species use greyscale /obj/item/proc/build_worn_icon(default_layer = 0, default_icon_file = null, isinhands = FALSE, override_state = null, override_file = null, datum/species/mob_species = null, direction = null) // WS Edit Start - Worn Icon State diff --git a/code/modules/surgery/bodyparts/robot_bodyparts.dm b/code/modules/surgery/bodyparts/robot_bodyparts.dm index 398d937cc586..61bbb88ab545 100644 --- a/code/modules/surgery/bodyparts/robot_bodyparts.dm +++ b/code/modules/surgery/bodyparts/robot_bodyparts.dm @@ -137,7 +137,6 @@ var/wired = FALSE var/obj/item/stock_parts/cell/cell = null - /obj/item/bodypart/chest/robot/handle_atom_del(atom/A) if(A == cell) cell = null @@ -191,7 +190,6 @@ cell.forceMove(drop_location()) cell = null - /obj/item/bodypart/chest/robot/examine(mob/user) . = ..() if(cell) @@ -214,7 +212,6 @@ cell = null ..() - /obj/item/bodypart/head/robot name = "cyborg head" desc = "A standard reinforced braincase, with spine-plugged neural socket and sensor gimbals." @@ -304,7 +301,6 @@ to_chat(user, "There is no flash to remove from [src].") return TRUE - /obj/item/bodypart/head/robot/drop_organs(mob/user, violent_removal) if(flash1) flash1.forceMove(user.loc) @@ -314,9 +310,6 @@ flash2 = null ..() - - - /obj/item/bodypart/l_arm/robot/surplus name = "surplus prosthetic left arm" desc = "A skeletal, robotic limb. Outdated and fragile, but it's still better than nothing." diff --git a/code/modules/surgery/organs/eyes.dm b/code/modules/surgery/organs/eyes.dm index 0c200df9f6b1..283ee77971eb 100644 --- a/code/modules/surgery/organs/eyes.dm +++ b/code/modules/surgery/organs/eyes.dm @@ -149,6 +149,9 @@ /obj/item/organ/eyes/robotic/lizard eye_icon_state = "eyes_synth" +/obj/item/organ/eyes/robotic/kepori + eye_icon_state = "eyes_kepori_synth" + /obj/item/organ/eyes/robotic/emp_act(severity) . = ..() if(!owner || . & EMP_PROTECT_SELF) diff --git a/icons/blanks/64x64.dmi b/icons/blanks/64x64.dmi new file mode 100644 index 000000000000..6bfbd471e5db Binary files /dev/null and b/icons/blanks/64x64.dmi differ diff --git a/icons/mob/augmentation/augments_kepori.dmi b/icons/mob/augmentation/augments_kepori.dmi index 56e56dd22db5..e86bdfd9cf2d 100644 Binary files a/icons/mob/augmentation/augments_kepori.dmi and b/icons/mob/augmentation/augments_kepori.dmi differ diff --git a/icons/mob/augmentation/augments_keporiOLD.dmi b/icons/mob/augmentation/augments_keporiOLD.dmi new file mode 100644 index 000000000000..56e56dd22db5 Binary files /dev/null and b/icons/mob/augmentation/augments_keporiOLD.dmi differ diff --git a/icons/mob/clothing/species/kepori.dmi b/icons/mob/clothing/species/kepori.dmi index cfa1f108dc68..1586e80e9b19 100644 Binary files a/icons/mob/clothing/species/kepori.dmi and b/icons/mob/clothing/species/kepori.dmi differ diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi new file mode 100644 index 000000000000..166e1a7624d9 Binary files /dev/null and b/icons/mob/clothing/underwear/species/kepori/underwear_legs_kepori.dmi differ diff --git a/icons/mob/clothing/underwear/species/underwear_legs_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_legs_keporiOLD.dmi similarity index 100% rename from icons/mob/clothing/underwear/species/underwear_legs_kepori.dmi rename to icons/mob/clothing/underwear/species/kepori/underwear_legs_keporiOLD.dmi diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_socks_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_socks_kepori.dmi new file mode 100644 index 000000000000..6fe4e042f679 Binary files /dev/null and b/icons/mob/clothing/underwear/species/kepori/underwear_socks_kepori.dmi differ diff --git a/icons/mob/clothing/underwear/species/underwear_socks_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_socks_keporiOLD.dmi similarity index 100% rename from icons/mob/clothing/underwear/species/underwear_socks_kepori.dmi rename to icons/mob/clothing/underwear/species/kepori/underwear_socks_keporiOLD.dmi diff --git a/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi new file mode 100644 index 000000000000..1a6a59cd5241 Binary files /dev/null and b/icons/mob/clothing/underwear/species/kepori/underwear_torso_kepori.dmi differ diff --git a/icons/mob/clothing/underwear/species/underwear_torso_kepori.dmi b/icons/mob/clothing/underwear/species/kepori/underwear_torso_keporiOLD.dmi similarity index 100% rename from icons/mob/clothing/underwear/species/underwear_torso_kepori.dmi rename to icons/mob/clothing/underwear/species/kepori/underwear_torso_keporiOLD.dmi diff --git a/icons/mob/kepori_parts.dmi b/icons/mob/kepori_parts.dmi deleted file mode 100644 index 8f9d7e56043e..000000000000 Binary files a/icons/mob/kepori_parts.dmi and /dev/null differ diff --git a/icons/mob/species/kepori/bodyparts.dmi b/icons/mob/species/kepori/bodyparts.dmi index f19aaeacbe08..058d315d7bd8 100644 Binary files a/icons/mob/species/kepori/bodyparts.dmi and b/icons/mob/species/kepori/bodyparts.dmi differ diff --git a/icons/mob/species/kepori/kepori_eyes.dmi b/icons/mob/species/kepori/kepori_eyes.dmi new file mode 100644 index 000000000000..3e1617315755 Binary files /dev/null and b/icons/mob/species/kepori/kepori_eyes.dmi differ diff --git a/icons/mob/species/kepori/kepori_parts.dmi b/icons/mob/species/kepori/kepori_parts.dmi new file mode 100644 index 000000000000..76d1819c9dd8 Binary files /dev/null and b/icons/mob/species/kepori/kepori_parts.dmi differ diff --git a/icons/mob/species/kepori/onmob_belt_kepori.dmi b/icons/mob/species/kepori/onmob_belt_kepori.dmi index cf74d73796c8..4a5a4ba7b32a 100644 Binary files a/icons/mob/species/kepori/onmob_belt_kepori.dmi and b/icons/mob/species/kepori/onmob_belt_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_belt_keporiOLD.dmi b/icons/mob/species/kepori/onmob_belt_keporiOLD.dmi new file mode 100644 index 000000000000..cf74d73796c8 Binary files /dev/null and b/icons/mob/species/kepori/onmob_belt_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_ears_kepori.dmi b/icons/mob/species/kepori/onmob_ears_kepori.dmi new file mode 100644 index 000000000000..4a5a4ba7b32a Binary files /dev/null and b/icons/mob/species/kepori/onmob_ears_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_eyes_kepori.dmi b/icons/mob/species/kepori/onmob_eyes_kepori.dmi index 2cfe52f4630d..1b6c6f68a3a5 100644 Binary files a/icons/mob/species/kepori/onmob_eyes_kepori.dmi and b/icons/mob/species/kepori/onmob_eyes_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_eyes_keporiOLD.dmi b/icons/mob/species/kepori/onmob_eyes_keporiOLD.dmi new file mode 100644 index 000000000000..2cfe52f4630d Binary files /dev/null and b/icons/mob/species/kepori/onmob_eyes_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_feet_kepori.dmi b/icons/mob/species/kepori/onmob_feet_kepori.dmi index 7af39a1f676d..93bb6ee443d5 100644 Binary files a/icons/mob/species/kepori/onmob_feet_kepori.dmi and b/icons/mob/species/kepori/onmob_feet_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_feet_keporiOLD.dmi b/icons/mob/species/kepori/onmob_feet_keporiOLD.dmi new file mode 100644 index 000000000000..f352a422378a Binary files /dev/null and b/icons/mob/species/kepori/onmob_feet_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_hands_kepori.dmi b/icons/mob/species/kepori/onmob_hands_kepori.dmi index 6dff1607ef57..1cd287411171 100644 Binary files a/icons/mob/species/kepori/onmob_hands_kepori.dmi and b/icons/mob/species/kepori/onmob_hands_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_hands_keporiOLD.dmi b/icons/mob/species/kepori/onmob_hands_keporiOLD.dmi new file mode 100644 index 000000000000..6dff1607ef57 Binary files /dev/null and b/icons/mob/species/kepori/onmob_hands_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_head_kepori.dmi b/icons/mob/species/kepori/onmob_head_kepori.dmi index 4109e981c603..b4631838b75a 100644 Binary files a/icons/mob/species/kepori/onmob_head_kepori.dmi and b/icons/mob/species/kepori/onmob_head_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_head_keporiOLD.dmi b/icons/mob/species/kepori/onmob_head_keporiOLD.dmi new file mode 100644 index 000000000000..31db76896ba2 Binary files /dev/null and b/icons/mob/species/kepori/onmob_head_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_mask_kepori.dmi b/icons/mob/species/kepori/onmob_mask_kepori.dmi index 610c62338c18..d455cf0bd3e5 100644 Binary files a/icons/mob/species/kepori/onmob_mask_kepori.dmi and b/icons/mob/species/kepori/onmob_mask_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_mask_keporiOLD.dmi b/icons/mob/species/kepori/onmob_mask_keporiOLD.dmi new file mode 100644 index 000000000000..610c62338c18 Binary files /dev/null and b/icons/mob/species/kepori/onmob_mask_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_suit_kepori.dmi b/icons/mob/species/kepori/onmob_suit_kepori.dmi index 4d5eaaab1196..6182a9612547 100644 Binary files a/icons/mob/species/kepori/onmob_suit_kepori.dmi and b/icons/mob/species/kepori/onmob_suit_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_suit_keporiOLD.dmi b/icons/mob/species/kepori/onmob_suit_keporiOLD.dmi new file mode 100644 index 000000000000..4d5eaaab1196 Binary files /dev/null and b/icons/mob/species/kepori/onmob_suit_keporiOLD.dmi differ diff --git a/icons/mob/species/kepori/onmob_uniform_kepori.dmi b/icons/mob/species/kepori/onmob_uniform_kepori.dmi index d9bec6e95185..d6f011cef312 100644 Binary files a/icons/mob/species/kepori/onmob_uniform_kepori.dmi and b/icons/mob/species/kepori/onmob_uniform_kepori.dmi differ diff --git a/icons/mob/species/kepori/onmob_uniform_keporiOLD.dmi b/icons/mob/species/kepori/onmob_uniform_keporiOLD.dmi new file mode 100644 index 000000000000..66fa497129f6 Binary files /dev/null and b/icons/mob/species/kepori/onmob_uniform_keporiOLD.dmi differ