Enhanced delam/tram counter (#75699)

## About The Pull Request

Gives a makeover to the delam and tram hit counters and adds some new
functionality.


![image](https://github.com/tgstation/tgstation/assets/83487515/cbbeb0df-d205-47ed-be6e-e49cea8c4f12)


![image](https://github.com/tgstation/tgstation/assets/83487515/e042d5e8-cb8b-4feb-b3f0-02365cd8fdbf)


![image](https://github.com/tgstation/tgstation/assets/83487515/c2831f7f-639d-40a8-a74f-d4894a4f67c6)


https://github.com/tgstation/tgstation/assets/83487515/871fb0fd-8b92-45c5-877b-c122a034608c

- The signs now remember your last 'best' score and show the crew if
they're trending in the right or wrong direction since the last
incident.
- Safety Moth PSA panel. In the future this will dynamically change
based on the current events, or function as a status display.
- Tram hit counters no longer waste processing every tram hit.
Previously each sign independently managed tracking, which meant that
deconstructing or constructing a sign would reset it to 0 and it would
become out of sync with the other signs.
- Can be repaired, EMP'd

## Why It's Good For The Game

Provide a little motivation to reach for that high score. The PSA
changing to for example, find a locker during a delam event.

## Changelog

🆑 LT3
image: Delam and tram flipsigns have been replaced with information
displays
fix: Tram hit count is centrally managed instead of independently on
each sign, so they won't get out of sync
/🆑
This commit is contained in:
lessthanthree
2023-06-23 11:29:34 -07:00
committed by GitHub
parent a3568da563
commit b3d040fb2f
15 changed files with 679 additions and 375 deletions
+149 -143
View File
@@ -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
+14 -17
View File
@@ -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
+27 -15
View File
@@ -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
+11 -15
View File
@@ -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
+18 -8
View File
@@ -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
+41 -30
View File
@@ -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
+25 -4
View File
@@ -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
+374
View File
@@ -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.<br/>")
if(1)
. += span_info("Let's do better today.<br/>")
if(2 to 5)
. += span_info("There's room for improvement.<br/>")
if(6 to 10)
. += span_info("Good work!<br/>")
if(69)
. += span_info("Nice.<br/>")
else
. += span_info("Incredible!<br/>")
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.<br/>")
if(1)
. += span_info("Let's do better tomorrow.<br/>")
if(2 to 5)
. += span_info("There's room for improvement.<br/>")
if(6 to 10)
. += span_info("Good work! Nanotrasen's finest!<br/>")
if(69)
. += span_info("Nice.<br/>")
else
. += span_info("Incredible! You're probably reading this from medbay.<br/>")
#undef DISPLAY_DELAM
#undef DISPLAY_TRAM
#undef NAME_DUAL
#undef NAME_DELAM
#undef NAME_TRAM
#undef DESC_DUAL
#undef DESC_DELAM
#undef DESC_TRAM
@@ -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
@@ -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)
@@ -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
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 43 KiB

+1
View File
@@ -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"
@@ -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}