From c6bc96741a25f0b19691340c6df886f537773a08 Mon Sep 17 00:00:00 2001 From: Atermonera Date: Sun, 20 Oct 2019 13:54:59 -0800 Subject: [PATCH] DNA Records transfer descriptors and gender (#6479) --- code/game/dna/dna_modifier.dm | 25 ++++++++++++++++++++++--- code/game/machinery/cloning.dm | 2 ++ 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/code/game/dna/dna_modifier.dm b/code/game/dna/dna_modifier.dm index 998b712828..1fe5d43a59 100644 --- a/code/game/dna/dna_modifier.dm +++ b/code/game/dna/dna_modifier.dm @@ -18,6 +18,8 @@ var/mind=null var/languages=null var/list/flavor=null + var/gender = null + var/list/body_descriptors = null var/list/genetic_modifiers = list() // Modifiers with the MODIFIER_GENETIC flag are saved. Note that only the type is saved, not an instance. /datum/dna2/record/proc/GetData() @@ -706,7 +708,10 @@ databuf.types = DNA2_BUF_UE databuf.dna = src.connected.occupant.dna.Clone() if(ishuman(connected.occupant)) - databuf.dna.real_name=connected.occupant.dna.real_name + var/mob/living/carbon/human/H = connected.occupant + databuf.dna.real_name = H.dna.real_name + databuf.gender = H.gender + databuf.body_descriptors = H.descriptors databuf.name = "Unique Identifier" src.buffers[bufferId] = databuf return 1 @@ -717,7 +722,10 @@ databuf.types = DNA2_BUF_UI|DNA2_BUF_UE databuf.dna = src.connected.occupant.dna.Clone() if(ishuman(connected.occupant)) - databuf.dna.real_name=connected.occupant.dna.real_name + var/mob/living/carbon/human/H = connected.occupant + databuf.dna.real_name = H.dna.real_name + databuf.gender = H.gender + databuf.body_descriptors = H.descriptors databuf.name = "Unique Identifier + Unique Enzymes" src.buffers[bufferId] = databuf return 1 @@ -728,7 +736,10 @@ databuf.types = DNA2_BUF_SE databuf.dna = src.connected.occupant.dna.Clone() if(ishuman(connected.occupant)) - databuf.dna.real_name=connected.occupant.dna.real_name + var/mob/living/carbon/human/H = connected.occupant + databuf.dna.real_name = H.dna.real_name + databuf.gender = H.gender + databuf.body_descriptors = H.descriptors databuf.name = "Structural Enzymes" src.buffers[bufferId] = databuf return 1 @@ -764,10 +775,18 @@ if ((buf.types & DNA2_BUF_UE)) src.connected.occupant.real_name = buf.dna.real_name src.connected.occupant.name = buf.dna.real_name + if(ishuman(connected.occupant)) + var/mob/living/carbon/human/H = connected.occupant + H.gender = buf.gender + H.descriptors = buf.body_descriptors src.connected.occupant.UpdateAppearance(buf.dna.UI.Copy()) else if (buf.types & DNA2_BUF_SE) src.connected.occupant.dna.SE = buf.dna.SE src.connected.occupant.dna.UpdateSE() + if(ishuman(connected.occupant)) + var/mob/living/carbon/human/H = connected.occupant + H.gender = buf.gender + H.descriptors = buf.body_descriptors domutcheck(src.connected.occupant,src.connected) src.connected.occupant.apply_effect(rand(20,50), IRRADIATE, check_protection = 0) return 1 diff --git a/code/game/machinery/cloning.dm b/code/game/machinery/cloning.dm index 8e3cb117f9..52a31d5afe 100644 --- a/code/game/machinery/cloning.dm +++ b/code/game/machinery/cloning.dm @@ -113,6 +113,8 @@ if(!R.dna.real_name) //to prevent null names R.dna.real_name = "clone ([rand(0,999)])" H.real_name = R.dna.real_name + H.gender = R.gender + H.descriptors = R.body_descriptors //Get the clone body ready H.adjustCloneLoss(150) // New damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite