From 2506263c71db477c9b4143fdb2f3404688cdebc1 Mon Sep 17 00:00:00 2001 From: Raeschen Date: Sun, 5 Sep 2021 12:03:45 +0200 Subject: [PATCH] fix resleever/bioprinter behavior added digitigrade data to dna datum, make organ creation/resleever pull data from said DNA datum regarding digitigrade usage --- code/game/dna/dna2_ch.dm | 14 +++++++++++ .../preference_setup/general/03_body.dm | 12 ++-------- .../preference_setup/general/03_body_ch.dm | 23 ++++++++++++++++++- code/modules/organs/organ_icon_ch.dm | 10 +++++++- code/modules/resleeving/machines_ch.dm | 8 +++++++ vorestation.dme | 2 ++ 6 files changed, 57 insertions(+), 12 deletions(-) create mode 100644 code/game/dna/dna2_ch.dm create mode 100644 code/modules/resleeving/machines_ch.dm diff --git a/code/game/dna/dna2_ch.dm b/code/game/dna/dna2_ch.dm new file mode 100644 index 0000000000..2c68b7a68a --- /dev/null +++ b/code/game/dna/dna2_ch.dm @@ -0,0 +1,14 @@ +/datum/dna + var/digitigrade = 0 + +/datum/dna/Clone() + . = ..() + //Data for inclusion of digitigrade leg settings in DNA + var/datum/dna/new_dna = . + new_dna.digitigrade = digitigrade + return new_dna + +/datum/dna/ResetUIFrom(var/mob/living/carbon/human/character) + //inclusion of digitigrade + src.digitigrade = character.digitigrade + . = ..() \ No newline at end of file diff --git a/code/modules/client/preference_setup/general/03_body.dm b/code/modules/client/preference_setup/general/03_body.dm index 24cce787f6..a127575fe9 100644 --- a/code/modules/client/preference_setup/general/03_body.dm +++ b/code/modules/client/preference_setup/general/03_body.dm @@ -150,7 +150,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["r_wing3"] >> pref.r_wing3 S["g_wing3"] >> pref.g_wing3 S["b_wing3"] >> pref.b_wing3 - S["digitigrade"] >> pref.digitigrade //CHOMPEdit /datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) S["species"] << pref.species @@ -221,7 +220,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O S["r_wing3"] << pref.r_wing3 S["g_wing3"] << pref.g_wing3 S["b_wing3"] << pref.b_wing3 - S["digitigrade"] << pref.digitigrade //CHOMPEdit /datum/category_item/player_setup_item/general/body/sanitize_character(var/savefile/S) if(!pref.species || !(pref.species in GLOB.playable_species)) @@ -581,14 +579,14 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O if(has_flag(mob_species, HAS_SKIN_COLOR)) . += "
Body Color
" . += "Change Color [color_square(pref.r_skin, pref.g_skin, pref.b_skin)]
" + + . += "

Genetics Settings

" //CHOMPEdit START if(mob_species.digi_allowed) . += "
Digitigrade?: [pref.digitigrade ? "Yes" : "No"]
" //CHOMPEdit END - . += "

Genetics Settings

" - var/list/ear_styles = pref.get_available_styles(global.ear_styles_list) var/datum/sprite_accessory/ears/ear = ear_styles[pref.ear_style] . += "Ears
" @@ -1297,12 +1295,6 @@ var/global/list/valid_bloodtypes = list("A+", "A-", "B+", "B-", "AB+", "AB-", "O pref.g_wing3 = hex2num(copytext(new_wingc3, 4, 6)) pref.b_wing3 = hex2num(copytext(new_wingc3, 6, 8)) return TOPIC_REFRESH_UPDATE_PREVIEW - - //CHOMPEdit START - else if(href_list["digitigrade"]) - pref.digitigrade = !pref.digitigrade - return TOPIC_REFRESH_UPDATE_PREVIEW - //CHOMPEdit END return ..() /datum/category_item/player_setup_item/general/body/proc/reset_limbs() diff --git a/code/modules/client/preference_setup/general/03_body_ch.dm b/code/modules/client/preference_setup/general/03_body_ch.dm index 809a621836..3e2441bc6a 100644 --- a/code/modules/client/preference_setup/general/03_body_ch.dm +++ b/code/modules/client/preference_setup/general/03_body_ch.dm @@ -1,6 +1,27 @@ +// Chomp additions to character load/save logic +// /datum/category_item/player_setup_item/general/body/content cannot be overridden here due to requiring being a cleaned list + + /datum/category_item/player_setup_item/general/body/copy_to_mob(var/mob/living/carbon/human/character) . = ..() if(character.species.digi_allowed) character.digitigrade = pref.digitigrade else - character.digitigrade = FALSE \ No newline at end of file + character.digitigrade = FALSE + +/datum/category_item/player_setup_item/general/body/OnTopic(var/href,var/list/href_list, var/mob/user) + if(href_list["digitigrade"]) + pref.digitigrade = !pref.digitigrade + + return TOPIC_REFRESH_UPDATE_PREVIEW + . = ..() + +// Savefile additions +// Be careful here +/datum/category_item/player_setup_item/general/body/load_character(var/savefile/S) + . = ..() + S["digitigrade"] >> pref.digitigrade //CHOMPEdit + +/datum/category_item/player_setup_item/general/body/save_character(var/savefile/S) + . = ..() + S["digitigrade"] << pref.digitigrade //CHOMPEdit \ No newline at end of file diff --git a/code/modules/organs/organ_icon_ch.dm b/code/modules/organs/organ_icon_ch.dm index 9bdc1a1f50..ed176936e8 100644 --- a/code/modules/organs/organ_icon_ch.dm +++ b/code/modules/organs/organ_icon_ch.dm @@ -7,7 +7,15 @@ // - once done, reset icobase & markings to default values from temp storage vars /obj/item/organ/external/get_icon(var/skeletal) - if( owner.digitigrade && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) + var/digitigrade = 0 + + // preferentially take digitigrade value from owner if available, THEN DNA. + if(owner) + digitigrade = owner.digitigrade + else + digitigrade = dna.digitigrade + + if( digitigrade && ( istype(src,/obj/item/organ/external/leg) || istype(src,/obj/item/organ/external/foot) ) ) var/IB = species.icobase var/list/markingsTmp = markings diff --git a/code/modules/resleeving/machines_ch.dm b/code/modules/resleeving/machines_ch.dm new file mode 100644 index 0000000000..1db956739a --- /dev/null +++ b/code/modules/resleeving/machines_ch.dm @@ -0,0 +1,8 @@ +/obj/machinery/clonepod/transhuman/growclone(var/datum/transhuman/body_record/current_project) + . = ..() + //Extra clonepod behavior + var/mob/living/carbon/human/H = occupant + var/datum/dna2/record/R = current_project.mydna + + H.digitigrade = R.dna.digitigrade + H.update_icons_body() \ No newline at end of file diff --git a/vorestation.dme b/vorestation.dme index 85225bf3c6..a80070c80e 100644 --- a/vorestation.dme +++ b/vorestation.dme @@ -605,6 +605,7 @@ #include "code\game\area\Space Station 13 areas_vr.dm" #include "code\game\area\ss13_deprecated_areas.dm" #include "code\game\dna\dna2.dm" +#include "code\game\dna\dna2_ch.dm" #include "code\game\dna\dna2_domutcheck.dm" #include "code\game\dna\dna2_helpers.dm" #include "code\game\dna\dna_modifier.dm" @@ -3968,6 +3969,7 @@ #include "code\modules\resleeving\infomorph.dm" #include "code\modules\resleeving\infomorph_software.dm" #include "code\modules\resleeving\machines.dm" +#include "code\modules\resleeving\machines_ch.dm" #include "code\modules\resleeving\machines_vr.dm" #include "code\modules\resleeving\sleevecard.dm" #include "code\modules\rogueminer_vr\asteroid.dm"