diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index a643bde9e4c..af28c01f413 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -9729,7 +9729,7 @@ /area/awaymission/snowdin/post/mining_main) "IV" = ( /obj/structure/table, -/obj/structure/showcase/machinery/microwave, +/obj/machinery/microwave/engineering/cell_included, /obj/effect/turf_decal/tile/neutral/half/contrasted, /turf/open/floor/iron, /area/awaymission/snowdin/post/mining_main) diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 4004e924842..0895d18df5c 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -893,6 +893,13 @@ /obj/effect/spawner/structure/window/reinforced, /turf/open/floor/plating, /area/station/engineering/atmos/project) +"arV" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/structure/table, +/obj/machinery/microwave/engineering/cell_included, +/turf/open/floor/iron, +/area/station/maintenance/department/engine/atmos) "asb" = ( /obj/effect/turf_decal/siding/white, /turf/open/floor/iron/dark/small, @@ -3177,24 +3184,6 @@ /obj/machinery/newscaster/directional/west, /turf/open/floor/iron, /area/station/commons) -"bnl" = ( -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/effect/turf_decal/tile/yellow/full, -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/right/directional/east{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" - }, -/turf/open/floor/iron/dark/textured_large, -/area/station/medical/pharmacy) "bno" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -4728,6 +4717,24 @@ /obj/effect/spawner/random/maintenance, /turf/open/floor/noslip/tram_platform, /area/station/security/tram) +"bQF" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/yellow/full, +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east{ + name = "Pharmacy Desk"; + req_access = list("pharmacy") + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "pharmacy_shutters"; + name = "Pharmacy Shutters" + }, +/turf/open/floor/iron/dark/textured_large, +/area/station/medical/pharmacy) "bQU" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -7290,12 +7297,6 @@ /obj/effect/turf_decal/tile/brown/full, /turf/open/floor/iron/smooth_large, /area/station/service/bar) -"cOL" = ( -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/machinery/light/small/directional/north, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) "cOQ" = ( /obj/structure/cable, /obj/structure/disposalpipe/sorting/mail/flip{ @@ -26565,6 +26566,14 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"jCL" = ( +/obj/effect/turf_decal/tile/yellow/opposingcorners, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/light/small/directional/north, +/obj/structure/table, +/obj/effect/spawner/random/food_or_drink/donkpockets, +/turf/open/floor/iron, +/area/station/maintenance/department/engine/atmos) "jCP" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -42311,11 +42320,6 @@ }, /turf/open/floor/iron, /area/station/science/cytology) -"pdW" = ( -/obj/effect/decal/cleanable/dirt, -/obj/effect/turf_decal/tile/yellow/opposingcorners, -/turf/open/floor/iron, -/area/station/maintenance/department/engine/atmos) "pdY" = ( /obj/machinery/portable_atmospherics/canister/bz, /turf/open/floor/iron/diagonal, @@ -84212,7 +84216,7 @@ yjE fPv dja bNq -pdW +arV dIm dQY ecq @@ -84469,7 +84473,7 @@ yjE uYG djC bNq -cOL +jCL dIe dRE ecF @@ -104612,7 +104616,7 @@ wfr nPd wfr nPd -bnl +bQF uxJ wfr wfr diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 91043d27344..dc37382b416 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -17333,12 +17333,6 @@ /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, /area/station/ai_monitored/turret_protected/ai_upload) -"enj" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave, -/obj/structure/sign/poster/random/directional/west, -/turf/open/floor/wood, -/area/station/engineering/break_room) "enq" = ( /obj/item/folder/yellow, /obj/item/multitool, @@ -22604,6 +22598,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/science/xenobiology) +"fCm" = ( +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chemisttop"; + name = "Pharmacy Shutters" + }, +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "fCn" = ( /obj/machinery/door/airlock/medical{ name = "Medical Break Room" @@ -24965,16 +24969,6 @@ }, /turf/open/floor/iron, /area/station/science/xenobiology) -"gfK" = ( -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chemisttop"; - name = "Pharmacy Shutters" - }, -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "gfR" = ( /obj/effect/turf_decal/tile/neutral/fourcorners, /turf/open/floor/iron/dark, @@ -25160,6 +25154,39 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/central/fore) +"giO" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/structure/desk_bell{ + pixel_x = 7; + pixel_y = 6 + }, +/obj/item/folder/yellow{ + pixel_x = -3; + pixel_y = -6 + }, +/obj/item/pen{ + pixel_x = -3; + pixel_y = -2 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "chemisttop"; + name = "Pharmacy Shutters" + }, +/obj/effect/turf_decal/stripes/line{ + dir = 8 + }, +/obj/effect/turf_decal/stripes/line{ + dir = 4 + }, +/obj/machinery/door/window/left/directional/west{ + name = "Pharmacy Desk"; + req_access = list("pharmacy"); + dir = 4 + }, +/turf/open/floor/iron/dark, +/area/station/medical/pharmacy) "giY" = ( /obj/effect/decal/cleanable/dirt, /obj/structure/sign/poster/contraband/random/directional/north, @@ -51844,39 +51871,6 @@ /obj/effect/turf_decal/tile/neutral/full, /turf/open/floor/iron/dark/smooth_large, /area/station/security/interrogation) -"mUh" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/structure/desk_bell{ - pixel_x = 7; - pixel_y = 6 - }, -/obj/item/folder/yellow{ - pixel_x = -3; - pixel_y = -6 - }, -/obj/item/pen{ - pixel_x = -3; - pixel_y = -2 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "chemisttop"; - name = "Pharmacy Shutters" - }, -/obj/effect/turf_decal/stripes/line{ - dir = 8 - }, -/obj/effect/turf_decal/stripes/line{ - dir = 4 - }, -/obj/machinery/door/window/left/directional/west{ - name = "Pharmacy Desk"; - req_access = list("pharmacy"); - dir = 4 - }, -/turf/open/floor/iron/dark, -/area/station/medical/pharmacy) "mUt" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -72845,6 +72839,12 @@ }, /turf/open/floor/iron, /area/station/maintenance/port) +"sjJ" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave/engineering/cell_included, +/obj/structure/sign/poster/random/directional/west, +/turf/open/floor/wood, +/area/station/engineering/break_room) "ske" = ( /obj/effect/spawner/random/entertainment/arcade, /obj/effect/turf_decal/tile/neutral/fourcorners, @@ -119146,7 +119146,7 @@ uiP vkg wlS vQj -enj +sjJ cJX fhr kTd @@ -136923,8 +136923,8 @@ uNY squ pEU cwh -gfK -mUh +fCm +giO cwh cwh udd diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 0944d4d9c04..bdde1b185ee 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -1,4 +1,12 @@ //MAP CONVERTED BY dmm2tgm.py THIS HEADER COMMENT PREVENTS RECONVERSION, DO NOT REMOVE +"aaf" = ( +/obj/structure/table/glass, +/obj/machinery/microwave/engineering/cell_included, +/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/break_room) "aak" = ( /obj/structure/stairs/south, /obj/structure/railing{ @@ -1045,6 +1053,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/entry) +"arO" = ( +/obj/effect/turf_decal/tile/blue, +/obj/machinery/light/directional/south, +/obj/structure/extinguisher_cabinet/directional/south, +/turf/open/floor/iron, +/area/station/hallway/primary/starboard) "arT" = ( /obj/machinery/computer/security/labor{ dir = 4 @@ -3211,28 +3225,6 @@ /obj/machinery/firealarm/directional/south, /turf/open/floor/iron/dark, /area/station/service/chapel) -"aZO" = ( -/obj/machinery/camera{ - c_tag = "Medbay Pharmacy"; - dir = 9; - network = list("ss13","medbay") - }, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/machinery/shower/directional/south, -/obj/structure/railing{ - dir = 4 - }, -/obj/structure/fluff{ - desc = "What, you think the water just magically soaks into the metallic flooring?"; - icon = 'icons/obj/mining_zones/survival_pod.dmi'; - icon_state = "fan_tiny"; - name = "shower drain" - }, -/obj/effect/turf_decal/stripes/white/end, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "aZV" = ( /obj/effect/landmark/start/atmospheric_technician, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -10722,6 +10714,30 @@ }, /turf/open/floor/glass/reinforced, /area/station/science/xenobiology) +"dff" = ( +/obj/structure/table/reinforced, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east{ + name = "Pharmacy Desk"; + req_access = list("pharmacy") + }, +/obj/item/folder/white{ + pixel_x = -5 + }, +/obj/item/pen{ + pixel_x = -5 + }, +/obj/structure/desk_bell{ + pixel_x = 7 + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/iron, +/area/station/medical/pharmacy) "dfq" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/cyan/visible, /turf/closed/wall/r_wall, @@ -11978,24 +11994,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/primary/central) -"dyR" = ( -/obj/structure/table/glass, -/obj/item/stack/cable_coil, -/obj/item/stack/cable_coil, -/obj/item/screwdriver{ - pixel_x = 2; - pixel_y = 11 - }, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/item/grenade/chem_grenade, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/structure/extinguisher_cabinet/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "dyW" = ( /obj/structure/sign/poster/official/random/directional/south, /obj/structure/table/optable{ @@ -16959,6 +16957,24 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/station/maintenance/department/chapel) +"fdO" = ( +/obj/structure/table/glass, +/obj/item/stack/cable_coil, +/obj/item/stack/cable_coil, +/obj/item/screwdriver{ + pixel_x = 2; + pixel_y = 11 + }, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/item/grenade/chem_grenade, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/structure/extinguisher_cabinet/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "fdP" = ( /obj/structure/bonfire, /obj/item/melee/roastingstick, @@ -17157,6 +17173,16 @@ }, /turf/open/floor/iron, /area/station/engineering/lobby) +"fib" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters2"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "fij" = ( /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -17735,30 +17761,6 @@ }, /turf/open/floor/plating, /area/station/maintenance/fore/lesser) -"frp" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/right/directional/east{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/item/folder/white{ - pixel_x = -5 - }, -/obj/item/pen{ - pixel_x = -5 - }, -/obj/structure/desk_bell{ - pixel_x = 7 - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/iron, -/area/station/medical/pharmacy) "frq" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/hatch{ @@ -17895,6 +17897,28 @@ /obj/item/storage/box/prisoner, /turf/open/floor/iron/showroomfloor, /area/station/security/processing) +"ftB" = ( +/obj/machinery/camera{ + c_tag = "Medbay Pharmacy"; + dir = 9; + network = list("ss13","medbay") + }, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/machinery/shower/directional/south, +/obj/structure/railing{ + dir = 4 + }, +/obj/structure/fluff{ + desc = "What, you think the water just magically soaks into the metallic flooring?"; + icon = 'icons/obj/mining_zones/survival_pod.dmi'; + icon_state = "fan_tiny"; + name = "shower drain" + }, +/obj/effect/turf_decal/stripes/white/end, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "ftJ" = ( /obj/structure/table/reinforced, /obj/machinery/door/poddoor/shutters/preopen{ @@ -22230,6 +22254,25 @@ /obj/item/reagent_containers/dropper, /turf/open/floor/iron/cafeteria, /area/station/science/lab) +"gNA" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white, +/obj/item/pen, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/right/directional/east{ + base_state = "left"; + icon_state = "left"; + name = "Pharmacy Desk"; + req_access = list("pharmacy") + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters2"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/iron, +/area/station/medical/pharmacy) "gNH" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -33557,6 +33600,15 @@ /obj/structure/cable, /turf/open/floor/plating, /area/station/ai_monitored/turret_protected/aisat/maint) +"kpb" = ( +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk, +/obj/effect/turf_decal/tile/yellow/half/contrasted{ + dir = 1 + }, +/obj/machinery/firealarm/directional/north, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "kpf" = ( /obj/effect/turf_decal/tile/neutral/diagonal_edge, /obj/machinery/oven/range, @@ -35227,6 +35279,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/medical/cryo) +"kNg" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/machinery/door/firedoor, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "kNi" = ( /obj/structure/cable, /obj/structure/disposalpipe/segment{ @@ -42524,16 +42586,6 @@ /obj/effect/landmark/event_spawn, /turf/open/floor/iron/dark/textured_large, /area/station/security/evidence) -"ncY" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "ndb" = ( /obj/structure/window/reinforced/spawner/directional/south, /obj/machinery/computer/atmos_control/ordnancemix{ @@ -42997,6 +43049,14 @@ /obj/effect/spawner/random/trash/mess, /turf/open/floor/plating, /area/station/maintenance/department/medical/morgue) +"njP" = ( +/obj/machinery/chem_mass_spec, +/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ + dir = 8 + }, +/obj/structure/sign/warning/no_smoking/directional/west, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "njT" = ( /obj/effect/turf_decal/stripes/line{ dir = 6 @@ -44945,15 +45005,6 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/cargo/lobby) -"nKs" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "nKG" = ( /obj/machinery/door/firedoor, /obj/machinery/door/airlock/public/glass{ @@ -45957,15 +46008,6 @@ }, /turf/open/floor/iron/white, /area/station/science/xenobiology) -"ocF" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk, -/obj/effect/turf_decal/tile/yellow/half/contrasted{ - dir = 1 - }, -/obj/machinery/firealarm/directional/north, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "ocY" = ( /obj/effect/turf_decal/stripes/line, /obj/effect/spawner/random/engineering/tracking_beacon, @@ -52565,16 +52607,6 @@ /obj/effect/turf_decal/stripes/box, /turf/open/floor/plating, /area/station/commons/storage/mining) -"qan" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/firedoor, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters2"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "qau" = ( /obj/structure/fence{ dir = 4 @@ -55795,6 +55827,14 @@ /obj/effect/turf_decal/tile/bar/opposingcorners, /turf/open/floor/iron, /area/station/service/bar) +"qYp" = ( +/obj/machinery/chem_dispenser, +/obj/structure/window/reinforced/spawner/directional/west, +/obj/machinery/light/directional/north, +/obj/effect/turf_decal/tile/yellow/full, +/obj/item/radio/intercom/directional/north, +/turf/open/floor/iron/white/smooth_large, +/area/station/medical/pharmacy) "qYw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -58890,25 +58930,6 @@ /obj/structure/cable, /turf/open/floor/carpet, /area/station/command/heads_quarters/captain) -"rXq" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white, -/obj/item/pen, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/right/directional/east{ - base_state = "left"; - icon_state = "left"; - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters2"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/iron, -/area/station/medical/pharmacy) "rXr" = ( /obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ dir = 4 @@ -62124,14 +62145,6 @@ /obj/machinery/light_switch/directional/north, /turf/open/floor/iron/freezer, /area/station/commons/toilet/locker) -"sVt" = ( -/obj/machinery/chem_dispenser, -/obj/structure/window/reinforced/spawner/directional/west, -/obj/machinery/light/directional/north, -/obj/effect/turf_decal/tile/yellow/full, -/obj/item/radio/intercom/directional/north, -/turf/open/floor/iron/white/smooth_large, -/area/station/medical/pharmacy) "sVL" = ( /obj/machinery/holopad, /obj/effect/turf_decal/bot, @@ -68236,12 +68249,6 @@ }, /turf/open/floor/iron, /area/station/hallway/primary/starboard) -"uXn" = ( -/obj/effect/turf_decal/tile/blue, -/obj/machinery/light/directional/south, -/obj/structure/extinguisher_cabinet/directional/south, -/turf/open/floor/iron, -/area/station/hallway/primary/starboard) "uXu" = ( /obj/machinery/power/terminal{ dir = 4 @@ -74095,14 +74102,6 @@ "wNO" = ( /turf/open/genturf, /area/icemoon/surface/outdoors/unexplored/rivers/no_monsters) -"wNP" = ( -/obj/structure/table/glass, -/obj/machinery/microwave, -/obj/effect/turf_decal/tile/brown/anticorner/contrasted{ - dir = 4 - }, -/turf/open/floor/iron/white, -/area/station/medical/break_room) "wNQ" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -74761,6 +74760,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"wWn" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/pharmacy) "wWJ" = ( /turf/open/floor/iron/dark, /area/station/medical/morgue) @@ -77197,14 +77205,6 @@ }, /turf/open/floor/iron/white, /area/station/medical/medbay/lobby) -"xGo" = ( -/obj/machinery/chem_mass_spec, -/obj/effect/turf_decal/tile/yellow/anticorner/contrasted{ - dir = 8 - }, -/obj/structure/sign/warning/no_smoking/directional/west, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "xGp" = ( /obj/structure/table/reinforced, /obj/machinery/door/window/left/directional/north{ @@ -243858,7 +243858,7 @@ bai azw jqE kZb -xGo +njP azw fMg fqW @@ -244627,7 +244627,7 @@ lso dEV bai azw -dyR +fdO fTC xSu azw @@ -244882,9 +244882,9 @@ exw exw cwh dEV -uXn +arO azw -aZO +ftB eyc qPt uTc @@ -245402,8 +245402,8 @@ cJw dip bHO azw -rXq -qan +gNA +fib azw eiY tZm @@ -245655,7 +245655,7 @@ vwO hHg bai azw -ocF +kpb uTk sJA sHc @@ -245912,7 +245912,7 @@ lso aAa bai azw -sVt +qYp vYH nah azw @@ -246426,9 +246426,9 @@ mqq kjK bai azw -nKs -frp -ncY +wWn +dff +kNg azw gIY iBj @@ -251337,7 +251337,7 @@ xMM nqd ttO mFE -wNP +aaf pWY rQI phj diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index e1e8584540d..18fb519e73d 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -261,6 +261,16 @@ name = "Holodeck Projector Floor" }, /area/station/holodeck/rec_center) +"afF" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave/engineering/cell_included, +/obj/effect/turf_decal/stripes/corner, +/obj/effect/turf_decal/tile/yellow{ + dir = 8 + }, +/obj/machinery/light/small/directional/west, +/turf/open/floor/iron/checker, +/area/station/engineering/storage_shared) "afZ" = ( /obj/machinery/vending/coffee, /obj/structure/disposalpipe/segment, @@ -6253,6 +6263,30 @@ /obj/effect/decal/cleanable/blood/old, /turf/open/floor/wood, /area/station/maintenance/port/aft) +"cph" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/machinery/door/firedoor, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/item/pen, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 4; + id = "pharmacy_shutters_2"; + name = "Pharmacy Shutters" + }, +/obj/machinery/door/window/right/directional/east{ + name = "Pharmacy Desk"; + req_access = list("pharmacy") + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "cpi" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/circuit/green{ @@ -15542,6 +15576,15 @@ /obj/effect/mapping_helpers/airlock/access/all/medical/general, /turf/open/floor/plating, /area/station/maintenance/port/aft) +"fLn" = ( +/obj/effect/spawner/random/decoration/microwave{ + dir = 1; + pixel_y = 2 + }, +/obj/structure/table/wood, +/obj/machinery/light/small/directional/south, +/turf/open/floor/carpet, +/area/station/command/corporate_showroom) "fLp" = ( /obj/structure/disposalpipe/junction{ dir = 8 @@ -18538,32 +18581,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/engineering/atmospherics_engine) -"gSG" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/machinery/door/firedoor, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 1; - id = "pharmacy_shutters"; - name = "Pharmacy Shutters" - }, -/obj/structure/desk_bell{ - pixel_x = -8 - }, -/obj/machinery/door/window/left/directional/north{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "gSH" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/general/hidden, /obj/machinery/rnd/server/master, @@ -26983,15 +27000,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/station/security/execution/transfer) -"jJu" = ( -/obj/structure/showcase/machinery/microwave{ - dir = 1; - pixel_y = 2 - }, -/obj/structure/table/wood, -/obj/machinery/light/small/directional/south, -/turf/open/floor/carpet, -/area/station/command/corporate_showroom) "jJC" = ( /obj/structure/disposalpipe/segment, /obj/structure/lattice/catwalk, @@ -29646,17 +29654,6 @@ }, /turf/open/floor/iron/dark, /area/station/command/bridge) -"kGg" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/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) "kGq" = ( /obj/machinery/light/directional/south, /obj/structure/disposalpipe/segment{ @@ -40420,30 +40417,6 @@ }, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"oxH" = ( -/obj/structure/table/reinforced, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/machinery/door/firedoor, -/obj/item/folder/white{ - pixel_x = 4; - pixel_y = -3 - }, -/obj/item/pen, -/obj/machinery/door/poddoor/shutters/preopen{ - dir = 4; - id = "pharmacy_shutters_2"; - name = "Pharmacy Shutters" - }, -/obj/machinery/door/window/right/directional/east{ - name = "Pharmacy Desk"; - req_access = list("pharmacy") - }, -/obj/effect/turf_decal/tile/yellow/fourcorners, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "oxR" = ( /obj/structure/table, /obj/item/pipe_dispenser{ @@ -41529,6 +41502,32 @@ }, /turf/open/floor/iron, /area/station/engineering/atmos) +"oTp" = ( +/obj/structure/table/reinforced, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/machinery/door/firedoor, +/obj/item/folder/white{ + pixel_x = 4; + pixel_y = -3 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + dir = 1; + id = "pharmacy_shutters"; + name = "Pharmacy Shutters" + }, +/obj/structure/desk_bell{ + pixel_x = -8 + }, +/obj/machinery/door/window/left/directional/north{ + name = "Pharmacy Desk"; + req_access = list("pharmacy") + }, +/obj/effect/turf_decal/tile/yellow/fourcorners, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "oTD" = ( /obj/structure/frame/computer, /turf/open/floor/plating/airless, @@ -62570,18 +62569,6 @@ /obj/effect/landmark/start/hangover/closet, /turf/open/floor/iron, /area/station/hallway/secondary/entry) -"wiK" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/effect/turf_decal/stripes/corner, -/obj/effect/turf_decal/tile/yellow{ - dir = 8 - }, -/obj/machinery/light/small/directional/west, -/turf/open/floor/iron/checker, -/area/station/engineering/storage_shared) "wiS" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, @@ -66861,6 +66848,15 @@ }, /turf/open/floor/iron, /area/station/construction/mining/aux_base) +"xMk" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave/engineering/cell_included, +/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) "xMl" = ( /obj/machinery/navbeacon{ codes_txt = "patrol;next_patrol=15-Court"; @@ -89300,7 +89296,7 @@ nGr aST tBs vRN -kGg +xMk rOF ryf vnV @@ -94671,7 +94667,7 @@ bKB eAL xQY kcF -gSG +oTp oar keK lXA @@ -94935,7 +94931,7 @@ hYA jsh rvE tZJ -oxH +cph tZJ eIO wKC @@ -95174,7 +95170,7 @@ jzN sUy dkL uOd -jJu +fLn jzN qyI qaP @@ -110056,7 +110052,7 @@ qjl wlx qPT jRb -wiK +afF qsv sKD lUz diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 996c2c57eef..b43c9c7acfc 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -27647,7 +27647,7 @@ /turf/open/floor/iron/white, /area/station/science/ordnance/testlab) "hnH" = ( -/obj/machinery/microwave, +/obj/machinery/microwave/engineering/cell_included, /obj/structure/table/reinforced/rglass, /obj/effect/turf_decal/tile/blue/fourcorners, /turf/open/floor/iron/white/textured, diff --git a/_maps/map_files/VoidRaptor/VoidRaptor.dmm b/_maps/map_files/VoidRaptor/VoidRaptor.dmm index a7e3c6d39a6..eedc9a22ce0 100644 --- a/_maps/map_files/VoidRaptor/VoidRaptor.dmm +++ b/_maps/map_files/VoidRaptor/VoidRaptor.dmm @@ -21299,17 +21299,10 @@ /area/station/command/heads_quarters/rd) "gjk" = ( /obj/structure/table/reinforced, -/obj/item/storage/medkit/fire{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/item/radio/off{ - pixel_x = 6; - pixel_y = 6 - }, /obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 10 }, +/obj/machinery/microwave/engineering/cell_included, /turf/open/floor/iron/smooth, /area/station/engineering/lobby) "gjl" = ( @@ -22007,11 +22000,7 @@ }, /obj/structure/table, /obj/machinery/status_display/evac/directional/west, -/obj/machinery/microwave{ - desc = "Cooks and boils stuff, somehow."; - pixel_x = -2; - pixel_y = 5 - }, +/obj/machinery/microwave/engineering/cell_included, /turf/open/floor/iron/dark, /area/station/medical/break_room) "gtq" = ( @@ -76670,11 +76659,6 @@ dir = 6 }, /obj/structure/table/reinforced, -/obj/machinery/microwave{ - desc = "Cooks and boils stuff, somehow."; - pixel_x = -2; - pixel_y = 5 - }, /obj/machinery/requests_console/directional/south{ department = "Engineering"; dir = 4; @@ -76684,6 +76668,14 @@ }, /obj/effect/mapping_helpers/requests_console/supplies, /obj/effect/mapping_helpers/requests_console/assistance, +/obj/item/storage/medkit/fire{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/radio/off{ + pixel_x = 6; + pixel_y = 6 + }, /turf/open/floor/iron/smooth, /area/station/engineering/lobby) "vlS" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 37536770b20..9bfe7ed759e 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -3664,16 +3664,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/station/security/interrogation) -"avM" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - pixel_y = 6 - }, -/obj/effect/turf_decal/tile/neutral/opposingcorners{ - dir = 1 - }, -/turf/open/floor/iron/dark, -/area/station/medical/break_room) "avP" = ( /obj/effect/turf_decal/trimline/red/filled/line{ dir = 9 @@ -10454,15 +10444,6 @@ }, /turf/open/floor/plating, /area/station/science/xenobiology) -"cze" = ( -/obj/effect/spawner/structure/window/reinforced, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters_2"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "czg" = ( /obj/effect/turf_decal/siding/wood{ dir = 1 @@ -13785,24 +13766,6 @@ }, /turf/open/openspace, /area/station/hallway/primary/tram/left) -"dII" = ( -/obj/structure/table/reinforced, -/obj/structure/desk_bell{ - pixel_x = -7 - }, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters_2"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/obj/machinery/door/firedoor, -/obj/machinery/door/window/left/directional/south{ - dir = 4; - name = "Chemistry Desk"; - req_access = list("pharmacy") - }, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "dIK" = ( /turf/closed/wall/r_wall, /area/station/science/ordnance/freezerchamber) @@ -26814,6 +26777,15 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/station/commons/fitness/recreation) +"iHQ" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters_2"; + name = "Pharmacy Shutters" + }, +/obj/machinery/door/firedoor, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "iHT" = ( /obj/effect/turf_decal/trimline/neutral/filled/corner, /obj/structure/disposalpipe/segment, @@ -35162,15 +35134,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/white, /area/station/medical/treatment_center) -"lxJ" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters_2"; - name = "Pharmacy Shutters" - }, -/obj/machinery/door/firedoor, -/turf/open/floor/iron/white, -/area/station/medical/pharmacy) "lxW" = ( /obj/effect/turf_decal/trimline/purple/filled/line, /obj/machinery/firealarm/directional/south, @@ -42300,17 +42263,6 @@ /obj/structure/cable, /turf/open/floor/iron, /area/station/hallway/secondary/command) -"nYJ" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 9 - }, -/obj/machinery/power/apc/auto_name/directional/north, -/obj/structure/table/glass, -/obj/machinery/microwave, -/obj/structure/cable, -/obj/machinery/light/warm/directional/west, -/turf/open/floor/iron, -/area/station/engineering/break_room) "nYL" = ( /obj/machinery/atmospherics/pipe/heat_exchanging/simple/layer2{ dir = 8 @@ -42349,6 +42301,21 @@ }, /turf/open/floor/iron, /area/station/cargo/miningdock) +"nZy" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 8 + }, +/obj/machinery/firealarm/directional/west, +/obj/structure/table/glass, +/obj/structure/disposalpipe/segment{ + dir = 6 + }, +/obj/item/storage/box/donkpockets/donkpocketberry{ + pixel_y = 10; + pixel_x = -6 + }, +/turf/open/floor/iron, +/area/station/engineering/break_room) "nZL" = ( /obj/effect/turf_decal/siding/thinplating/dark{ dir = 1 @@ -43375,17 +43342,6 @@ }, /turf/open/floor/iron/white, /area/station/science/lower) -"otF" = ( -/obj/effect/turf_decal/trimline/yellow/filled/line{ - dir = 8 - }, -/obj/machinery/firealarm/directional/west, -/obj/structure/table/glass, -/obj/structure/disposalpipe/segment{ - dir = 6 - }, -/turf/open/floor/iron, -/area/station/engineering/break_room) "otP" = ( /obj/structure/railing/corner{ dir = 8 @@ -45402,6 +45358,16 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/station/hallway/primary/tram/left) +"plq" = ( +/obj/machinery/smartfridge/chemistry/preloaded, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters_2"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/turf/open/floor/plating, +/area/station/medical/pharmacy) "plr" = ( /obj/machinery/door/airlock{ id_tag = "miningdorm3"; @@ -45531,6 +45497,24 @@ /obj/machinery/light/warm/directional/east, /turf/open/floor/iron, /area/station/engineering/break_room) +"pmZ" = ( +/obj/structure/table/reinforced, +/obj/structure/desk_bell{ + pixel_x = -7 + }, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters_2"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/obj/machinery/door/firedoor, +/obj/machinery/door/window/left/directional/south{ + dir = 4; + name = "Chemistry Desk"; + req_access = list("pharmacy") + }, +/turf/open/floor/iron/white, +/area/station/medical/pharmacy) "pne" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/structure/disposalpipe/segment{ @@ -48834,6 +48818,17 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/freezer, /area/station/commons/toilet) +"qul" = ( +/obj/effect/turf_decal/trimline/yellow/filled/line{ + dir = 9 + }, +/obj/machinery/power/apc/auto_name/directional/north, +/obj/structure/table/glass, +/obj/machinery/microwave/engineering/cell_included, +/obj/structure/cable, +/obj/machinery/light/warm/directional/west, +/turf/open/floor/iron, +/area/station/engineering/break_room) "qup" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -59248,6 +59243,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/station/security/interrogation) +"udE" = ( +/obj/effect/spawner/structure/window/reinforced, +/obj/machinery/door/poddoor/shutters/preopen{ + id = "pharmacy_shutters_2"; + name = "Pharmacy Shutters"; + dir = 4 + }, +/turf/open/floor/plating, +/area/station/medical/pharmacy) "udO" = ( /obj/structure/chair/stool/bar/directional/south, /obj/effect/turf_decal/trimline/red/filled/line{ @@ -60444,16 +60448,6 @@ /obj/machinery/light/directional/west, /turf/open/floor/iron, /area/station/cargo/drone_bay) -"uwS" = ( -/obj/machinery/smartfridge/chemistry/preloaded, -/obj/machinery/door/poddoor/shutters/preopen{ - id = "pharmacy_shutters_2"; - name = "Pharmacy Shutters"; - dir = 4 - }, -/obj/machinery/door/firedoor, -/turf/open/floor/plating, -/area/station/medical/pharmacy) "uxj" = ( /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 1 @@ -67189,6 +67183,14 @@ "wQm" = ( /turf/open/floor/iron, /area/station/engineering/atmos) +"wQq" = ( +/obj/structure/table/reinforced, +/obj/machinery/microwave/engineering/cell_included, +/obj/effect/turf_decal/tile/neutral/opposingcorners{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/station/medical/break_room) "wQr" = ( /obj/effect/turf_decal/weather/snow, /obj/machinery/vending/wardrobe/chef_wardrobe, @@ -102074,8 +102076,8 @@ akI cJM ulV bbj -nYJ -otF +qul +nZy ryJ gzZ cFP @@ -165294,7 +165296,7 @@ dVj wrT xqO suG -lxJ +iHQ ryy aKM jaQ @@ -166315,9 +166317,9 @@ cYi uQT sBr jyH -uwS -dII -cze +plq +pmZ +udE jyH jyH jyH @@ -170198,7 +170200,7 @@ gVO vXT cyL nen -avM +wQq adM oGJ qaO diff --git a/code/__DEFINES/wires.dm b/code/__DEFINES/wires.dm index 6f618ac8240..2b4c528abc2 100644 --- a/code/__DEFINES/wires.dm +++ b/code/__DEFINES/wires.dm @@ -37,6 +37,7 @@ #define WIRE_LIMIT "Limiter" #define WIRE_LOADCHECK "Load Check" #define WIRE_LOCKDOWN "Lockdown" +#define WIRE_MODE_SELECT "Mode Select" #define WIRE_MOTOR1 "Motor 1" #define WIRE_MOTOR2 "Motor 2" #define WIRE_OPEN "Open" diff --git a/code/datums/wires/microwave.dm b/code/datums/wires/microwave.dm index abce90e8de5..e3efabac08c 100644 --- a/code/datums/wires/microwave.dm +++ b/code/datums/wires/microwave.dm @@ -4,7 +4,8 @@ /datum/wires/microwave/New(atom/holder) wires = list( - WIRE_ACTIVATE + WIRE_ACTIVATE, + WIRE_MODE_SELECT ) ..() @@ -12,18 +13,23 @@ if(!..()) return FALSE . = FALSE - var/obj/machinery/microwave/M = holder - if(M.panel_open) + var/obj/machinery/microwave/mw = holder + if(mw.panel_open) . = TRUE /datum/wires/microwave/on_pulse(wire) - var/obj/machinery/microwave/M = holder + var/obj/machinery/microwave/mw = holder switch(wire) if(WIRE_ACTIVATE) - M.cook() + mw.cook() + if(WIRE_MODE_SELECT) + if(mw.vampire_charging_capable) + mw.vampire_charging_enabled = !mw.vampire_charging_enabled /datum/wires/microwave/on_cut(wire, mend, source) - var/obj/machinery/microwave/M = holder + var/obj/machinery/microwave/mw = holder switch(wire) if(WIRE_ACTIVATE) - M.wire_disabled = !mend + mw.wire_disabled = !mend + if(WIRE_MODE_SELECT) + mw.wire_mode_swap = !mend diff --git a/code/game/objects/effects/spawners/random/decoration.dm b/code/game/objects/effects/spawners/random/decoration.dm index 1beafc37df5..6116d228733 100644 --- a/code/game/objects/effects/spawners/random/decoration.dm +++ b/code/game/objects/effects/spawners/random/decoration.dm @@ -93,6 +93,14 @@ loot_type_path = /obj/structure/showcase loot = list() +/obj/effect/spawner/random/decoration/microwave + name = "microwave showcase spawner" + icon_state = "showcase" + loot = list( + /obj/structure/showcase/machinery/microwave, + /obj/structure/showcase/machinery/microwave_engineering, + ) + /obj/effect/spawner/random/decoration/glowstick name = "random colored glowstick" icon_state = "glowstick" diff --git a/code/game/objects/effects/spawners/random/techstorage.dm b/code/game/objects/effects/spawners/random/techstorage.dm index c1f93040396..4bfdeec27d1 100644 --- a/code/game/objects/effects/spawners/random/techstorage.dm +++ b/code/game/objects/effects/spawners/random/techstorage.dm @@ -34,6 +34,7 @@ /obj/item/circuitboard/machine/ore_redemption, /obj/item/circuitboard/computer/order_console/mining, /obj/item/circuitboard/machine/microwave, + /obj/item/circuitboard/machine/microwave/engineering, /obj/item/circuitboard/machine/deep_fryer, /obj/item/circuitboard/machine/griddle, /obj/item/circuitboard/machine/reagentgrinder, diff --git a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm index 917589d8dfb..f41cb62c9de 100644 --- a/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm +++ b/code/game/objects/items/circuitboards/machines/machine_circuitboards.dm @@ -1251,10 +1251,22 @@ req_components = list( /datum/stock_part/micro_laser = 1, /datum/stock_part/matter_bin = 1, + /datum/stock_part/capacitor = 1, /obj/item/stack/cable_coil = 2, /obj/item/stack/sheet/glass = 2) needs_anchored = FALSE +/obj/item/circuitboard/machine/microwave/engineering + name = "Wireless Microwave Oven" + greyscale_colors = CIRCUIT_COLOR_SERVICE + build_path = /obj/machinery/microwave/engineering + req_components = list( + /datum/stock_part/micro_laser = 1, + /datum/stock_part/matter_bin = 1, + /datum/stock_part/capacitor/tier2 = 1, + /obj/item/stack/cable_coil = 4, + /obj/item/stack/sheet/glass = 2) + /obj/item/circuitboard/machine/processor name = "Food Processor" greyscale_colors = CIRCUIT_COLOR_SERVICE diff --git a/code/game/objects/items/rcd/RCD.dm b/code/game/objects/items/rcd/RCD.dm index 27c04aa7479..33994c91774 100644 --- a/code/game/objects/items/rcd/RCD.dm +++ b/code/game/objects/items/rcd/RCD.dm @@ -76,6 +76,7 @@ list(FURNISH_TYPE = /obj/structure/table/glass, ICON = "glass_table", TITLE = "Glass Table"), list(FURNISH_TYPE = /obj/structure/rack, ICON = "rack", TITLE = "Rack"), list(FURNISH_TYPE = /obj/structure/bed, ICON = "bed", TITLE = "Bed"), + list(FURNISH_TYPE = /obj/machinery/microwave/engineering, ICON = "engi_mw_complete", TITLE = "Wireless Microwave"), ), ), diff --git a/code/game/objects/structures/showcase.dm b/code/game/objects/structures/showcase.dm index 91ccdaef80a..2349d9b0f49 100644 --- a/code/game/objects/structures/showcase.dm +++ b/code/game/objects/structures/showcase.dm @@ -84,7 +84,13 @@ name = "\improper Nanotrasen-brand microwave" desc = "The famous Nanotrasen-brand microwave, the multi-purpose cooking appliance every station needs! This one appears to be drawn onto a cardboard box." icon = 'icons/obj/machines/microwave.dmi' - icon_state = "map_icon" + icon_state = "mw_complete" + +/obj/structure/showcase/machinery/microwave_engineering + name = "\improper Nanotrasen Wave(tm) microwave" + desc = "Just when everyone thought Nanotrasen couldn't improve on their famous microwave, this 2563 model features Wave™! A Nanotrasen exclusive, Wave™ allows your PDA to be charged wirelessly through microwave frequencies. Because nothing says 'future' like charging your PDA while overcooking your leftovers. Nanotrasen Wave™ - Multitasking, redefined." + icon = 'icons/obj/machines/microwave.dmi' + icon_state = "engi_mw_complete" /obj/structure/showcase/machinery/cloning_pod name = "cloning pod exhibit" diff --git a/code/game/turfs/open/floor.dm b/code/game/turfs/open/floor.dm index a0d1a191bc6..8c80b35bb3d 100644 --- a/code/game/turfs/open/floor.dm +++ b/code/game/turfs/open/floor.dm @@ -264,6 +264,9 @@ else if(the_rcd.furnish_type == /obj/structure/bed) cost = 8 delay = 1.5 SECONDS + else if(the_rcd.furnish_type == /obj/machinery/microwave/engineering) + cost = 48 + delay = 4 SECONDS if(cost == 0) return FALSE return list("mode" = RCD_FURNISHING, "delay" = cost, "cost" = delay) @@ -380,6 +383,11 @@ return FALSE var/atom/new_furnish = new the_rcd.furnish_type(src) new_furnish.setDir(user.dir) + if(istype(new_furnish, /obj/machinery/microwave/engineering)) + var/obj/machinery/microwave/engineering/new_mw = new_furnish + var/obj/item/stock_parts/cell/new_cell = new() + new_mw.cell = new_cell + new_mw.update_appearance() return TRUE return FALSE diff --git a/code/modules/asset_cache/assets/rcd.dm b/code/modules/asset_cache/assets/rcd.dm index e4c54929dae..c57d7881d13 100644 --- a/code/modules/asset_cache/assets/rcd.dm +++ b/code/modules/asset_cache/assets/rcd.dm @@ -14,6 +14,7 @@ 'icons/obj/smooth_structures/catwalk.dmi' = list("catwalk-0"), 'icons/hud/radial.dmi' = list("cnorth", "csouth", "ceast", "cwest", "chair", "secure_windoor", "stool", "wallfloor", "windowsize", "windowtype", "windoor"), 'icons/obj/structures.dmi' = list("glass_table", "rack", "rwindow0", "reflector_base", "table", "window0", "girder"), + 'icons/obj/machines/microwave.dmi' = list("engi_mw_complete"), ) var/icon/icon diff --git a/code/modules/food_and_drinks/machinery/microwave.dm b/code/modules/food_and_drinks/machinery/microwave.dm index 36d98c907a5..d52e2213a5b 100644 --- a/code/modules/food_and_drinks/machinery/microwave.dm +++ b/code/modules/food_and_drinks/machinery/microwave.dm @@ -14,11 +14,15 @@ /// The max amount of dirtiness a microwave can be #define MAX_MICROWAVE_DIRTINESS 100 -/obj/machinery/microwave//SKYRAT EDIT - ICON OVERRIDEN BY AESTHETICS - SEE MODULE +/// For the wireless version, and display fluff +#define TIER_1_CELL_CHARGE_RATE 250 + +/obj/machinery/microwave name = "microwave oven" desc = "Cooks and boils stuff." icon = 'icons/obj/machines/microwave.dmi' - icon_state = "map_icon" + base_icon_state = "" + icon_state = "mw_complete" appearance_flags = KEEP_TOGETHER | LONG_GLIDE | PIXEL_SCALE layer = BELOW_OBJ_LAYER density = TRUE @@ -27,30 +31,63 @@ light_color = LIGHT_COLOR_DIM_YELLOW light_power = 3 anchored_tabletop_offset = 6 - var/wire_disabled = FALSE // is its internal wire cut? + /// Is its function wire cut? + var/wire_disabled = FALSE + /// Wire cut to run mode backwards + var/wire_mode_swap = FALSE var/operating = FALSE /// How dirty is it? var/dirty = 0 var/dirty_anim_playing = FALSE /// How broken is it? NOT_BROKEN, KINDA_BROKEN, REALLY_BROKEN var/broken = NOT_BROKEN + /// Microwave door position var/open = FALSE + /// Microwave max capacity var/max_n_of_items = 10 + /// Microwave efficiency (power) based on the stock components var/efficiency = 0 + /// If we use a cell instead of powernet + var/cell_powered = FALSE + /// The cell we charge with + var/obj/item/stock_parts/cell/cell + /// The cell we're charging + var/obj/item/stock_parts/cell/vampire_cell + /// Capable of vampire charging PDAs + var/vampire_charging_capable = FALSE + /// Charge contents of microwave instead of cook + var/vampire_charging_enabled = FALSE var/datum/looping_sound/microwave/soundloop - var/list/ingredients = list() // may only contain /atom/movables - + /// May only contain /atom/movables + var/list/ingredients = list() + /// When this is the nth ingredient, whats its pixel_x? + var/list/ingredient_shifts_x = list( + -2, + 1, + -5, + 2, + -6, + 0, + -4, + ) + /// When this is the nth ingredient, whats its pixel_y? + var/list/ingredient_shifts_y = list( + -4, + -2, + -3, + ) var/static/radial_examine = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_examine") var/static/radial_eject = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_eject") - var/static/radial_use = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_use") + var/static/radial_cook = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_cook") + var/static/radial_charge = image(icon = 'icons/hud/radial.dmi', icon_state = "radial_charge") // we show the button even if the proc will not work - var/static/list/radial_options = list("eject" = radial_eject, "use" = radial_use) - var/static/list/ai_radial_options = list("eject" = radial_eject, "use" = radial_use, "examine" = radial_examine) + var/static/list/radial_options = list("eject" = radial_eject, "cook" = radial_cook, "charge" = radial_charge) + var/static/list/ai_radial_options = list("eject" = radial_eject, "cook" = radial_cook, "charge" = radial_charge, "examine" = radial_examine) /obj/machinery/microwave/Initialize(mapload) . = ..() - + register_context() set_wires(new /datum/wires/microwave(src)) create_reagents(100) soundloop = new(src, FALSE) @@ -66,7 +103,6 @@ itemized_ingredient.pixel_y = itemized_ingredient.base_pixel_y + rand(-5, 6) return ..() - /obj/machinery/microwave/on_deconstruction() eject() return ..() @@ -75,21 +111,70 @@ QDEL_LIST(ingredients) QDEL_NULL(wires) QDEL_NULL(soundloop) + if(!isnull(cell)) + QDEL_NULL(cell) return ..() +/obj/machinery/microwave/add_context(atom/source, list/context, obj/item/held_item, mob/user) + . = ..() + if(cell_powered) + if(!isnull(cell)) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Remove cell" + else if(held_item && istype(held_item, /obj/item/stock_parts/cell)) + context[SCREENTIP_CONTEXT_CTRL_LMB] = "Insert cell" + + if(!anchored && held_item?.tool_behaviour == TOOL_WRENCH) + context[SCREENTIP_CONTEXT_LMB] = "Install/Secure" + return CONTEXTUAL_SCREENTIP_SET + + if(broken > NOT_BROKEN) + if(broken == REALLY_BROKEN && held_item?.tool_behaviour == TOOL_WIRECUTTER) + context[SCREENTIP_CONTEXT_LMB] = "Repair" + return CONTEXTUAL_SCREENTIP_SET + + else if(broken == KINDA_BROKEN && held_item?.tool_behaviour == TOOL_WELDER) + context[SCREENTIP_CONTEXT_LMB] = "Repair" + return CONTEXTUAL_SCREENTIP_SET + + context[SCREENTIP_CONTEXT_LMB] = "Show menu" + + if(vampire_charging_capable) + context[SCREENTIP_CONTEXT_ALT_LMB] = "Change to [vampire_charging_enabled ? "cook" : "charge"]" + + if(length(ingredients) != 0) + context[SCREENTIP_CONTEXT_RMB] = "Start [vampire_charging_enabled ? "charging" : "cooking"]" + + return CONTEXTUAL_SCREENTIP_SET + /obj/machinery/microwave/RefreshParts() . = ..() efficiency = 0 + vampire_charging_capable = FALSE for(var/datum/stock_part/micro_laser/micro_laser in component_parts) efficiency += micro_laser.tier for(var/datum/stock_part/matter_bin/matter_bin in component_parts) max_n_of_items = 10 * matter_bin.tier break + for(var/datum/stock_part/capacitor/capacitor in component_parts) + if(capacitor.tier >= 2) + vampire_charging_capable = TRUE + visible_message(span_notice("The [EXAMINE_HINT("Charge Ready")] light on \the [src] flickers to life.")) + break /obj/machinery/microwave/examine(mob/user) . = ..() + if(vampire_charging_capable) + . += span_info("This model features Wave™: a Nanotrasen exclusive. Our latest and greatest, Wave™ allows your PDA to be charged wirelessly through microwave frequencies! You can Wave-charge your device by placing it inside and selecting the charge mode.") + . += span_info("Because nothing says 'future' like charging your PDA while overcooking your leftovers. Nanotrasen Wave™ - Multitasking, redefined.") + + if(cell_powered) + . += span_notice("This model is wireless, powered by portable cells. [isnull(cell) ? "The cell slot is empty." : "[EXAMINE_HINT("Ctrl-click")] to remove the power cell."]") + if(!operating) - . += span_notice("Right-click [src] to turn it on.") + if(!operating && vampire_charging_capable) + . += span_notice("[EXAMINE_HINT("Alt-click")] to change default mode.") + + . += span_notice("[EXAMINE_HINT("Right-click")] to start [vampire_charging_enabled ? "charging" : "cooking"] cycle.") if(!in_range(user, src) && !issilicon(user) && !isobserver(user)) . += span_warning("You're too far away to examine [src]'s contents and display!") @@ -106,46 +191,37 @@ var/list/items_counts = new for(var/i in ingredients) if(isstack(i)) - var/obj/item/stack/S = i - items_counts[S.name] += S.amount + var/obj/item/stack/item_stack = i + items_counts[item_stack.name] += item_stack.amount else - var/atom/movable/AM = i - items_counts[AM.name]++ - for(var/O in items_counts) - . += span_notice("- [items_counts[O]]x [O].") + var/atom/movable/single_item = i + items_counts[single_item.name]++ + for(var/item in items_counts) + . += span_notice("- [items_counts[item]]x [item].") else . += span_notice("\The [src] is empty.") if(!(machine_stat & (NOPOWER|BROKEN))) . += "[span_notice("The status display reads:")]\n"+\ + "[span_notice("- Mode: [vampire_charging_enabled ? "Charge" : "Cook"].")]\n"+\ "[span_notice("- Capacity: [max_n_of_items] items.")]\n"+\ - span_notice("- Cook time reduced by [(efficiency - 1) * 25]%.") + span_notice("- Power: [efficiency * TIER_1_CELL_CHARGE_RATE]W.") + + if(cell_powered) + . += span_notice("- Charge: [isnull(cell) ? "INSERT CELL" : "[round(cell.percent())]%"].") #define MICROWAVE_INGREDIENT_OVERLAY_SIZE 24 /obj/machinery/microwave/update_overlays() - // When this is the nth ingredient, whats its pixel_x? - var/static/list/ingredient_shifts = list( - // SKYRAT EDIT CHANGE START - All values offset by -3 from original - -3, - 0, - -6, - 1, - -7, - -1, - -5, - // SKYRAT EDIT CHANGE END - ) - . = ..() // All of these will use a full icon state instead - if (panel_open || dirty == MAX_MICROWAVE_DIRTINESS || broken || dirty_anim_playing) + if(panel_open || dirty == MAX_MICROWAVE_DIRTINESS || broken || dirty_anim_playing) return . var/ingredient_count = 0 - for (var/atom/movable/ingredient as anything in ingredients) + for(var/atom/movable/ingredient as anything in ingredients) var/image/ingredient_overlay = image(ingredient, src) var/list/icon_dimensions = get_icon_dimensions(ingredient.icon) @@ -154,11 +230,11 @@ MICROWAVE_INGREDIENT_OVERLAY_SIZE / icon_dimensions["height"], ) - ingredient_overlay.pixel_y = -4 + ingredient_overlay.pixel_x = ingredient_shifts_x[(ingredient_count % ingredient_shifts_x.len) + 1] + ingredient_overlay.pixel_y = ingredient_shifts_y[(ingredient_count % ingredient_shifts_y.len) + 1] ingredient_overlay.layer = FLOAT_LAYER ingredient_overlay.plane = FLOAT_PLANE ingredient_overlay.blend_mode = BLEND_INSET_OVERLAY - ingredient_overlay.pixel_x = ingredient_shifts[(ingredient_count % ingredient_shifts.len) + 1] ingredient_count += 1 @@ -167,46 +243,67 @@ var/border_icon_state var/door_icon_state - if (open) - door_icon_state = "door_open" - border_icon_state = "mwo" - else if (operating) - door_icon_state = "door_on" - border_icon_state = "mw1" + if(open) + door_icon_state = "[base_icon_state]door_open" + border_icon_state = "[base_icon_state]mwo" + else if(operating) + if(vampire_charging_enabled) + door_icon_state = "[base_icon_state]door_charge" + else + door_icon_state = "[base_icon_state]door_on" + border_icon_state = "[base_icon_state]mw1" else - door_icon_state = "door_off" - border_icon_state = "mw" + door_icon_state = "[base_icon_state]door_off" + border_icon_state = "[base_icon_state]mw" + . += mutable_appearance( icon, door_icon_state, - alpha = ingredients.len > 0 ? 128 : 255, ) . += border_icon_state - if (!open) - . += "door_handle" + if(!open) + . += "[base_icon_state]door_handle" + + if(!(machine_stat & NOPOWER) || cell_powered) + . += emissive_appearance(icon, "emissive_[border_icon_state]", src, alpha = src.alpha) + + if(cell_powered && !isnull(cell)) + switch(cell.percent()) + if(75 to 100) + . += mutable_appearance(icon, "[base_icon_state]cell_100") + . += emissive_appearance(icon, "[base_icon_state]cell_100", src, alpha = src.alpha) + if(50 to 75) + . += mutable_appearance(icon, "[base_icon_state]cell_75") + . += emissive_appearance(icon, "[base_icon_state]cell_75", src, alpha = src.alpha) + if(25 to 50) + . += mutable_appearance(icon, "[base_icon_state]cell_25") + . += emissive_appearance(icon, "[base_icon_state]cell_25", src, alpha = src.alpha) + else + . += mutable_appearance(icon, "[base_icon_state]cell_0") + . += emissive_appearance(icon, "[base_icon_state]cell_0", src, alpha = src.alpha) return . #undef MICROWAVE_INGREDIENT_OVERLAY_SIZE /obj/machinery/microwave/update_icon_state() - if (broken) - icon_state = "mwb" - else if (dirty_anim_playing) - icon_state = "mwbloody1" - else if (dirty == MAX_MICROWAVE_DIRTINESS) - icon_state = open ? "mwbloodyo" : "mwbloody" + if(broken) + icon_state = "[base_icon_state]mwb" + else if(dirty_anim_playing) + icon_state = "[base_icon_state]mwbloody1" + else if(dirty == MAX_MICROWAVE_DIRTINESS) + icon_state = open ? "[base_icon_state]mwbloodyo" : "[base_icon_state]mwbloody" else if(operating) - icon_state = "back_on" + icon_state = "[base_icon_state]back_on" else if(open) - icon_state = "back_open" + icon_state = "[base_icon_state]back_open" else if(panel_open) - icon_state = "mw-o" + icon_state = "[base_icon_state]mw-o" else - icon_state = "back_off" + icon_state = "[base_icon_state]back_off" return ..() @@ -234,23 +331,23 @@ update_appearance() return TOOL_ACT_TOOLTYPE_SUCCESS -/obj/machinery/microwave/attackby(obj/item/O, mob/living/user, params) +/obj/machinery/microwave/attackby(obj/item/item, mob/living/user, params) if(operating) return - if(panel_open && is_wire_tool(O)) + if(panel_open && is_wire_tool(item)) wires.interact(user) return TRUE if(broken > NOT_BROKEN) - if(broken == REALLY_BROKEN && O.tool_behaviour == TOOL_WIRECUTTER) // If it's broken and they're using a TOOL_WIRECUTTER + if(broken == REALLY_BROKEN && item.tool_behaviour == TOOL_WIRECUTTER) // If it's broken and they're using a TOOL_WIRECUTTER user.visible_message(span_notice("[user] starts to fix part of \the [src]."), span_notice("You start to fix part of \the [src]...")) - if(O.use_tool(src, user, 20)) + if(item.use_tool(src, user, 20)) user.visible_message(span_notice("[user] fixes part of \the [src]."), span_notice("You fix part of \the [src].")) broken = KINDA_BROKEN // Fix it a bit - else if(broken == KINDA_BROKEN && O.tool_behaviour == TOOL_WELDER) // If it's broken and they're doing the wrench + else if(broken == KINDA_BROKEN && item.tool_behaviour == TOOL_WELDER) // If it's broken and they're doing the wrench user.visible_message(span_notice("[user] starts to fix part of \the [src]."), span_notice("You start to fix part of \the [src]...")) - if(O.use_tool(src, user, 20)) + if(item.use_tool(src, user, 20)) user.visible_message(span_notice("[user] fixes \the [src]."), span_notice("You fix \the [src].")) broken = NOT_BROKEN update_appearance() @@ -260,8 +357,9 @@ return TRUE return - if(istype(O, /obj/item/reagent_containers/spray)) - var/obj/item/reagent_containers/spray/clean_spray = O + if(istype(item, /obj/item/reagent_containers/spray)) + var/obj/item/reagent_containers/spray/clean_spray = item + open(autoclose = 2 SECONDS) if(clean_spray.reagents.has_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this)) clean_spray.reagents.remove_reagent(/datum/reagent/space_cleaner, clean_spray.amount_per_transfer_from_this,1) playsound(loc, 'sound/effects/spray3.ogg', 50, TRUE, -6) @@ -272,56 +370,83 @@ to_chat(user, span_warning("You need more space cleaner!")) return TRUE - if(istype(O, /obj/item/soap) || istype(O, /obj/item/reagent_containers/cup/rag)) + if(istype(item, /obj/item/soap) || istype(item, /obj/item/reagent_containers/cup/rag)) var/cleanspeed = 50 - if(istype(O, /obj/item/soap)) - var/obj/item/soap/used_soap = O + if(istype(item, /obj/item/soap)) + var/obj/item/soap/used_soap = item cleanspeed = used_soap.cleanspeed user.visible_message(span_notice("[user] starts to clean \the [src]."), span_notice("You start to clean \the [src]...")) + open(autoclose = cleanspeed + 1 SECONDS) if(do_after(user, cleanspeed, target = src)) user.visible_message(span_notice("[user] cleans \the [src]."), span_notice("You clean \the [src].")) dirty = 0 update_appearance() return TRUE + if(istype(item, /obj/item/stock_parts/cell) && cell_powered) + var/swapped = FALSE + if(!isnull(cell)) + cell.forceMove(drop_location()) + if(!issilicon(user) && Adjacent(user)) + user.put_in_hands(cell) + cell = null + swapped = TRUE + if(!user.transferItemToLoc(item, src)) + update_appearance() + return TRUE + cell = item + balloon_alert(user, "[swapped ? "swapped" : "inserted"] cell") + update_appearance() + return TRUE + + if(!anchored) + balloon_alert(user, "not secured!") + return ..() + if(dirty >= MAX_MICROWAVE_DIRTINESS) // The microwave is all dirty so can't be used! balloon_alert(user, "it's too dirty!") return TRUE - if(istype(O, /obj/item/storage)) - var/obj/item/storage/T = O + if(vampire_charging_capable && istype(item, /obj/item/modular_computer/pda) && ingredients.len > 0) + balloon_alert(user, "max 1 pda!") + return FALSE + + if(istype(item, /obj/item/storage)) + var/obj/item/storage/tray = item var/loaded = 0 - if(!istype(O, /obj/item/storage/bag/tray)) + if(!istype(item, /obj/item/storage/bag/tray)) // Non-tray dumping requires a do_after - to_chat(user, span_notice("You start dumping out the contents of [O] into [src]...")) - if(!do_after(user, 2 SECONDS, target = T)) + to_chat(user, span_notice("You start dumping out the contents of [item] into [src]...")) + if(!do_after(user, 2 SECONDS, target = tray)) return - for(var/obj/S in T.contents) - if(!IS_EDIBLE(S)) + for(var/obj/tray_item in tray.contents) + if(!IS_EDIBLE(tray_item)) continue if(ingredients.len >= max_n_of_items) balloon_alert(user, "it's full!") return TRUE - if(T.atom_storage.attempt_remove(S, src)) + if(tray.atom_storage.attempt_remove(tray_item, src)) loaded++ - ingredients += S + ingredients += tray_item if(loaded) + open(autoclose = 0.6 SECONDS) to_chat(user, span_notice("You insert [loaded] items into \the [src].")) update_appearance() return - if(O.w_class <= WEIGHT_CLASS_NORMAL && !istype(O, /obj/item/storage) && !user.combat_mode) + if(item.w_class <= WEIGHT_CLASS_NORMAL && !istype(item, /obj/item/storage) && !user.combat_mode) if(ingredients.len >= max_n_of_items) balloon_alert(user, "it's full!") return TRUE - if(!user.transferItemToLoc(O, src)) + if(!user.transferItemToLoc(item, src)) balloon_alert(user, "it's stuck to your hand!") return FALSE - ingredients += O - user.visible_message(span_notice("[user] adds \a [O] to \the [src]."), span_notice("You add [O] to \the [src].")) + ingredients += item + open(autoclose = 0.6 SECONDS) + user.visible_message(span_notice("[user] adds \a [item] to \the [src]."), span_notice("You add [item] to \the [src].")) update_appearance() return @@ -332,13 +457,34 @@ if(!length(ingredients)) balloon_alert(user, "it's empty!") return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - cook(user) + + start_cycle(user) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN +/obj/machinery/microwave/AltClick(mob/user, list/modifiers) + if(user.can_perform_action(src, ALLOW_SILICON_REACH)) + if(!vampire_charging_capable) + return + + vampire_charging_enabled = !vampire_charging_enabled + balloon_alert(user, "set to [vampire_charging_enabled ? "charge" : "cook"]") + +/obj/machinery/microwave/CtrlClick(mob/user) + . = ..() + if(cell_powered && !isnull(cell) && anchored) + user.put_in_hands(cell) + balloon_alert(user, "removed cell") + cell = null + update_appearance() + /obj/machinery/microwave/ui_interact(mob/user) . = ..() - if(operating || panel_open || !anchored || !user.can_perform_action(src, ALLOW_SILICON_REACH)) + if(!anchored) + balloon_alert(user, "not secured!") + return + if(operating || panel_open || !user.can_perform_action(src, ALLOW_SILICON_REACH)) return if(isAI(user) && (machine_stat & NOPOWER)) return @@ -353,17 +499,21 @@ var/choice = show_radial_menu(user, src, isAI(user) ? ai_radial_options : radial_options, require_near = !issilicon(user)) // post choice verification - if(operating || panel_open || !anchored || !user.can_perform_action(src, ALLOW_SILICON_REACH)) + if(operating || panel_open || (!vampire_charging_capable && !anchored) || !user.can_perform_action(src, ALLOW_SILICON_REACH)) return if(isAI(user) && (machine_stat & NOPOWER)) return - usr.set_machine(src) + user.set_machine(src) switch(choice) if("eject") eject() - if("use") - cook(user) + if("cook") + vampire_charging_enabled = FALSE + start_cycle(user) + if("charge") + vampire_charging_enabled = TRUE + start_cycle(user) if("examine") examine(user) @@ -371,8 +521,20 @@ var/atom/drop_loc = drop_location() for(var/atom/movable/movable_ingredient as anything in ingredients) movable_ingredient.forceMove(drop_loc) - open() - playsound(loc, 'sound/machines/click.ogg', 15, TRUE, -3) + open(autoclose = 1.4 SECONDS) + +/obj/machinery/microwave/proc/start_cycle(mob/user) + if(wire_mode_swap) + spark() + if(vampire_charging_enabled) + cook(user) + else + charge(user) + + else if(vampire_charging_enabled) + charge(user) + else + cook(user) /** * Begins the process of cooking the included ingredients. @@ -382,6 +544,7 @@ /obj/machinery/microwave/proc/cook(mob/cooker) if(machine_stat & (NOPOWER|BROKEN)) return + if(operating || broken > 0 || panel_open || !anchored || dirty >= MAX_MICROWAVE_DIRTINESS) return @@ -390,9 +553,15 @@ playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) return + if(cell_powered && cell?.charge < TIER_1_CELL_CHARGE_RATE * efficiency) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + balloon_alert(cooker, "replace cell!") + return + if(cooker && HAS_TRAIT(cooker, TRAIT_CURSED) && prob(7)) muck() return + if(prob(max((5 / efficiency) - 5, dirty * 5))) //a clean unupgraded microwave has no risk of failure muck() return @@ -413,16 +582,18 @@ /obj/machinery/microwave/proc/wzhzhzh() visible_message(span_notice("\The [src] turns on."), null, span_hear("You hear a microwave humming.")) operating = TRUE + if(cell_powered && !isnull(cell)) + cell.use(TIER_1_CELL_CHARGE_RATE * efficiency) - set_light(1.5) + set_light(l_range = 1.5, l_power = 1.2, l_on = TRUE) soundloop.start() update_appearance() /obj/machinery/microwave/proc/spark() visible_message(span_warning("Sparks fly around [src]!")) - var/datum/effect_system/spark_spread/s = new - s.set_up(2, 1, src) - s.start() + var/datum/effect_system/spark_spread/sparks = new + sparks.set_up(2, 1, src) + sparks.start() /** * The start of the cook loop @@ -431,7 +602,7 @@ */ /obj/machinery/microwave/proc/start(mob/cooker) wzhzhzh() - loop(MICROWAVE_NORMAL, 10, cooker = cooker) + cook_loop(type = MICROWAVE_NORMAL, cycles = 10, cooker = cooker) /** * The start of the cook loop, but can fail (result in a splat / dirty microwave) @@ -440,29 +611,29 @@ */ /obj/machinery/microwave/proc/start_can_fail(mob/cooker) wzhzhzh() - loop(MICROWAVE_PRE, 4, cooker = cooker) + cook_loop(type = MICROWAVE_PRE, cycles = 4, cooker = cooker) /obj/machinery/microwave/proc/muck() wzhzhzh() playsound(loc, 'sound/effects/splat.ogg', 50, TRUE) dirty_anim_playing = TRUE update_appearance() - loop(MICROWAVE_MUCK, 4) + cook_loop(type = MICROWAVE_MUCK, cycles = 4) /** * The actual cook loop started via [proc/start] or [proc/start_can_fail] * - * * type - the type of cooking, determined via how this iteration of loop is called, and determines the result + * * type - the type of cooking, determined via how this iteration of cook_loop is called, and determines the result * * time - how many loops are left, base case for recursion * * wait - deciseconds between loops * * cooker - The mob that initiated the cook cycle, can be null if no apparent mob triggered it (such as via emp) */ -/obj/machinery/microwave/proc/loop(type, time, wait = max(12 - 2 * efficiency, 2), mob/cooker) // standard wait is 10 +/obj/machinery/microwave/proc/cook_loop(type, cycles, wait = max(12 - 2 * efficiency, 2), mob/cooker) // standard wait is 10 if((machine_stat & BROKEN) && type == MICROWAVE_PRE) pre_fail() return - if(time <= 0 || !length(ingredients)) + if(cycles <= 0 || !length(ingredients)) switch(type) if(MICROWAVE_NORMAL) loop_finish(cooker) @@ -471,18 +642,21 @@ if(MICROWAVE_PRE) pre_success(cooker) return - time-- + cycles-- use_power(active_power_usage) - addtimer(CALLBACK(src, PROC_REF(loop), type, time, wait, cooker), wait) + addtimer(CALLBACK(src, PROC_REF(cook_loop), type, cycles, wait, cooker), wait) /obj/machinery/microwave/power_change() . = ..() + if(cell_powered) + return + if((machine_stat & NOPOWER) && operating) pre_fail() eject() /** - * Called when the loop is done successfully, no dirty mess or whatever + * Called when the cook_loop is done successfully, no dirty mess or whatever * * * cooker - The mob that initiated the cook cycle, can be null if no apparent mob triggered it (such as via emp) */ @@ -492,6 +666,11 @@ var/cursed_chef = cooker && HAS_TRAIT(cooker, TRAIT_CURSED) var/metal_amount = 0 for(var/obj/item/cooked_item in ingredients) + if(istype(cooked_item, /obj/item/modular_computer/pda) && prob(75)) + spark() + broken = REALLY_BROKEN + explosion(src, heavy_impact_range = 1, light_impact_range = 2, flame_range = 1) + var/sigreturn = cooked_item.microwave_act(src, cooker, randomize_pixel_offset = ingredients.len) if(sigreturn & COMPONENT_MICROWAVE_SUCCESS) if(isstack(cooked_item)) @@ -502,7 +681,7 @@ metal_amount += (cooked_item.custom_materials?[GET_MATERIAL_REF(/datum/material/iron)] || 0) - if(cursed_chef && prob(5)) + if(cursed_chef && (metal_amount || prob(5))) // If we're unlucky and have metal, we're guaranteed to explode spark() broken = REALLY_BROKEN explosion(src, light_impact_range = 2, flame_range = 1) @@ -510,10 +689,8 @@ if(metal_amount) spark() broken = REALLY_BROKEN - if(cursed_chef || prob(max(metal_amount / 2, 33))) // If we're unlucky and have metal, we're guaranteed to explode + if(prob(max(metal_amount / 2, 33))) explosion(src, heavy_impact_range = 1, light_impact_range = 2) - else - dump_inventory_contents() after_finish_loop() @@ -524,7 +701,7 @@ after_finish_loop() /obj/machinery/microwave/proc/pre_success(mob/cooker) - loop(MICROWAVE_NORMAL, 10, cooker = cooker) + cook_loop(type = MICROWAVE_NORMAL, cycles = 10, cooker = cooker) /obj/machinery/microwave/proc/muck_finish() visible_message(span_warning("\The [src] gets covered in muck!")) @@ -536,19 +713,121 @@ after_finish_loop() /obj/machinery/microwave/proc/after_finish_loop() - set_light(0) + set_light(l_on = FALSE) soundloop.stop() - open() + eject() + open(autoclose = 2 SECONDS) -/obj/machinery/microwave/proc/open() +/obj/machinery/microwave/proc/open(autoclose = 2 SECONDS) open = TRUE + playsound(loc, 'sound/machines/click.ogg', 15, TRUE, -3) update_appearance() - addtimer(CALLBACK(src, PROC_REF(close)), 0.8 SECONDS) + addtimer(CALLBACK(src, PROC_REF(close)), autoclose) /obj/machinery/microwave/proc/close() open = FALSE update_appearance() +/** + * The start of the charge loop + * + * * cooker - The mob that initiated the cook cycle, can be null if no apparent mob triggered it (such as via emp) + */ +/obj/machinery/microwave/proc/vampire(mob/cooker) + wzhzhzh() + var/obj/item/modular_computer/pda/vampire_pda = LAZYACCESS(ingredients, 1) + if(isnull(vampire_pda)) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + after_finish_loop() + return + + vampire_cell = vampire_pda.internal_cell + if(isnull(vampire_pda)) + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + after_finish_loop() + return + + var/vampire_charge_amount = vampire_cell.maxcharge - vampire_cell.charge + charge_loop(vampire_charge_amount, cooker = cooker) + +/obj/machinery/microwave/proc/charge(mob/cooker) + if(!vampire_charging_capable) + balloon_alert(cooker, "needs upgrade!") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + return + + if(operating || broken > 0 || panel_open || dirty >= MAX_MICROWAVE_DIRTINESS) + return + + if(wire_disabled) + audible_message("[src] buzzes.") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + return + + // We should only be charging PDAs + for(var/atom/movable/potential_item as anything in ingredients) + if(!istype(potential_item, /obj/item/modular_computer/pda)) + balloon_alert(cooker, "pda only!") + playsound(src, 'sound/machines/buzz-sigh.ogg', 50, FALSE) + eject() + return + + vampire(cooker) + +/** + * The actual cook loop started via [proc/start] or [proc/start_can_fail] + * + * * type - the type of charging, determined via how this iteration of cook_loop is called, and determines the result + * * time - how many loops are left, base case for recursion + * * wait - deciseconds between loops + * * cooker - The mob that initiated the cook cycle, can be null if no apparent mob triggered it (such as via emp) + */ +/obj/machinery/microwave/proc/charge_loop(vampire_charge_amount, wait = max(12 - 2 * efficiency, 2), mob/cooker) // standard wait is 10 + if(machine_stat & BROKEN) + pre_fail() + return + + if(!vampire_charge_amount || !length(ingredients) || (!isnull(cell) && !cell.charge) || vampire_charge_amount < 25) + vampire_cell = null + charge_loop_finish(cooker) + return + + var/charge_rate = vampire_cell.chargerate * (1 + ((efficiency - 1) * 0.25)) + if(charge_rate > vampire_charge_amount) + charge_rate = vampire_charge_amount + + if(cell_powered && !cell.use(charge_rate)) + charge_loop_finish(cooker) + + vampire_cell.give(charge_rate * (0.85 + (efficiency * 0.5))) // we lose a tiny bit of power in the transfer as heat + use_power(charge_rate) + + vampire_charge_amount = vampire_cell.maxcharge - vampire_cell.charge + + addtimer(CALLBACK(src, PROC_REF(charge_loop), vampire_charge_amount, wait, cooker), wait) + +/obj/machinery/microwave/power_change() + . = ..() + if((machine_stat & NOPOWER) && operating) + pre_fail() + eject() + +/** + * Called when the charge_loop is done successfully, no dirty mess or whatever + * + * * cooker - The mob that initiated the cook cycle, can be null if no apparent mob triggered it (such as via emp) + */ +/obj/machinery/microwave/proc/charge_loop_finish(mob/cooker) + operating = FALSE + var/cursed_chef = cooker && HAS_TRAIT(cooker, TRAIT_CURSED) + if(cursed_chef && prob(5)) + spark() + broken = REALLY_BROKEN + explosion(src, light_impact_range = 2, flame_range = 1) + + // playsound(src, 'sound/machines/chime.ogg', 50, FALSE) + after_finish_loop() + /// Type of microwave that automatically turns it self on erratically. Probably don't use this outside of the holodeck program "Microwave Paradise". /// You could also live your life with a microwave that will continously run in the background of everything while also not having any power draw. I think the former makes more sense. /obj/machinery/microwave/hell @@ -564,13 +843,48 @@ //The microwave should turn off asynchronously from any other microwaves that initialize at the same time. Keep in mind this will not turn off, since there is nothing to call the proc that ends this microwave's looping addtimer(CALLBACK(src, PROC_REF(wzhzhzh)), rand(0.5 SECONDS, 3 SECONDS)) +/obj/machinery/microwave/engineering + name = "wireless microwave oven" + desc = "For the hard-working tradesperson who's in the middle of nowhere and just wants to warm up their pastry-based savoury item from an overpriced vending machine." + base_icon_state = "engi_" + icon_state = "engi_mw_complete" + circuit = /obj/item/circuitboard/machine/microwave/engineering + light_color = LIGHT_COLOR_BABY_BLUE + // We don't use area power, we always use the cell + use_power = NO_POWER_USE + cell_powered = TRUE + vampire_charging_capable = TRUE + ingredient_shifts_x = list( + 0, + 5, + -5, + 3, + -3, + ) + ingredient_shifts_y = list( + 0, + 2, + -2, + ) + +/obj/machinery/microwave/engineering/Initialize(mapload) + . = ..() + if(mapload) + cell = new /obj/item/stock_parts/cell/upgraded/plus + update_appearance() + +/obj/machinery/microwave/engineering/cell_included/Initialize(mapload) + . = ..() + cell = new /obj/item/stock_parts/cell/upgraded/plus + update_appearance() + #undef MICROWAVE_NORMAL #undef MICROWAVE_MUCK #undef MICROWAVE_PRE - #undef NOT_BROKEN #undef KINDA_BROKEN #undef REALLY_BROKEN #undef MAX_MICROWAVE_DIRTINESS +#undef TIER_1_CELL_CHARGE_RATE diff --git a/code/modules/research/designs/machine_designs.dm b/code/modules/research/designs/machine_designs.dm index 0a2c96dddd5..3b0bf62c267 100644 --- a/code/modules/research/designs/machine_designs.dm +++ b/code/modules/research/designs/machine_designs.dm @@ -532,6 +532,16 @@ ) departmental_flags = DEPARTMENT_BITFLAG_SERVICE +/datum/design/board/microwave_engineering + name = "Wireless Microwave Board" + desc = "The circuit board for a cell-powered microwave." + id = "microwave_engineering" + build_path = /obj/item/circuitboard/machine/microwave/engineering + category = list( + RND_CATEGORY_MACHINE + RND_SUBCATEGORY_MACHINE_KITCHEN + ) + departmental_flags = DEPARTMENT_BITFLAG_SERVICE | DEPARTMENT_BITFLAG_ENGINEERING + /datum/design/board/gibber name = "Gibber Board" desc = "The circuit board for a gibber." diff --git a/code/modules/research/techweb/all_nodes.dm b/code/modules/research/techweb/all_nodes.dm index 7852bdb367e..441e6f0038b 100644 --- a/code/modules/research/techweb/all_nodes.dm +++ b/code/modules/research/techweb/all_nodes.dm @@ -476,6 +476,7 @@ "gibber", "griddle", "microwave", + "microwave_engineering", "monkey_recycler", "oven", "processor", diff --git a/icons/hud/radial.dmi b/icons/hud/radial.dmi index 447003a3584..42d5c451018 100644 Binary files a/icons/hud/radial.dmi and b/icons/hud/radial.dmi differ diff --git a/icons/obj/machines/microwave.dmi b/icons/obj/machines/microwave.dmi index 427a5d9daae..7a72ba5d3dc 100644 Binary files a/icons/obj/machines/microwave.dmi and b/icons/obj/machines/microwave.dmi differ diff --git a/modular_skyrat/modules/aesthetics/kitchen/microwave.dmi b/modular_skyrat/modules/aesthetics/kitchen/microwave.dmi index d5560e1bc07..e1c2860da6e 100644 Binary files a/modular_skyrat/modules/aesthetics/kitchen/microwave.dmi and b/modular_skyrat/modules/aesthetics/kitchen/microwave.dmi differ diff --git a/strings/tips.txt b/strings/tips.txt index 12248bb4124..75d0e4d1851 100644 --- a/strings/tips.txt +++ b/strings/tips.txt @@ -266,5 +266,6 @@ You can screwdriver any non-chemical grenade to shorten fuses from 5 seconds, to You can spray a fire extinguisher, throw items or fire a gun while floating through space to change your direction. Simply fire opposite to where you want to go. You can swap floor tiles by holding a crowbar in one hand and a stack of tiles in the other. You can use a machine in the vault to deposit cash or rob Cargo's department funds. +You can use an upgraded microwave to charge your PDA! You'll quickly lose your interest in the game if you play to win and kill. If you find yourself doing this, take a step back and talk to people - it's a much better experience! -Some areas of the station use simple nautical directions to indicate their respective locations, like Fore (Front of the ship), Aft (Back), Port (Left side), Starboard (Right), Quarter and Bow (Either sides of Aft and Fore, respectively). You can review these terms on the Notepad App of your PDA. \ No newline at end of file +Some areas of the station use simple nautical directions to indicate their respective locations, like Fore (Front of the ship), Aft (Back), Port (Left side), Starboard (Right), Quarter and Bow (Either sides of Aft and Fore, respectively). You can review these terms on the Notepad App of your PDA.