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..9f57511f38b 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -192,7 +192,7 @@ if (radiation > 100) radiation = 100 - if(!(species.flags & RAD_ABSORB)) + if(!get_int_organ(/obj/item/organ/internal/heart/diona)) Weaken(10) if(!lying) to_chat(src, "You feel weak.") @@ -202,14 +202,7 @@ radiation = 0 else - if(species.flags & RAD_ABSORB) - var/rads = radiation/25 - radiation -= rads - nutrition += rads - adjustBruteLoss(-(rads)) - adjustOxyLoss(-(rads)) - adjustToxLoss(-(rads)) - updatehealth() + if(get_int_organ(/obj/item/organ/internal/heart/diona)) return var/damage = 0 @@ -676,24 +669,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 +703,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..5cc20e66bb7 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 | 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 -= rads + 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("