From d514b1a9fe6c8d1820ef67fbf9aae681df768840 Mon Sep 17 00:00:00 2001 From: possiblepossibility <200366925+possiblepossibility@users.noreply.github.com> Date: Thu, 6 Mar 2025 21:27:52 +0100 Subject: [PATCH] slice a pizza into slices without it turning into a pile of slices (#89621) ## About The Pull Request https://github.com/user-attachments/assets/3a620eba-b9c7-464e-a4e4-6c98c1506b2f use a cutting tool on a pizza or a pizza in a pizza box to do this afterwards the pizza can only be picked up like a paper bin - click drag to self slice again to turn into pile of slices works on plates pizza boxes that start with pizza arrive pre-sliced also makes it use item_interaction ## Why It's Good For The Game it makes more sense ## Changelog :cl: add: you may now take out individual slices of pizza /:cl: --- code/game/objects/items/food/pizza.dm | 101 +++++++++++++++++++++-- code/modules/food_and_drinks/pizzabox.dm | 91 ++++++++++++-------- icons/obj/food/pizza.dmi | Bin 6353 -> 14388 bytes 3 files changed, 149 insertions(+), 43 deletions(-) diff --git a/code/game/objects/items/food/pizza.dm b/code/game/objects/items/food/pizza.dm index bdaab0a7285..b3de33e9ecd 100644 --- a/code/game/objects/items/food/pizza.dm +++ b/code/game/objects/items/food/pizza.dm @@ -16,11 +16,102 @@ venue_value = FOOD_PRICE_CHEAP crafting_complexity = FOOD_COMPLEXITY_2 /// type is spawned 6 at a time and replaces this pizza when processed by cutting tool - var/obj/item/food/pizzaslice/slice_type - slice_type = /obj/item/food/pizzaslice + var/obj/item/food/pizzaslice/slice_type = /obj/item/food/pizzaslice ///What label pizza boxes use if this pizza spawns in them. var/boxtag = "" + /// how many slices left + var/slices_left = 6 + /// have we been sliced? like sliced and you can take it apart by hand + var/sliced = FALSE + /// cutting tools + var/list/cutting_tools = list(TOOL_KNIFE, TOOL_SAW, TOOL_SCALPEL) +/obj/item/food/pizza/Initialize(mapload) + . = ..() + AddElement(/datum/element/drag_pickup) + register_context() + +/obj/item/food/pizza/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + + if(istype(held_item) && (held_item.tool_behaviour in cutting_tools)) + context[SCREENTIP_CONTEXT_LMB] = "Slice" + context[SCREENTIP_CONTEXT_RMB] = "Slice apart" + return TRUE + + if(sliced) + context[SCREENTIP_CONTEXT_LMB] = "Take Slice" + return TRUE + +/obj/item/food/pizza/examine(mob/user) + . = ..() + if(isnull(slice_type) || !sliced) + return + . += span_notice("You can slice this to make it possible to take out slices with an empty hand!") + +/obj/item/food/pizza/item_interaction(mob/living/user, obj/item/tool, list/modifiers) + . = NONE + if(isnull(slice_type) || !(tool.tool_behaviour in cutting_tools)) + return + if(!sliced) + slice(user, tool) + return ITEM_INTERACT_SUCCESS + user.visible_message(span_notice("[user] seperates [src] into individual slices with [tool].")) + cut_apart() + return ITEM_INTERACT_SUCCESS + +/obj/item/food/pizza/item_interaction_secondary(mob/living/user, obj/item/tool, list/modifiers) + . = NONE + if(isnull(slice_type) || !(tool.tool_behaviour in cutting_tools)) + return + visible_message(span_notice("[user] seperates [src] into individual slices with [tool].")) + cut_apart() + return ITEM_INTERACT_SUCCESS + +/obj/item/food/pizza/attack_hand(mob/user, list/modifiers) + . = ..() + if(!sliced) + return + user.visible_message(span_notice("You take a slice of [src]."), span_notice("[user] takes a slice of [src].")) + produce_slice(user) + +/obj/item/food/pizza/proc/get_slices_filter() //to not repeat code + return alpha_mask_filter(icon = icon('icons/obj/food/pizza.dmi', "[slices_left]slices")) + +/// slices this pizza. all arguments optional. +/obj/item/food/pizza/proc/slice(mob/user, obj/item/tool) + if(sliced) + return + tool?.play_tool_sound(src) + sliced = TRUE + user?.visible_message(span_notice("[user] cuts [src] into 6 slices with [tool].")) + interaction_flags_item &= ~INTERACT_ITEM_ATTACK_HAND_PICKUP + +/obj/item/food/pizza/proc/cut_apart() + for(var/_ in 1 to slices_left) + produce_slice(no_update = TRUE) + +/// make a slice and give it to user. no_update means no filter work is done. user is optional +/obj/item/food/pizza/proc/produce_slice(mob/user, no_update = FALSE) + var/turf/our_turf = get_turf(src) + var/obj/item/food/pizzaslice/slice = new slice_type(our_turf) + if(HAS_TRAIT(src, TRAIT_FOOD_SILVER)) + ADD_TRAIT(slice, TRAIT_FOOD_SILVER, INNATE_TRAIT) + if(HAS_TRAIT(src, TRAIT_FOOD_CHEF_MADE)) + ADD_TRAIT(slice, TRAIT_FOOD_CHEF_MADE, GET_TRAIT_SOURCES(src, TRAIT_FOOD_CHEF_MADE)[1]) // wack thing to inherit first source + slice.pixel_x += rand(-6, 6) + slice.pixel_y += rand(-6, 6) + user?.put_in_active_hand(slice) + slices_left-- + if(slices_left <= 0) + qdel(src) + return + if(no_update) + return + remove_filter("pizzaslices") + add_filter("pizzaslices", 1, get_slices_filter()) + +// Raw Pizza /obj/item/food/pizza/raw foodtypes = GRAIN | RAW slice_type = null @@ -29,12 +120,6 @@ /obj/item/food/pizza/raw/make_bakeable() AddComponent(/datum/component/bakeable, /obj/item/food/pizza, rand(70 SECONDS, 80 SECONDS), TRUE, TRUE) -/obj/item/food/pizza/make_processable() - if (slice_type) - AddElement(/datum/element/processable, TOOL_KNIFE, slice_type, 6, 3 SECONDS, table_required = TRUE, screentip_verb = "Slice") - AddElement(/datum/element/processable, TOOL_SAW, slice_type, 6, 4.5 SECONDS, table_required = TRUE, screentip_verb = "Slice") - AddElement(/datum/element/processable, TOOL_SCALPEL, slice_type, 6, 6 SECONDS, table_required = TRUE, screentip_verb = "Slice") - // Pizza Slice /obj/item/food/pizzaslice name = "pizza slice" diff --git a/code/modules/food_and_drinks/pizzabox.dm b/code/modules/food_and_drinks/pizzabox.dm index c451c1f2746..5a138c4c69d 100644 --- a/code/modules/food_and_drinks/pizzabox.dm +++ b/code/modules/food_and_drinks/pizzabox.dm @@ -40,7 +40,8 @@ /obj/item/pizzabox/Initialize(mapload) . = ..() if(pizza) - pizza = new pizza + pizza = new pizza(src) + pizza.slice() update_appearance() register_context() @@ -69,7 +70,7 @@ boxtag_set = TRUE if(open) if(pizza) - desc = "[desc] It appears to have \a [pizza] inside. Use your other hand to take it out." + desc = "[desc] It appears to have \a [pizza] inside[pizza.sliced ? ". It is sliced" : ""]. Use your other hand to take it out." if(bomb) desc = "[desc] Wait, what?! It has \a [bomb] inside!" if(bomb_defused) @@ -97,6 +98,8 @@ if(open) if(pizza) var/mutable_appearance/pizza_overlay = mutable_appearance(pizza.icon, pizza.icon_state) + if(pizza.slices_left != initial(pizza.slices_left)) + pizza_overlay.add_filter("pizzaslices", 1, pizza.get_slices_filter()) pizza_overlay.pixel_y = -2 . += pizza_overlay if(bomb) @@ -154,6 +157,10 @@ //ATTACK HAND IGNORING PARENT RETURN VALUE /obj/item/pizzabox/attack_hand(mob/user, list/modifiers) if(user.get_inactive_held_item() != src) + if(open && pizza?.sliced && !isobj(loc)) + pizza.produce_slice(user) + update_appearance() + return return ..() if(open) if(pizza) @@ -184,15 +191,16 @@ update_appearance() user.regenerate_icons() -/obj/item/pizzabox/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/pizzabox)) - var/obj/item/pizzabox/newbox = I +/obj/item/pizzabox/item_interaction(mob/living/user, obj/item/used_item, list/modifiers) + . = NONE + if(istype(used_item, /obj/item/pizzabox)) + var/obj/item/pizzabox/newbox = used_item if(!open && !newbox.open) var/list/add = list() add += newbox add += newbox.boxes if(!user.transferItemToLoc(newbox, src)) - return + return ITEM_INTERACT_FAILURE boxes += add newbox.boxes.Cut() newbox.update_appearance() @@ -204,47 +212,53 @@ disperse_pizzas() else balloon_alert(user, "looks unstable...") - return + return ITEM_INTERACT_SUCCESS else balloon_alert(user, "close it first!") - else if(istype(I, /obj/item/food/pizza)) + return ITEM_INTERACT_FAILURE + else if(istype(used_item, /obj/item/food/pizza)) if(open) if(pizza) balloon_alert(user, "it's full!") - return - if(!user.transferItemToLoc(I, src)) - return - pizza = I + return ITEM_INTERACT_FAILURE + if(!user.transferItemToLoc(used_item, src)) + return ITEM_INTERACT_FAILURE + pizza = used_item update_appearance() - return - else if(istype(I, /obj/item/bombcore/miniature/pizza)) + return ITEM_INTERACT_SUCCESS + else if(istype(used_item, /obj/item/bombcore/miniature/pizza)) if(open && !bomb) - if(!user.transferItemToLoc(I, src)) - return + if(!user.transferItemToLoc(used_item, src)) + return ITEM_INTERACT_FAILURE set_wires(new /datum/wires/explosive/pizza(src)) - register_bomb(I) + register_bomb(used_item) balloon_alert(user, "bomb placed") update_appearance() - return + return ITEM_INTERACT_SUCCESS else if(bomb) balloon_alert(user, "already rigged!") - else if(IS_WRITING_UTENSIL(I)) - if(!open) - if(!user.can_write(I)) - return - var/obj/item/pizzabox/box = length(boxes) ? boxes[length(boxes)] : src - box.boxtag += tgui_input_text(user, "Write on [box]'s tag:", box, max_length = 30) - if(!user.can_perform_action(src)) - return - balloon_alert(user, "writing box tag...") - playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) - boxtag_set = TRUE - update_appearance() - return - else if(is_wire_tool(I)) - if(wires && bomb) - wires.interact(user) - ..() + return ITEM_INTERACT_FAILURE + else if(IS_WRITING_UTENSIL(used_item)) + if(open) + return ITEM_INTERACT_FAILURE + if(!user.can_write(used_item)) + return ITEM_INTERACT_FAILURE + var/obj/item/pizzabox/box = length(boxes) ? boxes[length(boxes)] : src + box.boxtag += tgui_input_text(user, "Write on [box]'s tag:", box, max_length = 30) + if(!user.can_perform_action(src)) + return ITEM_INTERACT_FAILURE + balloon_alert(user, "writing box tag...") + playsound(src, SFX_WRITING_PEN, 50, TRUE, SHORT_RANGE_SOUND_EXTRARANGE, SOUND_FALLOFF_EXPONENT + 3, ignore_walls = FALSE) + boxtag_set = TRUE + update_appearance() + return ITEM_INTERACT_SUCCESS + else if(is_wire_tool(used_item) && wires && bomb) + wires.interact(user) + return ITEM_INTERACT_SUCCESS + else if(istype(used_item, /obj/item/knife) && !isnull(pizza) && open && !pizza.sliced) + pizza.slice(user, used_item) + return ITEM_INTERACT_SUCCESS + /obj/item/pizzabox/process(seconds_per_tick) if(bomb_active && !bomb_defused && (bomb_timer > 0)) @@ -298,6 +312,13 @@ var/mob/living/L = loc L.regenerate_icons() +/obj/item/pizzabox/Exited(atom/movable/gone, direction) + . = ..() + if(gone != pizza) + return + pizza = null + update_appearance() + /obj/item/pizzabox/proc/unprocess() STOP_PROCESSING(SSobj, src) qdel(wires) diff --git a/icons/obj/food/pizza.dmi b/icons/obj/food/pizza.dmi index e2b34862e269629fc23aa66a2b6e060403242ec2..200a19ccf173ac316be064eb0f14b96b1561bfaa 100644 GIT binary patch literal 14388 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 HTZjBF!m5)H literal 6353 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