diff --git a/code/modules/food_and_drinks/drinks/drinks.dm b/code/modules/food_and_drinks/drinks/drinks.dm index b5e91c53c1f..6949588863a 100644 --- a/code/modules/food_and_drinks/drinks/drinks.dm +++ b/code/modules/food_and_drinks/drinks/drinks.dm @@ -270,6 +270,44 @@ materials = list(MAT_METAL=1500) amount_per_transfer_from_this = 10 volume = 100 + var/shaking = FALSE + +/obj/item/reagent_containers/food/drinks/shaker/Initialize(mapload) + . = ..() + reagents.set_reacting(FALSE) + +/obj/item/reagent_containers/food/drinks/shaker/attack_self(mob/user) + if(!reagents.total_volume) + to_chat(user, "You won't shake an empty shaker now, will you?") + return + + if(shaking) + return + + shaking = TRUE + var/adjective = pick("furiously", "passionately", "with vigor", "with determination", "like a devil", "with care and love", "like there is no tomorrow") + user.visible_message("\The [user] shakes \the [src] [adjective]!", "You shake \the [src] [adjective]!") + icon_state = "shaker-shake" + if(iscarbon(loc)) + var/mob/living/carbon/M = loc + M.update_inv_r_hand() + M.update_inv_l_hand() + playsound(user, 'sound/items/boston_shaker.ogg', 80, 1) + if(do_after(user, 3 SECONDS, target = src)) + reagents.set_reacting(TRUE) + reagents.handle_reactions() + icon_state = "shaker" + if(iscarbon(loc)) + var/mob/living/carbon/M = loc + M.update_inv_r_hand() + M.update_inv_l_hand() + + shaking = FALSE + reagents.set_reacting(FALSE) + +/obj/item/reagent_containers/food/drinks/shaker/dropped(mob/user) + . = ..() + icon_state = "shaker" /obj/item/reagent_containers/food/drinks/flask name = "flask" diff --git a/icons/mob/inhands/items_lefthand.dmi b/icons/mob/inhands/items_lefthand.dmi index 8753580dee6..196b266990c 100644 Binary files a/icons/mob/inhands/items_lefthand.dmi and b/icons/mob/inhands/items_lefthand.dmi differ diff --git a/icons/mob/inhands/items_righthand.dmi b/icons/mob/inhands/items_righthand.dmi index 4b3b7556bd7..372a5dbfd18 100644 Binary files a/icons/mob/inhands/items_righthand.dmi and b/icons/mob/inhands/items_righthand.dmi differ diff --git a/icons/obj/drinks.dmi b/icons/obj/drinks.dmi index 02b2cff8a8d..f079c4eaf15 100644 Binary files a/icons/obj/drinks.dmi and b/icons/obj/drinks.dmi differ diff --git a/sound/items/boston_shaker.ogg b/sound/items/boston_shaker.ogg new file mode 100644 index 00000000000..04d4624810b Binary files /dev/null and b/sound/items/boston_shaker.ogg differ