[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:
SkyratBot
2022-04-11 03:40:05 +02:00
committed by GitHub
parent 0df94684c1
commit 3916ea03de
323 changed files with 4790 additions and 8221 deletions
+2 -4
View File
@@ -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.
+3 -4
View File
@@ -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
*/
+1 -1
View File
@@ -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