diff --git a/code/game/machinery/suit_storage_unit.dm b/code/game/machinery/suit_storage_unit.dm
index eee465e062a..4fe0d47f12c 100644
--- a/code/game/machinery/suit_storage_unit.dm
+++ b/code/game/machinery/suit_storage_unit.dm
@@ -948,7 +948,7 @@
occupant.take_organ_damage(0,radiation_level*2 + rand(1,3))
if(radiation_level > 1)
occupant.take_organ_damage(0,radiation_level + rand(1,3))
- occupant.radiation += radiation_level*10
+ occupant.apply_effect(radiation_level*10, IRRADIATE)
/obj/machinery/suit_cycler/proc/finished_job()
var/turf/T = get_turf(src)
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 00dbc50e8d0..b820cecbace 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -191,73 +191,47 @@
if(!(species.flags & RADIMMUNE))
if(radiation)
-
- if(get_int_organ(/obj/item/organ/internal/nucleation/resonant_crystal))
- var/rads = radiation/25
- radiation -= rads
- radiation -= 0.1
- reagents.add_reagent("radium", rads/10)
- if( prob(10) )
- to_chat(src, "You feel relaxed.")
- return
-
if(radiation > 100)
- radiation = 100
- Weaken(10)
- if(!lying)
- to_chat(src, "You feel weak.")
+ if(!weakened)
emote("collapse")
+ Weaken(10)
+ to_chat(src, "You feel weak.")
- if(radiation < 0)
- radiation = 0
+ radiation = Clamp(radiation, 0, 100)
- else
- var/damage = 0
- switch(radiation)
- if(0 to 49)
- radiation--
- if(prob(25))
- adjustToxLoss(1)
- damage = 1
- updatehealth()
-
- if(50 to 74)
- radiation -= 2
- damage = 1
+ var/autopsy_damage = 0
+ switch(radiation)
+ if(0 to 50)
+ radiation = max(radiation-1, 0)
+ if(prob(25))
adjustToxLoss(1)
- if(prob(5))
- radiation -= 5
- Weaken(3)
- if(!lying)
- to_chat(src, "You feel weak.")
- emote("collapse")
- updatehealth()
+ autopsy_damage = 1
- if(75 to 100)
- radiation -= 3
- adjustToxLoss(3)
- damage = 3
- if(prob(1))
- to_chat(src, "You mutate!")
- randmutb(src)
- domutcheck(src,null)
- emote("gasp")
- updatehealth()
+ if(50 to 75)
+ radiation = max(radiation-2, 0)
+ adjustToxLoss(1)
+ autopsy_damage = 1
+ if(prob(5))
+ radiation = max(radiation-5, 0)
+ if(!weakened)
+ emote("collapse")
+ Weaken(3)
+ to_chat(src, "You feel weak.")
- else
- radiation -= 5
- adjustToxLoss(5)
- damage = 5
- if(prob(1))
- to_chat(src, "You mutate!")
- randmutb(src)
- domutcheck(src,null)
- emote("gasp")
- updatehealth()
+ if(75 to 100)
+ radiation = max(radiation-3, 0)
+ adjustToxLoss(3)
+ autopsy_damage = 3
+ if(prob(1))
+ to_chat(src, "You mutate!")
+ randmutb(src)
+ domutcheck(src, null)
+ emote("gasp")
- if(damage && bodyparts.len)
- var/obj/item/organ/external/O = pick(bodyparts)
- if(istype(O)) O.add_autopsy_data("Radiation Poisoning", damage)
+ if(autopsy_damage && bodyparts.len)
+ var/obj/item/organ/external/O = pick(bodyparts)
+ if(istype(O))
+ O.add_autopsy_data("Radiation Poisoning", autopsy_damage)
/mob/living/carbon/human/breathe()
diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm
index 7fee37a17c2..24f38bdbf64 100644
--- a/code/modules/mob/living/carbon/human/species/apollo.dm
+++ b/code/modules/mob/living/carbon/human/species/apollo.dm
@@ -99,7 +99,7 @@
burn_mod = 4 // holy shite, poor guys wont survive half a second cooking smores
brute_mod = 2 // damn, double wham, double dam
oxy_mod = 0
- flags = IS_WHITELISTED | NO_BREATHE | NO_BLOOD | NO_PAIN | HAS_LIPS | NO_SCAN
+ flags = IS_WHITELISTED | NO_BREATHE | NO_BLOOD | NO_PAIN | HAS_LIPS | NO_SCAN | RADIMMUNE
dietflags = DIET_OMNI //still human at their core, so they maintain their eating habits and diet
//Default styles for created mobs.
@@ -110,8 +110,7 @@
"heart" = /obj/item/organ/internal/heart,
"crystallized brain" = /obj/item/organ/internal/brain/crystal,
"eyes" = /obj/item/organ/internal/eyes/luminescent_crystal, //Standard darksight of 2.
- "strange crystal" = /obj/item/organ/internal/nucleation/strange_crystal,
- "resonant crystal" = /obj/item/organ/internal/nucleation/resonant_crystal
+ "strange crystal" = /obj/item/organ/internal/nucleation/strange_crystal
)
vision_organ = /obj/item/organ/internal/eyes/luminescent_crystal
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index 4348b8b048b..e1f8a4b6116 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -843,23 +843,20 @@
return ..()
/datum/species/diona/handle_life(var/mob/living/carbon/human/H)
+ H.radiation = Clamp(H.radiation, 0, 100) //We have to clamp this first, then decrease it, or there's a few edge cases of massive heals if we clamp and decrease at the same time.
var/rads = H.radiation / 25
- H.apply_effect(-rads,IRRADIATE,0)
- H.nutrition += rads
+ H.radiation = max(H.radiation-rads, 0)
+ H.nutrition = min(H.nutrition+rads, NUTRITION_LEVEL_WELL_FED+10)
H.adjustBruteLoss(-(rads))
- H.adjustOxyLoss(-(rads))
H.adjustToxLoss(-(rads))
var/light_amount = 0 //how much light there is in the place, affects receiving nutrition and healing
if(isturf(H.loc)) //else, there's considered to be no light
var/turf/T = H.loc
light_amount = min(T.get_lumcount() * 10, 5) //hardcapped so it's not abused by having a ton of flashlights
- H.nutrition += light_amount
+ H.nutrition = min(H.nutrition+light_amount, NUTRITION_LEVEL_WELL_FED+10)
H.traumatic_shock -= light_amount
- if(H.nutrition > NUTRITION_LEVEL_WELL_FED)
- H.nutrition = NUTRITION_LEVEL_WELL_FED
-
if(light_amount > 0)
H.clear_alert("nolight")
else
@@ -869,8 +866,7 @@
H.adjustBruteLoss(-(light_amount/2))
H.adjustFireLoss(-(light_amount/4))
- H.adjustOxyLoss(-(light_amount))
- if(H.nutrition < 200)
+ if(H.nutrition < NUTRITION_LEVEL_STARVING+50)
H.take_overall_damage(10,0)
H.traumatic_shock++