From 02d6e7a303e8d7203f4228b3acbf11086ab53dc7 Mon Sep 17 00:00:00 2001 From: Chinsky Date: Fri, 5 Jun 2015 12:49:48 +0300 Subject: [PATCH] Fixes #9605 Now organ DNA is sync'd to newly created character. --- code/modules/mob/living/carbon/human/human.dm | 2 ++ code/modules/mob/living/carbon/human/human_organs.dm | 7 ++++++- code/modules/mob/new_player/new_player.dm | 2 +- code/modules/organs/organ.dm | 6 ++++++ 4 files changed, 15 insertions(+), 2 deletions(-) diff --git a/code/modules/mob/living/carbon/human/human.dm b/code/modules/mob/living/carbon/human/human.dm index 10e165fa5fb..9273c3372a0 100644 --- a/code/modules/mob/living/carbon/human/human.dm +++ b/code/modules/mob/living/carbon/human/human.dm @@ -41,7 +41,9 @@ ..() if(dna) + dna.ready_dna(new_character) dna.real_name = real_name + sync_organ_dna() make_blood() /mob/living/carbon/human/Destroy() diff --git a/code/modules/mob/living/carbon/human/human_organs.dm b/code/modules/mob/living/carbon/human/human_organs.dm index f2c64fa52ad..2dec075afa6 100644 --- a/code/modules/mob/living/carbon/human/human_organs.dm +++ b/code/modules/mob/living/carbon/human/human_organs.dm @@ -171,4 +171,9 @@ //New are added for reagents to random organs. for(var/datum/reagent/A in reagents.reagent_list) var/obj/item/organ/O = pick(organs) - O.trace_chemicals[A.name] = 100 \ No newline at end of file + O.trace_chemicals[A.name] = 100 + +/mob/living/carbon/human/proc/sync_organ_dna() + var/list/all_bits = internal_organs|organs + for(var/obj/item/organ/O in all_bits) + O.set_dna(dna) \ No newline at end of file diff --git a/code/modules/mob/new_player/new_player.dm b/code/modules/mob/new_player/new_player.dm index 1e18882137d..8bd0be34bc0 100644 --- a/code/modules/mob/new_player/new_player.dm +++ b/code/modules/mob/new_player/new_player.dm @@ -467,7 +467,7 @@ new_character.name = real_name new_character.dna.ready_dna(new_character) new_character.dna.b_type = client.prefs.b_type - + new_character.sync_organ_dna() if(client.prefs.disabilities) // Set defer to 1 if you add more crap here so it only recalculates struc_enzymes once. - N3X new_character.dna.SetSEState(GLASSESBLOCK,1,0) diff --git a/code/modules/organs/organ.dm b/code/modules/organs/organ.dm index 038a350fb58..7afe7293dd2 100644 --- a/code/modules/organs/organ.dm +++ b/code/modules/organs/organ.dm @@ -57,6 +57,12 @@ var/list/organ_cache = list() if(internal) holder.internal_organs |= src +/obj/item/organ/proc/set_dna(var/datum/dna/new_dna) + if(new_dna) + dna = new_dna.Clone() + blood_DNA.Cut() + blood_DNA[dna.unique_enzymes] = dna.b_type + /obj/item/organ/proc/die() if(status & ORGAN_ROBOT) return