diff --git a/code/defines/mob/mob.dm b/code/defines/mob/mob.dm
index a2220baa62c..2a7516aed12 100644
--- a/code/defines/mob/mob.dm
+++ b/code/defines/mob/mob.dm
@@ -80,6 +80,7 @@
var/ear_deaf = null//Carbon
var/ear_damage = null//Carbon
var/stuttering = null//Carbon
+ var/drunk = null
var/real_name = null
var/flavor_text = ""
var/blinded = null
diff --git a/code/modules/chemical/Chemistry-Reagents.dm b/code/modules/chemical/Chemistry-Reagents.dm
index 1d12bd7c9ca..65c3536089a 100644
--- a/code/modules/chemical/Chemistry-Reagents.dm
+++ b/code/modules/chemical/Chemistry-Reagents.dm
@@ -406,6 +406,7 @@ datum
M.dizziness = 0
M:drowsyness = 0
M:stuttering = 0
+ M:drunk = 0
M:confused = 0
M:jitteriness = 0
..()
@@ -1261,6 +1262,7 @@ datum
M.dizziness = 0
M:drowsyness = 0
M:stuttering = 0
+ M:drunk = 0
M:confused = 0
if(!M:sleeping_willingly)
M:sleeping = 0
@@ -1536,8 +1538,8 @@ datum
M.make_dizzy(5)
M:jitteriness = max(M:jitteriness-5,0)
if(data >= 25)
- if (!M:stuttering) M:stuttering = 1
- M:stuttering += 4
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 4
if(data >= 40 && prob(33))
if (!M:confused) M:confused = 1
M:confused += 3
@@ -1569,7 +1571,7 @@ datum
if(!M) M = holder.my_atom
M.dizziness = 0
M:drowsyness = 0
- M:stuttering = 0
+ M:drunk = 0
M:confused = 0
..()
return
@@ -1806,17 +1808,17 @@ datum
if(!data) data = 1
switch(data)
if(1 to 5)
- if (!M:stuttering) M:stuttering = 1
+ if (!M:drunk) M:drunk = 1
M.make_dizzy(5)
if(prob(10)) M:emote(pick("twitch","giggle"))
if(5 to 10)
- if (!M:stuttering) M:stuttering = 1
+ if (!M:drunk) M:drunk = 1
M.make_jittery(10)
M.make_dizzy(10)
M.druggy = max(M.druggy, 35)
if(prob(20)) M:emote(pick("twitch","giggle"))
if (10 to INFINITY)
- if (!M:stuttering) M:stuttering = 1
+ if (!M:drunk) M:drunk = 1
M.make_jittery(20)
M.make_dizzy(20)
M.druggy = max(M.druggy, 40)
@@ -2184,6 +2186,7 @@ datum
..()
M.dizziness = max(0,M.dizziness-5)
M:drowsyness = max(0,M:drowsyness-3)
+ M:drunk = max(0, M:drunk-3)
if(!M:sleeping_willingly)
M:sleeping = 0
if (M.bodytemperature < 310)//310 is the normal bodytemp. 310.055
@@ -2323,8 +2326,8 @@ datum
data++
M.dizziness +=4
if(data >= 45 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2387,8 +2390,8 @@ datum
M:jitteriness = max(M:jitteriness-3,0)
M:nutrition += 2
if(data >= 25)
- if (!M:stuttering) M:stuttering = 1
- M:stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
if(data >= 40 && prob(33))
if (!M:confused) M:confused = 1
M:confused += 2
@@ -2408,8 +2411,8 @@ datum
data++
M.dizziness +=4
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2427,8 +2430,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2447,8 +2450,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2466,8 +2469,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2485,8 +2488,7 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2504,7 +2506,7 @@ datum
data++
M.dizziness +=8
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 8
else if(data >= 125 && prob(33))
M.confused = max(M:confused+8,8)
@@ -2527,8 +2529,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2546,8 +2548,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2565,8 +2567,8 @@ datum
data++
M.dizziness +=2
if(data >= 65 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 145 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2618,8 +2620,8 @@ datum
data++
M.dizziness +=4
if(data >= 45 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2637,8 +2639,8 @@ datum
data++
M.dizziness +=6
if(data >= 35 && data <90)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 5
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 90 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2656,8 +2658,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2710,8 +2712,8 @@ datum
M.make_dizzy(3)
M:jitteriness = max(M:jitteriness-3,0)
if(data >= 25)
- if (!M:stuttering) M:stuttering = 1
- M:stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
if(data >= 40 && prob(33))
if (!M:confused) M:confused = 1
M:confused += 2
@@ -2729,8 +2731,8 @@ datum
M.druggy = max(M.druggy, 50)
M.confused = max(M:confused+2,0)
M.make_dizzy(10)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
if(!data) data = 1
data++
switch(data)
@@ -2752,8 +2754,8 @@ datum
M.dizziness +=3
M.druggy = max(M.druggy, 50)
if(data >= 35 && data <90)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 90)
M.confused = max(M:confused+2,0)
..()
@@ -2771,8 +2773,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2790,8 +2792,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2809,8 +2811,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <135)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M:drunk) M:drunk = 1
+ M:drunk += 3
else if(data >= 135 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2828,8 +2830,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <135)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 135 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2847,8 +2849,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2866,8 +2868,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 135 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2885,8 +2887,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 135 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2904,8 +2906,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2923,8 +2925,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2942,8 +2944,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 4
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 4
else if(data >= 165 && prob(33))
M.confused = max(M:confused+4,0)
..()
@@ -2961,8 +2963,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -2980,8 +2982,8 @@ datum
data++
M.dizziness +=6
if(data >= 15 && data <45)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 45 && prob(50) && data <55)
M.confused = max(M:confused+3,0)
else if(data >=55)
@@ -3001,8 +3003,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <145)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 145 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3020,8 +3022,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3041,8 +3043,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3061,8 +3063,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3098,8 +3100,8 @@ datum
data++
M.dizziness +=3
if(data >= 45 && data <145)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 145 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3117,8 +3119,8 @@ datum
data++
M.dizziness +=5
if(data >= 35 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3136,8 +3138,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3155,8 +3157,8 @@ datum
data++
M.dizziness +=5
if(data >= 30 && data <60)
- if (!M.stuttering) M:stuttering = 1
- M.stuttering += 4
+ if (!M.drunk) M:drunk = 1
+ M.drunk += 4
else if(data >= 60 && prob(40))
M.confused = max(M:confused+5,0)
..()
@@ -3174,8 +3176,8 @@ datum
data++
M.dizziness +=3
if(data >= 25 && data <90)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 90 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3193,8 +3195,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <150)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 150 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3212,8 +3214,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <150)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 150 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3231,8 +3233,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3250,8 +3252,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3270,8 +3272,8 @@ datum
M.dizziness +=4
M.druggy = max(M.druggy, 30)
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3289,8 +3291,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3308,8 +3310,8 @@ datum
data++
M.dizziness +=5
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 5
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 5
else if(data >= 115 && prob(33))
M.confused = max(M:confused+5,0)
..()
@@ -3327,8 +3329,8 @@ datum
data++
M.dizziness +=5
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 5
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 5
else if(data >= 115 && prob(33))
M.confused = max(M:confused+5,0)
..()
@@ -3346,8 +3348,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 4
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 4
else if(data >= 115 && prob(30))
M.confused = max(M:confused+4,0)
..()
@@ -3365,8 +3367,8 @@ datum
data++
M.dizziness +=10
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 10
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 30
else if(data >= 115 && prob(90))
M.confused = max(M:confused+10,10)
..()
@@ -3384,8 +3386,8 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 115 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3403,8 +3405,8 @@ datum
data++
M.dizziness +=4
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 125 && prob(33))
M.confused = max(M:confused+2,0)
..()
@@ -3422,8 +3424,8 @@ datum
data++
M.dizziness +=3
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 3
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 3
else if(data >= 165 && prob(33))
M.confused = max(M:confused+2,0)
if (M.bodytemperature > 310)
@@ -3443,8 +3445,8 @@ datum
data++
M.dizziness +=15
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
- M.stuttering += 15
+ if (!M.drunk) M.drunk = 1
+ M.drunk += 35
else if(data >= 115 && prob(33))
M.confused = max(M:confused+15,15)
..()
@@ -3466,7 +3468,7 @@ datum
data++
M.dizziness +=6
if(data >= 45 && data <125)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 6
else if(data >= 125 && prob(33))
M.confused = max(M:confused+5,5)
@@ -3485,7 +3487,7 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 4
else if(data >= 165 && prob(33))
M.confused = max(M:confused+4,0)
@@ -3504,7 +3506,7 @@ datum
data++
M.dizziness +=5
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 4
else if(data >= 115 && prob(33))
M.confused = max(M:confused+4,4)
@@ -3571,7 +3573,7 @@ datum
data++
M.dizziness +=2
if(data >= 90 && data <250)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 2
else if(data >= 250 && prob(33))
M.confused = max(M:confused+2,0)
@@ -3590,7 +3592,7 @@ datum
data++
M.dizziness +=2
if(data >= 90 && data <250)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 2
else if(data >= 250 && prob(33))
M.confused = max(M:confused+2,0)
@@ -3609,7 +3611,7 @@ datum
data++
M.dizziness +=8
if(data >= 90 && data <250)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 1
else if(data >= 250 && prob(33))
M.confused = max(M:confused+2,0)
@@ -3628,7 +3630,7 @@ datum
data++
M.dizziness +=4
if(data >= 90 && data <250)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 7
else if(data >= 250 && prob(60))
M.confused = max(M:confused+8,0)
@@ -3687,7 +3689,7 @@ datum
data++
M.dizziness +=10
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 10
else if(data >= 115 && prob(33))
M.confused = max(M:confused+10,0)
@@ -3707,7 +3709,7 @@ datum
data++
M.dizziness +=4
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 4
else if(data >= 165 && prob(33))
M.confused = max(M:confused+5,0)
@@ -3731,7 +3733,7 @@ datum
data++
M.dizziness +=6
if(data >= 15 && data <45)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 3
else if(data >= 45 && prob(50) && data <55)
M.confused = max(M:confused+3,0)
@@ -3791,7 +3793,7 @@ datum
M:heal_organ_damage(1,1)
M.dizziness +=5
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 5
else if(data >= 165 && prob(33))
M.confused = max(M:confused+5,0)
@@ -3802,7 +3804,7 @@ datum
M:heal_organ_damage(1,1)
M.dizziness +=5
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 5
else if(data >= 165 && prob(33))
M.confused = max(M:confused+5,0)
@@ -3825,7 +3827,7 @@ datum
M:heal_organ_damage(1,1)
M.dizziness +=5
if(data >= 55 && data <165)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 5
else if(data >= 165 && prob(33))
M.confused = max(M:confused+5,0)
@@ -3846,7 +3848,7 @@ datum
data++
M.dizziness +=5
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 5
else if(data >= 115 && prob(33))
M.confused = max(M:confused+15,15)
@@ -3865,7 +3867,7 @@ datum
data++
M.dizziness +=5
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 5
else if(data >= 115 && prob(33))
M.confused = max(M:confused+15,15)
@@ -3884,7 +3886,7 @@ datum
data++
M.dizziness +=10
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 10
else if(data >= 115 && prob(33))
M.confused = max(M:confused+15,15)
@@ -3903,7 +3905,7 @@ datum
data++
M.dizziness +=30
if(data >= 55 && data <115)
- if (!M.stuttering) M.stuttering = 1
+ if (!M.drunk) M.drunk = 1
M.stuttering += 30
else if(data >= 115 && prob(60))
M.confused = max(M:confused+15,15)
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
index 08cfe1e70a9..325624ff58e 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/hunter.dm
@@ -136,6 +136,7 @@
src.stat = 2
if (src.stuttering) src.stuttering--
+ if (src.drunk) src.drunk--
if (src.eye_blind)
src.eye_blind--
diff --git a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
index e11df6b5f85..5bfe325efdf 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/caste/sentinel.dm
@@ -137,6 +137,7 @@
src.stat = 2
if (src.stuttering) src.stuttering--
+ if (src.drunk) src.drunk--
if (src.eye_blind)
src.eye_blind--
diff --git a/code/modules/mob/living/carbon/alien/humanoid/life.dm b/code/modules/mob/living/carbon/alien/humanoid/life.dm
index f8d93348198..cf522b5c7a5 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/life.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/life.dm
@@ -452,6 +452,7 @@
src.stat = 2
if (src.stuttering) src.stuttering--
+ if (src.drunk) src.drunk--
if (src.eye_blind)
src.eye_blind--
diff --git a/code/modules/mob/living/carbon/alien/humanoid/queen.dm b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
index e6d5f3bbcae..2edd72b4637 100644
--- a/code/modules/mob/living/carbon/alien/humanoid/queen.dm
+++ b/code/modules/mob/living/carbon/alien/humanoid/queen.dm
@@ -138,6 +138,7 @@
src.stat = 2
if (src.stuttering) src.stuttering--
+ if (src.drunk) src.drunk--
if (src.eye_blind)
src.eye_blind--
diff --git a/code/modules/mob/living/carbon/alien/larva/life.dm b/code/modules/mob/living/carbon/alien/larva/life.dm
index 68c79ed6ca7..18af382e1f6 100644
--- a/code/modules/mob/living/carbon/alien/larva/life.dm
+++ b/code/modules/mob/living/carbon/alien/larva/life.dm
@@ -379,6 +379,7 @@
stat = 2
if (stuttering) stuttering--
+ if (drunk) drunk--
if (eye_blind)
eye_blind--
diff --git a/code/modules/mob/living/carbon/brain/life.dm b/code/modules/mob/living/carbon/brain/life.dm
index 43b5b6b2cca..424b2df06b2 100644
--- a/code/modules/mob/living/carbon/brain/life.dm
+++ b/code/modules/mob/living/carbon/brain/life.dm
@@ -198,6 +198,7 @@
stat = 2
if (stuttering) stuttering--
+ if (drunk) drunk--
if (eye_blind)
eye_blind--
diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm
index 569e2e9ebae..41f2ded5e63 100644
--- a/code/modules/mob/living/carbon/human/life.dm
+++ b/code/modules/mob/living/carbon/human/life.dm
@@ -715,6 +715,7 @@
silent = 0
if (stuttering) stuttering--
+ if (drunk) drunk--
if (eye_blind)
eye_blind--
diff --git a/code/modules/mob/living/carbon/monkey/life.dm b/code/modules/mob/living/carbon/monkey/life.dm
index e2fd09306ad..1012c01ff71 100644
--- a/code/modules/mob/living/carbon/monkey/life.dm
+++ b/code/modules/mob/living/carbon/monkey/life.dm
@@ -451,6 +451,7 @@
src.stat = 2
if (src.stuttering) src.stuttering--
+ if (src.drunk) src.drunk--
if (src.eye_blind)
src.eye_blind--
diff --git a/code/modules/mob/living/say.dm b/code/modules/mob/living/say.dm
index 962800892f4..95d4cb4e918 100644
--- a/code/modules/mob/living/say.dm
+++ b/code/modules/mob/living/say.dm
@@ -138,7 +138,9 @@
if(!stuttering && prob(15))
message = stutter(message)
- if (stuttering)
+ if (drunk)
+ message = Intoxicated(message)
+ else if (stuttering)
message = stutter(message)
/* //qw do not have beesease atm.
diff --git a/code/modules/mob/mob_helpers.dm b/code/modules/mob/mob_helpers.dm
index 07afc79dafa..57fa5f5ccd3 100644
--- a/code/modules/mob/mob_helpers.dm
+++ b/code/modules/mob/mob_helpers.dm
@@ -157,6 +157,65 @@ proc/isorgan(A)
p++
return t
+proc/Intoxicated(phrase)
+ phrase = html_decode(phrase)
+ var
+ leng=lentext(phrase)
+ counter=lentext(phrase)
+ newphrase="";newletter=""
+ while(counter>=1)
+ newletter=copytext(phrase,(leng-counter)+1,(leng-counter)+2)
+ if(rand(1,3)==3)
+ if(lowertext(newletter)=="o") newletter="u"
+ if(lowertext(newletter)=="s") newletter="ch"
+ if(lowertext(newletter)=="a") newletter="ah"
+ if(lowertext(newletter)=="c") newletter="k"
+ switch(rand(1,15))
+ if(1,3,5,8) newletter="[lowertext(newletter)]"
+ if(2,4,6,15) newletter="[uppertext(newletter)]"
+ if(7) newletter+="'"
+ if(9,10) newletter="[newletter]"
+ if(11,12) newletter="[newletter]"
+ if(13) newletter="[newletter]"
+ newphrase+="[newletter]";counter-=1
+ return newphrase
+
+proc/NewStutter(phrase,stunned)
+ phrase = html_decode(phrase)
+
+ var/list/split_phrase = dd_text2list(phrase," ") //Split it up into words.
+
+ var/list/unstuttered_words = split_phrase.Copy()
+ var/i = rand(1,3)
+ if(stunned) i = split_phrase.len
+ for(,i > 0,i--) //Pick a few words to stutter on.
+
+ if (!unstuttered_words.len)
+ break
+ var/word = pick(unstuttered_words)
+ unstuttered_words -= word //Remove from unstuttered words so we don't stutter it again.
+ var/index = split_phrase.Find(word) //Find the word in the split phrase so we can replace it.
+
+ //Search for dipthongs (two letters that make one sound.)
+ var/first_sound = copytext(word,1,3)
+ var/first_letter = copytext(word,1,2)
+ if(lowertext(first_sound) in list("ch","th","sh"))
+ first_letter = first_sound
+
+ //Repeat the first letter to create a stutter.
+ var/rnum = rand(1,3)
+ switch(rnum)
+ if(1)
+ word = "[first_letter]-[word]"
+ if(2)
+ word = "[first_letter]-[first_letter]-[word]"
+ if(3)
+ word = "[first_letter]-[word]"
+
+ split_phrase[index] = word
+
+ return sanitize(dd_list2text(split_phrase," "))
+
/proc/stutter(n)
var/te = html_decode(n)