[MIRROR] Sensitive Biochem Fixes & Additions (#10480)

Co-authored-by: Cameron Lennox <killer65311@gmail.com>
This commit is contained in:
CHOMPStation2StaffMirrorBot
2025-03-20 16:09:05 -07:00
committed by GitHub
parent 8fb56e9d8b
commit 03374077b1
8 changed files with 85 additions and 87 deletions

View File

@@ -130,7 +130,7 @@
var/chem_strength_heal = 1 // Multiplier to most beneficial chem strength
var/chem_strength_pain = 1 // Multiplier to painkiller strength (could be used in a negative trait to simulate long-term addiction reducing effects, etc.)
var/chem_strength_tox = 1 // Multiplier to toxic chem strength (inc. chloral/sopo/mindbreaker/etc. thresholds)
var/chem_strength_tox = 1 // Multiplier to the strength of toxic or deabilitating chemicals (inc. chloral/sopo/mindbreaker/ambrosia/etc. thresholds)
var/chem_strength_alcohol = 1 // Multiplier to alcohol effect thresholds; higher means more is needed to reach a given effect tier
var/chemOD_threshold = 1 // Multiplier to overdose threshold; lower = easier overdosing

View File

@@ -584,16 +584,6 @@
H.fear = min((H.fear + 3), 102)
/datum/trait/negative/endurance_glass // Glass Cannon
name = "Glass Endurance"
desc = "Your body is very fragile. Reduces your maximum hitpoints to 25. Beware sneezes. You require only 50 damage in total to die, compared to 200 normally. You will go into crit after losing 25 HP, compared to crit at 100 HP."
cost = -12 // Similar to Very Low Endurance, this straight up will require you NEVER getting in a fight. This is extremely crippling. I salute the madlad that takes this.
var_changes = list("total_health" = 25)
/datum/trait/negative/endurance_glass/apply(var/datum/species/S,var/mob/living/carbon/human/H)
..()
H.setMaxHealth(S.total_health)
/datum/trait/negative/endurance_glass // Glass Cannon
name = "Glass Endurance"
desc = "Your body is very fragile. Reduces your maximum hitpoints to 25. Beware sneezes. You require only 50 damage in total to die, compared to 200 normally. You will go into crit after losing 25 HP, compared to crit at 100 HP."
@@ -689,15 +679,36 @@
primitive_expression_messages=list("bumps their toe, screaming in pain")
/datum/trait/negative/sensitive_biochem
name = "Sensitive Biochemistry"
desc = "Your biochemistry is a little delicate, rendering you more susceptible to both deadly toxins and the more subtle ones. You'll probably want to list this in your medical records, and perhaps in your exploitable info as well. Toxin damages and knockout drugs are 25% stronger on you."
name = "Sensitive Biochemistry, Minor"
desc = "Your biochemistry is a little delicate, rendering you more susceptible to the negative effects of some chemicals. You'll probably want to list this in your medical records, and perhaps in your exploitable info as well. Chemical toxin damage and negative drug effects are 25% stronger on you. Additionally, knockout drugs work 25% faster on you."
cost = -1
var_changes = list("chem_strength_tox" = 1.25)
//Traitgenes
is_genetrait = TRUE
can_take = ORGANICS
is_genetrait = FALSE
hidden = FALSE
/datum/trait/negative/sensitive_biochem/moderate
name = "Sensitive Biochemistry, Moderate"
desc = "Your biochemistry is a quite delicate, rendering you more susceptible to the negative effects of some chemicals. You'll probably want to list this in your medical records, and perhaps in your exploitable info as well. Chemical toxin damage and negative drug effects are 50% stronger on you. Additionally, knockout drugs work 50% faster on you."
cost = -2
var_changes = list("chem_strength_tox" = 1.5)
//Traitgenes
can_take = ORGANICS
is_genetrait = FALSE
/datum/trait/negative/sensitive_biochem/major
name = "Sensitive Biochemistry, Major"
desc = "Your biochemistry is a much more delicate, rendering you more susceptible to the negative effects of some chemicals. You'll probably want to list this in your medical records, and perhaps in your exploitable info as well. Chemical toxin damage and negative drug effects are 100% stronger on you. Additionally, knockout drugs work 100% faster on you."
cost = -3
var_changes = list("chem_strength_tox" = 2)
//Traitgenes
can_take = ORGANICS
is_genetrait = TRUE
/datum/trait/negative/slipperydirt
name = "Dirt Vulnerability"
desc = "Even the tiniest particles of dirt give you uneasy footing, even through several layers of footwear."

View File

@@ -58,10 +58,10 @@
/datum/reagent/drugs/bliss/affect_blood(mob/living/carbon/M, var/alien, var/removed)
..()
var/drug_strength = 15
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
if(M.species.chem_strength_tox > 0)
drug_strength *= M.species.chem_strength_tox
if(alien == IS_SLIME)
drug_strength = drug_strength * 1.2
drug_strength *= 0.15 //~ 1/6
M.druggy = max(M.druggy, drug_strength)
if(prob_proc == TRUE && prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained() && !M.resting) // CHOMPstation edit - Stop drug movement from forcing crawling
@@ -102,10 +102,10 @@
/datum/reagent/drugs/ambrosia_extract/affect_blood(mob/living/carbon/M, var/alien, var/removed)
..()
var/drug_strength = 3
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
drug_strength *= M.species.chem_strength_tox
if(alien == IS_SLIME)
drug_strength = drug_strength * 1.2
drug_strength *= 0.15 //~ 1/6
M.adjustToxLoss(-2)
M.druggy = max(M.druggy, drug_strength)
@@ -134,12 +134,12 @@
/datum/reagent/drugs/psilocybin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/threshold = 1 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
threshold = 1.2
var/threshold = 1
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
threshold /= M.species.chem_strength_tox
if(alien == IS_SLIME)
threshold = 0.8
threshold *= 0.15 //~1/6
M.druggy = max(M.druggy, 30)
@@ -187,9 +187,9 @@
/datum/reagent/drugs/talum_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/drug_strength = 29 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
var/drug_strength = 29
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
drug_strength *= M.species.chem_strength_tox
else
M.adjustToxLoss(10 * removed) //Given incorporations of other toxins with similiar damage, this seems right.

View File

@@ -845,8 +845,6 @@
var/effective_strength = 5
if(alien == IS_SKRELL) //Larger eyes means bigger targets.
effective_strength = 8
if(ishuman(M))
var/mob/living/carbon/human/H = M
@@ -4276,8 +4274,10 @@
return
var/drug_strength = 10
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
if(M.species.chem_strength_tox > 0)
drug_strength *= M.species.chem_strength_tox
if(alien == IS_SLIME)
drug_strength *= 0.15 //~ 1/6
M.druggy = max(M.druggy, drug_strength)
if(prob(10) && isturf(M.loc) && !istype(M.loc, /turf/space) && M.canmove && !M.restrained())

View File

@@ -109,8 +109,6 @@
/datum/reagent/ethanol/monstertamer/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_SKRELL)
M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein.
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)
@@ -476,8 +474,6 @@
/datum/reagent/ethanol/hairoftherat/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(alien == IS_SKRELL)
M.adjustToxLoss(removed) //Equivalent to half as much protein, since it's half protein.
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)
@@ -900,12 +896,12 @@
/datum/reagent/drink/coffee/nukie/mega/high/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
..()
var/threshold = 1 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
threshold = 1.2
var/threshold = 1
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
threshold /= M.species.chem_strength_tox
if(alien == IS_SLIME)
threshold = 0.8
threshold *= 0.15 //~1/6
M.druggy = max(M.druggy, 30)
M.adjust_nutrition(-10 * removed)

View File

@@ -57,7 +57,7 @@
if(alien == IS_SLIME)
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(4 * removed * chem_effective, 0) //VOREStation Edit
M.heal_organ_damage(4 * removed * chem_effective, 0)
/datum/reagent/bicaridine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
@@ -139,7 +139,7 @@
chem_effective = 0.5
M.adjustBruteLoss(2 * removed) //Mends burns, but has negative effects with a Promethean's skeletal structure.
if(alien != IS_DIONA)
M.heal_organ_damage(0, 4 * removed * chem_effective) //VOREStation edit
M.heal_organ_damage(0, 4 * removed * chem_effective)
/datum/reagent/dermaline
name = REAGENT_DERMALINE
@@ -158,7 +158,7 @@
if(alien == IS_SLIME)
chem_effective = 0.75
if(alien != IS_DIONA)
M.heal_organ_damage(0, 8 * removed * chem_effective) //VOREStation edit
M.heal_organ_damage(0, 8 * removed * chem_effective)
/datum/reagent/dermaline/topical
name = REAGENT_DERMALAZE
@@ -254,21 +254,21 @@
color = "#0080FF"
overdose = REAGENTS_OVERDOSE
scannable = 1
metabolism = REM * 0.25 //VOREStation Edit
metabolism = REM * 0.25
/datum/reagent/dexalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_VOX)
M.adjustToxLoss(removed * 24) //VOREStation Edit
M.adjustToxLoss(removed * 24)
else if(alien == IS_SLIME && dose >= 15)
M.add_chemical_effect(CE_PAINKILLER, 15 * M.species.chem_strength_pain)
if(prob(15))
to_chat(M, span_notice("You have a moment of clarity as you collapse."))
M.adjustBrainLoss(-20 * removed) //VOREStation Edit
M.adjustBrainLoss(-20 * removed)
M.Weaken(6)
else if(alien != IS_DIONA)
M.adjustOxyLoss(-15 * removed * M.species.chem_strength_heal)
holder.remove_reagent(REAGENT_ID_LEXORIN, 8 * removed) //VOREStation Edit
holder.remove_reagent(REAGENT_ID_LEXORIN, 8 * removed)
/datum/reagent/dexalinp
name = REAGENT_DEXALINP
@@ -648,7 +648,7 @@
M.Weaken(5)
if(dose >= 10 && M.paralysis < 40)
M.AdjustParalysis(1) //Messing with the core with a simple chemical probably isn't the best idea.
M.adjustBrainLoss(-8 * removed * chem_effective) //VOREStation Edit
M.adjustBrainLoss(-8 * removed * chem_effective)
M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective * M.species.chem_strength_pain)
/datum/reagent/imidazoline
@@ -935,9 +935,6 @@
if(alien == IS_SLIME) // Diffculty bonding with internal cellular structure.
strength_mod = 1.3
if(alien == IS_SKRELL) // Natural inclination toward toxins.
strength_mod = 0.66
if(alien == IS_UNATHI) // Natural regeneration, robust biology.
strength_mod = 0.6
@@ -987,9 +984,6 @@
/datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
var/strength_mod = 0.5 * M.species.chem_strength_heal
if(alien == IS_SKRELL)
strength_mod = 1
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(alien != IS_SKRELL)
@@ -1305,11 +1299,9 @@
for(var/obj/effect/decal/cleanable/blood/B in T)
qdel(B)
//VOREstation edit. Floor polishing.
if(istype(T, /turf/simulated))
var/turf/simulated/S = T
S.dirt = -50
//VOREstation edit end
/datum/reagent/sterilizine/touch_mob(var/mob/living/L, var/amount)
..()

View File

@@ -14,16 +14,16 @@
var/skin_danger = 0.2 // The multiplier for how effective the toxin is when making skin contact.
/datum/reagent/toxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
strength *= M.species.chem_strength_tox
var/poison_strength = strength * M.species.chem_strength_tox
if(strength && alien != IS_DIONA)
if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume.
if(alien == IS_SLIME)
removed *= 0.25 // Results in half the standard tox as normal. Prometheans are 'Small' for flaps.
if(dose >= 10)
M.adjust_nutrition(strength * removed) // Body has to deal with the massive influx of toxins, rather than try using them to repair.
M.adjust_nutrition(poison_strength * removed) // Body has to deal with the massive influx of toxins, rather than try using them to repair.
else
M.heal_organ_damage((10/strength) * removed, (10/strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair.
M.adjustToxLoss(strength * removed)
M.heal_organ_damage((10/poison_strength) * removed, (10/poison_strength) * removed) //Doses of toxins below 10 units, and 10 strength, are capable of providing useful compounds for repair.
M.adjustToxLoss(poison_strength * removed)
/datum/reagent/toxin/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
affect_blood(M, alien, removed * 0.2)
@@ -558,14 +558,9 @@
to_chat(M, span_warning("Your cellular mass hardens for a moment."))
M.Stun(6)
return
if(alien == IS_SKRELL)
M.take_organ_damage(2.4 * removed, 0)
if(M.losebreath < 10)
M.AdjustLosebreath(1)
else
M.take_organ_damage(3 * removed, 0)
if(M.losebreath < 15)
M.AdjustLosebreath(1)
M.take_organ_damage(3 * removed, 0)
if(M.losebreath < 15)
M.AdjustLosebreath(1)
/datum/reagent/mutagen
name = REAGENT_MUTAGEN
@@ -672,12 +667,12 @@
if(alien == IS_DIONA)
return
var/threshold = 1 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
threshold = 1.2
var/threshold = 1
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
threshold /= M.species.chem_strength_tox
if(alien == IS_SLIME)
threshold = 6 //Evens to 3 due to the fact they are considered 'small' for flaps.
threshold *= 0.15 //~1/6 //Evens to 3 due to the fact they are considered 'small' for flaps.
var/effective_dose = dose
if(issmall(M))
@@ -721,12 +716,12 @@
if(alien == IS_DIONA)
return
var/threshold = 1 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
threshold = 1.2
var/threshold = 1
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
threshold /= M.species.chem_strength_tox
if(alien == IS_SLIME)
threshold = 6 //Evens to 3 due to the fact they are considered 'small' for flaps.
threshold *= 0.15 //~1/6
var/effective_dose = dose
if(issmall(M))
@@ -816,13 +811,12 @@
/datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/drug_strength = 4 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
drug_strength = drug_strength * 0.8
var/drug_strength = 4
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
drug_strength *= M.species.chem_strength_tox
if(alien == IS_SLIME)
drug_strength = drug_strength * 1.2
drug_strength *= 0.15 //~ 1/6
M.make_dizzy(drug_strength)
M.Confuse(drug_strength * 5)
@@ -851,24 +845,25 @@
/datum/reagent/mindbreaker
name = REAGENT_MINDBREAKER
id = REAGENT_ID_MINDBREAKER
description = "A powerful hallucinogen, it can cause fatal effects in users."
description = "A powerful hallucinogen that causes immediate, prolonged hallucinations in its users."
taste_description = "sourness"
reagent_state = LIQUID
color = "#B31008"
metabolism = REM * 0.25
metabolism = REM * 4 //0.8 per second...This is an 'immediate effect' drug that you hit someone with and they have effects for a prolonged period after.
overdose = REAGENTS_OVERDOSE
/datum/reagent/mindbreaker/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
return
var/drug_strength = 100 * M.species.chem_strength_tox
if(alien == IS_SKRELL)
drug_strength *= 0.8
var/drug_strength = 100
if(M.species.chem_strength_tox > 0) //Closer to 0 means they're more resistant to toxins. Higher than 1 means they're weaker to toxins.
drug_strength *= M.species.chem_strength_tox //Ex: If you have a CST of 0.01 (100x resistant) drug_strength would = 10000
if(alien == IS_SLIME)
drug_strength *= 1.2
drug_strength *= 0.15 //~ 1/6
drug_strength = CLAMP(drug_strength, 0, 150) //Let's not have users be hallucinating more than 5 minutes.
M.hallucination = max(M.hallucination, drug_strength)

View File

@@ -203,6 +203,10 @@
/datum/reagent/drugs/rainbow_toxin/affect_blood(mob/living/carbon/M, var/alien, var/removed)
..()
var/drug_strength = 20
if(M.species.chem_strength_tox > 0)
drug_strength *= M.species.chem_strength_tox
if(alien == IS_SLIME)
drug_strength *= 0.15 //~ 1/6
M.druggy = max(M.druggy, drug_strength)
/datum/reagent/drugs/rainbow_toxin/overdose(var/mob/living/M as mob)