diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index d7563a4b106..dd01eb26c37 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -18557,6 +18557,7 @@ pixel_x = 5; pixel_y = 6 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/wood/tile, /area/station/command/bridge) "hcY" = ( @@ -29624,6 +29625,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_red/half/contrasted, /obj/machinery/camera/autoname/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security/execution/transfer) "kXl" = ( @@ -42086,6 +42088,7 @@ /area/station/service/library) "puT" = ( /obj/structure/bookcase/random/nonfiction, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/wood/tile, /area/station/service/bar) "pvg" = ( @@ -59404,6 +59407,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/dark_red/half/contrasted, /obj/machinery/light/cold/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security) "uVb" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 681281a0170..7ba7fcaf3e3 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -15086,7 +15086,7 @@ dir = 5 }, /obj/structure/sign/departments/science/alt/directional/east, -/obj/structure/sign/clock/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/science/lab) "dKs" = ( @@ -20739,6 +20739,7 @@ dir = 1 }, /obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/commons/lounge) "ffP" = ( @@ -25808,6 +25809,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/medical/storage) "gtG" = ( @@ -40553,8 +40555,8 @@ "kbQ" = ( /obj/machinery/vending/coffee, /obj/effect/turf_decal/bot, -/obj/structure/sign/clock/directional/south, /obj/effect/turf_decal/tile/neutral/fourcorners, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/commons/locker) "kbT" = ( @@ -44521,6 +44523,19 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"lcC" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/station/hallway/primary/central/aft) "lcF" = ( /obj/effect/mapping_helpers/broken_floor, /obj/machinery/light/small/broken/directional/west, @@ -55185,6 +55200,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"nPK" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/cable, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/station/hallway/secondary/entry) "nPQ" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -65363,7 +65388,6 @@ /obj/item/gun/syringe, /obj/item/gun/syringe, /obj/structure/table/reinforced, -/obj/structure/sign/clock/directional/east, /obj/effect/turf_decal/tile/neutral/half/contrasted{ dir = 8 }, @@ -85477,7 +85501,7 @@ pixel_x = 32 }, /obj/item/kirbyplants/random, -/obj/structure/sign/clock/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/wood, /area/station/commons/dorms) "vuG" = ( @@ -132039,7 +132063,7 @@ aaa aaa aaa sjt -kEn +nPK kJd wTn sjt @@ -142655,7 +142679,7 @@ cBN tXa nXo iVq -lRk +lcC crR iee iYi diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 6519e987e80..0024a5b0515 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -15362,6 +15362,16 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"eMG" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/tile/red{ + dir = 1 + }, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron, +/area/station/security/prison/mess) "eMH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/landmark/start/assistant, @@ -24855,6 +24865,7 @@ /obj/effect/turf_decal/loading_area{ dir = 8 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/hallway/primary/central) "hVo" = ( @@ -29673,6 +29684,7 @@ dir = 8 }, /obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/service/bar) "jyz" = ( @@ -49733,6 +49745,7 @@ "pNV" = ( /obj/effect/turf_decal/siding/white, /obj/machinery/light/directional/south, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/white/smooth_large, /area/station/service/kitchen/diner) "pNY" = ( @@ -55079,6 +55092,7 @@ /area/icemoon/surface/outdoors/nospawn) "rzS" = ( /obj/structure/sign/departments/chemistry/pharmacy/directional/west, +/obj/machinery/digital_clock/directional/south, /turf/open/openspace, /area/station/medical/medbay/lobby) "rAr" = ( @@ -68277,6 +68291,7 @@ /area/mine/storage) "vPh" = ( /obj/machinery/light/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/cargo/lobby) "vPi" = ( @@ -71204,6 +71219,7 @@ /obj/effect/turf_decal/siding/wideplating/dark{ dir = 5 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/dark/textured, /area/station/security/prison/rec) "wJd" = ( @@ -74115,6 +74131,7 @@ "xCv" = ( /obj/machinery/computer/security, /obj/effect/turf_decal/tile/red/half/contrasted, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/command/bridge) "xCz" = ( @@ -103501,7 +103518,7 @@ ldH ldH ldH ldH -fTb +eMG iKw iZs sOT diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 67817c6b959..fe30cd3e7e3 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1416,6 +1416,8 @@ /obj/item/stack/sheet/glass/fifty, /obj/item/stack/rods/fifty, /obj/effect/turf_decal/tile/yellow/anticorner/contrasted, +/obj/item/wallframe/digital_clock, +/obj/item/wallframe/digital_clock, /turf/open/floor/iron, /area/station/commons/storage/tools) "aCE" = ( @@ -13536,6 +13538,13 @@ /obj/structure/window/spawner/directional/south, /turf/open/floor/iron/white, /area/station/security/prison/mess) +"fdu" = ( +/obj/effect/turf_decal/tile/blue/anticorner/contrasted{ + dir = 8 + }, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/dark, +/area/station/command/bridge) "fdH" = ( /obj/machinery/atmospherics/pipe/smart/simple/purple/visible{ dir = 4 @@ -41336,9 +41345,9 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "oUB" = ( -/obj/machinery/status_display/evac/directional/north, /obj/effect/turf_decal/bot, /obj/effect/landmark/start/hangover, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/command) "oUE" = ( @@ -52695,6 +52704,7 @@ /area/station/command/heads_quarters/qm) "sXE" = ( /obj/structure/cable, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/wood, /area/station/service/library) "sXF" = ( @@ -59803,6 +59813,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/hallway/primary/central) "vxJ" = ( @@ -62962,6 +62973,10 @@ dir = 1 }, /area/station/engineering/atmos/pumproom) +"wDH" = ( +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/wood, +/area/station/service/library) "wEf" = ( /obj/machinery/atmospherics/components/unary/vent_pump/siphon/monitored/plasma_output{ dir = 1 @@ -64010,6 +64025,7 @@ }, /obj/structure/table, /obj/effect/turf_decal/tile/bar/opposingcorners, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/service/bar) "wYo" = ( @@ -87984,7 +88000,7 @@ mjr nxz ueD sVY -mjr +wDH rSx pEH pEH @@ -96193,7 +96209,7 @@ tqI gkD nXm wNh -veO +fdu duI duI duI diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 670b19d3244..b4978c1b9d7 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -7874,6 +7874,12 @@ dir = 8 }, /area/station/hallway/floor1/aft) +"bSE" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor1/fore) "bSH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -9153,6 +9159,7 @@ /obj/structure/chair/sofa/right/brown{ dir = 1 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/carpet, /area/station/medical/psychology) "ciW" = ( @@ -9272,6 +9279,7 @@ /area/station/service/abandoned_gambling_den) "ckP" = ( /obj/machinery/smartfridge/extract/preloaded, +/obj/machinery/airalarm/directional/west, /turf/open/floor/iron/white, /area/station/science/xenobiology) "ckQ" = ( @@ -9361,8 +9369,8 @@ /turf/open/floor/iron/kitchen, /area/station/service/kitchen/abandoned) "clP" = ( -/obj/machinery/airalarm/directional/north, /obj/machinery/chem_master, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/textured_large, /area/station/medical/chemistry) "clT" = ( @@ -26887,6 +26895,7 @@ dir = 8 }, /obj/machinery/recharge_station, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/cargo/storage) "gVw" = ( @@ -28456,6 +28465,11 @@ dir = 8 }, /area/station/hallway/secondary/exit) +"hpz" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/digital_clock/directional/south, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "hpF" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, /turf/open/floor/iron, @@ -30870,6 +30884,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/dark, /area/station/medical/morgue) "hYN" = ( @@ -34958,9 +34973,9 @@ /obj/effect/turf_decal/stripes{ dir = 4 }, -/obj/machinery/airalarm/directional/north, /obj/structure/window/reinforced/spawner/directional/east, /obj/machinery/light/cold/no_nightlight/directional/north, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/white, /area/station/science/xenobiology) "jcN" = ( @@ -46300,6 +46315,12 @@ /obj/machinery/firealarm/directional/east, /turf/open/floor/catwalk_floor, /area/station/maintenance/floor2/starboard) +"lZS" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor2/fore) "map" = ( /obj/structure/door_assembly/door_assembly_med, /obj/machinery/door/firedoor, @@ -53075,6 +53096,7 @@ /area/station/service/chapel) "nGm" = ( /obj/structure/cable/multilayer/multiz, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/catwalk_floor, /area/station/hallway/floor3/fore) "nGx" = ( @@ -54126,6 +54148,7 @@ "nTJ" = ( /obj/structure/table/reinforced, /obj/effect/turf_decal/tile/blue/opposingcorners, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/command/gateway) "nTO" = ( @@ -64663,6 +64686,7 @@ /obj/machinery/recharger, /obj/effect/turf_decal/tile/purple/fourcorners, /obj/item/multitool, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/command/bridge) "qGV" = ( @@ -65662,6 +65686,7 @@ /area/station/hallway/floor1/aft) "qWe" = ( /obj/machinery/vending/wardrobe/chem_wardrobe, +/obj/machinery/airalarm/directional/north, /turf/open/floor/iron/textured_large, /area/station/medical/chemistry) "qWi" = ( @@ -66271,6 +66296,7 @@ dir = 4 }, /obj/structure/sign/poster/official/random/directional/south, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/wood, /area/station/service/bar/atrium) "rdV" = ( @@ -69354,6 +69380,12 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/maintenance/floor1/port) +"rYq" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor3/fore) "rYw" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -75368,6 +75400,12 @@ /obj/effect/turf_decal/siding/white, /turf/open/floor/iron/dark/textured, /area/station/medical/paramedic) +"tEh" = ( +/obj/effect/turf_decal/delivery, +/obj/machinery/door/firedoor/heavy, +/obj/machinery/digital_clock/directional/north, +/turf/open/floor/iron/dark, +/area/station/hallway/floor4/aft) "tEi" = ( /obj/item/kirbyplants/random, /turf/open/floor/iron/dark, @@ -79347,6 +79385,7 @@ /area/station/maintenance/floor1/port) "uKt" = ( /obj/structure/cable/multilayer/multiz, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/catwalk_floor, /area/station/hallway/floor1/fore) "uKz" = ( @@ -91671,6 +91710,7 @@ dir = 4 }, /obj/structure/chair/sofa/bench/left, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/cargo/lobby) "xSb" = ( @@ -123192,7 +123232,7 @@ vni mnQ rMq kyR -vOK +bSE hVG bBx jnp @@ -188214,7 +188254,7 @@ qlQ feX gPH fNT -fqo +lZS idn shi miF @@ -190023,7 +190063,7 @@ qRy cht sYb kUO -pDS +hpz kKr hPX wyE @@ -254264,7 +254304,7 @@ bvB oZx iQG eDe -ybQ +rYq nKn wdb qcd @@ -319286,7 +319326,7 @@ niF vRO qbg nWW -uIk +tEh bVy vVu vOE diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 7a5495c59aa..fa2f0a62981 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -16512,7 +16512,7 @@ "etQ" = ( /obj/effect/turf_decal/trimline/red/filled/line, /obj/machinery/light/directional/south, -/obj/structure/sign/clock/directional/south, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/security/courtroom/holding) "euC" = ( @@ -19737,7 +19737,7 @@ /obj/machinery/modular_computer/preset/id{ dir = 1 }, -/obj/structure/sign/clock/directional/south, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/cafeteria, /area/station/command/heads_quarters/rd) "fGZ" = ( @@ -29180,12 +29180,12 @@ /area/station/hallway/secondary/service) "jpw" = ( /obj/effect/turf_decal/trimline/yellow/filled/line, -/obj/structure/sign/clock/directional/south, /obj/machinery/conveyor_switch/oneway{ id = "engineeringchute"; name = "Shipment Delivery Chute Activator"; pixel_x = -11 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/engineering/main) "jpC" = ( @@ -36307,6 +36307,7 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 5 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/hallway/secondary/entry) "lQE" = ( @@ -42179,7 +42180,6 @@ /obj/structure/window/reinforced/spawner/directional/west, /obj/structure/table/glass, /obj/item/reagent_containers/dropper, -/obj/structure/sign/clock/directional/north, /obj/item/reagent_containers/cup/beaker/large{ pixel_x = 6; pixel_y = 4 @@ -42187,6 +42187,7 @@ /obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ dir = 4 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron/white, /area/station/medical/chemistry) "nXh" = ( @@ -45208,6 +45209,7 @@ "piT" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark/herringbone, /area/station/commons/vacant_room) "piX" = ( @@ -45513,13 +45515,13 @@ }, /area/station/service/kitchen) "pnz" = ( -/obj/structure/sign/clock/directional/south, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/effect/turf_decal/tile/neutral/opposingcorners{ dir = 1 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark, /area/station/medical/break_room) "pnF" = ( @@ -51826,6 +51828,7 @@ /obj/effect/turf_decal/trimline/red/filled/line{ dir = 1 }, +/obj/machinery/digital_clock/directional/north, /turf/open/floor/iron, /area/station/security/prison) "rBb" = ( @@ -55060,7 +55063,6 @@ name = "Custom Channel"; pixel_x = 0 }, -/obj/structure/sign/clock/directional/south, /turf/open/floor/iron/dark/small, /area/station/commons/vacant_room) "sJx" = ( @@ -57111,6 +57113,7 @@ dir = 1; req_access = list("syndicate") }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron/dark/small, /area/station/commons/vacant_room) "tsV" = ( @@ -61613,10 +61616,10 @@ /area/station/commons/vacant_room/office) "uSU" = ( /obj/effect/turf_decal/trimline/red/filled/line, -/obj/structure/sign/clock/directional/south, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/digital_clock/directional/south, /turf/open/floor/iron, /area/station/security/office) "uSV" = ( diff --git a/code/controllers/subsystem/processing/digital_clock.dm b/code/controllers/subsystem/processing/digital_clock.dm new file mode 100644 index 00000000000..5ca22f58beb --- /dev/null +++ b/code/controllers/subsystem/processing/digital_clock.dm @@ -0,0 +1,5 @@ +/// The subsystem used to tick digital clocks +PROCESSING_SUBSYSTEM_DEF(digital_clock) + name = "digital_clock" + flags = SS_NO_INIT|SS_BACKGROUND|SS_KEEP_TIMING + wait = 1 SECONDS diff --git a/code/game/machinery/digital_clock.dm b/code/game/machinery/digital_clock.dm new file mode 100644 index 00000000000..99cd1894725 --- /dev/null +++ b/code/game/machinery/digital_clock.dm @@ -0,0 +1,158 @@ +/obj/machinery/digital_clock + name = "digital clock" + desc = "An ultra-futuristic, sleek, advanced, next-gen normal digital clock that tells the time. Powered by bluespace. Despite supposedly being better in every way to classic clocks, it just doesn't feel the same. They just don't make them the way they used to..." + icon_state = "digital_clock_base" + icon = 'icons/obj/digital_clock.dmi' + verb_say = "beeps" + verb_ask = "bloops" + verb_exclaim = "blares" + density = FALSE + layer = ABOVE_WINDOW_LAYER + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) + +/obj/item/wallframe/digital_clock + name = "digital clock frame" + desc = "Used to build digital clocks, just secure to the wall." + icon_state = "digital_clock_base" + icon = 'icons/obj/digital_clock.dmi' + custom_materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT * 7, /datum/material/glass = SHEET_MATERIAL_AMOUNT * 4) + result_path = /obj/machinery/digital_clock + pixel_shift = 28 + +/obj/machinery/digital_clock/wrench_act_secondary(mob/living/user, obj/item/tool) + . = ..() + balloon_alert(user, "[anchored ? "un" : ""]securing...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + balloon_alert(user, "[anchored ? "un" : ""]secured") + deconstruct() + return TRUE + +/obj/machinery/digital_clock/welder_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + if(atom_integrity >= max_integrity) + balloon_alert(user, "it doesn't need repairs!") + return TRUE + balloon_alert(user, "repairing display...") + if(!tool.use_tool(src, user, 4 SECONDS, amount = 0, volume=50)) + return TRUE + balloon_alert(user, "repaired") + atom_integrity = max_integrity + set_machine_stat(machine_stat & ~BROKEN) + update_appearance() + return TRUE + +/obj/machinery/digital_clock/multitool_act(mob/living/user, obj/item/tool) + if(user.combat_mode) + return + if(!(obj_flags & EMAGGED)) + return + balloon_alert(user, "resetting...") + tool.play_tool_sound(src) + if(tool.use_tool(src, user, 6 SECONDS)) + playsound(loc, 'sound/items/deconstruct.ogg', 50, vary = TRUE) + balloon_alert(user, "reset") + obj_flags &= ~EMAGGED + return TRUE + +/obj/machinery/digital_clock/emag_act(mob/user) + if(obj_flags & EMAGGED) + return + playsound(src, SFX_SPARKS, 100, vary = TRUE, extrarange = SHORT_RANGE_SOUND_EXTRARANGE) + do_sparks(3, cardinal_only = FALSE, source = src) + obj_flags |= EMAGGED + +/obj/machinery/digital_clock/emp_act(severity) + . = ..() + emag_act() + +/obj/machinery/digital_clock/deconstruct(disassembled = TRUE) + if(flags_1 & NODECONSTRUCT_1) + return + if(disassembled) + new /obj/item/wallframe/digital_clock(drop_location()) + else + new /obj/item/stack/sheet/iron(drop_location(), 2) + new /obj/item/shard(drop_location()) + new /obj/item/shard(drop_location()) + qdel(src) + +/obj/machinery/digital_clock/Initialize(mapload) + . = ..() + START_PROCESSING(SSdigital_clock, src) + +/obj/machinery/digital_clock/Destroy() + STOP_PROCESSING(SSdigital_clock, src) + return ..() + +/obj/machinery/digital_clock/process(seconds_per_tick) + if(machine_stat & NOPOWER) + return + update_appearance() + + +/obj/machinery/digital_clock/update_appearance(updates=ALL) + . = ..() + if(machine_stat & (NOPOWER|BROKEN)) + set_light(0) + return + set_light(l_range = 1.5, l_power = 0.7, l_color = LIGHT_COLOR_BLUE) // blue light + +/obj/machinery/digital_clock/update_overlays() + . = ..() + + if(machine_stat & (NOPOWER|BROKEN)) + return + . += update_time() + return . + +/obj/machinery/digital_clock/proc/update_time() + var/station_minutes + if(obj_flags & EMAGGED) + station_minutes = rand(0, 99) + else + station_minutes = text2num(station_time_timestamp(format = "mm")) + + // tenth / the '3' in '31' / 31 -> 3.1 -> 3 + var/station_minute_tenth = station_minutes >= 10 ? round(station_minutes * 0.1) : 0 + // one / the '1' in '31' / 31 -> 31 - (3 * 10) -> 31 - 30 -> 1 + var/station_minute_one = station_minutes - (station_minute_tenth * 10) + + var/station_hours + + if(obj_flags & EMAGGED) + station_hours = rand(0, 99) + else + station_hours = text2num(station_time_timestamp(format = "hh")) + + // one / the '1' in '12' / 12 -> 1.2 -> 1 + var/station_hours_tenth = station_minutes >= 10 ? round(station_hours * 0.1) : 0 + // tenth / the '2' in '12' / 12 -> 12 - (1 * 10) -> 12 - 10 -> 2 + var/station_hours_one = station_hours - (station_hours_tenth * 10) + + var/return_overlays = list() + + var/mutable_appearance/minute_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_one]") + minute_one_overlay.pixel_w = 0 + return_overlays += minute_one_overlay + + var/mutable_appearance/minute_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_minute_tenth]") + minute_tenth_overlay.pixel_w = -4 + return_overlays += minute_tenth_overlay + + var/mutable_appearance/separator = mutable_appearance('icons/obj/digital_clock.dmi', "+separator") + return_overlays += separator + + var/mutable_appearance/hour_one_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_one]") + hour_one_overlay.pixel_w = -10 + return_overlays += hour_one_overlay + + var/mutable_appearance/hour_tenth_overlay = mutable_appearance('icons/obj/digital_clock.dmi', "+[station_hours_tenth]") + hour_tenth_overlay.pixel_w = -14 + return_overlays += hour_tenth_overlay + + return return_overlays + +MAPPING_DIRECTIONAL_HELPERS(/obj/machinery/digital_clock, 28) diff --git a/code/modules/research/designs/autolathe/multi-department_designs.dm b/code/modules/research/designs/autolathe/multi-department_designs.dm index db619a48184..594486b539d 100644 --- a/code/modules/research/designs/autolathe/multi-department_designs.dm +++ b/code/modules/research/designs/autolathe/multi-department_designs.dm @@ -424,6 +424,18 @@ ) departmental_flags = DEPARTMENT_BITFLAG_MEDICAL | DEPARTMENT_BITFLAG_SCIENCE | DEPARTMENT_BITFLAG_SERVICE +/datum/design/digital_clock_frame + name = "Digital Clock Frame" + id = "digital_clock_frame" + build_type = AUTOLATHE | PROTOLATHE | AWAY_LATHE + materials = list(/datum/material/iron = SHEET_MATERIAL_AMOUNT*7, /datum/material/glass = SHEET_MATERIAL_AMOUNT*4) + build_path = /obj/item/wallframe/digital_clock + category = list( + RND_CATEGORY_INITIAL, + RND_CATEGORY_CONSTRUCTION + RND_SUBCATEGORY_CONSTRUCTION_MOUNTS, + ) + departmental_flags = DEPARTMENT_BITFLAG_ENGINEERING | DEPARTMENT_BITFLAG_SERVICE + /datum/design/razor name = "Electric Razor" id = "razor" diff --git a/icons/obj/digital_clock.dmi b/icons/obj/digital_clock.dmi new file mode 100644 index 00000000000..9ab096bf593 Binary files /dev/null and b/icons/obj/digital_clock.dmi differ diff --git a/tgstation.dme b/tgstation.dme index a00de40fbf5..01e80d08ec7 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -639,6 +639,7 @@ #include "code\controllers\subsystem\processing\aura_healing.dm" #include "code\controllers\subsystem\processing\clock_component.dm" #include "code\controllers\subsystem\processing\conveyors.dm" +#include "code\controllers\subsystem\processing\digital_clock.dm" #include "code\controllers\subsystem\processing\fastprocess.dm" #include "code\controllers\subsystem\processing\fire_burning.dm" #include "code\controllers\subsystem\processing\greyscale.dm" @@ -1556,6 +1557,7 @@ #include "code\game\machinery\dance_machine.dm" #include "code\game\machinery\defibrillator_mount.dm" #include "code\game\machinery\deployable.dm" +#include "code\game\machinery\digital_clock.dm" #include "code\game\machinery\dish_drive.dm" #include "code\game\machinery\dna_scanner.dm" #include "code\game\machinery\droneDispenser.dm"