Adds 7 New Ethereal Drinks, & Fixes w/ vamp drinks. (#5355)

## About The Pull Request
Fresh imports from the Ethereal diasporas, the finest drinks Sprout can
offer!
Inspired by the people of the Soatii-governed nation, these
flesh-friendly beverages are now in your NT-Approved _Mixologist's
Guides To Serving Suckers (Like you!)_. Made with ingredients available
outside of Sprouts supernatural atmosphere, ethereals can taste a little
bit of home.

![Drinks
spread](https://github.com/user-attachments/assets/e1199e95-c265-4c02-a814-6b1210b794b2)


From humble work-a-day drinks like Karakrak,
A sort of electric, alcohol-stripped wine served to the lowest castes of
the ethereal masses, typically distributed by the ethereal clergy.
Served on a rubber coaster to keep what very little charge exists from
dissipating into the table.

![Karakrak-Preview](https://github.com/user-attachments/assets/5ff3d1d0-c669-4608-adaa-775fa7c9d341)

To Szz Szz, A bootlegged version of the Divine Conduit's exclusive
monastic wine. The flavour has been approximated by a thousand different
tongues, who for at threat of persecution, have never actually tasted
it.

![SzzSzz-Preview](https://github.com/user-attachments/assets/87de2675-f5a3-4f9a-9a56-c13114ab227d)

Expat drinks like Blumpkin Compot; stewed blumpkin flesh with whole
berries in it. Sugar helps to draws out the conductive elements inside,
making for a politely energizing beverage that also doesn't taste like
window cleaner.
![Blumpkin
Compot-Preview](https://github.com/user-attachments/assets/d1c89b11-331e-4dd9-9d47-1a8aacae0ee0)

Try artisanal crafts like the Storm-Over-Avon, a complicated cocktail
preferred by devotees of the Everlasting Note. While its original
ingredients are impossible to source off of Sprout, this drink-alike
still resonates with the pretention that only a musical ecclesiarchy can
hone. Known to rarely shock non-ethereals. (1/50 chance)

![Storm-Over-Avon-Preview](https://github.com/user-attachments/assets/7bcf0f66-8879-45f6-b51e-ddbfcb56d5a0)

Or the Ira De Zeus, a radiant ethereal drink that warms the body and
tickles the tongue. The original recipie, fabled to have originated from
the tables of Sprout's upper-caste clergy, would imply heresy of the
highest order. Good thing it's only a fable... May shock non-ethereals.
(1/8 chance)

![Ira-Di-Zeus-Preview](https://github.com/user-attachments/assets/eb4a0722-2833-4074-a90b-614caada1a14)

And of course, try the strange flavours of the diasporas like the
Coilhouse Cocktail, an ethereal cocktail too bombastic to have been born
inside Soatii space. Also known as a Shocktown Jitter to those not made
of electricity, for reasons that will become quickly apparent. (1/6
chance to zap non-ethereals)

![coilhousecocktail-preview](https://github.com/user-attachments/assets/7c27f3f4-fee5-44c8-9d24-770c7f999b43)

Or test your luck trying a real drink, like the Electric Avenue Named
after a mythical location in the Sol System, this drink is meant to be
sipped slowly through the narrow copper straw, representing the long but
brisk taste of life. But to non-ethereals, it's a warp lane to the
emergency room (1/3 chance to zap non-ethereals)
![electric
avenue-preview](https://github.com/user-attachments/assets/4d0f37c5-2749-462b-b065-3d7c0009dc5b)


=-=-=-=-=
Other edits: 
-Fixed the naming scheme for vamp drinks; drinks will no longer appear
as 'A glass of XYZ', and instead just be 'XZY', matching the syntax for
most other beverages.
-Adjusted the in game sprite positions of prior vamp drinks to better
sit on the table when poured.
-Unified some naming conventions across the zubbers drink codebase.

## Why It's Good For The Game

Ethereals are now more included at the tables with an expanded roster of
drink. Sprites are fun, and interesting to look at and drink for
ethereals and non ethereals alike. Flavour text inside the drinks
compliment the in-game lore for ethereals, adding world depth.

Furthermore, minor fixes in the code make it easier to add to in the
future, hopefully, and adjusted sprites are a simple cosmetic change,
that hopefully improve the presentation during the bartending
experience.

## Proof Of Testing

![Drinks in
menu](https://github.com/user-attachments/assets/40a094bb-9404-48ed-9629-b7606eab4a6d)

## Changelog


🆑
add: Adds 7 new ethereal drinks! Karakrak, Szz Szz, Blumpkin Compot,
Storm-Over-Avon, Ira De Zeus, Coilhouse Cocktail, and the Electric
Avenue.
fix: Vampire drink names not matching other drinks.
fix: Minor sprite adjustments to vamp drinks; should sit better on
tables when poured.
/🆑

---------

Co-authored-by: gavla <96078776+shayoki@users.noreply.github.com>
This commit is contained in:
Seijan-Etroix
2026-03-27 02:02:42 +01:00
committed by GitHub
co-authored by gavla
parent 4813d85c7d
commit 53ea8a8fa7
4 changed files with 444 additions and 69 deletions
@@ -1,12 +1,12 @@
//Hemophage / Vampire drinks
/datum/chemical_reaction/drink/venetianwaltz
results = list(/datum/reagent/consumable/ethanol/venetianwaltz = 9)
/datum/chemical_reaction/drink/venetian_waltz
results = list(/datum/reagent/consumable/ethanol/venetian_waltz = 9)
required_reagents = list(/datum/reagent/consumable/caramel = 1, /datum/reagent/consumable/ethanol/creme_de_cacao = 2, /datum/reagent/consumable/ethanol/amaretto = 3, /datum/reagent/blood = 3)
/datum/chemical_reaction/drink/cranberrycadillac
results = list(/datum/reagent/consumable/ethanol/cranberrycadillac = 5)
/datum/chemical_reaction/drink/cranberry_cadillac
results = list(/datum/reagent/consumable/ethanol/cranberry_cadillac = 5)
required_reagents = list(/datum/reagent/consumable/sugar = 1, /datum/reagent/consumable/ethanol/champagne = 2, /datum/reagent/consumable/ethanol/cognac = 1, /datum/reagent/blood = 1)
required_temp = 373.15 //Roughly the temp to boil sugar to make sugar crystals
mix_message = "The sugar melts then crystalizes around the blood, making candy rocks..."
@@ -15,10 +15,36 @@
results = list(/datum/reagent/consumable/ethanol/jubokko = 4)
required_reagents = list(/datum/reagent/consumable/ethanol/sake = 1, /datum/reagent/consumable/ethanol/yuyake = 1, /datum/reagent/blood = 3)
/datum/chemical_reaction/drink/moroccocoffin
results = list(/datum/reagent/consumable/ethanol/moroccocoffin = 4)
/datum/chemical_reaction/drink/morocco_coffin
results = list(/datum/reagent/consumable/ethanol/morocco_coffin = 4)
required_reagents = list(/datum/reagent/consumable/icecoffee = 2, /datum/reagent/consumable/ethanol/rum = 1, /datum/reagent/blood = 1)
/datum/chemical_reaction/drink/batouttahell
results = list(/datum/reagent/consumable/ethanol/batouttahell = 10)
/datum/chemical_reaction/drink/bat_outta_hell
results = list(/datum/reagent/consumable/ethanol/bat_outta_hell = 10)
required_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/brave_bull = 6, /datum/reagent/blood = 3)
//Ethereal Drinks
/datum/chemical_reaction/drink/karakrak
results = list(/datum/reagent/consumable/ethanol/karakrak = 4)
required_reagents = list(/datum/reagent/consumable/sugar = 1 ,/datum/reagent/consumable/pwr_game = 2, /datum/reagent/consumable/ethanol/wine = 1)
/datum/chemical_reaction/drink/szzszz
results = list(/datum/reagent/consumable/ethanol/szzszz = 5)
required_reagents = list(/datum/reagent/consumable/ethanol/bitters = 1 ,/datum/reagent/consumable/pwr_game = 1, /datum/reagent/consumable/ethanol/trappist = 3)
/datum/chemical_reaction/drink/storm_over_avon
results = list(/datum/reagent/consumable/ethanol/storm_over_avon = 10)
required_reagents = list(/datum/reagent/consumable/space_up = 3, /datum/reagent/consumable/menthol = 1 , /datum/reagent/consumable/ethanol/thirteenloko = 2, /datum/reagent/consumable/ethanol/ginfizz = 4)
/datum/chemical_reaction/drink/coilhouse_cocktail
results = list(/datum/reagent/consumable/ethanol/coilhouse_cocktail = 10)
required_reagents = list(/datum/reagent/consumable/hakka_mate = 3, /datum/reagent/consumable/pwr_game = 1, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/screwdrivercocktail = 5)
/datum/chemical_reaction/drink/electric_avenue
results = list(/datum/reagent/consumable/ethanol/electric_avenue = 10)
required_reagents = list(/datum/reagent/consumable/salt = 1, /datum/reagent/consumable/triple_citrus = 6, /datum/reagent/consumable/ethanol/goldschlager = 3)
/datum/chemical_reaction/drink/ira_de_zeus
results = list(/datum/reagent/consumable/ethanol/ira_de_zeus = 5)
required_reagents = list(/datum/reagent/consumable/ethanol/blue_blazer = 3,/datum/reagent/consumable/ethanol/wine_voltaic = 1, /datum/reagent/consumable/ethanol/curacao = 1)
@@ -1,3 +1,5 @@
//Hemophage drinks
/datum/chemical_reaction/drink/blood_tea
results = list(/datum/reagent/consumable/icetea/blood_tea = 2) //Results in 2u instead of 3
required_reagents = list(/datum/reagent/consumable/icetea = 1, /datum/reagent/blood = 2)
@@ -10,3 +12,10 @@
results = list(/datum/reagent/consumable/intraverde = 5)
required_reagents = list(/datum/reagent/consumable/melon_soda = 1, /datum/reagent/consumable/cream = 1, /datum/reagent/consumable/ice = 1, /datum/reagent/blood = 2)
//Ethereal Drinks
/datum/chemical_reaction/drink/blumpkin_compot
results = list(/datum/reagent/consumable/blumpkin_compot = 9)
required_reagents = list(/datum/reagent/consumable/blumpkinjuice = 4, /datum/reagent/consumable/berryjuice = 2, /datum/reagent/consumable/hakka_mate = 2,/datum/reagent/consumable/sugar = 1)
required_temp = 373.15 //Boil to make stew...
mix_message = "The mixture reaches a boil, and begins to generate an electric charge..."
@@ -32,14 +32,14 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/icetea/blood_tea/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/icetea/blood_tea/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/blood_tea
required_drink_type = /datum/reagent/consumable/icetea/blood_tea
@@ -58,14 +58,14 @@
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/coffee/blood_coffee/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/coffee/blood_coffee/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/blood_coffee
required_drink_type = /datum/reagent/consumable/coffee/blood_coffee
@@ -81,74 +81,77 @@
color = "#40e729"
quality = DRINK_GOOD
taste_description = "tart sugar and a bit lip."
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/intraverde/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/intraverde/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/intraverde
required_drink_type = /datum/reagent/consumable/intraverde
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "intraverde"
name = "glass of intraverde"
name = "Intraverde"
desc = "A fang-rotting float, often requested by hemophage fledglings who have yet grown the taste for ichor. The whipped cream top is infused with blood."
/datum/reagent/consumable/ethanol/venetianwaltz
/datum/reagent/consumable/ethanol/venetian_waltz
name = "Venetian Waltz"
description = "A chocolate-caramel dessert cocktail, made for blood-drinkers."
color = "#38210b"
boozepwr = 15
quality = DRINK_GOOD
taste_description = "dark and bloody chocolate"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/venetianwaltz/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/ethanol/venetian_waltz/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/venetianwaltz
required_drink_type = /datum/reagent/consumable/ethanol/venetianwaltz
/datum/glass_style/drinking_glass/venetian_waltz
required_drink_type = /datum/reagent/consumable/ethanol/venetian_waltz
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "venetianwaltz"
name = "glass of venetian waltz"
icon_state = "venetian_waltz"
name = "Venetian Waltz"
desc = "Despite the presentation, its scoffed at by older generations for its dessert-like flavour, and is relegated to the tables of sororities and heemoboos as punishment."
/datum/reagent/consumable/ethanol/cranberrycadillac
/datum/reagent/consumable/ethanol/cranberry_cadillac
name = "Cranberry Cadillac"
description = "A bubbly, candy-rimmed cocktail."
color = "#ac1e2a"
boozepwr = 45
quality = DRINK_GOOD
taste_description = "a hit-and-run made of candy"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/cranberrycadillac/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/ethanol/cranberry_cadillac/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/cranberrycadillac
required_drink_type = /datum/reagent/consumable/ethanol/cranberrycadillac
/datum/glass_style/drinking_glass/cranberry_cadillac
required_drink_type = /datum/reagent/consumable/ethanol/cranberry_cadillac
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "cranberrycadillac"
name = "coupe of cranberry cadillac"
icon_state = "cranberry_cadillac"
name = "Cranberry Cadillac"
desc = "The sugar crystals that rim the glass are red with real blood, inviting the hungry to lick it clean. Served with half a lemon slice to counter the sweetness."
@@ -159,26 +162,27 @@
boozepwr = 30
quality = DRINK_GOOD
taste_description = "danger looming above you"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/jubokko/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/ethanol/jubokko/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/jubokko
required_drink_type = /datum/reagent/consumable/ethanol/jubokko
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "jubokko"
name = "serving of jubokko"
name = "Jubokko"
desc = "The martian, blood-drinking chaebol serve this to their guests. Tasteful as it appears, any good poet knows foreshadowing when it's put in front of them."
/datum/reagent/consumable/ethanol/moroccocoffin
/datum/reagent/consumable/ethanol/morocco_coffin
name = "Morocco Coffin"
description = "A cold pressed coffee with a tinge of iron."
color = "#200608"
@@ -186,38 +190,39 @@
overdose_threshold = 75
quality = DRINK_GOOD
taste_description = "waking up at midnight"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
metabolized_traits = list(TRAIT_STIMULATED)
/datum/reagent/consumable/ethanol/moroccocoffin/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
/datum/reagent/consumable/ethanol/morocco_coffin/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.set_jitter_if_lower(10 SECONDS * REM * seconds_per_tick)
/datum/reagent/consumable/ethanol/moroccocoffin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
/datum/reagent/consumable/ethanol/morocco_coffin/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
affected_mob.AdjustSleeping(-4 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_bodytemperature(-5 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal())
/datum/reagent/consumable/ethanol/moroccocoffin/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/ethanol/morocco_coffin/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/moroccocoffin
required_drink_type = /datum/reagent/consumable/ethanol/moroccocoffin
/datum/glass_style/drinking_glass/morocco_coffin
required_drink_type = /datum/reagent/consumable/ethanol/morocco_coffin
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "moroccocoffin"
name = "glass of morocco coffin"
icon_state = "morocco_coffin"
name = "Morocco Coffin"
desc = "For waking up when the sun goes down. Cools you down and wakes you up."
/datum/reagent/consumable/ethanol/batouttahell
/datum/reagent/consumable/ethanol/bat_outta_hell
name = "Bat Outta' Hell"
description = "Brave bull mixed with blood, with an absinthe 'varnish' sitting on top."
color = "#3d1013"
@@ -225,38 +230,373 @@
overdose_threshold = 47
quality = DRINK_VERYGOOD
taste_description = "the blinding thrill of a HOME RUN, BABY!!"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
metabolization_rate = 1.2 * REAGENTS_METABOLISM
/datum/reagent/consumable/ethanol/batouttahell/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
/datum/reagent/consumable/ethanol/bat_outta_hell/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.remove_status_effect(/datum/status_effect/drowsiness)
affected_mob.AdjustSleeping(-2 SECONDS * REM * seconds_per_tick)
/datum/reagent/consumable/ethanol/batouttahell/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
/datum/reagent/consumable/ethanol/bat_outta_hell/overdose_process(mob/living/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.add_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/batouttahell")
affected_mob.add_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/bat_outta_hell")
metabolization_rate = 4.5 * REAGENTS_METABOLISM
affected_mob.set_jitter_if_lower(5 SECONDS * REM * seconds_per_tick)
affected_mob.set_dizzy_if_lower(5 SECONDS * REM * seconds_per_tick)
affected_mob.set_temp_blindness_if_lower(5 SECONDS * REM * seconds_per_tick)
/datum/reagent/consumable/ethanol/batouttahell/on_mob_end_metabolize(mob/living/affected_mob)
/datum/reagent/consumable/ethanol/bat_outta_hell/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
affected_mob.remove_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/batouttahell")
affected_mob.remove_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/bat_outta_hell")
/datum/reagent/consumable/ethanol/batouttahell/expose_mob(mob/living/exposed_mob, methods, reac_volume)
/datum/reagent/consumable/ethanol/bat_outta_hell/expose_mob(mob/living/affected_mob, methods, reac_volume)
. = ..()
if(!(methods & INGEST))
return
var/obj/item/organ/stomach/stomach = exposed_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(exposed_mob) || reac_volume <= 0)
var/obj/item/organ/stomach/stomach = affected_mob.get_organ_slot(ORGAN_SLOT_STOMACH)
if(!istype(stomach) || !ishemophage(affected_mob) || reac_volume <= 0)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
affected_mob.blood_volume = min(affected_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/batouttahell
required_drink_type = /datum/reagent/consumable/ethanol/batouttahell
/datum/glass_style/drinking_glass/bat_outta_hell
required_drink_type = /datum/reagent/consumable/ethanol/bat_outta_hell
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "batouttahell"
name = "glass of bat outta' hell"
icon_state = "bat_outta_hell"
name = "Bat Outta' Hell"
desc = "Strong enough to send you flyin' out of the park! Or maybe stumbling..."
//Ethereal Drinks
/datum/reagent/consumable/ethanol/karakrak
name = "Karakrak"
description = "A lightly charged ration made with filtered wine"
color = "#5c0b12"
boozepwr = 0
quality = DRINK_NICE
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
taste_description = "bitter, watered down energy"
/datum/reagent/consumable/ethanol/karakrak/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 3 * ETHEREAL_DISCHARGE_RATE)
/datum/glass_style/drinking_glass/karakrak
required_drink_type = /datum/reagent/consumable/ethanol/karakrak
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "karakrak"
name = "Karakrak"
desc = "A sort of electric, alcohol-stripped wine served to the lowest castes of the ethereal masses, typically distributed by the clergy. Served on a rubber coaster to keep what very little charge exists from dissipating into the table."
/datum/reagent/consumable/ethanol/szzszz
name = "Szz Szz"
description = "A bootlegged version of ethereal monastic wine"
color = "#5c0b12"
boozepwr = 25
quality = DRINK_GOOD
taste_description = "bitter-sweet sin"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
var/obj/effect/light_holder
/datum/reagent/consumable/ethanol/szzszz/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 4 * ETHEREAL_DISCHARGE_RATE)
else //If you are NOT an ethereal, you jitter
affected_mob.set_jitter_if_lower(10 SECONDS * REM * reac_volume)
/datum/reagent/consumable/ethanol/szzszz/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..() //Gives glow
light_holder = new(affected_mob)
light_holder.set_light(1.3, 1, COLOR_MAROON)
/datum/reagent/consumable/ethanol/szzszz/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != affected_mob)
light_holder.forceMove(affected_mob)
return ..()
/datum/reagent/consumable/ethanol/szzszz/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
QDEL_NULL(light_holder)
/datum/glass_style/drinking_glass/szzszz
required_drink_type = /datum/reagent/consumable/ethanol/szzszz
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "szzszz"
name = "Szz Szz"
desc = "A bootlegged version of the Divine Conduit's exclusive monastic wine. The flavour has been approximated by a thousand different tongues, who for at threat of persecution, have never actually tasted it."
/datum/reagent/consumable/blumpkin_compot
name = "Blumpkin Compot"
description = "Stewed fruit, sugar, and yerba leaf. An ethereal energy drink."
color = "#3cc6e9"
quality = DRINK_VERYGOOD
taste_description = "clean, reliable energy"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
/datum/reagent/consumable/blumpkin_compot/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 7 * ETHEREAL_DISCHARGE_RATE)
else
affected_mob.set_jitter_if_lower(10 SECONDS * REM * reac_volume)
/datum/reagent/consumable/blumpkin_compot/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
/datum/glass_style/drinking_glass/blumpkin_compot
required_drink_type = /datum/reagent/consumable/blumpkin_compot
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "blumpkin_compot"
name = "Blumpkin Compot"
desc = "A drink created by ethereal expats made of stewed blumpkin flesh and whole berries. Sugar helps to draws out the conductive elements, making for a politely energizing beverage that's safe to drink, and also doesnt taste like window cleaner."
/datum/reagent/consumable/ethanol/storm_over_avon
name = "Storm-Over-Avon"
description = "A ginny, minty cocktail for ethereal artisans."
color = "#ffca37"
boozepwr = 50
quality = DRINK_VERYGOOD
taste_description = "energetic snobbery"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
var/obj/effect/light_holder
var/shock_timer = 0
var/unluckyshock = 0
/datum/reagent/consumable/ethanol/storm_over_avon/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 8 * ETHEREAL_DISCHARGE_RATE)
else //If you are not etheral, jitter. Random chance to ZAP you, every sip. Roll a one; zap.
affected_mob.set_jitter_if_lower(5 SECONDS * REM * reac_volume)
unluckyshock = rand(1, 15)
if(unluckyshock == 1)
to_chat(affected_mob, span_userdanger("You feel a sharp jolt of energy spark off your tongue!"))
affected_mob.electrocute_act(rand(1, 5), "Storm-Over-Avon shock", 1, SHOCK_NOGLOVES)
playsound(affected_mob, 'sound/machines/defib/defib_zap.ogg', 30, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
/datum/reagent/consumable/ethanol/storm_over_avon/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..()
affected_mob.adjust_dizzy(-10 SECONDS * REM * seconds_per_tick)
affected_mob.adjust_drowsiness(-6 SECONDS * REM * seconds_per_tick)
/datum/reagent/consumable/ethanol/storm_over_avon/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..() //Gives glow
light_holder = new(affected_mob)
light_holder.set_light(1.3, 1.5, COLOR_BRIGHT_BLUE)
/datum/reagent/consumable/ethanol/storm_over_avon/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != affected_mob)
light_holder.forceMove(affected_mob)
return ..()
/datum/reagent/consumable/ethanol/storm_over_avon/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
QDEL_NULL(light_holder)
/datum/glass_style/drinking_glass/storm_over_avon
required_drink_type = /datum/reagent/consumable/ethanol/storm_over_avon
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "storm_over_avon"
name = "Storm-Over-Avon"
desc = "A complicated cocktail preferred by devotees of the Everlasting Note. While its original ingredients are impossible to source off of Sprout, this drink-alike still resonates with the pretention that only a musical ecclesiarchy can hone. Known to rarely shock non-ethereals."
/datum/reagent/consumable/ethanol/coilhouse_cocktail
name = "Coilhouse Cocktail"
description = "A citrusy, electrified drink with orange juice and lemon."
color = "#d6ff21"
boozepwr = 30
quality = DRINK_VERYGOOD
taste_description = "a disco ball in your mouth"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
metabolization_rate = 1.1 * REAGENTS_METABOLISM
var/obj/effect/light_holder
var/shock_timer = 0
var/unluckyshock = 0
/datum/reagent/consumable/ethanol/coilhouse_cocktail/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 6 * ETHEREAL_DISCHARGE_RATE)
else
affected_mob.set_jitter_if_lower(10 SECONDS * REM * reac_volume)
unluckyshock = rand(1, 6)
if(unluckyshock == 1)
to_chat(affected_mob, span_userdanger("You feel a sharp jolt of energy spark off your tongue!"))
affected_mob.electrocute_act(rand(2, 8), "Coilhouse Cocktail shock", 1, SHOCK_NOGLOVES)
playsound(affected_mob, 'sound/machines/defib/defib_zap.ogg', 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
/datum/reagent/consumable/ethanol/coilhouse_cocktail/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..() //Gives glow
light_holder = new(affected_mob)
light_holder.set_light(1.3, 1.5, COLOR_YELLOW)
/datum/reagent/consumable/ethanol/coilhouse_cocktail/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != affected_mob)
light_holder.forceMove(affected_mob)
return ..()
/datum/reagent/consumable/ethanol/coilhouse_cocktail/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
QDEL_NULL(light_holder)
/datum/glass_style/drinking_glass/coilhouse_cocktail
required_drink_type = /datum/reagent/consumable/ethanol/coilhouse_cocktail
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "coilhouse_cocktail"
name = "Coilhouse Cocktail"
desc = "An ethereal cocktail too bombastic to have been born inside Soatii space. Also known as a Shocktown Jitter to those not made of electricity, for reasons that will become quickly apparent."
/datum/reagent/consumable/ethanol/electric_avenue
name = "Electric Avenue"
description = "A cocktail made of goldschlager and citrus, with salt."
color = "#d37810"
boozepwr = 25
quality = DRINK_VERYGOOD
taste_description = "a sour, electric chair"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
metabolization_rate = 1.6 * REAGENTS_METABOLISM
var/obj/effect/light_holder
var/shock_timer = 0
var/unluckyshock = 0
/datum/reagent/consumable/ethanol/electric_avenue/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 10 * ETHEREAL_DISCHARGE_RATE)
else
affected_mob.set_jitter_if_lower(10 SECONDS * REM * reac_volume)
unluckyshock = rand(1, 3)
if(unluckyshock == 1)
to_chat(affected_mob, span_userdanger("You feel a violent jolt of energy spark off your tongue!"))
affected_mob.electrocute_act(rand(15, 35), "Electric avenue shock", 1, SHOCK_NOGLOVES)
playsound(affected_mob, 'sound/machines/defib/defib_zap.ogg', 55, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
/datum/reagent/consumable/ethanol/electric_avenue/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..() //Gives glow
light_holder = new(affected_mob)
light_holder.set_light(1.3, 1.5, COLOR_VERY_SOFT_YELLOW)
/datum/reagent/consumable/ethanol/electric_avenue/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != affected_mob)
light_holder.forceMove(affected_mob)
return ..()
/datum/reagent/consumable/ethanol/electric_avenue/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
QDEL_NULL(light_holder)
/datum/glass_style/drinking_glass/electric_avenue
required_drink_type = /datum/reagent/consumable/ethanol/electric_avenue
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "electric_avenue"
name = "Electric Avenue"
desc = "Named after a mythical location in the Sol System, this drink is meant to be sipped slowly through the narrow copper straw, representing the long but brisk taste of life. But to non-ethereals, it's a warp lane to the emergency room."
/datum/reagent/consumable/ethanol/ira_de_zeus
name = "Ira de Zeus"
description = "A deep blue cocktail made by harnessing electricity and fire."
color = "#3e1ef1"
boozepwr = 60
quality = DRINK_VERYGOOD
taste_description = "sharp, spiced hypocracy"
chemical_flags = REAGENT_CAN_BE_SYNTHESIZED
metabolized_traits = list(TRAIT_STIMULATED)
metabolization_rate = 1.1 * REAGENTS_METABOLISM
var/obj/effect/light_holder
var/shock_timer = 0
var/unluckyshock = 0
/datum/reagent/consumable/ethanol/ira_de_zeus/expose_mob(mob/living/affected_mob, methods=TOUCH, reac_volume)
. = ..()
if(!(methods & (INGEST|INJECT|PATCH)) || !iscarbon(affected_mob))
return
var/mob/living/carbon/exposed_carbon = affected_mob
var/obj/item/organ/stomach/ethereal/stomach = exposed_carbon.get_organ_slot(ORGAN_SLOT_STOMACH)
if(istype(stomach))
stomach.adjust_charge(reac_volume * 5 * ETHEREAL_DISCHARGE_RATE)
else
affected_mob.set_jitter_if_lower(5 SECONDS * REM * reac_volume)
unluckyshock = rand(1, 8)
if(unluckyshock == 1)
to_chat(affected_mob, span_userdanger("You feel a violent jolt of energy spark off your tongue!"))
affected_mob.electrocute_act(rand(10, 25), "Ira de Zeus shock", 1, SHOCK_NOGLOVES)
playsound(affected_mob, 'sound/machines/defib/defib_zap.ogg', 40, TRUE, SHORT_RANGE_SOUND_EXTRARANGE)
/datum/reagent/consumable/ethanol/ira_de_zeus/on_mob_metabolize(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
. = ..() //Gives glow
light_holder = new(affected_mob)
light_holder.set_light(1.2, 3.5, COLOR_BRIGHT_BLUE)
/datum/reagent/consumable/ethanol/ira_de_zeus/on_mob_life(mob/living/carbon/affected_mob, seconds_per_tick, times_fired)
affected_mob.adjust_bodytemperature(15 * REM * TEMPERATURE_DAMAGE_COEFFICIENT * seconds_per_tick, affected_mob.get_body_temp_normal()+ 20)
if(QDELETED(light_holder))
holder.del_reagent(type) //If we lost our light object somehow, remove the reagent
else if(light_holder.loc != affected_mob)
light_holder.forceMove(affected_mob)
return ..()
/datum/reagent/consumable/ethanol/ira_de_zeus/on_mob_end_metabolize(mob/living/affected_mob)
. = ..()
QDEL_NULL(light_holder)
/datum/glass_style/drinking_glass/ira_de_zeus
required_drink_type = /datum/reagent/consumable/ethanol/ira_de_zeus
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "ira_de_zeus"
name = "Ira De Zeus"
desc = "A radiant ethereal drink that warms the body and tickles the tongue. The original recipie, fabled to have originated from the tables of Sprout's upper-caste clergy, would imply heresy of the highest order. Good thing it's only a fable... May shock non-ethereals."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

After

Width:  |  Height:  |  Size: 42 KiB