diff --git a/code/datums/elements/openspace_item_click_handler.dm b/code/datums/elements/openspace_item_click_handler.dm index f0449892ceb..43c7a60d1ef 100644 --- a/code/datums/elements/openspace_item_click_handler.dm +++ b/code/datums/elements/openspace_item_click_handler.dm @@ -19,7 +19,11 @@ SIGNAL_HANDLER if(target.z == user.z) return - var/turf/turf_above = get_step_multiz(target, UP) - if(turf_above?.z == user.z) - INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item, handle_openspace_click), turf_above, user, user.CanReach(turf_above, source), click_parameters) + var/turf/checked_turf = get_turf(target) + while(!isnull(checked_turf)) + checked_turf = checked_turf.above() + if(checked_turf?.z == user.z) + INVOKE_ASYNC(source, TYPE_PROC_REF(/obj/item, handle_openspace_click), checked_turf, user, user.CanReach(checked_turf, source), click_parameters) + break + return COMPONENT_AFTERATTACK_PROCESSED_ITEM diff --git a/code/game/objects/items/stacks/tiles/tile_types.dm b/code/game/objects/items/stacks/tiles/tile_types.dm index 51a44dc4913..e08b7064dfd 100644 --- a/code/game/objects/items/stacks/tiles/tile_types.dm +++ b/code/game/objects/items/stacks/tiles/tile_types.dm @@ -33,6 +33,7 @@ . = ..() pixel_x = rand(-3, 3) pixel_y = rand(-3, 3) //randomize a little + AddElement(/datum/element/openspace_item_click_handler) if(tile_reskin_types) tile_reskin_types = tile_reskin_list(tile_reskin_types) if(tile_rotate_dirs) @@ -100,6 +101,10 @@ playsound(target_plating, 'sound/weapons/genhit.ogg', 50, TRUE) return target_plating +/obj/item/stack/tile/handle_openspace_click(turf/target, mob/user, proximity_flag, click_parameters) + if(proximity_flag) + target.attackby(src, user, click_parameters) + //Grass /obj/item/stack/tile/grass name = "grass tile"