diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index b27f98bc40c..b5aef7ac1fa 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -850,28 +850,6 @@ if(status_flags & GODMODE) return 0 //godmode - var/obj/item/organ/internal/diona/node/light_organ = locate() in internal_organs - - if(!isSynthetic()) - if(light_organ && !light_organ.is_broken()) - 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 - light_amount = T.get_lumcount() * 10 - nutrition += light_amount - traumatic_shock -= light_amount - - if(species.flags & IS_PLANT) - if(nutrition > 450) - nutrition = 450 - - if(light_amount >= 3) //if there's enough light, heal - adjustBruteLoss(-(round(light_amount/2))) - adjustFireLoss(-(round(light_amount/2))) - adjustToxLoss(-(light_amount)) - adjustOxyLoss(-(light_amount)) - //TODO: heal wounds, heal broken limbs. - if(species.light_dam) var/light_amount = 0 if(isturf(loc)) @@ -899,14 +877,6 @@ if(overeatduration > 1) overeatduration -= 2 //doubled the unfat rate - if(!isSynthetic() && (species.flags & IS_PLANT) && (!light_organ || light_organ.is_broken())) - if(nutrition < 200) - take_overall_damage(2,0) - - //traumatic_shock is updated every tick, incrementing that is pointless - shock_stage is the counter. - //Not that it matters much for diona, who have NO_PAIN. - shock_stage++ - // TODO: stomach and bloodstream organ. if(!isSynthetic()) handle_trace_chems() diff --git a/code/modules/mob/living/carbon/human/species/station/station.dm b/code/modules/mob/living/carbon/human/species/station/station.dm index 231db8a9fb0..f1911b29df5 100644 --- a/code/modules/mob/living/carbon/human/species/station/station.dm +++ b/code/modules/mob/living/carbon/human/species/station/station.dm @@ -405,3 +405,33 @@ qdel(D) H.visible_message("\The [H] splits apart with a wet slithering noise!") + +/datum/species/diona/handle_environment_special(var/mob/living/carbon/human/H) + if(H.inStasisNow()) + return + + var/obj/item/organ/internal/diona/node/light_organ = locate() in H.internal_organs + + if(light_organ && !light_organ.is_broken()) + 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 = T.get_lumcount() * 10 + H.nutrition += light_amount + H.shock_stage -= light_amount + + if(H.nutrition > 450) + H.nutrition = 450 + if(light_amount >= 3) //if there's enough light, heal + H.adjustBruteLoss(-(round(light_amount/2))) + H.adjustFireLoss(-(round(light_amount/2))) + H.adjustToxLoss(-(light_amount)) + H.adjustOxyLoss(-(light_amount)) + //TODO: heal wounds, heal broken limbs. + + else if(H.nutrition < 200) + H.take_overall_damage(2,0) + + //traumatic_shock is updated every tick, incrementing that is pointless - shock_stage is the counter. + //Not that it matters much for diona, who have NO_PAIN. + H.shock_stage++