diff --git a/code/game/objects/effects/misc.dm b/code/game/objects/effects/misc.dm index 5a23ff32b09..2b8abcb1728 100644 --- a/code/game/objects/effects/misc.dm +++ b/code/game/objects/effects/misc.dm @@ -38,6 +38,11 @@ moveToNullspace() return QDEL_HINT_QUEUE +/obj/effect/spawner/forceMove(atom/destination) + if(destination && QDELETED(src)) // throw a warning if we try to forceMove a qdeleted spawner to somewhere other than nullspace + stack_trace("Warning: something tried to forceMove() a qdeleted [src]([type]) to non-null destination [destination]([destination.type])!") + return ..() + /obj/effect/list_container name = "list container" diff --git a/code/modules/fishing/sources/_fish_source.dm b/code/modules/fishing/sources/_fish_source.dm index 5061d84a018..120348038f1 100644 --- a/code/modules/fishing/sources/_fish_source.dm +++ b/code/modules/fishing/sources/_fish_source.dm @@ -170,10 +170,13 @@ GLOBAL_LIST_INIT(specific_fish_icons, zebra_typecacheof(list( var/atom/movable/reward = spawn_reward(reward_path, fisherman, fishing_spot) if(!reward) //balloon alert instead - fisherman.balloon_alert(fisherman,pick(duds)) + fisherman.balloon_alert(fisherman, pick(duds)) return if(isitem(reward)) //Try to put it in hand INVOKE_ASYNC(fisherman, TYPE_PROC_REF(/mob, put_in_hands), reward) + else if(istype(reward, /obj/effect/spawner)) // Do not attempt to forceMove() a spawner. It will break things, and the spawned item should already be at the mob's turf by now. + fisherman.balloon_alert(fisherman, "caught something!") + return else // for fishing things like corpses, move them to the turf of the fisherman INVOKE_ASYNC(reward, TYPE_PROC_REF(/atom/movable, forceMove), get_turf(fisherman)) fisherman.balloon_alert(fisherman, "caught [reward]!")