Merge pull request #7864 from KillianKirilenko/kk-diet

Diet/Allergy System Rework
This commit is contained in:
Atermonera
2021-02-19 12:42:25 -08:00
committed by GitHub
5 changed files with 316 additions and 27 deletions
+13
View File
@@ -24,6 +24,19 @@
#define EMP_TOX_DMG 0x80 // EMPs inflict toxin damage
#define EMP_OXY_DMG 0x100 // EMPs inflict oxy damage
// Species allergens
#define MEAT 0x1 // Skrell won't like this.
#define FISH 0x2 // Seperate for completion's sake. Still bad for skrell.
#define FRUIT 0x4 // An apple a day only keeps the doctor away if they're allergic.
#define VEGETABLE 0x8 // Taters 'n' carrots. Potato allergy is a thing, apparently.
#define GRAINS 0x10 // Wheat, oats, etc.
#define BEANS 0x20 // The musical fruit! Includes soy.
#define SEEDS 0x40 // Hope you don't have a nut allergy.
#define DAIRY 0x80 // Lactose intolerance, ho! Also bad for skrell.
#define FUNGI 0x100 // Delicious shrooms.
#define COFFEE 0x200 // Mostly here for tajara.
#define GENERIC 0x400 // Catchall for stuff that doesn't fall into the groups above. You shouldn't be allergic to this type, ever.
// Species spawn flags
#define SPECIES_IS_WHITELISTED 0x1 // Must be whitelisted to play.
#define SPECIES_IS_RESTRICTED 0x2 // Is not a core/normally playable species. (castes, mutantraces)
@@ -52,6 +52,8 @@
var/active_regen_mult = 1 // Multiplier for 'Regenerate' power speed, in human_powers.dm
var/taste_sensitivity = TASTE_NORMAL // How sensitive the species is to minute tastes.
var/allergens = null // Things that will make this species very sick
var/allergen_severity = 0.5 // How bad are reactions to the allergen? This is raw toxin damage per metabolism tick, multiplied by the amount metabolized
var/min_age = 17
var/max_age = 70
@@ -225,6 +225,7 @@
base_color = "#333333"
reagent_tag = IS_TAJARA
allergens = COFFEE
move_trail = /obj/effect/decal/cleanable/blood/tracks/paw
@@ -312,6 +313,7 @@
breath_heat_level_3 = 1350 //Default 1250
reagent_tag = IS_SKRELL
allergens = MEAT|FISH|DAIRY
has_limbs = list(
BP_TORSO = list("path" = /obj/item/organ/external/chest),
@@ -82,6 +82,8 @@
var/nutriment_factor = 0
var/strength = 10 // This is, essentially, units between stages - the lower, the stronger. Less fine tuning, more clarity.
var/allergen_type = GENERIC // What potential allergens does this contain?
var/allergen_factor = 0.5 // If the potential allergens are mixed and low-volume, they're a bit less dangerous. Needed for drinks because they're a single reagent compared to food which contains multiple seperate reagents.
var/toxicity = 1
var/druggy = 0
@@ -139,6 +141,9 @@
if(halluci)
M.hallucination = max(M.hallucination, halluci*3)
if(M.species.allergens & allergen_type)
M.adjustToxLoss(((M.species.allergen_severity*allergen_factor)*4) * removed)
/datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
if(issmall(M)) removed *= 2
@@ -183,6 +188,9 @@
if(halluci)
M.hallucination = max(M.hallucination, halluci)
if(M.species.allergens & allergen_type)
M.adjustToxLoss((M.species.allergen_severity*allergen_factor) * removed)
/datum/reagent/ethanol/touch_obj(var/obj/O)
if(istype(O, /obj/item/weapon/paper))
File diff suppressed because it is too large Load Diff