diff --git a/code/game/machinery/limbgrower.dm b/code/game/machinery/limbgrower.dm index 68270b11bf..8014582eb0 100644 --- a/code/game/machinery/limbgrower.dm +++ b/code/game/machinery/limbgrower.dm @@ -129,10 +129,13 @@ if(ispath(user_item.type, /obj/item/reagent_containers/blood) && user.a_intent != INTENT_HARM) var/obj/item/reagent_containers/blood/B = user_item if(!B.reagents.get_reagents()) - to_chat(user, "You can't fill the [src] with a empty [B]!") + to_chat(user, "You can't fill [src] with a empty [B.name]!") return - user.visible_message("[user] drains the [user_item] into the [src] using the blood bag port on [src].", - "You drain the [user_item] into the [src] using the blood bag port.") + if(reagents.total_volume == reagents.maximum_volume) + to_chat(user, "\The [src] can't hold more blood!") + return + user.visible_message("[user] drains the [user_item] into [src] using the blood bag port on [src].", + "You drain the [user_item] into [src] using the blood bag port.") B.reagents.trans_to(src, B.amount_per_transfer_from_this) return @@ -335,13 +338,21 @@ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) visible_message(src, "Buzzes, a error screen appearing on it's display.") return FALSE - var/dna = dna_disk?.genetic_makeup_buffer["name"] + // Fields is from cloning, a much fuller scan, genetic_makeup_buffer is less so + var/dna_genetics = dna_disk?.genetic_makeup_buffer + var/dna_cloning = dna_disk?.fields + var/datum/species/selected = GLOB.species_datums[selected_category] var/mob/living/carbon/human/chestonly/C = new(loc) - if(dna) - C.real_name = dna + C.real_name = length(dna_genetics) ? dna_genetics["name"] : "Synthetic Humanoid #[rand(10000, 99999)]" + if(length(dna_cloning)) + C.hardset_dna(dna_cloning["UI"], dna_cloning["SE"], dna_cloning["name"], dna_cloning["blood_type"], dna_cloning["mrace"], dna_cloning["features"]) + else if(length(dna_genetics)) + C.hardset_dna(dna_genetics["UI"], null, dna_genetics["name"], dna_genetics["blood_type"]) else - C.dna.nameless = TRUE C.real_name = "Synthetic Humanoid #[rand(10000, 99999)]" + C.hair_style = "bald" + C.skin_tone = "albino" + C.set_species(selected) C.set_resting(TRUE, TRUE) C.stat = DEAD C.adjustOxyLoss(200) @@ -352,8 +363,7 @@ C.undershirt = "Nude" C.saved_underwear = "" C.saved_undershirt = "" - C.hair_style = "bald" - C.skin_tone = "albino" + // Just enough to start reviving them, I hope C.blood_volume = BLOOD_VOLUME_SURVIVE // At some point, make a way to deal with species regenerate_organs @@ -361,7 +371,9 @@ for(var/organ in C.internal_organs) var/obj/item/organ/O = organ O.Remove(organ) - + C.update_body(TRUE) + C.update_hair() + C.update_body_parts() C.update_appearance() return TRUE diff --git a/code/modules/research/designs/limbgrower_designs.dm b/code/modules/research/designs/limbgrower_designs.dm index 39bba19176..e30cdfb5ef 100644 --- a/code/modules/research/designs/limbgrower_designs.dm +++ b/code/modules/research/designs/limbgrower_designs.dm @@ -6,6 +6,9 @@ /datum/design/chestmob name = "Synthetic Humanoid Framework Chest" id = "chestmob" + // Mobs don't make very good roundstart icons + research_icon = 'icons/mob/human_parts.dmi' + research_icon_state = "default_human_chest" build_type = LIMBGROWER reagents_list = list(/datum/reagent/medicine/synthflesh = 100, /datum/reagent/blood = BLOOD_VOLUME_SURVIVE) build_path = /mob/living/carbon/human/chestonly diff --git a/tgui/packages/tgui/interfaces/Limbgrower.js b/tgui/packages/tgui/interfaces/Limbgrower.js index 004137782e..75b98f0d81 100644 --- a/tgui/packages/tgui/interfaces/Limbgrower.js +++ b/tgui/packages/tgui/interfaces/Limbgrower.js @@ -47,14 +47,10 @@ export const Limbgrower = (props, context) => {
- {!!total_reagents && max_reagents - ? ( -

- {`Total Reagents/Maximum Reagents: - ${total_reagents}/${max_reagents}`} -

- ) - : null} + {/* Total_reagents could be null or undefined, so let's be safe */ + `Total Reagents/Maximum Reagents: + ${total_reagents ? total_reagents : 0}/${max_reagents}` + }