Overdose changes + General chem mods

This commit is contained in:
Atermonera
2020-08-05 20:53:32 -04:00
committed by VirgoBot
parent e6904301c7
commit 012a4a290c
9 changed files with 723 additions and 20 deletions
+5 -2
View File
@@ -19,7 +19,7 @@
var/dose = 0
var/max_dose = 0
var/overdose = 0 //Amount at which overdose starts
var/overdose_mod = 2 //Modifier to overdose damage
var/overdose_mod = 1 //Modifier to overdose damage
var/can_overdose_touch = FALSE // Can the chemical OD when processing on touch?
var/scannable = 0 // Shows up on health analyzers.
var/affects_dead = 0
@@ -146,7 +146,10 @@
if(ishuman(M))
var/mob/living/carbon/human/H = M
overdose_mod *= H.species.chemOD_mod
M.adjustToxLoss(removed * overdose_mod)
// 6 damage per unit at minimum, scales with excessive reagents. Rounding should help keep damage consistent between ingest / inject, but isn't perfect.
// Hardcapped at 3.6 damage per tick, or 18 damage per unit at 0.2 metabolic rate so that you can't instakill people with overdoses by feeding them infinite periadaxon.
// Overall, max damage is slightly less effective than hydrophoron, and 1/5 as effective as cyanide.
M.adjustToxLoss(min(removed * overdose_mod * round(3 + 3 * volume / overdose), 3.6))
/datum/reagent/proc/initialize_data(var/newdata) // Called when the reagent is created.
if(!isnull(newdata))
@@ -180,7 +180,21 @@
L.ExtinguishMob()
L.water_act(amount / 25) // Div by 25, as water_act multiplies it by 5 in order to calculate firestack modification.
remove_self(needed)
<<<<<<< HEAD
/* //VOREStation Edit Start. Stops slimes from dying from water. Fixes fuel affect_ingest, too.
=======
// Put out cigarettes if splashed.
if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
if(H.wear_mask)
if(istype(H.wear_mask, /obj/item/clothing/mask/smokable))
var/obj/item/clothing/mask/smokable/S = H.wear_mask
if(S.lit)
S.quench()
H.visible_message("<span class='notice'>[H]\'s [S.name] is put out.</span>")
>>>>>>> c820021... Merge pull request #7361 from ExabyteDiscord/Upstream-Dog-ChemistryThing
/datum/reagent/water/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_SLIME)
M.adjustToxLoss(6 * removed)
@@ -260,7 +260,7 @@
step(M, pick(cardinal))
if(prob(5))
M.emote(pick("twitch", "drool", "moan"))
M.adjustBrainLoss(0.1)
M.adjustBrainLoss(0.5 * removed)
/datum/reagent/nitrogen
name = "Nitrogen"
@@ -48,6 +48,7 @@
reagent_state = LIQUID
color = "#BF0000"
overdose = REAGENTS_OVERDOSE
overdose_mod = 0.25
scannable = 1
/datum/reagent/bicaridine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -214,6 +215,8 @@
reagent_state = LIQUID
color = "#225722"
scannable = 1
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 0 // Not used, but it shouldn't deal toxin damage anyways. Carth heals toxins!
/datum/reagent/carthatoline/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)
@@ -234,6 +237,11 @@
if(alien == IS_SLIME)
H.druggy = max(M.druggy, 5)
/datum/reagent/carthatoline/overdose(var/mob/living/carbon/M, var/alien, var/removed)
M.adjustHalLoss(2)
var/mob/living/carbon/human/H = M
H.internal_organs_by_name[O_STOMACH].take_damage(removed * 2) // Causes stomach contractions, makes sense for an overdose to make it much worse.
/datum/reagent/dexalin
name = "Dexalin"
id = "dexalin"
@@ -267,6 +275,7 @@
reagent_state = LIQUID
color = "#0040FF"
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.25
scannable = 1
/datum/reagent/dexalinp/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -434,7 +443,8 @@
taste_description = "bitterness"
reagent_state = LIQUID
color = "#C8A5DC"
overdose = 60
overdose = REAGENTS_OVERDOSE * 2
overdose_mod = 0.75
scannable = 1
metabolism = 0.02
mrate_static = TRUE
@@ -458,7 +468,8 @@
taste_description = "sourness"
reagent_state = LIQUID
color = "#CB68FC"
overdose = 30
overdose = REAGENTS_OVERDOSE
overdose_mod = 0.75
scannable = 1
metabolism = 0.02
mrate_static = TRUE
@@ -482,6 +493,7 @@
reagent_state = LIQUID
color = "#800080"
overdose = 20
overdose_mod = 0.75
scannable = 1
metabolism = 0.02
mrate_static = TRUE
@@ -529,7 +541,7 @@
M.AdjustWeakened(-1)
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.adjustToxLoss(10 * 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.species.chem_strength_pain)
/datum/reagent/hyperzine
@@ -540,6 +552,7 @@
reagent_state = LIQUID
color = "#FF3300"
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 0.25
/datum/reagent/hyperzine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_TAJARA)
@@ -553,6 +566,13 @@
M.emote(pick("twitch", "blink_r", "shiver"))
M.add_chemical_effect(CE_SPEEDBOOST, 1)
/datum/reagent/hyperzine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
if(prob(5)) // 1 in 20
var/mob/living/carbon/human/H = M
H.internal_organs_by_name[O_HEART].take_damage(1)
to_chat(M, "<span class='warning'>Huh... Is this what a heart attack feels like?</span>")
/datum/reagent/alkysine
name = "Alkysine"
id = "alkysine"
@@ -609,6 +629,7 @@
reagent_state = LIQUID
color = "#561EC3"
overdose = 10
overdose_mod = 1.5
scannable = 1
/datum/reagent/peridaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -628,6 +649,11 @@
if(prob(33))
H.Confuse(10)
/datum/reagent/peridaxon/overdose(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.adjustHalLoss(5)
M.hallucination = max(M.hallucination, 10)
/datum/reagent/osteodaxon
name = "Osteodaxon"
id = "osteodaxon"
@@ -636,6 +662,7 @@
color = "#C9BCE3"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.5
scannable = 1
/datum/reagent/osteodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -658,6 +685,7 @@
color = "#4246C7"
metabolism = REM * 0.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 1.5
scannable = 1
var/repair_strength = 3
@@ -679,6 +707,23 @@
if(W.damage <= 0)
O.wounds -= W
/datum/reagent/myelamine/overdose(var/mob/living/carbon/M, var/alien, var/removed)
// Copypaste of affect_blood with slight adjustment. Heals slightly faster at the cost of high toxins
..()
if(ishuman(M))
var/mob/living/carbon/human/H = M
var/wound_heal = removed * repair_strength / 2
for(var/obj/item/organ/external/O in H.bad_external_organs)
for(var/datum/wound/W in O.wounds)
if(W.bleeding())
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
if(W.internal)
W.damage = max(W.damage - wound_heal, 0)
if(W.damage <= 0)
O.wounds -= W
/datum/reagent/respirodaxon
name = "Respirodaxon"
id = "respirodaxon"
@@ -688,6 +733,7 @@
color = "#4444FF"
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
scannable = 1
/datum/reagent/respirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -719,6 +765,7 @@
color = "#8B4513"
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
scannable = 1
/datum/reagent/gastirodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -750,6 +797,7 @@
color = "#D2691E"
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
scannable = 1
/datum/reagent/hepanephrodaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -783,6 +831,7 @@
color = "#FF4444"
metabolism = REM * 1.5
overdose = 10
overdose_mod = 1.75
scannable = 1
/datum/reagent/cordradaxon/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -810,6 +859,7 @@
reagent_state = SOLID
color = "#7B4D4F"
overdose = 20
overdose_mod = 1.5
scannable = 1
/datum/reagent/immunosuprizine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -867,6 +917,7 @@
color = "#84B2B0"
metabolism = REM * 0.75
overdose = 20
overdose_mod = 1.5
scannable = 1
/datum/reagent/skrellimmuno/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -1008,6 +1059,7 @@
color = "#008000"
metabolism = REM * 0.25
overdose = REAGENTS_OVERDOSE
overdose_mod = 1.25
scannable = 1
/datum/reagent/arithrazine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -1056,6 +1108,7 @@
color = "#FFB0B0"
mrate_static = TRUE
overdose = 10
overdose_mod = 1.5
scannable = 1
data = 0
@@ -1237,6 +1290,7 @@
reagent_state = SOLID
color = "#669900"
overdose = REAGENTS_OVERDOSE
overdose_mod = 2
scannable = 1
/datum/reagent/rezadone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -423,6 +423,16 @@
if(prob(5))
M.vomit()
/datum/reagent/space_cleaner/touch_mob(var/mob/living/L, var/amount)
if(istype(L, /mob/living/carbon/human))
var/mob/living/carbon/human/H = L
if(H.wear_mask)
if(istype(H.wear_mask, /obj/item/clothing/mask/smokable))
var/obj/item/clothing/mask/smokable/S = H.wear_mask
if(S.lit)
S.quench() // No smoking in my medbay!
H.visible_message("<span class='notice'>[H]\'s [S.name] is put out.</span>")
/datum/reagent/lube // TODO: spraying on borgs speeds them up
name = "Space Lube"
id = "lube"
@@ -46,6 +46,11 @@
color = "#792300"
strength = 10
/datum/reagent/toxin/amatoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
// Trojan horse. Waits until most of the toxin has gone through the body before dealing the bulk of it in one big strike.
if(volume < max_dose * 0.2)
M.adjustToxLoss(max_dose * strength * removed / (max_dose * 0.2))
/datum/reagent/toxin/carpotoxin
name = "Carpotoxin"
id = "carpotoxin"
@@ -55,6 +60,10 @@
color = "#003333"
strength = 10
/datum/reagent/toxin/carpotoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
..()
M.adjustBrainLoss(strength / 4 * removed)
/datum/reagent/toxin/neurotoxic_protein
name = "toxic protein"
id = "neurotoxic_protein"
@@ -212,6 +221,7 @@
color = "#d0583a"
metabolism = REM * 3
overdose = 10
overdose_mod = 0.5
strength = 3
/datum/reagent/toxin/stimm/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
@@ -225,6 +235,13 @@
M.take_organ_damage(6 * removed, 0)
M.add_chemical_effect(CE_SPEEDBOOST, 1)
/datum/reagent/toxin/stimm/overdose(var/mob/living/carbon/M, var/alient, var/removed)
..()
if(prob(10)) // 1 in 10. This thing's made with welder fuel and fertilizer, what do you expect?
var/mob/living/carbon/human/H = M
H.internal_organs_by_name[O_HEART].take_damage(1)
to_chat(M, "<span class='warning'>Huh... Is this what a heart attack feels like?</span>")
/datum/reagent/toxin/potassium_chloride
name = "Potassium Chloride"
id = "potassium_chloride"
@@ -658,7 +675,7 @@
metabolism = REM * 0.5
ingest_met = REM * 1.5
overdose = REAGENTS_OVERDOSE * 0.5
overdose_mod = 5 //For that good, lethal feeling
overdose_mod = 2 //For that good, lethal feeling // Reduced with overdose changes. Slightly stronger than before
/datum/reagent/chloralhydrate/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
if(alien == IS_DIONA)