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.

<img width="1379" height="165" alt="image"
src="https://github.com/user-attachments/assets/9ad5e514-f66e-43d5-b4e9-b8a3122a7f21"
/>

---------

Signed-off-by: FenodyreeAv <fenodyree.av@gmail.com>
Co-authored-by: Matt Atlas <mattiathebest2000@hotmail.it>
This commit is contained in:
FenodyreeAv
2026-06-13 20:53:48 +00:00
committed by GitHub
co-authored by Matt Atlas
parent a78a6796b5
commit 062f8c46ae
5 changed files with 36 additions and 1 deletions
@@ -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//
@@ -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))