mirror of
https://github.com/PolarisSS13/Polaris.git
synced 2026-01-06 15:32:52 +00:00
Made a change to the cloner, since I was getting reports of people abusing quirks in the damage system to pop clones out way early without having to muck about with things like cryo.
Mobs now have a "cloneloss" var, used to represent the fact that they aren't done being cloned. There are exactly 2 ways to heal cloneloss outside of badminnery. 1) Don't get popped out of the tube early. 2) Load a cryo tube with Clonexadone (mix Cyroxadone, Plasma, and Sodium to make) and hop in. Clonexadone also happens to heal regular damages twice as fast as cryoxadone, so it has more use than just fixing quickclones. PDA medscanners aren't sophisticated enough to detect cloning imperfections, but the ones found in medkits are. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1178 316c924e-a436-60f5-8080-3fe189b3f50e
This commit is contained in:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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 <b>Clone generation process initiated.</b>"
|
||||
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
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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 <b>Warning: Virus Detected.</b>\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"))
|
||||
|
||||
@@ -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 = "<span class='game say'><span class='name'>[M.name]: </span> <span class='message'>[text]</span></span>"
|
||||
mo.show_message(rendered, 2)
|
||||
*/
|
||||
return
|
||||
|
||||
/proc/is_type_in_list(var/atom/A, var/list/L)
|
||||
|
||||
@@ -106,6 +106,12 @@
|
||||
else
|
||||
usr << "\red <B>[src.name] looks severely injured!</B>"
|
||||
|
||||
if (src.cloneloss)
|
||||
if (src.cloneloss < 30)
|
||||
usr << "\red [src.name] looks slightly... unfinished?"
|
||||
else
|
||||
usr << "\red <B>[src.name] looks very... unfinished?</B>"
|
||||
|
||||
if (src.fireloss)
|
||||
if (src.fireloss < 30)
|
||||
usr << "\red [src.name] looks slightly burned!"
|
||||
|
||||
@@ -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)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user