diff --git a/code/game/objects/effects/portals.dm b/code/game/objects/effects/portals.dm index a4020af9d0d..691ed994875 100644 --- a/code/game/objects/effects/portals.dm +++ b/code/game/objects/effects/portals.dm @@ -79,14 +79,20 @@ user.forceMove(get_turf(src)) return TRUE -/obj/effect/portal/proc/teleport(atom/movable/M, force = FALSE) +/obj/effect/portal/proc/can_teleport(atom/movable/M) + . = TRUE + if(!istype(M)) - return FALSE + . = FALSE if(!M.simulated || iseffect(M)) - return FALSE + . = FALSE if(M.anchored && ismecha(M)) + . = FALSE + +/obj/effect/portal/proc/teleport(atom/movable/M) + if(!can_teleport(M)) return FALSE if(!target) diff --git a/code/modules/events/wormholes.dm b/code/modules/events/wormholes.dm index c92ec910cdc..811eed6b9de 100644 --- a/code/modules/events/wormholes.dm +++ b/code/modules/events/wormholes.dm @@ -41,14 +41,14 @@ icon_state = "anom" failchance = 0 +/obj/effect/portal/wormhole/can_teleport(atom/movable/M) + . = ..() + + if(istype(M, /obj/singularity)) + . = FALSE + /obj/effect/portal/wormhole/teleport(atom/movable/M) - if(!istype(M)) - return FALSE - - if(!M.simulated || iseffect(M)) - return FALSE - - if(M.anchored && ismecha(M)) + if(!can_teleport(M)) return FALSE var/turf/target