diff --git a/code/modules/resleeving/computers.dm b/code/modules/resleeving/computers.dm index b6cebe28b2..ed3466b101 100644 --- a/code/modules/resleeving/computers.dm +++ b/code/modules/resleeving/computers.dm @@ -156,6 +156,7 @@ "speciesname" = active_br.speciesname, \ "gender" = active_br.bodygender, \ "synthetic" = active_br.synthetic ? "Yes" : "No", \ + "locked" = active_br.locked, \ "cando" = can_grow_active) else data["activeRecord"] = null @@ -290,6 +291,10 @@ if(!sleever.occupant) temp = "Error: Resleeving pod is not occupied." + //OOC body lock thing. + if(sleever.occupant.resleeve_lock && active_mr.ckey != sleever.occupant.resleeve_lock) + temp = "Error: Mind incompatible with body." + //Body to sleeve into, but mind is in another living body. else if(active_mr.mind.current && active_mr.mind.current.stat != DEAD) //Mind is in a body already that's alive var/answer = alert(active_mr.mind.current,"Someone is attempting to restore a backup of your mind into another body. Do you want to move to that body? You MAY suffer memory loss! (Same rules as CMD apply)","Resleeving","Yes","No") diff --git a/code/modules/resleeving/infocore.dm b/code/modules/resleeving/infocore.dm index 0df9bb6c42..b18c0a1815 100644 --- a/code/modules/resleeving/infocore.dm +++ b/code/modules/resleeving/infocore.dm @@ -3,6 +3,8 @@ //// for the resleeving tech //////////////////////////////// +/mob/living/carbon/human/var/resleeve_lock + var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore //Mind-backup database @@ -113,6 +115,7 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore //These may or may not be set, mostly irrelevant since it's just a body record. var/ckey + var/locked var/client/client_ref var/datum/mind/mind_ref var/synthetic @@ -121,9 +124,13 @@ var/datum/transhuman/infocore/transcore = new/datum/transhuman/infocore var/list/limb_data = list(BP_HEAD, BP_L_HAND, BP_R_HAND, BP_L_ARM, BP_R_ARM, BP_L_FOOT, BP_R_FOOT, BP_L_LEG, BP_R_LEG, BP_GROIN, BP_TORSO) var/list/organ_data = list(O_HEART, O_EYES, O_LUNGS, O_BRAIN) -/datum/transhuman/body_record/New(var/mob/living/carbon/human/M,var/add_to_db = 1) +/datum/transhuman/body_record/New(var/mob/living/carbon/human/M,var/add_to_db = 1,var/ckeylock = 0) ASSERT(M) + //Person OOCly doesn't want people impersonating them + locked = ckeylock + + //General stuff about them synthetic = M.isSynthetic() speciesname = M.custom_species ? M.custom_species : M.dna.species bodygender = M.gender diff --git a/code/modules/resleeving/machines.dm b/code/modules/resleeving/machines.dm index 768907dc97..1e5e45c8cc 100644 --- a/code/modules/resleeving/machines.dm +++ b/code/modules/resleeving/machines.dm @@ -206,6 +206,8 @@ var/mob/living/carbon/human/H = new /mob/living/carbon/human(src, current_project.mydna.dna.species) H.name = current_project.mydna.dna.real_name H.real_name = H.name + if(current_project.locked) + H.resleeve_lock = current_project.ckey //First the external organs for(var/part in current_project.limb_data)