mirror of
https://github.com/CHOMPStation2/CHOMPStation2.git
synced 2025-12-13 19:52:40 +00:00
976 lines
30 KiB
Plaintext
976 lines
30 KiB
Plaintext
/* Toxins, poisons, venoms */
|
|
|
|
/datum/reagent/toxin
|
|
name = "toxin"
|
|
id = "toxin"
|
|
description = "A toxic chemical."
|
|
taste_description = "bitterness"
|
|
taste_mult = 1.2
|
|
reagent_state = LIQUID
|
|
color = "#CF3600"
|
|
metabolism = REM * 0.25 // 0.05 by default. Hopefully enough to get some help, or die horribly, whatever floats your boat
|
|
filtered_organs = list(O_LIVER, O_KIDNEYS)
|
|
var/strength = 4 // How much damage it deals per unit
|
|
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)
|
|
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.
|
|
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)
|
|
|
|
/datum/reagent/toxin/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
affect_blood(M, alien, removed * 0.2)
|
|
|
|
/datum/reagent/toxin/plasticide
|
|
name = "Plasticide"
|
|
id = "plasticide"
|
|
description = "Liquid plastic, do not eat."
|
|
taste_description = "plastic"
|
|
reagent_state = LIQUID
|
|
color = "#CF3600"
|
|
strength = 5
|
|
|
|
/datum/reagent/toxin/amatoxin
|
|
name = "Amatoxin"
|
|
id = "amatoxin"
|
|
description = "A powerful poison derived from certain species of mushroom."
|
|
taste_description = "mushroom"
|
|
reagent_state = LIQUID
|
|
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"
|
|
description = "A deadly neurotoxin produced by the dreaded space carp."
|
|
taste_description = "fish"
|
|
reagent_state = LIQUID
|
|
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"
|
|
description = "A weak neurotoxic chemical."
|
|
taste_description = "fish"
|
|
reagent_state = LIQUID
|
|
color = "#005555"
|
|
strength = 8
|
|
skin_danger = 0.4
|
|
|
|
/datum/reagent/toxin/neurotoxic_protein/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_CHIMERA)
|
|
return
|
|
..()
|
|
if(alien != IS_DIONA)
|
|
if(M.canmove && !M.restrained() && istype(M.loc, /turf/space))
|
|
step(M, pick(cardinal))
|
|
if(prob(5))
|
|
M.emote(pick("twitch", "drool", "moan"))
|
|
if(prob(20))
|
|
M.adjustBrainLoss(0.1)
|
|
|
|
//R-UST port
|
|
// Produced during deuterium synthesis. Super poisonous, SUPER flammable (doesn't need oxygen to burn).
|
|
/datum/reagent/toxin/hydrophoron
|
|
name = "Hydrophoron"
|
|
id = "hydrophoron"
|
|
description = "An exceptionally flammable molecule formed from deuterium synthesis."
|
|
strength = 80
|
|
var/fire_mult = 30
|
|
|
|
/datum/reagent/toxin/hydrophoron/touch_mob(var/mob/living/L, var/amount)
|
|
..()
|
|
if(istype(L))
|
|
L.adjust_fire_stacks(amount / fire_mult)
|
|
|
|
/datum/reagent/toxin/hydrophoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
M.take_organ_damage(0, removed * 0.1) //being splashed directly with hydrophoron causes minor chemical burns
|
|
if(prob(10 * fire_mult))
|
|
M.pl_effects()
|
|
|
|
/datum/reagent/toxin/hydrophoron/touch_turf(var/turf/simulated/T)
|
|
if(!istype(T))
|
|
return
|
|
..()
|
|
T.assume_gas("phoron", CEILING(volume/2, 1), T20C)
|
|
for(var/turf/simulated/floor/target_tile in range(0,T))
|
|
target_tile.assume_gas("phoron", volume/2, 400+T0C)
|
|
spawn (0) target_tile.hotspot_expose(700, 400)
|
|
remove_self(volume)
|
|
|
|
/datum/reagent/toxin/hydrophoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(alien == IS_SLIME)
|
|
M.adjust_fire_stacks(removed * 10)
|
|
if(prob(10))
|
|
to_chat(M, "<span class='critical'>You feel something boiling within you!</span>")
|
|
spawn(rand(30, 60))
|
|
M.IgniteMob()
|
|
|
|
/datum/reagent/toxin/lead
|
|
name = "lead"
|
|
id = "lead"
|
|
description = "Elemental Lead."
|
|
color = "#273956"
|
|
strength = 4
|
|
|
|
/datum/reagent/toxin/spidertoxin
|
|
name = "Spidertoxin"
|
|
id = "spidertoxin"
|
|
description = "A liquifying toxin produced by giant spiders."
|
|
color = "#2CE893"
|
|
strength = 5
|
|
|
|
/datum/reagent/toxin/phoron
|
|
name = "Phoron"
|
|
id = "phoron"
|
|
description = "Phoron in its liquid form."
|
|
taste_mult = 1.5
|
|
reagent_state = LIQUID
|
|
color = "#9D14DB"
|
|
strength = 30
|
|
touch_met = 5
|
|
skin_danger = 1
|
|
|
|
/datum/reagent/toxin/phoron/touch_mob(var/mob/living/L, var/amount)
|
|
..()
|
|
if(istype(L))
|
|
L.adjust_fire_stacks(amount / 5)
|
|
|
|
/datum/reagent/toxin/phoron/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
M.adjust_fire_stacks(removed / 5)
|
|
if(alien == IS_VOX)
|
|
return
|
|
M.take_organ_damage(0, removed * 0.1) //being splashed directly with phoron causes minor chemical burns
|
|
if(prob(50))
|
|
M.pl_effects()
|
|
|
|
/datum/reagent/toxin/phoron/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_VOX)
|
|
M.adjustOxyLoss(-100 * removed) //5 oxyloss healed per tick.
|
|
return //You're wasting plasma (a semi-limited chemical) to save someone, so it might as well be somewhat strong.
|
|
if(alien == IS_SLIME)
|
|
M.adjust_fire_stacks(removed * 3) //Not quite 'converting' it. It's like mixing fuel into a jelly. You get explosive, or at least combustible, jelly.
|
|
..()
|
|
|
|
/datum/reagent/toxin/phoron/touch_turf(var/turf/simulated/T, var/amount)
|
|
..()
|
|
if(!istype(T))
|
|
return
|
|
T.assume_gas("volatile_fuel", amount, T20C)
|
|
remove_self(amount)
|
|
|
|
/datum/reagent/toxin/cyanide //Fast and Lethal
|
|
name = "Cyanide"
|
|
id = "cyanide"
|
|
description = "A highly toxic chemical."
|
|
taste_description = "almond"
|
|
taste_mult = 0.6
|
|
reagent_state = LIQUID
|
|
color = "#CF3600"
|
|
strength = 20
|
|
metabolism = REM * 2
|
|
|
|
/datum/reagent/toxin/cyanide/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
M.adjustOxyLoss(20 * removed)
|
|
M.Sleeping(1)
|
|
|
|
/datum/reagent/toxin/mold
|
|
name = "Mold"
|
|
id = "mold"
|
|
description = "A mold is a fungus that causes biodegradation of natural materials. This variant contains mycotoxins, and is dangerous to humans."
|
|
taste_description = "mold"
|
|
reagent_state = SOLID
|
|
strength = 5
|
|
|
|
/datum/reagent/toxin/mold/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(prob(5))
|
|
M.vomit()
|
|
|
|
/datum/reagent/toxin/expired_medicine
|
|
name = "Expired Medicine"
|
|
id = "expired_medicine"
|
|
description = "Some form of liquid medicine that is well beyond its shelf date. Administering it now would cause illness."
|
|
taste_description = "bitterness"
|
|
reagent_state = LIQUID
|
|
strength = 5
|
|
filtered_organs = list(O_SPLEEN)
|
|
|
|
/datum/reagent/toxin/expired_medicine/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(prob(5))
|
|
M.vomit()
|
|
|
|
/datum/reagent/toxin/expired_medicine/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
|
affect_blood(M, alien, removed * 0.66)
|
|
|
|
|
|
/datum/reagent/toxin/stimm //Homemade Hyperzine
|
|
name = "Stimm"
|
|
id = "stimm"
|
|
description = "A homemade stimulant with some serious side-effects."
|
|
taste_description = "sweetness"
|
|
taste_mult = 1.8
|
|
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)
|
|
if(alien == IS_TAJARA)
|
|
removed *= 1.25
|
|
..()
|
|
if(prob(15))
|
|
M.emote(pick("twitch", "blink_r", "shiver"))
|
|
if(prob(15))
|
|
M.visible_message("[M] shudders violently.", "You shudder uncontrollably, it hurts.")
|
|
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
|
|
var/obj/item/organ/internal/heart/ht = H.internal_organs_by_name[O_HEART]
|
|
ht?.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"
|
|
description = "A delicious salt that stops the heart when injected into cardiac muscle."
|
|
taste_description = "salt"
|
|
reagent_state = SOLID
|
|
color = "#FFFFFF"
|
|
strength = 0
|
|
overdose = REAGENTS_OVERDOSE
|
|
filtered_organs = list(O_SPLEEN, O_KIDNEYS)
|
|
|
|
/datum/reagent/toxin/potassium_chloride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(alien == IS_SLIME)
|
|
M.adjustFireLoss(removed * 2)
|
|
|
|
/datum/reagent/toxin/potassium_chloride/overdose(var/mob/living/carbon/M, var/alien)
|
|
..()
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
if(H.stat != 1)
|
|
if(H.losebreath >= 10)
|
|
H.losebreath = max(10, H.losebreath - 10)
|
|
H.adjustOxyLoss(2)
|
|
H.Weaken(10)
|
|
|
|
/datum/reagent/toxin/potassium_chlorophoride
|
|
name = "Potassium Chlorophoride"
|
|
id = "potassium_chlorophoride"
|
|
description = "A specific chemical based on Potassium Chloride to stop the heart for surgery. Not safe to eat!"
|
|
taste_description = "salt"
|
|
reagent_state = SOLID
|
|
color = "#FFFFFF"
|
|
strength = 10
|
|
overdose = 20
|
|
filtered_organs = list(O_SPLEEN, O_KIDNEYS)
|
|
|
|
/datum/reagent/toxin/potassium_chlorophoride/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
if(H.stat != 1)
|
|
if(H.losebreath >= 10)
|
|
H.losebreath = max(10, M.losebreath-10)
|
|
H.adjustOxyLoss(2)
|
|
H.Weaken(10)
|
|
if(alien == IS_SLIME)
|
|
M.adjustFireLoss(removed * 3)
|
|
|
|
/datum/reagent/toxin/zombiepowder
|
|
name = "Zombie Powder"
|
|
id = "zombiepowder"
|
|
description = "A strong neurotoxin that puts the subject into a death-like state."
|
|
taste_description = "numbness"
|
|
reagent_state = SOLID
|
|
color = "#669900"
|
|
metabolism = REM
|
|
strength = 3
|
|
mrate_static = TRUE
|
|
|
|
/datum/reagent/toxin/zombiepowder/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(alien == IS_DIONA)
|
|
return
|
|
M.status_flags |= FAKEDEATH
|
|
M.adjustOxyLoss(3 * removed)
|
|
M.Weaken(10)
|
|
M.silent = max(M.silent, 10)
|
|
M.tod = stationtime2text()
|
|
|
|
/datum/reagent/toxin/zombiepowder/Destroy()
|
|
if(holder && holder.my_atom && ismob(holder.my_atom))
|
|
var/mob/M = holder.my_atom
|
|
M.status_flags &= ~FAKEDEATH
|
|
return ..()
|
|
|
|
/datum/reagent/toxin/lichpowder
|
|
name = "Lich Powder"
|
|
id = "lichpowder"
|
|
description = "A stablized nerve agent that puts the subject into a strange state of un-death."
|
|
reagent_state = SOLID
|
|
color = "#666666"
|
|
metabolism = REM * 0.75
|
|
strength = 2
|
|
mrate_static = TRUE
|
|
|
|
/datum/reagent/toxin/lichpowder/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
if(alien == IS_DIONA)
|
|
return
|
|
M.status_flags |= FAKEDEATH
|
|
M.adjustOxyLoss(1 * removed)
|
|
M.silent = max(M.silent, 10)
|
|
M.tod = stationtime2text()
|
|
|
|
if(prob(1))
|
|
M.visible_message("[M] wheezes.", "You wheeze sharply... it's cold.")
|
|
M.bodytemperature = max(M.bodytemperature - 10 * TEMPERATURE_DAMAGE_COEFFICIENT, T0C - 10)
|
|
|
|
/datum/reagent/toxin/lichpowder/Destroy()
|
|
if(holder && holder.my_atom && ismob(holder.my_atom))
|
|
var/mob/M = holder.my_atom
|
|
M.status_flags &= ~FAKEDEATH
|
|
return ..()
|
|
|
|
/datum/reagent/toxin/fertilizer //Reagents used for plant fertilizers.
|
|
name = "fertilizer"
|
|
id = "fertilizer"
|
|
description = "A chemical mix good for growing plants with."
|
|
taste_description = "plant food"
|
|
taste_mult = 0.5
|
|
reagent_state = LIQUID
|
|
strength = 0.5 // It's not THAT poisonous.
|
|
color = "#664330"
|
|
|
|
/datum/reagent/toxin/fertilizer/eznutrient
|
|
name = "EZ Nutrient"
|
|
id = "eznutrient"
|
|
|
|
/datum/reagent/toxin/fertilizer/left4zed
|
|
name = "Left-4-Zed"
|
|
id = "left4zed"
|
|
|
|
/datum/reagent/toxin/fertilizer/robustharvest
|
|
name = "Robust Harvest"
|
|
id = "robustharvest"
|
|
|
|
/datum/reagent/toxin/fertilizer/tannin
|
|
name = "tannin"
|
|
id = "tannin"
|
|
description = "A chemical found in some plants as a natural pesticide. It may also aid in regulating growth."
|
|
taste_description = "puckering"
|
|
taste_mult = 1.2
|
|
reagent_state = LIQUID
|
|
strength = 1.5
|
|
color = "#e67819"
|
|
|
|
/datum/reagent/toxin/fertilizer/tannin/touch_obj(var/obj/O, var/volume)
|
|
..()
|
|
if(istype(O, /obj/item/stack/hairlesshide))
|
|
var/obj/item/stack/hairlesshide/HH = O
|
|
HH.rapidcure(round(volume))
|
|
..()
|
|
|
|
/datum/reagent/toxin/plantbgone
|
|
name = "Plant-B-Gone"
|
|
id = "plantbgone"
|
|
description = "A harmful toxic mixture to kill plantlife. Do not ingest!"
|
|
taste_mult = 1
|
|
reagent_state = LIQUID
|
|
color = "#49002E"
|
|
strength = 4
|
|
|
|
/datum/reagent/toxin/plantbgone/touch_turf(var/turf/T)
|
|
..()
|
|
if(istype(T, /turf/simulated/wall))
|
|
var/turf/simulated/wall/W = T
|
|
if(locate(/obj/effect/overlay/wallrot) in W)
|
|
for(var/obj/effect/overlay/wallrot/E in W)
|
|
qdel(E)
|
|
W.visible_message("<span class='notice'>The fungi are completely dissolved by the solution!</span>")
|
|
|
|
/datum/reagent/toxin/plantbgone/touch_obj(var/obj/O, var/volume)
|
|
..()
|
|
if(istype(O, /obj/effect/plant))
|
|
qdel(O)
|
|
else if(istype(O, /obj/effect/alien/weeds/))
|
|
var/obj/effect/alien/weeds/alien_weeds = O
|
|
alien_weeds.health -= rand(15, 35)
|
|
alien_weeds.healthcheck()
|
|
|
|
/datum/reagent/toxin/plantbgone/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
M.adjustToxLoss(50 * removed)
|
|
|
|
/datum/reagent/toxin/plantbgone/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
M.adjustToxLoss(50 * removed)
|
|
|
|
/datum/reagent/toxin/sifslurry
|
|
name = "Sivian Sap"
|
|
id = "sifsap"
|
|
description = "A natural slurry comprised of fluorescent bacteria native to Sif, in the Vir system."
|
|
taste_description = "sour"
|
|
reagent_state = LIQUID
|
|
color = "#C6E2FF"
|
|
strength = 2
|
|
overdose = 20
|
|
|
|
/datum/reagent/toxin/sifslurry/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA) // Symbiotic bacteria.
|
|
M.adjust_nutrition(strength * removed)
|
|
return
|
|
else
|
|
M.add_modifier(/datum/modifier/slow_pulse, 30 SECONDS)
|
|
..()
|
|
|
|
/datum/reagent/toxin/sifslurry/overdose(var/mob/living/carbon/M, var/alien, var/removed) // Overdose effect.
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
overdose_mod *= H.species.chemOD_mod
|
|
M.apply_effect(2 * removed,IRRADIATE, 0, 0)
|
|
M.apply_effect(5 * removed,DROWSY, 0, 0)
|
|
|
|
/datum/reagent/toxin/sifslurry/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
|
affect_blood(M, alien, removed * 0.7)
|
|
|
|
/datum/reagent/acid/polyacid
|
|
name = "Polytrinic acid"
|
|
id = "pacid"
|
|
description = "Polytrinic acid is a an extremely corrosive chemical substance."
|
|
taste_description = "acid"
|
|
reagent_state = LIQUID
|
|
color = "#8E18A9"
|
|
power = 10
|
|
meltdose = 4
|
|
|
|
/datum/reagent/acid/digestive
|
|
name = "Digestive acid"
|
|
id = "stomacid"
|
|
description = "Some form of digestive slurry."
|
|
taste_description = "vomit"
|
|
reagent_state = LIQUID
|
|
color = "#664330"
|
|
power = 2
|
|
meltdose = 30
|
|
|
|
/datum/reagent/thermite/venom
|
|
name = "Pyrotoxin"
|
|
id = "thermite_v"
|
|
description = "A biologically produced compound capable of melting steel or other metals, similarly to thermite."
|
|
taste_description = "sweet chalk"
|
|
reagent_state = SOLID
|
|
color = "#673910"
|
|
touch_met = 50
|
|
|
|
/datum/reagent/thermite/venom/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
M.adjustFireLoss(3 * removed)
|
|
if(M.fire_stacks <= 1.5)
|
|
M.adjust_fire_stacks(0.15)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(prob(10))
|
|
to_chat(M, "<span class='warning'>Your veins feel like they're on fire!</span>")
|
|
M.adjust_fire_stacks(0.1)
|
|
else if(prob(5))
|
|
M.IgniteMob()
|
|
to_chat(M, "<span class='critical'>Some of your veins rupture, the exposed blood igniting!</span>")
|
|
|
|
/datum/reagent/condensedcapsaicin/venom
|
|
name = "Irritant toxin"
|
|
id = "condensedcapsaicin_v"
|
|
description = "A biological agent that acts similarly to pepperspray. This compound seems to be particularly cruel, however, capable of permeating the barriers of blood vessels."
|
|
taste_description = "fire"
|
|
color = "#B31008"
|
|
filtered_organs = list(O_SPLEEN)
|
|
|
|
/datum/reagent/condensedcapsaicin/venom/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(prob(50))
|
|
M.adjustToxLoss(0.5 * removed)
|
|
if(prob(50))
|
|
M.apply_effect(4, AGONY, 0)
|
|
if(prob(20))
|
|
to_chat(M, "<span class='danger'>You feel like your insides are burning!</span>")
|
|
else if(prob(20))
|
|
M.visible_message("<span class='warning'>[M] [pick("dry heaves!","coughs!","splutters!","rubs at their eyes!")]</span>")
|
|
else
|
|
M.eye_blurry = max(M.eye_blurry, 10)
|
|
|
|
/datum/reagent/lexorin
|
|
name = "Lexorin"
|
|
id = "lexorin"
|
|
description = "Lexorin temporarily stops respiration. Causes tissue damage."
|
|
taste_description = "acid"
|
|
reagent_state = LIQUID
|
|
color = "#C8A5DC"
|
|
overdose = REAGENTS_OVERDOSE
|
|
|
|
/datum/reagent/lexorin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(alien == IS_SLIME)
|
|
M.apply_effect(5, AGONY, 0)
|
|
M.adjustToxLoss(3 * removed)
|
|
if(prob(10))
|
|
to_chat(M, "<span class='warning'>Your cellular mass hardens for a moment.</span>")
|
|
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)
|
|
|
|
/datum/reagent/mutagen
|
|
name = "Unstable mutagen"
|
|
id = "mutagen"
|
|
description = "Might cause unpredictable mutations. Keep away from children."
|
|
taste_description = "slime"
|
|
taste_mult = 0.9
|
|
reagent_state = LIQUID
|
|
color = "#13BC5E"
|
|
|
|
/datum/reagent/mutagen/affect_touch(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(prob(33))
|
|
affect_blood(M, alien, removed)
|
|
|
|
/datum/reagent/mutagen/affect_ingest(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(prob(67))
|
|
affect_blood(M, alien, removed)
|
|
|
|
/datum/reagent/mutagen/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
|
|
if(M.isSynthetic())
|
|
return
|
|
|
|
if(ishuman(M))
|
|
var/mob/living/carbon/human/H = M
|
|
if(alien == IS_SLIME && prob(25))
|
|
var/color_shift = rand(-100, 100)
|
|
spawn(1)
|
|
if(prob(33))
|
|
if(H.r_skin)
|
|
H.r_skin = max(0, min(255, H.r_skin + color_shift))
|
|
if(H.r_hair)
|
|
H.r_hair = max(0, min(255, H.r_hair + color_shift))
|
|
if(H.r_facial)
|
|
H.r_facial = max(0, min(255, H.r_facial + color_shift))
|
|
if(prob(33))
|
|
if(H.g_skin)
|
|
H.g_skin = max(0, min(255, H.g_skin + color_shift))
|
|
if(H.g_hair)
|
|
H.g_hair = max(0, min(255, H.g_hair + color_shift))
|
|
if(H.g_facial)
|
|
H.g_facial = max(0, min(255, H.g_facial + color_shift))
|
|
if(prob(33))
|
|
if(H.b_skin)
|
|
H.b_skin = max(0, min(255, H.b_skin + color_shift))
|
|
if(H.b_hair)
|
|
H.b_hair = max(0, min(255, H.b_hair + color_shift))
|
|
if(H.b_facial)
|
|
H.b_facial = max(0, min(255, H.b_facial + color_shift))
|
|
if(H.species.flags & NO_SCAN)
|
|
return
|
|
|
|
//The original coder comment here wanted it to be "Approx. one mutation per 10 injected/20 ingested/30 touching units"
|
|
//The issue was, it was removed (.2) multiplied by .1, which resulted in a .02% chance per tick to have a mutation occur. Or more accurately, 5000 injected for a single mutation.
|
|
//To honor their original idea, let's keep it as 10/20/30 as they wanted... For the most part.
|
|
|
|
if(M.dna)
|
|
if(prob(removed * 10)) // Removed is .2 per tick. Multiplying it by 10 makes it a 2% chance per tick. 10 units has 50 ticks, so 10 units injected should give a single good/bad mutation.
|
|
randmuti(M)
|
|
if(prob(98))
|
|
randmutb(M)
|
|
else
|
|
randmutg(M)
|
|
domutcheck(M, null)
|
|
M.UpdateAppearance()
|
|
if(prob(removed * 40)) //Additionally, let's make it so there's an 8% chance per tick for a random cosmetic/not guranteed good/bad mutation.
|
|
randmuti(M)//This should equate to 4 random cosmetic mutations per 10 injected/20 ingested/30 touching units
|
|
to_chat(M, "<span class='warning'>You feel odd!</span>")
|
|
M.apply_effect(10 * removed, IRRADIATE, 0)
|
|
|
|
/datum/reagent/slimejelly
|
|
name = "Slime Jelly"
|
|
id = "slimejelly"
|
|
description = "A gooey semi-liquid produced from one of the deadliest lifeforms in existence. SO REAL."
|
|
taste_description = "slime"
|
|
taste_mult = 1.3
|
|
reagent_state = LIQUID
|
|
color = "#801E28"
|
|
|
|
/datum/reagent/slimejelly/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(alien == IS_SLIME) //Partially made of the stuff. Why would it hurt them?
|
|
if(prob(75))
|
|
M.heal_overall_damage(25 * removed, 25 * removed)
|
|
M.adjustToxLoss(rand(-30, -10) * removed)
|
|
M.druggy = max(M.druggy, 10)
|
|
M.add_chemical_effect(CE_PAINKILLER, 60)
|
|
else
|
|
if(prob(10))
|
|
to_chat(M, "<span class='danger'>Your insides are burning!</span>")
|
|
M.adjustToxLoss(rand(100, 300) * removed)
|
|
else if(prob(40))
|
|
M.heal_organ_damage(25 * removed, 0)
|
|
|
|
/datum/reagent/soporific
|
|
name = "Soporific"
|
|
id = "stoxin"
|
|
description = "An effective hypnotic used to treat insomnia."
|
|
taste_description = "bitterness"
|
|
reagent_state = LIQUID
|
|
color = "#009CA8"
|
|
metabolism = REM * 0.5
|
|
ingest_met = REM * 1.5
|
|
overdose = REAGENTS_OVERDOSE
|
|
|
|
/datum/reagent/soporific/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
|
|
var/threshold = 1 * M.species.chem_strength_tox
|
|
if(alien == IS_SKRELL)
|
|
threshold = 1.2
|
|
|
|
if(alien == IS_SLIME)
|
|
threshold = 6 //Evens to 3 due to the fact they are considered 'small' for flaps.
|
|
|
|
var/effective_dose = dose
|
|
if(issmall(M))
|
|
effective_dose *= 2
|
|
|
|
if(effective_dose < 1 * threshold)
|
|
if(effective_dose == metabolism * 2 || prob(5))
|
|
M.emote("yawn")
|
|
else if(effective_dose < 1.5 * threshold)
|
|
M.eye_blurry = max(M.eye_blurry, 10)
|
|
else if(effective_dose < 5 * threshold)
|
|
if(prob(50))
|
|
M.Weaken(2)
|
|
M.drowsyness = max(M.drowsyness, 20)
|
|
else
|
|
if(alien == IS_SLIME) //They don't have eyes, and they don't really 'sleep'. Fumble their general senses.
|
|
M.eye_blurry = max(M.eye_blurry, 30)
|
|
if(prob(20))
|
|
M.ear_deaf = max(M.ear_deaf, 4)
|
|
M.Confuse(2)
|
|
else
|
|
M.Weaken(2)
|
|
else
|
|
M.Sleeping(20)
|
|
M.drowsyness = max(M.drowsyness, 60)
|
|
|
|
/datum/reagent/chloralhydrate
|
|
name = "Chloral Hydrate"
|
|
id = "chloralhydrate"
|
|
description = "A powerful sedative."
|
|
taste_description = "bitterness"
|
|
reagent_state = SOLID
|
|
color = "#000067"
|
|
metabolism = REM * 0.5
|
|
ingest_met = REM * 1.5
|
|
overdose = REAGENTS_OVERDOSE * 0.5
|
|
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)
|
|
return
|
|
|
|
var/threshold = 1 * M.species.chem_strength_tox
|
|
if(alien == IS_SKRELL)
|
|
threshold = 1.2
|
|
|
|
if(alien == IS_SLIME)
|
|
threshold = 6 //Evens to 3 due to the fact they are considered 'small' for flaps.
|
|
|
|
var/effective_dose = dose
|
|
if(issmall(M))
|
|
effective_dose *= 2
|
|
|
|
if(effective_dose == metabolism)
|
|
M.Confuse(2)
|
|
M.drowsyness += 2
|
|
else if(effective_dose < 2 * threshold)
|
|
M.Weaken(30)
|
|
M.eye_blurry = max(M.eye_blurry, 10)
|
|
else
|
|
if(alien == IS_SLIME)
|
|
if(prob(30))
|
|
M.ear_deaf = max(M.ear_deaf, 4)
|
|
M.eye_blurry = max(M.eye_blurry, 60)
|
|
M.Weaken(30)
|
|
M.Confuse(40)
|
|
else
|
|
M.Sleeping(30)
|
|
|
|
if(effective_dose > 1 * threshold)
|
|
M.adjustToxLoss(removed)
|
|
|
|
/datum/reagent/chloralhydrate/overdose(var/mob/living/carbon/M, var/alien, var/removed)
|
|
..()
|
|
M.SetLosebreath(10)
|
|
M.adjustOxyLoss(removed * overdose_mod)
|
|
|
|
/datum/reagent/chloralhydrate/beer2 //disguised as normal beer for use by emagged brobots
|
|
name = "Beer"
|
|
id = "beer2"
|
|
description = "An alcoholic beverage made from malted grains, hops, yeast, and water. The fermentation appears to be incomplete." //If the players manage to analyze this, they deserve to know something is wrong.
|
|
taste_description = "beer"
|
|
reagent_state = LIQUID
|
|
color = "#FFD300"
|
|
|
|
glass_name = "beer"
|
|
glass_desc = "A freezing pint of beer"
|
|
|
|
/* Drugs */
|
|
|
|
/datum/reagent/serotrotium
|
|
name = "Serotrotium"
|
|
id = "serotrotium"
|
|
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
|
|
taste_description = "bitterness"
|
|
reagent_state = LIQUID
|
|
color = "#202040"
|
|
metabolism = REM * 0.25
|
|
overdose = REAGENTS_OVERDOSE
|
|
|
|
/datum/reagent/serotrotium/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(prob(7))
|
|
M.emote(pick("twitch", "drool", "moan", "gasp"))
|
|
return
|
|
|
|
/datum/reagent/serotrotium/venom
|
|
name = "Serotropic venom"
|
|
id = "serotrotium_v"
|
|
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans. This appears to be a biologically produced form, resulting in a specifically toxic nature."
|
|
taste_description = "chalky bitterness"
|
|
filtered_organs = list(O_SPLEEN)
|
|
|
|
/datum/reagent/serotrotium/venom/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
if(prob(30))
|
|
if(prob(25))
|
|
M.emote(pick("shiver", "blink_r"))
|
|
M.adjustBrainLoss(0.2 * removed)
|
|
return ..()
|
|
|
|
/datum/reagent/cryptobiolin
|
|
name = "Cryptobiolin"
|
|
id = "cryptobiolin"
|
|
description = "Cryptobiolin causes confusion and dizzyness."
|
|
taste_description = "sourness"
|
|
reagent_state = LIQUID
|
|
color = "#000055"
|
|
metabolism = REM * 0.5
|
|
overdose = REAGENTS_OVERDOSE
|
|
|
|
/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
|
|
|
|
if(alien == IS_SLIME)
|
|
drug_strength = drug_strength * 1.2
|
|
|
|
M.make_dizzy(drug_strength)
|
|
M.Confuse(drug_strength * 5)
|
|
|
|
/datum/reagent/impedrezene
|
|
name = "Impedrezene"
|
|
id = "impedrezene"
|
|
description = "Impedrezene is a narcotic that impedes one's ability by slowing down the higher brain cell functions."
|
|
taste_description = "numbness"
|
|
reagent_state = LIQUID
|
|
color = "#C8A5DC"
|
|
overdose = REAGENTS_OVERDOSE
|
|
filtered_organs = list(O_SPLEEN)
|
|
|
|
/datum/reagent/impedrezene/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(alien == IS_DIONA)
|
|
return
|
|
M.jitteriness = max(M.jitteriness - 5, 0)
|
|
if(prob(80))
|
|
M.adjustBrainLoss(0.1 * removed)
|
|
if(prob(50))
|
|
M.drowsyness = max(M.drowsyness, 3)
|
|
if(prob(10))
|
|
M.emote("drool")
|
|
|
|
/datum/reagent/mindbreaker
|
|
name = "Mindbreaker Toxin"
|
|
id = "mindbreaker"
|
|
description = "A powerful hallucinogen, it can cause fatal effects in users."
|
|
taste_description = "sourness"
|
|
reagent_state = LIQUID
|
|
color = "#B31008"
|
|
metabolism = REM * 0.25
|
|
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
|
|
|
|
if(alien == IS_SLIME)
|
|
drug_strength *= 1.2
|
|
|
|
M.hallucination = max(M.hallucination, drug_strength)
|
|
|
|
/* Transformations */
|
|
|
|
/datum/reagent/slimetoxin
|
|
name = "Mutation Toxin"
|
|
id = "mutationtoxin"
|
|
description = "A corruptive toxin produced by slimes."
|
|
taste_description = "sludge"
|
|
reagent_state = LIQUID
|
|
color = "#13BC5E"
|
|
|
|
/datum/reagent/slimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
if(M.isSynthetic())
|
|
return
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && (H.species.flags & NO_SCAN))
|
|
return
|
|
|
|
if(M.dna)
|
|
if(prob(removed * 10))
|
|
randmuti(M)
|
|
if(prob(98))
|
|
randmutb(M)
|
|
else
|
|
randmutg(M)
|
|
domutcheck(M, null)
|
|
M.UpdateAppearance()
|
|
if(prob(removed * 40))
|
|
randmuti(M)
|
|
to_chat(M, "<span class='warning'>You feel odd!</span>")
|
|
M.apply_effect(16 * removed, IRRADIATE, 0)
|
|
|
|
/datum/reagent/aslimetoxin
|
|
name = "Docility Toxin"
|
|
id = "docilitytoxin"
|
|
description = "A corruptive toxin produced by slimes."
|
|
taste_description = "sludge"
|
|
reagent_state = LIQUID
|
|
color = "#FF69B4"
|
|
|
|
/datum/reagent/aslimetoxin/affect_blood(var/mob/living/carbon/M, var/alien, var/removed) // TODO: check if there's similar code anywhere else
|
|
if(M.isSynthetic())
|
|
return
|
|
|
|
var/mob/living/carbon/human/H = M
|
|
if(istype(H) && (H.species.flags & NO_SCAN))
|
|
return
|
|
|
|
if(M.dna)
|
|
if(prob(removed * 10))
|
|
randmuti(M)
|
|
if(prob(98))
|
|
randmutb(M)
|
|
else
|
|
randmutg(M)
|
|
domutcheck(M, null)
|
|
M.UpdateAppearance()
|
|
if(prob(removed * 40))
|
|
randmuti(M)
|
|
to_chat(M, "<span class='warning'>You feel odd!</span>")
|
|
M.apply_effect(6 * removed, IRRADIATE, 0)
|
|
|
|
/*
|
|
* Hostile nanomachines.
|
|
* Unscannable, and commonly all look the same.
|
|
*/
|
|
|
|
/datum/reagent/shredding_nanites
|
|
name = "Restorative Nanites"
|
|
id = "shredding_nanites"
|
|
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be malfunctioning."
|
|
taste_description = "metal"
|
|
reagent_state = SOLID
|
|
color = "#555555"
|
|
metabolism = REM * 4 // Nanomachines. Fast.
|
|
affects_robots = TRUE
|
|
|
|
/datum/reagent/shredding_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
M.adjustBruteLoss(4 * removed)
|
|
M.adjustOxyLoss(4 * removed)
|
|
|
|
/datum/reagent/irradiated_nanites
|
|
name = "Restorative Nanites"
|
|
id = "irradiated_nanites"
|
|
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be malfunctioning."
|
|
taste_description = "metal"
|
|
reagent_state = SOLID
|
|
color = "#555555"
|
|
metabolism = REM * 4
|
|
affects_robots = TRUE
|
|
|
|
/datum/reagent/irradiated_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
SSradiation.radiate(get_turf(M), 20) // Irradiate people around you.
|
|
M.radiation = max(M.radiation + 5 * removed, 0) // Irradiate you. Because it's inside you.
|
|
|
|
/datum/reagent/neurophage_nanites
|
|
name = "Restorative Nanites"
|
|
id = "neurophage_nanites"
|
|
description = "Miniature medical robots that swiftly restore bodily damage. These ones seem to be completely hostile."
|
|
taste_description = "metal"
|
|
reagent_state = SOLID
|
|
color = "#555555"
|
|
metabolism = REM * 4
|
|
filtered_organs = list(O_SPLEEN)
|
|
affects_robots = TRUE
|
|
|
|
/datum/reagent/neurophage_nanites/affect_blood(var/mob/living/carbon/M, var/alien, var/removed)
|
|
M.adjustBrainLoss(2 * removed) // Their job is to give you a bad time.
|
|
M.adjustBruteLoss(2 * removed)
|