From 062f8c46ae96b40a8abc3981caaf22a6f01da9fa Mon Sep 17 00:00:00 2001 From: FenodyreeAv Date: Sat, 13 Jun 2026 21:53:48 +0100 Subject: [PATCH] Adds stiring glasses with spoons for moodlets (#22585) Shaking coffee in the shaker was silly. Now you can stir your coffee to make people happy. image --------- Signed-off-by: FenodyreeAv Co-authored-by: Matt Atlas --- code/datums/skills/everyday/service.dm | 2 +- code/game/objects/items/weapons/material/kitchen.dm | 4 ++++ .../reagents/reagent_containers/food/drinks.dm | 12 ++++++++++++ .../reagent_containers/food/drinks/drinkingglass.dm | 12 ++++++++++++ html/changelogs/Fenodyree-SpoonStir.yml | 7 +++++++ 5 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 html/changelogs/Fenodyree-SpoonStir.yml diff --git a/code/datums/skills/everyday/service.dm b/code/datums/skills/everyday/service.dm index d67d27518c4..ffde208532d 100644 --- a/code/datums/skills/everyday/service.dm +++ b/code/datums/skills/everyday/service.dm @@ -1,6 +1,6 @@ /singleton/skill/bartending name = "Bartending" - description = "Users of this skill can create mixed drinks of varying quality, which provide a long lasting morale bonus to anyone who consumes them. This skill is activated by first mixing a drink in a Drink Mixer, then pressing Z to shake it." + description = "Users of this skill can create mixed drinks of varying quality, which provide a long lasting morale bonus to anyone who consumes them. This skill is activated by first mixing a drink in a Drink Mixer, then pressing Z to shake it. Alternatively, drinks can be stirred with a spoon by clicking on a completed drink." maximum_level = SKILL_LEVEL_PROFESSIONAL category = /singleton/skill_category/everyday subcategory = SKILL_SUBCATEGORY_SERVICE diff --git a/code/game/objects/items/weapons/material/kitchen.dm b/code/game/objects/items/weapons/material/kitchen.dm index cf336d20fe8..d78f4d12138 100644 --- a/code/game/objects/items/weapons/material/kitchen.dm +++ b/code/game/objects/items/weapons/material/kitchen.dm @@ -153,6 +153,10 @@ attack_verb = list("attacked", "poked") force_divisor = 0.1 //2 when wielded with weight 20 (steel) +/obj/item/material/kitchen/utensil/spoon/mechanics_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Characters with high bartending skill can click on a drink with a spoon to stir it, improving the quality of the drink and the morale boost it provides." + /obj/item/material/kitchen/utensil/spoon/bamboo icon_state = "plastic_spoon" default_material = MATERIAL_BAMBOO diff --git a/code/modules/reagents/reagent_containers/food/drinks.dm b/code/modules/reagents/reagent_containers/food/drinks.dm index e44148b153c..b1377e94659 100644 --- a/code/modules/reagents/reagent_containers/food/drinks.dm +++ b/code/modules/reagents/reagent_containers/food/drinks.dm @@ -335,6 +335,10 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e . += "Order: [details["Order"]]" . += "For: [details["Customer"]]" +/obj/item/reagent_containers/food/drinks/takeaway_cup_idris/mechanics_hints(mob/user, distance, is_adjacent) + . += ..() + . += "Characters with high bartending skill can click on a drink with a spoon to stir it, improving the quality of the drink and the morale boost it provides." + /obj/item/reagent_containers/food/drinks/takeaway_cup_idris/attackby(obj/item/attacking_item, mob/user) if(attacking_item.tool_behaviour == TOOL_PEN && !use_check_and_message(user)) var/choice = tgui_input_list(user, "Which detail do you want to edit?", "Detail Editor", list("Customer", "Order")) @@ -344,6 +348,14 @@ If you add a drink with an empty icon sprite, ensure it is in the same folder, e if("Order") details["Order"] = tgui_input_text(user, "What is the ordered drink?", "Enter Ordered Drink") return + if(istype(attacking_item, /obj/item/material/kitchen/utensil/spoon)) + var/datum/component/skill/bartending/bar_skill = user.GetComponent(BARTENDING_SKILL_COMPONENT) + if (bar_skill) + var/drink_moodlet_value = 5 * bar_skill.skill_level + var/drink_quality = rand(1, 20) + 3 * bar_skill.skill_level + if (!isnull(drink_moodlet_value)) + src.visible_message(SPAN_NOTICE("[user] stirs \the [src] with \the [attacking_item].")) + src.LoadComponent(/datum/component/drink_moodlet_provider, drink_moodlet_value, FALSE, drink_quality) return ..() //////////////////////////drinkingglass and shaker// diff --git a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm index f2d86e472da..40039d58d43 100644 --- a/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm +++ b/code/modules/reagents/reagent_containers/food/drinks/drinkingglass.dm @@ -17,6 +17,7 @@ /obj/item/reagent_containers/food/drinks/drinkingglass/mechanics_hints(mob/user, distance, is_adjacent) . += ..() . += "To toast with someone, aim for the right or left hand and click them on help intent with the glass in hand. They must be holding a glass in the targeted hand." + . += "Characters with high bartending skill can click on a drink with a spoon to stir it, improving the quality of the drink and the morale boost it provides." /obj/item/reagent_containers/food/drinks/drinkingglass/on_reagent_change() var/singleton/reagent/R = reagents.get_primary_reagent_decl() @@ -32,6 +33,17 @@ desc = "Your standard drinking glass." center_of_mass = list("x"=16, "y"=10) +/obj/item/reagent_containers/food/drinks/drinkingglass/attackby(obj/item/attacking_item, mob/user) + if(istype(attacking_item, /obj/item/material/kitchen/utensil/spoon)) + var/datum/component/skill/bartending/bar_skill = user.GetComponent(BARTENDING_SKILL_COMPONENT) + if (bar_skill) + var/drink_moodlet_value = 5 * bar_skill.skill_level + var/drink_quality = rand(1, 20) + 3 * bar_skill.skill_level + if (!isnull(drink_moodlet_value)) + src.visible_message(SPAN_NOTICE("[user] stirs \the [src] with \the [attacking_item].")) + src.LoadComponent(/datum/component/drink_moodlet_provider, drink_moodlet_value, FALSE, drink_quality) + return ..() + /obj/item/reagent_containers/food/drinks/drinkingglass/afterattack(var/atom/target, var/mob/user, var/proximity, var/params) if(ishuman(target) && user.a_intent == I_HELP && (user.zone_sel.selecting == BP_L_HAND || user.zone_sel.selecting == BP_R_HAND)) if(!user.Adjacent(target)) diff --git a/html/changelogs/Fenodyree-SpoonStir.yml b/html/changelogs/Fenodyree-SpoonStir.yml new file mode 100644 index 00000000000..de047d08dfa --- /dev/null +++ b/html/changelogs/Fenodyree-SpoonStir.yml @@ -0,0 +1,7 @@ + +author: Fenodyree + +delete-after: True + +changes: + - rscadd: "Added the ability to stir drinks. This is an alternative to using the shaker for skilled bartenders to add moodlets."