diff --git a/code/modules/mob/living/carbon/human/life.dm b/code/modules/mob/living/carbon/human/life.dm index 31382acf786..46672b6dcb6 100644 --- a/code/modules/mob/living/carbon/human/life.dm +++ b/code/modules/mob/living/carbon/human/life.dm @@ -1035,6 +1035,7 @@ blinded = 1 silent = 0 else //ALIVE. LIGHTS ARE ON + if(mRegen in mutations) if(nutrition) if(prob(10)) @@ -1043,6 +1044,11 @@ heal_overall_damage(randumb,randumb) if(nutrition < 0) nutrition = 0 + + // Sobering multiplier. + // Sober block grants quadruple the alcohol metabolism. + var/sober_str=(M_SOBER in mutations)?1:4 + updatehealth() //TODO if(!in_stasis) handle_organs() @@ -1157,7 +1163,7 @@ if(stuttering) stuttering = max(stuttering-1, 0) if (src.slurring) - slurring = max(slurring-1, 0) + slurring = max(slurring-(1*sober_str), 0) if(silent) silent = max(silent-1, 0) diff --git a/code/modules/reagents/Chemistry-Reagents.dm b/code/modules/reagents/Chemistry-Reagents.dm index 15f496f8fdb..563fad1f2d1 100644 --- a/code/modules/reagents/Chemistry-Reagents.dm +++ b/code/modules/reagents/Chemistry-Reagents.dm @@ -3065,6 +3065,10 @@ datum var/pass_out = 325 //amount absorbed after which mob starts passing out on_mob_life(var/mob/living/M as mob) + // Sobering multiplier. + // Sober block makes it more difficult to get drunk + var/sober_str=(M_SOBER in M.mutations)?1:2 + M:nutrition += nutriment_factor holder.remove_reagent(src.id, FOOD_METABOLISM) if(!src.data) data = 1 @@ -3076,19 +3080,21 @@ datum for(var/datum/reagent/ethanol/A in holder.reagent_list) if(isnum(A.data)) d += A.data + d/=sober_str + M.dizziness +=dizzy_adj. if(d >= slur_start && d < pass_out) if (!M:slurring) M:slurring = 1 - M:slurring += slurr_adj + M:slurring += slurr_adj/sober_str if(d >= confused_start && prob(33)) if (!M:confused) M:confused = 1 - M.confused = max(M:confused+confused_adj,0) + M.confused = max(M:confused+(confused_adj/sober_str),0) if(d >= blur_start) - M.eye_blurry = max(M.eye_blurry, 10) + M.eye_blurry = max(M.eye_blurry, 10/sober_str) M:drowsyness = max(M:drowsyness, 0) if(d >= pass_out) - M:paralysis = max(M:paralysis, 20) - M:drowsyness = max(M:drowsyness, 30) + M:paralysis = max(M:paralysis, 20/sober_str) + M:drowsyness = max(M:drowsyness, 30/sober_str) if(ishuman(M)) var/mob/living/carbon/human/H = M var/datum/organ/internal/liver/L = H.internal_organs["liver"]