Objects mounted in shuttle areas drop again & relocates some shuttle objects (#94611)

## About The Pull Request
- Fixes #94119

> This will require a different solution which someone smarter than me
has to figure out in the foreseeable future

Today me is now smarter than yesterday me. We basically just unmount
when the object is about to shuttle moved and remount after it has been
shuttle moved

This also map edits some objects that could not be mounted in shuttles
previously

## Changelog
🆑
fix: objects mounted in shuttle areas deconstruct when their support
structure is destroyed
fix: fixes runtime in arrivals shuttle when its request console is
destroyed
map: moved around some objects in shuttles so they can be mounted on its
walls again
/🆑
This commit is contained in:
SyncIt21
2026-01-07 00:17:44 -05:00
committed by GitHub
parent fa417d70c4
commit c27e434dcc
13 changed files with 68 additions and 47 deletions
@@ -118,7 +118,7 @@ All ShuttleMove procs go here
// Called on atoms after everything has been moved
/atom/movable/proc/afterShuttleMove(turf/oldT, list/movement_force, shuttle_dir, shuttle_preferred_direction, move_dir, rotation)
SHOULD_CALL_PARENT(TRUE)
SEND_SIGNAL(src, COMSIG_ATOM_AFTER_SHUTTLE_MOVE, oldT)
if(light)
update_light()
if(rotation)
@@ -126,6 +126,8 @@ All ShuttleMove procs go here
update_parallax_contents()
SEND_SIGNAL(src, COMSIG_ATOM_AFTER_SHUTTLE_MOVE, oldT)
return TRUE
/atom/movable/proc/lateShuttleMove(turf/oldT, list/movement_force, move_dir)
@@ -41,6 +41,7 @@
new_latejoin += shuttle_chair
if(isnull(console))
console = locate() in arrival_turf
RegisterSignal(console, COMSIG_QDELETING, PROC_REF(find_console))
areas += arrival_area
if(SSjob.latejoin_trackers.len)
@@ -100,6 +101,22 @@
else if(!found_awake)
Launch(FALSE)
/obj/docking_port/mobile/arrivals/proc/find_console(datum/source, force)
SIGNAL_HANDLER
//clear ref to old deleted console
console = null
//find new console
for(var/area/shuttle/arrival/arrival_area as anything in areas)
for(var/list/zlevel_turfs as anything in arrival_area.get_zlevel_turf_lists())
for(var/turf/arrival_turf as anything in zlevel_turfs)
var/obj/machinery/requests_console/target = locate() in arrival_turf
if(!QDELETED(target))
console = target
RegisterSignal(console, COMSIG_QDELETING, PROC_REF(find_console))
return
/obj/docking_port/mobile/arrivals/proc/CheckTurfsPressure()
for(var/I in SSjob.latejoin_trackers)
var/turf/open/T = get_turf(I)