cosmetic parts are working

This commit is contained in:
sarcoph
2022-05-12 01:11:12 -08:00
parent bf112ac42f
commit f4cd08e82e
11 changed files with 239 additions and 57 deletions
@@ -5,18 +5,30 @@
S["feature_cosmetic_r_arm"] >> features["cosmetic_r_arm"]
S["feature_cosmetic_l_leg"] >> features["cosmetic_l_leg"]
S["feature_cosmetic_r_leg"] >> features["cosmetic_r_leg"]
features["cosmetic_head"] = sanitize_inlist(features["cosmetic_head"], GLOB.cosmetic_head, "default")
features["cosmetic_chest"] = sanitize_inlist(features["cosmetic_chest"], GLOB.cosmetic_chest, "default")
features["cosmetic_l_arm"] = sanitize_inlist(features["cosmetic_l_arm"], GLOB.cosmetic_arms, "default")
features["cosmetic_r_arm"] = sanitize_inlist(features["cosmetic_r_arm"], GLOB.cosmetic_arms, "default")
features["cosmetic_l_leg"] = sanitize_inlist(features["cosmetic_l_leg"], GLOB.cosmetic_legs, "default")
features["cosmetic_r_leg"] = sanitize_inlist(features["cosmetic_r_leg"], GLOB.cosmetic_legs, "default")
var/cosmetic_head = sanitize_inlist(features["cosmetic_head"], GLOB.cosmetic_heads, "default")
var/cosmetic_chest = sanitize_inlist(features["cosmetic_chest"], GLOB.cosmetic_chests, "default")
var/cosmetic_l_arm = sanitize_inlist(features["cosmetic_l_arm"], GLOB.cosmetic_arms, "default")
var/cosmetic_r_arm = sanitize_inlist(features["cosmetic_r_arm"], GLOB.cosmetic_arms, "default")
var/cosmetic_l_leg = sanitize_inlist(features["cosmetic_l_leg"], GLOB.cosmetic_legs, "default")
var/cosmetic_r_leg = sanitize_inlist(features["cosmetic_r_leg"], GLOB.cosmetic_legs, "default")
features["cosmetic_head"] = GLOB.cosmetic_heads[cosmetic_head]
features["cosmetic_chest"] = GLOB.cosmetic_chests[cosmetic_chest]
features["cosmetic_l_arm"] = GLOB.cosmetic_arms[cosmetic_l_arm]
features["cosmetic_r_arm"] = GLOB.cosmetic_arms[cosmetic_r_arm]
features["cosmetic_l_leg"] = GLOB.cosmetic_legs[cosmetic_l_leg]
features["cosmetic_r_leg"] = GLOB.cosmetic_legs[cosmetic_r_leg]
/datum/preferences/proc/hyper_character_pref_save(savefile/S)
WRITE_FILE(S["feature_cosmetic_head"], features["cosmetic_head"])
WRITE_FILE(S["feature_cosmetic_chest"], features["cosmetic_chest"])
WRITE_FILE(S["feature_cosmetic_l_arm"], features["cosmetic_l_arm"])
WRITE_FILE(S["feature_cosmetic_r_arm"], features["cosmetic_r_arm"])
WRITE_FILE(S["feature_cosmetic_l_leg"], features["cosmetic_l_leg"])
WRITE_FILE(S["feature_cosmetic_r_leg"], features["cosmetic_r_leg"])
var/datum/cosmetic_part/head = features["cosmetic_head"]
var/datum/cosmetic_part/chest = features["cosmetic_chest"]
var/datum/cosmetic_part/l_arm = features["cosmetic_l_arm"]
var/datum/cosmetic_part/r_arm = features["cosmetic_r_arm"]
var/datum/cosmetic_part/l_leg = features["cosmetic_l_leg"]
var/datum/cosmetic_part/r_leg = features["cosmetic_r_leg"]
WRITE_FILE(S["feature_cosmetic_head"], head.name)
WRITE_FILE(S["feature_cosmetic_chest"], chest.name)
WRITE_FILE(S["feature_cosmetic_l_arm"], l_arm.name)
WRITE_FILE(S["feature_cosmetic_r_arm"], r_arm.name)
WRITE_FILE(S["feature_cosmetic_l_leg"], l_leg.name)
WRITE_FILE(S["feature_cosmetic_r_leg"], r_leg.name)
@@ -12,18 +12,40 @@ fails and the part is rejected. so you can't attach mammal-bird legs to avians
safely.
*/
#define COSMETIC_BASIC_SPECIES = list("mammal", "avian", "aquatic", "insect", "xeno", "synthliz")
/datum/cosmetic_part
var/name
var/icon = 'hyperstation/icons/mob/char_parts.dmi'
var/icon_state
var/support_digitigrade = TRUE
var/list/supported_species
/datum/cosmetic_part/head
/datum/cosmetic_part/chest
/datum/cosmetic_part/arms
/datum/cosmetic_part/legs
/datum/cosmetic_part/head/default
name = "default"
icon = null
/datum/cosmetic_part/chest/default
name = "default"
icon = null
/datum/cosmetic_part/arms/default
name = "default"
icon = null
/datum/cosmetic_part/legs/default
name = "default"
icon = null
/datum/cosmetic_part/legs/avian
name = "avian"
icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
icon_state = "avian"
icon_state = "avian"
supported_species = COSMETIC_BASIC_SPECIES
support_digitigrade = FALSE
@@ -1,15 +1,14 @@
/obj/item/bodypart/proc/apply_cosmetic(datum/cosmetic_part/part)
if(!is_organic_limb() || animal_origin || !part)
return
cosmetic_icon = part.icon_state
icon = part.icon
cosmetic_icon = part
/mob/living/carbon/human/proc/handle_cosmetic_parts()
var/features = src.dna.features
var/features = dna.features
var/list/body_zones = list(BODY_ZONE_HEAD, BODY_ZONE_CHEST, BODY_ZONE_L_ARM, BODY_ZONE_R_ARM, BODY_ZONE_L_LEG, BODY_ZONE_R_LEG)
for(var/I in body_zones)
var/zone = body_zones[I]
var/cosmetic_pref = features["cosmetic_" + zone]
for(var/zone in body_zones)
var/datum/cosmetic_part/cosmetic_pref = features["cosmetic_" + zone]
if(!istype(cosmetic_pref, /datum/cosmetic_part))
continue
var/datum/cosmetic_part/part = cosmetic_pref