From ae9c94cc4f8cd10cb62b0d24273f2d54957424ef Mon Sep 17 00:00:00 2001 From: Tempest Date: Thu, 6 Aug 2026 12:48:04 -0500 Subject: [PATCH] Fix nightmares (and spider infestations) being unable to spawn on Moonstation (#6017) --- _maps/map_files/moonstation/moonstation.dmm | 115 ++++++++++++++++-- .../event_defines/ghostset/nightmare.dm | 9 ++ 2 files changed, 112 insertions(+), 12 deletions(-) diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm index a6581b57f60..3176b0ebbdf 100644 --- a/_maps/map_files/moonstation/moonstation.dmm +++ b/_maps/map_files/moonstation/moonstation.dmm @@ -1701,6 +1701,14 @@ /obj/item/radio/intercom/directional/north, /turf/open/floor/iron/checker, /area/station/hallway/secondary/exit/departure_lounge) +"auS" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/aft) "auW" = ( /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 1 @@ -15281,6 +15289,11 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/iron/terracotta, /area/station/commons/storage/art) +"dUq" = ( +/obj/effect/decal/cleanable/glass, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/engine/lower) "dUr" = ( /obj/effect/turf_decal/box/white/corners{ dir = 8 @@ -26097,6 +26110,20 @@ /obj/structure/closet/emcloset, /turf/open/floor/plating, /area/station/maintenance/department/security/lower) +"gJo" = ( +/obj/machinery/atmospherics/pipe/multiz/scrubbers/visible/layer2{ + color = "#ff0000"; + dir = 8; + name = "Scrubbers multi deck pipe adapter" + }, +/obj/machinery/atmospherics/pipe/multiz/supply/visible/layer4{ + color = "#0000ff"; + dir = 8; + name = "Supply multi deck pipe adapter" + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/bar) "gJO" = ( /obj/machinery/door/airlock/maintenance_hatch{ name = "Prison Wing Cells Maintenance" @@ -26366,6 +26393,11 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/checker, /area/station/hallway/primary/central/fore) +"gMw" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/port) "gMx" = ( /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 @@ -27659,6 +27691,13 @@ /obj/structure/transport/linear/tram, /turf/open/floor/plating, /area/station/terminal/lobby) +"hdZ" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/starboard/fore) "hec" = ( /obj/effect/turf_decal/tile/purple/anticorner/contrasted{ dir = 1 @@ -31614,6 +31653,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) +"ibm" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 9 + }, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/medical) "ibp" = ( /obj/effect/turf_decal/box/white{ color = "#9FED58" @@ -37756,6 +37805,13 @@ /obj/effect/landmark/generic_maintenance_landmark, /turf/open/floor/plating, /area/station/service/kitchen/abandoned) +"jIe" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/security/lower) "jIr" = ( /obj/effect/turf_decal/caution/stand_clear/white, /obj/effect/turf_decal/sand/plating, @@ -45184,6 +45240,11 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron/dark, /area/station/science/ordnance/storage) +"lyh" = ( +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/public_mining) "lyl" = ( /obj/machinery/door/airlock{ id_tag = "Toilet3"; @@ -59177,6 +59238,14 @@ }, /turf/open/floor/engine, /area/station/maintenance/disposal/incinerator) +"pdm" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/fore) "pdp" = ( /obj/machinery/door/airlock/grunge, /obj/effect/mapping_helpers/airlock/autoname, @@ -62613,6 +62682,17 @@ /obj/effect/spawner/structure/window/survival_pod, /turf/open/floor/plating, /area/station/cargo/miningfoundry/event_protected) +"pVP" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/crew_quarters/dorms) "pVT" = ( /obj/structure/reflector/box/anchored{ dir = 1 @@ -70479,6 +70559,13 @@ /obj/machinery/camera/autoname/prison/directional/east, /turf/open/floor/catwalk_floor/iron_dark, /area/station/security/prison/work) +"rUD" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/chapel) "rUE" = ( /obj/effect/mapping_helpers/broken_floor, /obj/effect/turf_decal/caution/white, @@ -77906,6 +77993,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/medical/paramedic) +"tRa" = ( +/obj/effect/landmark/generic_maintenance_landmark, +/turf/open/floor/plating, +/area/station/maintenance/department/medical/chemistry) "tRd" = ( /obj/effect/spawner/random/trash/graffiti, /turf/open/floor/plating, @@ -187382,7 +187473,7 @@ wWj kbd jcE oqb -tUm +dUq gEk rNs kJH @@ -198590,7 +198681,7 @@ mSI nmB ybk pUv -mLS +jIe ucZ oLK kvJ @@ -201473,7 +201564,7 @@ fGf rFm nFN fbp -oIO +tRa azS oIO uoD @@ -210179,7 +210270,7 @@ kJH kJH pfg kKx -mWg +lyh kdI kdI kdI @@ -248243,7 +248334,7 @@ ckk eZj rbD rui -rbD +gMw gzN ckk hCI @@ -256951,7 +257042,7 @@ lkv lkv dtq obG -ilj +gJo igY rZw rZw @@ -258271,7 +258362,7 @@ gft sCg qlq alL -uHj +ibm sCg cnM juK @@ -259490,7 +259581,7 @@ ajN ajN ktI ajN -ajN +pdm ajN ajN lZd @@ -263638,7 +263729,7 @@ cpS xae ycI nyc -iWg +hdZ bSs vws vWS @@ -268320,7 +268411,7 @@ lKm lKm lDi lKm -lKm +auS ooA elf dtZ @@ -270569,7 +270660,7 @@ dmv ncl llX vJe -dms +pVP nXy nXy nXy @@ -273426,7 +273517,7 @@ pqO iGo pqO pqO -pqI +rUD saR pqO lAK diff --git a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm index e7588cf43ab..c5c5943bf3d 100644 --- a/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm +++ b/modular_zubbers/code/modules/storyteller/event_defines/ghostset/nightmare.dm @@ -11,6 +11,15 @@ min_wizard_trigger_potency = 6 max_wizard_trigger_potency = 7 +/datum/round_event_control/nightmare/can_spawn_event(players_amt, allow_magic = FALSE) + . = ..() + if(!.) + return FALSE + + // Nightmares can only spawn in unlit maintenance, so don't offer the event + // (and burn a ghost poll on it) when the station has nowhere dark to put one. + return !isnull(find_maintenance_spawn(atmos_sensitive = TRUE, require_darkness = TRUE)) + /datum/round_event/ghost_role/nightmare minimum_required = 1 role_name = "nightmare"