From 946013ac22a9166bef7faf62521adf43de632acc Mon Sep 17 00:00:00 2001 From: CitadelStationBot Date: Thu, 18 May 2017 11:54:10 -0500 Subject: [PATCH] Fixes rcds working on transit space (#981) --- code/controllers/subsystem/shuttle.dm | 10 ++++++++++ code/game/turfs/space/transit.dm | 3 ++- code/modules/shuttle/shuttle.dm | 12 ++++++++++++ 3 files changed, 24 insertions(+), 1 deletion(-) diff --git a/code/controllers/subsystem/shuttle.dm b/code/controllers/subsystem/shuttle.dm index f7c8061675..dc1c9b4d9d 100644 --- a/code/controllers/subsystem/shuttle.dm +++ b/code/controllers/subsystem/shuttle.dm @@ -513,3 +513,13 @@ SUBSYSTEM_DEF(shuttle) centcom_message = SSshuttle.centcom_message ordernum = SSshuttle.ordernum points = SSshuttle.points + + +/datum/controller/subsystem/shuttle/proc/is_in_shuttle_bounds(atom/A) + var/area/current = get_area(A) + if(istype(current, /area/shuttle) && !istype(current,/area/shuttle/transit)) + return TRUE + for(var/obj/docking_port/mobile/M in mobile) + if(M.is_in_shuttle_bounds(A)) + return TRUE + \ No newline at end of file diff --git a/code/game/turfs/space/transit.dm b/code/game/turfs/space/transit.dm index b3a322d407..68c00c54ec 100644 --- a/code/game/turfs/space/transit.dm +++ b/code/game/turfs/space/transit.dm @@ -59,7 +59,8 @@ AM.newtonian_move(dir) /turf/open/space/transit/CanBuildHere() - return istype(get_area(src), /area/shuttle) + return SSshuttle.is_in_shuttle_bounds(src) + /turf/open/space/transit/Initialize() ..() diff --git a/code/modules/shuttle/shuttle.dm b/code/modules/shuttle/shuttle.dm index 656ba24da6..a5d60b1e8d 100644 --- a/code/modules/shuttle/shuttle.dm +++ b/code/modules/shuttle/shuttle.dm @@ -754,4 +754,16 @@ for(var/obj/machinery/door/E in A) //dumb, I know, but playing it on the engines doesn't do it justice playsound(E, s, 100, FALSE, max(width, height) - world.view) +/obj/docking_port/mobile/proc/is_in_shuttle_bounds(atom/A) + var/turf/T = get_turf(A) + if(T.z != z) + return FALSE + var/list/bounds= return_coords() + var/turf/T0 = locate(bounds[1],bounds[2],z) + var/turf/T1 = locate(bounds[3],bounds[4],z) + if(T in block(T0,T1)) + return TRUE + return FALSE + + #undef DOCKING_PORT_HIGHLIGHT