Alcoholism overhaul (#19179)

Takes on feedback from the implementation of the previous alcoholism
overhaul, and applies fixes to it to make things better, generally.

- Fixed up alcohol and butanol affect_ingest() to improve the logic
flow, and fix bugs where Unathi were able to drink alcohol without being
poisoned. Non-Unathi are now no longer intoxicated by butanol, as well.

- Better intoxication messages.

- Generally buffed intoxication resistances for Unathi, Tajara, and
Skrell, to compensate for recent changes to intoxication potency. Unathi
are MUCH more resistant to intoxication now (total resistance increased
from 0.4 to 0.8, which is slightly less than Tajara now) however they
can no longer drink alcohol at all without getting poisoned.

- Alcohol poisoning now does not kill by giving you liver damage and
MSOF, but by suppressing, and eventually stopping breathing.

- Ethylredoxrazine now prevents people from falling into comas from
alcohol toxicity alltogether.

- Vomiting from being intoxicated now happens much less often.

- Being drunk enough to cause vomiting now has a pulsing message to go
along with other drunkeness messages.

- You can now correctly black out or fall into an alcoholic coma while
buckled to a bed or laying down.

---------

Signed-off-by: Crosarius <30341877+Crosarius@users.noreply.github.com>
This commit is contained in:
Crosarius
2024-05-24 05:22:44 +10:00
committed by GitHub
parent 6af1078e19
commit 7bdf4cafa5
10 changed files with 124 additions and 86 deletions
@@ -26,68 +26,81 @@
if(bac > INTOX_BUZZED*SR && bac < INTOX_MUSCLEIMP*SR)
sprint_cost_factor += -0.1
if(prob(5))
to_chat(src, SPAN_NOTICE("You feel buzzed."))
if(prob(3))
to_chat(src, SPAN_GOOD(pick("You feel buzzed.","You feel good!","You feel less inhibited.","You feel relaxed.")))
if(bac > INTOX_JUDGEIMP*SR)
if (dizziness == 0)
to_chat(src, SPAN_NOTICE("You feel a little tipsy."))
to_chat(src, SPAN_GOOD("You feel a little tipsy!"))
var/target_dizziness = BASE_DIZZY + ((bac - INTOX_JUDGEIMP*SR)*DIZZY_ADD_SCALE*100)
make_dizzy(target_dizziness - dizziness)
if(bac > INTOX_MUSCLEIMP*SR && bac < INTOX_REACTION*SR)
slurring = max(slurring, 25)
if (prob(5))
to_chat(src, SPAN_NOTICE("You feel drunk!"))
if (prob(3))
to_chat(src, SPAN_GOOD(pick("You feel drunk!", "You feel great!", "Your inhibitions fall away...", "All your anxieties melt away.")))
move_delay_mod += 2
sprint_cost_factor += 0.2
if(bac > INTOX_REACTION*SR && bac < INTOX_BALANCE*SR)
if (prob(5))
to_chat(src, SPAN_NOTICE("You feel absolutely smashed!"))
if(bac > INTOX_REACTION*SR)
if (prob(3) && bac < INTOX_BALANCE*SR)
to_chat(src, SPAN_GOOD(pick("You feel very drunk!", "You feel reckless!", "You don't have a care in the world!", "You feel amazing!")))
if (confused == 0)
to_chat(src, SPAN_WARNING("You feel uncoordinated and unsteady on your feet!"))
var/target_slurring = BASE_SLUR + ((bac - INTOX_REACTION*SR)*SLUR_ADD_SCALE*100)
slurring = max(slurring, target_slurring)
confused = max(confused, 10)
slurring = max(slurring, 50)
eye_blurry = max(eye_blurry, 10)
move_delay_mod += 2
sprint_cost_factor += 0.2
if(bac > INTOX_VOMIT*SR)
slurring = max(slurring, 75)
if (life_tick % 4 == 1)
var/chance = BASE_VOMIT_CHANCE + ((bac - INTOX_VOMIT*SR)*VOMIT_CHANCE_SCALE*100)
if (prob(chance))
if(bac > INTOX_VOMIT*SR)//Vomiting starts here. 1% chance every 10 ticks, escalating with increased intoxication (1% per 0.01 BAC)
if (prob(3))
to_chat(src, SPAN_WARNING("You feel a little nauseous..."))
if (life_tick % 10 == 1)
var/vomitchance = BASE_VOMIT_CHANCE + ((bac - INTOX_VOMIT*SR)*VOMIT_CHANCE_SCALE*100)
if (prob(vomitchance))
delayed_vomit()
if(bac > INTOX_BALANCE*SR)
slurring = max(slurring, 100)
if (prob(5))
to_chat(src, SPAN_NOTICE("You feel the room spinning..."))
if (life_tick % 4 == 1 && !lying && !buckled_to && prob(10))
if(bac > INTOX_BALANCE*SR)//Can no longer walk properly. Will fall to the ground very often. Good drunkeness messages replaced by alcohol dysphoria and confusion
var/fallchance = ((bac - INTOX_BALANCE*SR)*100)
if (prob(3))
to_chat(src, SPAN_WARNING(pick("You feel the room spinning...", "It's hard to think...", "You can't see straight...", "You feel absolutely hammered!")))
if (life_tick % 4 == 1 && !lying && !buckled_to && prob(fallchance))
src.visible_message(SPAN_WARNING("[src] loses balance and falls to the ground!"),SPAN_WARNING("You lose balance and fall to the ground!"))
Paralyse(3 SECONDS)
if(bac > INTOX_CONSCIOUS*SR)
slurring = max(slurring, 90)
src.visible_message(SPAN_DANGER("[src] loses consciousness!"),SPAN_DANGER("You lose consciousness!"))
paralysis = max(paralysis, 60 SECONDS)
sleeping = max(sleeping, 60 SECONDS)
adjustBrainLoss(5,30)
add_chemical_effect(CE_HEPATOTOXIC, 3)
else if(bac > INTOX_BLACKOUT*SR)
slurring = max(slurring, 80)
src.visible_message(SPAN_DANGER("[src] blacks out!"),SPAN_DANGER("You black out!"))
paralysis = max(paralysis, 20 SECONDS)
sleeping = max(sleeping, 20 SECONDS)
adjustBrainLoss(3,10)
add_chemical_effect(CE_HEPATOTOXIC, 1)
else if(prob(10))
if(prob(33) && stat == CONSCIOUS && !src.reagents.has_reagent(/singleton/reagent/ethylredoxrazine))
slurring = max(slurring, 70)
to_chat(src,SPAN_WARNING("You decide that you like the ground and spend a few seconds to rest."))
to_chat(src,SPAN_GOOD("You decide that you like the ground and spend a few seconds to rest."))
sleeping = max(sleeping, 6 SECONDS)
adjustBrainLoss(1,5)
if (bac > INTOX_DEATH*SR && !src.reagents.has_reagent(/singleton/reagent/ethylredoxrazine)) //Death usually occurs here
add_chemical_effect(CE_HEPATOTOXIC, 10)
adjustOxyLoss(3,100)
adjustBrainLoss(1,50)
if(bac > INTOX_BLACKOUT*SR && bac < INTOX_CONSCIOUS*SR && !src.reagents.has_reagent(/singleton/reagent/ethylredoxrazine))//Alcohol poisoing causing short blackouts.
if (prob(3) && bac < INTOX_BLACKOUT*SR)
to_chat(src, SPAN_GOOD(pick("You feel very drunk!", "You feel invincible!", "You don't have a care in the world!", "You feel amazing!")))
if (life_tick % 4 == 1 && prob(5) && stat == CONSCIOUS)
src.visible_message(SPAN_DANGER("[src] blacks out!"),SPAN_DANGER("You black out!"))
paralysis = max(paralysis, 6 SECONDS)
sleeping = max(sleeping, 6 SECONDS)
adjustBrainLoss(3,10)
if(bac > INTOX_CONSCIOUS*SR && !src.reagents.has_reagent(/singleton/reagent/ethylredoxrazine)) //Life threatening alcohol poisoning causing coma and possible loss of breathing.
if (stat == CONSCIOUS)//Put them into a coma
src.visible_message(SPAN_DANGER("[src] loses consciousness!"),SPAN_DANGER("You lose consciousness!"))
paralysis = max(paralysis, 60 SECONDS)
sleeping = max(sleeping, 60 SECONDS)
adjustBrainLoss(5,30)
if(losebreath && losebreath < 15)//Patient's breathing is suppressed. If already not breathing, don't start again. Stay not breathing.
losebreath++
if(prob(1) && life_tick % 10 == 1 && stat == UNCONSCIOUS && bac < INTOX_DEATH*SR)//2.5% chance every minute, roughly, to stop breathing while unconscious.
if (!losebreath)//To prevent this message from being spammed.
src.visible_message(SPAN_DANGER("[src] stops breathing!"),SPAN_DANGER("You stop breathing!"))
losebreath += 15
if (bac > INTOX_DEATH*SR && !src.reagents.has_reagent(/singleton/reagent/ethylredoxrazine)) //Fatal alcohol poisoning. Central nervous system no longer able to promote unconscious breathing
if (!losebreath)//To prevent this message from being spammed.
src.visible_message(SPAN_DANGER("[src] stops breathing!"),SPAN_DANGER("You stop breathing!"))
if(losebreath < 15)//Stop breathing
losebreath++
/mob/living/carbon/human/proc/is_drunk()
var/SR = species.ethanol_resistance
@@ -77,7 +77,7 @@
base_color = "#006666"
reagent_tag = IS_SKRELL
ethanol_resistance = 0.5//gets drunk faster
ethanol_resistance = 0.6//gets drunk faster
taste_sensitivity = TASTE_SENSITIVE
stamina = 80
@@ -41,7 +41,7 @@
num_alternate_languages = 2
secondary_langs = list(LANGUAGE_SIIK_MAAS, LANGUAGE_SIIK_TAJR, LANGUAGE_YA_SSA)
name_language = LANGUAGE_SIIK_MAAS
ethanol_resistance = 0.8//Gets drunk a little faster
ethanol_resistance = 0.9//Gets drunk a little faster
rarity_value = 2
economic_modifier = 7
selectable_pronouns = list(MALE, FEMALE)
@@ -62,7 +62,7 @@
standing_jump_range = 3
stamina = 80 // As opposed to 90
brute_mod = 1.3 // More Brute Damage
ethanol_resistance = 0.6 // Species Default 0.8
ethanol_resistance = 0.7 // Species Default 0.9
maneuvers = list(
/singleton/maneuver/leap/tajara/msai
@@ -34,7 +34,7 @@
grab_mod = 1.25 // Huge, usually have horns
resist_mod = 2.5 // Arguably our strongest organic species
ethanol_resistance = 0.4
ethanol_resistance = 0.8
taste_sensitivity = TASTE_SENSITIVE
economic_modifier = 7