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