From 98bfe066057c7877f588af3d36cd98a37cf469ed Mon Sep 17 00:00:00 2001 From: "n3ophyt3@gmail.com" Date: Tue, 15 Feb 2011 21:18:48 +0000 Subject: [PATCH] Cloning bugfixes Ladies now keep their ladyparts after being cloned Those damned lizards now pop out of the cloner as lizards Cloning revheads shouldn't make the rev icons tweak out anymore, but proper testing of this is difficult with only two people Cloned traitors no longer get reported as "name (originally name)" at round end git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1051 316c924e-a436-60f5-8080-3fe189b3f50e --- code/WorkInProgress/cloning.dm | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/code/WorkInProgress/cloning.dm b/code/WorkInProgress/cloning.dm index 5f9bc0258d3..c27e2476db9 100644 --- a/code/WorkInProgress/cloning.dm +++ b/code/WorkInProgress/cloning.dm @@ -295,7 +295,7 @@ //Can't clone without someone to clone. Or a pod. Or if the pod is busy. Or full of gibs. if ((!selected) || (!src.pod1) || (src.pod1.occupant) || (src.pod1.mess)) src.temp = "Unable to initiate cloning cycle." // most helpful error message in THE HISTORY OF THE WORLD - else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"])) + else if (src.pod1.growclone(selected, C.fields["name"], C.fields["UI"], C.fields["SE"], C.fields["mind"], C.fields["mrace"])) src.temp = "Cloning cycle activated." src.records.Remove(C) del(C) @@ -322,6 +322,7 @@ subject.dna.check_integrity() var/datum/data/record/R = new /datum/data/record( ) + R.fields["mrace"] = subject.mutantrace R.fields["ckey"] = subject.ckey R.fields["name"] = subject.real_name R.fields["id"] = copytext(md5(subject.real_name), 2, 6) @@ -432,7 +433,7 @@ //Clonepod //Start growing a human clone in the pod! -/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref) +/obj/machinery/clonepod/proc/growclone(mob/ghost as mob, var/clonename, var/ui, var/se, var/mindref, var/mrace) if (((!ghost) || (!ghost.client)) || src.mess || src.attempting) return 0 @@ -466,23 +467,28 @@ else src.occupant.real_name = "clone" //No null names!! + var/datum/mind/clonemind = (locate(mindref) in ticker.minds) if ((clonemind) && (istype(clonemind))) //Move that mind over!! clonemind.transfer_to(src.occupant) + clonemind.original = src.occupant else //welp src.occupant.mind = new /datum/mind( ) src.occupant.mind.key = src.occupant.key src.occupant.mind.current = src.occupant + src.occupant.mind.original = src.occupant src.occupant.mind.transfer_to(src.occupant) ticker.minds += src.occupant.mind // -- Mode/mind specific stuff goes here switch(ticker.mode.name) if ("revolution") - if ((src.occupant.mind in ticker.mode:revolutionaries) || (src.occupant.mind in ticker.mode:head_revolutionaries)) + if (src.occupant.mind in ticker.mode:revolutionaries) ticker.mode:add_revolutionary(src.occupant.mind) ticker.mode:update_all_rev_icons() //So the icon actually appears + if (src.occupant.mind in ticker.mode:head_revolutionaries) + ticker.mode:update_all_rev_icons() if ("cult") if (src.occupant.mind in ticker.mode:cult) ticker.mode:add_cultist(src.occupant.mind) @@ -504,7 +510,9 @@ if (se) src.occupant.dna.struc_enzymes = se randmutb(src.occupant) //Sometimes the clones come out wrong. - + src.occupant:update_face() + src.occupant:update_body() + src.occupant:mutantrace = mrace src.attempting = 0 return 1