From a69b9317817e9833bf54ce3fcc078a67f4a162aa Mon Sep 17 00:00:00 2001
From: LT3 <83487515+lessthnthree@users.noreply.github.com>
Date: Fri, 7 Mar 2025 17:28:58 -0800
Subject: [PATCH] Disease outbreak incident display (#3148)
## About The Pull Request
Adds a disease outbreak counter for medbay.

## Why It's Good For The Game
More amusing counters the better. More useful in medbay than the delam
counter.
## Changelog
:cl: LT3
add: Added disease outbreak incident display
/:cl:
---
.../bubber/automapper/automapper_config.toml | 32 ++
.../Deltastation/deltastation_medbay.dmm | 270 ++++++++++++
.../IceBoxStation/iceboxstation_medbay.dmm | 392 ++++++++++++++++++
.../MetaStation/metastation_medbay.dmm | 247 +++++++++++
.../tramstation/tramstation_medbay.dmm | 174 ++++++++
_maps/map_files/BoxStation/BoxStation.dmm | 26 +-
_maps/map_files/KiloStation/KiloStation.dmm | 20 +-
_maps/map_files/VoidRaptor/VoidRaptor.dmm | 57 +--
_maps/map_files/biodome/biodome.dmm | 27 +-
_maps/map_files/moonstation/moonstation.dmm | 45 +-
code/__DEFINES/~~bubber_defines/signals.dm | 2 +
code/controllers/subsystem/disease.dm | 3 +
code/game/machinery/incident_display.dm | 66 ++-
.../code/game/machinery/incident_display.dm | 184 ++++++++
.../modules/disease/disease_transmission.dm | 30 ++
.../icons/obj/machines/incident_display.dmi | Bin 0 -> 7280 bytes
tgstation.dme | 1 +
17 files changed, 1490 insertions(+), 86 deletions(-)
create mode 100644 _maps/bubber/automapper/templates/Deltastation/deltastation_medbay.dmm
create mode 100644 _maps/bubber/automapper/templates/IceBoxStation/iceboxstation_medbay.dmm
create mode 100644 _maps/bubber/automapper/templates/MetaStation/metastation_medbay.dmm
create mode 100644 _maps/bubber/automapper/templates/tramstation/tramstation_medbay.dmm
create mode 100644 modular_zubbers/code/game/machinery/incident_display.dm
create mode 100644 modular_zubbers/icons/obj/machines/incident_display.dmi
diff --git a/_maps/bubber/automapper/automapper_config.toml b/_maps/bubber/automapper/automapper_config.toml
index 7409bb38c59..f3ae507a5f6 100644
--- a/_maps/bubber/automapper/automapper_config.toml
+++ b/_maps/bubber/automapper/automapper_config.toml
@@ -67,6 +67,14 @@ required_map = "MetaStation.dmm"
coordinates = [163, 155, 1]
trait_name = "Station"
+# Metastation Medbay
+[templates.metastation_medbay]
+map_files = ["metastation_medbay.dmm"]
+directory = "_maps/bubber/automapper/templates/MetaStation/"
+required_map = "MetaStation.dmm"
+coordinates = [86, 105, 1]
+trait_name = "Station"
+
# DELTASTATION MAP EDITS
# Deltastation Arrivals
[templates.deltastation_arrivals]
@@ -108,6 +116,14 @@ required_map = "DeltaStation2.dmm"
coordinates = [84, 109, 1]
trait_name = "Station"
+# Deltastation Medbay
+[templates.deltastation_medbay]
+map_files = ["deltastation_medbay.dmm"]
+directory = "_maps/bubber/automapper/templates/Deltastation/"
+required_map = "DeltaStation2.dmm"
+coordinates = [157, 77, 1]
+trait_name = "Station"
+
# ICEBOX MAP EDITS
# Icebox Arrivals
[templates.icebox_arrivals]
@@ -157,6 +173,14 @@ required_map = "IceBoxStation.dmm"
coordinates = [114, 65, 3]
trait_name = "Station"
+# Icebox Medbay
+[templates.icebox_medbay]
+map_files = ["iceboxstation_medbay.dmm"]
+directory = "_maps/bubber/automapper/templates/IceBoxStation/"
+required_map = "IceBoxStation.dmm"
+coordinates = [141, 108, 3]
+trait_name = "Station"
+
# Icecats Camp Lower Level
[templates.icebox_icecats_lower]
map_files = ["icemoon_underground_icewalker_lower.dmm"]
@@ -214,6 +238,14 @@ required_map = "tramstation.dmm"
coordinates = [118, 75, 1]
trait_name = "Station"
+# Tramstation Medbay
+[templates.tramstation_medbay]
+map_files = ["tramstation_medbay.dmm"]
+directory = "_maps/bubber/automapper/templates/tramstation/"
+required_map = "tramstation.dmm"
+coordinates = [118, 101, 2]
+trait_name = "Station"
+
# BIRDSHOT MAP EDITS
# Birdshot Arrivals
[templates.birdshot_arrivals]
diff --git a/_maps/bubber/automapper/templates/Deltastation/deltastation_medbay.dmm b/_maps/bubber/automapper/templates/Deltastation/deltastation_medbay.dmm
new file mode 100644
index 00000000000..c3ea011a539
--- /dev/null
+++ b/_maps/bubber/automapper/templates/Deltastation/deltastation_medbay.dmm
@@ -0,0 +1,270 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"m" = (
+/obj/structure/closet/secure_closet/personal/patient,
+/obj/effect/turf_decal/bot,
+/obj/machinery/light/small/directional/north,
+/obj/effect/landmark/start/hangover/closet,
+/obj/effect/turf_decal/tile/neutral/fourcorners,
+/turf/open/floor/iron,
+/area/station/medical/cryo)
+"v" = (
+/obj/machinery/incident_display/disease,
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"x" = (
+/obj/structure/bed/medical/emergency,
+/obj/effect/turf_decal/trimline/blue/filled/line,
+/obj/machinery/light/directional/south,
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/lobby)
+"D" = (
+/turf/closed/wall,
+/area/station/medical/storage)
+"F" = (
+/obj/effect/turf_decal/bot,
+/obj/machinery/vending/medical,
+/obj/effect/turf_decal/tile/neutral/half/contrasted{
+ dir = 1
+ },
+/turf/open/floor/iron,
+/area/station/medical/storage)
+"G" = (
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"M" = (
+/obj/structure/bed/medical/emergency,
+/obj/effect/turf_decal/trimline/blue/filled/line,
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/lobby)
+"P" = (
+/obj/machinery/incident_display/disease,
+/turf/closed/wall,
+/area/station/medical/storage)
+"S" = (
+/obj/machinery/incident_display/disease/directional/north,
+/turf/template_noop,
+/area/template_noop)
+"W" = (
+/obj/item/radio/intercom/directional/east,
+/turf/template_noop,
+/area/template_noop)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+F
+P
+"}
+(5,1,1) = {"
+x
+v
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+W
+a
+D
+"}
+(6,1,1) = {"
+M
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+S
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+m
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/bubber/automapper/templates/IceBoxStation/iceboxstation_medbay.dmm b/_maps/bubber/automapper/templates/IceBoxStation/iceboxstation_medbay.dmm
new file mode 100644
index 00000000000..5e1f81b7088
--- /dev/null
+++ b/_maps/bubber/automapper/templates/IceBoxStation/iceboxstation_medbay.dmm
@@ -0,0 +1,392 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"c" = (
+/obj/structure/table/reinforced,
+/obj/item/screwdriver{
+ pixel_y = 10
+ },
+/obj/item/radio/off,
+/obj/machinery/airalarm/directional/east,
+/obj/effect/turf_decal/tile/red/full,
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/security/checkpoint/medical)
+"g" = (
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 1
+ },
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/central)
+"h" = (
+/obj/machinery/light/small/directional/south,
+/turf/template_noop,
+/area/template_noop)
+"l" = (
+/turf/open/openspace,
+/area/station/medical/medbay/lobby)
+"p" = (
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"D" = (
+/turf/closed/wall/r_wall,
+/area/station/medical/treatment_center)
+"E" = (
+/obj/structure/sign/departments/chemistry/pharmacy/directional/west,
+/turf/open/openspace,
+/area/station/medical/medbay/lobby)
+"G" = (
+/obj/structure/disposalpipe/segment{
+ dir = 4
+ },
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 1
+ },
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/central)
+"J" = (
+/obj/machinery/incident_display/disease/directional/south,
+/turf/template_noop,
+/area/template_noop)
+"K" = (
+/obj/machinery/incident_display/disease,
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"S" = (
+/obj/machinery/door/poddoor/shutters/preopen{
+ id = "medsecprivacy";
+ name = "Privacy Shutters"
+ },
+/turf/template_noop,
+/area/template_noop)
+"T" = (
+/obj/structure/table/reinforced,
+/obj/item/book/manual/wiki/security_space_law{
+ pixel_x = 3;
+ pixel_y = 4
+ },
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/red/full,
+/obj/machinery/camera/directional/north{
+ c_tag = "Security Post - Medbay";
+ network = list("ss13","medbay")
+ },
+/turf/open/floor/iron/dark/smooth_large,
+/area/station/security/checkpoint/medical)
+"U" = (
+/obj/machinery/incident_display/disease,
+/turf/template_noop,
+/area/template_noop)
+"V" = (
+/obj/machinery/door/firedoor/border_only{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/dark/half/contrasted{
+ dir = 8
+ },
+/obj/effect/turf_decal/tile/blue,
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/lobby)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+J
+D
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+h
+D
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+E
+K
+G
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+l
+p
+g
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+V
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(12,1,1) = {"
+a
+U
+T
+a
+a
+a
+S
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(13,1,1) = {"
+a
+a
+c
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/bubber/automapper/templates/MetaStation/metastation_medbay.dmm b/_maps/bubber/automapper/templates/MetaStation/metastation_medbay.dmm
new file mode 100644
index 00000000000..956d4f1466a
--- /dev/null
+++ b/_maps/bubber/automapper/templates/MetaStation/metastation_medbay.dmm
@@ -0,0 +1,247 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"i" = (
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"q" = (
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable,
+/turf/template_noop,
+/area/template_noop)
+"u" = (
+/obj/structure/table,
+/obj/item/stack/medical/gauze,
+/obj/item/stack/medical/mesh,
+/obj/item/stack/medical/suture,
+/obj/structure/cable,
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 1
+ },
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/lobby)
+"w" = (
+/obj/effect/spawner/structure/window,
+/turf/open/floor/plating,
+/area/station/medical/medbay/lobby)
+"z" = (
+/obj/structure/sign/departments/medbay/alt,
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"O" = (
+/obj/machinery/incident_display/disease/directional/north,
+/turf/template_noop,
+/area/template_noop)
+"R" = (
+/obj/machinery/incident_display/disease,
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
+"U" = (
+/obj/machinery/door/poddoor/preopen{
+ id = "medsecprivacy";
+ name = "Privacy Shutter"
+ },
+/turf/template_noop,
+/area/template_noop)
+
+(1,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+O
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+U
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(12,1,1) = {"
+z
+a
+a
+a
+a
+a
+a
+a
+"}
+(13,1,1) = {"
+i
+q
+a
+a
+a
+a
+a
+a
+"}
+(14,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(15,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(16,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(17,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(18,1,1) = {"
+R
+a
+a
+a
+a
+a
+a
+a
+"}
+(19,1,1) = {"
+i
+u
+a
+a
+a
+a
+a
+a
+"}
+(20,1,1) = {"
+a
+w
+a
+a
+a
+a
+a
+a
+"}
diff --git a/_maps/bubber/automapper/templates/tramstation/tramstation_medbay.dmm b/_maps/bubber/automapper/templates/tramstation/tramstation_medbay.dmm
new file mode 100644
index 00000000000..0aef5a5d1c2
--- /dev/null
+++ b/_maps/bubber/automapper/templates/tramstation/tramstation_medbay.dmm
@@ -0,0 +1,174 @@
+//MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE
+"a" = (
+/turf/template_noop,
+/area/template_noop)
+"o" = (
+/obj/machinery/incident_display/disease/directional/north,
+/turf/template_noop,
+/area/template_noop)
+"w" = (
+/obj/machinery/incident_display/disease,
+/turf/template_noop,
+/area/template_noop)
+"C" = (
+/obj/effect/turf_decal/trimline/yellow/filled/line{
+ dir = 8
+ },
+/obj/effect/turf_decal/trimline/neutral/filled/warning{
+ dir = 8
+ },
+/obj/structure/railing{
+ dir = 4
+ },
+/obj/effect/spawner/random/vending/snackvend{
+ pixel_x = -5
+ },
+/obj/machinery/incident_display/disease/directional/south,
+/turf/open/floor/iron,
+/area/station/hallway/primary/tram/center)
+"S" = (
+/obj/structure/table/glass,
+/obj/item/stack/medical/gauze,
+/obj/item/stack/medical/suture,
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 9
+ },
+/obj/machinery/status_display/evac/directional/north,
+/obj/machinery/light/directional/west,
+/turf/open/floor/iron/white,
+/area/station/medical/treatment_center)
+"V" = (
+/obj/structure/table/glass,
+/obj/item/storage/box/beakers,
+/obj/item/storage/box/bodybags{
+ pixel_x = 5;
+ pixel_y = 5
+ },
+/obj/effect/turf_decal/trimline/blue/filled/line{
+ dir = 5
+ },
+/obj/item/radio/intercom/directional/east,
+/obj/machinery/light/directional/east,
+/turf/open/floor/iron/white,
+/area/station/medical/treatment_center)
+
+(1,1,1) = {"
+C
+a
+o
+a
+a
+a
+a
+a
+"}
+(2,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(3,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(4,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+S
+"}
+(5,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(6,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(7,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(8,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(9,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(10,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(11,1,1) = {"
+a
+a
+a
+a
+a
+a
+a
+a
+"}
+(12,1,1) = {"
+a
+a
+a
+a
+a
+a
+w
+V
+"}
diff --git a/_maps/map_files/BoxStation/BoxStation.dmm b/_maps/map_files/BoxStation/BoxStation.dmm
index 5df96f211ec..1420c399bee 100644
--- a/_maps/map_files/BoxStation/BoxStation.dmm
+++ b/_maps/map_files/BoxStation/BoxStation.dmm
@@ -6738,6 +6738,14 @@
},
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
+"aHb" = (
+/obj/effect/turf_decal/tile/blue,
+/obj/effect/turf_decal/tile/blue{
+ dir = 8
+ },
+/obj/machinery/incident_display/disease/directional/south,
+/turf/open/floor/iron,
+/area/station/hallway/primary/starboard)
"aHd" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk,
@@ -20978,6 +20986,7 @@
c_tag = "Medbay Storage";
network = list("ss13","medbay")
},
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/dark,
/area/station/medical/storage)
"bEi" = (
@@ -33263,6 +33272,7 @@
/obj/effect/turf_decal/tile/red{
dir = 4
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron,
/area/station/command/bridge)
"cQt" = (
@@ -43397,6 +43407,7 @@
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
dir = 4
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
"jij" = (
@@ -48578,8 +48589,15 @@
/turf/open/floor/engine,
/area/station/science/explab)
"msc" = (
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{
+ dir = 4
+ },
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{
+ dir = 8
+ },
/obj/structure/sign/warning/no_smoking/circle/directional/east,
-/turf/closed/wall,
+/turf/open/floor/iron/white,
/area/station/medical/medbay/central)
"msK" = (
/obj/machinery/camera{
@@ -104464,7 +104482,7 @@ bai
aJC
bcr
iKz
-bet
+aHb
bfH
yiT
jsN
@@ -104472,7 +104490,7 @@ pnL
bln
hHU
boj
-msc
+bof
jib
bsx
jsH
@@ -104987,7 +105005,7 @@ sjV
bmR
pkL
bES
-uGy
+msc
pnW
jsH
odp
diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm
index 3e9136f758e..5c69cc36384 100644
--- a/_maps/map_files/KiloStation/KiloStation.dmm
+++ b/_maps/map_files/KiloStation/KiloStation.dmm
@@ -18004,7 +18004,6 @@
/obj/structure/table,
/obj/item/clipboard,
/obj/item/storage/medkit/regular,
-/obj/machinery/power/apc/auto_name/directional/north,
/obj/structure/cable,
/obj/effect/turf_decal/tile/neutral/half/contrasted,
/turf/open/floor/iron/dark,
@@ -27596,6 +27595,7 @@
},
/obj/item/crowbar/red,
/obj/item/clothing/mask/gas,
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/dark,
/area/station/command/bridge)
"iWm" = (
@@ -27848,6 +27848,7 @@
/obj/effect/turf_decal/tile/neutral/anticorner/contrasted{
dir = 8
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/dark,
/area/station/medical/medbay/lobby)
"jas" = (
@@ -37657,6 +37658,8 @@
dir = 8
},
/obj/item/storage/box/bandages,
+/obj/machinery/power/apc/auto_name/directional/north,
+/obj/structure/cable,
/turf/open/floor/iron/dark,
/area/station/medical/medbay/lobby)
"mlB" = (
@@ -47784,6 +47787,7 @@
},
/obj/structure/curtain,
/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/dark,
/area/station/medical/exam_room)
"pJs" = (
@@ -48811,9 +48815,13 @@
/turf/open/floor/plating,
/area/station/maintenance/starboard/fore)
"qaR" = (
-/obj/structure/sign/departments/medbay/alt,
-/turf/closed/wall,
-/area/station/medical/paramedic)
+/obj/machinery/atmospherics/components/unary/portables_connector/visible,
+/obj/effect/turf_decal/bot,
+/obj/machinery/portable_atmospherics/canister/anesthetic_mix,
+/obj/effect/turf_decal/tile/neutral/half/contrasted,
+/obj/machinery/incident_display/disease/directional/north,
+/turf/open/floor/iron/dark,
+/area/station/medical/medbay/central)
"qaZ" = (
/obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/mix_output{
dir = 1
@@ -94031,7 +94039,7 @@ bXe
huR
bXe
gsy
-srg
+qaR
uZT
gKd
pMj
@@ -96857,7 +96865,7 @@ dkh
oiq
giH
uVJ
-qaR
+xvW
jam
fgy
qht
diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
index 023f2ee0312..aa67d21a500 100644
--- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm
+++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm
@@ -7132,12 +7132,13 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 8
},
-/obj/structure/sign/clock/directional/west,
/obj/machinery/light_switch/directional/west{
pixel_y = 15
},
/obj/structure/disposalpipe/segment,
/obj/effect/turf_decal/bot,
+/obj/machinery/requests_console/auto_name/directional/west,
+/obj/effect/mapping_helpers/requests_console/assistance,
/turf/open/floor/iron/white/smooth_edge{
dir = 4
},
@@ -12465,6 +12466,7 @@
},
/obj/effect/turf_decal/tile/blue/half,
/obj/effect/turf_decal/bot,
+/obj/machinery/vending/wallmed/directional/south,
/turf/open/floor/iron/dark/smooth_large,
/area/station/command/bridge)
"dIg" = (
@@ -13325,7 +13327,6 @@
/turf/open/floor/carpet/blue,
/area/station/command/heads_quarters/cmo)
"dTL" = (
-/obj/machinery/status_display/evac/directional/west,
/obj/machinery/vending/access/command,
/obj/item/toy/figure/wizard{
pixel_y = 17
@@ -21885,10 +21886,7 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/obj/structure/sign/logo{
- icon_state = "nanotrasen_sign4";
- pixel_y = 32
- },
+/obj/machinery/firealarm/directional/north,
/turf/open/floor/iron/white/smooth_edge,
/area/station/medical/medbay/lobby)
"gtG" = (
@@ -25356,13 +25354,13 @@
/turf/open/floor/circuit,
/area/station/command/teleporter)
"htb" = (
-/obj/machinery/status_display/evac/directional/south,
/obj/structure/rack,
/obj/effect/turf_decal/trimline/blue/filled/line,
/obj/effect/turf_decal/box/white{
color = "#52B4E9"
},
/obj/machinery/light/cold/directional/south,
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/white/smooth_edge{
dir = 1
},
@@ -27690,13 +27688,6 @@
dir = 8
},
/area/station/hallway/primary/central)
-"hZK" = (
-/obj/effect/turf_decal/trimline/blue/filled/warning{
- dir = 5
- },
-/obj/machinery/firealarm/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/lobby)
"hZN" = (
/obj/machinery/door/firedoor,
/obj/structure/disposalpipe/segment{
@@ -31488,10 +31479,10 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 4
},
-/obj/structure/sign/warning/no_smoking/directional/east,
/obj/effect/turf_decal/box,
/obj/machinery/recharge_station,
/obj/machinery/light/cold/directional/east,
+/obj/machinery/newscaster/directional/east,
/turf/open/floor/iron/white/smooth_edge{
dir = 8
},
@@ -35744,9 +35735,6 @@
/turf/open/floor/iron/kitchen,
/area/station/service/kitchen/abandoned)
"kjS" = (
-/obj/structure/sign/logo{
- pixel_y = 32
- },
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 9
},
@@ -45676,10 +45664,11 @@
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/newscaster/directional/south,
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/requests_console/directional/south,
+/obj/effect/mapping_helpers/requests_console/assistance,
/turf/open/floor/iron/white/smooth_edge{
dir = 1
},
@@ -50354,7 +50343,6 @@
/obj/structure/sign/nanotrasen{
pixel_x = 32
},
-/obj/machinery/requests_console/auto_name/directional/north,
/turf/open/floor/iron/freezer,
/area/station/medical/surgery)
"ofo" = (
@@ -53043,10 +53031,10 @@
"oSL" = (
/obj/structure/window/reinforced/spawner/directional/east,
/obj/structure/table/reinforced/rglass,
-/obj/machinery/vending/wallmed/directional/south,
/obj/item/storage/medkit/regular,
/obj/effect/turf_decal/tile/blue/anticorner,
/obj/machinery/light/cold/directional/south,
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/dark/smooth_large,
/area/station/command/bridge)
"oSS" = (
@@ -53801,11 +53789,6 @@
dir = 1
},
/obj/structure/table/glass,
-/obj/machinery/requests_console/directional/north{
- department = "Medbay";
- name = "Medbay Requests Console"
- },
-/obj/effect/mapping_helpers/requests_console/assistance,
/obj/item/storage/box/gloves{
pixel_x = 4;
pixel_y = 6
@@ -53817,6 +53800,7 @@
/obj/item/storage/box/rxglasses{
pixel_y = 1
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/white/smooth_edge,
/area/station/medical/medbay/central)
"pcq" = (
@@ -61778,6 +61762,7 @@
/obj/effect/turf_decal/tile/blue/half{
dir = 8
},
+/obj/machinery/status_display/evac/directional/east,
/turf/open/floor/iron/dark/smooth_large,
/area/station/command/bridge)
"rjI" = (
@@ -63372,7 +63357,6 @@
/obj/effect/turf_decal/trimline/yellow/filled/line{
dir = 9
},
-/obj/structure/sign/poster/official/periodic_table/directional/north,
/obj/machinery/light/cold/directional/north,
/obj/structure/table/reinforced/rglass,
/obj/machinery/reagentgrinder{
@@ -69597,12 +69581,9 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/obj/structure/sign/logo{
- icon_state = "nanotrasen_sign2";
- pixel_y = 32
- },
/obj/effect/landmark/start/assistant,
/obj/structure/chair/sofa/bench/right,
+/obj/structure/sign/warning/no_smoking/directional/north,
/turf/open/floor/iron/white/smooth_edge,
/area/station/medical/medbay/lobby)
"tsi" = (
@@ -71947,15 +71928,12 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/obj/structure/sign/logo{
- icon_state = "nanotrasen_sign5";
- pixel_y = 32
- },
/obj/machinery/camera/directional/north{
c_tag = "Medbay - Lobby";
name = "medbay camera";
network = list("ss13","medbay")
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/white/smooth_edge,
/area/station/medical/medbay/lobby)
"uam" = (
@@ -76420,7 +76398,7 @@
/obj/item/clothing/gloves/latex,
/obj/item/clothing/suit/apron/surgical,
/obj/item/reagent_containers/spray/cleaner,
-/obj/machinery/newscaster/directional/north,
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/freezer,
/area/station/medical/surgery)
"vlh" = (
@@ -83721,12 +83699,9 @@
/obj/effect/turf_decal/trimline/blue/filled/line{
dir = 1
},
-/obj/structure/sign/logo{
- icon_state = "nanotrasen_sign3";
- pixel_y = 32
- },
/obj/item/storage/medkit/emergency,
/obj/machinery/light/cold/directional/north,
+/obj/machinery/status_display/evac/directional/north,
/turf/open/floor/iron/white/smooth_edge,
/area/station/medical/medbay/lobby)
"xnk" = (
@@ -119131,7 +119106,7 @@ ccc
cnC
ulA
cnC
-hZK
+dZv
vSC
arF
tOQ
diff --git a/_maps/map_files/biodome/biodome.dmm b/_maps/map_files/biodome/biodome.dmm
index f42166b41f8..c2f9cd5f82b 100644
--- a/_maps/map_files/biodome/biodome.dmm
+++ b/_maps/map_files/biodome/biodome.dmm
@@ -6327,6 +6327,8 @@
dir = 4
},
/obj/item/kirbyplants/random,
+/obj/machinery/power/apc/auto_name/directional/south,
+/obj/structure/cable,
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
"cin" = (
@@ -24891,6 +24893,7 @@
/obj/effect/turf_decal/tile/blue/half{
dir = 8
},
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/dark,
/area/station/medical/medbay/central)
"iFD" = (
@@ -34843,11 +34846,10 @@
/obj/structure/table,
/obj/item/stack/medical/mesh,
/obj/item/stack/medical/gauze,
-/obj/structure/cable,
-/obj/machinery/power/apc/auto_name/directional/south,
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 1
},
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/white,
/area/station/medical/medbay/lobby)
"lWF" = (
@@ -34878,6 +34880,10 @@
},
/turf/open/floor/plating,
/area/station/science/robotics/mechbay)
+"lWV" = (
+/obj/machinery/incident_display/disease/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/command/bridge)
"lWZ" = (
/obj/structure/toilet,
/obj/machinery/light/small/directional/north,
@@ -35061,7 +35067,7 @@
/obj/effect/turf_decal/tile/blue/half/contrasted{
dir = 1
},
-/obj/machinery/incident_display/delam/directional/north,
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
"lZZ" = (
@@ -46289,9 +46295,12 @@
/turf/open/floor/iron,
/area/station/hallway/primary/starboard)
"pQb" = (
-/obj/machinery/incident_display/delam/directional/north,
-/turf/closed/wall,
-/area/station/medical/medbay/lobby)
+/obj/structure/cable,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
+/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
+/obj/machinery/incident_display/disease/directional/south,
+/turf/open/floor/iron/dark,
+/area/station/command/bridge)
"pQc" = (
/obj/structure/cable,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -161052,7 +161061,7 @@ cVB
uGL
cpX
eyw
-pQb
+eyw
uCO
bIP
eyw
@@ -177226,7 +177235,7 @@ cFv
cFv
ofe
pbY
-gRD
+lWV
ofe
rAq
rAq
@@ -177239,7 +177248,7 @@ mrH
mrH
ofe
pbY
-uVv
+pQb
nOL
lcS
ydy
diff --git a/_maps/map_files/moonstation/moonstation.dmm b/_maps/map_files/moonstation/moonstation.dmm
index 9a7839f95bc..27d21c110e4 100644
--- a/_maps/map_files/moonstation/moonstation.dmm
+++ b/_maps/map_files/moonstation/moonstation.dmm
@@ -27889,7 +27889,6 @@
dir = 9
},
/obj/structure/hedge,
-/obj/machinery/status_display/evac/directional/east,
/obj/machinery/firealarm/directional/south,
/obj/structure/sign/directions/science/directional/east{
pixel_y = -24
@@ -34302,7 +34301,7 @@
dir = 1
},
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
-/obj/machinery/newscaster/directional/north,
+/obj/machinery/incident_display/disease/directional/north,
/turf/open/floor/iron/white,
/area/station/medical/treatment_center)
"jts" = (
@@ -42236,15 +42235,9 @@
/turf/open/floor/plating/rust/moonstation,
/area/moonstation/surface)
"lDV" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted{
- dir = 1
- },
-/obj/effect/turf_decal/trimline/white/arrow_ccw{
- dir = 1
- },
-/obj/structure/sign/warning/no_smoking/directional/north,
-/turf/open/floor/iron/white,
-/area/station/medical/medbay/central)
+/obj/machinery/incident_display/disease,
+/turf/closed/wall,
+/area/station/medical/medbay/lobby)
"lEf" = (
/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2,
/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4,
@@ -49120,10 +49113,16 @@
/turf/open/floor/plating,
/area/station/maintenance/starboard/fore)
"nyl" = (
-/obj/effect/turf_decal/tile/blue/half/contrasted,
-/obj/machinery/firealarm/directional/south,
-/turf/open/floor/iron/dark/corner,
-/area/station/hallway/primary/starboard)
+/obj/effect/turf_decal/tile/blue/half/contrasted{
+ dir = 1
+ },
+/obj/effect/turf_decal/trimline/white/arrow_ccw{
+ dir = 1
+ },
+/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4,
+/obj/machinery/incident_display/disease/directional/north,
+/turf/open/floor/iron/white,
+/area/station/medical/medbay/central)
"nyo" = (
/obj/effect/turf_decal/tile/red/half/contrasted{
dir = 8
@@ -50882,6 +50881,7 @@
/obj/structure/disposalpipe/segment{
dir = 4
},
+/obj/machinery/incident_display/disease/directional/south,
/turf/open/floor/iron/dark/corner,
/area/station/hallway/primary/starboard)
"nZr" = (
@@ -58936,7 +58936,6 @@
name = "Desk Shutters";
dir = 8
},
-/obj/structure/sign/warning/no_smoking/directional/north,
/obj/machinery/door/firedoor,
/turf/open/floor/iron/white,
/area/station/medical/pharmacy)
@@ -64073,7 +64072,6 @@
/obj/effect/turf_decal/siding/wood{
dir = 10
},
-/obj/machinery/status_display/evac/directional/east,
/obj/machinery/firealarm/directional/north,
/obj/structure/sign/directions/security/directional/north{
pixel_x = 32;
@@ -82733,6 +82731,7 @@
/obj/machinery/door/firedoor,
/obj/machinery/door/airlock/public/glass,
/obj/effect/mapping_helpers/airlock/autoname,
+/obj/machinery/firealarm/directional/north,
/turf/open/floor/iron/dark/corner{
dir = 1
},
@@ -254110,7 +254109,7 @@ rpt
wQT
jjc
aCB
-hfe
+lDV
hfe
dac
dac
@@ -254366,7 +254365,7 @@ bYQ
trj
lxZ
sbo
-nyl
+xUZ
hfe
cAV
nFM
@@ -258744,7 +258743,7 @@ arh
fxD
fVk
rlX
-mMG
+hPq
fgf
sNI
oFu
@@ -258755,7 +258754,7 @@ oIv
ovV
sIP
jXJ
-vlE
+nyl
mYn
dba
cDk
@@ -259012,7 +259011,7 @@ uiz
nUu
xwk
jXJ
-dkG
+dHp
rCm
kOs
eCp
@@ -259269,7 +259268,7 @@ feK
xNX
qNp
qNp
-lDV
+dkG
hSn
msA
sBa
diff --git a/code/__DEFINES/~~bubber_defines/signals.dm b/code/__DEFINES/~~bubber_defines/signals.dm
index d8f2fba56a3..49876f8d3fc 100644
--- a/code/__DEFINES/~~bubber_defines/signals.dm
+++ b/code/__DEFINES/~~bubber_defines/signals.dm
@@ -8,3 +8,5 @@
#define COMSIG_ORGAN_BODYPART_REMOVED "organ_bodypart_removed"
/// From /datum/controller/subsystem/economy/proc/issue_paydays()
#define COMSIG_ON_BANK_ACCOUNT_PAYOUT "bank_account_payout"
+/// From modular_zubbers/code/modules/disease/disease_transmission.dm
+#define COMSIG_DISEASE_COUNT_UPDATE "disease_count_update"
diff --git a/code/controllers/subsystem/disease.dm b/code/controllers/subsystem/disease.dm
index bfa6fd66b7d..44b2969a848 100644
--- a/code/controllers/subsystem/disease.dm
+++ b/code/controllers/subsystem/disease.dm
@@ -19,9 +19,12 @@ SUBSYSTEM_DEF(disease)
archive_diseases[prototype.GetDiseaseID()] = prototype
return SS_INIT_SUCCESS
+// BUBBER EDIT REMOVAL - Moved to modular_zubbers/code/modules/disease/disease_transmission.dm
+/*
/datum/controller/subsystem/disease/stat_entry(msg)
msg = "P:[length(active_diseases)]"
return ..()
+*/
/datum/controller/subsystem/disease/proc/get_disease_name(id)
var/datum/disease/advance/A = archive_diseases[id]
diff --git a/code/game/machinery/incident_display.dm b/code/game/machinery/incident_display.dm
index 77194a26dd7..5c53acf0b51 100644
--- a/code/game/machinery/incident_display.dm
+++ b/code/game/machinery/incident_display.dm
@@ -8,10 +8,13 @@ GLOBAL_LIST_EMPTY(map_incident_displays)
#define DISPLAY_DELAM (1<<0)
/// Display current number of tram hits on incident sign
#define DISPLAY_TRAM (1<<1)
+/// Display current number of tram hits on incident sign
+#define DISPLAY_DISEASE (1<<2) // BUBBER EDIT ADDITION - Disease Counter
DEFINE_BITFIELD(sign_features, list(
"DISPLAY_DELAM" = DISPLAY_DELAM,
"DISPLAY_TRAM" = DISPLAY_TRAM,
+ "DISPLAY_DISEASE" = DISPLAY_DISEASE, // BUBBER EDIT ADDITION - Disease Counter
))
#define TREND_RISING "rising"
@@ -19,9 +22,11 @@ DEFINE_BITFIELD(sign_features, list(
#define NAME_DELAM "delamination incident display"
#define NAME_TRAM "tram incident display"
+#define NAME_DISEASE "epidemic display" // BUBBER EDIT ADDITION - Disease Counter
#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."
+#define DESC_DISEASE "A display that provides the number of active disease outbreak cases on shift.
Doctor-Patient confidentiality is not practised on this station." // BUBBER EDIT ADDITION - Disease Counter
#define DISPLAY_PIXEL_1_W 21
#define DISPLAY_PIXEL_1_Z -2
@@ -100,8 +105,9 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
. = ..()
GLOB.map_incident_displays += src
update_delam_count(SSpersistence.rounds_since_engine_exploded, SSpersistence.delam_highscore)
+ update_disease_count(SSdisease.cached_event_disease_count, SSdisease.previous_event_disease_count) // BUBBER EDIT ADDITION - Disease Counter
RegisterSignal(SStransport, COMSIG_TRAM_COLLISION, PROC_REF(update_tram_count))
-
+ RegisterSignal(SSdisease, COMSIG_DISEASE_COUNT_UPDATE, PROC_REF(update_disease_count))
update_appearance()
/obj/machinery/incident_display/Destroy()
@@ -187,7 +193,7 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
// EMP causes the display to display random numbers or outright break.
/obj/machinery/incident_display/emp_act(severity)
. = ..()
- if(prob(50))
+ if(prob(50) || sign_features & DISPLAY_DISEASE) // BUBBER EDIT CHANGE - Disease Counter
set_machine_stat(machine_stat | BROKEN)
update_appearance()
return
@@ -261,6 +267,11 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
else if((sign_features & DISPLAY_DELAM) && last_delam <= 0) // you done fucked up
icon_state = "display_shame"
set_light(l_range = 1.7, l_power = 1.5, l_color = LIGHT_COLOR_SHAME, l_on = TRUE)
+ // BUBBER EDIT ADDITION BEGIN - Disease Counter
+ else if((sign_features & DISPLAY_DISEASE) && current_disease_metric >= 8)
+ icon_state = "display_shame"
+ set_light(l_range = 1.7, l_power = 1.5, l_color = LIGHT_COLOR_SHAME, l_on = TRUE)
+ // BUBBER EDIT ADDITION END - Disease Counter
else
icon_state = "display_normal"
set_light(l_range = 1.7, l_power = 1.5, l_color = LIGHT_COLOR_NORMAL, l_on = TRUE)
@@ -361,6 +372,51 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
. += tram_trend_overlay
. += tram_trend_emissive
+ // BUBBER EDIT ADDITION BEGIN - Disease Counter
+ if(sign_features & DISPLAY_DISEASE)
+ . += mutable_appearance(icon, "overlay_disease")
+ . += emissive_appearance(icon, "overlay_disease", src, alpha = DISPLAY_PIXEL_ALPHA)
+
+ var/disease_pos1 = current_disease_metric % 10
+ var/mutable_appearance/disease_pos1_overlay = mutable_appearance(icon, "num_[disease_pos1]")
+ var/mutable_appearance/disease_pos1_emissive = emissive_appearance(icon, "num_[disease_pos1]", src, alpha = DISPLAY_PIXEL_ALPHA)
+ disease_pos1_overlay.color = disease_display_color
+ disease_pos1_overlay.pixel_w = DISPLAY_PIXEL_1_W
+ disease_pos1_emissive.pixel_w = DISPLAY_PIXEL_1_W
+ disease_pos1_overlay.pixel_z = DISPLAY_PIXEL_1_Z
+ disease_pos1_emissive.pixel_z = DISPLAY_PIXEL_1_Z
+ . += disease_pos1_overlay
+ . += disease_pos1_emissive
+
+ var/disease_pos2 = (current_disease_metric / 10) % 10
+ var/mutable_appearance/disease_pos2_overlay = mutable_appearance(icon, "num_[disease_pos2]")
+ var/mutable_appearance/disease_pos2_emissive = emissive_appearance(icon, "num_[disease_pos2]", src, alpha = DISPLAY_PIXEL_ALPHA)
+ disease_pos2_overlay.color = disease_display_color
+ disease_pos2_overlay.pixel_w = DISPLAY_PIXEL_2_W
+ disease_pos2_emissive.pixel_w = DISPLAY_PIXEL_2_W
+ disease_pos2_overlay.pixel_z = DISPLAY_PIXEL_2_Z
+ disease_pos2_emissive.pixel_z = DISPLAY_PIXEL_2_Z
+ . += disease_pos2_overlay
+ . += disease_pos2_emissive
+
+ if(current_disease_metric >= 100)
+ . += mutable_appearance(icon, "num_100_blue")
+ . += emissive_appearance(icon, "num_100_blue", src, alpha = DISPLAY_BASE_ALPHA)
+
+ if(current_disease_metric > prev_disease_metric)
+ var/mutable_appearance/disease_trend_overlay = mutable_appearance(icon, TREND_RISING)
+ var/mutable_appearance/disease_trend_emissive = emissive_appearance(icon, "[TREND_RISING]", src, alpha = DISPLAY_PIXEL_ALPHA)
+ disease_trend_overlay.color = "#fb6493"
+ . += disease_trend_overlay
+ . += disease_trend_emissive
+ else
+ var/mutable_appearance/disease_trend_overlay = mutable_appearance(icon, TREND_FALLING)
+ var/mutable_appearance/disease_trend_emissive = emissive_appearance(icon, "[TREND_FALLING]", src, alpha = DISPLAY_PIXEL_ALPHA)
+ disease_trend_overlay.color = disease_display_color
+ . += disease_trend_overlay
+ . += disease_trend_emissive
+ // BUBBER EDIT ADDITION END - Disease Counter
+
/obj/machinery/incident_display/examine(mob/user)
. = ..()
if(atom_integrity < max_integrity)
@@ -385,7 +441,8 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
. += span_info("The supermatter crystal has delaminated, in case you didn't notice.")
if(sign_features & DISPLAY_TRAM)
- . += span_notice("It can be changed to display delam-free shifts with a [EXAMINE_HINT("multitool")].")
+ //. += span_notice("It can be changed to display delam-free shifts with a [EXAMINE_HINT("multitool")].")
+ . += span_notice("It can be changed to display disease infections with a [EXAMINE_HINT("multitool")].") // BUBBER EDIT CHANGE - Disease Counter
. += span_info("The station has had [hit_count] tram incident\s this shift.")
switch(hit_count)
if(0)
@@ -403,12 +460,15 @@ MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/tram, 32)
#undef DISPLAY_DELAM
#undef DISPLAY_TRAM
+#undef DISPLAY_DISEASE // BUBBER EDIT ADDITION - Disease Counter
#undef NAME_DELAM
#undef NAME_TRAM
+#undef NAME_DISEASE // BUBBER EDIT ADDITION - Disease Counter
#undef DESC_DELAM
#undef DESC_TRAM
+#undef DESC_DISEASE // BUBBER EDIT ADDITION - Disease Counter
#undef TREND_RISING
#undef TREND_FALLING
diff --git a/modular_zubbers/code/game/machinery/incident_display.dm b/modular_zubbers/code/game/machinery/incident_display.dm
new file mode 100644
index 00000000000..f77da6837ae
--- /dev/null
+++ b/modular_zubbers/code/game/machinery/incident_display.dm
@@ -0,0 +1,184 @@
+/**
+ * Adds a disease outbreak epidemic function to incident displays
+ */
+
+/// 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)
+/// Display current number of tram hits on incident sign
+#define DISPLAY_DISEASE (1<<2)
+
+#define TREND_RISING "rising"
+#define TREND_FALLING "falling"
+
+#define NAME_DELAM "delamination incident display"
+#define NAME_TRAM "tram incident display"
+#define NAME_DISEASE "epidemic display"
+
+#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."
+#define DESC_DISEASE "A display that provides the number of active disease outbreak cases on shift.
Doctor-Patient confidentiality is not practised on this station." // BUBBER EDIT ADDITION - Disease Counter
+
+
+/obj/machinery/incident_display
+ icon = 'modular_zubbers/icons/obj/machines/incident_display.dmi'
+ /// Disease metric digits color
+ var/disease_display_color = "#4bfba5"
+ /// Current active event diseases
+ var/current_disease_metric = 0
+ /// Previous event disease metric
+ var/prev_disease_metric = 0
+ var/static/list/disease_slogan_good = list(
+ "In the event of an epidemic, please try not to panic.",
+ "In the event of an epidemic, please try not to breathe.",
+ "Please look out for invisible and potentially lethal diseases.",
+ "Staff are reminded not to laugh at Patients whilst they are present. Thank you.",
+ "Don't interact with other crew members, you don't know where they've been.",
+ "Crew members are reminded not to be sick.",
+ )
+ var/static/list/disease_slogan_bad = list(
+ "If you have any questions, first ask yourself why that might be.",
+ "Please be on high alert for invisible and potentially lethal diseases!",
+ "Staff are reminded not to laugh at Patients whilst they are present. Thank you.",
+ "We hope you've enjoyed your stay at the medbay, but not so much that you don't leave... please, eventually leave.",
+ "Pretending your doctor is better than they are may aid recovery.",
+ "Don't interact with other crew members, you don't know where they've been.",
+ "Quality of treatment may depend on Patient behaviour.",
+ "Cured Patients should leave the medbay before they catch something else.",
+ "Please don't ask how our vaccines work, as, we are not exactly sure.",
+ )
+ /// How long between slogans
+ var/slogan_delay = 10 MINUTES
+ COOLDOWN_DECLARE(slogan_cooldown)
+ verb_say = "beeps"
+ verb_ask = "beeps"
+ verb_exclaim = "beeps"
+
+/// Counter board for disease outbreak
+/obj/machinery/incident_display/disease
+ name = NAME_DISEASE
+ desc = DESC_DISEASE
+ sign_features = DISPLAY_DISEASE
+
+MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/incident_display/disease, 32)
+
+/obj/machinery/incident_display/post_machine_initialize()
+ . = ..()
+ COOLDOWN_START(src, slogan_cooldown, rand(0, slogan_delay))
+
+/obj/machinery/incident_display/process()
+ if(COOLDOWN_FINISHED(src, slogan_cooldown) && (sign_features & DISPLAY_DISEASE))
+ if(current_disease_metric == 0)
+ speak(pick(disease_slogan_good))
+ else
+ speak(pick(disease_slogan_bad))
+
+ COOLDOWN_START(src, slogan_cooldown, slogan_delay)
+
+ return ..()
+
+/**
+ * Speak the given message verbally
+ *
+ * Checks if the machine is powered and the message exists
+ *
+ * Arguments:
+ * * message - the message to speak
+ */
+/obj/machinery/incident_display/proc/speak(message)
+ if(machine_stat & (BROKEN|NOPOWER))
+ return
+ if(!message)
+ return
+
+ say(message)
+
+/obj/machinery/incident_display/add_context(atom/source, list/context, obj/item/held_item, mob/user)
+ if(!isliving(user))
+ return
+
+ var/mob/living/living_user = user
+
+ if(held_item?.tool_behaviour == TOOL_WELDER && !living_user.combat_mode && atom_integrity < max_integrity)
+ context[SCREENTIP_CONTEXT_LMB] = "repair display"
+
+ if(held_item?.tool_behaviour == TOOL_MULTITOOL && !living_user.combat_mode)
+ if(sign_features == DISPLAY_TRAM)
+ context[SCREENTIP_CONTEXT_LMB] = "change to disease mode"
+ else if(sign_features == DISPLAY_DISEASE)
+ context[SCREENTIP_CONTEXT_LMB] = "change to delam mode"
+ else if(sign_features == DISPLAY_DELAM)
+ context[SCREENTIP_CONTEXT_LMB] = "change to tram mode"
+
+ return CONTEXTUAL_SCREENTIP_SET
+
+/// 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 disease")
+ name = NAME_DISEASE
+ desc = DESC_DISEASE
+ sign_features = DISPLAY_DISEASE
+ update_appearance()
+ return TRUE
+ else if(sign_features == DISPLAY_DISEASE)
+ tool.play_tool_sound(src)
+ balloon_alert(user, "set to delam")
+ name = NAME_DELAM
+ desc = DESC_DELAM
+ sign_features = DISPLAY_DELAM
+ update_delam_count(SSpersistence.rounds_since_engine_exploded, SSpersistence.delam_highscore)
+ update_appearance()
+ return TRUE
+ else
+ tool.play_tool_sound(src)
+ balloon_alert(user, "set to tram")
+ name = NAME_TRAM
+ desc = DESC_TRAM
+ sign_features = DISPLAY_TRAM
+ update_tram_count(src, SSpersistence.tram_hits_this_round)
+ update_appearance()
+ return TRUE
+
+/**
+ * Update the disease count on the display
+ *
+ * Use the provided args to update the incident display when in disease mode.
+ * Arguments:
+ * * current - current active event disease metric
+ * * previous - previous cached event disease metric
+ */
+/obj/machinery/incident_display/proc/update_disease_count(source, current, previous)
+ current_disease_metric = min(current, 199)
+ prev_disease_metric = min(previous, 199)
+ update_appearance()
+
+/obj/machinery/incident_display/examine(mob/user)
+ . = ..()
+ if(sign_features & DISPLAY_DISEASE)
+ . += span_notice("It can be changed to display delam-free shifts with a [EXAMINE_HINT("multitool")].")
+ . += span_info("The station has [current_disease_metric] reported active infections incident\s at the moment.")
+ if(current_disease_metric == 0)
+ . += span_notice("[pick(disease_slogan_good)]
")
+ else
+ . += span_notice("[pick(disease_slogan_bad)]
")
+
+#undef DISPLAY_DELAM
+#undef DISPLAY_TRAM
+#undef DISPLAY_DISEASE
+
+#undef NAME_DELAM
+#undef NAME_TRAM
+#undef NAME_DISEASE
+
+#undef DESC_DELAM
+#undef DESC_TRAM
+#undef DESC_DISEASE
+
+#undef TREND_RISING
+#undef TREND_FALLING
diff --git a/modular_zubbers/code/modules/disease/disease_transmission.dm b/modular_zubbers/code/modules/disease/disease_transmission.dm
index 2e7a04dd50f..9bfda714154 100644
--- a/modular_zubbers/code/modules/disease/disease_transmission.dm
+++ b/modular_zubbers/code/modules/disease/disease_transmission.dm
@@ -1,6 +1,36 @@
/datum/controller/subsystem/disease
+ runlevels = RUNLEVEL_GAME|RUNLEVEL_POSTGAME
+ flags = SS_BACKGROUND
+ wait = 16 SECONDS
/// List of event created diseases in all mobs
var/list/event_diseases = list()
+ var/cached_event_disease_count = 0
+ var/previous_event_disease_count = 0
+ var/next_cache_update = 0
+
+/datum/controller/subsystem/disease/stat_entry(msg)
+ msg = "P:[length(active_diseases)] EV:[cached_event_disease_count]"
+ return ..()
+
+/datum/controller/subsystem/disease/fire()
+ update_event_disease_cache()
+
+/datum/controller/subsystem/disease/proc/update_event_disease_cache()
+ if(world.time >= next_cache_update)
+ update_event_disease_metric()
+
+ var/current_infections = 0
+ for(var/datum/disease/active_infection as anything in event_diseases)
+ if(isnull(active_infection.affected_mob) || active_infection.affected_mob?.stat == DEAD)
+ continue // don't count dead people. they can't spread disease, right? right???...
+ current_infections++
+
+ cached_event_disease_count = current_infections
+ SEND_SIGNAL(src, COMSIG_DISEASE_COUNT_UPDATE, cached_event_disease_count, previous_event_disease_count)
+
+/datum/controller/subsystem/disease/proc/update_event_disease_metric()
+ previous_event_disease_count = cached_event_disease_count
+ next_cache_update = world.time + 4 MINUTES
/datum/disease
/// Debug logs for disease transmission refactor, to verify after the fact the system is working as intended
diff --git a/modular_zubbers/icons/obj/machines/incident_display.dmi b/modular_zubbers/icons/obj/machines/incident_display.dmi
new file mode 100644
index 0000000000000000000000000000000000000000..556a76c502e0f9e4b59e7466791866cba37b2879
GIT binary patch
literal 7280
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
literal 0
HcmV?d00001
diff --git a/tgstation.dme b/tgstation.dme
index 07243fe02f7..ed78db8f306 100644
--- a/tgstation.dme
+++ b/tgstation.dme
@@ -8876,6 +8876,7 @@
#include "modular_zubbers\code\game\Items\storage\backpack.dm"
#include "modular_zubbers\code\game\machinery\crew_monitor.dm"
#include "modular_zubbers\code\game\machinery\department_balance.dm"
+#include "modular_zubbers\code\game\machinery\incident_display.dm"
#include "modular_zubbers\code\game\machinery\medipen_refiller.dm"
#include "modular_zubbers\code\game\machinery\morgue.dm"
#include "modular_zubbers\code\game\machinery\syndiepad.dm"