mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-11 18:53:06 +00:00
Species Vars Extension
This commit is contained in:
@@ -125,7 +125,7 @@
|
||||
affect_ingest(M, alien, removed * ingest_abs_mult)
|
||||
if(CHEM_TOUCH)
|
||||
affect_touch(M, alien, removed)
|
||||
if(overdose && (volume > overdose) && (active_metab.metabolism_class != CHEM_TOUCH && !can_overdose_touch))
|
||||
if(overdose && (volume > overdose * M?.species.chemOD_threshold) && (active_metab.metabolism_class != CHEM_TOUCH && !can_overdose_touch))
|
||||
overdose(M, alien, removed)
|
||||
remove_self(removed)
|
||||
return
|
||||
|
||||
@@ -94,7 +94,7 @@
|
||||
|
||||
/datum/reagent/ethanol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) //This used to do just toxin. That's boring. Let's make this FUN.
|
||||
if(issmall(M)) removed *= 2
|
||||
var/strength_mod = 3 //Alcohol is 3x stronger when injected into the veins.
|
||||
var/strength_mod = 3 * M.species.alcohol_mod //Alcohol is 3x stronger when injected into the veins.
|
||||
if(alien == IS_SKRELL)
|
||||
strength_mod *= 5
|
||||
if(alien == IS_TAJARA)
|
||||
@@ -139,7 +139,7 @@
|
||||
/datum/reagent/ethanol/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(issmall(M)) removed *= 2
|
||||
M.adjust_nutrition(nutriment_factor * removed)
|
||||
var/strength_mod = 1
|
||||
var/strength_mod = 1 * M.species.alcohol_mod
|
||||
if(alien == IS_SKRELL)
|
||||
strength_mod *= 5
|
||||
if(alien == IS_TAJARA)
|
||||
|
||||
@@ -14,7 +14,7 @@
|
||||
/datum/reagent/inaprovaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
M.add_chemical_effect(CE_STABLE, 15)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10 * M.species.chem_strength_pain)
|
||||
|
||||
/datum/reagent/inaprovaline/topical
|
||||
name = "Inaprovalaze"
|
||||
@@ -37,7 +37,7 @@
|
||||
/datum/reagent/inaprovaline/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
M.add_chemical_effect(CE_STABLE, 20)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 12)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 12 * M.species.chem_strength_pain)
|
||||
|
||||
/datum/reagent/bicaridine
|
||||
name = "Bicaridine"
|
||||
@@ -51,7 +51,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -88,7 +88,7 @@
|
||||
can_overdose_touch = TRUE
|
||||
|
||||
/datum/reagent/bicaridine/topical/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -96,7 +96,7 @@
|
||||
M.adjustToxLoss(2 * removed)
|
||||
|
||||
/datum/reagent/bicaridine/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -132,7 +132,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/kelotane/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.5
|
||||
M.adjustBruteLoss(2 * removed) //Mends burns, but has negative effects with a Promethean's skeletal structure.
|
||||
@@ -151,7 +151,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dermaline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -171,7 +171,7 @@
|
||||
can_overdose_touch = TRUE
|
||||
|
||||
/datum/reagent/dermaline/topical/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -179,7 +179,7 @@
|
||||
M.adjustToxLoss(2 * removed)
|
||||
|
||||
/datum/reagent/dermaline/topical/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
if(alien != IS_DIONA)
|
||||
@@ -195,7 +195,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/dylovene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.66
|
||||
if(dose >= 15)
|
||||
@@ -220,7 +220,7 @@
|
||||
return
|
||||
if(M.getToxLoss() && prob(10))
|
||||
M.vomit(1)
|
||||
M.adjustToxLoss(-8 * removed)
|
||||
M.adjustToxLoss(-8 * removed * M.species.chem_strength_heal)
|
||||
if(prob(30))
|
||||
M.remove_a_modifier_of_type(/datum/modifier/poisoned)
|
||||
if(ishuman(M))
|
||||
@@ -249,13 +249,13 @@
|
||||
if(alien == IS_VOX)
|
||||
M.adjustToxLoss(removed * 24) //VOREStation Edit
|
||||
else if(alien == IS_SLIME && dose >= 15)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 15)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 15 * M.species.chem_strength_pain)
|
||||
if(prob(15))
|
||||
to_chat(M, "<span class='notice'>You have a moment of clarity as you collapse.</span>")
|
||||
M.adjustBrainLoss(-20 * removed) //VOREStation Edit
|
||||
M.Weaken(6)
|
||||
else if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-60 * removed) //VOREStation Edit
|
||||
M.adjustOxyLoss(-15 * removed * M.species.chem_strength_heal)
|
||||
|
||||
holder.remove_reagent("lexorin", 8 * removed) //VOREStation Edit
|
||||
|
||||
@@ -273,13 +273,13 @@
|
||||
if(alien == IS_VOX)
|
||||
M.adjustToxLoss(removed * 9)
|
||||
else if(alien == IS_SLIME && dose >= 10)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25 * M.species.chem_strength_pain)
|
||||
if(prob(25))
|
||||
to_chat(M, "<span class='notice'>You have a moment of clarity, as you feel your tubes lose pressure rapidly.</span>")
|
||||
M.adjustBrainLoss(-8 * removed)
|
||||
M.Weaken(3)
|
||||
else if(alien != IS_DIONA)
|
||||
M.adjustOxyLoss(-150 * removed)
|
||||
M.adjustOxyLoss(-150 * removed * M.species.chem_strength_heal)
|
||||
|
||||
holder.remove_reagent("lexorin", 3 * removed)
|
||||
|
||||
@@ -294,7 +294,7 @@
|
||||
|
||||
/datum/reagent/tricordrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.5
|
||||
M.adjustOxyLoss(-3 * removed * chem_effective)
|
||||
@@ -317,7 +317,7 @@
|
||||
|
||||
/datum/reagent/tricorlidaze/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien != IS_DIONA)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.5
|
||||
M.adjustOxyLoss(-2 * removed * chem_effective)
|
||||
@@ -354,7 +354,7 @@
|
||||
|
||||
/datum/reagent/cryoxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.bodytemperature < 170)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.25
|
||||
to_chat(M, "<span class='danger'>It's cold. Something causes your cellular mass to harden occasionally, resulting in vibration.</span>")
|
||||
@@ -379,7 +379,7 @@
|
||||
|
||||
/datum/reagent/clonexadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.bodytemperature < 170)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.</span>")
|
||||
@@ -413,7 +413,7 @@
|
||||
|
||||
/datum/reagent/necroxadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(M.bodytemperature < 170 || (M.stat == DEAD && M.has_modifier_of_type(/datum/modifier/bloodpump_corpse)))
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
if(prob(10))
|
||||
to_chat(M, "<span class='danger'>It's so cold. Something causes your cellular mass to harden sporadically, resulting in seizure-like twitching.</span>")
|
||||
@@ -441,7 +441,7 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/paracetamol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_pain
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
M.add_chemical_effect(CE_PAINKILLER, 25 * chem_effective)
|
||||
@@ -465,7 +465,7 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/tramadol/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_pain
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.8
|
||||
M.add_chemical_effect(CE_SLOWDOWN, 1)
|
||||
@@ -488,7 +488,7 @@
|
||||
mrate_static = TRUE
|
||||
|
||||
/datum/reagent/oxycodone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_pain
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.75
|
||||
M.stuttering = min(50, max(0, M.stuttering + 5)) //If you can't feel yourself, and your main mode of speech is resonation, there's a problem.
|
||||
@@ -515,7 +515,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/synaptizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
if(alien == IS_SLIME)
|
||||
@@ -531,7 +531,7 @@
|
||||
holder.remove_reagent("mindbreaker", 5)
|
||||
M.hallucination = max(0, M.hallucination - 10)
|
||||
M.adjustToxLoss(5 * removed * chem_effective) // It used to be incredibly deadly due to an oversight. Not anymore!
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20 * chem_effective)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20 * chem_effective * M.species.chem_strength_pain)
|
||||
|
||||
/datum/reagent/hyperzine
|
||||
name = "Hyperzine"
|
||||
@@ -568,7 +568,7 @@
|
||||
/datum/reagent/alkysine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
var/chem_effective = 1
|
||||
var/chem_effective = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
chem_effective = 0.25
|
||||
if(M.brainloss >= 10)
|
||||
@@ -576,7 +576,7 @@
|
||||
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.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10 * chem_effective * M.species.chem_strength_pain)
|
||||
|
||||
/datum/reagent/imidazoline
|
||||
name = "Imidazoline"
|
||||
@@ -625,7 +625,7 @@
|
||||
H.eye_blurry = min(M.eye_blurry + 10, 250) //Eyes need to reset, or something
|
||||
H.sdisabilities &= ~BLIND
|
||||
if(alien == IS_SLIME)
|
||||
H.add_chemical_effect(CE_PAINKILLER, 20)
|
||||
H.add_chemical_effect(CE_PAINKILLER, 20 * M.species.chem_strength_pain)
|
||||
if(prob(33))
|
||||
H.Confuse(10)
|
||||
|
||||
@@ -692,7 +692,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/respirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/repair_strength = 1
|
||||
var/repair_strength = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
repair_strength = 0.6
|
||||
if(ishuman(M))
|
||||
@@ -723,7 +723,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/gastirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/repair_strength = 1
|
||||
var/repair_strength = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
repair_strength = 0.6
|
||||
if(ishuman(M))
|
||||
@@ -754,7 +754,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/hepanephrodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/repair_strength = 1
|
||||
var/repair_strength = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
repair_strength = 0.4
|
||||
if(ishuman(M))
|
||||
@@ -787,7 +787,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/cordradaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/repair_strength = 1
|
||||
var/repair_strength = 1 * M.species.chem_strength_heal
|
||||
if(alien == IS_SLIME)
|
||||
repair_strength = 0.6
|
||||
if(ishuman(M))
|
||||
@@ -814,7 +814,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/strength_mod = 1
|
||||
var/strength_mod = 1 * M.species.chem_strength_heal
|
||||
|
||||
if(alien == IS_DIONA) // It's a tree.
|
||||
strength_mod = 0.25
|
||||
@@ -871,7 +871,7 @@
|
||||
scannable = 1
|
||||
|
||||
/datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
var/strength_mod = 0.5
|
||||
var/strength_mod = 0.5 * M.species.chem_strength_heal
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
strength_mod = 1
|
||||
@@ -998,7 +998,7 @@
|
||||
/datum/reagent/hyronalin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
M.radiation = max(M.radiation - 30 * removed, 0)
|
||||
M.radiation = max(M.radiation - 30 * removed * M.species.chem_strength_heal, 0)
|
||||
|
||||
/datum/reagent/arithrazine
|
||||
name = "Arithrazine"
|
||||
@@ -1014,7 +1014,7 @@
|
||||
/datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
M.radiation = max(M.radiation - 70 * removed, 0)
|
||||
M.radiation = max(M.radiation - 70 * removed * M.species.chem_strength_heal, 0)
|
||||
M.adjustToxLoss(-10 * removed)
|
||||
if(prob(60))
|
||||
M.take_organ_damage(4 * removed, 0)
|
||||
@@ -1130,7 +1130,7 @@
|
||||
can_overdose_touch = TRUE
|
||||
|
||||
/datum/reagent/spacomycaze/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 10 * M.species.chem_strength_pain)
|
||||
M.adjustToxLoss(3 * removed)
|
||||
|
||||
/datum/reagent/spacomycaze/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
@@ -1149,7 +1149,7 @@
|
||||
to_chat(M, "<span class='warning'>Your skin itches.</span>")
|
||||
|
||||
M.add_chemical_effect(CE_ANTIBIOTIC, dose >= overdose ? ANTIBIO_OD : ANTIBIO_NORM)
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20) // 5 less than paracetamol.
|
||||
M.add_chemical_effect(CE_PAINKILLER, 20 * M.species.chem_strength_pain) // 5 less than paracetamol.
|
||||
|
||||
/datum/reagent/spacomycaze/touch_obj(var/obj/O)
|
||||
if(istype(O, /obj/item/stack/medical/crude_pack) && round(volume) >= 1)
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
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
|
||||
if(strength && alien != IS_DIONA)
|
||||
if(issmall(M)) removed *= 2 // Small bodymass, more effect from lower volume.
|
||||
if(alien == IS_SLIME)
|
||||
@@ -615,7 +616,7 @@
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/threshold = 1
|
||||
var/threshold = 1 * M.species.chem_strength_tox
|
||||
if(alien == IS_SKRELL)
|
||||
threshold = 1.2
|
||||
|
||||
@@ -663,7 +664,7 @@
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/threshold = 1
|
||||
var/threshold = 1 * M.species.chem_strength_tox
|
||||
if(alien == IS_SKRELL)
|
||||
threshold = 1.2
|
||||
|
||||
@@ -726,7 +727,7 @@
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/drug_strength = 15
|
||||
var/drug_strength = 15 * M.species.chem_strength_tox
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength = drug_strength * 0.8
|
||||
|
||||
@@ -785,7 +786,7 @@
|
||||
/datum/reagent/cryptobiolin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
var/drug_strength = 4
|
||||
var/drug_strength = 4 * M.species.chem_strength_tox
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength = drug_strength * 0.8
|
||||
@@ -831,7 +832,7 @@
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/drug_strength = 100
|
||||
var/drug_strength = 100 * M.species.chem_strength_tox
|
||||
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength *= 0.8
|
||||
@@ -854,7 +855,7 @@
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/threshold = 1
|
||||
var/threshold = 1 * M.species.chem_strength_tox
|
||||
if(alien == IS_SKRELL)
|
||||
threshold = 1.2
|
||||
|
||||
@@ -908,7 +909,7 @@ datum/reagent/talum_quem/affect_blood(var/mob/living/carbon/M, var/alien, var/re
|
||||
if(alien == IS_DIONA)
|
||||
return
|
||||
|
||||
var/drug_strength = 29
|
||||
var/drug_strength = 29 * M.species.chem_strength_tox
|
||||
if(alien == IS_SKRELL)
|
||||
drug_strength = drug_strength * 0.8
|
||||
else
|
||||
|
||||
Reference in New Issue
Block a user