From 8a9130026aa2f1f57fcd50a57d40999178a10311 Mon Sep 17 00:00:00 2001 From: alex-gh Date: Sun, 20 Apr 2014 14:00:16 +0200 Subject: [PATCH] Events can now strike all areas instead of few select ones --- code/game/area/Space Station 13 areas.dm | 3 ++- code/modules/events/event_manager.dm | 26 +++++++++++++++++++++--- 2 files changed, 25 insertions(+), 4 deletions(-) diff --git a/code/game/area/Space Station 13 areas.dm b/code/game/area/Space Station 13 areas.dm index 753e6f1f099..f129e698662 100644 --- a/code/game/area/Space Station 13 areas.dm +++ b/code/game/area/Space Station 13 areas.dm @@ -1948,8 +1948,8 @@ var/list/the_station_areas = list ( /area/hallway/primary/central, /area/bridge, /area/crew_quarters, + /area/civilian, /area/holodeck, - /area/mint, /area/library, /area/chapel, /area/lawoffice, @@ -1959,6 +1959,7 @@ var/list/the_station_areas = list ( /area/teleporter, /area/medical, /area/security, + /area/prison, /area/quartermaster, /area/janitor, /area/hydroponics, diff --git a/code/modules/events/event_manager.dm b/code/modules/events/event_manager.dm index 472e64c0d58..a0c4f7fe96c 100644 --- a/code/modules/events/event_manager.dm +++ b/code/modules/events/event_manager.dm @@ -69,6 +69,8 @@ var/scheduledEvent = null /datum/event/proc/findEventArea() //Here's a nice proc to use to find an area for your event to land in! + var/area/candidate = null + var/list/safe_areas = list( /area/turret_protected/ai, /area/turret_protected/ai_upload, @@ -83,13 +85,31 @@ var/scheduledEvent = null /area/shuttle/escape_pod5/station, /area/shuttle/mining/station, /area/shuttle/transport1/station, - /area/shuttle/specops/station) + /area/shuttle/specops/station, + /area/shuttle/prison/station, + /area/shuttle/administration/station + ) //These are needed because /area/engine has to be removed from the list, but we still want these areas to get fucked up. var/list/danger_areas = list( /area/engine/break_room, /area/engine/chiefs_office) - //Need to locate() as it's just a list of paths. - return locate(pick((the_station_areas - safe_areas) + danger_areas)) + var/list/event_areas = list() + + for (var/areapath in the_station_areas) + event_areas += typesof(areapath) + for (var/areapath in safe_areas) + event_areas -= typesof(areapath) + for (var/areapath in danger_areas) + event_areas += typesof(areapath) + + while (event_areas.len > 0) + var/list/event_turfs = null + candidate = locate(pick_n_take(event_areas)) + event_turfs = get_area_turfs(candidate) + if (event_turfs.len > 0) + break + + return candidate