From 044ab25cf8a1d4c28e0fd457e4de87eb446f501b Mon Sep 17 00:00:00 2001 From: "baloh.matevz" Date: Wed, 20 Jul 2011 21:37:05 +0000 Subject: [PATCH] Damage system changes: - Environmental heat damage increased by a factor of 1.5 (meaning space and fires cause 50% more damage) - Being without oxygen causes from 0 to 12 damage instead of 0 to 7, depending on how much oxygen is in the atmosphere. Means that if the room's just began to leak there will be no change in the oxygen damage you take compared to the damage prior to this update, but space does 12 damage per tick instead of 7. - Fire suit now protects up to a temperature of 10000 degrees, which is the temperature at which floors start to melt. A toxin + oxy fire usually generates temperatures around 8000-9000 degrees. It used to protect up to 4500 degrees. - Added a standard spacesuit loadout to the admin select equipment menu (LJ's request) I've tested all the changed numbers a lot and they seem to work well. Space and fires are a lot more deadly, while normal circumstances remain at the same level as they are now. I've also researched the bug which allowed you to spend infinity on tiles in space. The problem is that turfs don't process temperature properly, but even after spending 4 hours looking into it (I wish I was joking), I wasn't able to determine where this gets updated on the lowest of levels. git-svn-id: http://tgstation13.googlecode.com/svn/trunk@1896 316c924e-a436-60f5-8080-3fe189b3f50e --- code/defines/obj/clothing/suit.dm | 2 +- code/modules/mob/living/carbon/human/life.dm | 16 +++++++++++----- 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/code/defines/obj/clothing/suit.dm b/code/defines/obj/clothing/suit.dm index 5b7bff002fd..1524584c58b 100644 --- a/code/defines/obj/clothing/suit.dm +++ b/code/defines/obj/clothing/suit.dm @@ -399,7 +399,7 @@ gas_transfer_coefficient = 0.90 permeability_coefficient = 0.50 heat_transfer_coefficient = 0.01 - protective_temperature = 4500 + protective_temperature = 10000 body_parts_covered = UPPER_TORSO|LOWER_TORSO|LEGS|FEET|ARMS|HANDS allowed = list(/obj/item/device/flashlight,/obj/item/weapon/tank/emergency_oxygen,/obj/item/weapon/extinguisher) slowdown = 1.3 diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index d4fb1f2b584..47bddb1334d 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1,3 +1,5 @@ +#define HUMAN_MAX_OXYLOSS 12 //Defines how much oxyloss humans can get per tick. No air applies this value. + /mob/living/carbon/human var oxygen_alert = 0 @@ -317,7 +319,7 @@ if(!breath || (breath.total_moles() == 0)) if(reagents.has_reagent("inaprovaline")) return - oxyloss += 7 + oxyloss += HUMAN_MAX_OXYLOSS oxygen_alert = max(oxygen_alert, 1) @@ -345,10 +347,10 @@ spawn(0) emote("gasp") if(O2_pp > 0) var/ratio = safe_oxygen_min/O2_pp - oxyloss += min(5*ratio, 7) // Don't fuck them up too fast (space only does 7 after all!) + oxyloss += min(5*ratio, HUMAN_MAX_OXYLOSS) // Don't fuck them up too fast (space only does HUMAN_MAX_OXYLOSS after all!) oxygen_used = breath.oxygen*ratio/6 else - oxyloss += 7 + oxyloss += HUMAN_MAX_OXYLOSS oxygen_alert = max(oxygen_alert, 1) /*else if (O2_pp > safe_oxygen_max) // Too much oxygen (commented this out for now, I'll deal with pressure damage elsewhere I suppose) spawn(0) emote("cough") @@ -356,7 +358,7 @@ oxyloss += 5*ratio oxygen_used = breath.oxygen*ratio/6 oxygen_alert = max(oxygen_alert, 1)*/ - else // We're in safe limits + else // We're in safe limits oxyloss = max(oxyloss-5, 0) oxygen_used = breath.oxygen/6 oxygen_alert = 0 @@ -423,6 +425,9 @@ loc_temp = environment.temperature var/thermal_protection = get_thermal_protection() + + //world << "Loc temp: [loc_temp] - Body temp: [bodytemperature] - Fireloss: [fireloss] - Thermal protection: [get_thermal_protection()] - Fire protection: [thermal_protection + add_fire_protection(loc_temp)]" + if(stat != 2 && abs(bodytemperature - 310.15) < 50) bodytemperature += adjust_body_temperature(bodytemperature, 310.15, thermal_protection) if(loc_temp < 310.15) // a cold place -> add in cold protection @@ -431,7 +436,6 @@ thermal_protection += add_fire_protection(loc_temp) bodytemperature += adjust_body_temperature(bodytemperature, loc_temp, 1/thermal_protection) - // lets give them a fair bit of leeway so they don't just start dying //as that may be realistic but it's no fun if((bodytemperature > (T0C + 50)) || (bodytemperature < (T0C + 10)) && (!istype(loc, /obj/machinery/atmospherics/unary/cryo_cell))) // Last bit is just disgusting, i know @@ -584,6 +588,8 @@ if(mutantrace == "plant") discomfort *= 3 //I don't like magic numbers. I'll make mutantraces a datum with vars sometime later. -- Urist + else + discomfort *= 1.5 //Dangercon 2011 - Upping damage by use of magic numbers - Errorage switch(body_part) if(HEAD)