#define SOLID 1 #define LIQUID 2 #define GAS 3 #define REM REAGENTS_EFFECT_MULTIPLIER /datum/reagent/polonium name = "Polonium" id = "polonium" description = "Cause significant Radiation damage over time." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.1 penetrates_skin = 1 /datum/reagent/polonium/on_mob_life(mob/living/M) M.apply_effect(8, IRRADIATE, negate_armor = 1) ..() /datum/reagent/histamine name = "Histamine" id = "histamine" description = "Immune-system neurotransmitter. If detected in blood, the subject is likely undergoing an allergic reaction." reagent_state = LIQUID color = "#E7C4C4" metabolization_rate = 0.2 overdose_threshold = 40 /datum/reagent/histamine/reaction_mob(mob/living/M, method=TOUCH, volume) //dumping histamine on someone is VERY mean. if(iscarbon(M)) if(method == TOUCH) M.reagents.add_reagent("histamine",10) else to_chat(M, "You feel a burning sensation in your throat...") M.emote("drool") /datum/reagent/histamine/on_mob_life(mob/living/M) if(prob(20)) M.emote(pick("twitch", "grumble", "sneeze", "cough")) if(prob(10)) to_chat(M, "Your eyes itch.") M.emote(pick("blink", "sneeze")) M.eye_blurry += 3 if(prob(10)) M.visible_message("[M] scratches at an itch.") M.adjustBruteLoss(1) M.emote("grumble") if(prob(5)) to_chat(M, "You're getting a rash!") M.adjustBruteLoss(2) ..() /datum/reagent/histamine/overdose_process(mob/living/M, severity) var/effect = ..() if(severity == 1) if(effect <= 2) to_chat(M, "You feel mucus running down the back of your throat.") M.adjustToxLoss(1) M.Jitter(4) M.emote(pick("sneeze", "cough")) else if(effect <= 4) M.stuttering += rand(0,5) if(prob(25)) M.emote(pick("choke","gasp")) M.adjustOxyLoss(5) else if(effect <= 7) to_chat(M, "Your chest hurts!") M.emote(pick("cough","gasp")) M.adjustOxyLoss(3) else if(severity == 2) if(effect <= 2) M.visible_message("[M] breaks out in hives!") M.adjustBruteLoss(6) else if(effect <= 4) M.visible_message("[M] has a horrible coughing fit!") M.Jitter(10) M.stuttering += rand(0,5) M.emote("cough") if(prob(40)) M.emote(pick("choke","gasp")) M.adjustOxyLoss(6) M.Weaken(8) else if(effect <= 7) to_chat(M, "Your heartbeat is pounding inside your head!") M << 'sound/effects/singlebeat.ogg' M.emote("collapse") M.adjustOxyLoss(8) M.adjustToxLoss(3) M.Weaken(3) M.emote(pick("choke", "gasp")) to_chat(M, "You feel like you're dying!") /datum/reagent/formaldehyde name = "Formaldehyde" id = "formaldehyde" description = "Formaldehyde is a common industrial chemical and is used to preserve corpses and medical samples. It is highly toxic and irritating." reagent_state = LIQUID color = "#DED6D0" penetrates_skin = 1 /datum/reagent/formaldehyde/on_mob_life(mob/living/M) M.adjustToxLoss(1*REM) if(prob(10)) M.reagents.add_reagent("histamine",rand(5,15)) ..() /datum/chemical_reaction/formaldehyde name = "formaldehyde" id = "formaldehyde" result = "formaldehyde" required_reagents = list("ethanol" = 1, "oxygen" = 1, "silver" = 1) result_amount = 3 min_temp = 420 mix_message = "Ugh, it smells like the morgue in here." /datum/reagent/venom name = "Venom" id = "venom" description = "An incredibly potent poison. Origin unknown." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.2 overdose_threshold = 40 /datum/reagent/venom/on_mob_life(mob/living/M) 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) ..() /datum/reagent/venom/overdose_process(mob/living/M) if(volume >= 40) if(prob(4)) M.visible_message("[M] starts convulsing violently!", "You feel as if your body is tearing itself apart!") M.Weaken(15) M.jitteriness += 1000 spawn(rand(20, 100)) M.gib() /datum/reagent/neurotoxin2 name = "Neurotoxin" id = "neurotoxin2" description = "A dangerous toxin that attacks the nervous system." reagent_state = LIQUID color = "#60A584" metabolization_rate = 1 /datum/reagent/neurotoxin2/on_mob_life(mob/living/M) switch(current_cycle) 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) ..() /datum/chemical_reaction/neurotoxin2 name = "neurotoxin2" id = "neurotoxin2" result = "neurotoxin2" required_reagents = list("space_drugs" = 1) result_amount = 1 min_temp = 674 mix_sound = null no_message = 1 /datum/reagent/cyanide name = "Cyanide" id = "cyanide" description = "A highly toxic chemical with some uses as a building block for other things." reagent_state = LIQUID color = "#CF3600" metabolization_rate = 0.1 penetrates_skin = 1 /datum/reagent/cyanide/on_mob_life(mob/living/M) M.adjustToxLoss(1.5*REM) if(prob(5)) M.emote("drool") if(prob(10)) to_chat(M, "You cannot breathe!") M.losebreath += 1 M.emote("gasp") if(prob(8)) to_chat(M, "You feel horrendously weak!") M.Stun(2) M.adjustToxLoss(2) ..() /datum/chemical_reaction/cyanide name = "Cyanide" id = "cyanide" result = "cyanide" required_reagents = list("oil" = 1, "ammonia" = 1, "oxygen" = 1) result_amount = 3 min_temp = 380 mix_message = "The mixture gives off a faint scent of almonds." mix_sound = 'sound/goonstation/misc/drinkfizz.ogg' /datum/chemical_reaction/cyanide/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) T.visible_message("The solution generates a strong vapor!") for(var/mob/living/carbon/C in range(T, 1)) if(C.can_breathe_gas()) C.reagents.add_reagent("cyanide", 7) /datum/reagent/itching_powder name = "Itching Powder" id = "itching_powder" description = "An abrasive powder beloved by cruel pranksters." reagent_state = LIQUID color = "#B0B0B0" metabolization_rate = 0.3 penetrates_skin = 1 /datum/reagent/itching_powder/on_mob_life(mob/living/M) if(prob(25)) M.emote(pick("twitch", "laugh", "sneeze", "cry")) if(prob(20)) to_chat(M, "Something tickles!") M.emote(pick("laugh", "giggle")) if(prob(15)) M.visible_message("[M] scratches at an itch.") M.adjustBruteLoss(1) M.Stun(rand(0,1)) M.emote("grumble") if(prob(10)) to_chat(M, "So itchy!") M.adjustBruteLoss(2) if(prob(6)) M.reagents.add_reagent("histamine", rand(1,3)) if(prob(2)) to_chat(M, "AHHHHHH!") M.adjustBruteLoss(5) M.Weaken(5) M.jitteriness += 6 M.visible_message("[M] falls to the floor, scratching themselves violently!") M.emote("scream") ..() /datum/chemical_reaction/itching_powder name = "Itching Powder" id = "itching_powder" result = "itching_powder" required_reagents = list("fuel" = 1, "ammonia" = 1, "fungus" = 1) result_amount = 3 mix_message = "The mixture congeals and dries up, leaving behind an abrasive powder." mix_sound = 'sound/effects/blobattack.ogg' /datum/reagent/facid/on_mob_life(mob/living/M) M.adjustToxLoss(1*REM) M.adjustFireLoss(1) ..() /datum/reagent/facid name = "Fluorosulfuric Acid" id = "facid" description = "Fluorosulfuric acid is a an extremely corrosive super-acid." reagent_state = LIQUID color = "#4141D2" process_flags = ORGANIC | SYNTHETIC /datum/reagent/facid/reaction_mob(mob/living/M, method=TOUCH, volume) if(method == TOUCH || method == INGEST) if(ishuman(M)) var/mob/living/carbon/human/H = M if(volume < 5) to_chat(M, "The blueish acidic substance stings you, but isn't concentrated enough to harm you!") if(volume >=5 && volume <=10) if(!H.unacidable) M.take_organ_damage(0,max(volume-5,2)*4) M.emote("scream") if(volume > 10) if(method == TOUCH) if(H.wear_mask) if(!H.wear_mask.unacidable) qdel(H.wear_mask) H.update_inv_wear_mask() to_chat(H, "Your mask melts away but protects you from the acid!") else to_chat(H, "Your mask protects you from the acid!") return if(H.head) if(!H.head.unacidable) qdel(H.head) H.update_inv_head() to_chat(H, "Your helmet melts away but protects you from the acid") else to_chat(H, "Your helmet protects you from the acid!") return if(!H.unacidable) var/obj/item/organ/external/affecting = H.get_organ("head") affecting.take_damage(0, 75) H.UpdateDamageIcon() H.emote("scream") H.status_flags |= DISFIGURED /datum/reagent/facid/reaction_obj(obj/O, volume) if((istype(O, /obj/item) || istype(O, /obj/effect/glowshroom))) if(!O.unacidable) var/obj/effect/decal/cleanable/molten_item/I = new/obj/effect/decal/cleanable/molten_item(O.loc) I.desc = "Looks like this was \an [O] some time ago." O.visible_message("[O] melts.") qdel(O) /datum/chemical_reaction/facid name = "Fluorosulfuric Acid" id = "facid" result = "facid" required_reagents = list("sacid" = 1, "fluorine" = 1, "hydrogen" = 1, "potassium" = 1) result_amount = 4 min_temp = 380 mix_message = "The mixture deepens to a dark blue, and slowly begins to corrode its container." /datum/reagent/initropidril name = "Initropidril" id = "initropidril" description = "A highly potent cardiac poison - can kill within minutes." reagent_state = LIQUID color = "#7F10C0" metabolization_rate = 0.4 /datum/reagent/initropidril/on_mob_life(mob/living/M) if(prob(33)) M.adjustToxLoss(rand(5,25)) if(prob(33)) to_chat(M, "You feel horribly weak.") M.Stun(2) if(prob(10)) to_chat(M, "You cannot breathe!") M.adjustOxyLoss(10) M.losebreath++ if(prob(10)) to_chat(M, "Your chest is burning with pain!") 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 ..() /datum/chemical_reaction/initropidril name = "Initropidril" id = "initropidril" result = "initropidril" required_reagents = list("crank" = 1, "histamine" = 1, "krokodil" = 1, "bath_salts" = 1, "atropine" = 1, "nicotine" = 1, "morphine" = 1) result_amount = 4 mix_message = "A sweet and sugary scent drifts from the unpleasant milky substance." /datum/reagent/concentrated_initro name = "Concentrated Initropidril" id = "concentrated_initro" description = "A guaranteed heart-stopper!" reagent_state = LIQUID color = "#AB1CCF" metabolization_rate = 0.4 /datum/reagent/concentrated_initro/on_mob_life(mob/living/M) if(volume >=5) 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" id = "pancuronium" description = "Pancuronium bromide is a powerful skeletal muscle relaxant." reagent_state = LIQUID color = "#1E4664" metabolization_rate = 0.2 /datum/reagent/pancuronium/on_mob_life(mob/living/M) switch(current_cycle) if(1 to 5) if(prob(10)) M.emote(pick("drool", "tremble")) if(6 to 10) if(prob(8)) to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].") 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)) to_chat(M, "You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!") if(prob(7)) to_chat(M, "You can't breathe!") M.losebreath += 3 ..() /datum/reagent/sodium_thiopental name = "Sodium Thiopental" id = "sodium_thiopental" description = "An rapidly-acting barbituate tranquilizer." reagent_state = LIQUID color = "#5F8BE1" metabolization_rate = 0.7 /datum/reagent/sodium_thiopental/on_mob_life(mob/living/M) 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") M.adjustBrainLoss(1) ..() /datum/reagent/ketamine name = "Ketamine" id = "ketamine" description = "A potent veterinary tranquilizer." reagent_state = LIQUID color = "#646EA0" metabolization_rate = 0.8 penetrates_skin = 1 /datum/reagent/ketamine/on_mob_life(mob/living/M) 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) ..() /datum/reagent/sulfonal name = "Sulfonal" id = "sulfonal" description = "Deals some toxin damage, and puts you to sleep after 66 seconds." reagent_state = LIQUID color = "#6BA688" metabolization_rate = 0.1 /datum/chemical_reaction/sulfonal name = "sulfonal" id = "sulfonal" result = "sulfonal" required_reagents = list("acetone" = 1, "diethylamine" = 1, "sulfur" = 1) result_amount = 3 mix_message = "The mixture gives off quite a stench." mix_sound = 'sound/goonstation/misc/drinkfizz.ogg' /datum/reagent/sulfonal/on_mob_life(mob/living/M) M.jitteriness = max(0, M.jitteriness-30) switch(current_cycle) if(1 to 10) if(prob(7)) M.emote("yawn") if(11 to 20) M.drowsyness = max(M.drowsyness, 20) if(21) M.emote("faint") if(22 to INFINITY) if(prob(20)) M.emote("faint") M.Paralyse(5) M.drowsyness = max(M.drowsyness, 20) M.adjustToxLoss(1) ..() /datum/reagent/amanitin name = "Amanitin" id = "amanitin" description = "A toxin produced by certain mushrooms. Very deadly." reagent_state = LIQUID color = "#D9D9D9" /datum/reagent/amanitin/reagent_deleted(mob/living/M) M.adjustToxLoss(current_cycle*rand(2,4)) ..() /datum/reagent/lipolicide name = "Lipolicide" id = "lipolicide" description = "A compound found in many seedy dollar stores in the form of a weight-loss tonic." reagent_state = SOLID color = "#D1DED1" metabolization_rate = 0.2 /datum/chemical_reaction/lipolicide name = "lipolicide" id = "lipolicide" result = "lipolicide" required_reagents = list("mercury" = 1, "diethylamine" = 1, "ephedrine" = 1) result_amount = 3 /datum/reagent/lipolicide/on_mob_life(mob/living/M) if(!M.nutrition) switch(rand(1,3)) if(1) to_chat(M, "You feel hungry...") if(2) M.adjustToxLoss(1) to_chat(M, "Your stomach grumbles painfully!") 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 ..() /datum/reagent/coniine name = "Coniine" id = "coniine" description = "A neurotoxin that rapidly causes respiratory failure." reagent_state = LIQUID color = "#C2D8CD" metabolization_rate = 0.05 /datum/reagent/coniine/on_mob_life(mob/living/M) M.adjustToxLoss(2) M.losebreath += 5 ..() /datum/reagent/curare name = "Curare" id = "curare" description = "A highly dangerous paralytic poison." reagent_state = LIQUID color = "#191919" metabolization_rate = 0.1 penetrates_skin = 1 /datum/reagent/curare/on_mob_life(mob/living/M) 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)) to_chat(M, "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")].") 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)) to_chat(M, "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!") M.losebreath++ ..() /datum/reagent/sarin name = "Sarin" id = "sarin" description = "An extremely deadly neurotoxin." reagent_state = LIQUID color = "#C7C7C7" metabolization_rate = 0.1 penetrates_skin = 1 overdose_threshold = 25 /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/chemical_reaction/sarin/on_reaction(datum/reagents/holder) var/turf/T = get_turf(holder.my_atom) T.visible_message("The solution generates a strong vapor!") for(var/mob/living/carbon/C in range(T, 2)) if(C.can_breathe_gas()) C.reagents.add_reagent("sarin", 4) /datum/reagent/sarin/on_mob_life(mob/living/M) switch(current_cycle) 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("[M] has a seizure!") M.jitteriness = 1000 if(prob(5)) to_chat(M, "You can't breathe!") M.emote(pick("gasp", "choke", "cough")) M.losebreath++ if(61 to INFINITY) 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) ..() /datum/reagent/atrazine name = "Atrazine" id = "atrazine" description = "A herbicidal compound used for destroying unwanted plants." reagent_state = LIQUID color = "#17002D" /datum/reagent/atrazine/on_mob_life(mob/living/M) M.adjustToxLoss(2) ..() // Clear off wallrot fungi /datum/reagent/atrazine/reaction_turf(turf/simulated/wall/W, volume) if(istype(W) && W.rotting) W.rotting = 0 for(var/obj/effect/overlay/O in W) if(O.name == "Wallrot") // This is so awful qdel(O) W.visible_message("The fungi are completely dissolved by the solution!") /datum/reagent/atrazine/reaction_obj(obj/O, volume) if(istype(O,/obj/structure/alien/weeds/)) var/obj/structure/alien/weeds/alien_weeds = O alien_weeds.health -= rand(15,35) // Kills alien weeds pretty fast alien_weeds.healthcheck() else if(istype(O, /obj/effect/glowshroom)) //even a small amount is enough to kill it qdel(O) else if(istype(O,/obj/effect/plant)) if(prob(50)) qdel(O) //Kills kudzu too. // Damage that is done to growing plants is separately at code/game/machinery/hydroponics at obj/item/hydroponics /datum/reagent/atrazine/reaction_mob(mob/living/M, method=TOUCH, volume) if(iscarbon(M)) var/mob/living/carbon/C = M if(!C.wear_mask) // If not wearing a mask C.adjustToxLoss(2) // 2 toxic damage per application if(ishuman(M)) var/mob/living/carbon/human/H = M if(H.species.flags & IS_PLANT) //plantmen take a LOT of damage H.adjustToxLoss(50) ..() else if(istype(M, /mob/living/simple_animal/diona)) //plantmen monkeys (diona) take EVEN MORE damage var/mob/living/simple_animal/diona/D = M D.adjustHealth(100) ..() /datum/chemical_reaction/atrazine name = "atrazine" id = "atrazine" result = "atrazine" required_reagents = list("chlorine" = 1, "hydrogen" = 1, "nitrogen" = 1) result_amount = 3 mix_message = "The mixture gives off a harsh odor" /datum/reagent/capulettium name = "Capulettium" id = "capulettium" description = "A rare drug that causes the user to appear dead for some time." reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 /datum/chemical_reaction/capulettium name = "capulettium" id = "capulettium" result = "capulettium" required_reagents = list("neurotoxin2" = 1, "chlorine" = 1, "hydrogen" = 1) result_amount = 1 mix_message = "The smell of death wafts up from the solution." /datum/reagent/capulettium/on_mob_life(mob/living/M) 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("[M] 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 ..() /datum/reagent/capulettium_plus name = "Capulettium Plus" id = "capulettium_plus" description = "A rare and expensive drug that causes the user to appear dead for some time while they retain consciousness and vision." reagent_state = LIQUID color = "#60A584" heart_rate_stop = 1 /datum/chemical_reaction/capulettium_plus name = "capulettium_plus" id = "capulettium_plus" result = "capulettium_plus" required_reagents = list("capulettium" = 1, "ephedrine" = 1, "methamphetamine" = 1) result_amount = 3 mix_message = "The solution begins to slosh about violently by itself." /datum/reagent/capulettium_plus/on_mob_life(mob/living/M) M.silent = max(M.silent, 2) ..() /datum/reagent/toxic_slurry name = "Toxic Slurry" id = "toxic_slurry" description = "A filthy, carcinogenic sludge produced by the Slurrypod plant." reagent_state = LIQUID color = "#00C81E" /datum/reagent/toxic_slurry/on_mob_life(mob/living/M) if(prob(10)) M.adjustToxLoss(rand(2.4)) if(prob(7)) to_chat(M, "A horrible migraine overpowers you.") M.Stun(rand(2,5)) if(prob(7)) M.fakevomit(1) ..() /datum/reagent/glowing_slurry name = "Glowing Slurry" id = "glowing_slurry" description = "This is probably not good for you." reagent_state = LIQUID color = "#00FD00" /datum/reagent/glowing_slurry/reaction_mob(mob/living/M, method=TOUCH, volume) //same as mutagen if(!..()) return if(!M.dna) return //No robots, AIs, aliens, Ians or other mobs should be affected by this. if((method==TOUCH && prob(50)) || method==INGEST) randmutb(M) domutcheck(M, null) M.UpdateAppearance() /datum/reagent/glowing_slurry/on_mob_life(mob/living/M) M.apply_effect(2, IRRADIATE, 0, negate_armor = 1) if(!M.dna) return if(prob(15)) randmutb(M) if(prob(3)) randmutg(M) domutcheck(M, null) M.UpdateAppearance() ..() /datum/reagent/ants name = "Ants" id = "ants" description = "A sample of a lost breed of Space Ants (formicidae bastardium tyrannus), they are well-known for ravaging the living shit out of pretty much anything." reagent_state = SOLID color = "#993333" process_flags = ORGANIC | SYNTHETIC /datum/reagent/ants/reaction_mob(mob/living/M, method=TOUCH, volume) //NOT THE ANTS if(iscarbon(M)) if(method == TOUCH || method==INGEST) to_chat(M, "OH SHIT ANTS!!!!") M.emote("scream") M.adjustBruteLoss(4) /datum/reagent/ants/on_mob_life(mob/living/M) M.adjustBruteLoss(2) ..() /datum/reagent/teslium //Teslium. Causes periodic shocks, and makes shocks against the target much more effective. name = "Teslium" id = "teslium" description = "An unstable, electrically-charged metallic slurry. Increases the conductance of living things." reagent_state = LIQUID 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++ if(shock_timer >= rand(5,30)) //Random shocks are wildly unpredictable shock_timer = 0 M.electrocute_act(rand(5,20), "Teslium in their body", 1, 1) //Override because it's caused from INSIDE of you playsound(M, "sparks", 50, 1) ..() /datum/chemical_reaction/teslium name = "Teslium" id = "teslium" result = "teslium" required_reagents = list("plasma" = 1, "silver" = 1, "blackpowder" = 1) result_amount = 3 mix_message = "A jet of sparks flies from the mixture as it merges into a flickering slurry." min_temp = 400 mix_sound = null /datum/chemical_reaction/teslium/on_reaction(datum/reagents/holder, created_volume) var/location = get_turf(holder.my_atom) var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread s.set_up(6, 1, location) s.start()