mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-08-30 08:37:43 +01:00
Adds tongs (#78698)
## About The Pull Request . Adds tongs, as requested on the [Official TGStation13 Forums](https://tgstation13.org/phpBB/viewtopic.php?f=9&t=33026) Tongs can be used to pick up food from two tiles away, and feed it to people who are two tiles away. You can also use them while in your hand to snap them together like a crab, or use them to harmlessly pinch people who are up to two tiles away. Tongs are available from the kitchen's dinnerware vendor, the autolathe, and the service lathe. ## Why It's Good For The Game You can feed people from across a counter, without touching the food and spreading your germs to them. ## Changelog 🆑 Coded by Jacquerel, Sprited by Dalmationer add: Added tongs to the kitchen, which you can use to manipulate food from further away /🆑
This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
/// Tongs, let you pick up and feed people food from further away.
|
||||
/obj/item/kitchen/tongs
|
||||
name = "tongs"
|
||||
desc = "So you never have to touch anything with your dirty, unwashed hands."
|
||||
reach = 2
|
||||
icon_state = "tongs"
|
||||
base_icon_state = "tongs"
|
||||
inhand_icon_state = "fork" // close enough
|
||||
attack_verb_continuous = list("pinches", "tongs", "nips")
|
||||
attack_verb_simple = list("pinch", "tong", "nip")
|
||||
/// What are we holding in our tongs?
|
||||
var/obj/item/tonged
|
||||
/// Sound to play when we click our tongs together
|
||||
var/clack_sound = 'sound/items/handling/component_drop.ogg'
|
||||
/// Time to wait between clacking sounds
|
||||
var/clack_delay = 2 SECONDS
|
||||
/// Have we clacked recently?
|
||||
COOLDOWN_DECLARE(clack_cooldown)
|
||||
|
||||
/obj/item/kitchen/tongs/Destroy(force)
|
||||
QDEL_NULL(tonged)
|
||||
return ..()
|
||||
|
||||
/obj/item/kitchen/tongs/examine(mob/user)
|
||||
. = ..()
|
||||
if (!isnull(tonged))
|
||||
. += span_notice("It is holding [tonged].")
|
||||
|
||||
/obj/item/kitchen/tongs/dropped(mob/user, silent)
|
||||
. = ..()
|
||||
drop_tonged()
|
||||
|
||||
/obj/item/kitchen/tongs/attack_self(mob/user, modifiers)
|
||||
. = ..()
|
||||
if(.)
|
||||
return TRUE
|
||||
if (!isnull(tonged))
|
||||
drop_tonged()
|
||||
return TRUE
|
||||
if (!COOLDOWN_FINISHED(src, clack_cooldown))
|
||||
return TRUE
|
||||
user.visible_message(span_notice("[user] clacks [user.p_their()] [src] together like a crab. Click clack!"))
|
||||
click_clack()
|
||||
return TRUE
|
||||
|
||||
/// Release the food we are holding
|
||||
/obj/item/kitchen/tongs/proc/drop_tonged()
|
||||
if (isnull(tonged))
|
||||
return
|
||||
visible_message(span_notice("[tonged] falls to the ground!"))
|
||||
var/turf/location = drop_location()
|
||||
tonged.forceMove(location)
|
||||
tonged.do_drop_animation(location)
|
||||
|
||||
/// Play a clacking sound and appear closed, then open again
|
||||
/obj/item/kitchen/tongs/proc/click_clack()
|
||||
COOLDOWN_START(src, clack_cooldown, clack_delay)
|
||||
playsound(src, clack_sound, vol = 100, vary = FALSE)
|
||||
icon_state = "[base_icon_state]_closed"
|
||||
var/delay = min(0.5 SECONDS, clack_delay / 2) // Just in case someone's been fucking with the cooldown
|
||||
addtimer(CALLBACK(src, PROC_REF(clack)), delay, TIMER_DELETE_ME)
|
||||
|
||||
/// Plays a clacking sound and appear open
|
||||
/obj/item/kitchen/tongs/proc/clack()
|
||||
playsound(src, clack_sound, vol = 100, vary = FALSE)
|
||||
icon_state = base_icon_state
|
||||
|
||||
/obj/item/kitchen/tongs/Exited(atom/movable/leaving, direction)
|
||||
. = ..()
|
||||
if (leaving != tonged)
|
||||
return
|
||||
tonged = null
|
||||
update_appearance(UPDATE_ICON)
|
||||
|
||||
/obj/item/kitchen/tongs/pre_attack(obj/item/attacked, mob/living/user, params)
|
||||
if (!isnull(tonged))
|
||||
attacked.attackby(tonged, user)
|
||||
return TRUE
|
||||
if (isliving(attacked))
|
||||
if (COOLDOWN_FINISHED(src, clack_cooldown))
|
||||
click_clack()
|
||||
return ..()
|
||||
if (!IsEdible(attacked) || attacked.w_class > WEIGHT_CLASS_NORMAL || !isnull(tonged))
|
||||
return ..()
|
||||
tonged = attacked
|
||||
attacked.do_pickup_animation(src)
|
||||
attacked.forceMove(src)
|
||||
update_appearance(UPDATE_ICON)
|
||||
|
||||
/obj/item/kitchen/tongs/update_overlays()
|
||||
. = ..()
|
||||
if (isnull(tonged))
|
||||
return
|
||||
var/mutable_appearance/held_food = new /mutable_appearance(tonged.appearance)
|
||||
held_food.layer = layer
|
||||
held_food.plane = plane
|
||||
held_food.transform = held_food.transform.Scale(0.7, 0.7)
|
||||
held_food.pixel_x = 6
|
||||
held_food.pixel_y = 6
|
||||
. += held_food
|
||||
@@ -299,10 +299,12 @@
|
||||
ONLY 5000 BUX GET NOW! Contains a grill and fuel."
|
||||
cost = CARGO_CRATE_VALUE * 8
|
||||
crate_type = /obj/structure/closet/crate
|
||||
contains = list(/obj/item/stack/sheet/mineral/coal/five,
|
||||
/obj/machinery/grill/unwrenched,
|
||||
/obj/item/reagent_containers/cup/soda_cans/monkey_energy,
|
||||
)
|
||||
contains = list(
|
||||
/obj/item/stack/sheet/mineral/coal/five,
|
||||
/obj/item/kitchen/tongs,
|
||||
/obj/item/reagent_containers/cup/soda_cans/monkey_energy,
|
||||
/obj/machinery/grill/unwrenched,
|
||||
)
|
||||
crate_name = "grilling starter kit crate"
|
||||
|
||||
/datum/supply_pack/organic/grillfuel
|
||||
|
||||
@@ -33,13 +33,14 @@
|
||||
// Adds up to 100, don't mess it up
|
||||
mail_goodies = list(
|
||||
/obj/item/storage/box/ingredients/random = 40,
|
||||
/obj/item/reagent_containers/cup/bottle/caramel = 8,
|
||||
/obj/item/reagent_containers/condiment/flour = 8,
|
||||
/obj/item/reagent_containers/condiment/rice = 8,
|
||||
/obj/item/reagent_containers/condiment/ketchup = 8,
|
||||
/obj/item/reagent_containers/condiment/enzyme = 8,
|
||||
/obj/item/reagent_containers/condiment/soymilk = 8,
|
||||
/obj/item/reagent_containers/cup/bottle/caramel = 7,
|
||||
/obj/item/reagent_containers/condiment/flour = 7,
|
||||
/obj/item/reagent_containers/condiment/rice = 7,
|
||||
/obj/item/reagent_containers/condiment/ketchup = 7,
|
||||
/obj/item/reagent_containers/condiment/enzyme = 7,
|
||||
/obj/item/reagent_containers/condiment/soymilk = 7,
|
||||
/obj/item/kitchen/spoon/soup_ladle = 6,
|
||||
/obj/item/kitchen/tongs = 6,
|
||||
/obj/item/knife/kitchen = 4,
|
||||
/obj/item/knife/butcher = 2,
|
||||
)
|
||||
|
||||
@@ -142,6 +142,18 @@
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
/datum/design/tongs
|
||||
name = "Tongs"
|
||||
id = "tongs"
|
||||
build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE
|
||||
materials = list(/datum/material/iron = SMALL_MATERIAL_AMOUNT * 2)
|
||||
build_path = /obj/item/kitchen/tongs
|
||||
category = list(
|
||||
RND_CATEGORY_INITIAL,
|
||||
RND_CATEGORY_EQUIPMENT + RND_SUBCATEGORY_EQUIPMENT_KITCHEN,
|
||||
)
|
||||
departmental_flags = DEPARTMENT_BITFLAG_SERVICE
|
||||
|
||||
/datum/design/tray
|
||||
name = "Serving Tray"
|
||||
id = "servingtray"
|
||||
|
||||
@@ -115,6 +115,7 @@
|
||||
"titaniumglass",
|
||||
"toner_large",
|
||||
"toner",
|
||||
"tongs",
|
||||
"toy_armblade",
|
||||
"toy_balloon",
|
||||
"toygun",
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
/obj/item/kitchen/spoon/soup_ladle = 3,
|
||||
/obj/item/clothing/suit/apron/chef = 2,
|
||||
/obj/item/kitchen/rollingpin = 2,
|
||||
/obj/item/kitchen/tongs = 2,
|
||||
/obj/item/knife/kitchen = 2,
|
||||
),
|
||||
),
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 13 KiB After Width: | Height: | Size: 14 KiB |
@@ -2158,6 +2158,7 @@
|
||||
#include "code\game\objects\items\taster.dm"
|
||||
#include "code\game\objects\items\teleportation.dm"
|
||||
#include "code\game\objects\items\theft_tools.dm"
|
||||
#include "code\game\objects\items\tongs.dm"
|
||||
#include "code\game\objects\items\toy_mechs.dm"
|
||||
#include "code\game\objects\items\toys.dm"
|
||||
#include "code\game\objects\items\trash.dm"
|
||||
|
||||
Reference in New Issue
Block a user