mirror of
https://github.com/ParadiseSS13/Paradise.git
synced 2026-07-20 03:25:49 +01:00
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
..()
|
||||
@@ -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")
|
||||
|
||||
@@ -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()
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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)
|
||||
Reference in New Issue
Block a user