diff --git a/code/WorkInProgress/Chemistry-Reagents.dm b/code/WorkInProgress/Chemistry-Reagents.dm
index 2a1c618ecd6..4435062fcaf 100644
--- a/code/WorkInProgress/Chemistry-Reagents.dm
+++ b/code/WorkInProgress/Chemistry-Reagents.dm
@@ -1010,6 +1010,22 @@ datum
..()
return
+ clonexadone
+ name = "Clonexadone"
+ id = "clonexadone"
+ description = "A liquid compound similar to that used in the cloning process. Can be used to 'finish' clones that get ejected early when used in conjunction with a cryo tube."
+ reagent_state = LIQUID
+ on_mob_life(var/mob/M)
+ if(!M) M = holder.my_atom
+ if(M.bodytemperature < 170)
+ if(M:cloneloss) M:cloneloss = max(0, M:cloneloss-6)
+ if(M:oxyloss) M:oxyloss = max(0, M:oxyloss-6)
+ if(M:bruteloss) M:bruteloss = max(0, M:bruteloss-6)
+ if(M:fireloss) M:fireloss = max(0, M:fireloss-6)
+ if(M:toxloss) M:toxloss = max(0, M:toxloss-6)
+ ..()
+ return
+
spaceacillin
name = "Spaceacillin"
id = "spaceacillin"
diff --git a/code/WorkInProgress/Chemistry-Recipes.dm b/code/WorkInProgress/Chemistry-Recipes.dm
index eb05a3d6f7f..65d6cfe36e7 100644
--- a/code/WorkInProgress/Chemistry-Recipes.dm
+++ b/code/WorkInProgress/Chemistry-Recipes.dm
@@ -217,6 +217,13 @@ datum
required_reagents = list("dexalin" = 1, "water" = 1, "oxygen" = 1)
result_amount = 10
+ clonexadone
+ name = "Clonexadone"
+ id = "clonexadone"
+ result = "clonexadone"
+ required_reagents = list("plasma" = 1, "cryoxadone" = 1, "sodium" = 1)
+ result_amount = 10
+
spaceacillin
name = "Spaceacillin"
id = "spaceacillin"
diff --git a/code/WorkInProgress/cloning.dm b/code/WorkInProgress/cloning.dm
index c27e2476db9..4c69c9f2c12 100644
--- a/code/WorkInProgress/cloning.dm
+++ b/code/WorkInProgress/cloning.dm
@@ -450,14 +450,12 @@
src.icon_state = "pod_1"
//Get the clone body ready
src.occupant.rejuv = 10
- src.occupant.bruteloss += 90
- src.occupant.toxloss += 50
- src.occupant.oxyloss += 40
+ src.occupant.cloneloss += 190 //new damage var so you can't eject a clone early then stab them to abuse the current damage system --NeoFite
src.occupant.brainloss += 90
src.occupant.paralysis += 4
//Here let's calculate their health so the pod doesn't immediately eject them!!!
- src.occupant.health = (src.occupant.bruteloss + src.occupant.toxloss + src.occupant.oxyloss)
+ src.occupant.health = (src.occupant.bruteloss + src.occupant.toxloss + src.occupant.oxyloss + src.occupant.cloneloss)
src.occupant << "\blue Clone generation process initiated."
src.occupant << "\blue This will take a moment, please hold."
@@ -536,10 +534,7 @@
src.occupant.paralysis = 4
//Slowly get that clone healed and finished.
- src.occupant.bruteloss = max(src.occupant.bruteloss-1, 0)
-
- //At this rate one clone takes about 95 seconds to produce.(with heal_level 90)
- src.occupant.toxloss = max(src.occupant.toxloss-0.5, 0)
+ src.occupant.cloneloss = max(src.occupant.cloneloss-1, 0)
//Premature clones may have brain damage.
src.occupant.brainloss = max(src.occupant.brainloss-1, 0)
@@ -551,9 +546,6 @@
//Also heal some oxyloss ourselves because inaprovaline is so bad at preventing it!!
src.occupant.oxyloss = max(src.occupant.oxyloss-2, 0)
- //Stop baking in the tubes you jerks.
- src.occupant.fireloss = max(src.occupant.fireloss-2, 0)
-
use_power(7500) //This might need tweaking.
return
diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm
index 07874221737..da28cdd6c82 100644
--- a/code/defines/mob/mob.dm
+++ b/code/defines/mob/mob.dm
@@ -106,6 +106,7 @@
var/r_epil = 0
var/r_ch_cou = 0
var/r_Tourette = 0
+ var/cloneloss = 0
var/miming = null //checks if the guy is a mime
var/silent = null //Can't talk. Value goes down every life proc.
diff --git a/code/game/objects/devices/scanners.dm b/code/game/objects/devices/scanners.dm
index 71dd99955b7..8f6ebf36588 100644
--- a/code/game/objects/devices/scanners.dm
+++ b/code/game/objects/devices/scanners.dm
@@ -171,6 +171,8 @@ MASS SPECTROMETER
user.show_message(text("\blue [] | [] | [] | []", fake_oxy > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.toxloss > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.bruteloss > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
else
user.show_message(text("\blue [] | [] | [] | []", M.oxyloss > 50 ? "\red Severe oxygen deprivation detected\blue" : "Subject bloodstream oxygen level normal", M.toxloss > 50 ? "\red Dangerous amount of toxins detected\blue" : "Subject bloodstream toxin level minimal", M.fireloss > 50 ? "\red Severe burn damage detected\blue" : "Subject burn injury status O.K", M.bruteloss > 50 ? "\red Severe anatomical damage detected\blue" : "Subject brute-force injury status O.K"), 1)
+ if (M.cloneloss)
+ user.show_message(text("\red Subject appears to have been imperfectly cloned."), 1)
if (M.virus)
user.show_message(text("\red Warning: Virus Detected.\nName: [M.virus.name].\nType: [M.virus.spread].\nStage: [M.virus.stage]/[M.virus.max_stages].\nPossible Cure: [M.virus.cure]"))
if (M.reagents:get_reagent_amount("inaprovaline"))
diff --git a/code/game/objects/items/helper_procs.dm b/code/game/objects/items/helper_procs.dm
index eddfee0b94e..58abbdfb227 100644
--- a/code/game/objects/items/helper_procs.dm
+++ b/code/game/objects/items/helper_procs.dm
@@ -66,10 +66,12 @@
return
/obj/proc/hear_talk(mob/M as mob, text)
+/*
var/mob/mo = locate(/mob) in src
if(mo)
var/rendered = "[M.name]: [text]"
mo.show_message(rendered, 2)
+ */
return
/proc/is_type_in_list(var/atom/A, var/list/L)
diff --git a/code/modules/mob/living/carbon/human/examine.dm b/code/modules/mob/living/carbon/human/examine.dm
index 1f94b5b67a3..c8ab841aa98 100644
--- a/code/modules/mob/living/carbon/human/examine.dm
+++ b/code/modules/mob/living/carbon/human/examine.dm
@@ -106,6 +106,12 @@
else
usr << "\red [src.name] looks severely injured!"
+ if (src.cloneloss)
+ if (src.cloneloss < 30)
+ usr << "\red [src.name] looks slightly... unfinished?"
+ else
+ usr << "\red [src.name] looks very... unfinished?"
+
if (src.fireloss)
if (src.fireloss < 30)
usr << "\red [src.name] looks slightly burned!"
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 63f607ce107..58b2509702a 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -599,7 +599,7 @@
handle_regular_status_updates()
- health = 100 - (oxyloss + toxloss + fireloss + bruteloss)
+ health = 100 - (oxyloss + toxloss + fireloss + bruteloss + cloneloss)
if(oxyloss > 50) paralysis = max(paralysis, 3)