mirror of
https://github.com/SPLURT-Station/S.P.L.U.R.T-Station-13.git
synced 2025-12-10 18:02:57 +00:00
Hand teleporter and portal fixes. (#32689)
This commit is contained in:
committed by
CitadelStationBot
parent
4afc4f5b39
commit
eba429f5b1
@@ -66,10 +66,6 @@
|
|||||||
// And here are some good things for free:
|
// And here are some good things for free:
|
||||||
// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu
|
// Now you can click through portals, wormholes, gateways, and teleporters while observing. -Sayu
|
||||||
|
|
||||||
/obj/effect/portal/attack_ghost(mob/user)
|
|
||||||
if(linked)
|
|
||||||
user.forceMove(get_turf(linked))
|
|
||||||
|
|
||||||
/obj/machinery/gateway/centerstation/attack_ghost(mob/user)
|
/obj/machinery/gateway/centerstation/attack_ghost(mob/user)
|
||||||
if(awaygate)
|
if(awaygate)
|
||||||
user.forceMove(awaygate.loc)
|
user.forceMove(awaygate.loc)
|
||||||
|
|||||||
@@ -24,6 +24,7 @@
|
|||||||
var/atmos_link = FALSE //Link source/destination atmos.
|
var/atmos_link = FALSE //Link source/destination atmos.
|
||||||
var/turf/open/atmos_source //Atmos link source
|
var/turf/open/atmos_source //Atmos link source
|
||||||
var/turf/open/atmos_destination //Atmos link destination
|
var/turf/open/atmos_destination //Atmos link destination
|
||||||
|
var/allow_anchored = FALSE
|
||||||
|
|
||||||
/obj/effect/portal/anom
|
/obj/effect/portal/anom
|
||||||
name = "wormhole"
|
name = "wormhole"
|
||||||
@@ -42,6 +43,8 @@
|
|||||||
user.forceMove(get_turf(src))
|
user.forceMove(get_turf(src))
|
||||||
|
|
||||||
/obj/effect/portal/Crossed(atom/movable/AM, oldloc)
|
/obj/effect/portal/Crossed(atom/movable/AM, oldloc)
|
||||||
|
if(isobserver(AM))
|
||||||
|
return ..()
|
||||||
if(linked && (get_turf(oldloc) == get_turf(linked)))
|
if(linked && (get_turf(oldloc) == get_turf(linked)))
|
||||||
return ..()
|
return ..()
|
||||||
if(!teleport(AM))
|
if(!teleport(AM))
|
||||||
@@ -51,6 +54,8 @@
|
|||||||
return
|
return
|
||||||
|
|
||||||
/obj/effect/portal/attack_hand(mob/user)
|
/obj/effect/portal/attack_hand(mob/user)
|
||||||
|
if(get_turf(user) == get_turf(src))
|
||||||
|
teleport(user)
|
||||||
if(Adjacent(user))
|
if(Adjacent(user))
|
||||||
user.forceMove(get_turf(src))
|
user.forceMove(get_turf(src))
|
||||||
|
|
||||||
@@ -123,12 +128,18 @@
|
|||||||
linked = null
|
linked = null
|
||||||
return ..()
|
return ..()
|
||||||
|
|
||||||
|
/obj/effect/portal/attack_ghost(mob/dead/observer/O)
|
||||||
|
if(!teleport(O))
|
||||||
|
return ..()
|
||||||
|
|
||||||
/obj/effect/portal/proc/teleport(atom/movable/M)
|
/obj/effect/portal/proc/teleport(atom/movable/M)
|
||||||
if(!istype(M) || istype(M, /obj/effect) || isobserver(M) || (ismecha(M) && !mech_sized) || (!isobj(M) && !ismob(M))) //Things that shouldn't teleport.
|
if(!istype(M) || istype(M, /obj/effect) || (ismecha(M) && !mech_sized) || (!isobj(M) && !ismob(M))) //Things that shouldn't teleport.
|
||||||
return
|
return
|
||||||
var/turf/real_target = get_link_target_turf()
|
var/turf/real_target = get_link_target_turf()
|
||||||
if(!istype(real_target))
|
if(!istype(real_target))
|
||||||
return FALSE
|
return FALSE
|
||||||
|
if(!ismecha(M) && M.anchored && !allow_anchored)
|
||||||
|
return
|
||||||
if(ismegafauna(M))
|
if(ismegafauna(M))
|
||||||
message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].")
|
message_admins("[M] has used a portal at [ADMIN_COORDJMP(src)] made by [usr].")
|
||||||
if(do_teleport(M, real_target, 0))
|
if(do_teleport(M, real_target, 0))
|
||||||
|
|||||||
@@ -205,6 +205,11 @@ Frequency:
|
|||||||
if(A.noteleport)
|
if(A.noteleport)
|
||||||
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
|
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
|
||||||
return
|
return
|
||||||
|
current_location = get_turf(user) //Recheck.
|
||||||
|
current_area = current_location.loc
|
||||||
|
if(!current_location || current_area.noteleport || current_location.z > ZLEVEL_SPACEMAX || !isturf(user.loc))//If turf was not found or they're on z level 2 or >7 which does not currently exist. or if user is not located on a turf
|
||||||
|
to_chat(user, "<span class='notice'>\The [src] is malfunctioning.</span>")
|
||||||
|
return
|
||||||
user.show_message("<span class='notice'>Locked In.</span>", 2)
|
user.show_message("<span class='notice'>Locked In.</span>", 2)
|
||||||
var/list/obj/effect/portal/created = create_portal_pair(current_location, get_teleport_turf(get_turf(T)), src, 300, 1)
|
var/list/obj/effect/portal/created = create_portal_pair(current_location, get_teleport_turf(get_turf(T)), src, 300, 1)
|
||||||
if(!(LAZYLEN(created) == 2))
|
if(!(LAZYLEN(created) == 2))
|
||||||
|
|||||||
Reference in New Issue
Block a user