From 76ee7168dcbb300c74dbe3ac454cdc532f158e01 Mon Sep 17 00:00:00 2001 From: Fox-McCloud Date: Thu, 10 Mar 2016 23:03:39 -0500 Subject: [PATCH] part III --- code/modules/reagents/newchem/drugs.dm | 13 +- code/modules/reagents/newchem/food.dm | 22 +- code/modules/reagents/newchem/medicine.dm | 2 +- .../modules/reagents/newchem/newchem_procs.dm | 10 +- code/modules/reagents/newchem/other.dm | 33 ++- code/modules/reagents/newchem/pyro.dm | 4 +- code/modules/reagents/newchem/toxins.dm | 222 ++++++++++-------- .../oldchem/reagents/reagents_flammable.dm | 13 - .../oldchem/reagents/reagents_food.dm | 17 +- .../reagents/oldchem/reagents/reagents_med.dm | 8 +- .../oldchem/reagents/reagents_toxin.dm | 7 +- sound/goonstation/effects/crystalshatter.ogg | Bin 0 -> 17982 bytes 12 files changed, 183 insertions(+), 168 deletions(-) create mode 100644 sound/goonstation/effects/crystalshatter.ogg diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 8ba994a1a24..0ca9a874c2b 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -97,6 +97,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) @@ -217,7 +218,7 @@ if(prob(20)) M.emote("laugh") if(prob(33)) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message("[M]'s hands flip out and flail everywhere!") var/obj/item/I = M.get_active_hand() if(I) M.drop_item() @@ -400,7 +401,7 @@ M.adjustStaminaLoss(-40) if(prob(90)) M.adjustToxLoss(1) - if (prob(5)) + 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)) @@ -484,7 +485,7 @@ M.AdjustStunned(-1.5) M.AdjustWeakened(-1.5) M.adjustStaminaLoss(-1.5) - M.setSleeping(0) + M.SetSleeping(0) ..() return @@ -499,11 +500,11 @@ M.emote("laugh") M.adjustToxLoss(1) if(2) - M << "[M] can't seem to control their legs!" + M << "[M] can't seem to control their legs!" M.Weaken(8) M.adjustToxLoss(1) if(3) - M << "[M]'s hands flip out and flail everywhere!" + M << "[M]'s hands flip out and flail everywhere!" M.drop_l_hand() M.drop_r_hand() M.adjustToxLoss(1) @@ -559,7 +560,7 @@ if(prob(20)) M.emote("ping") if(prob(33)) - M.visible_message("[M]'s hands flip out and flail everywhere!") + M.visible_message("[M]'s hands flip out and flail everywhere!") var/obj/item/I = M.get_active_hand() if(I) M.drop_item() diff --git a/code/modules/reagents/newchem/food.dm b/code/modules/reagents/newchem/food.dm index 306341f7476..889d03e92c7 100644 --- a/code/modules/reagents/newchem/food.dm +++ b/code/modules/reagents/newchem/food.dm @@ -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 << "Ugh! Eating that was a terrible idea!" + M << "Ugh! Eating that was a terrible idea!" datum/reagent/egg name = "Egg" @@ -201,11 +201,11 @@ datum/reagent/fungus/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) if(method == INGEST) var/ranchance = rand(1,10) if(ranchance == 1) - M << "You feel very sick." + M << "You feel very sick." M.reagents.add_reagent("toxin", rand(1,5)) - else if (ranchance <= 5 && ranchance != 1) - M << "That tasted absolutely FOUL." - else M << "Yuck!" + else if(ranchance <= 5 && ranchance != 1) + M << "That tasted absolutely FOUL." + else M << "Yuck!" /datum/reagent/chicken_soup name = "Chicken soup" @@ -232,12 +232,12 @@ datum/reagent/msg/reaction_mob(var/mob/M, var/method=TOUCH, var/volume) if(!istype(M, /mob/living)) return if(method == INGEST) - M << "That tasted amazing!" + M << "That tasted amazing!" /datum/reagent/msg/on_mob_life(var/mob/living/M as mob) if(prob(5)) - if (prob(10)) + if(prob(10)) M.adjustToxLoss(rand(2.4)) if(prob(7)) M << "A horrible migraine overpowers you." @@ -281,7 +281,7 @@ datum/reagent/cheese/reaction_turf(var/turf/T, var/volume) /datum/reagent/fake_cheese/overdose_process(var/mob/living/M as mob) if(prob(8)) - M << "You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat." + M << "You feel something squirming in your stomach. Your thoughts turn to cheese and you begin to sweat." M.adjustToxLoss(rand(1,2)) ..() @@ -379,7 +379,7 @@ 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 << "[spooky_eat]" + M << "[spooky_eat]" /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...") @@ -577,11 +577,11 @@ datum/reagent/pepperoni/reaction_mob(var/mob/living/M, var/method=TOUCH, var/vol if(holder.get_reagent_amount(src.id) >= 25 && prob(holder.get_reagent_amount(src.id)*0.15)) M << "Your chest feels [pick("weird","uncomfortable","nasty","gross","odd","unusual","warm")]!" M.adjustToxLoss(rand(1,2)) - else if (holder.get_reagent_amount(src.id) >= 45 && prob(holder.get_reagent_amount(src.id)*0.08)) + else if(holder.get_reagent_amount(src.id) >= 45 && prob(holder.get_reagent_amount(src.id)*0.08)) M << "Your chest [pick("hurts","stings","aches","burns")]!" M.adjustToxLoss(rand(2,4)) M.stunned ++ - else if (holder.get_reagent_amount(src.id) >= 150 && prob(holder.get_reagent_amount(src.id)*0.01)) + else if(holder.get_reagent_amount(src.id) >= 150 && prob(holder.get_reagent_amount(src.id)*0.01)) M << "Your chest is burning with pain!" M.Stun(1) M.Weaken(1) diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index 2a7e0517f50..b85f73edf27 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -596,7 +596,7 @@ datum/reagent/atropine/on_mob_life(var/mob/living/M as mob) M.adjustToxLoss(-1) M.adjustBruteLoss(-3*REM) M.adjustFireLoss(-3*REM) - else if (M.health > -60) + else if(M.health > -60) M.adjustToxLoss(1) M.reagents.remove_reagent("sarin", 20) ..() diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm index aa3493df350..fd29db191f4 100644 --- a/code/modules/reagents/newchem/newchem_procs.dm +++ b/code/modules/reagents/newchem/newchem_procs.dm @@ -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 << "You feel like you've gotten over your need for [R.name]." + M << "You feel like you've gotten over your need for [R.name]." addiction_list.Remove(R) addiction_tick++ update_total() @@ -132,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 << "You feel like some [name] right about now." + M << "You feel like some [name] right about now." return datum/reagent/proc/addiction_act_stage2(var/mob/living/M as mob) if(prob(30)) - M << "You feel like you need [name]. You just can't get enough." + M << "You feel like you need [name]. You just can't get enough." return datum/reagent/proc/addiction_act_stage3(var/mob/living/M as mob) if(prob(30)) - M << "You have an intense craving for [name]." + M << "You have an intense craving for [name]." return datum/reagent/proc/addiction_act_stage4(var/mob/living/M as mob) if(prob(30)) - M << "You're not feeling good at all! You really need some [name]." + M << "You're not feeling good at all! You really need some [name]." return /datum/reagent/proc/reagent_deleted() diff --git a/code/modules/reagents/newchem/other.dm b/code/modules/reagents/newchem/other.dm index 3f6ae65d250..07524fd1767 100644 --- a/code/modules/reagents/newchem/other.dm +++ b/code/modules/reagents/newchem/other.dm @@ -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 << "Hair bursts forth from your every follicle!" + H << "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 << "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 << "Oh gosh, the pain!" - M.adjustBruteLoss(1) - if(5) - M << "THE PAIN!" - M.adjustBruteLoss(1) + if(prob(25)) + M << "[pick("Oh god, something doesn't feel right!", "IT HURTS!", "FUCK!", "Something is seriously wrong!", "THE PAIN!", "You feel like you're gunna die!")]" + 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 diff --git a/code/modules/reagents/newchem/pyro.dm b/code/modules/reagents/newchem/pyro.dm index 12a8266693e..719d95b6c3c 100644 --- a/code/modules/reagents/newchem/pyro.dm +++ b/code/modules/reagents/newchem/pyro.dm @@ -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 diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index a9006bfcb3f..3bcd480814f 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -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 << "You feel a burning sensation in your throat..." + 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 << "You can barely see!" - 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 << "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)) + M << "You're getting a rash!" + 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 << "You feel mucus running down the back of your throat." + 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 << "Your chest hurts!" + 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("[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() ..() return @@ -143,7 +165,7 @@ else if(prob(10)) M.adjustBrainLoss(1) - if (prob(10)) + if(prob(10)) M.emote("drool") M.adjustToxLoss(1) ..() @@ -170,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 << "You cannot breathe!" + M << "You cannot breathe!" M.losebreath += 1 + M.emote("gasp") if(prob(8)) - M << "You feel horrendously weak!" + M << "You feel horrendously weak!" M.Stun(2) - M.adjustToxLoss(2*REM) + M.adjustToxLoss(2) ..() return @@ -205,17 +228,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 << "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)) + M << "So itchy!" + 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 << "AHHHHHH!" + M.adjustBruteLoss(5) + M.Weaken(5) + M.jitteriness += 6 + M.visible_message("[M] falls to the floor, scratching themselves violently!") + M.emote("scream") ..() return @@ -251,7 +285,7 @@ var/mob/living/carbon/human/H = M if(volume < 5) - M << "The blueish acidic substance stings you, but isn't concentrated enough to harm you!" + M << "The blueish acidic substance stings you, but isn't concentrated enough to harm you!" if(volume >=5 && volume <=10) if(!H.unacidable) @@ -316,23 +350,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 << "You feel horrendously weak!" - M.Stun(2) - if(2) - M.adjustToxLoss(rand(5,25)) + M.adjustToxLoss(rand(5,25)) + if(prob(33)) + M << "You feel horribly weak." + M.Stun(2) if(prob(10)) - switch(pick(1,2)) - if(1) - M << "You cannot breathe!" - M.losebreath += 5 - M.adjustOxyLoss(10) - if(2) - if(ishuman(M)) - var/mob/living/carbon/human/H = M - if(!H.heart_attack) - H.heart_attack = 1 // rip in pepperoni + M << "You cannot breathe!" + M.adjustOxyLoss(10) + M.losebreath++ + if(prob(10)) + 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 ..() return @@ -347,9 +382,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" @@ -369,7 +405,7 @@ if(prob(8)) M << "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")]." M.Stun(1) - else if (prob(8)) + else if(prob(8)) M.emote(pick("drool", "tremble")) if(11 to INFINITY) M.Stun(20) @@ -396,18 +432,18 @@ /datum/reagent/sodium_thiopental/on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom switch(current_cycle) - if (1) + if(1) M.emote("drool") M.confused = max(M.confused, 5) - if (2 to 4) + if(2 to 4) M.drowsyness = max(M.drowsyness, 20) - if (5) + if(5) M.emote("faint") M.Weaken(5) - if (6 to INFINITY) + if(6 to INFINITY) M.Paralyse(20) M.jitteriness = max(0, M.jitteriness-50) - if (prob(10)) + if(prob(10)) M.emote("drool") M.adjustBrainLoss(1) ..() @@ -430,7 +466,7 @@ M.emote("yawn") if(6 to 9) M.eye_blurry += 5 - if (prob(35)) + if(prob(35)) M.emote("yawn") if(10) M.emote("faint") @@ -462,7 +498,7 @@ M.jitteriness = max(0, M.jitteriness-30) switch(current_cycle) if(1 to 10) - if (prob(7)) + if(prob(7)) M.emote("yawn") if(11 to 20) M.drowsyness = max(M.drowsyness, 20) @@ -512,13 +548,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 << "You feel hungry..." + if(2) + M.adjustToxLoss(1) + 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 ..() return @@ -532,8 +573,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 @@ -559,14 +600,14 @@ if(prob(8)) M << "You feel [pick("weak", "horribly weak", "numb", "like you can barely move", "tingly")]." M.Stun(1) - else if (prob(8)) + 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)) + else if(prob(8)) M << "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!" M.losebreath++ ..() @@ -631,7 +672,7 @@ M.adjustToxLoss(1) M.adjustBrainLoss(1) M.Weaken(4) - if (prob(8)) + if(prob(8)) M.fakevomit() M.adjustToxLoss(1) M.adjustBrainLoss(1) @@ -766,14 +807,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 << "A horrible migraine overpowers you." + M << "A horrible migraine overpowers you." + M.Stun(rand(2,5)) + if(prob(7)) + M.fakevomit(1) ..() return @@ -788,21 +827,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() @@ -820,9 +856,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 << "OH SHIT ANTS!!!!" + M.emote("scream") + M.adjustBruteLoss(4) /datum/reagent/ants/on_mob_life(var/mob/living/M as mob) diff --git a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm index 377fd17f340..361507d19e6 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_flammable.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_flammable.dm @@ -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" diff --git a/code/modules/reagents/oldchem/reagents/reagents_food.dm b/code/modules/reagents/oldchem/reagents/reagents_food.dm index 0717d5dbb4f..e483cedbdc6 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_food.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_food.dm @@ -436,22 +436,25 @@ 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 += 2 + if(prob(4)) + M.reagents.add_reagent("epinephrine", 1.2) ..() return /datum/reagent/sugar/overdose_process(var/mob/living/M as mob) if(volume > 200) - M << "You pass out from hyperglycemic shock!" - M.Paralyse(1) + M << "You pass out from hyperglycemic shock!" + M.emote("collapse") + M.Paralyse(3) + M.Weaken(4) if(prob(8)) - M.adjustToxLoss(rand(1,2)) + M.adjustToxLoss(1) ..() return diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm index e1971c0d941..ae6fd9bb8a3 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_med.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm @@ -99,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 @@ -134,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 \ No newline at end of file + metabolization_rate = 0.2 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm index 0bdd25a4386..1013c237462 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm @@ -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 @@ -327,7 +324,7 @@ var/mob/living/carbon/human/H = M if(volume < 10) - M << "The greenish acidic substance stings you, but isn't concentrated enough to harm you!" + M << "The greenish acidic substance stings you, but isn't concentrated enough to harm you!" if(volume >=10 && volume <=25) if(!H.unacidable) diff --git a/sound/goonstation/effects/crystalshatter.ogg b/sound/goonstation/effects/crystalshatter.ogg new file mode 100644 index 0000000000000000000000000000000000000000..4f0b4fb7942d643e69688755d8d9e972235e9104 GIT binary patch literal 17982 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 literal 0 HcmV?d00001