Block atmos processing on ReservedTurfs\™️ (#84873)

## About The Pull Request

See title.

## Why It's Good For The Game

We get constant runtimes and issues from atmos processing on turfs we
are actively loading and/or reserving. I promised I would do something
about this months ago

---------

Co-authored-by: Ghom <42542238+Ghommie@users.noreply.github.com>
This commit is contained in:
Zephyr
2024-08-15 18:45:59 +02:00
committed by GitHub
co-authored by Ghom
parent e99d4b0d44
commit 52f7f44215
3 changed files with 27 additions and 13 deletions
+15 -11
View File
@@ -184,17 +184,20 @@ SUBSYSTEM_DEF(mapping)
if(index)
lists_to_reserve.Cut(1, index)
return
var/turf/T = packet[packetlen]
T.empty(RESERVED_TURF_TYPE, RESERVED_TURF_TYPE, null, TRUE)
LAZYINITLIST(unused_turfs["[T.z]"])
unused_turfs["[T.z]"] |= T
var/area/old_area = T.loc
LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, T.z, list())
old_area.turfs_to_uncontain_by_zlevel[T.z] += T
T.turf_flags = UNUSED_RESERVATION_TURF
world_contents += T
LISTASSERTLEN(world_turf_contents_by_z, T.z, list())
world_turf_contents_by_z[T.z] += T
var/turf/reserving_turf = packet[packetlen]
reserving_turf.empty(RESERVED_TURF_TYPE, RESERVED_TURF_TYPE, null, TRUE)
LAZYINITLIST(unused_turfs["[reserving_turf.z]"])
unused_turfs["[reserving_turf.z]"] |= reserving_turf
var/area/old_area = reserving_turf.loc
LISTASSERTLEN(old_area.turfs_to_uncontain_by_zlevel, reserving_turf.z, list())
old_area.turfs_to_uncontain_by_zlevel[reserving_turf.z] += reserving_turf
reserving_turf.turf_flags = UNUSED_RESERVATION_TURF
// reservation turfs are not allowed to interact with atmos at all
reserving_turf.blocks_air = TRUE
world_contents += reserving_turf
LISTASSERTLEN(world_turf_contents_by_z, reserving_turf.z, list())
world_turf_contents_by_z[reserving_turf.z] += reserving_turf
packet.len--
packetlen = length(packet)
@@ -731,6 +734,7 @@ ADMIN_VERB(load_away_mission, R_FUN, "Load Away Mission", "Load a specific away
for(var/turf/T as anything in block)
// No need to empty() these, because they just got created and are already /turf/open/space/basic.
T.turf_flags = UNUSED_RESERVATION_TURF
T.blocks_air = TRUE
CHECK_TICK
// Gotta create these suckers if we've not done so already