mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-07-18 19:44:58 +01:00
[MIRROR] Kapulimbs [MDB IGNORE] (#12497)
* Kapulimbs * conflicts * part one of fixes * more fex * ugh * more fix * eee * e * more fix * Well it compiles, but we need to get digi legs working * more fixes * https://github.com/tgstation/tgstation/pull/65887 * https://github.com/tgstation/tgstation/pull/65904 * https://github.com/tgstation/tgstation/pull/65923 * more fix * now uses dna specific icon overrides. * species code no longer dictates what icon the limbs use * digitigrade legs implemenation * more fixes, species indexing, species bodyparts * remaining mutant bois * 0 * okay this work! * IPC stuffs * inv file uses * optimisation and limb string rendering digitigrade stuff * wew * partial vox support * bodymarkings are now stored on the bodypart * limb key caching * Update carbon_update_icons.dm * Update carbon_update_icons.dm * Moves our mutant variance to the new system and makes shoes squash. * all legs do it * https://github.com/tgstation/tgstation/pull/65918 * https://github.com/tgstation/tgstation/pull/65899 * https://github.com/tgstation/tgstation/pull/65990 * teshari bodytype * them teshari's aren't humans * bandaid for future proper teshari implementation * Update vox_bodyparts.dm * fixes chests and teshari implementation * fixes * fex * Update mutant_zombie_bodyparts.dm * oops * Update synthetic_lizard_bodyparts.dm * Update code/modules/mob/living/carbon/human/human_update_icons.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/human_update_icons.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/human_update_icons.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/ghoul_bodyparts.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/ghoul_bodyparts.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/ghoul_bodyparts.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update modular_skyrat/master_files/code/modules/surgery/bodyparts/species_parts/ghoul_bodyparts.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update code/modules/mob/living/carbon/human/species.dm Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com> * Update scissors.dm * wound stuff * Update carbon_examine.dm * more stuff * Delete human_update_icons.dm * begone thot * https://github.com/tgstation/tgstation/pull/66065 * Update _external_organs.dm Co-authored-by: Kapu1178 <75460809+Kapu1178@users.noreply.github.com> Co-authored-by: Gandalf <9026500+Gandalf2k15@users.noreply.github.com> Co-authored-by: GoldenAlpharex <58045821+GoldenAlpharex@users.noreply.github.com>
This commit is contained in:
@@ -566,10 +566,8 @@ INITIALIZE_IMMEDIATE(/atom/movable/screen/character_preview_view)
|
||||
character.dna.real_name = character.real_name
|
||||
|
||||
if(icon_updates)
|
||||
character.icon_render_key = null //turns out if you don't set this to null update_body_parts does nothing, since it assumes the operation was cached
|
||||
character.update_body()
|
||||
character.update_hair()
|
||||
character.update_body_parts()
|
||||
character.icon_render_keys = list()
|
||||
character.update_body(is_creating = TRUE)
|
||||
|
||||
|
||||
/// Returns whether the parent mob should have the random hardcore settings enabled. Assumes it has a mind.
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
#define USE_GENDER "Use gender"
|
||||
|
||||
/datum/preference/choiced/body_type
|
||||
@@ -15,9 +14,9 @@
|
||||
|
||||
/datum/preference/choiced/body_type/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if (value == USE_GENDER)
|
||||
target.body_type = target.gender
|
||||
target.physique = target.gender
|
||||
else
|
||||
target.body_type = value
|
||||
target.physique = value
|
||||
|
||||
/datum/preference/choiced/body_type/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
@@ -27,4 +26,4 @@
|
||||
return initial(species.sexes)
|
||||
|
||||
#undef USE_GENDER
|
||||
*/
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@
|
||||
randomize_by_default = FALSE
|
||||
|
||||
/datum/preference/choiced/species/deserialize(input, datum/preferences/preferences)
|
||||
return GLOB.species_list[sanitize_inlist(input, get_choices_serialized(), "human")]
|
||||
return GLOB.species_list[sanitize_inlist(input, get_choices_serialized(), SPECIES_HUMAN)]
|
||||
|
||||
/datum/preference/choiced/species/serialize(input)
|
||||
var/datum/species/species = input
|
||||
|
||||
@@ -53,6 +53,7 @@
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.facial_hairstyle = value
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/choiced/facial_hairstyle/compile_constant_data()
|
||||
var/list/data = ..()
|
||||
@@ -69,6 +70,7 @@
|
||||
|
||||
/datum/preference/color/facial_hair_color/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.facial_hair_color = value
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/choiced/facial_hair_gradient
|
||||
category = PREFERENCE_CATEGORY_SECONDARY_FEATURES
|
||||
@@ -82,7 +84,7 @@
|
||||
/datum/preference/choiced/facial_hair_gradient/apply_to_human(mob/living/carbon/human/target, value)
|
||||
LAZYSETLEN(target.grad_style, GRADIENTS_LEN)
|
||||
target.grad_style[GRADIENT_FACIAL_HAIR_KEY] = value
|
||||
target.update_hair()
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/choiced/facial_hair_gradient/create_default_value()
|
||||
return "None"
|
||||
@@ -96,7 +98,7 @@
|
||||
/datum/preference/color/facial_hair_gradient/apply_to_human(mob/living/carbon/human/target, value)
|
||||
LAZYSETLEN(target.grad_color, GRADIENTS_LEN)
|
||||
target.grad_color[GRADIENT_FACIAL_HAIR_KEY] = value
|
||||
target.update_hair()
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/color/facial_hair_gradient/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
@@ -145,7 +147,7 @@
|
||||
/datum/preference/choiced/hair_gradient/apply_to_human(mob/living/carbon/human/target, value)
|
||||
LAZYSETLEN(target.grad_style, GRADIENTS_LEN)
|
||||
target.grad_style[GRADIENT_HAIR_KEY] = value
|
||||
target.update_hair()
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/choiced/hair_gradient/create_default_value()
|
||||
return "None"
|
||||
@@ -159,7 +161,7 @@
|
||||
/datum/preference/color/hair_gradient/apply_to_human(mob/living/carbon/human/target, value)
|
||||
LAZYSETLEN(target.grad_color, GRADIENTS_LEN)
|
||||
target.grad_color[GRADIENT_HAIR_KEY] = value
|
||||
target.update_hair()
|
||||
target.update_hair(is_creating = TRUE)
|
||||
|
||||
/datum/preference/color/hair_gradient/is_accessible(datum/preferences/preferences)
|
||||
if (!..(preferences))
|
||||
|
||||
@@ -8,10 +8,10 @@
|
||||
/datum/preference/choiced/ethereal_color/init_possible_values()
|
||||
var/list/values = list()
|
||||
|
||||
var/icon/ethereal_base = icon('icons/mob/human_parts_greyscale.dmi', "ethereal_head_m")
|
||||
ethereal_base.Blend(icon('icons/mob/human_parts_greyscale.dmi', "ethereal_chest_m"), ICON_OVERLAY)
|
||||
ethereal_base.Blend(icon('icons/mob/human_parts_greyscale.dmi', "ethereal_l_arm"), ICON_OVERLAY)
|
||||
ethereal_base.Blend(icon('icons/mob/human_parts_greyscale.dmi', "ethereal_r_arm"), ICON_OVERLAY)
|
||||
var/icon/ethereal_base = icon('icons/mob/species/ethereal/bodyparts.dmi', "ethereal_head")
|
||||
ethereal_base.Blend(icon('icons/mob/species/ethereal/bodyparts.dmi', "ethereal_chest"), ICON_OVERLAY)
|
||||
ethereal_base.Blend(icon('icons/mob/species/ethereal/bodyparts.dmi', "ethereal_l_arm"), ICON_OVERLAY)
|
||||
ethereal_base.Blend(icon('icons/mob/species/ethereal/bodyparts.dmi', "ethereal_r_arm"), ICON_OVERLAY)
|
||||
|
||||
var/icon/eyes = icon('icons/mob/human_face.dmi', "eyes")
|
||||
eyes.Blend(COLOR_BLACK, ICON_MULTIPLY)
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
/*
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
/proc/generate_lizard_side_shots(list/sprite_accessories, key, include_snout = TRUE)
|
||||
var/list/values = list()
|
||||
|
||||
var/icon/lizard = icon('icons/mob/human_parts_greyscale.dmi', "lizard_head_m", EAST)
|
||||
|
||||
var/icon/lizard = icon('icons/mob/species/lizard/bodyparts.dmi', "lizard_head", EAST)
|
||||
var/icon/eyes = icon('icons/mob/human_face.dmi', "eyes", EAST)
|
||||
eyes.Blend(COLOR_GRAY, ICON_MULTIPLY)
|
||||
lizard.Blend(eyes, ICON_OVERLAY)
|
||||
@@ -39,10 +38,10 @@
|
||||
/datum/preference/choiced/lizard_body_markings/init_possible_values()
|
||||
var/list/values = list()
|
||||
|
||||
var/icon/lizard = icon('icons/mob/human_parts_greyscale.dmi', "lizard_chest_m")
|
||||
var/icon/lizard = icon('icons/mob/species/lizard/bodyparts.dmi', "lizard_chest_m")
|
||||
|
||||
for (var/name in GLOB.sprite_accessories["body_markings"]) //SKYRAT EDIT
|
||||
var/datum/sprite_accessory/sprite_accessory = GLOB.sprite_accessories["body_markings"][name] //SKYRAT EDIT
|
||||
for (var/name in GLOB.body_markings_list)
|
||||
var/datum/sprite_accessory/sprite_accessory = GLOB.body_markings_list[name]
|
||||
|
||||
var/icon/final_icon = icon(lizard)
|
||||
|
||||
@@ -64,10 +63,7 @@
|
||||
return values
|
||||
|
||||
/datum/preference/choiced/lizard_body_markings/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.mutant_bodyparts["body_markings"])
|
||||
target.dna.mutant_bodyparts["body_markings"] = list()
|
||||
target.dna.mutant_bodyparts["body_markings"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.mutant_bodyparts["body_markings"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["body_markings"] = value
|
||||
|
||||
/datum/preference/choiced/lizard_frills
|
||||
savefile_key = "feature_lizard_frills"
|
||||
@@ -77,13 +73,10 @@
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/lizard_frills/init_possible_values()
|
||||
return generate_lizard_side_shots(GLOB.sprite_accessories["frills"], "frills") //SKYRAT EDIT
|
||||
return generate_lizard_side_shots(GLOB.frills_list, "frills")
|
||||
|
||||
/datum/preference/choiced/lizard_frills/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.species.mutant_bodyparts["frills"])
|
||||
target.dna.species.mutant_bodyparts["frills"] = list()
|
||||
target.dna.species.mutant_bodyparts["frills"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.species.mutant_bodyparts["frills"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["frills"] = value
|
||||
|
||||
/datum/preference/choiced/lizard_horns
|
||||
savefile_key = "feature_lizard_horns"
|
||||
@@ -93,15 +86,11 @@
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/lizard_horns/init_possible_values()
|
||||
return generate_lizard_side_shots(GLOB.sprite_accessories["horns"], "horns") //SKYRAT EDIT
|
||||
return generate_lizard_side_shots(GLOB.horns_list, "horns")
|
||||
|
||||
/datum/preference/choiced/lizard_horns/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.species.mutant_bodyparts["horns"])
|
||||
target.dna.species.mutant_bodyparts["horns"] = list()
|
||||
target.dna.species.mutant_bodyparts["horns"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.species.mutant_bodyparts["horns"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["horns"] = value
|
||||
|
||||
/* SKYRAT EDIT REMOVAL
|
||||
/datum/preference/choiced/lizard_legs
|
||||
savefile_key = "feature_lizard_legs"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
@@ -109,27 +98,23 @@
|
||||
relevant_mutant_bodypart = "legs"
|
||||
|
||||
/datum/preference/choiced/lizard_legs/init_possible_values()
|
||||
return GLOB.sprite_accessories["legs"] //SKYRAT EDIT CHANGE
|
||||
return assoc_to_keys(GLOB.legs_list)
|
||||
|
||||
/datum/preference/choiced/lizard_legs/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.dna.features["legs"] = value
|
||||
*/
|
||||
|
||||
/datum/preference/choiced/lizard_snout
|
||||
savefile_key = "feature_lizrd_snout"
|
||||
savefile_key = "feature_lizard_snout"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
category = PREFERENCE_CATEGORY_FEATURES
|
||||
main_feature_name = "Snout"
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/lizard_snout/init_possible_values()
|
||||
return generate_lizard_side_shots(GLOB.sprite_accessories["snout"], "snout", include_snout = FALSE) //SKYRAT EDIT
|
||||
return generate_lizard_side_shots(GLOB.snouts_list, "snout", include_snout = FALSE)
|
||||
|
||||
/datum/preference/choiced/lizard_snout/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.species.mutant_bodyparts["snout"])
|
||||
target.dna.species.mutant_bodyparts["snout"] = list()
|
||||
target.dna.species.mutant_bodyparts["snout"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.species.mutant_bodyparts["snout"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["snout"] = value
|
||||
|
||||
/datum/preference/choiced/lizard_spines
|
||||
savefile_key = "feature_lizard_spines"
|
||||
@@ -138,13 +123,10 @@
|
||||
relevant_mutant_bodypart = "spines"
|
||||
|
||||
/datum/preference/choiced/lizard_spines/init_possible_values()
|
||||
return GLOB.sprite_accessories["spines"] //SKYRAT EDIT
|
||||
return assoc_to_keys(GLOB.spines_list)
|
||||
|
||||
/datum/preference/choiced/lizard_spines/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.species.mutant_bodyparts["spines"])
|
||||
target.dna.species.mutant_bodyparts["spines"] = list()
|
||||
target.dna.species.mutant_bodyparts["spines"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.species.mutant_bodyparts["spines"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["spines"] = value
|
||||
|
||||
/datum/preference/choiced/lizard_tail
|
||||
savefile_key = "feature_lizard_tail"
|
||||
@@ -153,11 +135,8 @@
|
||||
relevant_mutant_bodypart = "tail_lizard"
|
||||
|
||||
/datum/preference/choiced/lizard_tail/init_possible_values()
|
||||
return GLOB.sprite_accessories["tail"] //SKYRAT EDIT
|
||||
return assoc_to_keys(GLOB.tails_list_lizard)
|
||||
|
||||
/datum/preference/choiced/lizard_tail/apply_to_human(mob/living/carbon/human/target, value)
|
||||
if(!target.dna.species.mutant_bodyparts["tail"])
|
||||
target.dna.species.mutant_bodyparts["tail"] = list()
|
||||
target.dna.species.mutant_bodyparts["tail"][MUTANT_INDEX_NAME] = value
|
||||
target.dna.species.mutant_bodyparts["tail"][MUTANT_INDEX_COLOR_LIST] = list("333", "222", "444")
|
||||
target.dna.features["tail_lizard"] = value
|
||||
*/
|
||||
|
||||
@@ -9,11 +9,11 @@
|
||||
/datum/preference/choiced/moth_antennae/init_possible_values()
|
||||
var/list/values = list()
|
||||
|
||||
var/icon/moth_head = icon('icons/mob/human_parts.dmi', "moth_head_m")
|
||||
var/icon/moth_head = icon('icons/mob/species/moth/bodyparts.dmi', "moth_head")
|
||||
moth_head.Blend(icon('icons/mob/human_face.dmi', "motheyes"), ICON_OVERLAY)
|
||||
|
||||
for (var/antennae_name in GLOB.sprite_accessories["moth_antennae"]) //SKYRAT EDIT
|
||||
var/datum/sprite_accessory/antennae = GLOB.sprite_accessories["moth_antennae"][antennae_name] //SKYRAT EDIT
|
||||
for (var/antennae_name in GLOB.moth_antennae_list)
|
||||
var/datum/sprite_accessory/antennae = GLOB.moth_antennae_list[antennae_name]
|
||||
|
||||
var/icon/icon_with_antennae = new(moth_head)
|
||||
icon_with_antennae.Blend(icon(antennae.icon, "m_moth_antennae_[antennae.icon_state]_FRONT"), ICON_OVERLAY)
|
||||
@@ -43,20 +43,20 @@
|
||||
moth_body.Blend(icon('icons/mob/moth_wings.dmi', "m_moth_wings_plain_BEHIND"), ICON_OVERLAY)
|
||||
|
||||
var/list/body_parts = list(
|
||||
BODY_ZONE_HEAD,
|
||||
BODY_ZONE_CHEST,
|
||||
BODY_ZONE_L_ARM,
|
||||
BODY_ZONE_R_ARM,
|
||||
/obj/item/bodypart/head/moth,
|
||||
/obj/item/bodypart/chest/moth,
|
||||
/obj/item/bodypart/l_arm/moth,
|
||||
/obj/item/bodypart/r_arm/moth,
|
||||
)
|
||||
|
||||
for (var/body_part in body_parts)
|
||||
var/gender = (body_part == "chest" || body_part == "head") ? "_m" : ""
|
||||
moth_body.Blend(icon('icons/mob/human_parts.dmi', "moth_[body_part][gender]"), ICON_OVERLAY)
|
||||
for (var/obj/item/bodypart/body_part in body_parts)
|
||||
var/gender = (initial(body_part.is_dimorphic)) ? "_m" : ""
|
||||
moth_body.Blend(icon('icons/mob/species/moth/bodyparts.dmi', "moth_[body_part][gender]"), ICON_OVERLAY)
|
||||
|
||||
moth_body.Blend(icon('icons/mob/human_face.dmi', "motheyes"), ICON_OVERLAY)
|
||||
|
||||
for (var/markings_name in GLOB.sprite_accessories["moth_markings"]) //SKYRAT EDIT
|
||||
var/datum/sprite_accessory/markings = GLOB.sprite_accessories["moth_markings"][markings_name] //SKYRAT EDIT
|
||||
for (var/markings_name in GLOB.moth_markings_list)
|
||||
var/datum/sprite_accessory/markings = GLOB.moth_markings_list[markings_name]
|
||||
var/icon/icon_with_markings = new(moth_body)
|
||||
|
||||
if (markings_name != "None")
|
||||
@@ -79,7 +79,6 @@
|
||||
/datum/preference/choiced/moth_markings/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.dna.features["moth_markings"] = value
|
||||
|
||||
|
||||
/datum/preference/choiced/moth_wings
|
||||
savefile_key = "feature_moth_wings"
|
||||
savefile_identifier = PREFERENCE_CHARACTER
|
||||
@@ -88,7 +87,11 @@
|
||||
should_generate_icons = TRUE
|
||||
|
||||
/datum/preference/choiced/moth_wings/init_possible_values()
|
||||
var/list/icon/values = possible_values_for_sprite_accessory_list_for_body_part(GLOB.sprite_accessories["moth_wings"]) //SKYRAT EDIT
|
||||
var/list/icon/values = possible_values_for_sprite_accessory_list_for_body_part(
|
||||
GLOB.moth_wings_list,
|
||||
"moth_wings",
|
||||
list("BEHIND", "FRONT"),
|
||||
)
|
||||
|
||||
// Moth wings are in a stupid dimension
|
||||
for (var/name in values)
|
||||
@@ -98,4 +101,5 @@
|
||||
|
||||
/datum/preference/choiced/moth_wings/apply_to_human(mob/living/carbon/human/target, value)
|
||||
target.dna.features["moth_wings"] = value
|
||||
|
||||
*/
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
/datum/preference/choiced/pod_hair/init_possible_values()
|
||||
var/list/values = list()
|
||||
|
||||
var/icon/pod_head = icon('icons/mob/human_parts.dmi', "pod_head_m")
|
||||
var/icon/pod_head = icon('icons/mob/human_parts_greyscale.dmi', "pod_head_m")
|
||||
|
||||
for (var/pod_name in GLOB.pod_hair_list)
|
||||
var/datum/sprite_accessory/pod_hair = GLOB.pod_hair_list[pod_name]
|
||||
@@ -20,6 +20,7 @@
|
||||
icon_with_hair.Blend(icon_adj, ICON_OVERLAY)
|
||||
icon_with_hair.Scale(64, 64)
|
||||
icon_with_hair.Crop(15, 64, 15 + 31, 64 - 31)
|
||||
icon_with_hair.Blend(COLOR_GREEN, ICON_MULTIPLY)
|
||||
|
||||
values[pod_hair.name] = icon_with_hair
|
||||
|
||||
|
||||
Reference in New Issue
Block a user