diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index ce29ffa971..9efb72f203 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -215,6 +215,7 @@ adjustCloneLoss(0.1) proc/handle_mutations_and_radiation() + if(getFireLoss()) if((COLD_RESISTANCE in mutations) || (prob(1))) heal_organ_damage(0,1) @@ -237,6 +238,16 @@ radiation = 0 else + if(species.flags & RAD_ABSORB) + var/rads = radiation/25 + radiation -= rads + nutrition += rads + heal_overall_damage(rads,rads) + adjustOxyLoss(-(rads)) + adjustToxLoss(-(rads)) + updatehealth() + return + var/damage = 0 switch(radiation) if(1 to 49) @@ -850,6 +861,8 @@ if(A.lighting_use_dynamic) light_amount = min(10,T.lighting_lumcount) - 5 //hardcapped so it's not abused by having a ton of flashlights else light_amount = 5 nutrition += light_amount + traumatic_shock -= light_amount + if(nutrition > 500) nutrition = 500 if(light_amount > 2) //if there's enough light, heal @@ -902,6 +915,7 @@ if(species.flags & REQUIRE_LIGHT) if(nutrition < 200) take_overall_damage(2,0) + traumatic_shock++ if (drowsyness) drowsyness-- diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm index ce68c8710d..675f2c76a5 100644 --- a/code/modules/mob/living/carbon/monkey/life.dm +++ b/code/modules/mob/living/carbon/monkey/life.dm @@ -117,6 +117,17 @@ emote("collapse") if (radiation) + + if(istype(src,/mob/living/carbon/monkey/diona)) //Filthy check. Dionaea don't take rad damage. + var/rads = radiation/25 + radiation -= rads + nutrition += rads + heal_overall_damage(rads,rads) + adjustOxyLoss(-(rads)) + adjustToxLoss(-(rads)) + updatehealth() + return + if (radiation > 100) radiation = 100 Weaken(10) @@ -408,6 +419,25 @@ proc/handle_chemicals_in_body() + if(istype(src,/mob/living/carbon/monkey/diona)) //Filthy check. Dionaea nymphs need light or they get sad. + var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing + if(isturf(loc)) //else, there's considered to be no light + var/turf/T = loc + var/area/A = T.loc + if(A) + if(A.lighting_use_dynamic) light_amount = min(10,T.lighting_lumcount) - 5 //hardcapped so it's not abused by having a ton of flashlights + else light_amount = 5 + + nutrition += light_amount + traumatic_shock -= light_amount + + if(nutrition > 500) + nutrition = 500 + if(light_amount > 2) //if there's enough light, heal + heal_overall_damage(1,1) + adjustToxLoss(-1) + adjustOxyLoss(-1) + if(reagents) reagents.metabolize(src) if (drowsyness) diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index 8e7c9911f1..788f3d2c0e 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -111,10 +111,14 @@ primitive = /mob/living/carbon/monkey/diona warning_low_pressure = 50 - hazard_low_pressure = 0 + hazard_low_pressure = -1 - heat_level_1 = 500 - heat_level_2 = 700 - heat_level_3 = 1200 + cold_level_1 = 50 + cold_level_2 = -1 + cold_level_3 = -1 - flags = WHITELISTED | NO_EAT | NO_BREATHE | REQUIRE_LIGHT | NON_GENDERED | NO_SCAN | IS_PLANT + heat_level_1 = 2000 + heat_level_2 = 3000 + heat_level_3 = 4000 + + flags = WHITELISTED | NO_BREATHE | REQUIRE_LIGHT | NON_GENDERED | NO_SCAN | IS_PLANT | RAD_ABSORB diff --git a/code/setup.dm b/code/setup.dm index 7395595cee..9b11e9a9cf 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -709,7 +709,7 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse #define NO_EAT 1 #define NO_BREATHE 2 #define NO_SLEEP 4 -#define NO_SHOCK 8 +#define RAD_ABSORB 8 #define NO_SCAN 16 #define NON_GENDERED 32 #define REQUIRE_LIGHT 64 @@ -722,4 +722,4 @@ var/list/RESTRICTED_CAMERA_NETWORKS = list( //Those networks can only be accesse //Language flags. #define WHITELISTED 1 // Language is available if the speaker is whitelisted. -#define RESTRICTED 2 // Language can only be accquired by spawning or an admin. +#define RESTRICTED 2 // Language can only be accquired by spawning or an admin.