diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index d5650787dfa..d7563a4b106 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -328,6 +328,14 @@ dir = 4 }, /area/station/science/xenobiology) +"ahu" = ( +/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/engineering/supermatter/room) "ahy" = ( /obj/structure/cable, /obj/effect/turf_decal/stripes, @@ -598,6 +606,16 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/starboard) +"amU" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/gulag_item_reclaimer{ + pixel_y = 24 + }, +/turf/open/floor/iron/dark, +/area/station/security/processing) "amV" = ( /obj/structure/lattice/catwalk, /obj/structure/railing, @@ -784,10 +802,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) -"aqV" = ( -/obj/structure/chair/sofa/bench/left, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "aqW" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/chair/sofa/bench/right{ @@ -2652,6 +2666,17 @@ /obj/machinery/light/dim/directional/north, /turf/open/floor/iron/smooth, /area/station/engineering/atmos) +"bjg" = ( +/obj/machinery/incident_display/delam/directional/north, +/obj/effect/turf_decal/stripes/line{ + dir = 9 + }, +/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/smooth, +/area/station/engineering/supermatter/room) "bjp" = ( /obj/structure/cable, /obj/structure/rack, @@ -5069,12 +5094,6 @@ /obj/machinery/duct, /turf/open/floor/iron/kitchen/small, /area/station/security/prison/mess) -"cgs" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/structure/extinguisher_cabinet/directional/west, -/obj/machinery/vending/wardrobe/atmos_wardrobe, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "cgy" = ( /obj/effect/turf_decal/stripes/red/line{ dir = 4 @@ -7335,11 +7354,6 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/engineering/atmos) -"dcp" = ( -/obj/effect/decal/cleanable/dirt, -/obj/machinery/camera/autoname/directional/north, -/turf/open/floor/iron/small, -/area/station/engineering/atmos) "dcG" = ( /obj/machinery/atmospherics/pipe/smart/manifold/pink/visible{ dir = 8 @@ -8131,15 +8145,6 @@ /obj/item/airlock_painter, /turf/open/floor/iron/small, /area/station/engineering/atmos) -"dsr" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/machinery/atmospherics/pipe/smart/simple/cyan/visible, -/obj/effect/decal/cleanable/dirt, -/obj/structure/sign/delamination_counter/directional/west, -/turf/open/floor/iron/smooth, -/area/station/engineering/supermatter/room) "dst" = ( /obj/effect/turf_decal/siding/white{ dir = 4 @@ -12375,10 +12380,6 @@ /obj/machinery/light/directional/south, /turf/open/floor/iron/small, /area/station/engineering/atmos) -"eVb" = ( -/obj/structure/closet/secure_closet/engineering_welding, -/turf/open/floor/iron/small, -/area/station/engineering/atmos) "eVe" = ( /obj/effect/turf_decal/stripes/white/line{ dir = 6 @@ -13703,6 +13704,11 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"fwn" = ( +/obj/structure/closet/secure_closet/engineering_welding, +/obj/item/radio/intercom/directional/south, +/turf/open/floor/iron/small, +/area/station/engineering/atmos) "fwF" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment, @@ -14230,12 +14236,6 @@ }, /turf/open/floor/iron/textured_large, /area/station/engineering/break_room) -"fDz" = ( -/obj/structure/chair/sofa/bench/right, -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "fDC" = ( /obj/structure/disposalpipe/segment, /turf/open/floor/iron, @@ -17016,15 +17016,6 @@ /obj/machinery/portable_atmospherics/canister/plasma, /turf/open/floor/plating, /area/station/engineering/atmos/storage/gas) -"gDV" = ( -/obj/structure/table, -/obj/item/storage/box/prisoner{ - pixel_y = 6 - }, -/obj/machinery/light/cold/directional/north, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron, -/area/station/security/tram) "gEc" = ( /obj/structure/closet/emcloset, /turf/open/floor/plating, @@ -17165,15 +17156,6 @@ }, /turf/open/floor/iron/smooth, /area/station/security/checkpoint/customs) -"gHn" = ( -/obj/machinery/computer/security/mining, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/status_display/ai/directional/north, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "gHA" = ( /obj/structure/chair/wood{ dir = 8 @@ -17182,24 +17164,6 @@ /obj/machinery/light/small/directional/south, /turf/open/floor/wood, /area/station/service/chapel/funeral) -"gHG" = ( -/obj/machinery/computer/cargo/request, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 1 - }, -/obj/machinery/light/cold/directional/north, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) -"gHJ" = ( -/obj/structure/hedge, -/obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/effect/turf_decal/siding/brown{ - dir = 5 - }, -/turf/open/floor/iron/smooth, -/area/station/command/bridge) "gHP" = ( /obj/structure/hedge, /obj/effect/mapping_helpers/broken_floor, @@ -22660,6 +22624,15 @@ /obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"ixR" = ( +/obj/structure/hedge, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/brown{ + dir = 5 + }, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "ixU" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/effect/decal/cleanable/dirt, @@ -23550,6 +23523,12 @@ }, /turf/open/floor/iron/dark/small, /area/station/medical/psychology) +"iOp" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/extinguisher_cabinet/directional/west, +/obj/machinery/vending/wardrobe/atmos_wardrobe, +/turf/open/floor/iron, +/area/station/engineering/atmospherics_engine) "iOq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -23649,6 +23628,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/station/maintenance/hallway/abandoned_command) +"iQr" = ( +/obj/structure/table, +/obj/item/storage/box/prisoner{ + pixel_y = 6 + }, +/obj/machinery/light/cold/directional/north, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/incident_display/tram/directional/north, +/turf/open/floor/iron, +/area/station/security/tram) "iQv" = ( /obj/effect/turf_decal/stripes/line{ dir = 10 @@ -25314,6 +25303,12 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/aft) +"jwI" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/effect/decal/cleanable/dirt, +/obj/machinery/portable_atmospherics/canister, +/turf/open/floor/iron, +/area/station/engineering/atmospherics_engine) "jxd" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible/layer2{ dir = 9 @@ -29685,6 +29680,15 @@ /obj/structure/sign/poster/official/random/directional/north, /turf/open/floor/plating, /area/station/hallway/secondary/dock) +"kYp" = ( +/obj/machinery/computer/security/mining, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/incident_display/dual/directional/north, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "kYG" = ( /obj/structure/cable, /turf/open/floor/iron, @@ -30383,11 +30387,6 @@ /obj/item/pickaxe, /turf/open/misc/asteroid, /area/station/maintenance/starboard/greater) -"lib" = ( -/obj/structure/chair/sofa/bench, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/port/aft) "liG" = ( /obj/structure/cable, /obj/structure/table/glass, @@ -33463,6 +33462,11 @@ }, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"mlW" = ( +/obj/structure/chair/sofa/bench/left, +/obj/machinery/airalarm/directional/north, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "mmf" = ( /obj/structure/table, /obj/effect/mapping_helpers/broken_floor, @@ -35124,12 +35128,6 @@ dir = 8 }, /area/station/command/heads_quarters/hos) -"mRj" = ( -/obj/structure/chair/sofa/bench/right, -/obj/machinery/light/small/directional/north, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/turf/open/floor/iron, -/area/station/security/tram) "mRl" = ( /obj/machinery/door/airlock/engineering{ name = "Smoke Room" @@ -39568,16 +39566,6 @@ /obj/machinery/camera/autoname/directional/north, /turf/open/floor/iron, /area/station/security/lockers) -"oAu" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 9 - }, -/obj/machinery/atmospherics/pipe/smart/simple/green/visible{ - dir = 4 - }, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/iron/smooth, -/area/station/engineering/supermatter/room) "oAA" = ( /obj/structure/closet/emcloset, /obj/effect/mapping_helpers/broken_floor, @@ -45675,12 +45663,6 @@ /obj/effect/turf_decal/stripes/red/line, /turf/open/floor/iron/small, /area/station/hallway/secondary/exit/departure_lounge) -"qAz" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/effect/decal/cleanable/dirt, -/obj/machinery/portable_atmospherics/canister, -/turf/open/floor/iron, -/area/station/engineering/atmospherics_engine) "qAE" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/landmark/generic_maintenance_landmark, @@ -47304,6 +47286,10 @@ /obj/machinery/airalarm/directional/west, /turf/open/floor/iron, /area/station/hallway/secondary/dock) +"raR" = ( +/obj/structure/chair/sofa/bench, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "raX" = ( /obj/structure/chair/sofa/bamboo/right{ dir = 4 @@ -48845,15 +48831,6 @@ /obj/effect/mapping_helpers/broken_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/lesser) -"rAj" = ( -/obj/effect/mapping_helpers/broken_floor, -/obj/effect/decal/cleanable/dirt, -/obj/effect/landmark/generic_maintenance_landmark, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, -/turf/open/floor/iron, -/area/station/maintenance/department/medical/central) "rAn" = ( /obj/structure/closet/secure_closet/hydroponics, /obj/effect/turf_decal/bot, @@ -55926,6 +55903,13 @@ }, /turf/open/floor/plating, /area/station/commons/vacant_room/commissary) +"tNV" = ( +/obj/structure/chair/sofa/bench/right, +/obj/effect/mapping_helpers/broken_floor, +/obj/machinery/incident_display/tram/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/station/maintenance/port/aft) "tOk" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -56396,6 +56380,16 @@ /obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/white/corner, /area/station/science/xenobiology) +"tXv" = ( +/obj/effect/mapping_helpers/broken_floor, +/obj/effect/decal/cleanable/dirt, +/obj/effect/landmark/generic_maintenance_landmark, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/machinery/incident_display/tram/directional/north, +/turf/open/floor/iron, +/area/station/maintenance/department/medical/central) "tXw" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -57757,16 +57751,6 @@ /obj/item/canvas/twentythree_twentythree, /turf/open/floor/sepia, /area/station/maintenance/aft) -"usI" = ( -/obj/structure/table, -/obj/item/storage/box/bodybags{ - pixel_x = 4; - pixel_y = 5 - }, -/obj/effect/turf_decal/tile/dark_red/opposingcorners, -/obj/machinery/airalarm/directional/north, -/turf/open/floor/iron, -/area/station/security/tram) "usJ" = ( /turf/open/floor/iron/kitchen/small, /area/station/maintenance/aft) @@ -64048,6 +64032,12 @@ /obj/effect/turf_decal/tile/dark_red/fourcorners, /turf/open/floor/iron, /area/station/security/execution/transfer) +"wpG" = ( +/obj/machinery/camera/autoname/directional/north, +/obj/machinery/incident_display/dual/directional/north, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron/small, +/area/station/engineering/atmos) "wpO" = ( /turf/closed/wall/r_wall, /area/station/security/processing) @@ -65960,6 +65950,16 @@ }, /turf/open/floor/iron/white/corner, /area/station/hallway/primary/aft) +"wTI" = ( +/obj/structure/table, +/obj/item/storage/box/bodybags{ + pixel_x = 4; + pixel_y = 5 + }, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/airalarm/directional/east, +/turf/open/floor/iron, +/area/station/security/tram) "wTJ" = ( /obj/structure/table, /obj/item/computer_disk{ @@ -67558,16 +67558,6 @@ "xpf" = ( /turf/closed/wall/mineral/titanium/nodiagonal, /area/station/maintenance/disposal/incinerator) -"xpg" = ( -/obj/effect/decal/cleanable/dirt, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/gulag_item_reclaimer{ - pixel_y = 24 - }, -/turf/open/floor/iron/dark, -/area/station/security/processing) "xpl" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -68108,6 +68098,15 @@ /obj/effect/landmark/start/depsec/science, /turf/open/floor/iron, /area/station/security/checkpoint/science) +"xvE" = ( +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/obj/machinery/light/cold/directional/north, +/turf/open/floor/iron/smooth, +/area/station/command/bridge) "xvF" = ( /turf/open/floor/catwalk_floor/iron_dark, /area/station/science/xenobiology) @@ -70892,6 +70891,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"yfT" = ( +/obj/structure/chair/sofa/bench/right, +/obj/machinery/light/small/directional/north, +/obj/effect/turf_decal/tile/dark_red/opposingcorners, +/obj/machinery/incident_display/tram/directional/north, +/turf/open/floor/iron, +/area/station/security/tram) "yfX" = ( /turf/open/floor/plating/rust, /area/station/maintenance/fore/greater) @@ -79879,8 +79885,8 @@ buN byV bCu bCu -qAz -cgs +jwI +iOp jZl aJq aJq @@ -81662,7 +81668,7 @@ cwg xZV xZV xYG -oAu +bjg tod vFW aAt @@ -82439,7 +82445,7 @@ coA hzi bEG leh -dsr +ahu aVj bJL iQv @@ -86302,9 +86308,9 @@ dzT bpm dWp ybO -dcp +wpG tly -eVb +fwn lPf fNk glB @@ -86442,7 +86448,7 @@ dDB dDB rtQ rtQ -gDV +iQr vKG nne oKy @@ -86699,7 +86705,7 @@ blb blb blb rtQ -usI +wTI pzA abJ vKG @@ -86929,7 +86935,7 @@ wuc pvh lQG lzM -mRj +yfT uMu ulI lzM @@ -88738,7 +88744,7 @@ ujr rKv dYp trp -fDz +tNV xul knJ fAr @@ -88995,7 +89001,7 @@ etx fwS ePg trp -lib +raR knJ xul mxM @@ -89230,7 +89236,7 @@ bCf xur xLl xur -xpg +amU xzE wuc psX @@ -89252,7 +89258,7 @@ kIn sgT oRP trp -aqV +mlW knJ nFu mxM @@ -95839,7 +95845,7 @@ dDB dDB dDB ycC -gHn +kYp mPJ mPJ ipD @@ -96096,7 +96102,7 @@ dDB dDB dDB ycC -gHG +xvE mQz noq iqp @@ -96353,7 +96359,7 @@ blb blb ycC ycC -gHJ +ixR kHi gLM iqF @@ -98505,7 +98511,7 @@ xXG wgL hcv sSQ -rAj +tXv uOw eBQ qDD diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 86b7383f202..681281a0170 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -8149,7 +8149,6 @@ /obj/structure/cable, /obj/item/kirbyplants/random, /obj/effect/decal/cleanable/dirt, -/obj/machinery/light_switch/directional/north, /obj/machinery/camera/directional/north{ c_tag = "Engineering - Fore"; name = "engineering camera" @@ -19165,8 +19164,8 @@ "eNt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/radio/intercom/directional/north, /obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron, /area/station/engineering/supermatter/room) "eNB" = ( @@ -20113,9 +20112,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 1 }, -/obj/structure/sign/nanotrasen{ - pixel_y = 32 - }, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron, /area/station/engineering/main) "eYy" = ( @@ -45100,10 +45097,8 @@ /turf/open/floor/iron/white, /area/station/medical/virology) "ljO" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/status_display/ai/directional/north, -/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/brown/visible, +/obj/machinery/incident_display/delam/directional/south, /turf/open/floor/iron, /area/station/engineering/supermatter/room) "ljP" = ( @@ -49119,7 +49114,6 @@ /area/station/engineering/main) "mnh" = ( /obj/structure/table/reinforced, -/obj/machinery/airalarm/directional/north, /obj/effect/spawner/random/entertainment/cigarette_pack{ pixel_x = 3; pixel_y = 2 @@ -50087,7 +50081,6 @@ /area/station/command/corporate_showroom) "mzO" = ( /obj/structure/table/reinforced, -/obj/machinery/newscaster/directional/north, /obj/item/clipboard, /obj/item/toy/figure/engineer{ pixel_x = -6 @@ -50095,6 +50088,7 @@ /obj/item/toy/figure/atmos{ pixel_x = 6 }, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/wood, /area/station/engineering/break_room) "mzV" = ( @@ -76836,7 +76830,6 @@ /turf/open/floor/iron, /area/station/hallway/primary/central/aft) "tou" = ( -/obj/structure/sign/delamination_counter/directional/west, /obj/machinery/airalarm/directional/north, /obj/effect/mapping_helpers/airalarm/engine_access, /turf/open/floor/engine, @@ -79853,6 +79846,7 @@ /obj/machinery/airalarm/directional/east, /obj/structure/closet/firecloset, /obj/effect/turf_decal/delivery, +/obj/item/radio/intercom/directional/north, /turf/open/floor/iron, /area/station/engineering/supermatter/room) "tZi" = ( @@ -86830,6 +86824,9 @@ dir = 1 }, /obj/machinery/firealarm/directional/north, +/obj/machinery/light_switch/directional/north{ + pixel_x = -8 + }, /turf/open/floor/iron, /area/station/engineering/main) "vLd" = ( @@ -90012,7 +90009,7 @@ /obj/structure/cable, /obj/effect/landmark/start/hangover, /obj/effect/decal/cleanable/dirt, -/obj/structure/sign/delamination_counter/directional/north, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron, /area/station/engineering/break_room) "wyN" = ( @@ -116964,7 +116961,7 @@ glb dRK wcP yeO -nbZ +ljO nCi kmS fCk @@ -117222,7 +117219,7 @@ vrs qJI iQV nbZ -akM +nCi cOx uGn axu @@ -119266,7 +119263,7 @@ jZV jZV gAw gAw -ljO +qJs okr bWa nrP @@ -122085,7 +122082,7 @@ elK jyz xbD kgP -lDV +tqo bVI vvH oks diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 6bebdce2122..6519e987e80 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -695,7 +695,6 @@ /obj/machinery/light/directional/west, /obj/machinery/meter, /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/machinery/status_display/ai/directional/west, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "anK" = ( @@ -1608,6 +1607,10 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron/grimy, /area/station/service/bar/atrium) +"aAf" = ( +/obj/machinery/incident_display/delam, +/turf/closed/wall/r_wall, +/area/station/command/bridge) "aAi" = ( /obj/structure/window/reinforced/spawner/directional/north, /obj/structure/table/wood/fancy/red, @@ -23087,6 +23090,14 @@ }, /turf/open/floor/iron, /area/station/engineering/main) +"hqE" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/status_display/ai/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "hqV" = ( /obj/structure/sign/warning/radiation/rad_area, /turf/closed/wall/r_wall, @@ -52957,7 +52968,6 @@ }, /obj/machinery/light/directional/east, /obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/machinery/status_display/evac/directional/east, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "qQt" = ( @@ -59323,6 +59333,14 @@ /obj/effect/mapping_helpers/burnt_floor, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) +"sRL" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "sRQ" = ( /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table/wood, @@ -66449,7 +66467,6 @@ /obj/effect/turf_decal/stripes/line{ dir = 6 }, -/obj/structure/sign/delamination_counter/directional/north, /turf/open/floor/iron/white/textured, /area/station/command/heads_quarters/ce) "vkD" = ( @@ -74320,13 +74337,8 @@ /turf/open/floor/plating, /area/station/maintenance/department/electrical) "xFM" = ( -/obj/effect/turf_decal/stripes/line{ - dir = 1 - }, -/obj/machinery/light/directional/north, -/obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, -/obj/structure/sign/delamination_counter/directional/north, -/turf/open/floor/engine, +/obj/machinery/incident_display/delam, +/turf/closed/wall/r_wall, /area/station/engineering/supermatter/room) "xFU" = ( /obj/structure/barricade/wooden, @@ -235432,7 +235444,7 @@ gTK gTK myX sSJ -gka +xFM eEh fab eDC @@ -235443,7 +235455,7 @@ agm fNN esE wuo -cSH +sRL oyz mLV fDn @@ -235700,7 +235712,7 @@ spv dwy spv wuo -xFM +pry kUz mLV gka @@ -236985,7 +236997,7 @@ esE fNN esE wuo -cSH +hqE iam mLV fDn @@ -237939,7 +237951,7 @@ xwC utR pAZ bln -qWZ +aAf oxe vmj aqB diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 90ba3af8587..67817c6b959 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -9565,11 +9565,6 @@ /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/aisat_interior) "dHg" = ( -/obj/structure/sign/map/right{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-right-MS"; - pixel_y = 32 - }, /obj/machinery/computer/atmos_alert, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -9762,10 +9757,10 @@ "dKL" = ( /obj/structure/closet/toolcloset, /obj/effect/turf_decal/bot, -/obj/structure/sign/poster/official/random/directional/north, /obj/effect/turf_decal/tile/yellow{ dir = 4 }, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark/corner{ dir = 1 }, @@ -22913,7 +22908,6 @@ name = "Engineering Security Doors" }, /obj/effect/turf_decal/caution/stand_clear, -/obj/structure/sign/delamination_counter/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/break_room) "iug" = ( @@ -29219,15 +29213,11 @@ /turf/open/floor/iron, /area/station/command/teleporter) "kCq" = ( -/obj/structure/sign/map/left{ - desc = "A framed picture of the station. Clockwise from security at the top (red), you see engineering (yellow), science (purple), escape (red and white), medbay (green), arrivals (blue and white), and finally cargo (brown)."; - icon_state = "map-left-MS"; - pixel_y = 32 - }, /obj/machinery/firealarm/directional/west, /obj/machinery/modular_computer/preset/engineering, /obj/structure/cable, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark, /area/station/engineering/main) "kCr" = ( @@ -33669,7 +33659,6 @@ dir = 4; name = "Gas to Chamber" }, -/obj/structure/sign/delamination_counter/directional/north, /turf/open/floor/engine, /area/station/engineering/supermatter) "mkO" = ( @@ -34268,10 +34257,10 @@ }, /obj/item/wrench, /obj/item/multitool, -/obj/machinery/newscaster/directional/south, /obj/effect/turf_decal/tile/blue/half/contrasted{ dir = 1 }, +/obj/machinery/incident_display/delam/directional/south, /turf/open/floor/iron/dark, /area/station/command/bridge) "mwj" = ( @@ -57723,6 +57712,12 @@ /obj/structure/chair/stool/directional/east, /turf/open/floor/iron, /area/station/commons/locker) +"uJL" = ( +/obj/effect/turf_decal/stripes/line, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/incident_display/delam/directional/south, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "uKa" = ( /obj/machinery/atmospherics/pipe/smart/simple/cyan/visible{ dir = 6 @@ -66956,6 +66951,7 @@ "ybl" = ( /obj/structure/closet/secure_closet/engineering_personal, /obj/effect/turf_decal/delivery, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron, /area/station/engineering/main) "ybn" = ( @@ -110318,7 +110314,7 @@ fec rHn fJP tYc -mdk +uJL fJy bDW bDW diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 6ea693fd73c..670b19d3244 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -30190,9 +30190,7 @@ }, /area/station/command/gateway) "hOP" = ( -/obj/machinery/atmospherics/pipe/smart/manifold4w/orange/visible, -/obj/structure/cable, -/obj/structure/sign/delamination_counter/directional/east, +/obj/machinery/incident_display/delam/directional/south, /turf/open/floor/engine, /area/station/engineering/supermatter/room) "hOR" = ( @@ -42069,11 +42067,11 @@ /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) "kWD" = ( -/obj/structure/fireaxecabinet/directional/north, /obj/machinery/keycard_auth/directional/north{ pixel_x = -22 }, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/machinery/incident_display/delam/directional/north, /turf/open/floor/iron/dark, /area/station/command/bridge) "kWM" = ( @@ -71153,6 +71151,7 @@ /obj/item/stock_parts/cell/high, /obj/machinery/cell_charger, /obj/effect/turf_decal/tile/blue/fourcorners, +/obj/structure/fireaxecabinet/directional/east, /turf/open/floor/iron/dark, /area/station/command/bridge) "sAa" = ( @@ -73878,6 +73877,16 @@ /obj/machinery/camera/autoname/directional/south, /turf/open/floor/iron/dark/side, /area/station/hallway/floor2/aft) +"tjV" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "tkb" = ( /obj/effect/mapping_helpers/airlock/access/any/engineering/maintenance, /obj/structure/cable, @@ -92700,6 +92709,7 @@ "yhO" = ( /obj/machinery/suit_storage_unit/engine, /obj/structure/window/spawner/directional/east, +/obj/machinery/incident_display/delam/directional/south, /turf/open/floor/iron/dark/textured_corner{ dir = 1 }, @@ -138347,7 +138357,7 @@ oqA bNR klY klY -hOP +klY nHv cAf klY @@ -138598,7 +138608,7 @@ oIy bIW oIy oIy -pso +tjV xgW xgW pUf @@ -139126,7 +139136,7 @@ uyD uyD fws wOm -xgW +unW dEc dEc dEc @@ -139383,7 +139393,7 @@ jjt mVf mVF wOm -unW +hOP dEc mSe uov diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 65843b3f982..7a5495c59aa 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -4604,13 +4604,13 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/machinery/airalarm/directional/north, /obj/structure/disposalpipe/segment{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, +/obj/structure/fireaxecabinet/directional/north, /turf/open/floor/iron, /area/station/command/bridge) "aAE" = ( @@ -8019,10 +8019,10 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/structure/sign/clock/directional/north, /obj/machinery/camera/directional/north{ c_tag = "Command - Bridge North" }, +/obj/machinery/incident_display/dual/directional/north, /turf/open/floor/iron, /area/station/command/bridge) "bsW" = ( @@ -12819,12 +12819,15 @@ /turf/open/floor/iron/checker, /area/station/service/kitchen) "cZo" = ( -/obj/structure/sign/collision_counter{ - pixel_x = -4; - pixel_y = 2 +/obj/effect/turf_decal/trimline/blue/filled/line, +/obj/effect/turf_decal/trimline/neutral/filled/warning, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/turf/closed/wall, -/area/station/medical/medbay/lobby) +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/incident_display/dual/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/tram/center) "cZz" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -16302,7 +16305,6 @@ }, /obj/machinery/newscaster/directional/south, /obj/structure/reagent_dispensers/water_cooler, -/obj/structure/sign/delamination_counter/directional/west, /turf/open/floor/iron, /area/station/engineering/break_room) "eqJ" = ( @@ -18723,7 +18725,7 @@ /area/station/science/ordnance/testlab) "fnl" = ( /obj/machinery/light/directional/east, -/obj/item/radio/intercom/directional/east, +/obj/machinery/newscaster/directional/east, /turf/open/floor/iron/dark/side{ dir = 1 }, @@ -21382,7 +21384,6 @@ dir = 10; network = list("ss13","engine","engineering") }, -/obj/structure/sign/delamination_counter/directional/south, /turf/open/floor/engine, /area/station/engineering/supermatter) "gpD" = ( @@ -24210,6 +24211,7 @@ /obj/structure/disposalpipe/segment{ dir = 10 }, +/obj/machinery/incident_display/tram/directional/north, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "hvJ" = ( @@ -24918,6 +24920,7 @@ c_tag = "Civilian - Recreational Area North-West" }, /obj/item/toy/plush/lizard_plushie/space/green, +/obj/machinery/incident_display/dual/directional/north, /turf/open/floor/iron, /area/station/commons/fitness/recreation) "hMs" = ( @@ -25230,6 +25233,7 @@ /obj/item/storage/toolbox/emergency, /obj/item/wrench, /obj/item/assembly/signaler, +/obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/station/command/bridge) "hSs" = ( @@ -28088,9 +28092,6 @@ /turf/open/floor/iron, /area/station/commons/fitness/recreation) "iWm" = ( -/obj/structure/sign/collision_counter{ - pixel_x = -32 - }, /obj/structure/table/reinforced, /obj/item/storage/medkit/regular{ pixel_x = -5; @@ -28100,6 +28101,7 @@ pixel_x = 8; pixel_y = 4 }, +/obj/item/radio/intercom/directional/west, /turf/open/floor/iron, /area/station/command/bridge) "iWz" = ( @@ -32152,7 +32154,6 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 1 }, -/obj/structure/fireaxecabinet/directional/north, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/cable, @@ -34182,9 +34183,6 @@ /obj/structure/disposalpipe/trunk{ dir = 2 }, -/obj/structure/sign/collision_counter{ - pixel_x = 32 - }, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "lcn" = ( @@ -37769,6 +37767,13 @@ name = "hyper-reinforced wall" }, /area/station/science/ordnance/bomb) +"mpO" = ( +/obj/effect/turf_decal/trimline/neutral/filled/line{ + dir = 1 + }, +/obj/machinery/newscaster/directional/north, +/turf/open/floor/iron, +/area/station/commons/fitness/recreation) "mpX" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/structure/table/wood, @@ -41349,7 +41354,6 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, -/obj/machinery/newscaster/directional/north, /obj/item/pai_card, /turf/open/floor/iron, /area/station/commons/fitness/recreation) @@ -43035,7 +43039,10 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 }, -/obj/structure/extinguisher_cabinet/directional/north, +/obj/machinery/incident_display/tram/directional/north{ + name = "darwin award counter"; + desc = "A display that indicates how many dents that'll need fixed after the shift is over." + }, /turf/open/floor/iron, /area/station/maintenance/port/central) "onW" = ( @@ -44362,6 +44369,7 @@ dir = 8 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/extinguisher_cabinet/directional/east, /turf/open/floor/iron, /area/station/maintenance/port/central) "oRV" = ( @@ -49313,11 +49321,6 @@ /obj/structure/table, /obj/item/storage/toolbox/emergency, /obj/item/crowbar, -/obj/structure/sign/collision_counter{ - desc = "A display that indicates how many dents that'll need fixed after the shift is over."; - name = "darwin award counter"; - pixel_x = 32 - }, /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron, /area/station/maintenance/port/central) @@ -54688,6 +54691,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/disposal) +"sCp" = ( +/obj/effect/turf_decal/stripes/line{ + dir = 1 + }, +/obj/structure/cable, +/obj/machinery/incident_display/delam/directional/north, +/turf/open/floor/engine, +/area/station/engineering/supermatter/room) "sCv" = ( /obj/structure/table/wood, /obj/machinery/light/dim/directional/north, @@ -58374,10 +58385,10 @@ /turf/closed/wall, /area/station/hallway/secondary/entry) "tPV" = ( -/obj/machinery/status_display/evac/directional/north, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/machinery/incident_display/dual/directional/north, /turf/open/floor/iron, /area/station/engineering/main) "tPW" = ( @@ -102205,7 +102216,7 @@ sHH sHH cjy qHs -vqH +sCp fuj xEy miU @@ -152290,7 +152301,7 @@ jvf ook mGQ yiM -fpg +mpO heY ddh mQp @@ -168993,8 +169004,8 @@ gUF rlO ykP lej -fxs -lDt +cZo +wyd mJc kin juV @@ -169251,7 +169262,7 @@ uGM qwI lej fxs -cZo +wyd wyd rks rks diff --git a/code/controllers/subsystem/persistence.dm b/code/controllers/subsystem/persistence.dm index 0b09f050b1f..06572c6e20c 100644 --- a/code/controllers/subsystem/persistence.dm +++ b/code/controllers/subsystem/persistence.dm @@ -22,6 +22,9 @@ SUBSYSTEM_DEF(persistence) var/list/obj/structure/sign/picture_frame/photo_frames var/list/obj/item/storage/photo_album/photo_albums var/rounds_since_engine_exploded = 0 + var/delam_highscore = 0 + var/tram_hits_this_round = 0 + var/tram_hits_last_round = 0 /datum/controller/subsystem/persistence/Initialize() load_poly() @@ -33,7 +36,7 @@ SUBSYSTEM_DEF(persistence) load_randomized_recipes() load_custom_outfits() load_delamination_counter() - + load_tram_counter() load_adventures() return SS_INIT_SUCCESS @@ -48,6 +51,8 @@ SUBSYSTEM_DEF(persistence) save_scars() save_custom_outfits() save_delamination_counter() + if(SStramprocess.can_fire) + save_tram_counter() ///Loads up Poly's speech buffer. /datum/controller/subsystem/persistence/proc/load_poly() @@ -531,19 +536,35 @@ SUBSYSTEM_DEF(persistence) WRITE_FILE(file, json_encode(data)) -/// Location where we save the information about how many rounds it has been since the engine blew up +/// Location where we save the information about how many rounds it has been since the engine blew up/tram hits #define DELAMINATION_COUNT_FILEPATH "data/rounds_since_delamination.txt" +#define DELAMINATION_HIGHSCORE_FILEPATH "data/delamination_highscore.txt" +#define TRAM_COUNT_FILEPATH "data/tram_hits_last_round.txt" /datum/controller/subsystem/persistence/proc/load_delamination_counter() if (!fexists(DELAMINATION_COUNT_FILEPATH)) return rounds_since_engine_exploded = text2num(file2text(DELAMINATION_COUNT_FILEPATH)) - for (var/obj/structure/sign/delamination_counter/sign as anything in GLOB.map_delamination_counters) - sign.update_count(rounds_since_engine_exploded) + if (fexists(DELAMINATION_HIGHSCORE_FILEPATH)) + delam_highscore = text2num(file2text(DELAMINATION_HIGHSCORE_FILEPATH)) + for (var/obj/machinery/incident_display/sign as anything in GLOB.map_delamination_counters) + sign.update_delam_count(rounds_since_engine_exploded, delam_highscore) /datum/controller/subsystem/persistence/proc/save_delamination_counter() rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_COUNT_FILEPATH) + if((rounds_since_engine_exploded + 1) > delam_highscore) + rustg_file_write("[rounds_since_engine_exploded + 1]", DELAMINATION_HIGHSCORE_FILEPATH) + +/datum/controller/subsystem/persistence/proc/load_tram_counter() + if(!fexists(TRAM_COUNT_FILEPATH)) + return + tram_hits_last_round = text2num(file2text(TRAM_COUNT_FILEPATH)) + +/datum/controller/subsystem/persistence/proc/save_tram_counter() + rustg_file_write("[tram_hits_this_round]", TRAM_COUNT_FILEPATH) #undef DELAMINATION_COUNT_FILEPATH +#undef DELAMINATION_HIGHSCORE_FILEPATH +#undef TRAM_COUNT_FILEPATH #undef FILE_RECENT_MAPS #undef KEEP_ROUNDS_MAP diff --git a/code/game/machinery/incident_display.dm b/code/game/machinery/incident_display.dm new file mode 100644 index 00000000000..00da0ffa21a --- /dev/null +++ b/code/game/machinery/incident_display.dm @@ -0,0 +1,374 @@ +GLOBAL_LIST_EMPTY(map_delamination_counters) + +/// Display days since last delam on incident sign +#define DISPLAY_DELAM (1<<0) +/// Display current number of tram hits on incident sign +#define DISPLAY_TRAM (1<<1) + +DEFINE_BITFIELD(sign_features, list( + "DISPLAY_DELAM" = DISPLAY_DELAM, + "DISPLAY_TRAM" = DISPLAY_TRAM, +)) + +#define TREND_RISING "rising" +#define TREND_FALLING "falling" + +#define NAME_DUAL "safety incident display" +#define NAME_DELAM "delamination incident display" +#define NAME_TRAM "tram incident display" + +#define DESC_DUAL "A display that provides information on the station's safety record. Features an advert for SAFETY MOTH." +#define DESC_DELAM "A signs describe how long it's been since the last delamination incident. Features an advert for SAFETY MOTH." +#define DESC_TRAM "A display that provides the number of tram related safety incidents this shift. Features an advert for SAFETY MOTH." + +/** + * List of safety statistic signs on the map that have delam counting enabled. + * Required as persistence subsystem loads after the ones present at mapload, and to reset to 0 upon explosion. + */ + +/obj/machinery/incident_display + name = NAME_DELAM + desc = DESC_DELAM + icon = 'icons/obj/machines/incident_display.dmi' + icon_preview = "stat_display_delam" + icon_state = "stat_display_delam" + verb_say = "beeps" + verb_ask = "bloops" + verb_exclaim = "blares" + idle_power_usage = 450 + max_integrity = 150 + integrity_failure = 0.75 + custom_materials = list(/datum/material/titanium = SHEET_MATERIAL_AMOUNT * 4, /datum/material/alloy/titaniumglass = SHEET_MATERIAL_AMOUNT * 4) + /// What statistics we want the sign to display + var/sign_features = DISPLAY_DELAM + /// Tram hits before hazard warning + var/hit_threshold = 0 + /// Tram hits + var/hit_count = 0 + /// Shifts without delam + var/last_delam = 0 + /// Delam record high-score + var/delam_record = 0 + +/obj/machinery/incident_display/dual + name = NAME_DUAL + desc = DESC_DUAL + icon_preview = "stat_display_dual" + icon_state = "stat_display_dual" + sign_features = DISPLAY_DELAM | DISPLAY_TRAM + +/obj/machinery/incident_display/delam + name = NAME_DELAM + desc = DESC_DELAM + icon_preview = "stat_display_delam" + icon_state = "stat_display_delam" + sign_features = DISPLAY_DELAM + +/obj/machinery/incident_display/tram + name = NAME_TRAM + desc = DESC_TRAM + icon_preview = "stat_display_tram" + icon_state = "stat_display_tram" + sign_features = DISPLAY_TRAM + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display, 32) +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/delam, 32) +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/dual, 32) +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32) + +/obj/machinery/incident_display/Initialize(mapload) + ..() + return INITIALIZE_HINT_LATELOAD + +/obj/machinery/incident_display/LateInitialize() + . = ..() + GLOB.map_delamination_counters += src + update_delam_count(SSpersistence.rounds_since_engine_exploded, SSpersistence.delam_highscore) + for(var/obj/structure/industrial_lift/tram/tram as anything in GLOB.lifts) + RegisterSignal(tram, COMSIG_TRAM_COLLISION, PROC_REF(update_tram_count)) + + update_appearance() + +/obj/machinery/incident_display/Destroy() + GLOB.map_delamination_counters -= src + return ..() + +/obj/machinery/incident_display/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return FALSE + + if(atom_integrity >= max_integrity && !(machine_stat & BROKEN)) + balloon_alert(user, "it doesn't need repairs!") + return TRUE + + balloon_alert(user, "repairing display...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 0, volume=50)) + return TRUE + + balloon_alert(user, "repaired") + atom_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + update_appearance() + return TRUE + +// Switch modes with multitool +/obj/machinery/incident_display/multitool_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return FALSE + + if(sign_features == DISPLAY_TRAM) + tool.play_tool_sound(src) + balloon_alert(user, "set to dual") + name = NAME_DUAL + desc = DESC_DUAL + icon_state = "stat_display_dual" + sign_features = DISPLAY_DELAM | DISPLAY_TRAM + update_delam_count(SSpersistence.rounds_since_engine_exploded, SSpersistence.delam_highscore) + update_tram_count(src, SSpersistence.tram_hits_this_round) + update_appearance() + return TRUE + else if(sign_features == DISPLAY_DELAM) + tool.play_tool_sound(src) + balloon_alert(user, "set to tram") + name = NAME_TRAM + desc = DESC_TRAM + icon_state = "stat_display_tram" + sign_features = DISPLAY_TRAM + update_tram_count(src, SSpersistence.tram_hits_this_round) + update_appearance() + return TRUE + else if(sign_features == (DISPLAY_DELAM + DISPLAY_TRAM)) + tool.play_tool_sound(src) + balloon_alert(user, "set to delam") + name = NAME_DELAM + desc = DESC_DELAM + icon_state = "stat_display_delam" + sign_features = DISPLAY_DELAM + update_delam_count(SSpersistence.rounds_since_engine_exploded, SSpersistence.delam_highscore) + update_appearance() + return TRUE + +// EMP causes the display to display random numbers or outright break. +/obj/machinery/incident_display/emp_act(severity) + . = ..() + if(prob(50)) + set_machine_stat(machine_stat | BROKEN) + update_appearance() + return + name = NAME_DUAL + desc = DESC_DUAL + icon_state = "stat_display_dual" + sign_features = DISPLAY_DELAM | DISPLAY_TRAM + hit_threshold = rand(1,99) + hit_count = rand(1,99) + last_delam = rand(1,99) + delam_record = rand(1,99) + update_appearance() + +/obj/machinery/incident_display/deconstruct() + if(flags_1 & NODECONSTRUCT_1) + return + + new /obj/item/stack/sheet/mineral/titanium(drop_location(), 2) + new /obj/item/shard(drop_location()) + new /obj/item/shard(drop_location()) + + qdel(src) + +/obj/machinery/incident_display/proc/update_delam_count(new_count, record) + delam_record = record + last_delam = min(new_count, 199) + update_appearance() + +/obj/machinery/incident_display/proc/update_tram_count(source, tram_collisions) + SIGNAL_HANDLER + + hit_count = min(tram_collisions, 199) + update_appearance() + +/obj/machinery/incident_display/update_appearance(updates=ALL) + . = ..() + if(machine_stat & NOPOWER) + icon_state = "stat_display_blank" + set_light(0) + return + + if(machine_stat & BROKEN) + icon_state = "stat_display_broken" + set_light(l_range = 1.7, l_power = 1.5, l_color = LIGHT_COLOR_DARK_BLUE) + return + + if(sign_features == (DISPLAY_DELAM + DISPLAY_TRAM)) + icon_state = "stat_display_dual" + else if(sign_features == DISPLAY_DELAM) + icon_state = "stat_display_delam" + else if(sign_features == DISPLAY_TRAM) + icon_state = "stat_display_tram" + + set_light(l_range = 1.7, l_power = 1.5, l_color = LIGHT_COLOR_FAINT_BLUE) + +/obj/machinery/incident_display/update_overlays() + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + return + + var/mutable_appearance/moff_base_emissive = emissive_appearance(icon, "moff_base_emissive", src, alpha = src.alpha) + . += moff_base_emissive + + if(sign_features & DISPLAY_DELAM) + var/mutable_appearance/delam_base_emissive = emissive_appearance(icon, "delam_base_emissive", src, alpha = src.alpha) + var/delam_display_color + . += delam_base_emissive + if(!last_delam) + delam_display_color = LIGHT_COLOR_INTENSE_RED + else + delam_display_color = LIGHT_COLOR_HOLY_MAGIC + + var/delam_pos1 = last_delam % 10 + var/mutable_appearance/delam_pos1_overlay = mutable_appearance(icon, "num_[delam_pos1]") + var/mutable_appearance/delam_pos1_emissive = emissive_appearance(icon, "num_[delam_pos1]_e", src, alpha = src.alpha) + delam_pos1_overlay.color = delam_display_color + delam_pos1_overlay.pixel_w = 9 + delam_pos1_emissive.pixel_w = 9 + delam_pos1_overlay.pixel_z = 4 + delam_pos1_emissive.pixel_z = 4 + . += delam_pos1_overlay + . += delam_pos1_emissive + + var/delam_pos2 = (last_delam / 10) % 10 + var/mutable_appearance/delam_pos2_overlay = mutable_appearance(icon, "num_[delam_pos2]") + var/mutable_appearance/delam_pos2_emissive = emissive_appearance(icon, "num_[delam_pos2]_e", src, alpha = src.alpha) + delam_pos2_overlay.color = delam_display_color + delam_pos2_overlay.pixel_w = 4 + delam_pos2_emissive.pixel_w = 4 + delam_pos2_overlay.pixel_z = 4 + delam_pos2_emissive.pixel_z = 4 + . += delam_pos2_overlay + . += delam_pos2_emissive + + if(last_delam >= 100) + var/mutable_appearance/there_i_fixed_it_overlay = mutable_appearance(icon, "num_100_red") + var/mutable_appearance/there_i_fixed_it_emissive = emissive_appearance(icon, "num_100_red", src, alpha = src.alpha) + . += there_i_fixed_it_overlay + . += there_i_fixed_it_emissive + + if(last_delam == delam_record) + var/mutable_appearance/delam_trend_overlay = mutable_appearance(icon, TREND_RISING) + var/mutable_appearance/delam_trend_emissive = emissive_appearance(icon, "[TREND_RISING]_e", src, alpha = src.alpha) + delam_trend_overlay.color = LIGHT_COLOR_VIVID_GREEN + delam_trend_overlay.pixel_w = 1 + delam_trend_emissive.pixel_w = 1 + delam_trend_overlay.pixel_z = 6 + delam_trend_emissive.pixel_z = 6 + . += delam_trend_overlay + . += delam_trend_emissive + else + var/mutable_appearance/delam_trend_overlay = mutable_appearance(icon, TREND_FALLING) + var/mutable_appearance/delam_trend_emissive = emissive_appearance(icon, "[TREND_FALLING]_e", src, alpha = src.alpha) + delam_trend_overlay.color = LIGHT_COLOR_INTENSE_RED + delam_trend_overlay.pixel_w = 1 + delam_trend_emissive.pixel_w = 1 + delam_trend_overlay.pixel_z = 6 + delam_trend_emissive.pixel_z = 6 + . += delam_trend_overlay + . += delam_trend_emissive + + if(sign_features & DISPLAY_TRAM) + var/mutable_appearance/tram_base_emissive = emissive_appearance(icon, "tram_base_emissive", src, alpha = src.alpha) + var/tram_display_color = LIGHT_COLOR_BABY_BLUE + + var/tram_pos1 = hit_count % 10 + var/mutable_appearance/tram_pos1_overlay = mutable_appearance(icon, "num_[tram_pos1]") + var/mutable_appearance/tram_pos1_emissive = emissive_appearance(icon, "num_[tram_pos1]_e", src, alpha = src.alpha) + . += tram_base_emissive + tram_pos1_overlay.color = tram_display_color + tram_pos1_overlay.pixel_w = 9 + tram_pos1_emissive.pixel_w = 9 + tram_pos1_overlay.pixel_z = -6 + tram_pos1_emissive.pixel_z = -6 + . += tram_pos1_overlay + . += tram_pos1_emissive + + var/tram_pos2 = (hit_count / 10) % 10 + var/mutable_appearance/tram_pos2_overlay = mutable_appearance(icon, "num_[tram_pos2]") + var/mutable_appearance/tram_pos2_emissive = emissive_appearance(icon, "num_[tram_pos2]_e", src, alpha = src.alpha) + tram_pos2_overlay.color = tram_display_color + tram_pos2_overlay.pixel_w = 4 + tram_pos2_emissive.pixel_w = 4 + tram_pos2_overlay.pixel_z = -6 + tram_pos2_emissive.pixel_z = -6 + . += tram_pos2_overlay + . += tram_pos2_emissive + + if(hit_count >= 100) + var/mutable_appearance/there_i_fixed_it_overlay = mutable_appearance(icon, "num_100_blue") + var/mutable_appearance/there_i_fixed_it_emissive = emissive_appearance(icon, "num_100_blue", src, alpha = src.alpha) + . += there_i_fixed_it_overlay + . += there_i_fixed_it_emissive + + if(hit_count > SSpersistence.tram_hits_last_round) + var/mutable_appearance/tram_trend_overlay = mutable_appearance(icon, TREND_RISING) + var/mutable_appearance/tram_trend_emissive = emissive_appearance(icon, "[TREND_RISING]_e", src, alpha = src.alpha) + tram_trend_overlay.color = LIGHT_COLOR_INTENSE_RED + tram_trend_overlay.pixel_w = 1 + tram_trend_emissive.pixel_w = 1 + tram_trend_overlay.pixel_z = -4 + tram_trend_emissive.pixel_z = -4 + . += tram_trend_overlay + . += tram_trend_emissive + else + var/mutable_appearance/tram_trend_overlay = mutable_appearance(icon, TREND_FALLING) + var/mutable_appearance/tram_trend_emissive = emissive_appearance(icon, "[TREND_FALLING]_e", src, alpha = src.alpha) + tram_trend_overlay.color = LIGHT_COLOR_VIVID_GREEN + tram_trend_overlay.pixel_w = 1 + tram_trend_emissive.pixel_w = 1 + tram_trend_overlay.pixel_z = -4 + tram_trend_emissive.pixel_z = -4 + . += tram_trend_overlay + . += tram_trend_emissive + +/obj/machinery/incident_display/examine(mob/user) + . = ..() + + if(sign_features & DISPLAY_DELAM) + . += span_info("It has been [last_delam] shift\s since the last delamination event at this Nanotrasen facility.") + switch (last_delam) + if(0) + . += span_info("In case you didn't notice.
") + if(1) + . += span_info("Let's do better today.
") + if(2 to 5) + . += span_info("There's room for improvement.
") + if(6 to 10) + . += span_info("Good work!
") + if(69) + . += span_info("Nice.
") + else + . += span_info("Incredible!
") + + if(sign_features & DISPLAY_TRAM) + . += span_info("The station has had [hit_count] tram incident\s this shift.") + switch (hit_count) + if(0) + . += span_info("Fantastic! Champions of safety.
") + if(1) + . += span_info("Let's do better tomorrow.
") + if(2 to 5) + . += span_info("There's room for improvement.
") + if(6 to 10) + . += span_info("Good work! Nanotrasen's finest!
") + if(69) + . += span_info("Nice.
") + else + . += span_info("Incredible! You're probably reading this from medbay.
") + +#undef DISPLAY_DELAM +#undef DISPLAY_TRAM + +#undef NAME_DUAL +#undef NAME_DELAM +#undef NAME_TRAM + +#undef DESC_DUAL +#undef DESC_DELAM +#undef DESC_TRAM diff --git a/code/game/objects/structures/signs/signs_interactive.dm b/code/game/objects/structures/signs/signs_interactive.dm index 5c3b85c7764..1e407034f4a 100644 --- a/code/game/objects/structures/signs/signs_interactive.dm +++ b/code/game/objects/structures/signs/signs_interactive.dm @@ -1,5 +1,3 @@ -#define COLLISION_HAZARD_THRESHOLD 11 - /obj/structure/sign/clock name = "wall clock" desc = "It's your run-of-the-mill wall clock showing both the local Coalition Standard Time and the galactic Treaty Coordinated Time. Perfect for staring at instead of working." @@ -26,141 +24,3 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/calendar, 32) . += span_info("Events:") for(var/holidayname in GLOB.holidays) . += span_info("[holidayname]") - -/** - * List of delamination counter signs on the map. - * Required as persistence subsystem loads after the ones present at mapload, and to reset to 0 upon explosion. - */ -GLOBAL_LIST_EMPTY(map_delamination_counters) - -/obj/structure/sign/delamination_counter - name = "delamination counter" - sign_change_name = "Flip Sign- Supermatter Delamination" - desc = "A pair of flip signs describe how long it's been since the last delamination incident." - icon_state = "days_since_explosion" - is_editable = TRUE - var/since_last = 0 - -MAPPING_DIRECTIONAL_HELPERS(/obj/structure/sign/delamination_counter, 32) - -/obj/structure/sign/delamination_counter/Initialize(mapload) - . = ..() - GLOB.map_delamination_counters += src - if (!mapload) - update_count(SSpersistence.rounds_since_engine_exploded) - -/obj/structure/sign/delamination_counter/Destroy() - GLOB.map_delamination_counters -= src - return ..() - -/obj/structure/sign/delamination_counter/proc/update_count(new_count) - since_last = min(new_count, 99) - update_appearance() - -/obj/structure/sign/delamination_counter/update_overlays() - . = ..() - - var/ones = since_last % 10 - var/mutable_appearance/ones_overlay = mutable_appearance('icons/obj/signs.dmi', "days_[ones]") - ones_overlay.pixel_w = 4 - . += ones_overlay - - var/tens = (since_last / 10) % 10 - var/mutable_appearance/tens_overlay = mutable_appearance('icons/obj/signs.dmi', "days_[tens]") - tens_overlay.pixel_w = -5 - . += tens_overlay - -/obj/structure/sign/delamination_counter/examine(mob/user) - . = ..() - . += span_info("It has been [since_last] day\s since the last delamination event at a Nanotrasen facility.") - switch (since_last) - if (0) - . += span_info("In case you didn't notice.") - if(1) - . += span_info("Let's do better today.") - if(2 to 5) - . += span_info("There's room for improvement.") - if(6 to 10) - . += span_info("Good work!") - if(11 to INFINITY) - . += span_info("Incredible!") - -/obj/structure/sign/collision_counter - name = "incident counter" - sign_change_name = "Indicator board- Tram incidents" - desc = "A display that indicates how many tram related incidents have occured today." - icon_state = "tram_hits" - is_editable = TRUE - var/hit_count = 0 - var/tram_id = TRAM_LIFT_ID - /// Has the tram hit enough people it now flashes hazard lights? - var/hazard_flash = FALSE - -/obj/structure/sign/collision_counter/Initialize(mapload) - ..() - return INITIALIZE_HINT_LATELOAD - -/obj/structure/sign/collision_counter/LateInitialize() - . = ..() - for(var/obj/structure/industrial_lift/tram/tram as anything in GLOB.lifts) - if(tram.lift_id != tram_id) - continue - RegisterSignal(tram, COMSIG_TRAM_COLLISION, PROC_REF(new_hit)) - update_appearance() - -/obj/structure/sign/collision_counter/Destroy() - return ..() - -/obj/structure/sign/collision_counter/proc/new_hit(lift_master, collided_type) - SIGNAL_HANDLER - - if(!ismob(collided_type)) - return - - var/mob/victim = collided_type // Real players only, no gaming high score - if(!victim.client) - return - - hit_count++ - - if(hazard_flash) - update_appearance() - return - - if(hit_count == COLLISION_HAZARD_THRESHOLD) // When we hit the threshold, enable flashing the lights - hazard_flash = TRUE - icon_state = "tram_hits_alert" - update_appearance() - return - - update_appearance() - -/obj/structure/sign/collision_counter/update_overlays() - . = ..() - - var/ones = hit_count % 10 - var/mutable_appearance/ones_overlay = mutable_appearance('icons/obj/signs.dmi', "hits_[ones]") - ones_overlay.pixel_w = 4 - . += ones_overlay - - var/tens = (hit_count / 10) % 10 - var/mutable_appearance/tens_overlay = mutable_appearance('icons/obj/signs.dmi', "hits_[tens]") - tens_overlay.pixel_w = -5 - . += tens_overlay - -/obj/structure/sign/collision_counter/examine(mob/user) - . = ..() - . += span_info("The station has had [hit_count] incident\s this shift.") - switch (hit_count) - if(0) - . += span_info("Fantastic! Champions of safety.") - if(1) - . += span_info("Let's do better tomorrow.") - if(2 to 5) - . += span_info("There's room for improvement.") - if(6 to 10) - . += span_info("Good work! Nanotrasen's finest!") - if(11 to INFINITY) - . += span_info("Incredible! You're probably reading this from medbay.") - -#undef COLLISION_HAZARD_THRESHOLD diff --git a/code/modules/industrial_lift/industrial_lift.dm b/code/modules/industrial_lift/industrial_lift.dm index e5ac79af233..95880740068 100644 --- a/code/modules/industrial_lift/industrial_lift.dm +++ b/code/modules/industrial_lift/industrial_lift.dm @@ -424,7 +424,10 @@ GLOBAL_LIST_EMPTY(lifts) var/datum/callback/land_slam = new(collided, TYPE_PROC_REF(/mob/living/, tram_slam_land)) collided.throw_at(throw_target, 200 * collision_lethality, 4 * collision_lethality, callback = land_slam) - SEND_SIGNAL(src, COMSIG_TRAM_COLLISION, collided) + //increment the hit counter signs + if(ismob(collided) && collided.client) + SSpersistence.tram_hits_this_round++ + SEND_SIGNAL(src, COMSIG_TRAM_COLLISION, SSpersistence.tram_hits_this_round) unset_movement_registrations(exited_locs) group_move(things_to_move, going) diff --git a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm index c10342792e4..af2a6625701 100644 --- a/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm +++ b/code/modules/power/supermatter/supermatter_delamination/_sm_delam.dm @@ -21,9 +21,10 @@ GLOBAL_LIST_INIT(sm_delam_list, list( /// [/obj/machinery/power/supermatter_crystal/proc/count_down] /datum/sm_delam/proc/delaminate(obj/machinery/power/supermatter_crystal/sm) if (sm.is_main_engine) + SSpersistence.delam_highscore = SSpersistence.rounds_since_engine_exploded SSpersistence.rounds_since_engine_exploded = ROUNDCOUNT_ENGINE_JUST_EXPLODED - for (var/obj/structure/sign/delamination_counter/sign as anything in GLOB.map_delamination_counters) - sign.update_count(ROUNDCOUNT_ENGINE_JUST_EXPLODED) + for (var/obj/machinery/incident_display/sign as anything in GLOB.map_delamination_counters) + sign.update_delam_count(ROUNDCOUNT_ENGINE_JUST_EXPLODED) qdel(sm) #undef ROUNDCOUNT_ENGINE_JUST_EXPLODED diff --git a/icons/obj/machines/incident_display.dmi b/icons/obj/machines/incident_display.dmi new file mode 100644 index 00000000000..80d63134f1d Binary files /dev/null and b/icons/obj/machines/incident_display.dmi differ diff --git a/icons/obj/signs.dmi b/icons/obj/signs.dmi index bddf5166764..cacb18fabda 100644 Binary files a/icons/obj/signs.dmi and b/icons/obj/signs.dmi differ diff --git a/tgstation.dme b/tgstation.dme index 8f28808910c..a00de40fbf5 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1570,6 +1570,7 @@ #include "code\game\machinery\hologram.dm" #include "code\game\machinery\hypnochair.dm" #include "code\game\machinery\igniter.dm" +#include "code\game\machinery\incident_display.dm" #include "code\game\machinery\iv_drip.dm" #include "code\game\machinery\launch_pad.dm" #include "code\game\machinery\lightswitch.dm" diff --git a/tools/UpdatePaths/Scripts/75699_incident_displays.txt b/tools/UpdatePaths/Scripts/75699_incident_displays.txt new file mode 100644 index 00000000000..4f3b295713d --- /dev/null +++ b/tools/UpdatePaths/Scripts/75699_incident_displays.txt @@ -0,0 +1,12 @@ +#comment Replaces delam/collision flipsigns with incident displays. https://github.com/tgstation/tgstation/pull/75699 + +/obj/structure/sign/collision_counter : /obj/machinery/incident_display/tram{@OLD} +/obj/structure/sign/collision_counter/directional/north : /obj/machinery/incident_display/tram/directional/north{@OLD} +/obj/structure/sign/collision_counter/directional/south : /obj/machinery/incident_display/tram/directional/south{@OLD} +/obj/structure/sign/collision_counter/directional/east : /obj/machinery/incident_display/tram/directional/east{@OLD} +/obj/structure/sign/collision_counter/directional/west : /obj/machinery/incident_display/tram/directional/west{@OLD} +/obj/structure/sign/delamination_counter/directional : /obj/machinery/incident_display/delam/directional{@OLD} +/obj/structure/sign/delamination_counter/directional/north : /obj/machinery/incident_display/delam/directional/north{@OLD} +/obj/structure/sign/delamination_counter/directional/south : /obj/machinery/incident_display/delam/directional/south{@OLD} +/obj/structure/sign/delamination_counter/directional/east : /obj/machinery/incident_display/delam/directional/east{@OLD} +/obj/structure/sign/delamination_counter/directional/west : /obj/machinery/incident_display/delam/directional/west{@OLD} \ No newline at end of file