diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 462a27d942e..632c5b3a7d6 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -2585,13 +2585,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron, /area/station/engineering/atmos) -"akS" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/structure/table, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "ala" = ( /obj/machinery/button/door/directional/west{ id = "private_g"; @@ -4550,13 +4543,10 @@ /area/station/security/prison) "aFP" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 1 + dir = 4 }, /turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) +/area/station/hallway/secondary/exit) "aFU" = ( /obj/effect/mapping_helpers/airlock/access/all/engineering/maintenance, /obj/machinery/door/airlock/maintenance_hatch{ @@ -4580,11 +4570,6 @@ /turf/open/floor/iron, /area/station/security/brig) "aFZ" = ( -/obj/effect/landmark/event_spawn, -/obj/effect/landmark/start/hangover, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) -"aGa" = ( /obj/effect/spawner/random/engineering/tracking_beacon, /turf/open/floor/iron, /area/station/hallway/secondary/exit) @@ -4630,23 +4615,13 @@ /turf/open/floor/iron/grimy, /area/station/service/lawoffice) "aGq" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 +/obj/machinery/vending/snack/blue, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 6 }, -/turf/open/floor/iron, +/turf/open/floor/iron/dark, /area/station/hallway/secondary/exit) -"aGr" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Escape Wing" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "aGs" = ( /obj/structure/chair, /obj/effect/turf_decal/trimline/neutral/filled/line{ @@ -4664,10 +4639,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "aGw" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/status_display/ai/directional/west, +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/stripes/white/full, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "aGx" = ( @@ -6247,6 +6221,14 @@ }, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) +"aZm" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, +/obj/effect/landmark/event_spawn, +/obj/effect/landmark/start/hangover, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "aZo" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 4 @@ -7278,16 +7260,13 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 9 }, -/obj/structure/chair{ - dir = 4 - }, /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, -/obj/effect/landmark/start/hangover, /obj/effect/turf_decal/trimline/neutral/corner{ dir = 4 }, +/obj/machinery/firealarm/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "bxG" = ( @@ -8858,9 +8837,6 @@ dir = 1 }, /obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "bYd" = ( @@ -9831,6 +9807,7 @@ /obj/effect/turf_decal/trimline/neutral/corner{ dir = 4 }, +/obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "cpR" = ( @@ -10723,18 +10700,6 @@ /obj/structure/sign/warning/electric_shock, /turf/closed/wall/r_wall, /area/station/hallway/secondary/exit) -"cFg" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) "cFh" = ( /obj/machinery/modular_computer/preset/engineering{ dir = 8 @@ -11316,11 +11281,6 @@ }, /turf/open/floor/engine, /area/station/engineering/supermatter/room) -"cOM" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "cON" = ( /obj/machinery/deepfryer, /turf/open/floor/iron/white/side{ @@ -13099,6 +13059,7 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/exit) "duB" = ( @@ -13973,15 +13934,6 @@ }, /turf/open/floor/iron/white, /area/station/science/ordnance) -"dLs" = ( -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit) "dLt" = ( /obj/effect/turf_decal/bot{ dir = 1 @@ -14198,6 +14150,8 @@ /obj/effect/turf_decal/trimline/neutral/corner{ dir = 4 }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "dPe" = ( @@ -18442,6 +18396,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/cargo/storage) +"ftZ" = ( +/obj/effect/spawner/structure/window, +/turf/open/floor/plating, +/area/station/hallway/primary/tram/right) "fuj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/engine, @@ -19216,7 +19174,7 @@ /turf/open/floor/iron/white, /area/station/science/lower) "fKO" = ( -/obj/effect/spawner/structure/window/reinforced, +/obj/effect/spawner/structure/window, /turf/open/floor/plating, /area/station/command/heads_quarters/hop) "fKW" = ( @@ -22648,10 +22606,6 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 10 }, -/obj/structure/chair{ - dir = 4 - }, -/obj/effect/landmark/start/hangover, /obj/machinery/firealarm/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) @@ -22946,18 +22900,7 @@ /area/station/ai_monitored/command/storage/eva) "heS" = ( /obj/machinery/holopad, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 4 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/effect/turf_decal/bot, -/obj/machinery/status_display/evac/directional/east, /obj/machinery/camera/directional/east{ c_tag = "Departures - West Main" }, @@ -22966,6 +22909,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/transport/nav_beacon/tram/nav/immovable_rod, +/obj/machinery/status_display/ai/directional/east, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "heY" = ( @@ -23717,13 +23664,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/tram/right) -"hsT" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 8 - }, -/obj/machinery/status_display/evac/directional/west, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "htb" = ( /obj/structure/closet/secure_closet/courtroom, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -24598,23 +24538,6 @@ }, /turf/open/floor/engine/hull, /area/station/solars/starboard/fore) -"hNh" = ( -/obj/machinery/door/airlock/public/glass{ - name = "Escape Wing" - }, -/obj/machinery/door/firedoor, -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "hNo" = ( /obj/machinery/door/firedoor, /obj/structure/disposalpipe/segment, @@ -24917,9 +24840,6 @@ c_tag = "Hallway - Central Escape Wing Entry" }, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 5 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, @@ -26301,6 +26221,15 @@ /obj/effect/turf_decal/stripes/white/full, /turf/open/floor/iron/white, /area/station/medical/medbay/central) +"iur" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 10 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "iuz" = ( /obj/machinery/door/airlock/external{ name = "Port Docking Bay 1"; @@ -28451,6 +28380,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"jhn" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/firealarm/directional/west, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "jhs" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 @@ -29049,12 +28988,12 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, -/obj/effect/turf_decal/trimline/red/corner{ - dir = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/effect/turf_decal/trimline/red/filled/corner{ + dir = 4 + }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "jrz" = ( @@ -29675,11 +29614,9 @@ "jBk" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "jBn" = ( @@ -30950,6 +30887,14 @@ "jYS" = ( /turf/closed/wall, /area/station/medical/chemistry) +"jYT" = ( +/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/stripes/white/full, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "jYU" = ( /obj/structure/transport/linear/public, /obj/effect/turf_decal/trimline/dark_red/warning{ @@ -30967,8 +30912,6 @@ dir = 1 }, /obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/light/directional/south, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) @@ -35579,13 +35522,13 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "lyR" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 10 - }, -/obj/structure/chair{ +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/landmark/start/hangover, +/obj/effect/turf_decal/trimline/neutral/filled/line, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "lyV" = ( @@ -36619,14 +36562,9 @@ /turf/open/floor/iron/smooth, /area/station/hallway/primary/tram/right) "lRx" = ( -/obj/structure/chair{ +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 1 }, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "lRC" = ( @@ -41774,9 +41712,10 @@ /turf/open/floor/plating, /area/station/maintenance/tram/left) "nJx" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/structure/cable, +/obj/structure/railing{ + dir = 1 + }, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "nJF" = ( @@ -42169,12 +42108,9 @@ /turf/open/floor/iron, /area/station/hallway/secondary/construction/engineering) "nQq" = ( -/obj/structure/chair{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "nQr" = ( @@ -44287,6 +44223,15 @@ }, /turf/open/floor/iron, /area/station/cargo/office) +"oGG" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "oGJ" = ( /turf/closed/mineral/random/stationside/asteroid/porus, /area/station/medical/chemistry) @@ -44585,6 +44530,16 @@ }, /turf/open/space/openspace, /area/station/solars/port) +"oOP" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/corner, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit) "oOT" = ( /obj/structure/table/wood, /obj/item/food/grown/poppy{ @@ -47213,21 +47168,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/security/checkpoint/engineering) -"pKa" = ( -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 8 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner{ - dir = 1 - }, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, -/area/station/hallway/secondary/exit/departure_lounge) "pKk" = ( /obj/machinery/portable_atmospherics/canister/oxygen, /obj/effect/turf_decal/bot{ @@ -47709,7 +47649,7 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/east, +/obj/structure/sign/departments/evac/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/exit) "pUi" = ( @@ -48162,7 +48102,6 @@ /area/station/security/checkpoint/engineering) "qbW" = ( /obj/machinery/holopad, -/obj/effect/landmark/observer_start, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -48174,6 +48113,7 @@ id = 2 }, /obj/machinery/transport/destination_sign/indicator/directional/south, +/obj/effect/landmark/observer_start, /turf/open/floor/iron, /area/station/hallway/primary/tram/center) "qch" = ( @@ -48440,7 +48380,6 @@ "qfQ" = ( /obj/structure/cable, /obj/machinery/power/apc/auto_name/directional/east, -/obj/machinery/transport/power_rectifier, /turf/open/floor/catwalk_floor, /area/station/hallway/primary/tram/right) "qfS" = ( @@ -49067,7 +49006,6 @@ "qrs" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/clock/directional/east, /obj/structure/closet/secure_closet/personal, /obj/effect/spawner/random/bureaucracy/briefcase, /obj/machinery/power/apc/auto_name/directional/north, @@ -49869,7 +49807,9 @@ /turf/open/floor/iron/white, /area/station/science/research) "qFH" = ( -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/structure/railing{ + dir = 1 + }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "qFK" = ( @@ -51022,7 +50962,9 @@ dir = 8 }, /obj/structure/cable, -/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 5 + }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/light/directional/west, @@ -54589,6 +54531,14 @@ }, /turf/open/floor/iron, /area/station/commons/fitness) +"snF" = ( +/obj/item/kirbyplants/random, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/hallway/secondary/exit) "snK" = ( /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 @@ -55754,8 +55704,6 @@ }, /obj/effect/turf_decal/trimline/neutral/filled/line, /obj/effect/landmark/start/hangover, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "sJQ" = ( @@ -56458,10 +56406,7 @@ /area/station/service/theater) "sWq" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 9 - }, -/obj/structure/chair{ - dir = 4 + dir = 1 }, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) @@ -56529,14 +56474,14 @@ /turf/open/floor/iron, /area/station/cargo/drone_bay) "sXo" = ( -/obj/structure/chair{ +/obj/effect/turf_decal/trimline/red/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/neutral/filled/warning{ dir = 1 }, -/obj/effect/turf_decal/trimline/neutral/filled/line, -/obj/structure/cable, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/directional/south, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "sXL" = ( @@ -58360,9 +58305,8 @@ /area/station/service/theater) "tEk" = ( /obj/effect/landmark/event_spawn, -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 - }, +/obj/structure/cable, +/obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/secondary/exit/departure_lounge) "tEl" = ( @@ -58592,6 +58536,18 @@ /mob/living/simple_animal/bot/floorbot, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) +"tIk" = ( +/obj/effect/turf_decal/trimline/neutral/filled/corner{ + dir = 8 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "tID" = ( /obj/structure/transport/linear/public, /obj/effect/landmark/transport/transport_id{ @@ -67553,6 +67509,18 @@ dir = 1 }, /area/station/command/bridge) +"wJF" = ( +/obj/machinery/door/firedoor, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/neutral/filled/line, +/obj/effect/turf_decal/stripes/white/full, +/turf/open/floor/iron, +/area/station/hallway/secondary/exit/departure_lounge) "wJM" = ( /obj/structure/lattice/catwalk, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -68054,17 +68022,12 @@ /turf/open/floor/wood, /area/station/command/meeting_room) "wWh" = ( -/obj/effect/turf_decal/trimline/neutral/filled/line{ - dir = 1 - }, -/obj/effect/turf_decal/trimline/neutral/filled/corner, -/obj/structure/cable, -/obj/structure/disposalpipe/segment{ - dir = 4 +/obj/machinery/vending/cola/blue, +/obj/effect/turf_decal/siding/thinplating/dark{ + dir = 5 }, -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/iron, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/turf/open/floor/iron/dark, /area/station/hallway/secondary/exit) "wWn" = ( /obj/effect/decal/cleanable/dirt, @@ -185040,9 +185003,9 @@ bAj dJk vUE vUE +ftZ vUE -vUE -vUE +ftZ vUE nSI tXz @@ -186067,11 +186030,11 @@ qUB hAR veA lCy -lCy -lCy +cFb +kDH nzx +kDH cFb -lCy nSI tXz tXz @@ -186324,13 +186287,13 @@ jha qDn ajg qZZ -ajg +kAO hSt pgo kAO kAO udX -kAO +jhn duA bPO iVy @@ -186580,9 +186543,9 @@ fZS kDH vPB pzv +oGG geG geG -dLs aFZ geG geG @@ -186836,15 +186799,15 @@ lMg qbu riS gAH -wuF -wuF -wuF -cFg -aGa -aDI +aFP +oOP pTW wuF +aZm wuF +pTW +aFP +aDI aHw aHE aHS @@ -187093,15 +187056,15 @@ pSV pSV pSV pEx -pEx -pEx +jYT +wJF fmy wWh -wuF +snF aGq fmy -pEx -pEx +jYT +aGw pEx fmy dbV @@ -187350,15 +187313,15 @@ gbB pkD pSV bxC -akS +joi lyR -fmy -hNh -pEx -aGr -fmy +xWu +rUQ +rUQ +rUQ +xWu sWq -akS +eKD gXH fmy fmy @@ -187608,12 +187571,12 @@ aDN wzg tiM qSm -eKD -hsT -pKa +tIk +aGb +aGb +aGb +aGb aGb -aFP -aGw joi qSm swr @@ -187865,7 +187828,7 @@ aDN wzg tiM qFH -kIo +iur tEk jBk heS @@ -188121,10 +188084,10 @@ wXP loQ wAh cpK -qSm -kIo -qSm -sXo +nJx +nQq +lRx +jZe fmy aGs kIo @@ -188378,10 +188341,10 @@ fam aDN wzg tiM +qFH +nQq qSm -kIo -qSm -lRx +sJx rUQ aGt kIo @@ -188637,7 +188600,7 @@ vQX dJp jrc fio -nJx +qSm bYa rUQ lai @@ -189150,9 +189113,9 @@ ifU kLI kFu uCy -tiM +sXo qSm -nQq +bYa rUQ lai qSm @@ -189408,7 +189371,7 @@ hoN cHS svC nny -cOM +qSm jZe xWu uuS diff --git a/code/__DEFINES/_flags.dm b/code/__DEFINES/_flags.dm index 012ded7eac1..55b5b12b531 100644 --- a/code/__DEFINES/_flags.dm +++ b/code/__DEFINES/_flags.dm @@ -133,22 +133,36 @@ GLOBAL_LIST_INIT(bitflags, list(1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 204 the atom/checkpass() proc uses them (tables will call movable atom checkpass(PASSTABLE) for example) */ //flags for pass_flags +/// Allows you to pass over tables. #define PASSTABLE (1<<0) +/// Allows you to pass over glass(this generally includes anything see-through that's glass-adjacent, ie. windows, windoors, airlocks with glass, etc.) #define PASSGLASS (1<<1) +/// Allows you to pass over grilles. #define PASSGRILLE (1<<2) +/// Allows you to pass over blob tiles. #define PASSBLOB (1<<3) +/// Allows you to pass over mobs. #define PASSMOB (1<<4) +/// Allows you to pass over closed turfs, ie. walls. #define PASSCLOSEDTURF (1<<5) /// Let thrown things past us. **ONLY MEANINGFUL ON pass_flags_self!** #define LETPASSTHROW (1<<6) +/// Allows you to pass over machinery, ie. vending machines, computers, protolathes, etc. #define PASSMACHINE (1<<7) +/// Allows you to pass over structures, ie. racks, tables(if you don't already have PASSTABLE), etc. #define PASSSTRUCTURE (1<<8) +/// Allows you to pass over plastic flaps, often found at cargo or MULE dropoffs. #define PASSFLAPS (1<<9) +/// Allows you to pass over airlocks and mineral doors. #define PASSDOORS (1<<10) +/// Allows you to pass over vehicles, ie. mecha, secways, the pimpin' ride, etc. #define PASSVEHICLE (1<<11) +/// Allows you to pass over dense items. #define PASSITEM (1<<12) /// Do not intercept click attempts during Adjacent() checks. See [turf/proc/ClickCross]. **ONLY MEANINGFUL ON pass_flags_self!** #define LETPASSCLICKS (1<<13) +/// Allows you to pass over windows and window-adjacent stuff, like windows and windoors. Does not include airlocks with glass in them. +#define PASSWINDOW (1<<14) //Movement Types #define GROUND (1<<0) diff --git a/code/__DEFINES/traits/declarations.dm b/code/__DEFINES/traits/declarations.dm index 1c48d6d1239..a2d8a8f30a9 100644 --- a/code/__DEFINES/traits/declarations.dm +++ b/code/__DEFINES/traits/declarations.dm @@ -317,6 +317,8 @@ Remember to update _globalvars/traits.dm if you're adding/removing/renaming trai /// Is a medbot healing you #define TRAIT_MEDIBOTCOMINGTHROUGH "medbot" #define TRAIT_PASSTABLE "passtable" +/// Lets you fly through windows +#define TRAIT_PASSWINDOW "passwindow" /// Makes you immune to flashes #define TRAIT_NOFLASH "noflash" /// prevents xeno huggies implanting skeletons diff --git a/code/__DEFINES/traits/sources.dm b/code/__DEFINES/traits/sources.dm index ae3d7ae24be..dd237bf54b7 100644 --- a/code/__DEFINES/traits/sources.dm +++ b/code/__DEFINES/traits/sources.dm @@ -183,6 +183,8 @@ #define TRAIT_SUBTREE_REQUIRED_OPERATIONAL_DATUM "element-required" /// Trait applied by MODsuits. #define MOD_TRAIT "mod" +/// Trait applied to tram passengers +#define TRAM_PASSENGER_TRAIT "tram-passenger" /// Trait granted by the berserker hood. #define BERSERK_TRAIT "berserk_trait" diff --git a/code/__HELPERS/mobs.dm b/code/__HELPERS/mobs.dm index c35c591bc7c..9f4fea5ed11 100644 --- a/code/__HELPERS/mobs.dm +++ b/code/__HELPERS/mobs.dm @@ -501,6 +501,19 @@ GLOBAL_LIST_EMPTY(species_list) if(!HAS_TRAIT(L, TRAIT_PASSTABLE)) L.pass_flags &= ~PASSTABLE +/proc/passwindow_on(target, source) + var/mob/living/target_mob = target + if (!HAS_TRAIT(target_mob, TRAIT_PASSWINDOW) && target_mob.pass_flags & PASSWINDOW) + ADD_TRAIT(target_mob, TRAIT_PASSWINDOW, INNATE_TRAIT) + ADD_TRAIT(target_mob, TRAIT_PASSWINDOW, source) + target_mob.pass_flags |= PASSWINDOW + +/proc/passwindow_off(target, source) + var/mob/living/target_mob = target + REMOVE_TRAIT(target_mob, TRAIT_PASSWINDOW, source) + if(!HAS_TRAIT(target_mob, TRAIT_PASSWINDOW)) + target_mob.pass_flags &= ~PASSWINDOW + /proc/dance_rotate(atom/movable/AM, datum/callback/callperrotate, set_original_dir=FALSE) set waitfor = FALSE var/originaldir = AM.dir diff --git a/code/_globalvars/bitfields.dm b/code/_globalvars/bitfields.dm index 6c5f013a379..ba2177ef64c 100644 --- a/code/_globalvars/bitfields.dm +++ b/code/_globalvars/bitfields.dm @@ -306,6 +306,7 @@ DEFINE_BITFIELD(pass_flags, list( "PASSGRILLE" = PASSGRILLE, "PASSMOB" = PASSMOB, "PASSTABLE" = PASSTABLE, + "PASSWINDOW" = PASSWINDOW, )) DEFINE_BITFIELD(resistance_flags, list( diff --git a/code/_globalvars/traits/_traits.dm b/code/_globalvars/traits/_traits.dm index 52aa401424e..77246f3c3dd 100644 --- a/code/_globalvars/traits/_traits.dm +++ b/code/_globalvars/traits/_traits.dm @@ -373,6 +373,7 @@ GLOBAL_LIST_INIT(traits_by_type, list( "TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG, "TRAIT_PARROT_PERCHED" = TRAIT_PARROT_PERCHED, "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, + "TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW, "TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER, "TRAIT_PERMANENTLY_MORTAL" = TRAIT_PERMANENTLY_MORTAL, "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, diff --git a/code/_globalvars/traits/admin_tooling.dm b/code/_globalvars/traits/admin_tooling.dm index 8fe99e95c6e..54f9db6b89c 100644 --- a/code/_globalvars/traits/admin_tooling.dm +++ b/code/_globalvars/traits/admin_tooling.dm @@ -162,6 +162,7 @@ GLOBAL_LIST_INIT(admin_visible_traits, list( "TRAIT_PARALYSIS_R_ARM" = TRAIT_PARALYSIS_R_ARM, "TRAIT_PARALYSIS_R_LEG" = TRAIT_PARALYSIS_R_LEG, "TRAIT_PASSTABLE" = TRAIT_PASSTABLE, + "TRAIT_PASSWINDOW" = TRAIT_PASSWINDOW, "TRAIT_PERFECT_ATTACKER" = TRAIT_PERFECT_ATTACKER, "TRAIT_PHOTOGRAPHER" = TRAIT_PHOTOGRAPHER, "TRAIT_PIERCEIMMUNE" = TRAIT_PIERCEIMMUNE, diff --git a/code/datums/elements/window_smash.dm b/code/datums/elements/window_smash.dm new file mode 100644 index 00000000000..fbe2674b86c --- /dev/null +++ b/code/datums/elements/window_smash.dm @@ -0,0 +1,30 @@ +/** + * # Window Smashing + * An element you put on mobs to let them smash through walls on movement + * For example, throwing someone through a glass window + */ +/datum/element/window_smashing + +/datum/element/window_smashing/Attach(datum/target, duration = 1.5 SECONDS) + . = ..() + if(!isliving(target)) + return ELEMENT_INCOMPATIBLE + var/mob/living/living_target = target + RegisterSignal(living_target, COMSIG_MOVABLE_MOVED, PROC_REF(flying_window_smash)) + passwindow_on(target, TRAM_PASSENGER_TRAIT) + addtimer(CALLBACK(src, PROC_REF(Detach), living_target), duration) + +/// Smash any windows that the mob is flying through +/datum/element/window_smashing/proc/flying_window_smash(atom/movable/flying_mob, atom/old_loc, direction) + SIGNAL_HANDLER + var/turf/target_turf = get_turf(flying_mob) + for(var/obj/structure/tram/tram_wall in target_turf) + tram_wall.smash_and_injure(flying_mob, old_loc, direction) + + for(var/obj/structure/window/window in target_turf) + window.smash_and_injure(flying_mob, old_loc, direction) + +/datum/element/window_smashing/Detach(datum/source) + UnregisterSignal(source, COMSIG_MOVABLE_MOVED) + passwindow_off(source, TRAM_PASSENGER_TRAIT) + return ..() diff --git a/code/game/machinery/doors/windowdoor.dm b/code/game/machinery/doors/windowdoor.dm index 1b690ee4f3b..bbe443bf380 100644 --- a/code/game/machinery/doors/windowdoor.dm +++ b/code/game/machinery/doors/windowdoor.dm @@ -14,7 +14,7 @@ visible = FALSE flags_1 = ON_BORDER_1 opacity = FALSE - pass_flags_self = PASSGLASS + pass_flags_self = PASSGLASS | PASSWINDOW can_atmos_pass = ATMOS_PASS_PROC interaction_flags_machine = INTERACT_MACHINE_WIRES_IF_OPEN | INTERACT_MACHINE_ALLOW_SILICON | INTERACT_MACHINE_OPEN_SILICON | INTERACT_MACHINE_REQUIRES_SILICON | INTERACT_MACHINE_OPEN set_dir_on_move = FALSE diff --git a/code/game/objects/structures.dm b/code/game/objects/structures.dm index 1943f0aa398..3d976b72cca 100644 --- a/code/game/objects/structures.dm +++ b/code/game/objects/structures.dm @@ -69,3 +69,10 @@ /obj/structure/animate_atom_living(mob/living/owner) new /mob/living/simple_animal/hostile/mimic/copy(drop_location(), src, owner) + +/// For when a mob comes flying through the window, smash it and damage the mob +/obj/structure/proc/smash_and_injure(mob/living/flying_mob, atom/oldloc, direction) + flying_mob.balloon_alert_to_viewers("smashed through!") + flying_mob.apply_damage(damage = rand(5, 15), damagetype = BRUTE, wound_bonus = 15, bare_wound_bonus = 25, sharpness = SHARP_EDGED, attack_direction = get_dir(src, oldloc)) + new /obj/effect/decal/cleanable/glass(get_step(flying_mob, flying_mob.dir)) + deconstruct(disassembled = FALSE) diff --git a/code/game/objects/structures/grille.dm b/code/game/objects/structures/grille.dm index 959f0c7a74c..fba9d5cecc4 100644 --- a/code/game/objects/structures/grille.dm +++ b/code/game/objects/structures/grille.dm @@ -9,7 +9,7 @@ base_icon_state = "grille" density = TRUE anchored = TRUE - pass_flags_self = PASSGRILLE + pass_flags_self = PASSGRILLE | PASSWINDOW obj_flags = CONDUCTS_ELECTRICITY obj_flags = CAN_BE_HIT | IGNORE_DENSITY pressure_resistance = 5*ONE_ATMOSPHERE diff --git a/code/game/objects/structures/window.dm b/code/game/objects/structures/window.dm index ab5d3b8dfbd..2231fb67121 100644 --- a/code/game/objects/structures/window.dm +++ b/code/game/objects/structures/window.dm @@ -14,7 +14,7 @@ armor_type = /datum/armor/structure_window can_atmos_pass = ATMOS_PASS_PROC rad_insulation = RAD_VERY_LIGHT_INSULATION - pass_flags_self = PASSGLASS + pass_flags_self = PASSGLASS | PASSWINDOW set_dir_on_move = FALSE flags_ricochet = RICOCHET_HARD receive_ricochet_chance_mod = 0.5 diff --git a/code/modules/transport/tram/tram_structures.dm b/code/modules/transport/tram/tram_structures.dm index ccf6a99d929..74532d87be7 100644 --- a/code/modules/transport/tram/tram_structures.dm +++ b/code/modules/transport/tram/tram_structures.dm @@ -31,6 +31,7 @@ opacity = FALSE anchored = TRUE flags_1 = PREVENT_CLICK_UNDER_1 + pass_flags_self = PASSWINDOW armor_type = /datum/armor/tram_structure smoothing_flags = SMOOTH_BITMASK smoothing_groups = SMOOTH_GROUP_TRAM_STRUCTURE diff --git a/code/modules/transport/transport_module.dm b/code/modules/transport/transport_module.dm index 89a7333865e..c33d729e75c 100644 --- a/code/modules/transport/transport_module.dm +++ b/code/modules/transport/transport_module.dm @@ -934,9 +934,10 @@ /obj/structure/transport/linear/tram/proc/estop_throw(throw_direction) for(var/mob/living/passenger in transport_contents) to_chat(passenger, span_userdanger("The tram comes to a sudden, grinding stop!")) + if(prob(17.5)) // sometimes you go through a window + passenger.AddElement(/datum/element/window_smashing, duration = 1.5 SECONDS) var/throw_target = get_edge_target_turf(src, throw_direction) - var/datum/callback/land_slam = new(passenger, TYPE_PROC_REF(/mob/living/, tram_slam_land)) - passenger.throw_at(throw_target, 400, 4, force = MOVE_FORCE_OVERPOWERING, callback = land_slam) + passenger.throw_at(throw_target, 30, 7, force = MOVE_FORCE_OVERPOWERING) /obj/structure/transport/linear/tram/slow transport_controller_type = /datum/transport_controller/linear/tram/slow diff --git a/tgstation.dme b/tgstation.dme index 46876100502..eda46613785 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1596,6 +1596,7 @@ #include "code\datums\elements\weather_listener.dm" #include "code\datums\elements\web_walker.dm" #include "code\datums\elements\wheel.dm" +#include "code\datums\elements\window_smash.dm" #include "code\datums\elements\decals\_decal.dm" #include "code\datums\elements\decals\blood.dm" #include "code\datums\elements\food\dunkable.dm"