diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index dea44f55315..69af372eb87 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -736,6 +736,7 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai // These traits are applied to /obj/item/organ/liver #define TRAIT_LAW_ENFORCEMENT_METABOLISM "law_enforcement_metabolism" #define TRAIT_CULINARY_METABOLISM "culinary_metabolism" +#define TRAIT_BARTENDER_METABOLISM "bartender_metabolism" #define TRAIT_COMEDY_METABOLISM "comedy_metabolism" #define TRAIT_MEDICAL_METABOLISM "medical_metabolism" #define TRAIT_ENGINEER_METABOLISM "engineer_metabolism" @@ -1217,6 +1218,12 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Trait given to a dreaming carbon when they are currently doing dreaming stuff #define TRAIT_DREAMING "currently_dreaming" +/// Trait that allows non-heretics to have heretical dreams +#define TRAIT_HERETICAL_DREAMS "heretical_dreams" + +/// Trait for if you've recently had a Last Word cocktail +#define TRAIT_HAD_LAST_WORD "had_last_word" + /// Whether bots will salute this mob. #define TRAIT_COMMISSIONED "commissioned" diff --git a/code/_globalvars/lists/quirks.dm b/code/_globalvars/lists/quirks.dm index 5bd44e667f9..341dc1c18dc 100644 --- a/code/_globalvars/lists/quirks.dm +++ b/code/_globalvars/lists/quirks.dm @@ -82,7 +82,9 @@ GLOBAL_LIST_INIT(possible_alcoholic_addictions, list( "Uncle Git's Special Reserve" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/whiskey, "reagent" = /datum/reagent/consumable/ethanol/whiskey), "Breezy Shoals Coconut Rum" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/coconut_rum, "reagent" = /datum/reagent/consumable/ethanol/coconut_rum), "Moonlabor Yūyake" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/yuyake, "reagent" = /datum/reagent/consumable/ethanol/yuyake), - "Shu-Kouba Straight Shochu" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/shochu, "reagent" = /datum/reagent/consumable/ethanol/shochu) + "Shu-Kouba Straight Shochu" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/shochu, "reagent" = /datum/reagent/consumable/ethanol/shochu), + "Camillo Aperitivo Rosso" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/aperitivo, "reagent" = /datum/reagent/consumable/ethanol/aperitivo), + "Dalmazia Originale Maraschino Liqueur" = list("bottlepath" = /obj/item/reagent_containers/cup/glass/bottle/maraschino, "reagent" = /datum/reagent/consumable/ethanol/maraschino) )) ///Options for Prosthetic Organ diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 58afc53aff7..0e3607877a3 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -325,6 +325,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED, "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, "TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL, + "TRAIT_HAD_LAST_WORD" = TRAIT_HAD_LAST_WORD, "TRAIT_HALLUCINATION_IMMUNE" = TRAIT_HALLUCINATION_IMMUNE, "TRAIT_HALT_RADIATION_EFFECTS" = TRAIT_HALT_RADIATION_EFFECTS, "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, @@ -339,6 +340,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER, "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, "TRAIT_HERETIC_SUMMON" = TRAIT_HERETIC_SUMMON, + "TRAIT_HERETICAL_DREAMS" = TRAIT_HERETICAL_DREAMS, "TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS, "TRAIT_HIGH_VALUE_RANSOM" = TRAIT_HIGH_VALUE_RANSOM, "TRAIT_HOLY" = TRAIT_HOLY, @@ -792,6 +794,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( ), /obj/item/organ/liver = list( "TRAIT_SCIENTIST_LIVER" = TRAIT_SCIENTIST_LIVER, + "TRAIT_BARTENDER_METABOLISM" = TRAIT_BARTENDER_METABOLISM, "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, "TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM, "TRAIT_CULINARY_METABOLISM" = TRAIT_CULINARY_METABOLISM, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 508334bab3f..c2c929746f4 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -140,11 +140,13 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_GREENTEXT_CURSED" = TRAIT_GREENTEXT_CURSED, "TRAIT_GUNFLIP" = TRAIT_GUNFLIP, "TRAIT_GUN_NATURAL" = TRAIT_GUN_NATURAL, + "TRAIT_HAD_LAST_WORD" = TRAIT_HAD_LAST_WORD, "TRAIT_HANDS_BLOCKED" = TRAIT_HANDS_BLOCKED, "TRAIT_HARDLY_WOUNDED" = TRAIT_HARDLY_WOUNDED, "TRAIT_HATED_BY_DOGS" = TRAIT_HATED_BY_DOGS, "TRAIT_HEAVY_DRINKER" = TRAIT_HEAVY_DRINKER, "TRAIT_HEAVY_SLEEPER" = TRAIT_HEAVY_SLEEPER, + "TRAIT_HERETICAL_DREAMS" = TRAIT_HERETICAL_DREAMS, "TRAIT_HIDE_EXTERNAL_ORGANS" = TRAIT_HIDE_EXTERNAL_ORGANS, "TRAIT_HIGH_VALUE_RANSOM" = TRAIT_HIGH_VALUE_RANSOM, "TRAIT_HOLY" = TRAIT_HOLY, @@ -415,6 +417,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_SPECIAL_TRAUMA_BOOST" = TRAIT_SPECIAL_TRAUMA_BOOST, ), /obj/item/organ/liver = list( + "TRAIT_BARTENDER_METABOLISM" = TRAIT_BARTENDER_METABOLISM, "TRAIT_COMEDY_METABOLISM" = TRAIT_COMEDY_METABOLISM, "TRAIT_CORONER_METABOLISM" = TRAIT_CORONER_METABOLISM, "TRAIT_CULINARY_METABOLISM" = TRAIT_CULINARY_METABOLISM, diff --git a/code/datums/status_effects/buffs.dm b/code/datums/status_effects/buffs.dm index 449519eb7c2..ec01ea45370 100644 --- a/code/datums/status_effects/buffs.dm +++ b/code/datums/status_effects/buffs.dm @@ -716,3 +716,19 @@ /datum/status_effect/desensitized/proc/remove_magnitude(datum/source, mob/living/old_body, datum/mind/swapping) SIGNAL_HANDLER swapping.desensitized_level /= magnitude + +//used by the garibaldi cocktail to grant revolutionaries wound resistance and fearlessness +/datum/status_effect/rev_resilience + id = "rev_resilience" + duration = 5 SECONDS //gets refreshed by metabolism + status_type = STATUS_EFFECT_REFRESH + alert_type = null + +/datum/status_effect/rev_resilience/on_apply() + to_chat(owner, span_warning("You feel your revolutionary spirit surging! You feel like nothing the oppressors could throw at you could wound your pride!")) + owner.add_traits(list(TRAIT_HARDLY_WOUNDED,TRAIT_ANALGESIA,TRAIT_FEARLESS), TRAIT_STATUS_EFFECT(id)) + return TRUE + +/datum/status_effect/rev_resilience/on_remove() + to_chat(owner, span_notice("You feel your surge of revolutionary zeal fade. You hope you don't get shot in the foot...")) + owner.remove_traits(list(TRAIT_HARDLY_WOUNDED,TRAIT_ANALGESIA,TRAIT_FEARLESS), TRAIT_STATUS_EFFECT(id)) diff --git a/code/datums/status_effects/neutral.dm b/code/datums/status_effects/neutral.dm index b2e358d2b94..d5989f91a7e 100644 --- a/code/datums/status_effects/neutral.dm +++ b/code/datums/status_effects/neutral.dm @@ -615,6 +615,30 @@ /datum/status_effect/tinlux_light/on_remove() QDEL_NULL(mob_light_obj) +///Makes the mob glow blue and rarely emit nuclear particles +/datum/status_effect/cherenkov_radiation + id = "cherenkov_radiation" + processing_speed = STATUS_EFFECT_NORMAL_PROCESS + remove_on_fullheal = TRUE + alert_type = null + var/obj/effect/dummy/lighting_obj/moblight/mob_light_obj + +/datum/status_effect/cherenkov_radiation/on_creation(mob/living/new_owner, duration) + if(duration) + src.duration = duration + return ..() + +/datum/status_effect/cherenkov_radiation/on_apply() + mob_light_obj = owner.mob_light(2, 4, "#33ddff") + return TRUE + +/datum/status_effect/cherenkov_radiation/tick(seconds_between_ticks) + if(prob(3)) + owner.fire_nuclear_particle() + +/datum/status_effect/cherenkov_radiation/on_remove() + QDEL_NULL(mob_light_obj) + /datum/status_effect/gutted id = "gutted" alert_type = null diff --git a/code/modules/cargo/bounties/reagent.dm b/code/modules/cargo/bounties/reagent.dm index ca816e81dc7..e3706407fc5 100644 --- a/code/modules/cargo/bounties/reagent.dm +++ b/code/modules/cargo/bounties/reagent.dm @@ -84,6 +84,9 @@ /datum/reagent/consumable/ethanol/flip_cocktail, /datum/reagent/consumable/ethanol/bitters_soda, /datum/reagent/consumable/ethanol/star, + /datum/reagent/consumable/ethanol/brandy_crusta, + /datum/reagent/consumable/ethanol/casino, + /datum/reagent/consumable/ethanol/mary_pickford, ) var/reagent_type = pick(possible_reagents) @@ -122,6 +125,9 @@ /datum/reagent/consumable/ethanol/sangria, /datum/reagent/consumable/ethanol/tizirian_sour, /datum/reagent/consumable/ethanol/suffering_bastard, + /datum/reagent/consumable/ethanol/pousse_cafe, + /datum/reagent/consumable/ethanol/improved_whiskey, + /datum/reagent/consumable/ethanol/vieux_carre, ) var/reagent_type = pick(possible_reagents) diff --git a/code/modules/flufftext/dreaming.dm b/code/modules/flufftext/dreaming.dm index a813c8d9652..9ebb8cd41ad 100644 --- a/code/modules/flufftext/dreaming.dm +++ b/code/modules/flufftext/dreaming.dm @@ -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]) diff --git a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm index 2b3cefec7db..77e184e3d88 100644 --- a/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm +++ b/code/modules/food_and_drinks/recipes/drinks/drinks_alcoholic.dm @@ -680,11 +680,11 @@ results = list(/datum/reagent/consumable/ethanol/amaretto_sour = 15) required_reagents = list(/datum/reagent/consumable/ethanol/amaretto = 10, /datum/reagent/consumable/lemonjuice = 5, /datum/reagent/consumable/eggwhite = 2) mix_message = "A frothy head forms over the mixture." - + /datum/chemical_reaction/drink/ramos_gin_fizz results = list(/datum/reagent/consumable/ethanol/ramos_gin_fizz = 25) //yes, this is intentionally a pain in the ass - required_reagents = list(/datum/reagent/consumable/ethanol/ginfizz = 12, /datum/reagent/consumable/lemonjuice = 3, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/eggwhite = 3, /datum/reagent/consumable/cream = 3, /datum/reagent/consumable/ethanol/triple_sec = 1) + required_reagents = list(/datum/reagent/consumable/ethanol/ginfizz = 12, /datum/reagent/consumable/lemonjuice = 3, /datum/reagent/consumable/sugar = 3, /datum/reagent/consumable/eggwhite = 3, /datum/reagent/consumable/cream = 3, /datum/reagent/consumable/ethanol/triple_sec = 1) mix_message = "The drink forms a rising head of foam that begins to creep out of the top of the glass." /datum/chemical_reaction/drink/french_75 @@ -707,7 +707,7 @@ /datum/chemical_reaction/drink/tizirian_sour results = list(/datum/reagent/consumable/ethanol/tizirian_sour = 8) - required_reagents = list(/datum/reagent/consumable/ethanol/bitters = 3, /datum/reagent/consumable/lemonjuice = 2, /datum/reagent/consumable/korta_nectar = 2, /datum/reagent/consumable/sugar = 1) + required_reagents = list(/datum/reagent/consumable/ethanol/bitters = 3, /datum/reagent/consumable/lemonjuice = 2, /datum/reagent/consumable/korta_nectar = 2, /datum/reagent/consumable/sugar = 1) /datum/chemical_reaction/drink/daiquiri results = list(/datum/reagent/consumable/ethanol/daiquiri = 6) @@ -723,3 +723,64 @@ required_reagents = list(/datum/reagent/consumable/ethanol/whiskey = 4, /datum/reagent/water = 4, /datum/reagent/consumable/sugar = 1) mix_message = "The whiskey ignites in a brilliant blue flame!" required_temp = 365 //autoignition temp of ethanol + +/datum/chemical_reaction/drink/bartenders_handshake + results=list(/datum/reagent/consumable/ethanol/bartenders_handshake = 2) + required_reagents = list(/datum/reagent/consumable/ethanol/aperitivo = 1, /datum/reagent/consumable/ethanol/fernet = 1) + +/datum/chemical_reaction/drink/brandy_crusta + results=list(/datum/reagent/consumable/ethanol/brandy_crusta = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/sidecar = 4, /datum/reagent/consumable/ethanol/maraschino = 1, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/drink/casino + results=list(/datum/reagent/consumable/ethanol/casino = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 8, /datum/reagent/consumable/lemonjuice = 1, /datum/reagent/consumable/ethanol/maraschino = 1) + +/datum/chemical_reaction/drink/garibaldi + results=list(/datum/reagent/consumable/ethanol/garibaldi = 5) + required_reagents = list(/datum/reagent/consumable/orangejuice = 4, /datum/reagent/consumable/ethanol/aperitivo = 1) + +/datum/chemical_reaction/drink/improved_whiskey + results=list(/datum/reagent/consumable/ethanol/improved_whiskey = 12) + required_reagents = list(/datum/reagent/consumable/ethanol/sazerac = 10, /datum/reagent/consumable/ethanol/maraschino = 2) + +/datum/chemical_reaction/drink/jungle_bird + results=list(/datum/reagent/consumable/ethanol/jungle_bird = 9) + required_reagents = list(/datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/ethanol/rum = 3, /datum/reagent/consumable/ethanol/aperitivo = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/drink/last_word + results=list(/datum/reagent/consumable/ethanol/last_word = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/gin = 1, /datum/reagent/consumable/ethanol/herbal_liqueur = 1, /datum/reagent/consumable/limejuice = 1, /datum/reagent/consumable/ethanol/maraschino = 1) + +/datum/chemical_reaction/drink/mary_pickford + results=list(/datum/reagent/consumable/ethanol/mary_pickford = 9) + required_reagents = list(/datum/reagent/consumable/ethanol/rum = 4, /datum/reagent/consumable/pineapplejuice = 3, /datum/reagent/consumable/grenadine = 1, /datum/reagent/consumable/ethanol/maraschino = 1) + +/datum/chemical_reaction/drink/negroni + results=list(/datum/reagent/consumable/ethanol/negroni = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/martini = 3, /datum/reagent/consumable/ethanol/aperitivo = 2, /datum/reagent/consumable/ethanol/vermouth = 1) + +/datum/chemical_reaction/drink/nuclear_daiquiri + results=list(/datum/reagent/consumable/ethanol/nuclear_daiquiri = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 4, /datum/reagent/consumable/ethanol/herbal_liqueur = 3, /datum/reagent/consumable/limejuice = 2, /datum/reagent/consumable/sugar = 1) + +/datum/chemical_reaction/drink/nuclear_daiquiri_thermo + results=list(/datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo = 10) + required_reagents = list(/datum/reagent/consumable/ethanol/nuclear_daiquiri = 10, /datum/reagent/uranium = 1, /datum/reagent/hydrogen = 9) + mix_message = "As the mixture begins to combine and glow, an ominous metallic taste fills your mouth." + +/datum/chemical_reaction/drink/poets_dream + results=list(/datum/reagent/consumable/ethanol/poets_dream = 4) + required_reagents = list(/datum/reagent/consumable/ethanol/martini = 3, /datum/reagent/consumable/ethanol/herbal_liqueur = 1) + +/datum/chemical_reaction/drink/pousse_cafe + results=list(/datum/reagent/consumable/ethanol/pousse_cafe = 50) // if you managed to make this properly, the least it can do is fit into a glass neatly + required_reagents = list(/datum/reagent/consumable/ethanol/navy_rum = 12, /datum/reagent/consumable/ethanol/whiskey = 11, /datum/reagent/consumable/ethanol/fernet = 10, /datum/reagent/consumable/ethanol/herbal_liqueur = 9, /datum/reagent/consumable/ethanol/kahlua = 8, /datum/reagent/consumable/grenadine = 7) // Since I have no way to simulate layering a cocktail, I will instead make it have absolutely godawful ratios to emulate the fiddling nessecary for something like this. + +/datum/chemical_reaction/drink/spritz + results=list(/datum/reagent/consumable/ethanol/spritz = 6) + required_reagents = list(/datum/reagent/consumable/ethanol/champagne = 3, /datum/reagent/consumable/ethanol/aperitivo = 2, /datum/reagent/consumable/sodawater = 1) + +/datum/chemical_reaction/drink/vieux_carre + results=list(/datum/reagent/consumable/ethanol/vieux_carre = 15) + required_reagents = list(/datum/reagent/consumable/ethanol/manhattan = 6, /datum/reagent/consumable/ethanol/cognac = 4, /datum/reagent/consumable/ethanol/vermouth = 2, /datum/reagent/consumable/ethanol/herbal_liqueur = 2, /datum/reagent/consumable/ethanol/bitters = 1) diff --git a/code/modules/food_and_drinks/restaurant/customers/_customer.dm b/code/modules/food_and_drinks/restaurant/customers/_customer.dm index ca85679cf3a..43459ed85db 100644 --- a/code/modules/food_and_drinks/restaurant/customers/_customer.dm +++ b/code/modules/food_and_drinks/restaurant/customers/_customer.dm @@ -96,6 +96,8 @@ /datum/reagent/consumable/ethanol/b52 = 6, /datum/reagent/consumable/ethanol/manhattan = 3, /datum/reagent/consumable/ethanol/old_fashioned = 3, + /datum/reagent/consumable/ethanol/sazerac = 2, + /datum/reagent/consumable/ethanol/improved_whiskey = 1, /datum/reagent/consumable/ethanol/atomicbomb = 1, ), ) @@ -144,6 +146,9 @@ /datum/reagent/consumable/ethanol/amaretto = 5, /datum/reagent/consumable/ethanol/amaretto_sour = 3, /datum/reagent/consumable/cucumberlemonade = 2, + /datum/reagent/consumable/ethanol/negroni = 2, + /datum/reagent/consumable/ethanol/garibaldi = 2, + /datum/reagent/consumable/ethanol/spritz = 5, ), ) @@ -181,6 +186,8 @@ /datum/reagent/consumable/ethanol/wine = 5, /datum/reagent/consumable/ethanol/gin_garden = 2, /datum/reagent/consumable/ethanol/french_75 = 5, + /datum/reagent/consumable/ethanol/herbal_liqueur = 2, + /datum/reagent/consumable/ethanol/pousse_cafe = 1, ), ) diff --git a/code/modules/hydroponics/grown/cherries.dm b/code/modules/hydroponics/grown/cherries.dm index c34daf523eb..42a462a145f 100644 --- a/code/modules/hydroponics/grown/cherries.dm +++ b/code/modules/hydroponics/grown/cherries.dm @@ -29,7 +29,7 @@ bite_consumption_mod = 2 foodtypes = FRUIT tastes = list("cherry" = 1) - wine_power = 30 + distill_reagent = /datum/reagent/consumable/ethanol/maraschino /obj/item/food/grown/cherries/grind_results() return list(/datum/reagent/consumable/cherryjelly = 0) diff --git a/code/modules/jobs/job_types/bartender.dm b/code/modules/jobs/job_types/bartender.dm index 8d39b5efcb3..8de2d99b7c7 100644 --- a/code/modules/jobs/job_types/bartender.dm +++ b/code/modules/jobs/job_types/bartender.dm @@ -13,6 +13,9 @@ paycheck = PAYCHECK_CREW paycheck_department = ACCOUNT_SRV + + liver_traits = list(TRAIT_BARTENDER_METABOLISM) + display_order = JOB_DISPLAY_ORDER_BARTENDER bounty_types = CIV_JOB_DRINK departments_list = list( diff --git a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm index 740b08b7482..fa1d9e4af98 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/alcohol_reagents.dm @@ -3124,6 +3124,7 @@ taste_description = "flowery anise-scented whiskey" chemical_flags = REAGENT_CAN_BE_SYNTHESIZED randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + glass_price = DRINK_PRICE_EASY /datum/reagent/consumable/ethanol/amaretto_sour name = "Amaretto Sour" @@ -3248,5 +3249,246 @@ if(prob(10)) drinker.emote("flip") +/datum/reagent/consumable/ethanol/aperitivo + name = "Aperitivo Liqueur" + description = "An aggressively bittersweet liqueur flavored with cinchona bark and other botanicals. Perfect for stimulating one's appetite or fighting off malaria." + boozepwr = 40 + color = "#bf1038" + taste_description = "intense citrusy bitterness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/aperitivo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) //This and some of the cocktails it gets mixed into stimulate the apetite, as an aperitivo should + . = ..() + drinker.adjust_nutrition(-5 * REM * seconds_per_tick) + drinker.overeatduration = 0 + +/datum/reagent/consumable/ethanol/herbal_liqueur + name = "Herbal Liqueur" + description = "A liqueur made with a wide variety of herbs and spices, infused into spirit through both distillation and maceration. So many, in fact, that trying to pick them out by scent and taste seems nearly impossible..." + boozepwr = 75 + color = "#95be7d" + quality = DRINK_NICE + taste_description = "confounding herbaceousness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + glass_price = DRINK_PRICE_EASY + +/datum/reagent/consumable/ethanol/maraschino + name = "Maraschino Liqueur" + description = "A classic sweet liqueur made from the fruits, leaves, and even branches of sour cherries. Surprisingly, it doesn't actually taste much like cherry." + boozepwr = 50 + color = "#DDDDDD" + taste_description = "nutty sweetness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/bartenders_handshake + name = "Bartender's Handshake" + description = "A tradition of somewhat inconsistent providence, possibly linked to an obscure challenge-coin-based marketing scheme, this drink is a way for bartenders to greet and test each other's mettle via a drink that only a fellow barkeep could appreciate. While there are nearly as many versions of this drink as there are bars, this version tests one's palate by combining two of the most bitter ingredients you're likely to find in a bar." + boozepwr = 50 + color = "#270101" + quality = DRINK_VERYGOOD + taste_description = "pretentious bitterness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/bartenders_handshake/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) //Heals bartenders brute and burn, disgusts otherwise + . = ..() + var/obj/item/organ/liver/liver = drinker.get_organ_slot(ORGAN_SLOT_LIVER) + if(HAS_TRAIT(liver, TRAIT_BARTENDER_METABOLISM)) + if(drinker.heal_bodypart_damage(brute = 1 * REM * seconds_per_tick, burn = 1 * REM * seconds_per_tick, updating_health = FALSE)) + . = UPDATE_MOB_HEALTH + else + drinker.adjust_disgust(2 * REM * seconds_per_tick) + +/datum/reagent/consumable/ethanol/brandy_crusta + name = "Brandy Crusta" + description = "The far more gussied-up ancestor of the Sidecar, this heavily garnished cocktail is the grandparent of many essential drinks served today." + boozepwr = 30 + color = "#f8c51c" + quality = DRINK_VERYGOOD + taste_description = "orangy sweetness" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/casino + name = "Casino" + description = "A gin-heavy classic. Juniper is tempered by scant amounts of citrus and sweetened with liqueur." + boozepwr = 50 + color = "#fdee65" + quality = DRINK_GOOD + taste_description = "sweet juniper" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/garibaldi //Makes revs resitant to wounds and fearless. + name = "Garibaldi" + description = "Named for the 19th-century Italian general, the red-orange color scheme of this drink mimics the shirts of those who followed him into battles all across the world." + boozepwr = 15 + color = "#f77e2e" + quality = DRINK_GOOD + taste_description = "bitter oranges" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + glass_price = DRINK_PRICE_EASY + +/datum/reagent/consumable/ethanol/garibaldi/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio) + . = ..() + if(IS_REVOLUTIONARY(drinker)) + //status effect has a duration of 5 seconds which gets refreshed by this, falls off on it's own in case of running out of drink or deconversion + drinker.apply_status_effect(/datum/status_effect/rev_resilience) + +/datum/reagent/consumable/ethanol/improved_whiskey + name = "Improved Whiskey Cocktail" + description = "The Classic Whiskey cocktail improved by the addition of absinthe and maraschino, as well as swapping the typical orange peel garnish for lemon." + boozepwr = 65 + color = "#b8a385" + quality = DRINK_VERYGOOD + taste_description = "nutty anise-scented whiskey" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + glass_price = DRINK_PRICE_MEDIUM + +/datum/reagent/consumable/ethanol/jungle_bird + name = "Jungle Bird" + description = "This late-tiki concoction leverages the brilliant combination of bitter liqueur and pineapple juice to make a remarkably well-balanced cocktail." + boozepwr = 25 + color = "#da8370" + quality = DRINK_VERYGOOD + taste_description = "pineapple and quinine" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + metabolized_traits = list(TRAIT_SUPERMATTER_SOOTHER) //If you have this in your system, you calm down the SM by being near it. + +/datum/reagent/consumable/ethanol/last_word + name = "Last Word" + description = "Despite being invented at the turn of the 20th century, this drink fell into obscurity until the cocktail renaissance of the beginning of the 21st, where it then went on to dominate bars and inspire countless twists upon its formula." + boozepwr = 50 + color = "#dddfcaff" + quality = DRINK_VERYGOOD + taste_description = "herbal finality" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/last_word/expose_mob(mob/living/drinker, methods, reac_volume, show_message, touch_protection) + . = ..() + //Mutes people for 5 seconds on their first sip every 5 minutes. Requires ingest, you can't savor something that's injected into your eyes or whatever. + if(!(methods & INGEST) || !iscarbon(drinker) || HAS_TRAIT(drinker, TRAIT_HAD_LAST_WORD)) + return + + ADD_TRAIT(drinker, TRAIT_HAD_LAST_WORD, type) + to_chat(drinker, span_notice("You take a moment to silently savor your drink...")) + drinker.set_silence_if_lower(5 SECONDS) + addtimer(TRAIT_CALLBACK_REMOVE(drinker, TRAIT_HAD_LAST_WORD, type), 300 SECONDS) + +/datum/reagent/consumable/ethanol/mary_pickford + name = "Mary Pickford" + description = "Named after an early 20th-century film star, this cocktail takes a rum and pineapple flavor profile and presents it in a classier and more elegant form than one would typically expect." + boozepwr = 35 + color = "#f7b7a7ff" + quality = DRINK_GOOD + taste_description = "elegant pineapple" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/negroni //Aperitif that increases hunger + name = "Negroni" + description = "An iconic Italian aperitif, its simple intensity crowns it as perhaps the ultimate bitter cocktail. Supposedly it was named after an Italian count who wanted a stronger version of a spritz and asked his bartender to replace soda with gin." + boozepwr = 50 + color = "#cf0e00ff" + quality = DRINK_GOOD + taste_description = "bittersweet vermouth" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + glass_price = DRINK_PRICE_EASY + +/datum/reagent/consumable/ethanol/negroni/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) + . = ..() + drinker.adjust_nutrition(-3 * REM * seconds_per_tick) + drinker.overeatduration = 0 + +/datum/reagent/consumable/ethanol/nuclear_daiquiri + name = "Nuclear daiquiri" + description = "Overproof, funky, pot still rum and herbal liqueur takes the simple elegance of a Cuban daiquiri and turns it on its head." + boozepwr = 65 + color = "#22cc22" + quality = DRINK_GOOD + taste_description = "hogo and herbs" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo + name = "Thermonuclear Daiquiri" + description = "A drink for those who enjoy the gnarlier things in life, like high-ester rums and Cobalt 60." + boozepwr = 80 + color = "#00dd00" + quality = DRINK_FANTASTIC + taste_description = "approximately 3.6 roentgen" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + +/datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo/on_mob_add(mob/living/living_mob) + . = ..() + living_mob.apply_status_effect(/datum/status_effect/cherenkov_radiation) //makes the drinker glow blue, and rarely emit high-energy nuclear particles. + +/datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo/on_mob_delete(mob/living/living_mob) + . = ..() + living_mob.remove_status_effect(/datum/status_effect/cherenkov_radiation) + +/datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, metabolization_ratio) + . = ..() + drinker.set_drugginess(100 SECONDS * metabolization_ratio * seconds_per_tick) + drinker.set_jitter_if_lower(20 SECONDS * metabolization_ratio * seconds_per_tick) + drinker.set_dizzy_if_lower(10 SECONDS * metabolization_ratio * seconds_per_tick) + +/datum/reagent/consumable/ethanol/poets_dream + name = "Poet's Dream" + description = "This cocktail takes a classic martini base and twists it into a deliciously sweet and herbal mode. Nanotrasen regulations state not to drink this too soon before sleep, or risk 'oneiric encroachment,' whatever that means." + boozepwr = 50 + color = "#d4b14f" + quality = DRINK_GOOD + taste_description = "honeyed herbal gin" + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + metabolized_traits = list(TRAIT_HERETICAL_DREAMS) //Enables non-heretics to have heretical dreams + +/datum/reagent/consumable/ethanol/pousse_cafe + name = "Pousse Cafe" + description = "An aesthetically beautiful cocktail made from the careful and meticulous layering of various liquors. Extremely annoying to make." + boozepwr = 50 + color = "#93cf33" + quality = DRINK_FANTASTIC + taste_description = "a cascade of varying liqueurs" + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + glass_price = DRINK_PRICE_HIGH + +/datum/reagent/consumable/ethanol/spritz //Aperitif that increases hunger + name = "Spritz" // If someone wants to add an elderflower spritz or something else like that, just rename this to spritz al bitter or whatever + description = "This bittersweet and refreshing aperitif brings to mind the beautiful summer sunsets of venice." + boozepwr = 20 + color = "#ee714b" + quality = DRINK_GOOD + taste_description = "bittersweet refreshment" + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + glass_price = DRINK_PRICE_EASY + +/datum/reagent/consumable/ethanol/spritz/on_mob_life(mob/living/carbon/drinker, seconds_per_tick, times_fired) + . = ..() + drinker.adjust_nutrition(-5 * REM * seconds_per_tick) + drinker.overeatduration = 0 + +/datum/reagent/consumable/ethanol/vieux_carre + name = "Vieux Carré" + description = "One of the best of many great cocktails to come out of New Orleans, this drink does honor to that city's French Quarter both in name and in taste." + boozepwr = 60 + color = "#b43110" + quality = DRINK_VERYGOOD + taste_description = "Creole hospitality" + randomized_spawns = REAGENT_SPAWN_ALL_RANDOM_SPAWNS + chemical_flags = REAGENT_CAN_BE_SYNTHESIZED + #undef ALCOHOL_EXPONENT #undef ALCOHOL_THRESHOLD_MODIFIER diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm index 564f081601d..c4fadbbf5e8 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/alcohol.dm @@ -202,6 +202,27 @@ icon = 'icons/obj/drinks/drinks.dmi' icon_state = "rice_beer" +/datum/glass_style/drinking_glass/aperitivo + required_drink_type = /datum/reagent/consumable/ethanol/aperitivo + name = "a glass of aperitivo liqueur" + desc = "The bright red coloring is stimulating your appetite, but you probably should mix this with something first." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "aperitivo" + +/datum/glass_style/drinking_glass/herbal_liqueur + required_drink_type = /datum/reagent/consumable/ethanol/herbal_liqueur + name = "glass of herbal liqueur" + desc = "You wonder just how many herbs were needed to make this glass." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "herbal_liqueur" + +/datum/glass_style/drinking_glass/maraschino + required_drink_type = /datum/reagent/consumable/ethanol/maraschino + name = "a glass of maraschino liqueur" + desc = "If mixing sugar and alcohol really does contribute to hangovers, drinking this straight is certainly one way to find out." + icon = 'icons/obj/drinks/drinks.dmi' + icon_state = "maraschino" + // Shot glasses /datum/glass_style/shot_glass/kahlua diff --git a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm index 66199848220..99577da576c 100644 --- a/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm +++ b/code/modules/reagents/chemistry/reagents/drinks/glass_styles/mixed_alcohol.dm @@ -1128,6 +1128,110 @@ icon = 'icons/obj/drinks/mixed_drinks.dmi' icon_state = "flip_cocktail" +/datum/glass_style/drinking_glass/bartenders_handshake + required_drink_type = /datum/reagent/consumable/ethanol/bartenders_handshake + name = "Bartender's Handshake" + desc = "Truly, a drink only its mother (or father) could love." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "bartenders_handshake" + +/datum/glass_style/drinking_glass/brandy_crusta + required_drink_type = /datum/reagent/consumable/ethanol/brandy_crusta + name = "Brandy Crusta" + desc = "The encrusted rim of this drink reminds you of a saccharine snow… or just a sugary margarita." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "brandy_crusta" + +/datum/glass_style/drinking_glass/casino + required_drink_type = /datum/reagent/consumable/ethanol/casino + name = "Casino" + desc = "For when you want to feel classy while you blow your salary on slots." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "casino" + +/datum/glass_style/drinking_glass/garibaldi + required_drink_type = /datum/reagent/consumable/ethanol/garibaldi + name = "Garibaldi" + desc = "A drink for unifiers and revolutionaries." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "garibaldi" + +/datum/glass_style/drinking_glass/improved_whiskey + required_drink_type = /datum/reagent/consumable/ethanol/improved_whiskey + name = "Improved Whiskey Cocktail" + desc = "A descendent of the old fashioned, which also predates the Old Fashioned by about a decade. A student of cocktail histories can resolve this paradox." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "improved_whiskey" + +/datum/glass_style/drinking_glass/jungle_bird + required_drink_type = /datum/reagent/consumable/ethanol/jungle_bird + name = "Jungle Bird" + desc = "SQUAWK! No drunks in the engine room! SQUAWK!" + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "jungle_bird" + +/datum/glass_style/drinking_glass/last_word + required_drink_type = /datum/reagent/consumable/ethanol/last_word + name = "Last Word" + desc = "It speaks for itself." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "last_word" + +/datum/glass_style/drinking_glass/mary_pickford + required_drink_type = /datum/reagent/consumable/ethanol/mary_pickford + name = "Mary Pickford" + desc = "May just leave you feeling a tad coquettish." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "mary_pickford" + +/datum/glass_style/drinking_glass/negroni + required_drink_type = /datum/reagent/consumable/ethanol/negroni + name = "Negroni" + desc = "Hail to the crimson count." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "negroni" + +/datum/glass_style/drinking_glass/nuclear_daiquiri + required_drink_type = /datum/reagent/consumable/ethanol/nuclear_daiquiri + name = "Nuclear daiquiri" + desc = "A funk bomb in a glass." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "nuclear_daiquiri" + +/datum/glass_style/drinking_glass/nuclear_daiquiri_thermo + required_drink_type = /datum/reagent/consumable/ethanol/nuclear_daiquiri_thermo + name = "Thermonuclear Daiquiri" + desc = "You seem to hear an erratic ticking noise when you look at this drink." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "nuclear_daiquiri_thermo" + +/datum/glass_style/drinking_glass/poets_dream + required_drink_type = /datum/reagent/consumable/ethanol/poets_dream + name = "Poet's Dream" + desc = "'Those which dwell beyond the veil have little time for poetry,' it is said, 'but they have a tremendous amount of time for poets.' Or was it 'have the most tremendous time with poets?'" + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "poets_dream" + +/datum/glass_style/drinking_glass/pousse_cafe + required_drink_type = /datum/reagent/consumable/ethanol/pousse_cafe + name = "Pousse Cafe" + desc = "If a bartender serves you this without you ordering it, they probably want to impress you. If you ordered it yourself, they probably want to put your head on a pike." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "pousse_cafe" + +/datum/glass_style/drinking_glass/spritz + required_drink_type = /datum/reagent/consumable/ethanol/spritz + name = "Spritz" + desc = "Perhaps the best way to start a night out on the town." + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "spritz" + +/datum/glass_style/drinking_glass/vieux_carre + required_drink_type = /datum/reagent/consumable/ethanol/vieux_carre + name = "Vieux Carré" + desc = "Laissez les bons temps rouler!" + icon = 'icons/obj/drinks/mixed_drinks.dmi' + icon_state = "vieux_carre" // Shot glasses diff --git a/code/modules/reagents/reagent_containers/cups/glassbottle.dm b/code/modules/reagents/reagent_containers/cups/glassbottle.dm index a060d961969..9d680deede8 100644 --- a/code/modules/reagents/reagent_containers/cups/glassbottle.dm +++ b/code/modules/reagents/reagent_containers/cups/glassbottle.dm @@ -874,6 +874,27 @@ list_reagents = list(/datum/reagent/consumable/ethanol/coconut_rum = 100) drink_type = ALCOHOL +/obj/item/reagent_containers/cup/glass/bottle/aperitivo + name = "Camillo Aperitivo Rosso" + desc = "The bottle that led to the creation of the modern Camillo Group beverage conglomerate. Despite what you might expect, there's a good chance that whoever makes your favorite liquor is at least in part owned by Camillo." + icon_state = "aperitivo_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/aperitivo = 100) + drink_type = ALCOHOL + +/obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur + name = "Bellarmine D.O.P Herbal Liqueur" + desc = "An almost millenia old herbal liqueur made from a secret recipe passed down over generations of monks. It's not great to know that the herbs and spices used in this are a better-kept secret than the codes to Nanotrasen's nuclear arsenal." + icon_state = "herbal_liqueur_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/herbal_liqueur = 100) + drink_type = ALCOHOL + +/obj/item/reagent_containers/cup/glass/bottle/maraschino + name = "Dalmazia Originale Maraschino Liqueur" + desc = "A small note on the back of the bottle instructs all customers who complain about a lack of cherry flavor to direct their concerns to what appears to be a defunct phone number." + icon_state = "maraschino_bottle" + list_reagents = list(/datum/reagent/consumable/ethanol/maraschino = 100) + drink_type = ALCOHOL + ////////////////////////// MOLOTOV /////////////////////// /obj/item/reagent_containers/cup/glass/bottle/molotov name = "molotov cocktail" diff --git a/code/modules/surgery/organs/internal/liver/_liver.dm b/code/modules/surgery/organs/internal/liver/_liver.dm index 3b2e7df0f03..d982259f6da 100644 --- a/code/modules/surgery/organs/internal/liver/_liver.dm +++ b/code/modules/surgery/organs/internal/liver/_liver.dm @@ -92,6 +92,8 @@ . += span_info("Fatty deposits and sprinkle residue, imply that this is the liver of someone in security.") if(HAS_TRAIT(src, TRAIT_CULINARY_METABOLISM)) . += span_info("The high iron content and slight smell of garlic, implies that this is the liver of a cook.") + if (HAS_TRAIT(src, TRAIT_BARTENDER_METABOLISM)) + . += span_info("The decidedly well-used look from periods of prolonged exposure to a wide variety of alcohols, implies that this is the liver of a bartender.") if(HAS_TRAIT(src, TRAIT_COMEDY_METABOLISM)) . += span_info("A smell of bananas, a slippery sheen and [span_clown("honking")] when depressed, implies that this is the liver of a clown.") if(HAS_TRAIT(src, TRAIT_MEDICAL_METABOLISM)) diff --git a/code/modules/vending/boozeomat.dm b/code/modules/vending/boozeomat.dm index 40a76ce83fc..0eb573b9291 100644 --- a/code/modules/vending/boozeomat.dm +++ b/code/modules/vending/boozeomat.dm @@ -35,6 +35,8 @@ /obj/item/reagent_containers/cup/glass/bottle/coconut_rum = 5, /obj/item/reagent_containers/cup/glass/bottle/yuyake = 5, /obj/item/reagent_containers/cup/glass/bottle/shochu = 5, + /obj/item/reagent_containers/cup/glass/bottle/aperitivo = 5, + /obj/item/reagent_containers/cup/glass/bottle/maraschino = 5, /obj/item/reagent_containers/cup/soda_cans/beer = 10, /obj/item/reagent_containers/cup/soda_cans/beer/rice = 10, ), @@ -76,12 +78,14 @@ contraband = list( /obj/item/reagent_containers/cup/glass/mug/tea = 12, /obj/item/reagent_containers/cup/glass/bottle/fernet = 5, + /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, ) premium = list( /obj/item/reagent_containers/cup/bottle/ethanol = 4, /obj/item/reagent_containers/cup/glass/bottle/champagne = 5, /obj/item/reagent_containers/cup/glass/bottle/trappist = 5, /obj/item/reagent_containers/cup/glass/bottle/bitters = 5, + /obj/item/reagent_containers/cup/glass/bottle/herbal_liqueur = 2, ) product_slogans = "I hope nobody asks me for a bloody cup o' tea...;Alcohol is humanity's friend. Would you abandon a friend?;Quite delighted to serve you!;Is nobody thirsty on this station?" diff --git a/icons/obj/drinks/bottles.dmi b/icons/obj/drinks/bottles.dmi index 3dece4b41c6..536cbb2e229 100644 Binary files a/icons/obj/drinks/bottles.dmi and b/icons/obj/drinks/bottles.dmi differ diff --git a/icons/obj/drinks/drinks.dmi b/icons/obj/drinks/drinks.dmi index 5566cb09b2f..c853a51b7dd 100644 Binary files a/icons/obj/drinks/drinks.dmi and b/icons/obj/drinks/drinks.dmi differ diff --git a/icons/obj/drinks/mixed_drinks.dmi b/icons/obj/drinks/mixed_drinks.dmi index 97b1d99979c..65947b9edd7 100644 Binary files a/icons/obj/drinks/mixed_drinks.dmi and b/icons/obj/drinks/mixed_drinks.dmi differ