From f059c396eb18fbdc5418fd38edc888fd0b61f4e2 Mon Sep 17 00:00:00 2001 From: Rykka Date: Mon, 17 Aug 2020 08:07:03 -0400 Subject: [PATCH] Adds Spice Resistence/Intolerance Traits, Makes Frost Oil COLD - Spice Resistance traits in the same flavor as Booze traits. - 3x, 2x, 1.5x, 0.75x, 0.5x, 0.25x resistance to the effects of capsaicin and frost oil. - Frost Oil and Capsaicin will now **lower/increase your body temperature by a random amount** during the ingest step if you're over the danger threshold. - var/spice_mod is added to the species datums, much like alcohol mod. - Frost Oil will now remove 5 capsaicin on affect_ingest much like capsaicin would remove 5 frostoil. Not much else to say. I got tired of keeling over in agony after eating spicy food, and frankly, this is an RP server, so mechanical hardlimits on characters that canonically power down spicy food without giving a shit is frustrating to say the least. All changes minus the neutral traits will be PR'd to Polaris. --- .../living/carbon/human/species/species.dm | 1 + .../species/station/traits_vr/neutral.dm | 37 +++++++++++++++++++ .../Chemistry-Reagents-Food-Drinks.dm | 34 ++++++++++++++--- 3 files changed, 67 insertions(+), 5 deletions(-) diff --git a/code/modules/mob/living/carbon/human/species/species.dm b/code/modules/mob/living/carbon/human/species/species.dm index 237428e24b1..2157bce7598 100644 --- a/code/modules/mob/living/carbon/human/species/species.dm +++ b/code/modules/mob/living/carbon/human/species/species.dm @@ -100,6 +100,7 @@ var/chemOD_mod = 1 // Damage modifier for overdose; higher = more damage from ODs var/alcohol_mod = 1 // Multiplier to alcohol strength; 0.5 = half, 0 = no effect at all, 2 = double, etc. var/pain_mod = 1 // Multiplier to pain effects; 0.5 = half, 0 = no effect (equal to NO_PAIN, really), 2 = double, etc. + var/spice_mod = 1 // Multiplier to spice/capsaicin/frostoil effects; 0.5 = half, 0 = no effect (immunity), 2 = double, etc. // set below is EMP interactivity for nonsynth carbons var/emp_sensitivity = 0 // bitflag. valid flags are: EMP_PAIN, EMP_BLIND, EMP_DEAFEN, EMP_CONFUSE, EMP_STUN, and EMP_(BRUTE/BURN/TOX/OXY)_DMG var/emp_dmg_mod = 1 // Multiplier to all EMP damage sustained by the mob, if it's EMP-sensitive 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 a16a72c6c20..9487ea36faf 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 @@ -132,7 +132,44 @@ ..(S,H) H.verbs |= /mob/living/proc/glow_toggle H.verbs |= /mob/living/proc/glow_color + +// Spicy Food Traits, from negative to positive. +/datum/trait/spice_intolerance_extreme + name = "Extreme Spice Intolerance" + desc = "Spicy (and chilly) peppers are three times as strong. (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 3) // 300% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! +/datum/trait/spice_intolerance_basic + name = "Heavy Spice Intolerance" + desc = "Spicy (and chilly) peppers are twice as strong. (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 2) // 200% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! + +/datum/trait/spice_intolerance_slight + name = "Slight Spice Intolerance" + desc = "You have a slight struggle with spicy foods. Spicy (and chilly) peppers are one and a half times stronger. (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 1.5) // 150% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! + +/datum/trait/spice_tolerance_basic + name = "Spice Tolerance" + desc = "Spicy (and chilly) peppers are only three-quarters as strong. (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 0.75) // 75% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! + +/datum/trait/spice_tolerance_advanced + name = "Strong Spice Tolerance" + desc = "Spicy (and chilly) peppers are only half as strong. (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 0.5) // 50% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! + +/datum/trait/spice_immunity + name = "Extreme Spice Tolerance" + desc = "Spicy (and chilly) peppers are basically ineffective! (This does not affect pepperspray.)" + cost = 0 + var_changes = list("spice_mod" = 0.25) // 25% as effective if spice_mod is set to 1. If it's not 1 in species.dm, update this! + // Alcohol Traits Start Here, from negative to positive. /datum/trait/alcohol_intolerance_advanced name = "Liver of Air" 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 43a3bf269c7..ff0bcf4bbc0 100644 --- a/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm +++ b/code/modules/reagents/Chemistry-Reagents/Chemistry-Reagents-Food-Drinks.dm @@ -619,6 +619,28 @@ M.emote("shiver") holder.remove_reagent("capsaicin", 5) +/datum/reagent/frostoil/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed) // Eating frostoil now acts like capsaicin. Wee! + if(alien == IS_DIONA) + return + if(alien == IS_ALRAUNE) // VOREStation Edit: It wouldn't affect plants that much. + if(prob(5)) + to_chat(M, "You feel a chilly, tingling sensation in your mouth.") + M.bodytemperature -= rand(10, 25) + return + if(ishuman(M)) + var/mob/living/carbon/human/H = M + if(!H.can_feel_pain()) + return + var/effective_dose = (dose * M.species.spice_mod) + if((effective_dose < 5) && (dose == metabolism || prob(5))) + to_chat(M, "Your insides suddenly feel a spreading chill!") + if(effective_dose >= 5) + M.apply_effect(2 * M.species.spice_mod, AGONY, 0) + M.bodytemperature -= rand(1, 5) * spice_mod // Really fucks you up, cause it makes you cold. + if(prob(5)) + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", pick("You feel like your insides are freezing!", "Your insides feel like they're turning to ice!")) + holder.remove_reagent("capsaicin", 5) + /datum/reagent/frostoil/cryotoxin //A longer lasting version of frost oil. name = "Cryotoxin" id = "cryotoxin" @@ -654,13 +676,15 @@ var/mob/living/carbon/human/H = M if(!H.can_feel_pain()) return - - if(dose < 5 && (dose == metabolism || prob(5))) + + var/effective_dose = (dose * M.species.spice_mod) + if((effective_dose < 5) && (dose == metabolism || prob(5))) to_chat(M, "Your insides feel uncomfortably hot!") - if(dose >= 5) - M.apply_effect(2, AGONY, 0) + if(effective_dose >= 5) + M.apply_effect(2 * M.species.spice_mod, AGONY, 0) + M.bodytemperature += rand(1, 5) * spice_mod // Really fucks you up, cause it makes you overheat, too. if(prob(5)) - M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", "You feel like your insides are burning!") + M.visible_message("[M] [pick("dry heaves!","coughs!","splutters!")]", pick("You feel like your insides are burning!", "You feel like your insides are on fire!", "You feel like your belly is full of lava!")) holder.remove_reagent("frostoil", 5) /datum/reagent/condensedcapsaicin