Fixes connect_loc not reconnecting turf changes (#58507)

This commit is contained in:
Mothblocks
2021-04-20 02:43:53 -04:00
committed by GitHub
parent c4fc17a4d7
commit 1c78768c4e
2 changed files with 12 additions and 3 deletions
+8 -2
View File
@@ -88,6 +88,12 @@
post_change_callbacks += changeturf_callback
/datum/element/connect_loc/proc/post_turf_change(turf/new_turf)
for (var/atom/movable/tracked as anything in targets[new_turf])
var/datum/listener = targets[new_turf][tracked]
// If we don't cut the targets list before iterating,
// then we won't re-register the change turf signal.
var/list/turf_targets = targets[new_turf]
var/list/targets_copy = turf_targets.Copy()
turf_targets.Cut()
for (var/atom/movable/tracked as anything in targets_copy)
var/datum/listener = targets_copy[tracked]
update_signals(listener, tracked)
+4 -1
View File
@@ -35,10 +35,13 @@
current_turf.ChangeTurf(/turf/closed/wall)
current_turf = get_turf(watcher)
SEND_SIGNAL(current_turf, COMSIG_MOCK_SIGNAL)
TEST_ASSERT_EQUAL(watcher.times_called, 2, "After changing turf, connect_loc didn't reconnect it")
current_turf.ChangeTurf(/turf/open/floor/carpet)
SEND_SIGNAL(current_turf, COMSIG_MOCK_SIGNAL)
TEST_ASSERT_EQUAL(watcher.times_called, 3, "After changing turf a second time, connect_loc didn't reconnect it")
/datum/unit_test/connect_loc_change_turf/Destroy()
run_loc_floor_bottom_left.ChangeTurf(old_turf_type)
return ..()