From c7ac9f1037fc3e8621b423787bd7db78d9500747 Mon Sep 17 00:00:00 2001 From: Alan Date: Wed, 3 Dec 2025 13:31:30 -0500 Subject: [PATCH] Add soft drinks to bar secondary goals. (#31100) * Add soft drinks to bar secondary goals. * Thanks, linters! * Update bar manual to reflect that procurement will accept soft drinks. * Add drink difficulties to synthetic soft drinks. Amend bar manual. * Thanks, linters! --- code/game/objects/items/weapons/manuals.dm | 10 ++-- .../reagents/chemistry/reagents/drink_base.dm | 3 +- .../chemistry/reagents/drinks_reagents.dm | 46 ++++++++++++++++- .../secondary/bar/variety_drinks.dm | 51 ++++++++++++++++++- 4 files changed, 102 insertions(+), 8 deletions(-) diff --git a/code/game/objects/items/weapons/manuals.dm b/code/game/objects/items/weapons/manuals.dm index 492293b821e..6a3aaccfc7e 100644 --- a/code/game/objects/items/weapons/manuals.dm +++ b/code/game/objects/items/weapons/manuals.dm @@ -1026,7 +1026,7 @@

Trivial Soft Drinks

- With upgraded machines, you can dispense many of these straightaway—Or if you're not so lucky, you can mix them as follows. Procurement doesn't currently accept soft drinks, but if they did, they wouldn't like these. + With upgraded machines, you can dispense many of these straightaway—Or if you're not so lucky, you can mix them as follows. Procurement won't be happy if you send these!

Banana Honk:

Mix one part each of banana juice, cream, and sugar.

Cafe Latte:

@@ -1055,7 +1055,7 @@

Easy Soft Drinks

- You can make most of these drinks straight from your own dispensers. Procurement doesn't currently accept soft drinks, so this list is only for your reference. Drinks marked with § are for synthetic customers only. Drinks marked with † are enjoyable for synthetic and organic customers alike. + You can make most of these drinks straight from your own dispensers. Drinks marked with § are for synthetic customers only. Drinks marked with † are enjoyable for synthetic and organic customers alike.

Brown Star:

Mix two parts orange juice to one part cola.

Cog-a-Cola: §

@@ -1079,7 +1079,7 @@

Party Punch:

Mix two parts soda water to one part each of Triple Citrus (Trivial Soft Drinks), banana juice, berry juice, pineapple juice, watermelon juice, and grape juice.

Processor Punch: §

- Mix one part each of TCP Sip, Dr. Gibb, and iced tea. + Mix one part each of TCP Sip, Dr. Gibb, and Iced Tea (Trivial Soft Drinks).

Rewriter:

Mix one part space mountain wind soda to one part coffee.

Roy Rogers:

@@ -1112,7 +1112,7 @@

Intermediate Soft Drinks

- Most of these drinks require many steps or collaboration with other departments. Procurement doesn't currently accept soft drinks, so this list is only for your reference. Drinks marked with § are for synthetic customers only. + Most of these drinks require many steps or collaboration with other departments. Drinks marked with § are for synthetic customers only.

Arnold Palmer:

Mix one part Lemonade (Easy Soft Drinks) to one part Iced Tea (Trivial Soft Drinks).

Battery Acid: §

@@ -1159,7 +1159,7 @@

Hard Soft Drinks

- These drinks require a significant amount of cross-department collaboration, many steps, or rare ingredients. Procurement doesn't currently accept soft drinks, so this list is only for your reference. Drinks marked with § are for synthetic customers only. + These drinks require a significant amount of cross-department collaboration, many steps, or rare ingredients. Drinks marked with § are for synthetic customers only.

Beet Shrub:

Mix two parts beet juice to one part each of vinegar and corn syrup. Heat to 375K. Botany or the Kitchen can help.

Berry Beet Refresher:

diff --git a/code/modules/reagents/chemistry/reagents/drink_base.dm b/code/modules/reagents/chemistry/reagents/drink_base.dm index 49795cfa3c3..c49d1a12dc4 100644 --- a/code/modules/reagents/chemistry/reagents/drink_base.dm +++ b/code/modules/reagents/chemistry/reagents/drink_base.dm @@ -1,13 +1,14 @@ /datum/reagent/consumable/drink name = "Drink" id = "drink" - description = "Uh, some kind of drink." + description = ABSTRACT_TYPE_DESC reagent_state = LIQUID color = "#E78108" // rgb: 231, 129, 8 taste_description = "something which should not exist" var/adj_dizzy = 0 var/adj_drowsy = 0 var/adj_sleepy = 0 + goal_department = "Bar" /datum/reagent/consumable/drink/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE diff --git a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm index 684a924ae55..e341b0a93de 100644 --- a/code/modules/reagents/chemistry/reagents/drinks_reagents.dm +++ b/code/modules/reagents/chemistry/reagents/drinks_reagents.dm @@ -112,6 +112,7 @@ drink_name = "Doctor's Delight" drink_desc = "A healthy mixture of juices, guaranteed to keep you healthy until the next toolboxing takes place." taste_description = "healthy dietary choices" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/doctor_delight/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -295,6 +296,7 @@ drink_name = "Chocolate milk" drink_desc = "Smells like childhood. What would they need to add to make it taste like childhood too?" taste_description = "chocolate milk" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/hot_coco name = "Hot Chocolate" @@ -363,6 +365,7 @@ drink_name = "Soy Latte" drink_desc = "A nice and refrshing beverage while you are reading." taste_description = "milkish coffee" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/coffee/soy_latte/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -408,6 +411,7 @@ drink_name = "Pumpkin Latte" drink_desc = "A mix of coffee and pumpkin juice." taste_description = "overpriced hipster spices" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/tea name = "Tea" @@ -474,6 +478,7 @@ drink_name = "Silencer" drink_desc = "A drink from mime Heaven." taste_description = "mphhhh" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/silencer/on_mob_life(mob/living/carbon/human/M) var/update_flags = STATUS_UPDATE_NONE @@ -492,6 +497,7 @@ drink_name = "Chocolate Pudding" drink_desc = "A decadent chocolate dessert, in drinkable form." taste_description = "chocolate" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/vanillapudding name = "Vanilla Pudding" @@ -503,6 +509,7 @@ drink_name = "Vanilla Pudding" drink_desc = "A rich vanilla dessert, in drinkable form." taste_description = "vanilla" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/cherryshake name = "Cherry Shake" @@ -514,6 +521,7 @@ drink_name = "Cherry Shake" drink_desc = "A cherry flavored milkshake." taste_description = "cherry milkshake" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/bluecherryshake name = "Blue Cherry Shake" @@ -525,6 +533,7 @@ drink_name = "Blue Cherry Shake" drink_desc = "An exotic blue milkshake." taste_description = "blues" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/gibbfloats name = "Gibb Floats" @@ -536,6 +545,7 @@ drink_name = "Gibbfloat" drink_desc = "Dr. Gibb with ice cream on top." taste_description = "taste revolution" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/pumpkinjuice name = "Pumpkin Juice" @@ -573,6 +583,7 @@ drink_name = "Iced Cocoa" drink_desc = "A sweeter drink to perk you up and refresh you!" taste_description = "refreshingly cold cocoa" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/tonic name = "Tonic Water" @@ -636,6 +647,7 @@ drink_desc = "Don't cry, Don't raise your eye, It's only nuclear wasteland." harmless = FALSE taste_description = "radioactive cola" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/nuka_cola/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -699,6 +711,7 @@ drink_name = "Lemonade" drink_desc = "Oh the nostalgia..." taste_description = "lemonade" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/kiraspecial name = "Kira Special" @@ -709,6 +722,7 @@ drink_name = "Kira Special" drink_desc = "Long live the guy who everyone had mistaken for a girl. Baka!" taste_description = "citrus soda" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/brownstar name = "Brown Star" @@ -719,6 +733,7 @@ drink_name = "Brown Star" drink_desc = "Its not what it sounds like..." taste_description = "orange soda" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/milkshake name = "Milkshake" @@ -739,6 +754,7 @@ drink_name = "Rewriter" drink_desc = "The secret of the sanctuary of the Librarian..." taste_description = "coffee...soda?" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/rewriter/on_mob_life(mob/living/M) M.Jitter(10 SECONDS) @@ -753,6 +769,7 @@ drink_name = "Arnold Palmer" drink_desc = "A wholesome mixture of lemonade and iced tea... looks like somebody didn't stir this one very well." taste_description = "sweet and fizzy" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/fyrsskar_tears name = "Tears of Fyrsskar" @@ -765,6 +782,7 @@ taste_description = "plasma" var/alcohol_perc = 0.05 var/dizzy_adj = 6 SECONDS + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/fyrsskar_tears/on_mob_add(mob/living/M) if(isskrell(M)) @@ -806,6 +824,7 @@ drink_name = "Lean" drink_desc = "Also known as Purple Drank." taste_description = "sweet druggy soda" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/melonade name = "Melonade" @@ -816,6 +835,7 @@ drink_name = "Tall Glass of Melonade" drink_desc = "This would go great with 147 fluffity puffity marshalays." taste_description = "summer fruit" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/melonade/on_mob_life(mob/living/M) if(M.satiety < 600) @@ -841,6 +861,7 @@ drink_name = "Bubble Tea" drink_desc = "You feel trendy for drinking this." taste_description = "sweet tea with chewy pearls" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/milktea name = "Milk Tea" @@ -851,6 +872,7 @@ drink_name = "Milk Tea" drink_desc = "A refreshing and sweet beverage." taste_description = "sweet milky tea" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/bubblemilktea name = "Bubble Milk Tea" @@ -861,6 +883,7 @@ drink_name = "Bubble Milk Tea" drink_desc = "You feel extra trendy for drinking this." taste_description = "sweet milky tea with chewy pearls" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/royrogers name = "Roy Rogers" @@ -871,6 +894,7 @@ drink_name = "Roy Rogers" drink_desc = "The rootinest, tootinest drink you can get at the bar without any alcohol." taste_description = "berries and cola" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/shirleytemple name = "Shirley Temple" @@ -881,6 +905,7 @@ drink_name = "Shirley Temple" drink_desc = "A soft drink classic with a cherry on top." taste_description = "berries and carbonation" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/partypunch name = "Party Punch" @@ -891,6 +916,7 @@ drink_name = "Glass of Party Punch" drink_desc = "A vibrant mix of fruit juices. A real punch of flavor." taste_description = "a punch of fruit" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/coffee/eggcoffee name = "Egg Coffee" @@ -901,6 +927,7 @@ drink_name = "Glass Mug of Egg Coffee" drink_desc = "Rich coffee with custard foam." taste_description = "rich foam" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/coffee/eggcoffee/on_mob_life(mob/living/M) if(prob(3)) @@ -916,6 +943,7 @@ drink_name = "Glass of Horchata" drink_desc = "Sweetened rice milk topped with cinnamon." taste_description = "cinnamony rice milk" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/monstermix name = "Monster Mix" @@ -926,6 +954,7 @@ drink_name = "Glass of Monster Mix" drink_desc = "A mix of every soda in the dispenser. You monster." taste_description = "an unholy amalgam" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/spessamatosmash name = "Spessamato Smash" @@ -936,6 +965,7 @@ drink_name = "Glass of Spessamato Smash" drink_desc = "Fruity yet salty." taste_description = "sparkling tomato" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/eggcream name = "Egg Cream" @@ -946,6 +976,7 @@ drink_name = "Glass of Egg Cream" drink_desc = "You now have a glass of custard." taste_description = "sweet egg" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/eggcream/on_mob_life(mob/living/M) if(prob(2)) @@ -961,6 +992,7 @@ drink_name = "Glass of Beet Shrub" drink_desc = "The vinegar gives this far more bite than any ordinary person would drink straight." taste_description = "vinegar" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/berrybeetrefresher name = "Berry Beet Refresher" @@ -971,10 +1003,10 @@ drink_name = "Glass of Berry Beet Refresher" drink_desc = "Tangy, sweet, with just a bit of bite." taste_description = "tangy, bubbly fruit" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/smoothie name = "Empty Smoothie" - description = ABSTRACT_TYPE_DESC id = "smoothie" color = "#9933FF" nutriment_factor = 4 * REAGENTS_METABOLISM @@ -996,6 +1028,7 @@ drink_name = "Glass of PB Banana Smoothie" drink_desc = "So smooth and fluffy." taste_description = "nutty banana" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/smoothie/veryberry name = "Very Berry Smoothie" @@ -1006,6 +1039,7 @@ drink_name = "Glass of Very Berry Smoothie" drink_desc = "Berries give this creamy beverage its speckled appearance." taste_description = "berries and cream" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/vegetablemix name = "Vegetable Juice Mix" @@ -1016,6 +1050,7 @@ drink_name = "Glass of Vegetable Juice" drink_desc = "Mellow and creamy vegetable juice." taste_description = "so many vitamins" + goal_difficulty = REAGENT_GOAL_HARD /datum/reagent/consumable/drink/vegetablemix/on_mob_life(mob/living/M) var/update_flags = STATUS_UPDATE_NONE @@ -1072,6 +1107,7 @@ drink_name = "Glass of Top-Up" drink_desc = "A sports drink for the busy spessman." taste_description = "lemony lectrolytes" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/electrolytes/zero_day name = "Zero Day" @@ -1083,6 +1119,7 @@ drink_desc = "A data breach in a glass." taste_description = "half-emptiness" COOLDOWN_DECLARE(drip_cooldown) + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/electrolytes/zero_day/on_new(data) ..() @@ -1122,6 +1159,7 @@ drink_name = "Glass of TCP Sip" drink_desc = "A non-synthanolic refreshment for synthetics." taste_description = "half-emptiness" + goal_difficulty = REAGENT_GOAL_EASY /datum/reagent/consumable/drink/electrolytes/tcp_sip/on_mob_life(mob/living/M) metabolization_rate = REAGENTS_METABOLISM @@ -1162,6 +1200,7 @@ drink_name = "Glass of Electrocharge" drink_desc = "A real charge-up for synthetics." taste_description = "a full battery" + goal_difficulty = REAGENT_GOAL_HARD COOLDOWN_DECLARE(drink_message_cooldown) COOLDOWN_DECLARE(drink_overcharge_cooldown) @@ -1200,6 +1239,7 @@ drink_name = "Glass of Battery Acid" drink_desc = "So acidic, it forms an acid like its namesake on the rim of the glass." taste_description = "fried wires" + goal_difficulty = REAGENT_GOAL_NORMAL /datum/reagent/consumable/drink/electrolytes/tcp_sip/processor_punch name = "Processor Punch" @@ -1220,6 +1260,7 @@ drink_name = "Glass of Bubbly Beep" drink_desc = "The cleanest, bubbliest drink on the station." taste_description = "decontamination" + goal_difficulty = REAGENT_GOAL_NORMAL process_flags = SYNTHETIC | ORGANIC /datum/reagent/consumable/drink/bubbly_beep/on_mob_life(mob/living/M) @@ -1247,6 +1288,7 @@ drink_name = "Glass of Tin and Tonic" drink_desc = "A good sip for a synthetic curious about quinine." taste_description = "smoothly-running processors" + goal_difficulty = REAGENT_GOAL_NORMAL process_flags = SYNTHETIC | ORGANIC /datum/reagent/consumable/drink/tin_and_tonic/on_mob_life(mob/living/M) @@ -1267,6 +1309,7 @@ drink_name = "Glass of Salt and Battery" drink_desc = "Looks like it'll charge you up, but really it'll beat you down." taste_description = "assault to the batteries" + goal_difficulty = REAGENT_GOAL_HARD process_flags = SYNTHETIC | ORGANIC /datum/reagent/consumable/drink/salt_and_battery/on_mob_life(mob/living/M) @@ -1307,6 +1350,7 @@ drink_name = "Glass of Soft Reset" drink_desc = "Have you tried turning it off and back on again?" taste_description = "a little reboot" + goal_difficulty = REAGENT_GOAL_HARD process_flags = SYNTHETIC | ORGANIC COOLDOWN_DECLARE(reboot_cooldown) diff --git a/code/modules/station_goals/secondary/bar/variety_drinks.dm b/code/modules/station_goals/secondary/bar/variety_drinks.dm index 31582df2d4d..8ed98ca26ca 100644 --- a/code/modules/station_goals/secondary/bar/variety_drinks.dm +++ b/code/modules/station_goals/secondary/bar/variety_drinks.dm @@ -2,9 +2,58 @@ name = "Variety of Drinks" department = "Bar" generic_name_plural = "alcoholic drinks" + progress_type = /datum/secondary_goal_progress/variety_reagent/bar weight = 1 /datum/station_goal/secondary/variety_reagent/bar/randomize_params() ..() + generic_name_plural = pick("soft drinks", "alcoholic drinks") department_account = GLOB.station_money_database.get_account_by_department(DEPARTMENT_SERVICE) - report_message = "We're hosting a party, and need a variety of alcoholic drinks. Send us at least [amount_per] units each of [different_types] different ones. Keep them separate, and don't include anything too simple; we have our own booze dispenser." + report_message = "We're hosting a party, and need a variety of [generic_name_plural]. Send us at least [amount_per] units each of [different_types] different ones. Keep them separate, and don't include anything too simple; we have our own dispensers." + +/datum/secondary_goal_progress/variety_reagent/bar/update(atom/movable/AM, datum/economy/cargo_shuttle_manifest/manifest = null) + // Not properly labeled for this goal? Ignore. + if(!check_goal_label(AM)) + return + + // No reagents? Ignore. + if(!length(AM.reagents?.reagent_list)) + return + + var/datum/reagent/reagent = AM.reagents.get_master_reagent() + + // Make sure it's for our department. + if(!reagent || reagent.goal_department != department) + return + + // Isolated reagents only, please. + // This goes here because I want it checked before alcoholic drinks, to head off people adding alcohol to soft drinks. + if(length(AM.reagents.reagent_list) != 1) + return ..() + + // Make sure it's the right kind + if(istype(reagent, /datum/reagent/consumable/ethanol/) && generic_name_plural == "soft drinks") + if(!manifest) + return COMSIG_CARGO_SELL_WRONG + SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "wrong reagents type")) + var/datum/economy/line_item/item = new + item.account = department_account + item.credits = 0 + item.reason = "That [reagent.name] seems to be alcoholic. Send soft drinks only, please!" + item.requests_console_department = department + manifest.line_items += item + return COMSIG_CARGO_SELL_WRONG + + if(!istype(reagent, /datum/reagent/consumable/ethanol/) && generic_name_plural == "alcoholic drinks") + if(!manifest) + return COMSIG_CARGO_SELL_WRONG + SSblackbox.record_feedback("nested tally", "secondary goals", 1, list(goal_name, "wrong reagents type")) + var/datum/economy/line_item/item = new + item.account = department_account + item.credits = 0 + item.reason = "That [reagent.name] isn't any alcoholic drink I've heard of. Send hard drinks only, please!" + item.requests_console_department = department + manifest.line_items += item + return COMSIG_CARGO_SELL_WRONG + + return ..()