diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm
index 5c1f427a27e..0e7a5a0f217 100644
--- a/code/__DEFINES/flags.dm
+++ b/code/__DEFINES/flags.dm
@@ -37,19 +37,17 @@
#define NO_BLOOD 1
#define NO_BREATHE 2
#define NO_DNA 4
-#define RAD_ABSORB 8
-#define NO_SCAN 16
-#define NO_PAIN 32
-#define REQUIRE_LIGHT 64
-#define IS_WHITELISTED 128
-#define HAS_LIPS 256
-#define IS_PLANT 512
-#define CAN_BE_FAT 1024
-#define IS_RESTRICTED 2048
-#define NO_INTORGANS 4096
-#define NO_POISON 8192
-#define RADIMMUNE 16384
-#define ALL_RPARTS 32768
+#define NO_SCAN 8
+#define NO_PAIN 16
+#define IS_WHITELISTED 32
+#define HAS_LIPS 64
+#define IS_PLANT 128
+#define CAN_BE_FAT 256
+#define IS_RESTRICTED 512
+#define NO_INTORGANS 1024
+#define NO_POISON 2048
+#define RADIMMUNE 4096
+#define ALL_RPARTS 8192
//Species clothing flags
#define HAS_UNDERWEAR 1
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index c2ec65368a4..e81d90d184c 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -192,26 +192,15 @@
if (radiation > 100)
radiation = 100
- if(!(species.flags & RAD_ABSORB))
- Weaken(10)
- if(!lying)
- to_chat(src, "You feel weak.")
- emote("collapse")
+ Weaken(10)
+ if(!lying)
+ to_chat(src, "You feel weak.")
+ emote("collapse")
if (radiation < 0)
radiation = 0
else
- if(species.flags & RAD_ABSORB)
- var/rads = radiation/25
- radiation -= rads
- nutrition += rads
- adjustBruteLoss(-(rads))
- adjustOxyLoss(-(rads))
- adjustToxLoss(-(rads))
- updatehealth()
- return
-
var/damage = 0
switch(radiation)
if(0 to 49)
@@ -676,24 +665,6 @@
if(status_flags & GODMODE)
return 0 //godmode
- if(species.flags & REQUIRE_LIGHT)
- 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 = min(T.get_lumcount()*10, 5) //hardcapped so it's not abused by having a ton of flashlights
- nutrition += light_amount
- traumatic_shock -= light_amount
-
- if(species.flags & IS_PLANT)
- if(nutrition > 450)
- nutrition = 450
- if((light_amount >= 5) && !suiciding) //if there's enough light, heal
- adjustBruteLoss(-(light_amount/2))
- adjustFireLoss(-(light_amount/4))
- //adjustToxLoss(-(light_amount))
- adjustOxyLoss(-(light_amount))
- //TODO: heal wounds, heal broken limbs.
-
//The fucking FAT mutation is the greatest shit ever. It makes everyone so hot and bothered.
if(species.flags & CAN_BE_FAT)
if(FAT in mutations)
@@ -728,11 +699,6 @@
else
overeatduration -= 2
- if(species.flags & REQUIRE_LIGHT)
- if(nutrition < 200)
- take_overall_damage(10,0)
- traumatic_shock++
-
if (drowsyness)
drowsyness--
eye_blurry = max(2, eye_blurry)
diff --git a/code/modules/mob/living/carbon/human/species/station.dm b/code/modules/mob/living/carbon/human/species/station.dm
index 56566b71a92..ae20969bc00 100644
--- a/code/modules/mob/living/carbon/human/species/station.dm
+++ b/code/modules/mob/living/carbon/human/species/station.dm
@@ -622,7 +622,7 @@
even the simplest concepts of other minds. Their alien physiology allows them survive happily off a diet of nothing but light, \
water and other radiation."
- flags = NO_BREATHE | REQUIRE_LIGHT | IS_PLANT | RAD_ABSORB | NO_BLOOD | NO_PAIN
+ flags = NO_BREATHE | RADIMMUNE | IS_PLANT | NO_BLOOD | NO_PAIN
clothing_flags = HAS_SOCKS
dietflags = 0 //Diona regenerate nutrition in light, no diet necessary
@@ -672,23 +672,32 @@
return ..()
-/* //overpowered and dumb as hell; they get cloning back, though.
-/datum/species/diona/handle_death(var/mob/living/carbon/human/H)
+/datum/species/diona/handle_life(var/mob/living/carbon/human/H)
+ var/rads = H.radiation/25
+ H.radiation = Clamp(H.radiation - rads, 0, 100)
+ H.nutrition += rads
+ H.adjustBruteLoss(-(rads))
+ H.adjustOxyLoss(-(rads))
+ H.adjustToxLoss(-(rads))
- var/mob/living/simple_animal/diona/S = new(get_turf(H))
+ 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.traumatic_shock -= light_amount
- if(H.mind)
- H.mind.transfer_to(S)
- else
- S.key = H.key
+ if(H.nutrition > 450)
+ H.nutrition = 450
- for(var/mob/living/simple_animal/diona/D in H.contents)
- if(D.client)
- D.loc = H.loc
- else
- qdel(D)
+ if((light_amount >= 5) && !H.suiciding) //if there's enough light, heal
+ H.adjustBruteLoss(-(light_amount/2))
+ H.adjustFireLoss(-(light_amount/4))
+ H.adjustOxyLoss(-(light_amount))
- H.visible_message("