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