Alcohol refactor v12413526345. (#4647)

* Refactors booze. Yes. I killed other commits.

* Lime juice
This commit is contained in:
Mieszko Jędrzejczak
2016-06-19 11:52:44 -04:00
committed by Fox McCloud
parent 5ca9a8ea8d
commit 1a4f8cb518
19 changed files with 190 additions and 128 deletions
@@ -39,6 +39,7 @@
handle_pain()
handle_heartbeat()
handle_heartattack()
handle_drunk()
species.handle_life(src)
if(!client)
@@ -730,6 +731,80 @@
return //TODO: DEFERRED
/mob/living/carbon/human/handle_drunk()
var/slur_start = 30 //12u ethanol, 30u whiskey FOR HUMANS
var/confused_start = 40
var/brawl_start = 30
var/blur_start = 75
var/vomit_start = 60
var/pass_out = 90
var/spark_start = 50 //40u synthanol
var/collapse_start = 75
var/braindamage_start = 120
var/alcohol_strength = drunk
var/sober_str=!(SOBER in mutations)?1:2
if(drunk)
alcohol_strength/=sober_str
var/obj/item/organ/internal/liver/L
if(!isSynthetic())
L = get_int_organ(/obj/item/organ/internal/liver)
if(L)
alcohol_strength *= L.alcohol_intensity
else
alcohol_strength *= 5
if(alcohol_strength >= slur_start) //slurring
if (!slurring) slurring = 1
slurring = drunk
if(alcohol_strength >= brawl_start) //the drunken martial art
if(!istype(martial_art, /datum/martial_art/drunk_brawling))
var/datum/martial_art/drunk_brawling/F = new
F.teach(src,1)
if(alcohol_strength < brawl_start) //removing the art
if(istype(martial_art, /datum/martial_art/drunk_brawling))
martial_art.remove(src)
if(alcohol_strength >= confused_start && prob(33)) //confused walking
if (!confused) confused = 1
confused = max(confused+(3/sober_str),0)
if(alcohol_strength >= blur_start) //blurry eyes
eye_blurry = max(eye_blurry, 10/sober_str)
drowsyness = max(drowsyness, 0)
if(!isSynthetic()) //stuff only for non-synthetics
if(alcohol_strength >= vomit_start) //vomiting
if(prob(8))
fakevomit()
if(alcohol_strength >= pass_out)
Paralyse(5 / sober_str)
drowsyness = max(drowsyness, 30/sober_str)
if (L)
L.take_damage(0.1, 1)
adjustToxLoss(0.1)
else //stuff only for synthetics
if(alcohol_strength >= spark_start && prob(25))
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
if(alcohol_strength >= collapse_start && prob(10))
emote("collapse")
var/datum/effect/system/spark_spread/s = new /datum/effect/system/spark_spread
s.set_up(3, 1, src)
s.start()
if(alcohol_strength >= braindamage_start && prob(10))
adjustBrainLoss(1)
if(!has_booze())
AdjustDrunk(-0.5)
return
/mob/living/carbon/human/proc/has_booze() //checks if the human has ethanol or its subtypes inside
for(var/A in reagents.reagent_list)
var/datum/reagent/R = A
if(istype(R, /datum/reagent/ethanol))
return 1
return 0
/mob/living/carbon/human/handle_regular_status_updates()
if(status_flags & GODMODE)
return 0
@@ -59,6 +59,16 @@
default_hair = "Unathi Horns"
butt_sprite = "unathi"
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver/unathi,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
"eyes" = /obj/item/organ/internal/eyes,
)
allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken,
/mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble)
@@ -116,6 +126,16 @@
default_headacc = "Tajaran Ears"
butt_sprite = "tajaran"
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver/tajaran,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
"eyes" = /obj/item/organ/internal/eyes,
)
allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/chick, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot,
/mob/living/simple_animal/tribble)
@@ -161,6 +181,16 @@
base_color = "#B43214"
butt_sprite = "vulp"
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver/vulpkanin,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
"eyes" = /obj/item/organ/internal/eyes,
)
allowed_consumed_mobs = list(/mob/living/simple_animal/mouse, /mob/living/simple_animal/lizard, /mob/living/simple_animal/chick, /mob/living/simple_animal/chicken,
/mob/living/simple_animal/crab, /mob/living/simple_animal/butterfly, /mob/living/simple_animal/parrot, /mob/living/simple_animal/tribble)
@@ -293,7 +323,7 @@
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver,
"liver" = /obj/item/organ/internal/liver/vox,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
@@ -454,6 +484,16 @@
reagent_tag = PROCESS_ORG
butt_sprite = "kidan"
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver/kidan,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
"eyes" = /obj/item/organ/internal/eyes,
)
allowed_consumed_mobs = list(/mob/living/simple_animal/diona)
suicide_messages = list(
@@ -658,6 +698,16 @@
eyes = "grey_eyes_s"
butt_sprite = "grey"
has_organ = list(
"heart" = /obj/item/organ/internal/heart,
"lungs" = /obj/item/organ/internal/lungs,
"liver" = /obj/item/organ/internal/liver/grey,
"kidneys" = /obj/item/organ/internal/kidneys,
"brain" = /obj/item/organ/internal/brain,
"appendix" = /obj/item/organ/internal/appendix,
"eyes" = /obj/item/organ/internal/eyes,
)
brute_mod = 1.25 //greys are fragile
default_genes = list(REMOTE_TALK)
@@ -880,4 +930,4 @@
spawn(100)
if(H)
H.update_hair()
H.update_fhair()
H.update_fhair()
+7 -1
View File
@@ -114,6 +114,7 @@
handle_paralysed()
handle_sleeping()
handle_slowed()
handle_drunk()
/mob/living/proc/handle_stunned()
@@ -168,6 +169,11 @@
slowed = max(slowed-1, 0)
return slowed
/mob/living/proc/handle_drunk()
if(drunk)
AdjustDrunk(-1)
return drunk
/mob/living/proc/handle_disabilities()
//Eyes
if(sdisabilities & BLIND || stat) //blindness from disability or unconsciousness doesn't get better on its own
@@ -323,4 +329,4 @@
if(client)
var/client/C = client
for(var/mob/living/carbon/human/H in view(src, world.view))
C.images += H.hud_list[NATIONS_HUD]
C.images += H.hud_list[NATIONS_HUD]
+3
View File
@@ -1094,6 +1094,9 @@ var/list/slot_equipment_priority = list( \
/mob/proc/Dizzy(amount)
dizziness = max(dizziness, amount, 0)
/mob/proc/AdjustDrunk(amount)
drunk = max(drunk + amount, 0)
/mob/proc/Stun(amount)
SetStunned(max(stunned, amount))
+1
View File
@@ -63,6 +63,7 @@
var/ajourn = 0
var/druggy = 0 //Carbon
var/confused = 0 //Carbon
var/drunk = 0
var/antitoxs = null
var/plasma = null
var/sleeping = 0 //Carbon