diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm index 7c4db6492fd..1cc9721fa58 100644 --- a/code/modules/chemical/Chemistry-Reagents.dm +++ b/code/modules/chemical/Chemistry-Reagents.dm @@ -362,7 +362,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M:adjustToxLoss(1.5) + M:adjustToxLoss(0.3) ..() return @@ -403,6 +403,7 @@ datum // if(50 to INFINITY) // M:adjustToxLoss(0.1) data++ + holder.remove_reagent(src.id, 0.1) ..() return @@ -602,7 +603,7 @@ datum if(M.canmove && istype(M.loc, /turf/space)) step(M, pick(cardinal)) if(prob(5)) M:emote(pick("twitch","drool","moan")) - M:adjustToxLoss(1) + M:adjustToxLoss(0.2) ..() return @@ -634,7 +635,8 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M.take_organ_damage(1, 0) + if(prob(50)) + M.take_organ_damage(1, 0) ..() return @@ -647,7 +649,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M:adjustToxLoss(1) + M:adjustToxLoss(0.3) ..() return @@ -702,7 +704,8 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:adjustToxLoss(1) - M.take_organ_damage(0, 1) + if(prob(50)) + M.take_organ_damage(0, 1) ..() return reaction_mob(var/mob/living/M, var/method=TOUCH, var/volume) @@ -756,7 +759,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M:adjustToxLoss(1) + M:adjustToxLoss(0.2) M.take_organ_damage(0, 1) ..() return @@ -1209,7 +1212,7 @@ datum if(M.stat == 2.0) return if(!M) M = holder.my_atom - if(prob(33)) + if(prob(30)) M.take_organ_damage(1, 0) M:adjustOxyLoss(3) if(prob(20)) M:emote("gasp") @@ -1229,7 +1232,9 @@ datum if(!M) M = holder.my_atom if(!data) data = 1 data++ - M:heal_organ_damage(0,2) + M:heal_organ_damage(0,1) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 125) M:adjustToxLoss(0.1) ..() @@ -1249,6 +1254,8 @@ datum if(!data) data = 1 data++ M:heal_organ_damage(0,3) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 125) M:adjustToxLoss(0.2) ..() @@ -1270,6 +1277,8 @@ datum M:adjustOxyLoss(-2) if(holder.has_reagent("lexorin")) holder.remove_reagent("lexorin", 2) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 125) M:adjustToxLoss(0.2) ..() @@ -1291,6 +1300,8 @@ datum M:oxyloss = 0 if(holder.has_reagent("lexorin")) holder.remove_reagent("lexorin", 2) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 50) M:adjustToxLoss(0.2) ..() @@ -1311,6 +1322,8 @@ datum if(M:getBruteLoss() && prob(40)) M:heal_organ_damage(1,0) if(M:getFireLoss() && prob(40)) M:heal_organ_damage(0,1) if(M:getToxLoss() && prob(40)) M:adjustToxLoss(-1) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) ..() return @@ -1389,6 +1402,8 @@ datum M.AdjustStunned(-1) M.AdjustWeakened(-1) if(prob(60)) M.adjustToxLoss(1) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) ..() return @@ -1421,6 +1436,8 @@ datum if(prob(80)) M:adjustBrainLoss(1) if(prob(50)) M:drowsyness = max(M:drowsyness, 3) if(prob(10)) M:emote("drool") + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 50) M:adjustToxLoss(0.4) ..() @@ -1436,6 +1453,8 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom M:radiation = max(M:radiation-3,0) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 50) M:adjustToxLoss(0.2) ..() @@ -1459,6 +1478,8 @@ datum if(prob(15)) M.take_organ_damage(1, 0) ..() + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 50) M:adjustToxLoss(0.3) return @@ -1474,6 +1495,8 @@ datum if(!M) M = holder.my_atom M:adjustBrainLoss(-3) M:adjustToxLoss(0.1) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) ..() return @@ -1491,6 +1514,8 @@ datum M:eye_blurry = max(M:eye_blurry-5 , 0) M:eye_blind = max(M:eye_blind-5 , 0) M:disabilities &= ~1 + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 100) M:adjustToxLoss(0.2) ..() @@ -1510,6 +1535,8 @@ datum if(!data) data = 1 data++ M:heal_organ_damage(2,0) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 125) M:adjustToxLoss(0.2) ..() @@ -1528,6 +1555,8 @@ datum data++ if(prob(5)) M:emote(pick("twitch","blink_r","shiver")) holder.remove_reagent(src.id, 0.2) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 50) M:adjustToxLoss(0.2) ..() @@ -1580,6 +1609,8 @@ datum if(!data) data = 1 data++ holder.remove_reagent(src.id, 0.1) + if(volume > REAGENTS_OVERDOSE) + M:adjustToxLoss(1) if(data >= 100) M:adjustToxLoss(0.1) return @@ -1593,7 +1624,7 @@ datum on_mob_life(var/mob/living/M as mob) if(!M) M = holder.my_atom - M:adjustToxLoss(2) + M:adjustToxLoss(1) ..() return @@ -1773,7 +1804,7 @@ datum M:sleeping += 1 if(51 to INFINITY) M:sleeping += 1 - M:adjustToxLoss(data - 50) + M:adjustToxLoss(2) ..() return @@ -1795,7 +1826,7 @@ datum M:sleeping += 1 if(51 to INFINITY) M:sleeping += 1 - M:adjustToxLoss(data - 50) + M:adjustToxLoss(2) data++ ..() return @@ -2596,6 +2627,8 @@ datum if (!M:confused) M:confused = 1 M:confused += 2 + holder.remove_reagent(src.id, 0.2) + ..() return @@ -2615,6 +2648,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2634,6 +2668,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2654,6 +2689,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2673,6 +2709,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2692,6 +2729,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2734,6 +2772,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2753,6 +2792,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2772,6 +2812,7 @@ datum M.slurring += 3 else if(data >= 145 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2825,6 +2866,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2844,6 +2886,7 @@ datum M.slurring += 5 else if(data >= 90 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2863,6 +2906,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2918,6 +2962,7 @@ datum if(data >= 40 && prob(33)) if (!M:confused) M:confused = 1 M:confused += 2 + holder.remove_reagent(src.id, 0.2) ..() return @@ -2939,6 +2984,7 @@ datum switch(data) if(51 to INFINITY) M:sleeping += 1 + holder.remove_reagent(src.id, 0.2) ..() return @@ -2959,6 +3005,7 @@ datum M.slurring += 3 else if(data >= 90) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2978,6 +3025,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -2997,6 +3045,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3016,6 +3065,7 @@ datum M.slurring += 3 else if(data >= 135 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3035,6 +3085,7 @@ datum M.slurring += 3 else if(data >= 135 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3054,6 +3105,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3073,6 +3125,7 @@ datum M.slurring += 3 else if(data >= 135 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3092,6 +3145,7 @@ datum M.slurring += 3 else if(data >= 135 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3111,6 +3165,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3130,6 +3185,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3149,6 +3205,7 @@ datum M.slurring += 4 else if(data >= 165 && prob(33)) M.confused = max(M:confused+4,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3168,6 +3225,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3189,6 +3247,7 @@ datum M.confused = max(M:confused+3,0) else if(data >=55) M.druggy = max(M.druggy, 55) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3208,6 +3267,7 @@ datum M.slurring += 3 else if(data >= 145 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3227,6 +3287,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3248,6 +3309,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3268,6 +3330,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3305,6 +3368,7 @@ datum M.slurring += 3 else if(data >= 145 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3324,6 +3388,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3343,6 +3408,7 @@ datum M.slurring += 3 else if(data >= 165 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3362,6 +3428,7 @@ datum M.slurring += 4 else if(data >= 60 && prob(40)) M.confused = max(M:confused+5,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3381,6 +3448,7 @@ datum M.slurring += 4 else if(data >= 90 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3400,6 +3468,7 @@ datum M.slurring += 3 else if(data >= 150 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3419,6 +3488,7 @@ datum M.slurring += 3 else if(data >= 150 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3438,6 +3508,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3457,6 +3528,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3477,6 +3549,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3496,6 +3569,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3515,6 +3589,7 @@ datum M.slurring += 5 else if(data >= 115 && prob(33)) M.confused = max(M:confused+5,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3534,6 +3609,7 @@ datum M.slurring += 5 else if(data >= 115 && prob(33)) M.confused = max(M:confused+5,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3553,6 +3629,7 @@ datum M.slurring += 4 else if(data >= 115 && prob(30)) M.confused = max(M:confused+4,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3572,6 +3649,7 @@ datum M.slurring += 10 else if(data >= 115 && prob(90)) M.confused = max(M:confused+10,10) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3591,6 +3669,7 @@ datum M.slurring += 3 else if(data >= 115 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3610,6 +3689,7 @@ datum M.slurring += 3 else if(data >= 125 && prob(33)) M.confused = max(M:confused+2,0) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3631,6 +3711,7 @@ datum M.confused = max(M:confused+2,0) if (M.bodytemperature > 310) M.bodytemperature = max(310, M.bodytemperature-5) + holder.remove_reagent(src.id, 0.2) ..() return @@ -3650,6 +3731,7 @@ datum M.slurring += 15 else if(data >= 115 && prob(33)) M.confused = max(M:confused+15,15) + holder.remove_reagent(src.id, 0.2) ..() return diff --git a/code/setup.dm b/code/setup.dm index 9a46ddb6ae4..b7d49a7a7de 100644 --- a/code/setup.dm +++ b/code/setup.dm @@ -20,7 +20,8 @@ // Factor of how fast mob nutrition decreases #define HUNGER_FACTOR 0.1 -#define REAGENTS_METABOLISM 0.4 +#define REAGENTS_METABOLISM 0.05 +#define REAGENTS_OVERDOSE 30 #define MINIMUM_AIR_RATIO_TO_SUSPEND 0.05 //Minimum ratio of air that must move to/from a tile to suspend group processing