diff --git a/code/modules/mob/living/carbon/human/species/species_vr.dm b/code/modules/mob/living/carbon/human/species/species_vr.dm index 653af17a1b4..558924a784c 100644 --- a/code/modules/mob/living/carbon/human/species/species_vr.dm +++ b/code/modules/mob/living/carbon/human/species/species_vr.dm @@ -20,6 +20,17 @@ var/wikilink = null //link to wiki page for species var/icon_height = 32 var/agility = 20 //prob() to do agile things + + var/organic_food_coeff = 1 + var/synthetic_food_coeff = 0 + //var/vore_numbing = 0 + var/metabolism = 0.0015 + var/lightweight = FALSE //Oof! Nonhelpful bump stumbles. + var/trashcan = FALSE //It's always sunny in the wrestling ring. + var/eat_minerals = FALSE //HEAVY METAL DIET + var/base_species = null // Unused outside of a few species + var/selects_bodytype = FALSE // Allows the species to choose from body types like custom species can, affecting suit fitting and etcetera as you would expect. + var/is_weaver = FALSE var/silk_production = FALSE var/silk_reserve = 100 diff --git a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm index 7a95ed1d366..daead88b84f 100644 --- a/code/modules/mob/living/carbon/human/species/station/blank_vr.dm +++ b/code/modules/mob/living/carbon/human/species/station/blank_vr.dm @@ -1,14 +1,3 @@ - -/datum/species - //var/vore_numbing = 0 - var/gets_food_nutrition = TRUE // If this is set to 0, the person can't get nutrition from food. - var/metabolism = 0.0015 - var/lightweight = FALSE //Oof! Nonhelpful bump stumbles. - var/trashcan = FALSE //It's always sunny in the wrestling ring. - var/eat_minerals = FALSE //HEAVY METAL DIET - var/base_species = null //Used in every UpdateAppearance call. - var/selects_bodytype = FALSE // Allows the species to choose from body types intead of being forced to be just one. - /datum/species/New() if(!base_species) base_species = name diff --git a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm index e25e058948c..36b38148014 100644 --- a/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm +++ b/code/modules/mob/living/carbon/human/species/station/traits_vr/neutral.dm @@ -67,7 +67,7 @@ desc = "Makes you unable to gain nutrition from anything but blood. To compenstate, you get fangs that can be used to drain blood from prey." cost = 0 custom_only = FALSE - var_changes = list("gets_food_nutrition" = 0) //The verb is given in human.dm + var_changes = list("organic_food_coeff" = 0) //The verb is given in human.dm /datum/trait/bloodsucker/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) @@ -121,11 +121,19 @@ desc = "You only gain nutrition from raw ore and refined minerals. There's nothing that sates the appetite better than precious gems, exotic or rare minerals and you have damn fine taste. Anything else is beneath you." cost = 0 custom_only = FALSE - var_changes = list("gets_food_nutrition" = 0, "eat_minerals" = 1) + var_changes = list("organic_food_coeff" = 0, "eat_minerals" = 1) /datum/trait/gem_eater/apply(var/datum/species/S,var/mob/living/carbon/human/H) ..(S,H) H.verbs |= /mob/living/proc/eat_minerals + +/datum/trait/synth_chemfurnace + name = "Biofuel Processor" + desc = "You are able to gain energy through consuming and processing normal food. Energy-dense foods such as protein bars and survival food will yield the best results." + cost = 0 + custom_only = FALSE + can_take = SYNTHETICS + var_changes = list("organic_food_coeff" = 0, "synthetic_food_coeff" = 0.25) /datum/trait/glowing_eyes name = "Glowing Eyes" diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm index d8cdbc4c110..a235a617552 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Core.dm @@ -46,7 +46,7 @@ var/is_vampire = 0 //VOREStation Edit START if(ishuman(M)) var/mob/living/carbon/human/H = M - if(H.species.gets_food_nutrition == 0) + if(H.species.organic_food_coeff == 0) H.adjust_nutrition(removed) is_vampire = 1 //VOREStation Edit END if(alien == IS_SLIME) // Treat it like nutriment for the jello, but not equivalent. diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm index 1e0cb46f397..d1abb2b1991 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -11,6 +11,7 @@ var/nutriment_factor = 30 // Per unit var/injectable = 0 color = "#664330" + affects_robots = 1 //VOREStation Edit /datum/reagent/nutriment/mix_data(var/list/newdata, var/newamount) @@ -37,10 +38,14 @@ data -= taste /datum/reagent/nutriment/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) - if(!injectable && alien != IS_SLIME && alien != IS_CHIMERA) //VOREStation Edit + if(!injectable && alien != IS_SLIME && alien != IS_CHIMERA && !M.isSynthetic()) //VOREStation Edit M.adjustToxLoss(0.1 * removed) return affect_ingest(M, alien, removed) + //VOREStation Edits Start + if(M.isSynthetic() && M.nutrition < 500) + M.adjust_nutrition((nutriment_factor * removed) * M.species.synthetic_food_coeff) + //VOREStation Edits End /datum/reagent/nutriment/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) switch(alien) @@ -48,10 +53,11 @@ if(IS_UNATHI) removed *= 0.5 if(IS_CHIMERA) removed *= 0.25 //VOREStation Edit if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume. - M.heal_organ_damage(0.5 * removed, 0) - if(M.species.gets_food_nutrition) //VOREStation edit. If this is set to 0, they don't get nutrition from food. - M.adjust_nutrition(nutriment_factor * removed) // For hunger and fatness - M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) + //VOREStation Edits Start + if(!M.isSynthetic()) + M.adjust_nutrition((nutriment_factor * removed) * M.species.organic_food_coeff) + M.heal_organ_damage(0.5 * removed, 0) + M.add_chemical_effect(CE_BLOODRESTORE, 4 * removed) // Aurora Cooking Port Insertion Begin diff --git a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm index 902427783f0..246bb05b2c8 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks_vr.dm @@ -125,7 +125,7 @@ /datum/reagent/ethanol/monstertamer/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() - if(M.species.gets_food_nutrition) //it's still food! + if(M.species.organic_food_coeff) //it's still food! switch(alien) if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein. if(IS_SKRELL) @@ -151,7 +151,7 @@ ..() if(alien == IS_SKRELL) M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. - if(M.species.gets_food_nutrition) + if(M.species.organic_food_coeff) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein M.adjust_nutrition(alt_nutriment_factor * removed) @@ -430,7 +430,7 @@ /datum/reagent/ethanol/hairoftherat/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) ..() - if(M.species.gets_food_nutrition) //it's still food! + if(M.species.organic_food_coeff) //it's still food! switch(alien) if(IS_DIONA) //Diona don't get any nutrition from nutriment or protein. if(IS_SKRELL) @@ -456,6 +456,6 @@ ..() if(alien == IS_SKRELL) M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein. - if(M.species.gets_food_nutrition) + if(M.species.organic_food_coeff) if(alien == IS_SLIME || alien == IS_CHIMERA) //slimes and chimera can get nutrition from injected nutriment and protein - M.nutrition += (alt_nutriment_factor * removed) + M.nutrition += (alt_nutriment_factor * removed) \ No newline at end of file