diff --git a/code/__DEFINES/flags.dm b/code/__DEFINES/flags.dm index a54cef72f86..ea8ceb93c95 100644 --- a/code/__DEFINES/flags.dm +++ b/code/__DEFINES/flags.dm @@ -60,6 +60,11 @@ #define HAS_SKIN_COLOR 32 #define TAIL_WAGGING 64 +//Species Diet Flags +#define DIET_CARN 1 +#define DIET_OMNI 2 +#define DIET_HERB 4 + //bitflags for door switches. #define OPEN 1 diff --git a/code/modules/mob/living/carbon/human/species/apollo.dm b/code/modules/mob/living/carbon/human/species/apollo.dm index a1beed27be9..bddfa770a14 100644 --- a/code/modules/mob/living/carbon/human/species/apollo.dm +++ b/code/modules/mob/living/carbon/human/species/apollo.dm @@ -35,7 +35,7 @@ ) flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | NO_BREATHE | HAS_SKIN_COLOR | NO_SCAN | NO_SCAN | HIVEMIND - + dietflags = DIET_HERB //bees feed off nectar, so bee people feed off plants too base_color = "#704300" flesh_color = "#704300" @@ -88,6 +88,7 @@ burn_mod = 4 // holy shite, poor guys wont survive half a second cooking smores brute_mod = 2 // damn, double wham, double dam flags = IS_WHITELISTED | NO_BREATHE | NO_BLOOD | NO_PAIN | HAS_LIPS | NO_SCAN + dietflags = DIET_OMNI //still human at their core, so they maintain their eating habits and diet has_organ = list( "heart" = /obj/item/organ/heart, diff --git a/code/modules/mob/living/carbon/human/species/golem.dm b/code/modules/mob/living/carbon/human/species/golem.dm index d32de91c2a6..1cc0f1a89dd 100644 --- a/code/modules/mob/living/carbon/human/species/golem.dm +++ b/code/modules/mob/living/carbon/human/species/golem.dm @@ -6,6 +6,7 @@ default_language = "Galactic Common" flags = NO_BREATHE | NO_PAIN | NO_BLOOD | NO_SCAN + dietflags = DIET_OMNI //golems can eat anything because they are magic or something blood_color = "#515573" flesh_color = "#137E8F" diff --git a/code/modules/mob/living/carbon/human/species/plasmaman.dm b/code/modules/mob/living/carbon/human/species/plasmaman.dm index aee4d5660f0..851b970e8fe 100644 --- a/code/modules/mob/living/carbon/human/species/plasmaman.dm +++ b/code/modules/mob/living/carbon/human/species/plasmaman.dm @@ -6,6 +6,7 @@ unarmed_type = /datum/unarmed_attack/punch flags = IS_WHITELISTED | NO_BLOOD + dietflags = DIET_OMNI //default_mutations=list(SKELETON) // This screws things up diff --git a/code/modules/mob/living/carbon/human/species/shadow.dm b/code/modules/mob/living/carbon/human/species/shadow.dm index 35335193c41..8b36b05b18e 100644 --- a/code/modules/mob/living/carbon/human/species/shadow.dm +++ b/code/modules/mob/living/carbon/human/species/shadow.dm @@ -18,6 +18,7 @@ flags = NO_BLOOD | NO_BREATHE | NO_SCAN bodyflags = FEET_NOSLIP + dietflags = DIET_OMNI //the mutation process allowed you to now digest all foods regardless of initial race /datum/species/shadow/handle_death(var/mob/living/carbon/human/H) H.dust() \ No newline at end of file diff --git a/code/modules/mob/living/carbon/species.dm b/code/modules/mob/living/carbon/species.dm index a230ad2f7e5..5712d788ce8 100644 --- a/code/modules/mob/living/carbon/species.dm +++ b/code/modules/mob/living/carbon/species.dm @@ -53,6 +53,7 @@ var/flags = 0 // Various specific features. var/bloodflags=0 var/bodyflags=0 + var/dietflags = 0 // Make sure you set this, otherwise it won't be able to digest a lot of foods var/list/abilities = list() // For species-derived or admin-given powers @@ -321,6 +322,7 @@ path = /mob/living/carbon/human/human flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT bodyflags = HAS_SKIN_TONE + dietflags = DIET_OMNI unarmed_type = /datum/unarmed_attack/punch blurb = "Humanity originated in the Sol system, and over the last five centuries has spread \ colonies across a wide swathe of space. They hold a wide range of forms and creeds.

\ @@ -348,6 +350,7 @@ flags = HAS_LIPS | HAS_UNDERWEAR bodyflags = FEET_CLAWS | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING + dietflags = DIET_CARN cold_level_1 = 280 //Default 260 - Lower is better cold_level_2 = 220 //Default 200 @@ -397,6 +400,7 @@ flags = HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT bodyflags = FEET_PADDED | HAS_TAIL | HAS_SKIN_COLOR | TAIL_WAGGING + dietflags = DIET_OMNI flesh_color = "#AFA59E" base_color = "#333333" @@ -423,6 +427,7 @@ flags = HAS_LIPS | HAS_UNDERWEAR bodyflags = HAS_SKIN_COLOR + dietflags = DIET_HERB flesh_color = "#8CD7A3" blood_color = "#1D2CBF" @@ -461,6 +466,7 @@ poison_type = "oxygen" flags = NO_SCAN | IS_WHITELISTED + dietflags = DIET_OMNI blood_color = "#2299FC" flesh_color = "#808D11" @@ -514,6 +520,7 @@ poison_type = "oxygen" flags = NO_SCAN | NO_BLOOD | HAS_TAIL | NO_PAIN | IS_WHITELISTED + dietflags = DIET_OMNI //should inherit this from vox, this is here just in case blood_color = "#2299FC" flesh_color = "#808D11" @@ -546,6 +553,7 @@ flags = IS_WHITELISTED bodyflags = FEET_CLAWS + dietflags = DIET_OMNI blood_color = "#FB9800" @@ -563,6 +571,7 @@ flags = IS_WHITELISTED | NO_BREATHE | HAS_LIPS | NO_INTORGANS | NO_SCAN bodyflags = HAS_SKIN_COLOR bloodflags = BLOOD_SLIME + dietflags = DIET_CARN //ventcrawler = 1 //ventcrawling commented out @@ -587,6 +596,7 @@ primitive = /mob/living/carbon/monkey // TODO flags = IS_WHITELISTED | HAS_LIPS | HAS_UNDERWEAR | CAN_BE_FAT + dietflags = DIET_HERB blood_color = "#A200FF" @@ -634,6 +644,7 @@ water and other radiation." flags = NO_BREATHE | REQUIRE_LIGHT | IS_PLANT | RAD_ABSORB | NO_BLOOD | NO_PAIN + dietflags = DIET_HERB //Diona regenerate nutrition in light, but could assimilate plantmatter if they ingest it body_temperature = T0C + 15 //make the plant people have a bit lower body temperature, why not @@ -719,6 +730,7 @@ synth_temp_gain = 10 //this should cause IPCs to stabilize at ~80 C in a 20 C environment. flags = IS_WHITELISTED | NO_BREATHE | NO_SCAN | NO_BLOOD | NO_PAIN | IS_SYNTHETIC | NO_INTORGANS + dietflags = DIET_OMNI //IPCs can't eat, this is here for the sake of standardized code blood_color = "#1F181F" flesh_color = "#AAAAAA" diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index fc2c8567525..90a89c43490 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -1485,10 +1485,31 @@ datum /////////////////////////Food Reagents//////////////////////////// // Part of the food code. Nutriment is used instead of the old "heal_amt" code. Also is where all the food // condiments, additives, and such go. - nutriment + nutriment // Pure nutriment, universally digestable and thus slightly less effective name = "Nutriment" id = "nutriment" - description = "All the vitamins, minerals, and carbohydrates the body needs in pure form." + description = "A questionable mixture of various pure nutrients commonly found in processed foods." + reagent_state = SOLID + nutriment_factor = 12 * REAGENTS_METABOLISM + color = "#664330" // rgb: 102, 67, 48 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!(M.mind in ticker.mode.vampires)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) + ..() + return + + protein // Meat-based protein, digestable by carnivores and omnivores, worthless to herbivores + name = "Protein" + id = "protein" + description = "Various essential proteins and fats commonly found in animal flesh and blood." reagent_state = SOLID nutriment_factor = 15 * REAGENTS_METABOLISM color = "#664330" // rgb: 102, 67, 48 @@ -1496,8 +1517,34 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom if(!(M.mind in ticker.mode.vampires)) - M.nutrition += nutriment_factor // For hunger and fatness - if(prob(50)) M.heal_organ_damage(1,0) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_HERB)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) + ..() + return + + plantmatter // Plant-based biomatter, digestable by herbivores and omnivores, worthless to carnivores + name = "Plant-matter" + id = "plantmatter" + description = "Vitamin-rich fibers and natural sugars commonly found in fresh produce." + reagent_state = SOLID + nutriment_factor = 15 * REAGENTS_METABOLISM + color = "#664330" // rgb: 102, 67, 48 + + on_mob_life(var/mob/living/M as mob) + if(!M) M = holder.my_atom + if(!(M.mind in ticker.mode.vampires)) + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(H.species && H.species.dietflags && !(H.species.dietflags & DIET_CARN)) //Make sure the species has it's dietflag set, otherwise it can't digest any nutrients + H.nutrition += nutriment_factor // For hunger and fatness + if(prob(50)) M.heal_organ_damage(1,0) + if(istype(M,/mob/living/simple_animal)) //Any nutrients can heal simple animals + if(prob(50)) M.heal_organ_damage(1,0) ..() return