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)