From 1a57ed735531f91c5b3707e98b0e49b71769e19b Mon Sep 17 00:00:00 2001 From: mwerezak Date: Sat, 21 Jun 2014 16:55:07 -0400 Subject: [PATCH] Having an infection raises your body temperature Also the toxin damage taken during INFECTION_LEVEL_ONE is greatly reduced. Fixes robotic internal organs getting infections. Fixes the organ_failure random event. Forgot to set the affected organ as needing processing. --- code/modules/events/organ_failure.dm | 2 ++ code/modules/organs/organ_external.dm | 8 +++++--- code/modules/organs/organ_internal.dm | 10 +++++++--- 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/code/modules/events/organ_failure.dm b/code/modules/events/organ_failure.dm index f954891b90..1499afcb45 100644 --- a/code/modules/events/organ_failure.dm +++ b/code/modules/events/organ_failure.dm @@ -39,5 +39,7 @@ datum/event/organ_failure/start() O.germ_level = max(INFECTION_LEVEL_TWO, O.germ_level) else O.germ_level = max(rand(INFECTION_LEVEL_ONE,INFECTION_LEVEL_ONE*2), O.germ_level) + + C.bad_external_organs |= O severity-- diff --git a/code/modules/organs/organ_external.dm b/code/modules/organs/organ_external.dm index 9ebfbb8098..47450621da 100644 --- a/code/modules/organs/organ_external.dm +++ b/code/modules/organs/organ_external.dm @@ -357,12 +357,14 @@ This function completely restores a damaged organ to perfect condition. if(germ_level >= INFECTION_LEVEL_ONE) //having an infection raises your body temperature - var/temperature_increase = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/INFECTION_LEVEL_THREE, 1) - if (owner.bodytemperature < temperature_increase) + var/fever_temperature = (owner.species.heat_level_1 - owner.species.body_temperature - 1)* min(germ_level/INFECTION_LEVEL_THREE, 1) + owner.species.body_temperature + if (owner.bodytemperature < fever_temperature) + //world << "fever: [owner.bodytemperature] < [fever_temperature], raising temperature." owner.bodytemperature++ if(prob(round(germ_level/10))) //aiming for a light infection to become serious after 40 minutes, standing still - germ_level++ + if (prob(5)) + germ_level++ owner.adjustToxLoss(1) if(germ_level >= INFECTION_LEVEL_TWO) diff --git a/code/modules/organs/organ_internal.dm b/code/modules/organs/organ_internal.dm index 7df2bc90e2..d5e1b19b6c 100644 --- a/code/modules/organs/organ_internal.dm +++ b/code/modules/organs/organ_internal.dm @@ -37,18 +37,22 @@ if (!germ_level) return + if (robotic >= 2) //TODO make robotic internal and external organs separate types of organ instead of a flag + germ_level = 0 + return + var/antibiotics = owner.reagents.get_reagent_amount("spaceacillin") - + if (germ_level > 0 && antibiotics > 5) if (prob(4*antibiotics)) germ_level-- if (antibiotics > 30) germ_level-- - + if (germ_level >= INFECTION_LEVEL_ONE/2) if(prob(round(germ_level/6))) //aiming for germ level to go from ambient to INFECTION_LEVEL_TWO in an average of 15 minutes germ_level++ if(prob(1)) take_damage(1,silent=0) - + if (germ_level >= INFECTION_LEVEL_TWO) var/datum/organ/external/parent = owner.get_organ(parent_organ) if (parent.germ_level < germ_level && ( parent.germ_level < INFECTION_LEVEL_ONE*2 || prob(30) ))