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 00000000000..556a76c502e Binary files /dev/null and b/modular_zubbers/icons/obj/machines/incident_display.dmi differ 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"