diff --git a/_maps/__MAP_DEFINES.dm b/_maps/__MAP_DEFINES.dm index 1cd6bdf7f1b..f006f823bd7 100644 --- a/_maps/__MAP_DEFINES.dm +++ b/_maps/__MAP_DEFINES.dm @@ -13,8 +13,8 @@ #define STATION_CONTACT "Station Contact" // A level dedicated to admin use #define ADMIN_LEVEL "Admin Level" - // A level that can be navigated to through space - #define REACHABLE "Reachable" + // A level that can be navigated to by the crew without admin intervention or the emergency shuttle. + #define REACHABLE_BY_CREW "Reachable" // For away missions - used by some consoles #define AWAY_LEVEL "Away" // Allows weather @@ -27,6 +27,8 @@ #define AI_OK "AI Allowed" /// Ruins will spawn on this z-level #define SPAWN_RUINS "Spawn Ruins" + /// A level that can be navigated to through space, but for real this time. + #define REACHABLE_SPACE_ONLY "Reachable Space Only" // Level names #define MAIN_STATION "Main Station" diff --git a/_maps/map_files/generic/centcomm.dmm b/_maps/map_files/generic/centcomm.dmm index 975bb1dc2d1..2acab6c6ab7 100644 --- a/_maps/map_files/generic/centcomm.dmm +++ b/_maps/map_files/generic/centcomm.dmm @@ -1,7 +1,7 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE "aa" = ( /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "ab" = ( /turf/simulated/floor/plating/asteroid/snow/airless, /area/syndicate_mothership) @@ -14,7 +14,7 @@ "af" = ( /obj/structure/window/reinforced, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "ag" = ( /turf/simulated/wall/indestructible/fakedoor, /area/ninja/holding) @@ -49,7 +49,7 @@ dir = 4 }, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "al" = ( /obj/effect/landmark/costume/random, /obj/structure/rack/holorack, @@ -65,7 +65,7 @@ dir = 8 }, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "ao" = ( /obj/structure/chair/stool/holostool{ dir = 4 @@ -79,12 +79,12 @@ /turf/space/transit/east{ dir = 8 }, -/area/space) +/area/space/centcomm) "aq" = ( /turf/space/transit/horizontal{ dir = 4 }, -/area/space) +/area/space/centcomm) "ar" = ( /turf/simulated/floor/holofloor{ icon = 'icons/turf/floors/plating.dmi'; @@ -169,7 +169,7 @@ dir = 8 }, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "aF" = ( /obj/structure/flora/ausbushes/grassybush, /turf/simulated/floor/holofloor/grass, @@ -204,7 +204,7 @@ /area/tdome/tdomeobserve) "aN" = ( /turf/space, -/area/space) +/area/space/centcomm) "aO" = ( /turf/simulated/floor/holofloor{ icon_state = "cult" @@ -472,21 +472,21 @@ dir = 1 }, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "cd" = ( /obj/structure/window/reinforced, /obj/structure/window/reinforced{ dir = 1 }, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "ce" = ( /obj/structure/window/reinforced{ dir = 1 }, /obj/structure/window/reinforced, /turf/simulated/wall/indestructible/riveted, -/area/space) +/area/space/centcomm) "cf" = ( /obj/structure/table/abductor, /obj/item/paper/abductor, @@ -523,7 +523,7 @@ /area/abductor_ship) "ck" = ( /turf/space/transit, -/area/space) +/area/space/centcomm) "cl" = ( /turf/simulated/floor/holofloor{ icon_state = "snow" @@ -934,7 +934,7 @@ /turf/space/transit/east{ dir = 8 }, -/area/space) +/area/space/centcomm) "dT" = ( /obj/effect/landmark/spawner/ninjastart, /turf/simulated/floor/plasteel/grimy, @@ -1072,7 +1072,7 @@ width = 7 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "ey" = ( /obj/structure/chair/stool, /obj/machinery/computer/security/telescreen{ @@ -1190,7 +1190,7 @@ width = 12 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "eW" = ( /obj/structure/sink{ dir = 8; @@ -1310,7 +1310,7 @@ /turf/space/transit/east{ dir = 8 }, -/area/space) +/area/space/centcomm) "fs" = ( /obj/docking_port/stationary/transit{ dir = 8; @@ -1321,7 +1321,7 @@ width = 9 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "ft" = ( /obj/item/stack/sheet/metal, /obj/structure/table, @@ -1381,7 +1381,7 @@ width = 24 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "fI" = ( /turf/simulated/wall/indestructible/riveted, /area/tdome/arena_source) @@ -1511,7 +1511,7 @@ width = 7 }, /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "gd" = ( /obj/effect/baseturf_helper/asteroid/snow, /turf/simulated/wall/indestructible/rock/snow, @@ -1528,7 +1528,7 @@ /turf/space/transit/horizontal{ dir = 4 }, -/area/space) +/area/space/centcomm) "gh" = ( /turf/simulated/wall/indestructible/opsglass, /area/centcom) @@ -1645,7 +1645,7 @@ width = 18 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "gD" = ( /turf/simulated/floor/mineral/plastitanium/red, /area/shuttle/syndicate_sit) @@ -1779,7 +1779,7 @@ width = 3 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "hh" = ( /obj/docking_port/stationary/transit{ dwidth = 1; @@ -1789,7 +1789,7 @@ width = 3 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "hi" = ( /obj/machinery/light/spot{ dir = 8 @@ -2578,7 +2578,7 @@ width = 11 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "jI" = ( /obj/docking_port/stationary/transit{ dir = 4; @@ -2589,7 +2589,7 @@ width = 11 }, /turf/space/transit, -/area/space) +/area/space/centcomm) "jJ" = ( /obj/effect/decal/cleanable/blood, /turf/simulated/floor/plasteel/dark, @@ -2838,7 +2838,7 @@ width = 18 }, /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "ky" = ( /obj/machinery/economy/vending/syndicigs, /turf/simulated/floor/plasteel/dark, @@ -2863,7 +2863,7 @@ width = 3 }, /turf/space, -/area/space) +/area/space/centcomm) "kD" = ( /obj/structure/chair/stool, /turf/simulated/floor/plasteel/dark, @@ -2903,7 +2903,7 @@ width = 5 }, /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "kI" = ( /obj/item/toy/figure/crew/syndie, /turf/simulated/floor/plating/asteroid/snow/airless, @@ -4073,7 +4073,7 @@ /area/syndicate_mothership) "oc" = ( /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "od" = ( /turf/simulated/wall/mineral/titanium, /area/shuttle/escape) @@ -5753,7 +5753,7 @@ /turf/space/transit/horizontal{ dir = 4 }, -/area/space) +/area/space/centcomm) "uG" = ( /obj/docking_port/stationary/transit{ dir = 8; @@ -5765,7 +5765,7 @@ width = 5 }, /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "uH" = ( /obj/structure/mirror{ pixel_x = 28 @@ -5998,7 +5998,7 @@ width = 5 }, /turf/space/transit/horizontal, -/area/space) +/area/space/centcomm) "vA" = ( /obj/structure/railing, /obj/structure/table/wood, @@ -6082,7 +6082,7 @@ width = 3 }, /turf/space, -/area/space) +/area/space/centcomm) "vM" = ( /obj/structure/table, /obj/item/storage/toolbox/syndicate, @@ -6571,7 +6571,7 @@ width = 3 }, /turf/space, -/area/space) +/area/space/centcomm) "xS" = ( /obj/machinery/economy/vending/cola/free, /turf/simulated/floor/plasteel{ @@ -7499,7 +7499,7 @@ "Db" = ( /obj/structure/marker_beacon/dock_marker, /turf/space, -/area/space) +/area/space/centcomm) "Dd" = ( /obj/structure/rack, /obj/item/clothing/suit/space/space_ninja, @@ -8111,7 +8111,7 @@ width = 3 }, /turf/space, -/area/space) +/area/space/centcomm) "FD" = ( /obj/structure/table/reinforced, /obj/item/melee/classic_baton/telescopic, @@ -10789,7 +10789,7 @@ "PA" = ( /obj/effect/landmark/shuttle_import, /turf/space, -/area/space) +/area/space/centcomm) "PB" = ( /obj/structure/table/wood, /obj/machinery/recharger, @@ -13014,7 +13014,7 @@ name = "military no fly zone" }, /turf/space, -/area/space) +/area/space/centcomm) "YH" = ( /obj/item/storage/firstaid/regular, /obj/structure/table, diff --git a/code/controllers/subsystem/non_firing/SSmapping.dm b/code/controllers/subsystem/non_firing/SSmapping.dm index 231bde5a17a..59d5491619a 100644 --- a/code/controllers/subsystem/non_firing/SSmapping.dm +++ b/code/controllers/subsystem/non_firing/SSmapping.dm @@ -60,7 +60,7 @@ SUBSYSTEM_DEF(mapping) log_startup_progress("Skipping space ruins...") // Makes a blank space level for the sake of randomness - GLOB.space_manager.add_new_zlevel("Empty Area", linkage = CROSSLINKED, traits = list(REACHABLE)) + GLOB.space_manager.add_new_zlevel("Empty Area", linkage = CROSSLINKED, traits = list(REACHABLE_BY_CREW, REACHABLE_SPACE_ONLY)) // Setup the Z-level linkage @@ -134,7 +134,7 @@ SUBSYSTEM_DEF(mapping) log_startup_progress("Creating random space levels...") var/num_extra_space = rand(GLOB.configuration.ruins.extra_levels_min, GLOB.configuration.ruins.extra_levels_max) for(var/i in 1 to num_extra_space) - GLOB.space_manager.add_new_zlevel("Ruin Area #[i]", linkage = CROSSLINKED, traits = list(REACHABLE, SPAWN_RUINS)) + GLOB.space_manager.add_new_zlevel("Ruin Area #[i]", linkage = CROSSLINKED, traits = list(REACHABLE_BY_CREW, SPAWN_RUINS, REACHABLE_SPACE_ONLY)) log_startup_progress("Loaded random space levels in [stop_watch(load_zlevels_timer)]s.") // Now spawn ruins, random budget between 20 and 30 for all zlevels combined. @@ -164,7 +164,7 @@ SUBSYSTEM_DEF(mapping) var/watch = start_watch() log_startup_progress("Loading [map_datum.fluff_name]...") // This should always be Z2, but you never know - var/map_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = CROSSLINKED, traits = list(STATION_LEVEL, STATION_CONTACT, REACHABLE, AI_OK)) + var/map_z_level = GLOB.space_manager.add_new_zlevel(MAIN_STATION, linkage = CROSSLINKED, traits = list(STATION_LEVEL, STATION_CONTACT, REACHABLE_BY_CREW, REACHABLE_SPACE_ONLY, AI_OK)) GLOB.maploader.load_map(wrap_file(map_datum.map_path), z_offset = map_z_level) log_startup_progress("Loaded [map_datum.fluff_name] in [stop_watch(watch)]s") @@ -185,7 +185,7 @@ SUBSYSTEM_DEF(mapping) return var/watch = start_watch() log_startup_progress("Loading Lavaland...") - var/lavaland_z_level = GLOB.space_manager.add_new_zlevel(MINING, linkage = SELFLOOPING, traits = list(ORE_LEVEL, REACHABLE, STATION_CONTACT, HAS_WEATHER, AI_OK)) + var/lavaland_z_level = GLOB.space_manager.add_new_zlevel(MINING, linkage = SELFLOOPING, traits = list(ORE_LEVEL, REACHABLE_BY_CREW, STATION_CONTACT, HAS_WEATHER, AI_OK)) GLOB.maploader.load_map(file("_maps/map_files/generic/Lavaland.dmm"), z_offset = lavaland_z_level) log_startup_progress("Loaded Lavaland in [stop_watch(watch)]s") diff --git a/code/datums/weather/weather_types/radiation_storm.dm b/code/datums/weather/weather_types/radiation_storm.dm index 836792c55e0..3b15d24e0aa 100644 --- a/code/datums/weather/weather_types/radiation_storm.dm +++ b/code/datums/weather/weather_types/radiation_storm.dm @@ -26,9 +26,10 @@ /area/station/public/sleep, /area/station/security/brig, /area/shuttle, - /area/survivalpod //although survivalpods are off-station, creating one on station no longer protects pods on station from the rad storm + /area/survivalpod, //although survivalpods are off-station, creating one on station no longer protects pods on station from the rad storm + /area/ruin //Let us not completely kill space explorers. ) - target_trait = STATION_LEVEL + target_trait = REACHABLE_SPACE_ONLY immunity_type = "rad" @@ -39,7 +40,6 @@ if(!GLOB.maint_all_access) make_maint_all_access() - /datum/weather/rad_storm/weather_act(mob/living/L) if(!prob(60)) return @@ -68,10 +68,13 @@ /datum/weather/rad_storm/end() if(..()) return - GLOB.minor_announcement.Announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") + status_alarm(FALSE) if(!pre_maint_all_access) - revoke_maint_all_access() + GLOB.minor_announcement.Announce("The radiation threat has passed. Please return to your workplaces. Door access resetting momentarily.", "Anomaly Alert") + addtimer(CALLBACK(SSweather, GLOBAL_PROC_REF(revoke_maint_all_access)), 10 SECONDS) // Bit of time to get out / break into somewhere. + else + GLOB.minor_announcement.Announce("The radiation threat has passed. Please return to your workplaces.", "Anomaly Alert") /datum/weather/rad_storm/proc/status_alarm(active) //Makes the status displays show the radiation warning for those who missed the announcement. if(active) diff --git a/code/datums/weather/weather_types/solar_flare.dm b/code/datums/weather/weather_types/solar_flare.dm index 85282fefe78..a2ae2947e7f 100644 --- a/code/datums/weather/weather_types/solar_flare.dm +++ b/code/datums/weather/weather_types/solar_flare.dm @@ -16,11 +16,11 @@ end_message = null area_type = /area // read generate_area_list() as well below protected_areas = list(/area/shuttle/arrival/station) - target_trait = STATION_LEVEL + target_trait = REACHABLE_SPACE_ONLY immunity_type = "burn" var/damage = 4 /// Areas which are "semi-protected". Mobs inside these areas take reduced burn damage from the solar flare. - var/list/semi_protected_areas = list(/area/station/hallway/secondary/entry) + var/list/semi_protected_areas = list(/area/station/hallway/secondary/entry, /area/ruin) /datum/weather/solar_flare/generate_area_list() ..() diff --git a/code/game/area/misc_areas.dm b/code/game/area/misc_areas.dm index e0c55687f79..b64a443990e 100644 --- a/code/game/area/misc_areas.dm +++ b/code/game/area/misc_areas.dm @@ -35,6 +35,9 @@ /area/space/firereset(obj/source) return +/area/space/centcomm + icon_state = "space_cc" + //SYNDICATES /area/syndicate_mothership diff --git a/code/modules/space_management/level_traits.dm b/code/modules/space_management/level_traits.dm index 0df40306b4b..0634d929990 100644 --- a/code/modules/space_management/level_traits.dm +++ b/code/modules/space_management/level_traits.dm @@ -1,5 +1,5 @@ /proc/is_level_reachable(z) - return check_level_trait(z, REACHABLE) + return check_level_trait(z, REACHABLE_BY_CREW) /proc/is_station_level(z) return check_level_trait(z, STATION_LEVEL) diff --git a/code/modules/unit_tests/map_tests.dm b/code/modules/unit_tests/map_tests.dm index b7db5ca8f3f..791ac602caa 100644 --- a/code/modules/unit_tests/map_tests.dm +++ b/code/modules/unit_tests/map_tests.dm @@ -107,7 +107,7 @@ /datum/map_per_tile_test/structures_in_farspace_checker /datum/map_per_tile_test/structures_in_farspace_checker/CheckTile(turf/T) - if(T.loc.type == /area/space && locate(/obj/structure) in T.contents) + if((T.loc.type == /area/space || T.loc.type == /area/space/centcomm) && locate(/obj/structure) in T.contents) Fail(T, "tile contains at least one structure found in non-near space area") /datum/map_per_tile_test/nearspace_checker diff --git a/icons/turf/areas.dmi b/icons/turf/areas.dmi index 80b0e35d1d4..c411ddab8ad 100755 Binary files a/icons/turf/areas.dmi and b/icons/turf/areas.dmi differ