diff --git a/code/datums/components/storage/storage.dm b/code/datums/components/storage/storage.dm index b3e6d63cb8..c0101140d6 100644 --- a/code/datums/components/storage/storage.dm +++ b/code/datums/components/storage/storage.dm @@ -369,10 +369,9 @@ //Tries to dump content /datum/component/storage/proc/dump_content_at(atom/dest_object, mob/M) var/atom/A = parent - var/atom/dump_destination = dest_object.get_dumping_location(dest_object) - if(M.CanReach(A) && dump_destination && M.CanReach(dump_destination)) + var/atom/dump_destination = dest_object.get_dumping_location() + if(A.Adjacent(M) && dump_destination && M.Adjacent(dump_destination)) if(check_locked(null, M, TRUE)) - to_chat(M, "[parent] seems to be locked!") return FALSE if(dump_destination.storage_contents_dump_act(src, M)) playsound(A, "rustle", 50, 1, -5) diff --git a/code/game/atoms.dm b/code/game/atoms.dm index fd10507d59..e7d9898dd2 100644 --- a/code/game/atoms.dm +++ b/code/game/atoms.dm @@ -911,8 +911,7 @@ user.active_storage.ui_show(user) return TRUE -///Get the best place to dump the items contained in the source storage item? -/atom/proc/get_dumping_location() +/atom/proc/get_dumping_location(obj/item/storage/source,mob/user) return null //This proc is called on the location of an atom when the atom is Destroy()'d diff --git a/code/game/machinery/doors/door.dm b/code/game/machinery/doors/door.dm index 9dd54e043f..ef47a0e7f6 100644 --- a/code/game/machinery/doors/door.dm +++ b/code/game/machinery/doors/door.dm @@ -381,7 +381,7 @@ /obj/machinery/door/morgue icon = 'icons/obj/doors/doormorgue.dmi' -/obj/machinery/door/get_dumping_location() +/obj/machinery/door/get_dumping_location(obj/item/storage/source,mob/user) return null /obj/machinery/door/proc/lock() diff --git a/code/game/objects/items/storage/_storage.dm b/code/game/objects/items/storage/_storage.dm index c7aa36a350..cbaa1775eb 100644 --- a/code/game/objects/items/storage/_storage.dm +++ b/code/game/objects/items/storage/_storage.dm @@ -5,6 +5,9 @@ w_class = WEIGHT_CLASS_NORMAL var/component_type = /datum/component/storage/concrete +/obj/item/storage/get_dumping_location(obj/item/storage/source,mob/user) + return src + /obj/item/storage/Initialize(mapload) . = ..() PopulateContents() diff --git a/code/game/objects/objs.dm b/code/game/objects/objs.dm index 7ed99f895b..4ea25bec96 100644 --- a/code/game/objects/objs.dm +++ b/code/game/objects/objs.dm @@ -237,7 +237,7 @@ if(!anchored || current_size >= STAGE_FIVE) step_towards(src,S) -/obj/get_dumping_location() +/obj/get_dumping_location(datum/component/storage/source,mob/user) return get_turf(src) /** diff --git a/code/game/objects/structures/false_walls.dm b/code/game/objects/structures/false_walls.dm index 67d17eecfd..bf06f06e6f 100644 --- a/code/game/objects/structures/false_walls.dm +++ b/code/game/objects/structures/false_walls.dm @@ -133,7 +133,7 @@ new mineral(loc) qdel(src) -/obj/structure/falsewall/get_dumping_location() +/obj/structure/falsewall/get_dumping_location(obj/item/storage/source,mob/user) return null /obj/structure/falsewall/examine_status(mob/user) //So you can't detect falsewalls by examine. diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 129744ab1c..998285dd58 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -273,7 +273,7 @@ C.add_delayedload(C.newavail() * 0.0375) // you can gain up to 3.5 via the 4x upgrades power is halved by the pole so thats 2x then 1X then .5X for 3.5x the 3 bounces shock. return ..() -/obj/structure/grille/get_dumping_location() +/obj/structure/grille/get_dumping_location(datum/component/storage/source,mob/user) return null /obj/structure/grille/broken // Pre-broken grilles for map placement diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index 625d36f5c2..cf5e34fd8b 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -567,7 +567,7 @@ GLOBAL_LIST_EMPTY(electrochromatic_window_lookup) take_damage(round(exposed_volume / 100), BURN, 0, 0) ..() -/obj/structure/window/get_dumping_location() +/obj/structure/window/get_dumping_location(obj/item/storage/source,mob/user) return null /obj/structure/window/CanAStarPass(obj/item/card/id/ID, to_dir, atom/movable/caller) diff --git a/code/game/turfs/simulated/walls.dm b/code/game/turfs/simulated/walls.dm index deda368e66..cac03b0637 100644 --- a/code/game/turfs/simulated/walls.dm +++ b/code/game/turfs/simulated/walls.dm @@ -278,7 +278,7 @@ if(.) ChangeTurf(/turf/closed/wall/clockwork) -/turf/closed/wall/get_dumping_location() +/turf/closed/wall/get_dumping_location(obj/item/storage/source, mob/user) return null /turf/closed/wall/acid_act(acidpwr, acid_volume)