Classic Cocktails 2: The liqueurening (#95392)

## About The Pull Request
TL;DR: "What do you mean we didn't have a negroni in the game before?"

This adds three new very commonly used liqueurs to the game: A bitter
red aperitivo, an herbal liqueur, and maraschino liqueur. Additionally,
it adds 15 new classic cocktails that use these new liqueurs.
Mechanically relevant drinks include:

- The Poet's Dream, which can grant non-heretics the ability to dream
like them
- The Garibaldi, which grants revolutionaries the determination to shrug
off their wounds
- The Jungle Bird, which soothes the supermatter when ingested by those
around it
- The Thermonuclear Daiquiri, which causes you to glow (and very rarely
emit high-energy nuclear particles)
- and more!

Full list here: https://hackmd.io/@0lHAWBNkSXixU4v6xxYS_w/SkYjyDofbg

![Sequence
01](https://github.com/user-attachments/assets/23066f45-4ab9-4f2c-a16b-1d53bfb09ffb)

On the non-player facing side of things, this also refactors the heretic
dream code a bit and adds a trait that enables non-heretics to have
heretic dreams, which could easily be used by other things (ie if anyone
wanted to make a perk or something that does this)

Also, special thanks to MrMelbert and ChipPotato for helping me out with
coding stuff in the discord!
## Why It's Good For The Game

This is good for the game for more or less the same reasons as my first
classic cocktail PR #92955 is good for the game: More variety gives
bartenders more to do and a greater range of drinks to base gimmicks off
of, and adding more cocktails to the game which are commonly served in
IRL bars decreases awkward, RP breaking moments where someone orders a
cocktail that's a staple you can find just about anywhere but which
isn't in the game. Additionally, the new liqueurs are commonly used in
many other classic and modern cocktails, which people can use to make
cocktails in future projects.
## Changelog
🆑
add: Added three new liqueurs, with bottles available in the
booze-o-mat.
add: Added 15 new cocktails that use the aforementioned liqueurs.
/🆑
This commit is contained in:
RusselNotSCP
2026-03-26 16:12:33 +11:00
committed by GitHub
parent 6dd6d74818
commit 4ceac8f297
21 changed files with 543 additions and 11 deletions
+12 -6
View File
@@ -23,8 +23,14 @@
set waitfor = FALSE
var/datum/dream/chosen_dream
if (IS_HERETIC(src) && !mob_mood.get_mood_event("mansus_dream_fatigue") && GLOB.reality_smash_track.smashes.len)
var/can_heretic_dream = ((IS_HERETIC(src) || HAS_TRAIT(src, TRAIT_HERETICAL_DREAMS)) && !mob_mood.get_mood_event("mansus_dream_fatigue"))
if (can_heretic_dream && GLOB.reality_smash_track.smashes.len)
/// If someone attempts to have a heretical dream and there is an avaliable influence, one is picked randomly for a dream
chosen_dream = new /datum/dream/heretic(pick(GLOB.reality_smash_track.smashes))
else if (can_heretic_dream && !IS_HERETIC(src) && !GLOB.reality_smash_track.smashes.len)
/// If a non-heretic attempts to have a heretic dream, but there aren't any influences due to there not being any real heretics, they are instead given a fake dream based on a random location.
chosen_dream = new /datum/dream/heretic(get_safe_random_station_turf_equal_weight())
else
chosen_dream = pick_weight(GLOB.dreams)
@@ -190,8 +196,8 @@ GLOBAL_LIST_INIT(dreams, populate_dream_list())
/// Heretics can see dreams about random machinery from the perspective of a random unused influence
/datum/dream/heretic
sleep_until_finished = TRUE
/// The influence we will be dreaming about
var/obj/effect/heretic_influence/influence
/// The location of the influence (or lack thereof in the case of a fake dream) we will be dreaming about
var/atom/dream_center
/// The distance to the objects visible from the influence during the dream
var/dream_view_range = 5
var/list/what_you_can_see = list(
@@ -223,8 +229,8 @@ GLOBAL_LIST_INIT(dreams, populate_dream_list())
/// Cached list of allowed typecaches for each type in what_you_can_see
var/static/list/allowed_typecaches_by_root_type = null
/datum/dream/heretic/New(obj/effect/heretic_influence/found_influence)
influence = found_influence
/datum/dream/heretic/New(atom/dream_center)
src.dream_center = dream_center
/datum/dream/heretic/GenerateDream(mob/living/carbon/dreamer)
. = list()
@@ -238,7 +244,7 @@ GLOBAL_LIST_INIT(dreams, populate_dream_list())
for(var/type in what_you_can_see)
allowed_typecaches_by_root_type[type] = typecacheof(type) - what_you_cant_see
var/list/all_objects = oview(dream_view_range, influence)
var/list/all_objects = oview(dream_view_range, dream_center)
var/something_found = FALSE
for(var/object_type in allowed_typecaches_by_root_type)
var/list/filtered_objects = typecache_filter_list(all_objects, allowed_typecaches_by_root_type[object_type])