diff --git a/code/datums/uplink_item.dm b/code/datums/uplink_item.dm index 2e25e2fd816..038070c5571 100644 --- a/code/datums/uplink_item.dm +++ b/code/datums/uplink_item.dm @@ -355,11 +355,11 @@ var/list/uplink_items = list() cost = 6 gamemodes = list(/datum/game_mode/nuclear) -/datum/uplink_item/dangerous/tabungrenades - name = "Tabun Gas Grenades" - desc = "A box of four (4) grenades filled with Tabun, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintained with team to avoid accidental gassings." +/datum/uplink_item/dangerous/saringrenades + name = "Sarin Gas Grenades" + desc = "A box of four (4) grenades filled with Sarin, a deadly neurotoxin. Use extreme caution when handling and be sure to vacate the premise after using; ensure communication is maintained with team to avoid accidental gassings." reference = "TGG" - item = /obj/item/weapon/storage/box/syndie_kit/tabun + item = /obj/item/weapon/storage/box/syndie_kit/sarin cost = 15 gamemodes = list(/datum/game_mode/nuclear) surplus = 0 diff --git a/code/game/objects/items/weapons/grenades/chem_grenade.dm b/code/game/objects/items/weapons/grenades/chem_grenade.dm index 6007154db66..cb31bd859e3 100644 --- a/code/game/objects/items/weapons/grenades/chem_grenade.dm +++ b/code/game/objects/items/weapons/grenades/chem_grenade.dm @@ -508,9 +508,9 @@ beakers += B2 update_icon() -/obj/item/weapon/grenade/chem_grenade/tabungas - payload_name = "tabungas" - desc = "Contains tabun gas; extremely deadly and fast acting; use with extreme caution." +/obj/item/weapon/grenade/chem_grenade/saringas + payload_name = "saringas" + desc = "Contains sarin gas; extremely deadly and fast acting; use with extreme caution." stage = READY New() @@ -518,7 +518,7 @@ var/obj/item/weapon/reagent_containers/glass/beaker/B1 = new(src) var/obj/item/weapon/reagent_containers/glass/beaker/B2 = new(src) - B1.reagents.add_reagent("tabun", 25) + B1.reagents.add_reagent("sarin", 25) B1.reagents.add_reagent("potassium", 25) B2.reagents.add_reagent("phosphorus", 25) B2.reagents.add_reagent("sugar", 25) diff --git a/code/game/objects/items/weapons/grenades/clusterbuster.dm b/code/game/objects/items/weapons/grenades/clusterbuster.dm index a160c99f8c3..ec3e159e874 100644 --- a/code/game/objects/items/weapons/grenades/clusterbuster.dm +++ b/code/game/objects/items/weapons/grenades/clusterbuster.dm @@ -134,7 +134,7 @@ /obj/item/weapon/grenade/clusterbuster/nervegas name = "Nerve Gas Clusterbomb" - payload = /obj/item/weapon/grenade/chem_grenade/tabungas + payload = /obj/item/weapon/grenade/chem_grenade/saringas /obj/item/weapon/grenade/clusterbuster/megadirt name = "Megamaid's Revenge Grenade" diff --git a/code/game/objects/items/weapons/storage/uplink_kits.dm b/code/game/objects/items/weapons/storage/uplink_kits.dm index 704f31003cc..1ba5a6cb1d8 100644 --- a/code/game/objects/items/weapons/storage/uplink_kits.dm +++ b/code/game/objects/items/weapons/storage/uplink_kits.dm @@ -150,15 +150,15 @@ new /obj/item/weapon/grenade/empgrenade(src) new /obj/item/weapon/implanter/emp/(src) -/obj/item/weapon/storage/box/syndie_kit/tabun - name = "Tabun Gas Grenades" +/obj/item/weapon/storage/box/syndie_kit/sarin + name = "Sarin Gas Grenades" New() ..() - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) - new /obj/item/weapon/grenade/chem_grenade/tabungas(src) + new /obj/item/weapon/grenade/chem_grenade/saringas(src) + new /obj/item/weapon/grenade/chem_grenade/saringas(src) + new /obj/item/weapon/grenade/chem_grenade/saringas(src) + new /obj/item/weapon/grenade/chem_grenade/saringas(src) /obj/item/weapon/storage/box/syndie_kit/bioterror name = "bioterror syringe box" diff --git a/code/modules/reagents/Chemistry-Holder.dm b/code/modules/reagents/Chemistry-Holder.dm index 084883d55f9..dc9e860cf85 100644 --- a/code/modules/reagents/Chemistry-Holder.dm +++ b/code/modules/reagents/Chemistry-Holder.dm @@ -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 diff --git a/code/modules/reagents/newchem/drugs.dm b/code/modules/reagents/newchem/drugs.dm index 5389c8bed6d..bbecf0c134e 100644 --- a/code/modules/reagents/newchem/drugs.dm +++ b/code/modules/reagents/newchem/drugs.dm @@ -23,6 +23,9 @@ M.AdjustStunned(-1) M.AdjustWeakened(-1) M.adjustStaminaLoss(-1*REM) + if(current_cycle >= 25) + if(prob(50)) + M.jitteriness += 5 ..() return @@ -43,17 +46,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 << "[high_message]" 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 << "You feel great!" + M.reagents.add_reagent("methamphetamine", rand(1,2)) + M.emote(pick("laugh", "giggle")) + if(prob(6)) + M << "You feel warm." + M.bodytemperature += rand(1,10) if(prob(4)) - M.Jitter(10) - M.adjustToxLoss(1.0) + M << "You feel kinda awful!" + M.adjustToxLoss(1) + M.jitteriness += 30 + M.emote(pick("groan", "moan")) ..() return /datum/reagent/crank/overdose_process(var/mob/living/M as mob) @@ -109,9 +118,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 << "You feel pretty chill." + M.bodytemperature-- + M.emote("smile") if(prob(5)) - M << "[high_message]" + M << "You feel too chill!" + M.emote(pick("yawn", "drool")) + M.Stun(1) + M.adjustToxLoss(1) + M.adjustBrainLoss(1) + M.bodytemperature -= 20 + if(prob(2)) + M << "Your skin feels all rough and dry." + M.adjustBruteLoss(2) ..() return @@ -172,19 +197,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 << "[high_message]" + M.emote(pick("twitch","blink_r","shiver")) + if(current_cycle >= 25) + M.jitteriness += 5 + M.drowsyness = max(M.drowsyness-10, 0) 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 @@ -396,10 +421,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(holder.get_reagent_amount(src.id) >= 50 && prob(25)) + if(prob(10)) + M.drowsyness = max(M.drowsyness, 10) ..() return diff --git a/code/modules/reagents/newchem/medicine.dm b/code/modules/reagents/newchem/medicine.dm index 979fe8492ba..1617fdfa7e9 100644 --- a/code/modules/reagents/newchem/medicine.dm +++ b/code/modules/reagents/newchem/medicine.dm @@ -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 @@ -322,8 +322,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 +346,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 +377,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 +438,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("[M] looks a bit dazed.") ..() return @@ -459,16 +474,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 +590,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 +635,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 +836,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 +860,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 +983,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 +1017,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 +1071,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") diff --git a/code/modules/reagents/newchem/newchem_procs.dm b/code/modules/reagents/newchem/newchem_procs.dm index 40a4905e0ef..aa3493df350 100644 --- a/code/modules/reagents/newchem/newchem_procs.dm +++ b/code/modules/reagents/newchem/newchem_procs.dm @@ -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 @@ -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")) diff --git a/code/modules/reagents/newchem/toxins.dm b/code/modules/reagents/newchem/toxins.dm index 2cdc5f08a8f..d5831cc0360 100644 --- a/code/modules/reagents/newchem/toxins.dm +++ b/code/modules/reagents/newchem/toxins.dm @@ -120,21 +120,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 @@ -349,12 +360,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 << "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)) + M << "You can't [pick("move", "feel your legs", "feel your face", "feel anything")]!" + if(prob(7)) + M << "You can't breathe!" + M.losebreath += 3 ..() return @@ -368,12 +394,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 +423,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 +458,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 @@ -503,65 +547,94 @@ /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 << "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)) + M << "You can't [pick("breathe", "move", "feel your legs", "feel your face", "feel anything")]!" + 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/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("[M] starts having a seizure!", "You have a seizure!") - 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_v","quiver")) + if(16 to 30) + if(prob(25)) + M.emote(pick("twitch","twitch_v","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_v","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)) + M << "You can't breathe!" + 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_v","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 +719,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("[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 ..() return diff --git a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm index 5013dddcd85..c10926ce097 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_drugs.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_drugs.dm @@ -21,8 +21,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 +72,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 +91,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 \ No newline at end of file diff --git a/code/modules/reagents/oldchem/reagents/reagents_food.dm b/code/modules/reagents/oldchem/reagents/reagents_food.dm index de7297a5f39..0717d5dbb4f 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_food.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_food.dm @@ -443,7 +443,7 @@ M.AdjustStunned(-1) M.AdjustWeakened(-1) if(current_cycle >= 90) - M.jitteriness += 10 + M.jitteriness += 2 ..() return diff --git a/code/modules/reagents/oldchem/reagents/reagents_med.dm b/code/modules/reagents/oldchem/reagents/reagents_med.dm index d0bb839a424..e1971c0d941 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_med.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_med.dm @@ -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) ..() diff --git a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm index 341155bf2e6..0bdd25a4386 100644 --- a/code/modules/reagents/oldchem/reagents/reagents_toxin.dm +++ b/code/modules/reagents/oldchem/reagents/reagents_toxin.dm @@ -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 ..() @@ -235,7 +235,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 +251,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 diff --git a/code/modules/reagents/reagent_containers/glass/bottle.dm b/code/modules/reagents/reagent_containers/glass/bottle.dm index 64eeee9ffae..1e005b5c9ea 100644 --- a/code/modules/reagents/reagent_containers/glass/bottle.dm +++ b/code/modules/reagents/reagent_containers/glass/bottle.dm @@ -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) \ No newline at end of file + reagents.add_reagent(pick("polonium","initropidril","concentrated_initro","pancuronium","sodium_thiopental","ketamine","sulfonal","amanitin","coniine","curare","sarin","histamine","venom","cyanide"), 40) \ No newline at end of file