From 00a0b8f004cdcf4f7dd2dbea976ad33bc45500ec Mon Sep 17 00:00:00 2001 From: Luc <89928798+lewcc@users.noreply.github.com> Date: Tue, 3 Sep 2024 09:13:49 -0400 Subject: [PATCH] Fix runtimes when events cannot find a valid event area (#26594) * Fix runtimes when events cannot find a valid event area * oops --- code/game/objects/effects/spawners/mess_spawners.dm | 3 +++ code/modules/events/event_procs.dm | 2 ++ code/modules/events/tear.dm | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/code/game/objects/effects/spawners/mess_spawners.dm b/code/game/objects/effects/spawners/mess_spawners.dm index 9f97a15782c..751613e9e11 100644 --- a/code/game/objects/effects/spawners/mess_spawners.dm +++ b/code/game/objects/effects/spawners/mess_spawners.dm @@ -194,6 +194,9 @@ var/mess_count = rand(5, 10) for(var/i in 1 to mess_count) var/area/target_area = findEventArea() + if(!target_area) + log_debug("Failed to generate themed messes: No valid event areas were found.") + return var/list/turfs = get_area_turfs(target_area) while(length(turfs)) var/turf/T = pick_n_take(turfs) diff --git a/code/modules/events/event_procs.dm b/code/modules/events/event_procs.dm index 9949617058a..0e95218f193 100644 --- a/code/modules/events/event_procs.dm +++ b/code/modules/events/event_procs.dm @@ -39,6 +39,8 @@ var/list/remove_these_areas = safe_areas - allowed_areas var/list/possible_areas = typecache_filter_list_reverse(SSmapping.existing_station_areas, remove_these_areas) + if(!length(possible_areas)) + return null return pick(possible_areas) /proc/findUnrestrictedEventArea() //Does almost the same as findEventArea() but hits a few more areas including maintenance and the AI sat, and also returns a list of all the areas, instead of just one area diff --git a/code/modules/events/tear.dm b/code/modules/events/tear.dm index 11145ccc490..0e2fd84177e 100644 --- a/code/modules/events/tear.dm +++ b/code/modules/events/tear.dm @@ -18,6 +18,8 @@ impact_area = findEventArea() /datum/event/tear/start() + if(isnull(impact_area)) + log_debug("No valid event areas could be generated for dimensional tear.") var/list/area_turfs = get_area_turfs(impact_area) while(length(area_turfs)) var/turf/T = pick_n_take(area_turfs) @@ -45,6 +47,9 @@ if(!target_area) if(false_alarm) target_area = findEventArea() + if(isnull(target_area)) + log_debug("Tried to announce a false-alarm tear without a valid area!") + kill() else log_debug("Tried to announce a tear without a valid area!") kill()