Merge pull request #3836 from Fox-McCloud/chem-tweaks

Chem tweaks
This commit is contained in:
TheDZD
2016-03-12 20:20:33 -05:00
23 changed files with 673 additions and 385 deletions
@@ -586,7 +586,7 @@
m_type = 1
if ("tremble", "trembles")
message = "<B>[src]</B> trembles in fear!"
message = "<B>[src]</B> trembles."
m_type = 1
if ("sneeze", "sneezes")
@@ -333,7 +333,6 @@ var/const/INGEST = 2
qdel(A)
update_total()
my_atom.on_reagent_change()
check_ignoreslow(my_atom)
check_gofast(my_atom)
check_goreallyfast(my_atom)
return 0
+11 -12
View File
@@ -16,19 +16,18 @@
/datum/reagent/ginsonic/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(10))
M.drowsyness = max(0, M.drowsyness-5)
if(prob(25))
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
if(prob(8))
M.reagents.add_reagent("methamphetamine",1.2)
M.reagents.add_reagent("ethanol",1.4)
if(prob(8))
M.say(pick("Gotta go fast!", "Let's juice.", "I feel a need for speed!", "Way Past Cool!"))
if(prob(8))
switch(pick(1, 2, 3))
if(1)
M << "<span class='notice'>Time to speed, keed!</span>"
if(2)
M << "<span class='notice'>Let's juice.</span>"
if(3)
M << "<span class='notice'>Way Past Cool!</span>"
var/sonic_message = pick("Gotta go fast!", "Time to speed, keed!", "I feel a need for speed!", "Let's juice.", "Juice time.", "Way Past Cool!")
if(prob(50))
M.say("[sonic_message]")
else
M << "<span class='notice'>[sonic_message ]</span>"
..()
return
+73 -29
View File
@@ -43,17 +43,23 @@
/datum/reagent/crank/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
var/high_message = pick("You feel jittery.", "You feel like you gotta go fast.", "You feel like you need to step it up.")
if(prob(5))
M << "<span class='notice'>[high_message]</span>"
M.AdjustParalysis(-2)
M.AdjustStunned(-2)
M.AdjustWeakened(-2)
if(prob(15))
M.emote(pick("twitch", "twitch_s", "grumble", "laugh"))
if(prob(8))
M.reagents.add_reagent("methamphetamine",2)
M << "<span class='notice'>You feel great!</span>"
M.reagents.add_reagent("methamphetamine", rand(1,2))
M.emote(pick("laugh", "giggle"))
if(prob(6))
M << "<span class='notice'>You feel warm.</span>"
M.bodytemperature += rand(1,10)
if(prob(4))
M.Jitter(10)
M.adjustToxLoss(1.0)
M << "<span class='notice'>You feel kinda awful!</span>"
M.adjustToxLoss(1)
M.jitteriness += 30
M.emote(pick("groan", "moan"))
..()
return
/datum/reagent/crank/overdose_process(var/mob/living/M as mob)
@@ -88,6 +94,7 @@
required_reagents = list("diphenhydramine" = 1, "ammonia" = 1, "lithium" = 1, "sacid" = 1, "fuel" = 1)
result_amount = 5
mix_message = "The mixture violently reacts, leaving behind a few crystalline shards."
mix_sound = 'sound/goonstation/effects/crystalshatter.ogg'
min_temp = 390
/datum/chemical_reaction/crank/on_reaction(var/datum/reagents/holder, var/created_volume)
@@ -109,9 +116,25 @@
/datum/reagent/krokodil/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
var/high_message = pick("You feel calm.", "You feel collected.", "You feel like you need to relax.")
M.jitteriness -= 40
if(prob(25))
M.adjustBrainLoss(1)
if(prob(15))
M.emote(pick("smile", "grin", "yawn", "laugh", "drool"))
if(prob(10))
M << "<span class='notice'>You feel pretty chill.</span>"
M.bodytemperature--
M.emote("smile")
if(prob(5))
M << "<span class='notice'>[high_message]</span>"
M << "<span class='notice'>You feel too chill!</span>"
M.emote(pick("yawn", "drool"))
M.Stun(1)
M.adjustToxLoss(1)
M.adjustBrainLoss(1)
M.bodytemperature -= 20
if(prob(2))
M << "<span class='warning'>Your skin feels all rough and dry.</span>"
M.adjustBruteLoss(2)
..()
return
@@ -172,19 +195,19 @@
/datum/reagent/methamphetamine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
var/high_message = pick("You feel hyper.", "You feel like you need to go faster.", "You feel like you can run the world.")
if(prob(5))
M << "<span class='notice'>[high_message]</span>"
M.emote(pick("twitch_s","blink_r","shiver"))
if(current_cycle >= 25)
M.jitteriness += 5
M.drowsyness = max(0, M.drowsyness-10)
M.AdjustParalysis(-2.5)
M.AdjustStunned(-2.5)
M.AdjustWeakened(-2.5)
M.adjustStaminaLoss(-2)
M.SetSleeping(0)
M.status_flags |= GOTTAGOREALLYFAST
M.Jitter(3)
if(prob(50))
M.adjustBrainLoss(1.0)
if(prob(5))
M.emote(pick("twitch", "shiver"))
..()
return
@@ -192,7 +215,7 @@
if(prob(20))
M.emote("laugh")
if(prob(33))
M.visible_message("<span class = 'danger'>[M]'s hands flip out and flail everywhere!</span>")
M.visible_message("<span class='danger'>[M]'s hands flip out and flail everywhere!</span>")
var/obj/item/I = M.get_active_hand()
if(I)
M.drop_item()
@@ -239,6 +262,16 @@
result_amount = 4
min_temp = 374
/datum/chemical_reaction/methamphetamine/on_reaction(var/datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
for(var/mob/living/carbon/C in range(T, 1))
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
C.emote("gasp")
C.losebreath++
C.reagents.add_reagent("toxin",10)
C.reagents.add_reagent("neurotoxin2",20)
/datum/chemical_reaction/saltpetre
name = "saltpetre"
id = "saltpetre"
@@ -372,17 +405,19 @@
/datum/reagent/aranesp/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
var/high_message = pick("You feel like you're made of steel!", "You feel invigorated!", "You feel really buff!", "You feel on top of the world!", "You feel full of energy!")
if(prob(5))
M << "<span class='notice'>[high_message]</span>"
M.adjustStaminaLoss(-40)
if(prob(90))
M.adjustToxLoss(1)
if(prob(5))
M.emote(pick("twitch", "shake", "tremble","quiver", "twitch_s"))
var/high_message = pick("really buff", "on top of the world","like you're made of steel", "energized", "invigorated", "full of energy")
if(prob(8))
M << "<span class='notice'>[high_message]!</span>"
if(prob(5))
M << "<span class='danger'>You cannot breathe!</span>"
M.losebreath += 1
M.adjustOxyLoss(15)
M.Stun(1)
M.losebreath++
..()
return
@@ -396,10 +431,16 @@
/datum/reagent/thc/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(8))
M.emote(pick("smile","giggle","laugh"))
if(prob(50))
M.stuttering += 2
M.stuttering += rand(0,2)
if(prob(5))
M.emote(pick("laugh","giggle","smile"))
if(prob(5))
M << "[pick("You feel hungry.","Your stomach rumbles.","You feel cold.","You feel warm.")]"
if(prob(4))
M.confused = max(M.confused, 10)
if(volume >= 50 && prob(25))
if(prob(10))
M.drowsyness = max(M.drowsyness, 10)
..()
return
@@ -445,10 +486,13 @@
M.SpinAnimation(speed = 5, loops = -1)
if(current_cycle == 50)
M.SpinAnimation(speed = 4, loops = -1)
M.AdjustParalysis(-2)
M.AdjustStunned(-2)
M.AdjustWeakened(-2)
M.adjustStaminaLoss(-2)
M.drowsyness = max(0, M.drowsyness-6)
M.AdjustParalysis(-1.5)
M.AdjustStunned(-1.5)
M.AdjustWeakened(-1.5)
M.adjustStaminaLoss(-1.5)
M.SetSleeping(0)
..()
return
@@ -463,11 +507,11 @@
M.emote("laugh")
M.adjustToxLoss(1)
if(2)
M << "<span class = 'danger'>[M] can't seem to control their legs!</span>"
M << "<span class='danger'>[M] can't seem to control their legs!</span>"
M.Weaken(8)
M.adjustToxLoss(1)
if(3)
M << "<span class = 'danger'>[M]'s hands flip out and flail everywhere!</span>"
M << "<span class='danger'>[M]'s hands flip out and flail everywhere!</span>"
M.drop_l_hand()
M.drop_r_hand()
M.adjustToxLoss(1)
@@ -523,7 +567,7 @@
if(prob(20))
M.emote("ping")
if(prob(33))
M.visible_message("<span class = 'danger'>[M]'s hands flip out and flail everywhere!</span>")
M.visible_message("<span class='danger'>[M]'s hands flip out and flail everywhere!</span>")
var/obj/item/I = M.get_active_hand()
if(I)
M.drop_item()
+128 -27
View File
@@ -11,7 +11,7 @@ datum/reagent/questionmark/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
return
if(method == INGEST)
M.Weaken(2)
M << "<span class = 'danger'>Ugh! Eating that was a terrible idea!</span>"
M << "<span class='danger'>Ugh! Eating that was a terrible idea!</span>"
datum/reagent/egg
name = "Egg"
@@ -22,8 +22,10 @@ datum/reagent/egg
datum/reagent/egg/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(5))
if(prob(8))
M.emote("fart")
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
..()
return
@@ -118,7 +120,7 @@ datum/reagent/vhfcs/on_mob_life(var/mob/living/M as mob)
datum/reagent/honey/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.reagents.add_reagent("sugar", 0.8)
M.reagents.add_reagent("sugar", 0.4)
..()
return
@@ -174,13 +176,15 @@ datum/reagent/mugwort/on_mob_life(var/mob/living/M as mob)
reagent_state = LIQUID
color = "#AB5D5D"
metabolization_rate = 0.2
overdose_threshold = 125
overdose_threshold = 133
datum/reagent/porktonium/overdose_process(var/mob/living/M as mob)
if(volume > 125)
if(volume > 133)
if(prob(15))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent("cyanide", 10)
M.reagents.add_reagent("radium", 15)
M.reagents.add_reagent("cyanide", 10)
..()
return
@@ -195,7 +199,13 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
M << "<span class = 'danger'>Yuck!</span>"
var/ranchance = rand(1,10)
if(ranchance == 1)
M << "<span class='warning'>You feel very sick.</span>"
M.reagents.add_reagent("toxin", rand(1,5))
else if(ranchance <= 5)
M << "<span class='warning'>That tasted absolutely FOUL.</span>"
else M << "<span class='warning'>Yuck!</span>"
/datum/reagent/chicken_soup
name = "Chicken soup"
@@ -216,18 +226,22 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
description = "Monosodium Glutamate is a sodium salt known chiefly for its use as a controversial flavor enhancer."
reagent_state = LIQUID
color = "#F5F5F5"
metabolization_rate = 0.2
datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
if(!istype(M, /mob/living))
return
if(method == INGEST)
M << "<span class = 'notice'>That tasted amazing!</span>"
M << "<span class='notice'>That tasted amazing!</span>"
/datum/reagent/msg/on_mob_life(var/mob/living/M as mob)
if(prob(1))
M.Stun(rand(4,10))
M << "<span class='warning'>A horrible migraine overpowers you.</span>"
if(prob(5))
if(prob(10))
M.adjustToxLoss(rand(2.4))
if(prob(7))
M << "<span class='warning'>A horrible migraine overpowers you.</span>"
M.Stun(rand(2,5))
..()
return
@@ -237,6 +251,13 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
description = "Some cheese. Pour it out to make it solid."
reagent_state = SOLID
color = "#FFFF00"
metabolization_rate = 0 //heheheh
/datum/reagent/cheese/on_mob_life(var/mob/living/M as mob)
if(prob(3))
M.reagents.add_reagent("cholesterol", rand(1,2))
..()
datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
src = null
@@ -252,12 +273,23 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
result_amount = 1
mix_message = "The mixture curdles up."
/datum/chemical_reaction/cheese/on_reaction(var/datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='notice'>A faint cheesy smell drifts through the air...</span>")
/datum/reagent/fake_cheese
name = "Cheese substitute"
id = "fake_cheese"
description = "A cheese-like substance derived loosely from actual cheese."
reagent_state = LIQUID
color = "#B2B139"
overdose_threshold = 50
/datum/reagent/fake_cheese/overdose_process(var/mob/living/M as mob)
if(prob(8))
M << "<span class='warning'>You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat.</span>"
M.adjustToxLoss(rand(1,2))
..()
/datum/reagent/weird_cheese
name = "Weird cheese"
@@ -265,6 +297,12 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume)
description = "Hell, I don't even know if this IS cheese. Whatever it is, it ain't normal. If you want to, pour it out to make it solid."
reagent_state = SOLID
color = "#50FF00"
metabolization_rate = 0 //heheheh
/datum/reagent/weird_cheese/on_mob_life(var/mob/living/M as mob)
if(prob(5))
M.reagents.add_reagent("cholesterol", rand(1,3))
..()
datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
src = null
@@ -279,6 +317,11 @@ datum/reagent/weird_cheese/reaction_turf(var/turf/T, var/volume)
required_reagents = list("green_vomit" = 1, "milk" = 1)
result_amount = 1
mix_message = "The disgusting mixture sloughs together horribly, emitting a foul stench."
mix_sound = 'sound/goonstation/misc/gurggle.ogg'
/datum/chemical_reaction/weird_cheese/on_reaction(var/datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='warning'>A horrible smell assaults your nose! What in space is it?</span>")
datum/reagent/beans
name = "Refried beans"
@@ -289,7 +332,7 @@ datum/reagent/beans
datum/reagent/beans/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(8))
if(prob(10))
M.emote("fart")
..()
return
@@ -349,11 +392,11 @@ datum/reagent/ectoplasm/reaction_mob(var/mob/M, var/method=TOUCH, var/volume)
return
if(method == INGEST)
var/spooky_eat = pick("Ugh, why did you eat that? Your mouth feels haunted. Haunted with bad flavors.", "Ugh, why did you eat that? It has the texture of ham aspic. From the 1950s. Left out in the sun.", "Ugh, why did you eat that? It tastes like a ghost fart.", "Ugh, why did you eat that? It tastes like flavor died.")
M << "<span class = 'warning'>[spooky_eat]</span>"
M << "<span class='warning'>[spooky_eat]</span>"
/datum/reagent/ectoplasm/on_mob_life(var/mob/living/M as mob)
var/spooky_message = pick("You notice something moving out of the corner of your eye, but nothing is there...", "Your eyes twitch, you feel like something you can't see is here...", "You've got the heebie-jeebies.", "You feel uneasy.", "You shudder as if cold...", "You feel something gliding across your back...")
if(prob(5))
if(prob(8))
M << "<span class='warning'>[spooky_message]</span>"
..()
return
@@ -365,15 +408,17 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
return
/datum/reagent/soybeanoil
name = "Space-soybean oil "
name = "Space-soybean oil"
id = "soybeanoil"
description = "An oil derived from extra-terrestrial soybeans."
reagent_state = LIQUID
color = "#B1B0B0"
/datum/reagent/soybeanoil/on_mob_life(var/mob/living/M as mob)
if(prob(5))
M.reagents.add_reagent("porktonium",5)
if(prob(10))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent("porktonium", 5)
..()
return
@@ -383,13 +428,34 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
description = "An oil derived from extra-terrestrial soybeans, with additional hydrogen atoms added to convert it into a saturated form."
reagent_state = LIQUID
color = "#B1B0B0"
metabolization_rate = 0.2
overdose_threshold = 75
/datum/reagent/hydrogenated_soybeanoil/on_mob_life(var/mob/living/M as mob)
if(prob(15))
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent("porktonium",5)
M.reagents.add_reagent("porktonium", 5)
if(volume >= 75)
metabolization_rate = 0.4
else
metabolization_rate = 0.2
..()
return
/datum/reagent/hydrogenated_soybeanoil/overdose_process(var/mob/living/M as mob)
if(prob(33))
M << "<span class='warning'>You feel horribly weak.</span>"
if(prob(10))
M << "<span class='warning'>You cannot breathe!</span>"
M.adjustOxyLoss(5)
if(prob(5))
M << "<span class='warning'>You feel a sharp pain in your chest!</span>"
M.adjustOxyLoss(25)
M.Stun(5)
M.Paralyse(10)
..()
/datum/chemical_reaction/hydrogenated_soybeanoil
name = "Partially hydrogenated space-soybean oil"
id = "hydrogenated_soybeanoil"
@@ -406,6 +472,17 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
reagent_state = LIQUID
color = "#EBD7D7"
/datum/reagent/meatslurry/on_mob_life(var/mob/living/M as mob)
if(prob(4))
M.reagents.add_reagent("cholesterol", rand(1,3))
..()
/datum/reagent/meatslurry/reaction_turf(var/turf/T, var/volume)
src = null
if(volume >= 5 && prob(10))
new /obj/effect/decal/cleanable/blood/gibs/cleangibs(T)
playsound(T, 'sound/effects/splat.ogg', 50, 1, -3)
/datum/chemical_reaction/meatslurry
name = "Meat Slurry"
id = "meatslurry"
@@ -447,13 +524,12 @@ datum/reagent/ectoplasm/reaction_turf(var/turf/T, var/volume)
/datum/reagent/beff/on_mob_life(var/mob/living/M as mob)
if(prob(5))
M.reagents.add_reagent("porktonium",5)
if(prob(5))
M.reagents.add_reagent(pick("blood", "corn_syrup", "synthflesh", "hydrogenated_soybeanoil"), 0.8)
if(prob(5))
M.emote("groan")
if(prob(2))
M << "<span class='warning'>You feel sick.</span>"
M.reagents.add_reagent("cholesterol", rand(1,3))
if(prob(8))
M.reagents.add_reagent(pick("blood", "corn_syrup", "synthflesh", "hydrogenated_soybeanoil", "porktonium", "toxic_slurry"), 0.8)
else if(prob(6))
M << "<span class='warning'>[pick("You feel ill.","Your stomach churns.","You feel queasy.","You feel sick.")]</span>"
M.emote(pick("groan","moan"))
..()
return
@@ -488,7 +564,7 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol
if(prob(50))
M.adjustBruteLoss(1)
playsound(M, 'sound/effects/woodhit.ogg', 50, 1, -1)
playsound(M, 'sound/effects/woodhit.ogg', 50, 1)
M << "<span class='warning'>A slice of pepperoni slaps you!</span>"
else
M.emote("burp")
@@ -502,4 +578,29 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol
required_reagents = list("beff" = 1, "saltpetre" = 1, "synthflesh" = 1)
result_amount = 2
mix_message = "The beff and the synthflesh combine to form a smoky red log."
mix_sound = 'sound/effects/blobattack.ogg'
mix_sound = 'sound/effects/blobattack.ogg'
/datum/reagent/cholesterol
name = "cholesterol"
id = "cholesterol"
description = "Pure cholesterol. Probably not very good for you."
reagent_state = LIQUID
color = "#FFFAC8"
/datum/reagent/cholesterol/on_mob_life(var/mob/living/M as mob)
if(volume >= 25 && prob(volume*0.15))
M << "<span class='warning'>Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!</span>"
M.adjustToxLoss(rand(1,2))
else if(volume >= 45 && prob(volume*0.08))
M << "<span class='warning'>Your chest [pick("hurts","stings","aches","burns")]!</span>"
M.adjustToxLoss(rand(2,4))
M.Stun(1)
else if(volume >= 150 && prob(volume*0.01))
M << "<span class='warning'>Your chest is burning with pain!</span>"
M.Stun(1)
M.Weaken(1)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.heart_attack)
H.heart_attack = 1
..()
+92 -61
View File
@@ -203,7 +203,7 @@ datum/reagent/calomel/on_mob_life(var/mob/living/M as mob)
M.reagents.remove_reagent(R.id,5)
if(M.health > 20)
M.adjustToxLoss(5*REM)
if(prob(10))
if(prob(6))
M.fakevomit()
..()
return
@@ -226,11 +226,8 @@ datum/reagent/potass_iodide
datum/reagent/potass_iodide/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.radiation > 0)
if(prob(80))
M.radiation--
if(M.radiation < 0)
M.radiation = 0
if(prob(80))
M.radiation = max(0, M.radiation-1)
..()
return
@@ -251,18 +248,15 @@ datum/reagent/pen_acid
datum/reagent/pen_acid/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.radiation > 0)
M.radiation -= 7
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,4)
M.radiation = max(0, M.radiation-7)
if(prob(75))
M.adjustToxLoss(-4*REM)
if(prob(33))
M.adjustBruteLoss(1*REM)
M.adjustFireLoss(1*REM)
if(M.radiation < 0)
M.radiation = 0
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
M.reagents.remove_reagent(R.id,4)
..()
return
@@ -322,8 +316,7 @@ datum/reagent/salbutamol
datum/reagent/salbutamol/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustOxyLoss(-6*REM)
if(M.losebreath >= 4)
M.losebreath -= 4
M.losebreath = max(0, M.losebreath-4)
..()
return
@@ -347,7 +340,9 @@ datum/reagent/perfluorodecalin
datum/reagent/perfluorodecalin/on_mob_life(var/mob/living/carbon/human/M as mob)
if(!M) M = holder.my_atom
M.adjustOxyLoss(-25*REM)
M.silent = max(M.silent, 5)
if(volume >= 4)
M.losebreath = max(M.losebreath, 6)
M.silent = max(M.silent, 6)
if(prob(33))
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
@@ -376,10 +371,18 @@ datum/reagent/ephedrine
datum/reagent/ephedrine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness = max(0, M.drowsyness-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
M.adjustStaminaLoss(-1*REM)
if(M.losebreath > 5)
M.losebreath = max(5, M.losebreath-1)
if(M.oxyloss > 75)
M.adjustOxyLoss(-1)
if(M.health < 0 || M.health > 0 && prob(33))
M.adjustToxLoss(-1)
M.heal_organ_damage(1,1)
..()
return
@@ -429,12 +432,18 @@ datum/reagent/diphenhydramine
description = "Anti-allergy medication. May cause drowsiness, do not operate heavy machinery while using this."
reagent_state = LIQUID
color = "#5BCBE1"
datum/reagent/diphenhydramine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness += 1
M.jitteriness -= 1
M.jitteriness = max(0, M.jitteriness-20)
M.reagents.remove_reagent("histamine",3)
M.reagents.remove_reagent("itching_powder",3)
if(prob(7))
M.emote("yawn")
if(prob(3))
M.Stun(2)
M.drowsyness += 1
M.visible_message("<span class='notice'>[M] looks a bit dazed.</span>")
..()
return
@@ -459,16 +468,16 @@ datum/reagent/morphine
datum/reagent/morphine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.status_flags |= IGNORESLOWDOWN
M.jitteriness = max(0, M.jitteriness-25)
switch(current_cycle)
if(0 to 15)
if(prob(5))
if(1 to 15)
if(prob(7))
M.emote("yawn")
if(16 to 35)
M.drowsyness = max(M.drowsyness, 10)
M.drowsyness = max(M.drowsyness, 20)
if(36 to INFINITY)
M.Paralyse(10)
M.drowsyness = max(M.drowsyness, 15)
M.Paralyse(15)
M.drowsyness = max(M.drowsyness, 20)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(H.traumatic_shock < 100)
@@ -575,18 +584,21 @@ datum/reagent/atropine
datum/reagent/atropine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.health > -60)
M.adjustToxLoss(1*REM)
if(M.health < -25)
M.adjustBruteLoss(-3*REM)
M.adjustFireLoss(-3*REM)
M.dizziness += 1
M.confused = max(M.confused, 5)
if(prob(4))
M.emote("collapse")
if(M.losebreath > 5)
M.losebreath = max(5, M.losebreath-5)
if(M.oxyloss > 65)
M.adjustOxyLoss(-10*REM)
if(M.losebreath > 5)
M.losebreath = 5
if(M.confused > 60)
M.confused += 5
M.reagents.remove_reagent("tabun",10)
if(M.health < -25)
M.adjustToxLoss(-1)
M.adjustBruteLoss(-3*REM)
M.adjustFireLoss(-3*REM)
else if(M.health > -60)
M.adjustToxLoss(1)
M.reagents.remove_reagent("sarin", 20)
..()
return
@@ -617,14 +629,26 @@ datum/reagent/epinephrine
datum/reagent/epinephrine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness = max(0, M.drowsyness-5)
if(prob(20))
M.AdjustParalysis(-1)
if(prob(20))
M.AdjustStunned(-1)
if(prob(20))
M.AdjustWeakened(-1)
if(prob(5))
M.SetSleeping(0)
if(prob(5))
M.adjustBrainLoss(-1)
holder.remove_reagent("histamine", 15)
if(M.losebreath > 3)
M.losebreath--
if(M.oxyloss > 35)
M.adjustOxyLoss(-10*REM)
if(M.health < -10 && M.health > -65)
M.adjustToxLoss(-1*REM)
M.adjustBruteLoss(-1*REM)
M.adjustFireLoss(-1*REM)
if(M.oxyloss > 35)
M.adjustOxyLoss(-10*REM)
if(M.losebreath >= 3)
M.losebreath = 3
..()
return
@@ -806,12 +830,9 @@ datum/reagent/antihol
color = "#009CA8"
datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
M.dizziness = 0
M.drowsyness = 0
M.slurring = 0
M.confused = 0
M.reagents.remove_all_type(/datum/reagent/ethanol, 8, 0, 1)
if(M.health < 25)
if(M.toxloss <= 25)
M.adjustToxLoss(-2.0)
..()
@@ -833,21 +854,29 @@ datum/reagent/antihol/on_mob_life(var/mob/living/M as mob)
datum/reagent/stimulants/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustOxyLoss(-5*REM)
M.adjustToxLoss(-5*REM)
M.adjustBruteLoss(-10*REM)
M.adjustFireLoss(-10*REM)
M.setStaminaLoss(0)
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
M.status_flags &= ~status
if(volume > 5)
M.adjustOxyLoss(-5*REM)
M.adjustToxLoss(-5*REM)
M.adjustBruteLoss(-10*REM)
M.adjustFireLoss(-10*REM)
M.setStaminaLoss(0)
M.dizziness = max(0,M.dizziness-10)
M.drowsyness = max(0,M.drowsyness-10)
M.confused = 0
M.SetSleeping(0)
var/status = CANSTUN | CANWEAKEN | CANPARALYSE
M.status_flags &= ~status
else
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
M.adjustToxLoss(2)
M.adjustBruteLoss(1)
if(prob(10))
M.Stun(3)
..()
datum/reagent/stimulants/reagent_deleted(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.status_flags |= CANSTUN | CANWEAKEN | CANPARALYSE
M.adjustBruteLoss(12)
M.adjustToxLoss(24)
M.Stun(4)
..()
return
@@ -948,14 +977,15 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
M.reagents.remove_reagent("psilocybin", 5)
M.reagents.remove_reagent("ephedrine", 5)
M.reagents.remove_reagent("epinephrine", 5)
M.reagents.remove_reagent("stimulants", 5)
M.reagents.remove_reagent("stimulants", 3)
M.reagents.remove_reagent("bath_salts", 5)
M.reagents.remove_reagent("lsd", 5)
M.reagents.remove_reagent("thc", 5)
M.druggy -= 5
M.hallucination -= 5
M.jitteriness -= 5
if(prob(40))
M.drowsyness = max(M.drowsyness, 2)
if(prob(50))
M.drowsyness = max(M.drowsyness, 3)
if(prob(10))
M.emote("drool")
if(prob(20))
@@ -981,15 +1011,16 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
/datum/reagent/ether/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.jitteriness = max(M.jitteriness-25,0)
switch(current_cycle)
if(0 to 15)
if(prob(5))
if(1 to 15)
if(prob(7))
M.emote("yawn")
if(16 to 35)
M.drowsyness = max(M.drowsyness, 10)
M.drowsyness = max(M.drowsyness, 20)
if(36 to INFINITY)
M.Paralyse(10)
M.drowsyness = max(M.drowsyness, 15)
M.Paralyse(15)
M.drowsyness = max(M.drowsyness, 20)
..()
return
@@ -1034,7 +1065,7 @@ datum/reagent/haloperidol/on_mob_life(var/mob/living/M as mob)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
M.confused -= 5
M.confused = max(0, M.confused-5)
for(var/datum/reagent/R in M.reagents.reagent_list)
if(R != src)
if(R.id == "ultralube" || R.id == "lube")
+6 -13
View File
@@ -3,7 +3,7 @@ datum/reagent
var/addiction_threshold = 0
var/addiction_stage = 0
var/overdosed = 0 // You fucked up and this is now triggering it's overdose effects, purge that shit quick.
var/current_cycle = 0
var/current_cycle = 1
datum/reagents
var/chem_temp = 300
var/addiction_tick = 1
@@ -83,7 +83,7 @@ datum/reagents/proc/metabolize(var/mob/M)
R.addiction_act_stage4(M)
R.addiction_stage++
if(R.addiction_stage > 40)
M << "<span class = 'notice'>You feel like you've gotten over your need for [R.name].</span>"
M << "<span class='notice'>You feel like you've gotten over your need for [R.name].</span>"
addiction_list.Remove(R)
addiction_tick++
update_total()
@@ -101,13 +101,6 @@ datum/reagents/proc/reagent_on_tick()
R.on_tick()
return
datum/reagents/proc/check_ignoreslow(var/mob/M)
if(istype(M, /mob))
if(M.reagents.has_reagent("morphine"))
return 1
else
M.status_flags &= ~IGNORESLOWDOWN
datum/reagents/proc/check_gofast(var/mob/M)
if(istype(M, /mob))
if(M.reagents.has_reagent("unholywater")||M.reagents.has_reagent("nuka_cola")||M.reagents.has_reagent("stimulative_agent"))
@@ -139,22 +132,22 @@ datum/reagent/proc/overdose_start(var/mob/living/M as mob)
datum/reagent/proc/addiction_act_stage1(var/mob/living/M as mob)
if(prob(30))
M << "<span class = 'notice'>You feel like some [name] right about now.</span>"
M << "<span class='notice'>You feel like some [name] right about now.</span>"
return
datum/reagent/proc/addiction_act_stage2(var/mob/living/M as mob)
if(prob(30))
M << "<span class = 'notice'>You feel like you need [name]. You just can't get enough.</span>"
M << "<span class='notice'>You feel like you need [name]. You just can't get enough.</span>"
return
datum/reagent/proc/addiction_act_stage3(var/mob/living/M as mob)
if(prob(30))
M << "<span class = 'danger'>You have an intense craving for [name].</span>"
M << "<span class='danger'>You have an intense craving for [name].</span>"
return
datum/reagent/proc/addiction_act_stage4(var/mob/living/M as mob)
if(prob(30))
M << "<span class = 'danger'>You're not feeling good at all! You really need some [name].</span>"
M << "<span class='danger'>You're not feeling good at all! You really need some [name].</span>"
return
/datum/reagent/proc/reagent_deleted()
+14 -19
View File
@@ -265,7 +265,7 @@ datum/reagent/super_hairgrownium/on_mob_life(var/mob/living/M as mob)
H.unEquip(H.wear_mask)
var/obj/item/clothing/mask/fakemoustache = new /obj/item/clothing/mask/fakemoustache
H.equip_to_slot(fakemoustache, slot_wear_mask)
H << "<span class = 'notice'>Hair bursts forth from your every follicle!"
H << "<span class='notice'>Hair bursts forth from your every follicle!"
..()
return
@@ -286,25 +286,20 @@ datum/reagent/fartonium
datum/reagent/fartonium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.emote("fart")
if(prob(66))
M.emote("fart")
if(holder.has_reagent("simethicone"))
if(prob(30))
switch(pick(1,2))
if(1)
M << "<span class = 'danger'>Something isn't right!"
M.adjustBruteLoss(1)
if(2)
M.custom_emote(1,"strains, but nothing happens.")
M.adjustBruteLoss(2)
if(3)
M.emote("scream")
M.adjustBruteLoss(2)
if(4)
M << "<span class = 'danger'>Oh gosh, the pain!"
M.adjustBruteLoss(1)
if(5)
M << "<span class = 'danger'>THE PAIN!"
M.adjustBruteLoss(1)
if(prob(25))
M << "<span class='danger'>[pick("Oh god, something doesn't feel right!", "IT HURTS!", "FUCK!", "Something is seriously wrong!", "THE PAIN!", "You feel like you're gonna die!")]</span>"
M.adjustBruteLoss(1)
if(prob(10))
M.custom_emote(1,"strains, but nothing happens.")
M.adjustBruteLoss(2)
if(prob(5))
M.emote("scream")
M.adjustBruteLoss(4)
..()
return
+2 -2
View File
@@ -541,7 +541,7 @@ datum/reagent/pyrosium/on_tick()
/datum/chemical_reaction/azide/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
explosion(location,0,1,3)
explosion(location,0,1,4)
return
datum/reagent/firefighting_foam
@@ -609,7 +609,7 @@ datum/reagent/firefighting_foam/reaction_obj(var/obj/O, var/volume)
/datum/chemical_reaction/clf3_firefighting/on_reaction(var/datum/reagents/holder, var/created_volume)
var/location = get_turf(holder.my_atom)
explosion(location,0,0,3)
explosion(location,-1,0,2)
return
/datum/chemical_reaction/shock_explosion
+296 -164
View File
@@ -27,34 +27,49 @@
reagent_state = LIQUID
color = "#E7C4C4"
metabolization_rate = 0.2
overdose_threshold = 30
overdose_threshold = 40
/datum/reagent/histamine/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //dumping histamine on someone is VERY mean.
if(iscarbon(M))
if(method == TOUCH)
M.reagents.add_reagent("histamine",10)
else
M << "<span class='danger'>You feel a burning sensation in your throat...</span>"
M.emote("drool")
/datum/reagent/histamine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
switch(pick(1, 2, 3, 4))
if(1)
M << "<span class='danger'>You can barely see!</span>"
M.eye_blurry = 3
if(2)
M.emote("cough")
if(3)
M.emote("sneeze")
if(4)
if(prob(75))
M << "You scratch at an itch."
M.adjustBruteLoss(2*REM)
if(prob(20))
M.emote(pick("twitch", "grumble", "sneeze", "cough"))
if(prob(10))
M << "<span class='notice'>Your eyes itch.</span>"
M.emote(pick("blink", "sneeze"))
M.eye_blurry += 3
if(prob(10))
M.visible_message("<span class='danger'>[M] scratches at an itch.</span>")
M.adjustBruteLoss(1)
M.emote("grumble")
if(prob(5))
M << "<span class='danger'>You're getting a rash!</span>"
M.adjustBruteLoss(2)
..()
return
/datum/reagent/histamine/overdose_process(var/mob/living/M as mob)
M.adjustOxyLoss(pick(1,3)*REM)
M.adjustBruteLoss(pick(1,3)*REM)
M.adjustToxLoss(pick(1,3)*REM)
if(prob(2))
M << "<span class='danger'>You feel mucus running down the back of your throat.</span>"
M.adjustToxLoss(1)
M.jitteriness += 4
M.emote("sneeze", "cough")
else if(prob(4))
M.stuttering += rand(0,5)
if(prob(25))
M.emote(pick("choke","gasp"))
M.adjustOxyLoss(5)
else if(prob(7))
M << "<span class='danger'>Your chest hurts!</span>"
M.emote(pick("cough","gasp"))
M.adjustOxyLoss(3)
..()
return
@@ -86,7 +101,7 @@
/datum/reagent/venom
name = "Venom"
id = "venom"
description = "Will deal scaling amounts of Toxin and Brute damage over time. 25% chance to decay into 5-10 histamine."
description = "An incredibly potent poison. Origin unknown."
reagent_state = LIQUID
color = "#CF3600"
metabolization_rate = 0.2
@@ -94,20 +109,27 @@
/datum/reagent/venom/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1*REM)
M.adjustBruteLoss(1*REM)
if(volume >= 20)
M.adjustToxLoss(1*REM)
M.adjustBruteLoss(1*REM)
if(prob(25))
M.reagents.add_reagent("histamine",rand(5,10))
if(volume < 20)
M.adjustToxLoss(1)
M.adjustBruteLoss(1)
else if(volume < 40)
if(prob(8))
M.fakevomit()
M.adjustToxLoss(2)
M.adjustBruteLoss(2)
..()
return
/datum/reagent/venom/overdose_process(var/mob/living/M as mob)
if(volume >= 40)
if(prob(4))
M.gib()
M.visible_message("<span class='danger'><B>[M]</B> starts convulsing violently!</span>", "You feel as if your body is tearing itself apart!")
M.Weaken(15)
M.jitteriness += 1000
spawn(rand(20, 100))
M.gib()
..()
return
@@ -120,21 +142,32 @@
metabolization_rate = 1
/datum/reagent/neurotoxin2/on_mob_life(var/mob/living/M as mob)
if(current_cycle <= 4)
M.reagents.add_reagent("neurotoxin2", 1.0)
if(current_cycle >= 5)
if(prob(5))
M.emote("drool")
if(M.getBrainLoss() < 60)
M.adjustBrainLoss(1*REM)
M.adjustToxLoss(1*REM)
if(current_cycle >= 9)
M.drowsyness = max(M.drowsyness, 10)
if(current_cycle >= 13)
M.Paralyse(8)
switch(current_cycle)
if(5 to 45)
M.confused = max(M.confused, 15)
if(1 to 4)
current_cycle++
return
if(5 to 8)
M.dizziness += 1
M.confused = max(M.confused, 10)
if(9 to 12)
M.drowsyness = max(M.drowsyness, 10)
M.dizziness += 1
M.confused = max(M.confused, 20)
if(13)
M.emote("faint")
if(14 to INFINITY)
M.Paralyse(10)
M.drowsyness = max(M.drowsyness, 20)
M.jitteriness = max(0, M.jitteriness-30)
if(M.getBrainLoss() <= 80)
M.adjustBrainLoss(1)
else
if(prob(10))
M.adjustBrainLoss(1)
if(prob(10))
M.emote("drool")
M.adjustToxLoss(1)
..()
return
@@ -159,16 +192,17 @@
/datum/reagent/cyanide/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1.5*REM)
if(prob(5))
M.emote("drool")
M.adjustToxLoss(1.5*REM)
if(prob(10))
M << "<span class = 'danger'>You cannot breathe!</span>"
M << "<span class='danger'>You cannot breathe!</span>"
M.losebreath += 1
M.emote("gasp")
if(prob(8))
M << "<span class = 'danger'>You feel horrendously weak!</span>"
M << "<span class='danger'>You feel horrendously weak!</span>"
M.Stun(2)
M.adjustToxLoss(2*REM)
M.adjustToxLoss(2)
..()
return
@@ -182,6 +216,12 @@
mix_message = "The mixture gives off a faint scent of almonds."
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/chemical_reaction/cyanide/on_reaction(var/datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
for(var/mob/living/carbon/C in range(T, 1))
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
C.reagents.add_reagent("cyanide",7)
/datum/reagent/itching_powder
name = "Itching Powder"
@@ -194,17 +234,28 @@
/datum/reagent/itching_powder/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(rand(5,50)))
M << "You scratch at your head."
M.adjustBruteLoss(0.2*REM)
if(prob(rand(5,50)))
M << "You scratch at your leg."
M.adjustBruteLoss(0.2*REM)
if(prob(rand(5,50)))
M << "You scratch at your arm."
M.adjustBruteLoss(0.2*REM)
if(prob(25))
M.emote(pick("twitch", "laugh", "sneeze", "cry"))
if(prob(20))
M << "<span class='notice'>Something tickles!</span>"
M.emote(pick("laugh", "giggle"))
if(prob(15))
M.visible_message("<span class='danger'>[M] scratches at an itch.</span>")
M.adjustBruteLoss(1)
M.Stun(rand(0,1))
M.emote("grumble")
if(prob(10))
M << "<span class='danger'>So itchy!</span>"
M.adjustBruteLoss(2)
if(prob(6))
M.reagents.add_reagent("histamine",rand(1,3))
M.reagents.add_reagent("histamine", rand(1,3))
if(prob(2))
M << "<span class='danger'>AHHHHHH!</span>"
M.adjustBruteLoss(5)
M.Weaken(5)
M.jitteriness += 6
M.visible_message("<span class='danger'>[M] falls to the floor, scratching themselves violently!</span>")
M.emote("scream")
..()
return
@@ -240,7 +291,7 @@
var/mob/living/carbon/human/H = M
if(volume < 5)
M << "<span class = 'danger'>The blueish acidic substance stings you, but isn't concentrated enough to harm you!</span>"
M << "<span class='danger'>The blueish acidic substance stings you, but isn't concentrated enough to harm you!</span>"
if(volume >=5 && volume <=10)
if(!H.unacidable)
@@ -305,22 +356,24 @@
/datum/reagent/initropidril/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(33))
switch(pick(1,2))
if(1)
M << "<span class = 'danger'>You feel horrendously weak!</span>"
M.Stun(2)
if(2)
M.adjustToxLoss(rand(5,25))
M.adjustToxLoss(rand(5,25))
if(prob(33))
M << "<span class='danger'>You feel horribly weak.</span>"
M.Stun(2)
if(prob(10))
switch(pick(1,2))
if(1)
M << "<span class = 'danger'>You cannot breathe!</span>"
M.losebreath += 5
M.adjustOxyLoss(10)
if(2)
var/mob/living/carbon/human/H = M
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
M << "<span class='danger'>You cannot breathe!</span>"
M.adjustOxyLoss(10)
M.losebreath++
if(prob(10))
M << "<span class='danger'>Your chest is burning with pain!</span>"
M.adjustOxyLoss(10)
M.losebreath++
M.Stun(3)
M.Weaken(2)
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
..()
return
@@ -335,9 +388,10 @@
/datum/reagent/concentrated_initro/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(volume >=5)
var/mob/living/carbon/human/H = M
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
if(ishuman(M))
var/mob/living/carbon/human/H = M
if(!H.heart_attack)
H.heart_attack = 1 // rip in pepperoni
/datum/reagent/pancuronium
name = "Pancuronium"
@@ -349,12 +403,27 @@
/datum/reagent/pancuronium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(current_cycle >= 10)
M.Weaken(3)
if(prob(10))
M.losebreath += 1
if(prob(7))
M.losebreath += 3
switch(current_cycle)
if(1 to 5)
if(prob(10))
M.emote(pick("drool", "tremble"))
if(6 to 10)
if(prob(8))
M << "<span class='danger'>You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].</span>"
M.Stun(1)
else if(prob(8))
M.emote(pick("drool", "tremble"))
if(11 to INFINITY)
M.Stun(20)
M.Weaken(20)
if(prob(10))
M.emote(pick("drool", "tremble", "gasp"))
M.losebreath++
if(prob(9))
M << "<span class='danger'>You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!</span>"
if(prob(7))
M << "<span class='danger'>You can't breathe!</span>"
M.losebreath += 3
..()
return
@@ -368,12 +437,21 @@
/datum/reagent/sodium_thiopental/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(current_cycle == 1)
switch(current_cycle)
if(1)
M.emote("drool")
M.confused = max(M.confused, 5)
if(2 to 4)
M.drowsyness = max(M.drowsyness, 20)
if(5)
M.emote("faint")
M.Weaken(5)
if(6 to INFINITY)
M.Paralyse(20)
M.jitteriness = max(0, M.jitteriness-50)
if(prob(10))
M.emote("drool")
if(current_cycle >= 2)
M.drowsyness = max(M.drowsyness, 20)
if(current_cycle >= 5)
M.Paralyse(4)
M.adjustBrainLoss(1)
..()
return
@@ -388,13 +466,19 @@
/datum/reagent/ketamine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(current_cycle <= 10)
if(prob(20))
M.emote("yawn")
if(current_cycle == 6)
M.eye_blurry = max(M.eye_blurry, 5)
if(current_cycle >= 10)
M.Paralyse(10)
switch(current_cycle)
if(1 to 5)
if(prob(25))
M.emote("yawn")
if(6 to 9)
M.eye_blurry += 5
if(prob(35))
M.emote("yawn")
if(10)
M.emote("faint")
M.Weaken(5)
if(11 to INFINITY)
M.Paralyse(25)
..()
return
@@ -417,18 +501,21 @@
/datum/reagent/sulfonal/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1)
if(current_cycle >= 11)
M.drowsyness = max(M.drowsyness, 20)
M.jitteriness = max(0, M.jitteriness-30)
switch(current_cycle)
if(0 to 10)
if(prob(5))
if(1 to 10)
if(prob(7))
M.emote("yawn")
if(22)
if(11 to 20)
M.drowsyness = max(M.drowsyness, 20)
if(21)
M.emote("faint")
if(23 to INFINITY)
if(22 to INFINITY)
if(prob(20))
M.emote("faint")
M.Paralyse(5)
M.drowsyness = max(M.drowsyness, 20)
M.adjustToxLoss(1)
..()
return
@@ -467,13 +554,18 @@
/datum/reagent/lipolicide/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(!holder.has_reagent("nutriment"))
if(prob(30))
M.adjustToxLoss(1)
M.nutrition -= 10 * REAGENTS_METABOLISM
M.overeatduration = 0
if(M.nutrition < 0)//Prevent from going into negatives.
M.nutrition = 0
if(!M.nutrition)
switch(rand(1,3))
if(1)
M << "<span class='warning'>You feel hungry...</span>"
if(2)
M.adjustToxLoss(1)
M << "<span class='warning'>Your stomach grumbles painfully!</span>"
else
if(prob(60))
var/fat_to_burn = max(round(M.nutrition/100,1), 5)
M.nutrition = max(0, M.nutrition-fat_to_burn)
M.overeatduration = 0
..()
return
@@ -487,8 +579,8 @@
/datum/reagent/coniine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.losebreath += 5
M.adjustToxLoss(2)
M.losebreath += 5
..()
return
@@ -503,65 +595,101 @@
/datum/reagent/curare/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(5))
M.emote(pick("gasp","drool", "pale"))
if(current_cycle >= 11)
M.Weaken(15)
M.adjustToxLoss(1)
M.adjustOxyLoss(1)
switch(current_cycle)
if(1 to 5)
if(prob(20))
M.emote(pick("drool", "pale", "gasp"))
if(6 to 10)
M.eye_blurry += 5
if(prob(8))
M << "<span class='danger'>You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].</span>"
M.Stun(1)
else if(prob(8))
M.emote(pick("drool","pale", "gasp"))
if(11 to INFINITY)
M.Stun(30)
M.drowsyness = max(M.drowsyness, 20)
if(prob(20))
M.emote(pick("drool", "faint", "pale", "gasp", "collapse"))
else if(prob(8))
M << "<span class='danger'>You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!</span>"
M.losebreath++
..()
return
/datum/reagent/tabun
name = "Tabun"
id = "tabun"
/datum/reagent/sarin
name = "Sarin"
id = "sarin"
description = "An extremely deadly neurotoxin."
reagent_state = LIQUID
color = "#C7C7C7"
metabolization_rate = 0.1
penetrates_skin = 1
/datum/chemical_reaction/tabun
name = "tabun"
id = "tabun"
result = "tabun"
required_reagents = list("phenol" = 1, "diethylamine" = 1, "phosphorus" = 1, "oxygen" = 1, "chlorine" = 1, "sodiumchloride" = 1, "ethanol" = 1, "cyanide" = 1)
result_amount = 8
/datum/chemical_reaction/sarin
name = "sarin"
id = "sarin"
result = "sarin"
required_reagents = list("chlorine" = 1, "fuel" = 1, "oxygen" = 1, "phosphorus" = 1, "fluorine" = 1, "hydrogen" = 1, "acetone" = 1, "atrazine" = 1)
result_amount = 3
mix_message = "The mixture yields a colorless, odorless liquid."
min_temp = 374
mix_sound = 'sound/goonstation/misc/drinkfizz.ogg'
/datum/reagent/tabun/on_mob_life(var/mob/living/M as mob)
/datum/chemical_reaction/sarin/on_reaction(var/datum/reagents/holder)
var/turf/T = get_turf(holder.my_atom)
T.visible_message("<span class='warning'>The solution generates a strong vapor!</span>")
for(var/mob/living/carbon/C in range(T, 2))
if(!(C.wear_mask && (C.internals != null || C.wear_mask.flags & BLOCK_GAS_SMOKE_EFFECT)))
C.reagents.add_reagent("sarin",4)
/datum/reagent/sarin/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustFireLoss(1)
if(prob(20))
M.emote(pick("twitch","drool", "quiver"))
if(prob(10))
M.emote("scream")
M.drop_l_hand()
M.drop_r_hand()
if(prob(5))
M.confused = max(M.confused, 3)
if(prob(15))
M.fakevomit()
if(prob(2))
M.visible_message("<span class='danger'>[M] starts having a seizure!</span>", "<span class='danger'>You have a seizure!</span>")
M.Paralyse(5)
M.jitteriness = 1000
if(current_cycle >= 5)
M.jitteriness += 10
if(current_cycle >= 20)
if(prob(5))
M.emote("collapse")
switch(current_cycle)
if(0 to 60)
M.adjustBrainLoss(1)
M.adjustToxLoss(1)
if(1 to 15)
M.jitteriness += 20
if(prob(20))
M.emote(pick("twitch","twitch_s","quiver"))
if(16 to 30)
if(prob(25))
M.emote(pick("twitch","twitch","drool","quiver","tremble"))
M.eye_blurry += 5
M.stuttering = max(M.stuttering, 5)
if(prob(10))
M.confused = max(M.confused, 15)
if(prob(15))
M.Stun(1)
M.emote("scream")
if(30 to 60)
M.eye_blurry += 5
M.stuttering = max(M.stuttering, 5)
if(prob(10))
M.Stun(1)
M.emote(pick("twitch","twitch","drool","shake","tremble"))
if(prob(5))
M.emote("collapse")
if(prob(5))
M.Weaken(3)
M.visible_message("<span class='warning'>[M] has a seizure!</span>")
M.jitteriness = 1000
if(prob(5))
M << "<span class='warning'>You can't breathe!</span>"
M.emote(pick("gasp", "choke", "cough"))
M.losebreath++
if(61 to INFINITY)
M.adjustBrainLoss(2)
M.adjustToxLoss(2)
M.Paralyse(5)
M.losebreath += 5
if(prob(15))
M.emote(pick("gasp", "choke", "cough","twitch", "shake", "tremble","quiver","drool", "twitch","collapse"))
M.losebreath = max(5, M.losebreath + 5)
M.adjustToxLoss(1)
M.adjustBrainLoss(1)
M.Weaken(4)
if(prob(8))
M.fakevomit()
M.adjustToxLoss(1)
M.adjustBrainLoss(1)
M.adjustFireLoss(1)
..()
return
@@ -646,10 +774,18 @@
/datum/reagent/capulettium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.eye_blurry = max(M.eye_blurry, 2)
if(current_cycle == 12)
M.emote("deathgasp")
M.Paralyse(10)
switch(current_cycle)
if(1 to 5)
M.eye_blurry += 10
if(6 to 10)
M.drowsyness = max(M.drowsyness, 10)
if(11)
M.Paralyse(10)
M.visible_message("<B>[M]</B> seizes up and falls limp, their eyes dead and lifeless...") //so you can't trigger deathgasp emote on people. Edge case, but necessary.
if(12 to 60)
M.Paralyse(10)
if(61 to INFINITY)
M.eye_blurry += 10
..()
return
@@ -684,14 +820,12 @@
/datum/reagent/toxic_slurry/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(prob(10))
M.adjustToxLoss(rand(2,4))
M.adjustToxLoss(rand(2.4))
if(prob(7))
switch(pick(1,2))
if(1)
M.fakevomit(1)
if(2)
M.Stun(rand(4,10))
M << "<span class='warning'>A horrible migraine overpowers you.</span>"
M << "<span class='danger'>A horrible migraine overpowers you.</span>"
M.Stun(rand(2,5))
if(prob(7))
M.fakevomit(1)
..()
return
@@ -706,21 +840,18 @@
if(!..()) return
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
src = null
if((method==TOUCH && prob(33)) || method==INGEST)
if(prob(98))
randmutb(M)
else
randmutg(M)
if((method==TOUCH && prob(50)) || method==INGEST)
randmutb(M)
domutcheck(M, null)
M.UpdateAppearance()
return
/datum/reagent/glowing_slurry/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.apply_effect(2*REM, IRRADIATE, 0, negate_armor = 1)
M.apply_effect(2, IRRADIATE, 0, negate_armor = 1)
if(prob(15))
randmutb(M)
if(prob(5))
if(prob(3))
randmutg(M)
domutcheck(M, null)
M.UpdateAppearance()
@@ -738,9 +869,9 @@
/datum/reagent/ants/reaction_mob(var/mob/living/M as mob, var/method=TOUCH, var/volume) //NOT THE ANTS
if(iscarbon(M))
if(method == TOUCH || method==INGEST)
M.adjustBruteLoss(4)
M.emote("scream")
M << "<span class='warning'>OH SHIT ANTS!!!!</span>"
M.emote("scream")
M.adjustBruteLoss(4)
/datum/reagent/ants/on_mob_life(var/mob/living/M as mob)
@@ -757,6 +888,7 @@
color = "#20324D" //RGB: 32, 50, 77
metabolization_rate = 0.2
var/shock_timer = 0
process_flags = ORGANIC | SYNTHETIC
/datum/reagent/teslium/on_mob_life(mob/living/M)
shock_timer++
@@ -4,11 +4,13 @@
description = "A chemical compound that promotes concentrated production of the serotonin neurotransmitter in humans."
reagent_state = LIQUID
color = "#202040" // rgb: 20, 20, 40
metabolization_rate = 0.25 * REAGENTS_METABOLISM
/datum/reagent/serotrotium/on_mob_life(var/mob/living/M as mob)
if(ishuman(M))
if(prob(7)) M.emote(pick("twitch","drool","moan","gasp"))
holder.remove_reagent(src.id, 0.25 * REAGENTS_METABOLISM)
if(prob(7))
M.emote(pick("twitch","drool","moan","gasp"))
..()
return
@@ -21,8 +23,9 @@
/datum/reagent/lithium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.canmove && !M.restrained() && istype(M.loc, /turf/space))
step(M, pick(cardinal))
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
step(M, pick(cardinal))
if(prob(5)) M.emote(pick("twitch","drool","moan"))
..()
return
@@ -71,6 +74,7 @@
/datum/reagent/lsd/on_mob_life(var/mob/living/M)
if(!M) M = holder.my_atom
M.druggy = max(M.druggy, 15)
M.hallucination += 10
..()
return
@@ -89,7 +93,7 @@
M.druggy = max(M.druggy, 15)
if(isturf(M.loc) && !istype(M.loc, /turf/space))
if(M.canmove && !M.restrained())
if(prob(10)) step(M, pick(cardinal))
step(M, pick(cardinal))
if(prob(7)) M.emote(pick("twitch","drool","moan","giggle"))
..()
return
@@ -13,12 +13,6 @@
return
..()
/datum/reagent/fuel/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustToxLoss(1)
..()
return
/datum/reagent/fuel/unholywater //if you somehow managed to extract this from someone, dont splash it on yourself and have a smoke
name = "Unholy Water"
id = "unholywater"
@@ -84,13 +78,6 @@
T.overlays = image('icons/effects/effects.dmi',icon_state = "thermite")
return
/datum/reagent/thermite/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.adjustFireLoss(1)
..()
return
/datum/reagent/glycerol
name = "Glycerol"
id = "glycerol"
@@ -436,22 +436,28 @@
overdose_threshold = 200 // Hyperglycaemic shock
/datum/reagent/sugar/on_mob_life(var/mob/living/M as mob)
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
M.drowsyness = max(0, M.drowsyness-5)
if(current_cycle >= 90)
M.jitteriness += 2
if(prob(50))
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
if(current_cycle >= 90)
M.jitteriness += 10
if(prob(4))
M.reagents.add_reagent("epinephrine", 1.2)
..()
return
/datum/reagent/sugar/overdose_start(var/mob/living/M as mob)
M << "<span class='danger'>You pass out from hyperglycemic shock!</span>"
M.emote("collapse")
..()
/datum/reagent/sugar/overdose_process(var/mob/living/M as mob)
if(volume > 200)
M << "<span class = 'danger'>You pass out from hyperglycemic shock!</span>"
M.Paralyse(1)
M.Paralyse(3)
M.Weaken(4)
if(prob(8))
M.adjustToxLoss(rand(1,2))
M.adjustToxLoss(1)
..()
return
@@ -57,9 +57,11 @@
/datum/reagent/synaptizine/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.drowsyness = max(0, M.drowsyness-5)
M.AdjustParalysis(-1)
M.AdjustStunned(-1)
M.AdjustWeakened(-1)
M.SetSleeping(0)
if(prob(50))
M.adjustBrainLoss(-1.0)
..()
@@ -97,8 +99,8 @@
if(M.bodytemperature < 265)
M.adjustCloneLoss(-4)
M.adjustOxyLoss(-10)
M.heal_organ_damage(12,12)
M.adjustToxLoss(-3)
M.heal_organ_damage(12,12)
M.status_flags &= ~DISFIGURED
..()
return
@@ -132,8 +134,4 @@
description = "An all-purpose antibiotic agent extracted from space fungus."
reagent_state = LIQUID
color = "#0AB478"
metabolization_rate = 0.2
/datum/reagent/spaceacillin/on_mob_life(var/mob/living/M as mob)
..()
return
metabolization_rate = 0.2
@@ -188,7 +188,7 @@
/datum/reagent/radium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
if(M.radiation < 80)
M.apply_effect(4,IRRADIATE,0)
M.apply_effect(4, IRRADIATE, negate_armor = 1)
// radium may increase your chances to cure a disease
if(istype(M,/mob/living/carbon)) // make sure to only use it on carbon mobs
var/mob/living/carbon/C = M
@@ -197,7 +197,7 @@
var/datum/disease2/disease/V = C.virus2[ID]
if(prob(5))
if(prob(50))
M.apply_effect(50,IRRADIATE,0) // curing it that way may kill you instead
M.apply_effect(50, IRRADIATE, negate_armor = 1) // curing it that way may kill you instead
M.adjustToxLoss(100)
C.antibodies |= V.antigen
..()
@@ -224,10 +224,7 @@
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
src = null
if((method==TOUCH && prob(33)) || method==INGEST)
if(prob(98))
randmutb(M)
else
randmutg(M)
randmutb(M)
domutcheck(M, null)
M.UpdateAppearance()
return
@@ -235,7 +232,7 @@
/datum/reagent/mutagen/on_mob_life(var/mob/living/M as mob)
if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this.
if(!M) M = holder.my_atom
M.apply_effect(2*REM,IRRADIATE,0)
M.apply_effect(2*REM, IRRADIATE, negate_armor = 1)
if(prob(4))
randmutb(M)
..()
@@ -251,7 +248,7 @@
/datum/reagent/uranium/on_mob_life(var/mob/living/M as mob)
if(!M) M = holder.my_atom
M.apply_effect(2,IRRADIATE,0)
M.apply_effect(2, IRRADIATE, negate_armor = 1)
..()
return
@@ -327,7 +324,7 @@
var/mob/living/carbon/human/H = M
if(volume < 10)
M << "<span class = 'danger'>The greenish acidic substance stings you, but isn't concentrated enough to harm you!</span>"
M << "<span class='danger'>The greenish acidic substance stings you, but isn't concentrated enough to harm you!</span>"
if(volume >=10 && volume <=25)
if(!H.unacidable)
@@ -299,4 +299,4 @@
New()
..()
reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","tabun","histamine","venom","cyanide"), 40)
reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide"), 40)