Adds 6 new drinks for hemophages (& Gives Eggnog a unique glass.) (#5292)

## About The Pull Request

Alcohol is the lifeblood of any good bar, and a good bar is where any
good bloodsucker goes for an easy meal. But why settle for floozies and
flunkies, when you can have a flight of delicious, and suspicious
cocktails to sip between (un)fortunate victims?

**Have five new blood-infused boozes.** _And a bubbly float for the
freshly bitten_
<img width="272" height="281" alt="preview"
src="https://github.com/user-attachments/assets/8624d44f-8221-4363-87ba-d7f8584613db"
/> <img width="263" height="264" alt="preview3"
src="https://github.com/user-attachments/assets/5983a02e-6dd7-474b-9325-90e3dd37c1bc"
/>
[In order of appearance]
- Morocco Coffin / A blood-and-rum iced coffee, served in a
coffin-shaped glass
- Cranberry Cadillac / Sugar-candy crystals infused with ichor rim the
glass like chrome
- Bat Outta' Hell / A sports-themed yard glass! Just try not to drink
too fast... [Causes an OD: Temporary blind, dizzy, and shake, but
improves your hearing, like a bat in flight!]
- Jubokko / Beware whose branches you sit under...
- Venetian Waltz / Caramel, chocolate and blood make for a fun, if not
unserious cocktail.
- Intraverde / For those adverse to alcohol, or still hate the taste of
blood.

And eggnog is here too. :)
<img width="271" height="237" alt="image"
src="https://github.com/user-attachments/assets/2c7af4e8-191c-4187-9374-f28fb87429e9"
/>

- It's eggnog!!!!
## Why It's Good For The Game

-An expanded flight of drinks for hemophages adds personality to
characters; the variety of colours and shapes of the drinks themselves
helps define characters by their tastes.

-Eggnog no longer being a menacing glass of off-white liquid is a flat
upgrade; probably too small to be its own PR so it's stuck here.
## Proof Of Testing

A proper look without the set:
<img width="128" height="128" alt="BatOuttaHell-Preview"
src="https://github.com/user-attachments/assets/a164f056-ef62-4469-b5af-c23178bf00ad"
/>
![CranberryCadillac-preview](https://github.com/user-attachments/assets/0530eba8-decb-4245-9b62-942c6f9716e3)
<img width="128" height="128" alt="Jubokko-Preview"
src="https://github.com/user-attachments/assets/e25c757a-a268-4804-8167-7a88cf931d1b"
/>
<img width="128" height="128" alt="Morocco Coffin Preview"
src="https://github.com/user-attachments/assets/29c46471-9d78-4f04-93b8-9bab35cde655"
/> <img width="128" height="128" alt="Venetian Waltz-Preview"
src="https://github.com/user-attachments/assets/408acc6f-03e5-4e59-ad34-a5daed998bfc"
/>
![Intraverde-Preview](https://github.com/user-attachments/assets/80803e84-2ca8-432e-91a2-67c126856c5f)

<img width="219" height="360" alt="preview2"
src="https://github.com/user-attachments/assets/03bbf258-018e-4245-afe7-4798645b301d"
/>
<img width="245" height="98" alt="preview 25"
src="https://github.com/user-attachments/assets/628fe796-c4a9-4d63-9a3a-b8c0f80887e3"
/>

And eggnog. :)
<img width="128" height="128" alt="eggnog-Preview"
src="https://github.com/user-attachments/assets/283fccbd-ab3a-40b9-a5e7-2866026b9795"
/>

<details>
<summary>Screenshots/Videos</summary>

</details>

## Changelog
🆑
add: 6 new drinks for blood-drinkers
5 Alcoholic: Morocco Coffin, Cranberry Cadillac, Jubokko, Venetian
Waltz, and the Bat Outta' Hell
1 Non-Alcoholic: The Intraverde.
add: Eggnog now has its own sprite. No more suspicious glasses of white
liquid during the holidays.
/🆑

---------

Co-authored-by: gavla <96078776+shayoki@users.noreply.github.com>
This commit is contained in:
Seijan-Etroix
2026-03-01 22:27:45 +01:00
committed by GitHub
co-authored by gavla
parent 8e46d0a619
commit a110ad0bb3
5 changed files with 221 additions and 0 deletions
@@ -0,0 +1,24 @@
//Hemophage / Vampire drinks
/datum/chemical_reaction/drink/venetianwaltz
results = list(/datum/reagent/consumable/ethanol/venetianwaltz = 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)
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..."
/datum/chemical_reaction/drink/jubokko
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)
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)
required_reagents = list(/datum/reagent/consumable/ethanol/absinthe = 1, /datum/reagent/consumable/ethanol/brave_bull = 6, /datum/reagent/blood = 3)
@@ -5,3 +5,8 @@
/datum/chemical_reaction/drink/blood_coffee
results = list(/datum/reagent/consumable/coffee/blood_coffee = 2) //Results in 2u instead of 3
required_reagents = list(/datum/reagent/consumable/coffee = 1, /datum/reagent/blood = 2)
/datum/chemical_reaction/drink/intraverde
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)
@@ -1,3 +1,7 @@
/datum/glass_style/has_foodtype/drinking_glass/eggnog //Eggnog doesn't have a custom glass in the dm where
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi' //it should (mixed_alcohol.dm), so this exists to give it a glass.
icon_state = "eggnog"
/datum/reagent/consumable/moth_milk
name = "Moth Milk"
description = "Whoever thought that milking moths is a good idea was totally wrong. Is it even milk?"
@@ -69,3 +73,190 @@
icon_state = "bloodcoffeeglass"
name = "mug of blood coffee"
desc = "A mug of hot black coffee mixed with fresh blood."
/datum/reagent/consumable/intraverde
name = "Intraverde"
description = "A melon soda float topped with blood-infused whipped cream."
color = "#40e729"
quality = DRINK_GOOD
taste_description = "tart sugar and a bit lip."
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/intraverde/expose_mob(mob/living/exposed_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)
return
exposed_mob.blood_volume = min(exposed_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"
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
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_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/venetianwaltz/expose_mob(mob/living/exposed_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)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/venetianwaltz
required_drink_type = /datum/reagent/consumable/ethanol/venetianwaltz
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "venetianwaltz"
name = "glass of 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
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_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/cranberrycadillac/expose_mob(mob/living/exposed_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)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/cranberrycadillac
required_drink_type = /datum/reagent/consumable/ethanol/cranberrycadillac
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "cranberrycadillac"
name = "coupe of 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."
/datum/reagent/consumable/ethanol/jubokko
name = "Jubokko"
description = "A drink set of sake, and yukake mixed with blood."
color = "#ac1e2a"
boozepwr = 30
quality = DRINK_GOOD
taste_description = "danger looming above you"
chemical_flags_skyrat = REAGENT_BLOOD_REGENERATING
/datum/reagent/consumable/ethanol/jubokko/expose_mob(mob/living/exposed_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)
return
exposed_mob.blood_volume = min(exposed_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"
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
name = "Morocco Coffin"
description = "A cold pressed coffee with a tinge of iron."
color = "#200608"
boozepwr = 20
overdose_threshold = 75
quality = DRINK_GOOD
taste_description = "waking up at midnight"
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)
. = ..()
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)
. = ..()
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)
. = ..()
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)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/moroccocoffin
required_drink_type = /datum/reagent/consumable/ethanol/moroccocoffin
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "moroccocoffin"
name = "glass of morocco coffin"
desc = "For waking up when the sun goes down. Cools you down and wakes you up."
/datum/reagent/consumable/ethanol/batouttahell
name = "Bat Outta' Hell"
description = "Brave bull mixed with blood, with an absinthe 'varnish' sitting on top."
color = "#3d1013"
boozepwr = 70
overdose_threshold = 47
quality = DRINK_VERYGOOD
taste_description = "the blinding thrill of a HOME RUN, BABY!!"
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)
. = ..()
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)
. = ..()
affected_mob.add_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/batouttahell")
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)
. = ..()
affected_mob.remove_traits(list(TRAIT_GOOD_HEARING, TRAIT_MINOR_NIGHT_VISION),"Overdose:/datum/reagent/consumable/ethanol/batouttahell")
/datum/reagent/consumable/ethanol/batouttahell/expose_mob(mob/living/exposed_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)
return
exposed_mob.blood_volume = min(exposed_mob.blood_volume + reac_volume, BLOOD_VOLUME_MAXIMUM)
/datum/glass_style/drinking_glass/batouttahell
required_drink_type = /datum/reagent/consumable/ethanol/batouttahell
icon = 'modular_zubbers/icons/obj/drinks/mixed_drinks.dmi'
icon_state = "batouttahell"
name = "glass of bat outta' hell"
desc = "Strong enough to send you flyin' out of the park! Or maybe stumbling..."
Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 9.7 KiB

+1
View File
@@ -9453,6 +9453,7 @@
#include "modular_zubbers\code\modules\experisci\experiment\types\scanning_fish.dm"
#include "modular_zubbers\code\modules\fluff\flora\ash_flora.dm"
#include "modular_zubbers\code\modules\food_and_drinks\machinery\stove.dm"
#include "modular_zubbers\code\modules\food_and_drinks\recipes\drinks\drinks_alcoholic.dm"
#include "modular_zubbers\code\modules\food_and_drinks\recipes\drinks\drinks_non-alcoholic.dm"
#include "modular_zubbers\code\modules\food_and_drinks\recipes\tablecraft\recipes_pizza.dm"
#include "modular_zubbers\code\modules\food_and_drinks\recipes\tablecraft\recipes_seafood.dm"