From 9ebdbe1b3d928bf071d856c3d80a6ed20d6daf33 Mon Sep 17 00:00:00 2001 From: ShizCalev Date: Sun, 6 Nov 2022 05:24:27 -0500 Subject: [PATCH] randomizes the pixel offset of stuff when it comes out of a microwave (#71091) Randomizes the pixel offset of stuff when it comes out of the microwave --- code/datums/elements/food/microwavable.dm | 8 +++++++- code/game/objects/items.dm | 4 ++-- code/game/objects/items/dice.dm | 2 +- code/modules/clothing/head/tinfoilhat.dm | 2 +- code/modules/food_and_drinks/machinery/microwave.dm | 7 ++++++- code/modules/reagents/reagent_containers.dm | 2 +- 6 files changed, 18 insertions(+), 7 deletions(-) diff --git a/code/datums/elements/food/microwavable.dm b/code/datums/elements/food/microwavable.dm index d5868006fb3..aa5ba1e5439 100644 --- a/code/datums/elements/food/microwavable.dm +++ b/code/datums/elements/food/microwavable.dm @@ -27,7 +27,7 @@ * Signal proc for [COMSIG_ITEM_MICROWAVE_ACT]. * Handles the actual microwaving part. */ -/datum/element/microwavable/proc/on_microwaved(atom/source, obj/machinery/microwave/used_microwave, mob/microwaver) +/datum/element/microwavable/proc/on_microwaved(atom/source, obj/machinery/microwave/used_microwave, mob/microwaver, randomize_pixel_offset) SIGNAL_HANDLER var/atom/result @@ -57,6 +57,12 @@ if(istype(result, default_typepath)) recipe_result |= COMPONENT_MICROWAVE_BAD_RECIPE + if(randomize_pixel_offset && isitem(result)) + var/obj/item/result_item = result + if(!(result_item.item_flags & NO_PIXEL_RANDOM_DROP)) + result_item.pixel_x = result_item.base_pixel_x + rand(-6, 6) + result_item.pixel_y = result_item.base_pixel_y + rand(-5, 6) + return recipe_result /** diff --git a/code/game/objects/items.dm b/code/game/objects/items.dm index 36655167cdf..b50f2ace1d4 100644 --- a/code/game/objects/items.dm +++ b/code/game/objects/items.dm @@ -932,10 +932,10 @@ GLOBAL_DATUM_INIT(fire_overlay, /mutable_appearance, mutable_appearance('icons/e MO.desc = "Looks like this was \an [src] some time ago." ..() -/obj/item/proc/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver) +/obj/item/proc/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) SHOULD_CALL_PARENT(TRUE) - return SEND_SIGNAL(src, COMSIG_ITEM_MICROWAVE_ACT, microwave_source, microwaver) + return SEND_SIGNAL(src, COMSIG_ITEM_MICROWAVE_ACT, microwave_source, microwaver, randomize_pixel_offset) /obj/item/proc/grind_requirements(obj/machinery/reagentgrinder/R) //Used to check for extra requirements for grinding an object diff --git a/code/game/objects/items/dice.dm b/code/game/objects/items/dice.dm index 62915dfc600..c5127bab0ec 100644 --- a/code/game/objects/items/dice.dm +++ b/code/game/objects/items/dice.dm @@ -242,7 +242,7 @@ . = ..() . += "[icon_state]-[result]" -/obj/item/dice/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver) +/obj/item/dice/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) if(microwave_riggable) rigged = DICE_BASICALLY_RIGGED rigged_value = result diff --git a/code/modules/clothing/head/tinfoilhat.dm b/code/modules/clothing/head/tinfoilhat.dm index b651c6885e1..f74b279e178 100644 --- a/code/modules/clothing/head/tinfoilhat.dm +++ b/code/modules/clothing/head/tinfoilhat.dm @@ -77,7 +77,7 @@ return return ..() -/obj/item/clothing/head/costume/foilhat/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver) +/obj/item/clothing/head/costume/foilhat/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) . = ..() if(warped) return diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index eb81bc81599..b1a3468ecce 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -64,6 +64,11 @@ /obj/machinery/microwave/Exited(atom/movable/gone, direction) if(gone in ingredients) ingredients -= gone + if(!QDELING(gone) && ingredients.len && isitem(gone)) + var/obj/item/itemized_ingredient = gone + if(!(itemized_ingredient.item_flags & NO_PIXEL_RANDOM_DROP)) + itemized_ingredient.pixel_x = itemized_ingredient.base_pixel_x + rand(-6, 6) + itemized_ingredient.pixel_y = itemized_ingredient.base_pixel_y + rand(-5, 6) return ..() @@ -451,7 +456,7 @@ var/metal_amount = 0 for(var/obj/item/cooked_item in ingredients) - var/sigreturn = cooked_item.microwave_act(src, cooker) + var/sigreturn = cooked_item.microwave_act(src, cooker, randomize_pixel_offset = ingredients.len) if(sigreturn & COMPONENT_MICROWAVE_SUCCESS) if(isstack(cooked_item)) var/obj/item/stack/cooked_stack = cooked_item diff --git a/code/modules/reagents/reagent_containers.dm b/code/modules/reagents/reagent_containers.dm index 7b6711c1c71..8defb579f0a 100644 --- a/code/modules/reagents/reagent_containers.dm +++ b/code/modules/reagents/reagent_containers.dm @@ -206,7 +206,7 @@ reagents.clear_reagents() -/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver) +/obj/item/reagent_containers/microwave_act(obj/machinery/microwave/microwave_source, mob/microwaver, randomize_pixel_offset) reagents.expose_temperature(1000) return ..() | COMPONENT_MICROWAVE_SUCCESS