mirror of
https://github.com/quotefox/Hyper-Station-13.git
synced 2026-07-18 11:12:26 +01:00
cosmetic parts addition
This commit is contained in:
@@ -0,0 +1,22 @@
|
||||
/datum/preferences/proc/hyper_character_pref_load(savefile/S)
|
||||
S["feature_cosmetic_head"] >> features["cosmetic_head"]
|
||||
S["feature_cosmetic_chest"] >> features["cosmetic_chest"]
|
||||
S["feature_cosmetic_l_arm"] >> features["cosmetic_l_arm"]
|
||||
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")
|
||||
|
||||
|
||||
/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"])
|
||||
@@ -0,0 +1,29 @@
|
||||
/*
|
||||
COSMETIC PARTS
|
||||
|
||||
this system allows you to change the _base_ appearance of a limb independent
|
||||
of species or markings. this, for example, allows us to create "hybrids" like a
|
||||
mammal with avian legs.
|
||||
|
||||
keep in mind that this does not change the species of a leg! in the above example,
|
||||
the mammal's bird-legs are still mammal legs. this matters in some places, like
|
||||
body part transplants; mis-matched species will cause extra damage if the surgery
|
||||
fails and the part is rejected. so you can't attach mammal-bird legs to avians
|
||||
safely.
|
||||
*/
|
||||
|
||||
/datum/cosmetic_part
|
||||
var/name
|
||||
var/icon = 'hyperstation/icons/mob/char_parts.dmi'
|
||||
var/icon_state
|
||||
var/support_digitigrade = TRUE
|
||||
|
||||
/datum/cosmetic_part/head
|
||||
/datum/cosmetic_part/chest
|
||||
/datum/cosmetic_part/arms
|
||||
/datum/cosmetic_part/legs
|
||||
|
||||
/datum/cosmetic_part/legs/avian
|
||||
name = "avian"
|
||||
icon = 'modular_citadel/icons/mob/mutant_bodyparts.dmi'
|
||||
icon_state = "avian"
|
||||
@@ -0,0 +1,18 @@
|
||||
/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
|
||||
|
||||
/mob/living/carbon/human/proc/handle_cosmetic_parts()
|
||||
var/features = src.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]
|
||||
if(!istype(cosmetic_pref, /datum/cosmetic_part))
|
||||
continue
|
||||
var/datum/cosmetic_part/part = cosmetic_pref
|
||||
var/obj/item/bodypart/body_part = get_bodypart(zone)
|
||||
if(body_part && part)
|
||||
body_part.apply_cosmetic(part)
|
||||
Reference in New Issue
Block a user