Food Preferences (#15850)

* Food Preferences

Ported from roguestar, originally made by VerySoft: https://github.com/TS-Rogue-Star/Rogue-Star/pull/37
Numbers have been tweaked, and the bonus significantly lowered.

Added new neutral traits: Food Preferences.

Foods with the relevant allergens present will give you bonus nutrition, approximately a 25% boost on most foods that I tested.

Only one of these traits can be taken at a time.

* stuff
This commit is contained in:
SatinIsle
2024-03-22 03:29:36 +10:00
committed by GitHub
parent d86df71855
commit 606107927e
4 changed files with 241 additions and 3 deletions
+6
View File
@@ -548,3 +548,9 @@
if(src.wear_mask) //if the mob is not human, it cleans the mask without asking for bitflags
if(src.wear_mask.clean_blood())
src.update_inv_wear_mask(0)
/mob/living/carbon/proc/food_preference(var/allergen_type) //RS edit
if(allergen_type in species.food_preference)
return species.food_preference_bonus
return 0
@@ -42,6 +42,8 @@
var/can_climb = FALSE
var/climbing_delay = 1.5 // We climb with a quarter delay
var/list/food_preference = list() //RS edit
var/food_preference_bonus = 0
/datum/species/proc/give_numbing_bite() //Holy SHIT this is hacky, but it works. Updating a mob's attacks mid game is insane.
unarmed_attacks = list()
@@ -774,3 +774,231 @@
/datum/trait/neutral/synth_cosmetic_pain/apply(var/datum/species/S,var/mob/living/carbon/human/H, var/trait_prefs = null)
..()
H.verbs |= /mob/living/carbon/human/proc/toggle_pain_module
//Food preferences ported from RogueStar
/datum/trait/neutral/food_pref
name = "Food Preference - Carnivore"
desc = "You prefer to eat meat, and gain extra nutrition for doing so!"
cost = 0
custom_only = FALSE
can_take = ORGANICS
var_changes = list("food_preference_bonus" = 5)
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
var/list/our_allergens = list(ALLERGEN_MEAT)
/datum/trait/neutral/food_pref/apply(datum/species/S, mob/living/carbon/human/H, trait_prefs)
. = ..()
for(var/a in our_allergens)
S.food_preference |= a
/datum/trait/neutral/food_pref/herbivore
name = "Food Preference - Herbivore"
desc = "You prefer to eat fruits and vegitables, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_VEGETABLE,ALLERGEN_FRUIT)
/datum/trait/neutral/food_pref/beanivore
name = "Food Preference - Legumovore"
desc = "You prefer to eat bean related foods, such as tofu, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_BEANS)
/datum/trait/neutral/food_pref/omnivore
name = "Food Preference - Omnivore"
desc = "You prefer to eat meat and vegitables, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_VEGETABLE,ALLERGEN_MEAT)
/datum/trait/neutral/food_pref/fungivore
name = "Food Preference - Fungivore"
desc = "You prefer to eat mushrooms and fungus, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_FUNGI)
/datum/trait/neutral/food_pref/piscivore
name = "Food Preference - Piscivore"
desc = "You prefer to eat fish, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_FISH)
/datum/trait/neutral/food_pref/granivore
name = "Food Preference - Granivore"
desc = "You prefer to eat grains and seeds, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_GRAINS,ALLERGEN_SEEDS)
/datum/trait/neutral/food_pref/cocoavore
name = "Food Preference - Cocoavore"
desc = "You prefer to eat chocolate, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_CHOCOLATE)
/datum/trait/neutral/food_pref/glycovore
name = "Food Preference - Glycovore"
desc = "You prefer to eat sugar, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_SUGARS)
/datum/trait/neutral/food_pref/lactovore
name = "Food Preference - Lactovore"
desc = "You prefer to eat and drink things with milk in them, and gain extra nutrition for doing so!"
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/coffee,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_DAIRY)
/datum/trait/neutral/food_pref/coffee
name = "Food Preference - Coffee Dependant"
desc = "You can get by on coffee alone if you have to, and you like it that way."
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/stimulant
)
our_allergens = list(ALLERGEN_COFFEE)
/datum/trait/neutral/food_pref/stimulant
name = "Food Preference - Stimulant Dependant"
desc = "You can get by on caffine alone if you have to, and you like it that way."
excludes = list(
/datum/trait/neutral/food_pref,
/datum/trait/neutral/food_pref/herbivore,
/datum/trait/neutral/food_pref/beanivore,
/datum/trait/neutral/food_pref/omnivore,
/datum/trait/neutral/food_pref/fungivore,
/datum/trait/neutral/food_pref/piscivore,
/datum/trait/neutral/food_pref/granivore,
/datum/trait/neutral/food_pref/cocoavore,
/datum/trait/neutral/food_pref/glycovore,
/datum/trait/neutral/food_pref/lactovore,
/datum/trait/neutral/food_pref/coffee
)
our_allergens = list(ALLERGEN_STIMULANT)