From fa83a686c401aac1bf21b3e2c364579ab0ddc8a0 Mon Sep 17 00:00:00 2001 From: tralezab <40974010+tralezab@users.noreply.github.com> Date: Tue, 4 May 2021 19:56:39 -0700 Subject: [PATCH] Add #cargobus and gauntlets (also modernizes ntchat) (#58609) * cargobus, start of gloves * basics of the HAUL gauntlets * fully mapped in * almost forgot the gauntlets * ntnet improvements * cargo gaunts, tablet cargobus * excludes body bags * dmis and map back * readd icons --- .../map_files/Deltastation/DeltaStation2.dmm | 457 +++++++++++------- .../map_files/IceBoxStation/IceBoxStation.dmm | 338 +++++++++++-- _maps/map_files/KiloStation/KiloStation.dmm | 310 +++++++----- _maps/map_files/MetaStation/MetaStation.dmm | 291 ++++++----- _maps/map_files/tramstation/tramstation.dmm | 351 +++++++++++--- code/__DEFINES/dcs/signals.dm | 5 + code/datums/components/strong_pull.dm | 43 ++ code/game/atoms_movable.dm | 3 + .../structures/crates_lockers/closets.dm | 7 +- code/modules/clothing/gloves/special.dm | 24 + .../jobs/job_types/cargo_technician.dm | 2 +- code/modules/jobs/job_types/quartermaster.dm | 2 +- .../NTNet/NTNRC/conversation.dm | 67 ++- .../computers/item/tablet_presets.dm | 10 + .../computers/machinery/console_presets.dm | 65 +++ .../computers/machinery/modular_computer.dm | 45 +- .../computers/machinery/modular_console.dm | 3 +- .../modular_computers/file_system/program.dm | 8 +- .../file_system/programs/ntnrc_client.dm | 64 ++- icons/mob/clothing/hands.dmi | Bin 16139 -> 16615 bytes icons/obj/clothing/gloves.dmi | Bin 26309 -> 26662 bytes tgstation.dme | 2 + tgui/packages/tgui/interfaces/NtosNetChat.js | 319 ++++++++---- 23 files changed, 1754 insertions(+), 662 deletions(-) create mode 100644 code/datums/components/strong_pull.dm create mode 100644 code/modules/clothing/gloves/special.dm diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 4bbcdb6ee31..449d4aa086d 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -1303,6 +1303,17 @@ /obj/effect/turf_decal/delivery, /turf/open/floor/iron, /area/hallway/secondary/entry) +"afy" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate, +/turf/open/floor/iron, +/area/engineering/break_room) "afz" = ( /obj/effect/spawner/randomcolavend, /obj/effect/turf_decal/delivery, @@ -3453,6 +3464,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/item/camera_film{ + pixel_x = 3; + pixel_y = 3 + }, +/obj/item/camera_film, /turf/open/floor/iron/dark, /area/service/bar/atrium) "aub" = ( @@ -4710,6 +4726,16 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/grimy, /area/service/library/abandoned) +"aFI" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/machinery/modular_computer/console/preset/cargochat/security{ + dir = 8 + }, +/turf/open/floor/iron, +/area/security/brig) "aFT" = ( /obj/structure/table/wood, /obj/item/flashlight/lamp, @@ -5926,6 +5952,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/airalarm/directional/east, /turf/open/floor/iron, /area/hallway/secondary/service) "aOG" = ( @@ -7757,13 +7784,12 @@ /turf/open/floor/iron, /area/hallway/primary/fore) "bdV" = ( -/obj/machinery/computer/cargo/request{ - dir = 8 - }, /obj/machinery/light{ dir = 1 }, -/obj/effect/turf_decal/bot, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, /turf/open/floor/iron, /area/hallway/primary/fore) "beo" = ( @@ -17136,11 +17162,10 @@ /area/security/brig) "ciH" = ( /obj/structure/disposalpipe/segment, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 4 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 }, -/obj/effect/turf_decal/tile/red{ +/obj/machinery/computer/cargo/request{ dir = 8 }, /turf/open/floor/iron, @@ -23091,28 +23116,31 @@ /turf/open/floor/iron/white, /area/medical/storage) "cWw" = ( -/obj/effect/landmark/start/paramedic, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 }, -/turf/open/floor/iron/white, +/obj/machinery/modular_computer/console/preset/cargochat/medical{ + dir = 1 + }, +/turf/open/floor/iron, /area/medical/storage) "cWx" = ( /obj/machinery/light_switch{ pixel_x = -8; pixel_y = -24 }, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, /obj/machinery/firealarm{ dir = 1; pixel_x = 32; pixel_y = -24 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, +/turf/open/floor/iron, /area/medical/storage) "cWy" = ( /obj/structure/table/glass, @@ -25445,6 +25473,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/effect/landmark/start/paramedic, /turf/open/floor/iron, /area/medical/medbay/central) "deJ" = ( @@ -25594,23 +25623,26 @@ }, /obj/item/storage/box/gloves, /obj/effect/turf_decal/delivery, -/turf/open/floor/iron, -/area/science/research) -"dfk" = ( -/obj/structure/table, -/obj/effect/decal/cleanable/dirt, /obj/item/crowbar, /obj/item/wrench, /obj/item/clothing/mask/gas, +/obj/effect/turf_decal/trimline/brown/filled/line, +/turf/open/floor/iron, +/area/science/research) +"dfk" = ( +/obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/science/research) "dfl" = ( -/obj/item/kirbyplants/random, /obj/item/storage/pod{ pixel_x = 32 }, -/obj/effect/turf_decal/delivery, +/obj/effect/turf_decal/bot, +/obj/machinery/modular_computer/console/preset/cargochat/science, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/science/research) "dfm" = ( @@ -39578,20 +39610,11 @@ /turf/open/floor/plating, /area/maintenance/port) "ext" = ( -/obj/structure/table/reinforced, -/obj/item/paper_bin, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ +/obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron, -/area/cargo/storage) +/turf/open/floor/iron/grimy, +/area/service/bar) "exw" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -41692,21 +41715,12 @@ /turf/open/floor/iron, /area/science/misc_lab/range) "eYh" = ( -/obj/structure/table/reinforced, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/machinery/modular_computer/console/preset/cargochat/service{ dir = 8 }, /turf/open/floor/iron, -/area/cargo/storage) +/area/hallway/secondary/service) "eYi" = ( /obj/item/kirbyplants/random, /obj/effect/turf_decal/tile/green{ @@ -42801,6 +42815,26 @@ }, /turf/open/floor/iron, /area/maintenance/starboard/fore) +"fna" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/machinery/door/window/southleft{ + req_access_txt = "31" + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/storage) "fnc" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -44409,9 +44443,14 @@ /turf/open/floor/iron/cafeteria, /area/service/theater) "fLm" = ( -/obj/structure/sign/poster/contraband/random, -/turf/closed/wall, -/area/service/bar) +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, +/turf/open/floor/iron, +/area/hallway/secondary/service) "fLT" = ( /obj/machinery/computer/station_alert{ dir = 4 @@ -44488,17 +44527,7 @@ }, /area/commons/dorms) "fNl" = ( -/obj/structure/chair/stool/bar, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, +/obj/effect/turf_decal/trimline/brown/filled/line, /turf/open/floor/iron, /area/engineering/break_room) "fNp" = ( @@ -46401,6 +46430,23 @@ }, /turf/open/floor/iron/dark, /area/engineering/atmos) +"gpL" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/item/kirbyplants/random, +/obj/structure/window{ + dir = 8 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/storage) "gqi" = ( /obj/structure/closet/wardrobe/grey, /obj/effect/turf_decal/tile/neutral{ @@ -47639,12 +47685,6 @@ /turf/open/floor/iron/dark, /area/engineering/transit_tube) "gJm" = ( -/obj/structure/table/reinforced, -/obj/machinery/microwave{ - desc = "Cooks and boils stuff, somehow."; - pixel_x = -3; - pixel_y = 5 - }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -47655,6 +47695,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/chips, /turf/open/floor/iron, /area/cargo/storage) "gJq" = ( @@ -48230,6 +48275,20 @@ }, /turf/closed/wall/r_wall, /area/engineering/atmos/upper) +"gSu" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/machinery/modular_computer/console/preset/cargochat/cargo, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/storage) "gSw" = ( /obj/structure/table/wood, /obj/item/storage/fancy/donut_box, @@ -49379,6 +49438,25 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"hjz" = ( +/obj/effect/turf_decal/tile/neutral{ + dir = 1 + }, +/obj/effect/turf_decal/tile/neutral, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 8 + }, +/obj/structure/table/reinforced, +/obj/item/storage/box/donkpockets, +/obj/structure/window{ + dir = 8 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/storage) "hjC" = ( /obj/effect/turf_decal/stripes/line{ dir = 4 @@ -52737,6 +52815,16 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron, /area/commons/fitness/recreation) +"icV" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/table/reinforced, +/turf/open/floor/iron, +/area/cargo/storage) "ide" = ( /obj/effect/decal/cleanable/dirt, /obj/item/storage/bag/bio, @@ -55381,6 +55469,24 @@ /obj/machinery/power/apc/auto_name/east, /turf/open/floor/iron, /area/cargo/miningoffice) +"iNR" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/structure/table/reinforced, +/obj/machinery/computer/cargo, +/obj/structure/window{ + dir = 4 + }, +/obj/structure/window{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/storage) "iNS" = ( /obj/structure/chair/office{ dir = 4 @@ -58585,20 +58691,14 @@ /turf/open/floor/plating, /area/service/theater/abandoned) "jIf" = ( -/obj/structure/chair/stool/bar, /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 }, +/obj/effect/turf_decal/delivery, +/obj/structure/closet/crate, /turf/open/floor/iron, /area/engineering/break_room) "jIn" = ( @@ -61878,6 +61978,9 @@ "kCc" = ( /obj/effect/landmark/start/bartender, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron/grimy, /area/service/bar) "kCh" = ( @@ -65247,8 +65350,6 @@ /turf/open/floor/iron, /area/engineering/break_room) "luw" = ( -/obj/structure/table/reinforced, -/obj/item/storage/box/donkpockets, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -65259,6 +65360,11 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/chair/office{ + dir = 1 + }, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/storage) "luH" = ( @@ -67244,7 +67350,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 9 }, -/obj/machinery/airalarm/directional/east, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, /turf/open/floor/iron, /area/hallway/secondary/service) "lWc" = ( @@ -67261,10 +67369,9 @@ /turf/open/floor/iron, /area/hallway/primary/central/fore) "lWJ" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/pen, -/obj/effect/turf_decal/bot, +/obj/structure/chair{ + dir = 8 + }, /turf/open/floor/iron, /area/engineering/break_room) "lWS" = ( @@ -71215,6 +71322,12 @@ /obj/structure/extinguisher_cabinet/directional/west, /turf/open/floor/iron, /area/commons/storage/tools) +"mXx" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/turf/open/floor/iron, +/area/engineering/break_room) "mXI" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/stripes/line{ @@ -73460,6 +73573,16 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/closet/crate/bin, +/obj/structure/window, +/obj/structure/window{ + dir = 8 + }, +/obj/item/trash/cheesie, +/obj/effect/decal/cleanable/dirt, +/obj/item/trash/can{ + pixel_x = -8 + }, /turf/open/floor/iron, /area/cargo/storage) "nAV" = ( @@ -75076,19 +75199,14 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/structure/table/reinforced, +/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, /turf/open/floor/iron, /area/engineering/break_room) "nUj" = ( @@ -82914,9 +83032,6 @@ /turf/open/floor/wood, /area/command/meeting_room/council) "pTN" = ( -/obj/machinery/computer/cargo{ - dir = 8 - }, /obj/structure/disposalpipe/segment{ dir = 4 }, @@ -82930,6 +83045,17 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/structure/table/reinforced, +/obj/machinery/microwave{ + desc = "Cooks and boils stuff, somehow."; + pixel_x = -3; + pixel_y = 5 + }, +/obj/structure/window, +/obj/structure/window{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/storage) "pUe" = ( @@ -84041,26 +84167,10 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "qhV" = ( -/obj/structure/table/wood, /obj/machinery/status_display/evac{ pixel_x = -32 }, -/obj/item/camera_film{ - pixel_x = 3; - pixel_y = 3 - }, -/obj/item/camera_film, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, -/turf/open/floor/iron/dark, +/turf/closed/wall, /area/service/bar/atrium) "qiu" = ( /obj/machinery/camera{ @@ -85315,6 +85425,15 @@ "qzE" = ( /turf/open/floor/engine, /area/engineering/supermatter) +"qzF" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/turf/open/floor/iron, +/area/engineering/break_room) "qzP" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -92202,11 +92321,11 @@ /turf/open/floor/iron, /area/commons/fitness/recreation) "sqP" = ( -/obj/structure/disposalpipe/segment{ - dir = 10 - }, /obj/structure/cable, /obj/effect/turf_decal/delivery, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron, /area/service/bar) "sqY" = ( @@ -95707,10 +95826,10 @@ /turf/open/floor/iron, /area/ai_monitored/security/armory) "tlU" = ( -/obj/structure/table/reinforced, -/obj/item/folder/yellow, -/obj/item/lightreplacer, -/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/structure/chair/stool, /turf/open/floor/iron, /area/engineering/break_room) "tme" = ( @@ -96898,6 +97017,7 @@ /obj/effect/turf_decal/tile/yellow{ dir = 8 }, +/obj/item/lightreplacer, /turf/open/floor/iron, /area/engineering/break_room) "tDT" = ( @@ -100112,6 +100232,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/storage) "urZ" = ( @@ -102619,7 +102740,10 @@ /turf/open/floor/iron, /area/maintenance/port/aft) "vcN" = ( -/obj/item/kirbyplants/random, +/obj/machinery/disposal/bin, +/obj/structure/disposalpipe/trunk{ + dir = 8 + }, /turf/open/floor/iron/dark, /area/service/bar) "vcU" = ( @@ -104454,6 +104578,9 @@ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, /turf/open/floor/iron, /area/hallway/secondary/service) "vDG" = ( @@ -108162,11 +108289,17 @@ /turf/open/floor/iron/grimy, /area/command/heads_quarters/captain/private) "wCr" = ( -/obj/structure/table/wood, -/obj/item/stack/package_wrap, -/obj/item/hand_labeler, -/turf/open/floor/iron/dark, -/area/service/bar) +/obj/machinery/light/small{ + dir = 4 + }, +/obj/effect/turf_decal/tile/neutral{ + dir = 4 + }, +/obj/structure/sign/poster/random{ + pixel_x = 32 + }, +/turf/open/floor/iron, +/area/hallway/secondary/service) "wCM" = ( /obj/structure/sign/nanotrasen, /turf/closed/wall, @@ -108564,6 +108697,9 @@ /area/service/hydroponics/garden/abandoned) "wIT" = ( /obj/structure/cable, +/obj/structure/disposalpipe/segment{ + dir = 4 + }, /turf/open/floor/iron/grimy, /area/service/bar) "wIU" = ( @@ -110917,22 +111053,8 @@ /turf/open/floor/iron, /area/engineering/main) "xpT" = ( -/obj/machinery/disposal/bin, -/obj/structure/disposalpipe/trunk{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 1 - }, -/obj/effect/turf_decal/tile/neutral, -/obj/effect/turf_decal/tile/neutral{ - dir = 4 - }, -/obj/effect/turf_decal/tile/neutral{ - dir = 8 - }, /obj/machinery/airalarm/directional/west, -/turf/open/floor/iron/dark, +/turf/closed/wall, /area/service/bar) "xpW" = ( /obj/structure/disposalpipe/segment{ @@ -112028,6 +112150,10 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, +/obj/structure/table/reinforced, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, /turf/open/floor/iron, /area/cargo/storage) "xFF" = ( @@ -113876,9 +114002,12 @@ /turf/open/floor/iron, /area/security/prison) "yfr" = ( -/obj/structure/table/reinforced, -/obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, -/obj/effect/turf_decal/bot, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargochat/engineering{ + dir = 4 + }, /turf/open/floor/iron, /area/engineering/break_room) "yfF" = ( @@ -139372,7 +139501,7 @@ kzH jnE jIf yfr -rka +qzF nQy oPF xBa @@ -139627,7 +139756,7 @@ pFk pFk goy pBT -jIf +afy lWJ fNl qhm @@ -139886,7 +140015,7 @@ pvd pBT nUh tlU -fNl +mXx qhm hAc hax @@ -148853,7 +148982,7 @@ vDE lVX aMZ aOB -aYB +wCr jqh aTB aVm @@ -149107,9 +149236,9 @@ qlP vrR aXI fLm -aXI +eYh +ncV ncV -wYm ncV mlg ncV @@ -149363,7 +149492,7 @@ qya oxd sqP xpT -wCr +aXI aXI qhV kIC @@ -150132,7 +150261,7 @@ qxA aXI pkT lyS -gUH +ext gUH mvD hpD @@ -157078,7 +157207,7 @@ jpQ jpQ uld xFE -ext +jpQ hJN rhn wXV @@ -157334,8 +157463,8 @@ jpQ crG ffH uld -eJd -eYh +icV +jpQ oWP lvG bGr @@ -158105,8 +158234,8 @@ hkY jpQ iuR uld -xFE -jpQ +gpL +hjz nAU tII ffH @@ -158362,9 +158491,9 @@ sMH kXs jpQ hXn -eJd +gSu luw -oWP +fna urJ vma eHP @@ -158619,7 +158748,7 @@ hkY kXs ffH tsk -eJd +iNR gJm pTN fQy @@ -165854,7 +165983,7 @@ bkw cgX cdp bkw -cgX +aFI ciH ckl clD diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 01a1872866d..7b722abe57b 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -8434,6 +8434,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 1 }, +/obj/effect/turf_decal/siding/brown/corner{ + dir = 4 + }, /turf/open/floor/iron/showroomfloor, /area/hallway/secondary/service) "aGE" = ( @@ -8562,6 +8565,9 @@ name = "Service Hall Maintenance"; req_one_access_txt = "22;25;26;28;35;37;38;46;70" }, +/obj/effect/turf_decal/siding/brown/corner{ + dir = 1 + }, /turf/open/floor/plating, /area/hallway/secondary/service) "aGQ" = ( @@ -10596,6 +10602,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, /turf/open/floor/iron/white, /area/medical/medbay/aft) "aUw" = ( @@ -10617,15 +10626,17 @@ /turf/open/floor/plating, /area/maintenance/starboard/fore) "aUK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, -/turf/open/floor/iron/white, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/trimline/brown/filled/end, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, +/turf/open/floor/iron, /area/medical/medbay/aft) "aUL" = ( /obj/effect/turf_decal/tile/red{ @@ -14749,7 +14760,6 @@ /obj/structure/sign/warning/nosmoking/circle{ pixel_x = 32 }, -/obj/structure/bed/roller, /turf/open/floor/iron/white, /area/medical/medbay) "bon" = ( @@ -15208,7 +15218,6 @@ /obj/structure/extinguisher_cabinet{ pixel_x = 27 }, -/obj/structure/bed/roller, /turf/open/floor/iron/white, /area/medical/medbay) "bqv" = ( @@ -15897,15 +15906,16 @@ dir = 8 }, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/blue/filled/corner, /turf/open/floor/iron/white, /area/medical/medbay/aft) "bsK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 6 + }, /turf/open/floor/iron/white, /area/medical/medbay/aft) "bsL" = ( @@ -16133,11 +16143,8 @@ /turf/open/floor/iron, /area/hallway/primary/central) "btP" = ( -/obj/structure/extinguisher_cabinet{ - pixel_x = -5; - pixel_y = 30 - }, -/turf/open/floor/iron/white, +/obj/machinery/computer/cargo/request, +/turf/open/floor/iron, /area/science/research) "btR" = ( /obj/effect/turf_decal/trimline/green/filled/line{ @@ -16158,10 +16165,8 @@ /turf/open/floor/iron/white, /area/medical/medbay/aft) "btS" = ( -/obj/machinery/firealarm{ - pixel_y = 24 - }, -/turf/open/floor/iron/white, +/obj/machinery/modular_computer/console/preset/cargochat/science, +/turf/open/floor/iron, /area/science/research) "btT" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ @@ -16237,6 +16242,7 @@ dir = 4; pixel_x = -32 }, +/obj/structure/bed/roller, /turf/open/floor/iron/white, /area/medical/medbay/aft) "buh" = ( @@ -16511,6 +16517,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, /turf/open/floor/iron/white, /area/science/research) "bve" = ( @@ -16740,6 +16749,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/structure/extinguisher_cabinet{ + pixel_x = 27 + }, /turf/open/floor/iron/white/side{ dir = 9 }, @@ -23868,6 +23880,7 @@ /obj/effect/turf_decal/stripes/line{ dir = 8 }, +/obj/item/folder/yellow, /turf/open/floor/iron, /area/cargo/storage) "cmw" = ( @@ -26883,6 +26896,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 5 }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, /turf/open/floor/iron, /area/cargo/office) "cRQ" = ( @@ -26901,7 +26918,11 @@ /area/science/mixing) "cSk" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/modular_computer/console/preset/cargochat/service, +/obj/effect/turf_decal/stripes/white/line{ + dir = 5 + }, +/turf/open/floor/wood, /area/hallway/secondary/service) "cSo" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, @@ -27658,6 +27679,17 @@ /obj/item/folder/blue, /turf/open/floor/wood, /area/commons/vacant_room/office) +"dsw" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron/white/side{ + dir = 10 + }, +/area/science/research) "dtd" = ( /obj/structure/rack, /obj/item/clothing/mask/gas, @@ -29177,6 +29209,9 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, /turf/open/floor/iron/showroomfloor, /area/hallway/secondary/service) "eBl" = ( @@ -29460,6 +29495,15 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/hallway/primary/central) +"eLU" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 5 + }, +/turf/open/floor/iron/white, +/area/medical/medbay/aft) "eMc" = ( /obj/machinery/door/airlock/command{ name = "MiniSat Access"; @@ -32735,16 +32779,23 @@ /turf/open/floor/iron, /area/commons/locker) "gZK" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 4 - }, /obj/machinery/light{ dir = 4 }, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/turf/open/floor/iron/white, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 1 + }, +/obj/machinery/modular_computer/console/preset/cargochat/medical{ + dir = 8 + }, +/turf/open/floor/iron, /area/medical/medbay/aft) "gZQ" = ( /obj/machinery/light/small{ @@ -33122,6 +33173,12 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 4 }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, /turf/open/floor/iron, /area/cargo/office) "hrJ" = ( @@ -33308,6 +33365,22 @@ /obj/structure/cable, /turf/open/floor/plating, /area/maintenance/fore/secondary) +"hyN" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 8 + }, +/obj/effect/turf_decal/siding/brown{ + dir = 1 + }, +/turf/open/floor/iron/showroomfloor, +/area/hallway/secondary/service) "hyS" = ( /obj/effect/turf_decal/loading_area, /turf/open/floor/iron, @@ -34676,6 +34749,13 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron/grimy, /area/service/chapel/office) +"itD" = ( +/obj/structure/table, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/turf/open/floor/iron, +/area/cargo/storage) "itG" = ( /obj/item/beacon, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ @@ -36007,6 +36087,25 @@ }, /turf/open/floor/iron, /area/commons/dorms) +"job" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 4 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/science/research) "jot" = ( /obj/structure/disposalpipe/segment{ dir = 9 @@ -36760,6 +36859,9 @@ dir = 8 }, /obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/blue/filled/line{ + dir = 4 + }, /turf/open/floor/iron/white, /area/medical/medbay/aft) "jQv" = ( @@ -38386,6 +38488,12 @@ /obj/machinery/power/apc/auto_name/south, /obj/effect/turf_decal/tile/brown, /obj/structure/cable, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, /turf/open/floor/iron, /area/cargo/office) "kTm" = ( @@ -39476,6 +39584,29 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/iron/dark, /area/security/interrogation) +"lMe" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, +/obj/structure/window/reinforced{ + dir = 1; + layer = 2.9 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/iron, +/area/engineering/break_room) "lNo" = ( /obj/structure/cable, /obj/machinery/holopad, @@ -40609,12 +40740,20 @@ /turf/closed/wall, /area/medical/pharmacy) "myg" = ( -/obj/structure/table, /obj/machinery/firealarm{ dir = 4; pixel_x = -24 }, -/obj/item/folder/yellow, +/obj/machinery/modular_computer/console/preset/cargochat/cargo{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/office) "myl" = ( @@ -42170,16 +42309,18 @@ /obj/structure/disposalpipe/segment{ dir = 4 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 4 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 4 + }, /turf/open/floor/iron, /area/security/office) "nxx" = ( @@ -42765,7 +42906,9 @@ /turf/open/floor/iron/white/corner, /area/hallway/secondary/entry) "nQF" = ( -/obj/machinery/computer/cargo/request, +/obj/item/kirbyplants{ + icon_state = "plant-21" + }, /turf/open/floor/iron, /area/cargo/office) "nQH" = ( @@ -42995,6 +43138,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, /turf/open/floor/iron, /area/cargo/office) "ocC" = ( @@ -44048,6 +44198,14 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron, /area/commons/fitness) +"oTY" = ( +/obj/structure/chair/office{ + dir = 8 + }, +/obj/effect/landmark/start/cargo_technician, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/iron, +/area/cargo/office) "oUd" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 4 @@ -45637,6 +45795,18 @@ /obj/effect/spawner/structure/window/plasma/reinforced, /turf/open/floor/plating, /area/engineering/supermatter) +"pWx" = ( +/obj/machinery/firealarm{ + pixel_y = 24 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/iron/white/side{ + dir = 6 + }, +/area/science/research) "pWC" = ( /obj/effect/turf_decal/tile/neutral{ dir = 1 @@ -48081,16 +48251,18 @@ /obj/structure/disposalpipe/segment{ dir = 5 }, -/obj/effect/turf_decal/tile/red, -/obj/effect/turf_decal/tile/red{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 5 }, +/obj/machinery/modular_computer/console/preset/cargochat/cargo{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 8 + }, /turf/open/floor/iron, /area/security/office) "rIH" = ( @@ -48482,6 +48654,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 8 }, +/obj/structure/bed/roller, /turf/open/floor/iron/white, /area/medical/medbay/aft) "rTL" = ( @@ -48851,6 +49024,22 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/plating, /area/maintenance/aft) +"skk" = ( +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ + dir = 1 + }, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron/white, +/area/science/research) "skv" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 @@ -48991,6 +49180,12 @@ /obj/effect/turf_decal/tile/neutral, /turf/open/floor/iron/dark, /area/security/execution/transfer) +"soE" = ( +/obj/effect/turf_decal/siding/brown{ + dir = 4 + }, +/turf/open/floor/iron/showroomfloor, +/area/hallway/secondary/service) "sph" = ( /obj/effect/landmark/event_spawn, /obj/structure/cable, @@ -49422,12 +49617,14 @@ /turf/open/floor/plating, /area/engineering/main) "sFa" = ( -/obj/structure/table, /obj/machinery/airalarm{ dir = 4; pixel_x = -22 }, -/obj/item/multitool, +/obj/machinery/computer/cargo{ + dir = 4 + }, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/office) "sFw" = ( @@ -51852,6 +52049,26 @@ }, /turf/open/floor/carpet/blue, /area/medical/psychology) +"umA" = ( +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/modular_computer/console/preset/cargochat/engineering{ + dir = 8 + }, +/obj/structure/window/reinforced, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/turf/open/floor/iron, +/area/engineering/break_room) "umE" = ( /obj/machinery/power/apc/auto_name/west, /obj/structure/disposalpipe/segment, @@ -52318,6 +52535,9 @@ /obj/structure/disposalpipe/segment{ dir = 9 }, +/obj/effect/turf_decal/trimline/blue/filled/corner{ + dir = 4 + }, /turf/open/floor/iron/white, /area/medical/medbay/aft) "uyv" = ( @@ -52533,6 +52753,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/purple/visible, /turf/open/floor/iron/dark, /area/engineering/supermatter/room) +"uDw" = ( +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/structure/table, +/obj/item/food/cheesiehonkers, +/turf/open/floor/iron, +/area/cargo/office) "uDE" = ( /obj/structure/disposalpipe/segment, /obj/effect/landmark/start/hangover, @@ -57036,6 +57265,13 @@ pixel_x = 6; pixel_y = -5 }, +/obj/item/multitool, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/item/trash/cheesie, +/obj/effect/decal/cleanable/dirt, /turf/open/floor/iron, /area/cargo/office) "xJs" = ( @@ -57463,7 +57699,9 @@ dir = 4 }, /obj/effect/decal/cleanable/cobweb/cobweb2, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/stripes/white/line, +/turf/open/floor/wood, /area/hallway/secondary/service) "xXc" = ( /obj/machinery/door/airlock/maintenance{ @@ -79203,7 +79441,7 @@ rSS hFZ mmg uIw -dCr +itD dCr sbp jIx @@ -79972,8 +80210,8 @@ pmz xjK xjK hrF -xjK -xjK +oTY +uDw oOH tZP lQH @@ -88480,8 +88718,8 @@ rEM hZo iWy xLS -tzL -tzL +lMe +umA tzL tzL ddj @@ -96389,7 +96627,7 @@ aro aro jjD fPh -qzO +soE aGB pUe aAe @@ -96904,7 +97142,7 @@ boP boP cVb xWM -pOR +hyN xfm wSh krf @@ -97197,7 +97435,7 @@ bvo bsK gZK aUK -bsK +eLU btT qMQ eIZ @@ -102074,7 +102312,7 @@ cHV cIa jFl box -bWr +pWx bvc byf byf @@ -102332,7 +102570,7 @@ cIb bsT box btP -aRU +job byi bzz bAE @@ -102589,7 +102827,7 @@ bqd aPm box btS -aRU +job byi bwN bAG @@ -102845,8 +103083,8 @@ cHX cIc aPm buj -bpZ -bve +dsw +skk byj bwM aUs diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 8f194670579..b44d1350178 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -4307,8 +4307,10 @@ /turf/open/floor/engine, /area/ai_monitored/turret_protected/ai) "ajq" = ( -/obj/effect/spawner/lootdrop/glowstick, /obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, /turf/open/floor/plating{ icon_state = "platingdmg1" }, @@ -16839,11 +16841,11 @@ /obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/item/kirbyplants{ - icon_state = "plant-10" - }, /obj/structure/cable, /obj/machinery/power/apc/auto_name/east, +/obj/machinery/modular_computer/console/preset/cargochat/medical{ + dir = 8 + }, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) "aQC" = ( @@ -18432,16 +18434,36 @@ /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) "aTu" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, /obj/effect/turf_decal/tile/blue, /obj/effect/turf_decal/tile/blue{ dir = 4 }, /obj/effect/turf_decal/tile/blue, -/obj/structure/disposalpipe/segment, /obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/structure/cable, +/obj/structure/table, +/obj/item/clipboard{ + pixel_x = -6 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 6; + pixel_y = 10 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = 6 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -6; + pixel_y = 10 + }, +/obj/item/reagent_containers/glass/beaker/cryoxadone{ + pixel_x = -6 + }, +/obj/item/reagent_containers/dropper, +/obj/item/reagent_containers/syringe, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) "aTv" = ( @@ -25152,18 +25174,19 @@ }, /area/maintenance/port) "bgj" = ( -/obj/effect/turf_decal/tile/purple, -/obj/effect/turf_decal/tile/purple{ - dir = 8 - }, -/obj/effect/turf_decal/tile/purple, /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 1 }, /obj/structure/disposalpipe/segment{ dir = 4 }, -/turf/open/floor/iron/showroomfloor, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 4 + }, +/turf/open/floor/iron/dark, /area/science/research) "bgk" = ( /obj/machinery/firealarm{ @@ -27569,7 +27592,6 @@ /turf/open/floor/iron/dark, /area/ai_monitored/turret_protected/aisat/atmos) "bpL" = ( -/obj/effect/turf_decal/bot, /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ dir = 4 @@ -27581,7 +27603,9 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/machinery/computer/cargo/request, +/obj/item/kirbyplants{ + icon_state = "plant-05" + }, /turf/open/floor/iron, /area/hallway/primary/starboard) "bpM" = ( @@ -29860,6 +29884,15 @@ /area/maintenance/central) "bAT" = ( /obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 8 + }, +/obj/machinery/modular_computer/console/preset/cargochat/cargo{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 8 + }, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -43536,10 +43569,9 @@ /turf/open/floor/plating, /area/maintenance/port/aft) "cli" = ( -/obj/structure/grille, /obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/closed/wall, +/area/engineering/main) "clj" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, @@ -43835,13 +43867,17 @@ }, /area/maintenance/port/aft) "cmg" = ( -/obj/effect/turf_decal/stripes/corner{ +/obj/structure/disposalpipe/segment{ + dir = 4 + }, +/obj/machinery/modular_computer/console/preset/cargochat/science{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ dir = 8 }, -/obj/effect/decal/cleanable/dirt, -/obj/effect/loot_site_spawner, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/science/research) "cmh" = ( /obj/structure/sign/poster/contraband/random, /turf/closed/wall, @@ -44044,14 +44080,11 @@ /turf/open/floor/iron, /area/security/brig) "cmB" = ( -/obj/structure/closet/radiation, -/obj/structure/grille/broken, -/obj/effect/decal/cleanable/cobweb, -/obj/effect/decal/cleanable/dirt, -/turf/open/floor/plating{ - icon_state = "platingdmg3" +/obj/machinery/computer/cargo/request{ + dir = 1 }, -/area/maintenance/starboard/aft) +/turf/open/floor/iron/dark, +/area/engineering/main) "cmC" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -55960,8 +55993,6 @@ /turf/open/floor/iron/dark, /area/command/gateway) "eHO" = ( -/obj/effect/turf_decal/delivery, -/obj/effect/decal/cleanable/cobweb/cobweb2, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, @@ -55972,6 +56003,11 @@ dir = 8; pixel_x = 28 }, +/obj/structure/rack, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/effect/decal/cleanable/cobweb/cobweb2, /turf/open/floor/iron/dark, /area/cargo/storage) "eIc" = ( @@ -63170,16 +63206,9 @@ /turf/open/floor/iron/grimy, /area/security/prison) "iuQ" = ( -/obj/structure/table/reinforced, -/obj/item/clipboard, -/obj/item/clothing/accessory/armband/deputy, -/obj/item/clothing/accessory/armband/deputy, -/obj/item/clothing/accessory/armband/deputy, -/obj/item/clothing/accessory/armband/deputy, -/obj/item/clothing/accessory/armband/deputy, -/obj/effect/turf_decal/tile/red, -/obj/item/food/donut, -/obj/item/inspector, +/obj/machinery/modular_computer/console/preset/cargochat/security{ + dir = 4 + }, /turf/open/floor/iron/dark, /area/security/office) "ive" = ( @@ -63461,13 +63490,11 @@ /area/service/hydroponics) "iDo" = ( /obj/effect/turf_decal/tile/red, -/obj/item/kirbyplants{ - icon_state = "plant-21" - }, /obj/machinery/light_switch{ pixel_x = 24; pixel_y = -24 }, +/obj/machinery/photocopier, /turf/open/floor/iron, /area/security/office) "iDq" = ( @@ -64763,6 +64790,7 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, +/obj/effect/loot_site_spawner, /turf/open/floor/plating, /area/maintenance/starboard/aft) "jrx" = ( @@ -65682,6 +65710,15 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/iron/dark, /area/cargo/storage) +"jRt" = ( +/obj/structure/closet/radiation, +/obj/structure/grille/broken, +/obj/effect/decal/cleanable/cobweb, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating{ + icon_state = "platingdmg3" + }, +/area/maintenance/starboard/aft) "jRT" = ( /obj/effect/turf_decal/tile/neutral{ dir = 4 @@ -66487,6 +66524,7 @@ dir = 8 }, /obj/structure/cable, +/obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron, /area/engineering/main) "klG" = ( @@ -67482,7 +67520,6 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 5 }, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment{ dir = 5 }, @@ -67490,8 +67527,8 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 }, -/turf/open/floor/plating, -/area/maintenance/starboard/aft) +/turf/closed/wall/rust, +/area/engineering/main) "kJJ" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -68016,13 +68053,11 @@ /area/cargo/office) "kXl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, -/obj/effect/decal/cleanable/dirt, /obj/structure/disposalpipe/segment, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/turf/open/floor/plating{ - icon_state = "panelscorched" - }, +/obj/structure/sign/warning/electricshock, +/turf/closed/wall/rust, /area/maintenance/starboard/aft) "kXs" = ( /obj/effect/turf_decal/tile/neutral, @@ -69615,10 +69650,14 @@ /obj/effect/turf_decal/tile/neutral{ dir = 8 }, +/obj/machinery/suit_storage_unit/engine, /obj/structure/extinguisher_cabinet{ + pixel_y = 32 + }, +/obj/machinery/airalarm{ + dir = 8; pixel_x = 24 }, -/obj/structure/reagent_dispensers/watertank, /turf/open/floor/iron/dark, /area/engineering/main) "lNt" = ( @@ -69779,6 +69818,13 @@ /obj/effect/landmark/start/hangover, /turf/open/floor/iron/dark, /area/service/bar) +"lRf" = ( +/obj/effect/decal/cleanable/dirt, +/obj/machinery/computer/chef_order{ + dir = 8 + }, +/turf/open/floor/plating, +/area/maintenance/central) "lRg" = ( /obj/machinery/door/firedoor, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, @@ -69992,6 +70038,7 @@ /obj/effect/turf_decal/bot, /obj/machinery/holopad, /obj/effect/landmark/start/hangover, +/obj/machinery/icecream_vat, /turf/open/floor/iron/showroomfloor, /area/service/bar/atrium) "lXw" = ( @@ -74063,6 +74110,12 @@ }, /turf/open/floor/iron, /area/command/heads_quarters/hop) +"ojw" = ( +/obj/structure/sign/departments/cargo{ + pixel_x = 32 + }, +/turf/open/floor/iron/dark, +/area/engineering/main) "ojM" = ( /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/tile/neutral{ @@ -78623,27 +78676,10 @@ /obj/effect/turf_decal/siding/blue{ dir = 4 }, -/obj/structure/table, -/obj/item/clipboard{ - pixel_x = -6 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 6; - pixel_y = 10 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = 6 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = -6; - pixel_y = 10 - }, -/obj/item/reagent_containers/glass/beaker/cryoxadone{ - pixel_x = -6 - }, -/obj/item/reagent_containers/dropper, -/obj/item/reagent_containers/syringe, /obj/structure/cable, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, /turf/open/floor/iron/showroomfloor, /area/medical/medbay/central) "qIv" = ( @@ -79116,6 +79152,21 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/engineering/storage/tech) +"qUX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 4 + }, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, +/obj/structure/window/reinforced{ + dir = 4 + }, +/turf/open/floor/plating{ + icon_state = "platingdmg1" + }, +/area/maintenance/starboard/aft) "qVF" = ( /obj/effect/turf_decal/tile/red{ dir = 8 @@ -79631,9 +79682,6 @@ /obj/effect/turf_decal/tile/yellow{ dir = 1 }, -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, /obj/effect/turf_decal/tile/red{ dir = 1 }, @@ -79919,6 +79967,14 @@ }, /turf/open/floor/iron/dark, /area/engineering/break_room) +"roY" = ( +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/effect/decal/cleanable/dirt, +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/turf/closed/wall, +/area/engineering/main) "rph" = ( /obj/effect/turf_decal/tile/brown, /obj/effect/turf_decal/tile/brown{ @@ -81541,18 +81597,13 @@ /turf/open/floor/iron/showroomfloor, /area/science/xenobiology) "soq" = ( -/obj/machinery/suit_storage_unit/engine, -/obj/effect/turf_decal/delivery, /obj/effect/turf_decal/tile/neutral{ dir = 8 }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, -/obj/machinery/airalarm{ - dir = 8; - pixel_x = 24 - }, +/obj/effect/turf_decal/bot, /turf/open/floor/iron/dark, /area/engineering/main) "sox" = ( @@ -81722,6 +81773,11 @@ /obj/structure/sign/warning/securearea, /turf/closed/wall/r_wall, /area/hallway/secondary/entry) +"stO" = ( +/obj/structure/grille, +/obj/effect/decal/cleanable/dirt, +/turf/open/floor/plating, +/area/maintenance/starboard/aft) "stX" = ( /obj/structure/toilet, /obj/machinery/light/small{ @@ -82785,7 +82841,6 @@ /turf/open/floor/iron/showroomfloor, /area/service/library) "sXu" = ( -/obj/machinery/photocopier, /obj/effect/turf_decal/tile/neutral, /obj/effect/turf_decal/tile/neutral{ dir = 8 @@ -82796,6 +82851,9 @@ /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/security/office) "sXv" = ( @@ -83657,16 +83715,10 @@ /turf/open/floor/iron/dark, /area/construction/mining/aux_base) "tAZ" = ( -/obj/effect/turf_decal/bot, -/obj/effect/turf_decal/tile/red{ - dir = 1 - }, -/obj/effect/turf_decal/tile/red, -/obj/machinery/icecream_vat, /obj/structure/extinguisher_cabinet{ pixel_x = -26 }, -/turf/open/floor/iron/showroomfloor, +/turf/closed/wall, /area/service/kitchen) "tBb" = ( /obj/effect/turf_decal/loading_area, @@ -84253,6 +84305,10 @@ /obj/structure/cable, /turf/open/floor/carpet/green, /area/service/library) +"tON" = ( +/obj/machinery/modular_computer/console/preset/cargochat/engineering, +/turf/open/floor/iron/dark, +/area/engineering/main) "tOO" = ( /obj/machinery/light/small{ dir = 1 @@ -86845,21 +86901,20 @@ /area/space/nearstation) "viF" = ( /obj/structure/table/reinforced, -/obj/item/folder/red{ - pixel_x = -2; - pixel_y = -2 - }, -/obj/item/folder/blue{ - pixel_x = 2; - pixel_y = 2 - }, -/obj/item/lighter, /obj/effect/turf_decal/tile/neutral{ dir = 4 }, /obj/effect/turf_decal/tile/neutral{ dir = 1 }, +/obj/item/clipboard, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/clothing/accessory/armband/deputy, +/obj/item/food/donut, +/obj/item/inspector, /turf/open/floor/iron/dark, /area/security/office) "viG" = ( @@ -88672,9 +88727,6 @@ /obj/effect/turf_decal/tile/brown{ dir = 4 }, -/obj/effect/turf_decal/loading_area{ - dir = 8 - }, /obj/effect/turf_decal/tile/yellow, /obj/effect/turf_decal/tile/brown{ dir = 1 @@ -88839,6 +88891,14 @@ /obj/structure/cable, /turf/open/floor/plating, /area/command/heads_quarters/ce) +"wnX" = ( +/obj/effect/decal/cleanable/dirt, +/obj/structure/cable, +/obj/effect/spawner/lootdrop/glowstick, +/turf/open/floor/plating{ + icon_state = "panelscorched" + }, +/area/maintenance/central) "woB" = ( /obj/machinery/door/poddoor/shutters/preopen{ id = "ceprivate"; @@ -91039,7 +91099,7 @@ /area/cargo/qm) "xwt" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/chef_order{ +/obj/machinery/modular_computer/console/preset/cargochat/service{ dir = 8 }, /turf/open/floor/plating{ @@ -91281,6 +91341,15 @@ /obj/structure/table/reinforced, /obj/item/crowbar/red, /obj/item/radio/headset/headset_sec, +/obj/item/folder/blue{ + pixel_x = 2; + pixel_y = 2 + }, +/obj/item/folder/red{ + pixel_x = -2; + pixel_y = -2 + }, +/obj/item/lighter, /turf/open/floor/iron/dark, /area/security/office) "xDW" = ( @@ -92296,6 +92365,13 @@ }, /turf/open/floor/iron, /area/service/hydroponics) +"yey" = ( +/obj/machinery/door/airlock/engineering/glass{ + name = "Cargo Requests"; + req_access_txt = "32" + }, +/turf/open/floor/iron/dark, +/area/engineering/main) "yeV" = ( /obj/effect/turf_decal/stripes/line{ dir = 8 @@ -124880,7 +124956,7 @@ aox buB ajq xwt -uuQ +lRf sox ref ref @@ -125664,7 +125740,7 @@ bvV aIN aox bAM -bDk +wnX rPt gaR xIB @@ -129807,7 +129883,7 @@ vwG qLv qLv qGy -qGy +yey ucO qGy nUj @@ -130062,13 +130138,13 @@ bSJ bSI bGH bGr -bEg -bAT -bOC +mpx +tON +ojw cmB -bOb +mpx +jRt cmh -cmg fdx cKV nUj @@ -130319,12 +130395,12 @@ vDB dzk dzk kXl -dzk +roY kJv -bOb -bEg +mpx +mpx cli -bAT +stO bGr jqE bOb @@ -130575,8 +130651,8 @@ gnI bSN bOb fiv +bGr cmp -bSI oKC vDB jAE @@ -130786,7 +130862,7 @@ aYS aZt bbl aOi -bep +cmg aYe aXQ aXY @@ -132871,7 +132947,7 @@ nFZ hzt vfo bTw -bAv +qUX bOc bOc bOc diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 205267b6937..501113bc858 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -3137,7 +3137,6 @@ name = "Cargo Desk"; req_access_txt = "50" }, -/obj/item/newspaper, /obj/item/paper_bin{ pixel_x = -3; pixel_y = 9 @@ -3146,6 +3145,8 @@ dir = 4 }, /obj/machinery/door/firedoor, +/obj/item/newspaper, +/obj/effect/spawner/lootdrop/maintenance, /turf/open/floor/iron, /area/cargo/sorting) "arf" = ( @@ -3996,6 +3997,12 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 8 }, +/obj/structure/rack, +/obj/item/storage/toolbox/mechanical{ + pixel_x = -4; + pixel_y = 4 + }, +/obj/item/storage/toolbox/electrical, /turf/open/floor/iron, /area/security/brig) "axv" = ( @@ -4005,6 +4012,10 @@ /obj/effect/turf_decal/trimline/red/filled/corner{ dir = 4 }, +/obj/structure/table, +/obj/machinery/recharger{ + pixel_y = 4 + }, /turf/open/floor/iron, /area/security/brig) "axI" = ( @@ -7170,7 +7181,6 @@ /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 8 }, -/obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, /area/construction/storage_wing) "aXq" = ( @@ -19156,7 +19166,7 @@ pixel_y = -5 }, /obj/machinery/airalarm/directional/south, -/turf/open/floor/iron/white, +/turf/open/floor/iron, /area/science/misc_lab) "cWl" = ( /obj/effect/turf_decal/tile/neutral{ @@ -19248,10 +19258,10 @@ /turf/open/floor/iron/white, /area/medical/storage) "cXm" = ( -/obj/structure/table, -/obj/item/paper_bin, -/obj/item/pen, -/turf/open/floor/iron/white, +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/turf/open/floor/iron, /area/science/misc_lab) "cXA" = ( /obj/effect/turf_decal/stripes/line{ @@ -23298,19 +23308,21 @@ /turf/open/floor/iron, /area/security/brig) "ego" = ( -/obj/effect/turf_decal/trimline/red/filled/corner{ - dir = 1 - }, -/obj/structure/table, -/obj/machinery/recharger{ - pixel_y = 4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 10 }, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 10 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 8 + }, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, /turf/open/floor/iron, /area/security/brig) "egB" = ( @@ -24342,7 +24354,13 @@ /obj/structure/chair/office{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron, /area/science/misc_lab) "eCg" = ( /obj/machinery/door/airlock/maintenance{ @@ -24873,18 +24891,9 @@ /turf/open/floor/iron/white, /area/medical/medbay/central) "eKu" = ( -/obj/structure/table/reinforced, -/obj/machinery/door/window/westright{ - name = "Cargo Desk"; - req_access_txt = "50" - }, -/obj/effect/spawner/lootdrop/maintenance, -/obj/structure/disposalpipe/segment{ - dir = 4 - }, -/obj/machinery/door/firedoor, +/obj/effect/turf_decal/trimline/brown/filled/corner, /turf/open/floor/iron, -/area/cargo/sorting) +/area/construction/storage_wing) "eKv" = ( /obj/effect/turf_decal/siding/purple{ dir = 1 @@ -27675,8 +27684,8 @@ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/computer/chef_order{ - dir = 1 +/obj/structure/reagent_dispensers/plumbed{ + dir = 8 }, /turf/open/floor/iron, /area/hallway/secondary/service) @@ -28924,6 +28933,9 @@ /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ dir = 8 }, +/obj/vehicle/ridden/wheelchair{ + dir = 1 + }, /turf/open/floor/iron/white, /area/medical/treatment_center) "gbO" = ( @@ -30659,6 +30671,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 8 }, +/obj/machinery/computer/cargo{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, /turf/open/floor/iron, /area/cargo/sorting) "gGb" = ( @@ -30985,12 +31006,6 @@ /turf/open/floor/iron/white, /area/science/nanite) "gLn" = ( -/obj/machinery/computer/cargo/request{ - dir = 4 - }, -/obj/structure/window/reinforced{ - dir = 8 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, @@ -31001,7 +31016,8 @@ pixel_y = 32 }, /obj/machinery/door/firedoor, -/turf/open/floor/iron, +/obj/effect/spawner/structure/window/reinforced, +/turf/open/floor/plating, /area/cargo/sorting) "gMj" = ( /obj/effect/decal/cleanable/dirt, @@ -32507,14 +32523,11 @@ /turf/open/floor/iron, /area/commons/fitness/recreation) "hoa" = ( -/obj/item/book/manual/wiki/engineering_construction{ - pixel_y = 3 +/obj/machinery/computer/cargo/request, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 }, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ +/obj/effect/turf_decal/trimline/yellow/filled/warning{ dir = 4 }, /turf/open/floor/iron, @@ -33641,7 +33654,7 @@ pixel_x = 32 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/reagent_dispensers/plumbed{ +/obj/machinery/modular_computer/console/preset/cargochat/service{ dir = 8 }, /turf/open/floor/iron, @@ -34728,6 +34741,7 @@ "ibT" = ( /obj/machinery/power/apc/auto_name/north, /obj/structure/cable, +/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2, /turf/open/floor/iron/white, /area/science/misc_lab) "icq" = ( @@ -36854,11 +36868,13 @@ /turf/open/floor/iron/dark, /area/engineering/storage/tcomms) "iPj" = ( -/obj/machinery/atmospherics/components/unary/vent_scrubber/on/layer2{ - dir = 1 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 }, -/obj/effect/turf_decal/tile/purple, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 5 + }, +/turf/open/floor/iron, /area/science/misc_lab) "iPl" = ( /obj/structure/disposalpipe/segment{ @@ -37298,6 +37314,15 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /turf/open/floor/iron/dark, /area/engineering/break_room) +"iXg" = ( +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 10 + }, +/turf/open/floor/iron, +/area/engineering/break_room) "iXv" = ( /obj/item/wrench, /turf/open/floor/iron, @@ -40571,6 +40596,10 @@ /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/effect/decal/cleanable/dirt, +/obj/item/broken_bottle{ + pixel_x = 9; + pixel_y = -4 + }, /turf/open/floor/iron, /area/maintenance/starboard) "kfU" = ( @@ -40967,23 +40996,22 @@ /turf/open/floor/iron, /area/ai_monitored/command/storage/eva) "knk" = ( -/obj/effect/turf_decal/tile/blue{ - dir = 4 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, /obj/structure/sign/warning/coldtemp{ pixel_y = 32 }, -/obj/vehicle/ridden/wheelchair, /obj/item/radio/intercom{ pixel_x = -28 }, -/turf/open/floor/iron/white, +/obj/machinery/modular_computer/console/preset/cargochat/medical{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron, /area/medical/treatment_center) "kny" = ( /obj/structure/table, @@ -42454,7 +42482,6 @@ pixel_y = 32 }, /obj/structure/table/glass, -/obj/item/folder/yellow, /obj/effect/turf_decal/tile/yellow{ dir = 1 }, @@ -42464,6 +42491,10 @@ /obj/effect/turf_decal/stripes/corner{ dir = 4 }, +/obj/item/book/manual/wiki/engineering_construction{ + pixel_y = 3 + }, +/obj/item/folder/yellow, /turf/open/floor/iron, /area/engineering/break_room) "kPq" = ( @@ -43072,20 +43103,12 @@ /turf/open/floor/iron/dark, /area/science/genetics) "laG" = ( -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 +/obj/machinery/modular_computer/console/preset/cargochat/engineering, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 8 }, -/obj/item/pen, -/obj/structure/table/glass, -/obj/effect/turf_decal/tile/yellow{ - dir = 1 - }, -/obj/effect/turf_decal/tile/yellow{ - dir = 4 - }, -/obj/effect/turf_decal/stripes/corner{ - dir = 1 +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 8 }, /turf/open/floor/iron, /area/engineering/break_room) @@ -44353,13 +44376,19 @@ /turf/open/floor/iron, /area/hallway/secondary/exit/departure_lounge) "lwC" = ( -/obj/structure/chair/office{ - dir = 4 - }, -/obj/effect/landmark/start/cargo_technician, /obj/structure/disposalpipe/segment{ dir = 4 }, +/obj/machinery/modular_computer/console/preset/cargochat/cargo{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/obj/effect/turf_decal/tile/brown, /turf/open/floor/iron, /area/cargo/sorting) "lwJ" = ( @@ -44845,7 +44874,9 @@ /area/security/brig) "lGw" = ( /obj/effect/decal/cleanable/dirt, -/obj/machinery/vending/cigarette, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, /turf/open/floor/iron, /area/maintenance/starboard) "lGS" = ( @@ -49351,6 +49382,8 @@ /obj/effect/turf_decal/tile/purple{ dir = 1 }, +/obj/item/paper_bin, +/obj/item/pen, /turf/open/floor/iron/white, /area/science/misc_lab) "nfZ" = ( @@ -52679,6 +52712,13 @@ /obj/effect/turf_decal/tile/brown{ dir = 1 }, +/obj/item/clothing/gloves/cargo_gauntlet{ + pixel_y = -3 + }, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet{ + pixel_y = 3 + }, /turf/open/floor/iron, /area/cargo/storage) "okF" = ( @@ -63090,6 +63130,12 @@ /area/maintenance/starboard) "rBt" = ( /obj/machinery/atmospherics/components/unary/vent_pump/on/layer4, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 6 + }, /turf/open/floor/iron, /area/engineering/break_room) "rBv" = ( @@ -63358,6 +63404,10 @@ pixel_y = -4 }, /obj/machinery/duct, +/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ + dir = 4 + }, +/obj/item/trash/candy, /turf/open/floor/iron, /area/maintenance/starboard) "rIv" = ( @@ -69415,14 +69465,11 @@ /turf/open/floor/iron, /area/hallway/primary/starboard) "tFj" = ( -/obj/item/trash/candy, /obj/machinery/light{ dir = 8 }, /obj/effect/decal/cleanable/dirt, -/obj/machinery/atmospherics/components/unary/vent_pump/on/layer4{ - dir = 4 - }, +/obj/machinery/vending/cigarette, /turf/open/floor/iron, /area/maintenance/starboard) "tFm" = ( @@ -73578,11 +73625,14 @@ /turf/open/floor/iron, /area/command/gateway) "uXk" = ( -/obj/machinery/computer/cargo/request{ - dir = 1 +/obj/structure/disposalpipe/segment, +/obj/structure/disposalpipe/segment{ + dir = 4 }, -/obj/structure/window/reinforced, -/obj/machinery/door/firedoor, +/obj/structure/chair/office{ + dir = 4 + }, +/obj/effect/landmark/start/cargo_technician, /turf/open/floor/iron, /area/cargo/sorting) "uXo" = ( @@ -75685,15 +75735,17 @@ /turf/open/floor/iron, /area/construction/storage_wing) "vJv" = ( -/obj/structure/rack, -/obj/item/storage/toolbox/mechanical{ - pixel_x = -4; - pixel_y = 4 - }, -/obj/effect/decal/cleanable/dirt, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, -/obj/item/storage/toolbox/electrical, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 10 + }, +/obj/machinery/modular_computer/console/preset/cargochat/security{ + dir = 8 + }, /turf/open/floor/iron, /area/security/brig) "vJG" = ( @@ -76362,11 +76414,19 @@ /turf/open/floor/iron, /area/security/office) "vUQ" = ( -/obj/structure/table, /obj/machinery/light{ dir = 8 }, -/turf/open/floor/iron/white, +/obj/machinery/modular_computer/console/preset/cargochat/science{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 1 + }, +/turf/open/floor/iron, /area/science/misc_lab) "vUX" = ( /obj/effect/turf_decal/stripes/corner{ @@ -77186,13 +77246,12 @@ dir = 9 }, /obj/structure/cable, -/obj/item/broken_bottle{ - pixel_x = 9; - pixel_y = -4 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, +/obj/machinery/computer/chef_order{ + dir = 8 + }, /turf/open/floor/plating{ icon_state = "panelscorched" }, @@ -78764,18 +78823,20 @@ /area/command/heads_quarters/hop) "wMX" = ( /obj/structure/cable, -/obj/effect/turf_decal/tile/blue, -/obj/effect/turf_decal/tile/blue{ - dir = 8 - }, -/obj/effect/turf_decal/tile/blue{ - dir = 1 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ dir = 4 }, /obj/machinery/duct, -/turf/open/floor/iron/white, +/obj/machinery/computer/cargo/request{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron, /area/medical/treatment_center) "wNe" = ( /obj/effect/turf_decal/tile/brown{ @@ -80583,7 +80644,13 @@ "xtp" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/blue/filled/corner, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 4 + }, +/obj/effect/turf_decal/trimline/purple/filled/warning{ + dir = 4 + }, +/turf/open/floor/iron, /area/science/misc_lab) "xtq" = ( /obj/structure/table, @@ -103515,8 +103582,8 @@ uZj mVk aUk lgC -aXq -uXk +eKu +iFZ svm eGZ oYk @@ -104805,7 +104872,7 @@ ahH ahH kCM nnh -dYB +uXk dYB dYB kwS @@ -105319,7 +105386,7 @@ ckk heS iFZ gLn -eKu +itM arc itM vKw @@ -125623,7 +125690,7 @@ pko bAJ xMa laG -xwN +iXg soC qvX bfX diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index cc463f78e50..d3d20dad6be 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -1864,12 +1864,16 @@ /turf/open/floor/iron, /area/security/prison) "agw" = ( -/obj/effect/turf_decal/trimline/red/filled/line{ - dir = 1 - }, /obj/structure/disposalpipe/segment{ dir = 6 }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 6 + }, +/obj/machinery/computer/cargo/request, /turf/open/floor/iron, /area/security/office) "agx" = ( @@ -2732,12 +2736,6 @@ dir = 4 }, /obj/machinery/airalarm/directional/east, -/obj/item/paper_bin{ - pixel_x = -2; - pixel_y = 4 - }, -/obj/structure/table, -/obj/item/pen, /turf/open/floor/iron, /area/cargo/office) "ajz" = ( @@ -4536,8 +4534,9 @@ /area/hallway/secondary/entry) "apd" = ( /obj/effect/turf_decal/trimline/green/filled/line, -/obj/structure/cable, -/obj/machinery/power/apc/auto_name/south, +/obj/machinery/modular_computer/console/preset/cargochat/service{ + dir = 1 + }, /turf/open/floor/iron/dark, /area/service/hydroponics) "apf" = ( @@ -8811,6 +8810,10 @@ dir = 6 }, /obj/machinery/firealarm/directional/east, +/obj/structure/table, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, +/obj/item/clothing/gloves/cargo_gauntlet, /turf/open/floor/iron, /area/cargo/storage) "aBG" = ( @@ -13608,12 +13611,19 @@ /turf/open/floor/engine, /area/engineering/supermatter/room) "aZC" = ( -/mob/living/simple_animal/hostile/lizard/space{ - dir = 4; - name = "Stuck-In-Rock" +/obj/structure/ladder, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 }, -/turf/open/floor/plating/asteroid/airless, -/area/mine/explored) +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "aZE" = ( /obj/effect/turf_decal/tile/bar, /obj/effect/turf_decal/tile/bar{ @@ -14286,11 +14296,10 @@ /turf/open/floor/iron/dark, /area/command/bridge) "bli" = ( -/obj/structure/table, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/item/folder/yellow, +/obj/machinery/modular_computer/console/preset/cargochat/cargo, /turf/open/floor/iron, /area/cargo/office) "blp" = ( @@ -17967,15 +17976,16 @@ /turf/open/floor/plating, /area/service/hydroponics) "cFC" = ( -/obj/structure/table, -/obj/item/paper_bin{ - pixel_x = -3; - pixel_y = 7 - }, -/obj/item/pen, /obj/structure/cable, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/chair/stool, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 1 + }, /turf/open/floor/iron, /area/engineering/break_room) "cFF" = ( @@ -19500,6 +19510,9 @@ /area/hallway/primary/tram/right) "dlU" = ( /obj/machinery/rnd/production/protolathe/department/engineering, +/obj/effect/turf_decal/trimline/yellow/filled/end{ + dir = 8 + }, /turf/open/floor/iron, /area/engineering/break_room) "dmb" = ( @@ -20037,6 +20050,17 @@ /obj/effect/turf_decal/bot, /turf/open/floor/iron/white, /area/medical/storage) +"duA" = ( +/obj/structure/cable, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/red/filled/warning{ + dir = 10 + }, +/obj/machinery/modular_computer/console/preset/cargochat/security, +/turf/open/floor/iron, +/area/security/office) "duJ" = ( /obj/structure/table, /obj/effect/turf_decal/trimline/yellow/filled/line{ @@ -20122,18 +20146,15 @@ /turf/open/floor/iron/dark, /area/service/bar) "dvM" = ( -/obj/structure/table, /obj/structure/cable, /obj/machinery/navbeacon/wayfinding/engineering, -/obj/item/book/manual/wiki/engineering_hacking{ - pixel_x = 2; - pixel_y = 3 - }, -/obj/item/book/manual/wiki/engineering_guide{ - pixel_x = -2 - }, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/machinery/modular_computer/console/preset/cargochat/engineering{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/yellow/filled/warning, /turf/open/floor/iron, /area/engineering/break_room) "dvQ" = ( @@ -25928,7 +25949,20 @@ /turf/open/floor/iron, /area/engineering/engine_smes) "fNC" = ( -/obj/structure/chair/stool, +/obj/structure/table, +/obj/item/book/manual/wiki/engineering_hacking{ + pixel_x = 2; + pixel_y = 3 + }, +/obj/item/book/manual/wiki/engineering_guide{ + pixel_x = -2 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 9 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 9 + }, /turf/open/floor/iron, /area/engineering/break_room) "fNJ" = ( @@ -29042,6 +29076,22 @@ }, /turf/open/floor/wood, /area/service/library) +"hbz" = ( +/obj/machinery/modular_computer/console/preset/cargochat/science{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/science/research) "hbS" = ( /obj/effect/turf_decal/trimline/blue/filled/line, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4{ @@ -30987,6 +31037,12 @@ /obj/structure/cable, /turf/open/floor/iron, /area/engineering/atmos) +"hLj" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/structure/cable, +/obj/machinery/power/apc/auto_name/south, +/turf/open/floor/iron/dark, +/area/service/hydroponics) "hLl" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 @@ -31170,6 +31226,9 @@ dir = 4 }, /obj/effect/landmark/start/cargo_technician, +/obj/structure/chair/office{ + dir = 1 + }, /turf/open/floor/iron, /area/cargo/office) "hPF" = ( @@ -31974,11 +32033,14 @@ /turf/open/floor/iron, /area/commons/dorms) "ijq" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 1 +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 }, -/obj/machinery/medical_kiosk, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/blue/filled/warning{ + dir = 10 + }, +/obj/machinery/modular_computer/console/preset/cargochat/medical, +/turf/open/floor/iron, /area/medical/medbay/central) "ijL" = ( /obj/structure/closet/crate, @@ -42047,7 +42109,18 @@ dir = 4 }, /obj/structure/cable, +/obj/item/paper_bin{ + pixel_x = -3; + pixel_y = 7 + }, +/obj/item/pen, /obj/item/airlock_painter, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 6 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 6 + }, /turf/open/floor/iron, /area/engineering/break_room) "mkm" = ( @@ -45843,6 +45916,22 @@ }, /turf/open/floor/iron, /area/engineering/atmos) +"nQJ" = ( +/obj/structure/window/reinforced, +/obj/structure/table, +/obj/item/flashlight/lamp, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/science/research) "nQP" = ( /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 @@ -46881,6 +46970,7 @@ dir = 6; network = list("ss13","cargo") }, +/obj/item/multitool, /turf/open/floor/iron, /area/cargo/office) "ole" = ( @@ -50763,6 +50853,23 @@ }, /turf/open/floor/iron, /area/engineering/break_room) +"pLT" = ( +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/science/research) "pLY" = ( /obj/effect/turf_decal/trimline/brown/filled/corner, /obj/structure/disposalpipe/segment, @@ -52044,11 +52151,10 @@ /turf/open/floor/iron/white, /area/security/brig) "qqw" = ( -/obj/structure/table, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 1 }, -/obj/item/multitool, +/obj/machinery/computer/cargo, /turf/open/floor/iron, /area/cargo/office) "qqM" = ( @@ -52387,6 +52493,13 @@ }, /turf/open/floor/circuit, /area/ai_monitored/turret_protected/ai) +"qxK" = ( +/obj/effect/turf_decal/trimline/green/filled/line, +/obj/machinery/computer/cargo/request{ + dir = 1 + }, +/turf/open/floor/iron/dark, +/area/service/hydroponics) "qyb" = ( /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2{ dir = 5 @@ -53126,6 +53239,12 @@ pixel_y = 6 }, /obj/item/reagent_containers/food/drinks/soda_cans/thirteenloko, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 10 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 10 + }, /turf/open/floor/iron, /area/engineering/break_room) "qMv" = ( @@ -54765,12 +54884,15 @@ /turf/open/floor/plating, /area/maintenance/central/secondary) "ruX" = ( -/obj/machinery/computer/cargo/request{ - dir = 8 - }, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 5 }, +/obj/structure/table, +/obj/item/paper_bin{ + pixel_x = -2; + pixel_y = 4 + }, +/obj/item/pen, /turf/open/floor/iron, /area/cargo/office) "rvc" = ( @@ -55333,6 +55455,9 @@ /area/science/research) "rFc" = ( /obj/machinery/rnd/production/circuit_imprinter, +/obj/effect/turf_decal/trimline/yellow/filled/end{ + dir = 4 + }, /turf/open/floor/iron, /area/engineering/break_room) "rFf" = ( @@ -57322,6 +57447,13 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /turf/open/floor/circuit, /area/ai_monitored/command/nuke_storage) +"ssQ" = ( +/mob/living/simple_animal/hostile/lizard/space{ + dir = 4; + name = "Stuck-In-Rock" + }, +/turf/open/floor/plating/asteroid/airless, +/area/mine/explored) "ssR" = ( /obj/machinery/mech_bay_recharge_port{ dir = 8 @@ -58152,11 +58284,10 @@ /turf/open/floor/wood, /area/commons/vacant_room/office) "sMu" = ( -/obj/effect/turf_decal/trimline/blue/filled/line{ - dir = 5 - }, -/obj/item/kirbyplants/random, -/turf/open/floor/iron/white, +/obj/effect/turf_decal/trimline/brown/filled/line, +/obj/effect/turf_decal/trimline/blue/filled/warning, +/obj/machinery/computer/cargo/request, +/turf/open/floor/iron, /area/medical/medbay/central) "sMM" = ( /obj/machinery/door/poddoor/massdriver_toxins, @@ -64994,6 +65125,10 @@ /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/trimline/yellow/filled/line{ + dir = 1 + }, +/obj/effect/turf_decal/trimline/yellow/filled/line, /turf/open/floor/iron, /area/engineering/break_room) "voD" = ( @@ -66166,6 +66301,19 @@ /obj/structure/cable, /turf/open/floor/iron, /area/engineering/break_room) +"vNE" = ( +/obj/structure/disposalpipe/segment, +/obj/effect/turf_decal/trimline/purple/filled/line{ + dir = 8 + }, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/sign/departments/mait{ + pixel_x = -32 + }, +/turf/open/floor/iron/white, +/area/science/research) "vNK" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 8 @@ -66936,6 +67084,9 @@ /obj/structure/disposalpipe/segment, /turf/open/floor/iron, /area/hallway/primary/port) +"wcv" = ( +/turf/closed/wall/r_wall, +/area/mine/explored) "wcK" = ( /obj/effect/turf_decal/stripes/corner{ dir = 8 @@ -67353,7 +67504,7 @@ /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, -/obj/item/kirbyplants/random, +/obj/machinery/medical_kiosk, /turf/open/floor/iron/white, /area/medical/medbay/central) "wjB" = ( @@ -67467,6 +67618,20 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/port/fore) +"wmE" = ( +/obj/structure/window/reinforced, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/science/research) "wmH" = ( /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 4 @@ -71559,6 +71724,18 @@ }, /turf/open/openspace, /area/hallway/primary/tram/center) +"xLP" = ( +/obj/machinery/computer/cargo/request{ + dir = 8 + }, +/obj/effect/turf_decal/trimline/brown/filled/line{ + dir = 5 + }, +/obj/effect/turf_decal/trimline/yellow/filled/warning{ + dir = 5 + }, +/turf/open/floor/iron, +/area/engineering/break_room) "xLT" = ( /turf/open/floor/engine, /area/science/explab) @@ -71896,6 +72073,26 @@ /obj/effect/decal/cleanable/dirt, /turf/open/floor/plating, /area/maintenance/tram/mid) +"xRS" = ( +/obj/structure/window/reinforced{ + dir = 1; + pixel_y = 1 + }, +/obj/machinery/computer/cargo/request{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown, +/obj/effect/turf_decal/tile/brown{ + dir = 8 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 4 + }, +/obj/effect/turf_decal/tile/brown{ + dir = 1 + }, +/turf/open/floor/iron, +/area/science/research) "xRY" = ( /obj/item/radio/intercom{ pixel_y = -29 @@ -72564,6 +72761,20 @@ /obj/item/trash/syndi_cakes, /turf/open/floor/iron, /area/maintenance/tram/left) +"ydX" = ( +/obj/structure/disposalpipe/segment, +/obj/structure/cable, +/obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, +/obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, +/obj/structure/ladder, +/obj/structure/sign/departments/cargo{ + pixel_x = -32 + }, +/obj/effect/turf_decal/trimline/brown/filled/end{ + dir = 4 + }, +/turf/open/floor/iron, +/area/science/research) "yec" = ( /obj/effect/turf_decal/trimline/yellow/warning, /obj/effect/decal/cleanable/dirt, @@ -105175,7 +105386,7 @@ jyL bhs mEl oaG -fNC +xLP mkc rFc cGs @@ -113150,7 +113361,7 @@ aJy aJy aJy aJy -aae +oJR aJo qnH aJo @@ -113403,15 +113614,15 @@ xqx tOo wGY aae -aae -aBM +cZx +pLT aZC +wmE aBM -aae aJo qnH aJo -aae +aBM aae lQG lPd @@ -113660,16 +113871,16 @@ dpv lWK wGY aae -aBM -aBM -aBM -iox +ieJ +xRS +hbz +nQJ aBM aJo qnH aJo -aae -aae +ssQ +aBM lQG eWI cVq @@ -113920,13 +114131,13 @@ der der der der -aBM -aae +wcv +dVo aJo qnH aJo -aae -aae +iox +aBM lQG ezA wos @@ -114182,7 +114393,7 @@ aae aJo qnH aJo -aae +aBM aae lQG lPd @@ -159363,7 +159574,7 @@ aCc ajo sUz nqs -aQg +qxK amK aGY adp @@ -160391,7 +160602,7 @@ mMK ayr gXp pbS -aQg +hLj amK acW hFl @@ -173219,7 +173430,7 @@ fAM roQ dPO ajp -ajx +duA nBV jSw gAL @@ -178939,9 +179150,9 @@ eaF eaF eaF eaF -eaF +vNE vEw -eaF +ydX eaF eaF eaF diff --git a/code/__DEFINES/dcs/signals.dm b/code/__DEFINES/dcs/signals.dm index 2c02936589b..de15296025f 100644 --- a/code/__DEFINES/dcs/signals.dm +++ b/code/__DEFINES/dcs/signals.dm @@ -293,6 +293,11 @@ ///Called right after the atom changes the value of light_flags to a different one, from base of [/atom/proc/set_light_flags]: (old_flags) #define COMSIG_ATOM_UPDATE_LIGHT_FLAGS "atom_update_light_flags" +///signal sent out by an atom when it checks if it can be pulled, for additional checks +#define COMSIG_ATOM_CAN_BE_PULLED "movable_can_be_pulled" + #define COMSIG_ATOM_CANT_PULL (1 << 0) +///signal sent out by an atom when it is no longer being pulled by something else +#define COMSIG_ATOM_NO_LONGER_PULLED "movable_no_longer_pulled" ///called for each movable in a turf contents on /turf/zImpact(): (atom/movable/A, levels) #define COMSIG_ATOM_INTERCEPT_Z_FALL "movable_intercept_z_impact" ///called on a movable (NOT living) when it starts pulling (atom/movable/pulled, state, force) diff --git a/code/datums/components/strong_pull.dm b/code/datums/components/strong_pull.dm new file mode 100644 index 00000000000..c9ac73af8a2 --- /dev/null +++ b/code/datums/components/strong_pull.dm @@ -0,0 +1,43 @@ + +/* +This component attaches to mobs, and makes their pulls !strong! +Basically, the items they pull cannot be pulled (except by the puller) +*/ +/datum/component/strong_pull + var/atom/movable/strongpulling + +/datum/component/strong_pull/Initialize() + if(!isliving(parent)) + return COMPONENT_INCOMPATIBLE + RegisterSignal(parent, COMSIG_LIVING_START_PULL, .proc/on_pull) + +/** + * Called when the parent grabs something, adds signals to the object to reject interactions + */ +/datum/component/strong_pull/proc/on_pull(datum/source, atom/movable/pulled, state, force) + SIGNAL_HANDLER + strongpulling = pulled + RegisterSignal(strongpulling, COMSIG_ATOM_CAN_BE_PULLED, .proc/reject_further_pulls) + RegisterSignal(strongpulling, COMSIG_ATOM_NO_LONGER_PULLED, .proc/lost_strong_grip) + if(istype(strongpulling, /obj/structure/closet) && !istype(strongpulling, /obj/structure/closet/body_bag)) + var/obj/structure/closet/grabbed_closet = strongpulling + grabbed_closet.strong_grab = TRUE + +/** + * Signal for rejecting further grabs + */ +/datum/component/strong_pull/proc/reject_further_pulls(datum/source, mob/living/puller) + SIGNAL_HANDLER + if(puller != parent)//for increasing grabs, you need to have a valid pull. thus, parent should be able to pull the same object again + return COMSIG_ATOM_CANT_PULL + +/** + * Called when the hooked object is no longer pulled, and unhooks it + */ +/datum/component/strong_pull/proc/lost_strong_grip(datum/source, atom/movable/last_puller) + SIGNAL_HANDLER + UnregisterSignal(strongpulling, list(COMSIG_ATOM_CAN_BE_PULLED, COMSIG_ATOM_NO_LONGER_PULLED)) + if(istype(strongpulling, /obj/structure/closet)) + var/obj/structure/closet/ungrabbed_closet = strongpulling + ungrabbed_closet.strong_grab = FALSE + strongpulling = null diff --git a/code/game/atoms_movable.dm b/code/game/atoms_movable.dm index 3436ff17fc3..4e168d30bc7 100644 --- a/code/game/atoms_movable.dm +++ b/code/game/atoms_movable.dm @@ -284,6 +284,7 @@ /atom/movable/proc/stop_pulling() if(pulling) + SEND_SIGNAL(pulling, COMSIG_ATOM_NO_LONGER_PULLED, src) pulling.set_pulledby(null) setGrabState(GRAB_PASSIVE) pulling = null @@ -1058,6 +1059,8 @@ /atom/movable/proc/can_be_pulled(user, grab_state, force) if(src == user || !isturf(loc)) return FALSE + if(SEND_SIGNAL(src, COMSIG_ATOM_CAN_BE_PULLED, user) & COMSIG_ATOM_CANT_PULL) + return FALSE if(anchored || throwing) return FALSE if(force < (move_resist * MOVE_FORCE_PULL_RATIO)) diff --git a/code/game/objects/structures/crates_lockers/closets.dm b/code/game/objects/structures/crates_lockers/closets.dm index 552659aa155..4b01a11f60f 100644 --- a/code/game/objects/structures/crates_lockers/closets.dm +++ b/code/game/objects/structures/crates_lockers/closets.dm @@ -41,6 +41,8 @@ var/icon_welded = "welded" /// Whether a skittish person can dive inside this closet. Disable if opening the closet causes "bad things" to happen or that it leads to a logical inconsistency. var/divable = TRUE + /// true whenever someone with the strong pull component is dragging this, preventing opening + var/strong_grab = FALSE /obj/structure/closet/Initialize(mapload) if(mapload && !opened) // if closed, any item at the crate's loc is put in the contents @@ -115,11 +117,14 @@ return TRUE if(welded || locked) return FALSE + if(strong_grab) + to_chat(user, "[pulledby] has an incredibly strong grip on [src], preventing it from opening.") + return FALSE var/turf/T = get_turf(src) for(var/mob/living/L in T) if(L.anchored || horizontal && L.mob_size > MOB_SIZE_TINY && L.density) if(user) - to_chat(user, "There's something large on top of [src], preventing it from opening." ) + to_chat(user, "There's something large on top of [src], preventing it from opening.") return FALSE return TRUE diff --git a/code/modules/clothing/gloves/special.dm b/code/modules/clothing/gloves/special.dm new file mode 100644 index 00000000000..7a7d773054d --- /dev/null +++ b/code/modules/clothing/gloves/special.dm @@ -0,0 +1,24 @@ + +/obj/item/clothing/gloves/cargo_gauntlet + name = "\improper H.A.U.L. gauntlets" + desc = "These clunky gauntlets allow you to drag things with more confidence on them not getting nabbed from you." + icon_state = "haul_gauntlet" + inhand_icon_state = "bgloves" + transfer_prints = FALSE + equip_delay_self = 3 SECONDS + equip_delay_other = 4 SECONDS + clothing_traits = list(TRAIT_CHUNKYFINGERS) + undyeable = TRUE + var/datum/component/strong_pull/pull_component + +/obj/item/clothing/gloves/cargo_gauntlet/equipped(mob/user, slot) + . = ..() + if(slot != ITEM_SLOT_GLOVES) + return + to_chat(user, "You feel the gauntlets activate as soon as you fit them on, making your pulls stronger!") + pull_component = user.AddComponent(/datum/component/strong_pull) + +/obj/item/clothing/gloves/cargo_gauntlet/dropped(mob/user) + . = ..() + to_chat(user, "You have lost the grip power of [src]!") + QDEL_NULL(pull_component) diff --git a/code/modules/jobs/job_types/cargo_technician.dm b/code/modules/jobs/job_types/cargo_technician.dm index 1aead01edad..da781bd2979 100644 --- a/code/modules/jobs/job_types/cargo_technician.dm +++ b/code/modules/jobs/job_types/cargo_technician.dm @@ -34,5 +34,5 @@ ears = /obj/item/radio/headset/headset_cargo uniform = /obj/item/clothing/under/rank/cargo/tech l_hand = /obj/item/export_scanner - backpack_contents = list(/obj/item/modular_computer/tablet/preset/cargo=1) + backpack_contents = list(/obj/item/modular_computer/tablet/preset/cargo = 1) id_trim = /datum/id_trim/job/cargo_technician diff --git a/code/modules/jobs/job_types/quartermaster.dm b/code/modules/jobs/job_types/quartermaster.dm index 0f1f1a51b72..dd234145cad 100644 --- a/code/modules/jobs/job_types/quartermaster.dm +++ b/code/modules/jobs/job_types/quartermaster.dm @@ -39,7 +39,7 @@ shoes = /obj/item/clothing/shoes/sneakers/brown glasses = /obj/item/clothing/glasses/sunglasses l_hand = /obj/item/clipboard - backpack_contents = list(/obj/item/modular_computer/tablet/preset/cargo=1) + backpack_contents = list(/obj/item/modular_computer/tablet/preset/cargo/quartermaster = 1) chameleon_extras = /obj/item/stamp/qm diff --git a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm index 27eb3a6ae97..5588865ca21 100644 --- a/code/modules/modular_computers/NTNet/NTNRC/conversation.dm +++ b/code/modules/modular_computers/NTNet/NTNRC/conversation.dm @@ -5,7 +5,14 @@ var/title = "Untitled Conversation" var/datum/computer_file/program/chatclient/operator // "Administrator" of this channel. Creator starts as channel's operator, var/list/messages = list() - var/list/clients = list() + ///chat clients who are active or minimized + var/list/active_clients = list() + ///chat clients who have exited out of the program. + var/list/offline_clients = list() + ///clients muted by operator + var/list/muted_clients = list() + //if a channel is strong, it cannot be renamed or deleted. + var/strong = FALSE var/password var/static/ntnrc_uid = 0 @@ -25,12 +32,12 @@ return ..() /datum/ntnet_conversation/proc/add_message(message, username) - message = "[station_time_timestamp()] [username]: [message]" + message = "[station_time_timestamp(format = "hh:mm")] [username]: [message]" messages.Add(message) trim_message_list() /datum/ntnet_conversation/proc/add_status_message(message) - messages.Add("[station_time_timestamp()] -!- [message]") + messages.Add("[station_time_timestamp(format = "hh:mm")] -!- [message]") trim_message_list() /datum/ntnet_conversation/proc/trim_message_list() @@ -38,39 +45,61 @@ return messages = messages.Copy(messages.len-50 ,0) -/datum/ntnet_conversation/proc/add_client(datum/computer_file/program/chatclient/C) - if(!istype(C)) +/datum/ntnet_conversation/proc/add_client(datum/computer_file/program/chatclient/new_user, silent = FALSE) + if(!istype(new_user)) return - clients.Add(C) - add_status_message("[C.username] has joined the channel.") + active_clients.Add(new_user) + if(!silent) + add_status_message("[new_user.username] has joined the channel.") // No operator, so we assume the channel was empty. Assign this user as operator. if(!operator) - changeop(C) + changeop(new_user) -/datum/ntnet_conversation/proc/remove_client(datum/computer_file/program/chatclient/C) - if(!istype(C) || !(C in clients)) +/datum/ntnet_conversation/proc/remove_client(datum/computer_file/program/chatclient/leaving) + if(!istype(leaving) || !(leaving in active_clients)) return - clients.Remove(C) - add_status_message("[C.username] has left the channel.") + active_clients.Remove(leaving) + add_status_message("[leaving.username] has left the channel.") // Channel operator left, pick new operator - if(C == operator) + if(leaving == operator) operator = null - if(clients.len) - var/datum/computer_file/program/chatclient/newop = pick(clients) + if(active_clients.len) + var/datum/computer_file/program/chatclient/newop = pick(active_clients) changeop(newop) +/datum/ntnet_conversation/proc/go_offline(datum/computer_file/program/chatclient/offline) + if(!istype(offline) || !(offline in active_clients)) + return + active_clients.Remove(offline) + offline_clients.Add(offline) + +/datum/ntnet_conversation/proc/mute_user(datum/computer_file/program/chatclient/op, datum/computer_file/program/chatclient/muted) + if(operator != op) //sanity even if the person shouldn't be able to see the mute button + return + if(muted in muted_clients) + muted_clients.Remove(muted) + muted.computer.alert_call(muted, "You have been unmuted from [title]!", 'sound/machines/ping.ogg') + else + muted_clients.Add(muted) + muted.computer.alert_call(muted, "You have been muted from [title]!") + +/datum/ntnet_conversation/proc/ping_user(datum/computer_file/program/chatclient/pinger, datum/computer_file/program/chatclient/pinged) + if(pinger in muted_clients) //oh my god fuck off + return + add_status_message("[pinger.username] pinged [pinged.username].") + pinged.computer.alert_call(pinged, "You have been pinged in [title] by [pinger.username]!", 'sound/machines/ping.ogg') /datum/ntnet_conversation/proc/changeop(datum/computer_file/program/chatclient/newop) if(istype(newop)) operator = newop add_status_message("Channel operator status transferred to [newop.username].") -/datum/ntnet_conversation/proc/change_title(newtitle, datum/computer_file/program/chatclient/client) - if(operator != client) - return FALSE // Not Authorised +/datum/ntnet_conversation/proc/change_title(newtitle, datum/computer_file/program/chatclient/renamer) + if(operator != renamer || strong) + return FALSE // Not Authorised or channel cannot be editted - add_status_message("[client.username] has changed channel title from [title] to [newtitle]") + add_status_message("[renamer.username] has changed channel title from [title] to [newtitle]") title = newtitle #undef MAX_CHANNELS diff --git a/code/modules/modular_computers/computers/item/tablet_presets.dm b/code/modules/modular_computers/computers/item/tablet_presets.dm index f781acd35a4..db2f4d51b3b 100644 --- a/code/modules/modular_computers/computers/item/tablet_presets.dm +++ b/code/modules/modular_computers/computers/item/tablet_presets.dm @@ -30,6 +30,16 @@ install_component(new /obj/item/computer_hardware/network_card) install_component(new /obj/item/computer_hardware/printer/mini) hard_drive.store_file(new /datum/computer_file/program/shipping) + var/datum/computer_file/program/chatclient/chatprogram + chatprogram = new + hard_drive.store_file(chatprogram) + chatprogram.username = get_cargochat_username() + +/obj/item/modular_computer/tablet/preset/cargo/proc/get_cargochat_username() + return "cargonian_[rand(1,999)]" + +/obj/item/modular_computer/tablet/preset/cargo/quartermaster/get_cargochat_username() + return "quartermaster" /obj/item/modular_computer/tablet/preset/advanced/atmos/Initialize() //This will be defunct and will be replaced when NtOS PDAs are done . = ..() diff --git a/code/modules/modular_computers/computers/machinery/console_presets.dm b/code/modules/modular_computers/computers/machinery/console_presets.dm index b1fa926b699..5909faf0767 100644 --- a/code/modules/modular_computers/computers/machinery/console_presets.dm +++ b/code/modules/modular_computers/computers/machinery/console_presets.dm @@ -106,3 +106,68 @@ var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] hard_drive.store_file(new/datum/computer_file/program/chatclient()) hard_drive.store_file(new/datum/computer_file/program/arcade()) + +// ===== CARGO CHAT CONSOLES ===== +/obj/machinery/modular_computer/console/preset/cargochat + name = "cargo chatroom console" + desc = "A stationary computer. This one comes preloaded with a chatroom for your cargo requests." + ///chat client installed on this computer, just helpful for linking all the computers + var/datum/computer_file/program/chatclient/chatprogram + +/obj/machinery/modular_computer/console/preset/cargochat/install_programs() + var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] + chatprogram = new + chatprogram.computer = cpu + hard_drive.store_file(chatprogram) + chatprogram.username = "[lowertext(console_department)]_department" + chatprogram.program_state = PROGRAM_STATE_ACTIVE + cpu.active_program = chatprogram + +//ONE PER MAP PLEASE, IT MAKES A CARGOBUS FOR EACH ONE OF THESE +/obj/machinery/modular_computer/console/preset/cargochat/cargo + console_department = "Cargo" + name = "department chatroom console" + desc = "A stationary computer. This one comes preloaded with a chatroom for incoming cargo requests. You may moderate it from this computer." + +/obj/machinery/modular_computer/console/preset/cargochat/cargo/install_programs() + var/obj/item/computer_hardware/hard_drive/hard_drive = cpu.all_components[MC_HDD] + + //adding chat, setting it as the active window immediately + chatprogram = new + chatprogram.computer = cpu + hard_drive.store_file(chatprogram) + chatprogram.program_state = PROGRAM_STATE_ACTIVE + cpu.active_program = chatprogram + + //setting up chat + chatprogram.username = "cargo_requests_operator" + var/datum/ntnet_conversation/cargochat = new + cargochat.operator = chatprogram //adding operator before joining the chat prevents an unnecessary message about switching op from showing + cargochat.add_client(chatprogram) + cargochat.title = "#cargobus" + cargochat.strong = TRUE + chatprogram.active_channel = cargochat.id + +/obj/machinery/modular_computer/console/preset/cargochat/cargo/LateInitialize() + . = ..() + var/datum/ntnet_conversation/cargochat = SSnetworks.station_network.get_chat_channel_by_id(chatprogram.active_channel) + for(var/obj/machinery/modular_computer/console/preset/cargochat/cargochat_console in GLOB.machines) + if(cargochat_console == src) + continue + cargochat_console.chatprogram.active_channel = chatprogram.active_channel + cargochat.add_client(cargochat_console.chatprogram, silent = TRUE) + +/obj/machinery/modular_computer/console/preset/cargochat/service + console_department = "Service" + +/obj/machinery/modular_computer/console/preset/cargochat/engineering + console_department = "Engineering" + +/obj/machinery/modular_computer/console/preset/cargochat/science + console_department = "Science" + +/obj/machinery/modular_computer/console/preset/cargochat/security + console_department = "Security" + +/obj/machinery/modular_computer/console/preset/cargochat/medical + console_department = "Medical" diff --git a/code/modules/modular_computers/computers/machinery/modular_computer.dm b/code/modules/modular_computers/computers/machinery/modular_computer.dm index 4031126d2f1..1e57e0861a8 100644 --- a/code/modules/modular_computers/computers/machinery/modular_computer.dm +++ b/code/modules/modular_computers/computers/machinery/modular_computer.dm @@ -4,28 +4,41 @@ name = "modular computer" desc = "An advanced computer." - use_power = IDLE_POWER_USE - idle_power_usage = 5 - var/hardware_flag = 0 // A flag that describes this device type - var/last_power_usage = 0 // Power usage during last tick - // Modular computers can run on various devices. Each DEVICE (Laptop, Console, Tablet,..) // must have it's own DMI file. Icon states must be called exactly the same in all files, but may look differently // If you create a program which is limited to Laptops and Consoles you don't have to add it's icon_state overlay for Tablets too, for example. - icon = null icon_state = null - var/icon_state_unpowered = null // Icon state when the computer is turned off. - var/icon_state_powered = null // Icon state when the computer is turned on. - var/screen_icon_state_menu = "menu" // Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. - var/screen_icon_screensaver = "standby" // Icon state overlay when the computer is powered, but not 'switched on'. - var/max_hardware_size = 0 // Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed. - var/steel_sheet_cost = 10 // Amount of steel sheets refunded when disassembling an empty frame of this computer. - var/light_strength = 0 // Light luminosity when turned on - var/base_active_power_usage = 100 // Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too. - var/base_idle_power_usage = 10 // Power usage when the computer is idle and screen is off (currently only applies to laptops) - var/obj/item/modular_computer/processor/cpu = null // CPU that handles most logic while this type only handles power and other specific things. + use_power = IDLE_POWER_USE + idle_power_usage = 5 + ///A flag that describes this device type + var/hardware_flag = 0 + ///Power usage during last tick + var/last_power_usage = 0 + + + ///Icon state when the computer is turned off. + var/icon_state_unpowered = null + ///Icon state when the computer is turned on. + var/icon_state_powered = null + ///Icon state overlay when the computer is turned on, but no program is loaded that would override the screen. + var/screen_icon_state_menu = "menu" + ///Icon state overlay when the computer is powered, but not 'switched on'. + var/screen_icon_screensaver = "standby" + ///Maximal hardware size. Currently, tablets have 1, laptops 2 and consoles 3. Limits what hardware types can be installed. + var/max_hardware_size = 0 + ///Amount of steel sheets refunded when disassembling an empty frame of this computer. + var/steel_sheet_cost = 10 + ///Light luminosity when turned on + var/light_strength = 0 + ///Power usage when the computer is open (screen is active) and can be interacted with. Remember hardware can use power too. + var/base_active_power_usage = 100 + ///Power usage when the computer is idle and screen is off (currently only applies to laptops) + var/base_idle_power_usage = 10 + + ///CPU that handles most logic while this type only handles power and other specific things. + var/obj/item/modular_computer/processor/cpu = null /obj/machinery/modular_computer/Initialize() . = ..() diff --git a/code/modules/modular_computers/computers/machinery/modular_console.dm b/code/modules/modular_computers/computers/machinery/modular_console.dm index 93dc5b303c2..aa6108fcbde 100644 --- a/code/modules/modular_computers/computers/machinery/modular_console.dm +++ b/code/modules/modular_computers/computers/machinery/modular_console.dm @@ -16,7 +16,8 @@ light_strength = 2 max_integrity = 300 integrity_failure = 0.5 - var/console_department = "" // Used in New() to set network tag according to our area. + ///Used in New() to set network tag according to our area. + var/console_department = "" /obj/machinery/modular_computer/console/buildable/Initialize() . = ..() diff --git a/code/modules/modular_computers/file_system/program.dm b/code/modules/modular_computers/file_system/program.dm index dc485262f15..a36da232db3 100644 --- a/code/modules/modular_computers/file_system/program.dm +++ b/code/modules/modular_computers/file_system/program.dm @@ -27,10 +27,10 @@ var/ntnet_status = 1 /// Bitflags (PROGRAM_CONSOLE, PROGRAM_LAPTOP, PROGRAM_TABLET combination) or PROGRAM_ALL var/usage_flags = PROGRAM_ALL - /// Whether the program can be downloaded from NTNet. Set to 0 to disable. - var/available_on_ntnet = 1 - /// Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to 1 to enable. - var/available_on_syndinet = 0 + /// Whether the program can be downloaded from NTNet. Set to FALSE to disable. + var/available_on_ntnet = TRUE + /// Whether the program can be downloaded from SyndiNet (accessible via emagging the computer). Set to TRUE to enable. + var/available_on_syndinet = FALSE /// Name of the tgui interface var/tgui_id /// Example: "something.gif" - a header image that will be rendered in computer's UI when this program is running at background. Images are taken from /icons/program_icons. Be careful not to use too large images! diff --git a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm index 8779414e397..a4201e4b6a5 100644 --- a/code/modules/modular_computers/file_system/programs/ntnrc_client.dm +++ b/code/modules/modular_computers/file_system/programs/ntnrc_client.dm @@ -1,3 +1,4 @@ + /datum/computer_file/program/chatclient filename = "ntnrc_client" filedesc = "Chat Client" @@ -5,12 +6,13 @@ program_icon_state = "command" extended_desc = "This program allows communication over NTNRC network" size = 8 - requires_ntnet = 1 + requires_ntnet = TRUE requires_ntnet_feature = NTNET_COMMUNICATION ui_header = "ntnrc_idle.gif" - available_on_ntnet = 1 + available_on_ntnet = TRUE tgui_id = "NtosNetChat" program_icon = "comment-alt" + alert_able = TRUE var/last_message // Used to generate the toolbar icon var/username var/active_channel @@ -37,7 +39,7 @@ var/message = reject_bad_text(params["message"]) if(!message) return - if(channel.password && !(src in channel.clients)) + if(channel.password && (!(src in channel.active_clients) && !(src in channel.offline_clients))) if(channel.password == message) channel.add_client(src) return TRUE @@ -57,7 +59,7 @@ active_channel = new_target channel = SSnetworks.station_network.get_chat_channel_by_id(new_target) - if(!(src in channel.clients) && !channel.password) + if((!(src in channel.active_clients) && !(src in channel.offline_clients)) && !channel.password) channel.add_client(src) return TRUE if("PRG_leavechannel") @@ -90,12 +92,12 @@ return TRUE if("PRG_changename") var/newname = sanitize(params["new_name"]) - if(!newname) + newname = replacetext(newname, " ", "_") + if(!newname || newname == username) return - for(var/C in SSnetworks.station_network.chat_channels) - var/datum/ntnet_conversation/chan = C - if(src in chan.clients) - chan.add_status_message("[username] is now known as [newname].") + for(var/datum/ntnet_conversation/anychannel as anything in SSnetworks.station_network.chat_channels) + if(src in anychannel.active_clients) + anychannel.add_status_message("[username] is now known as [newname].") username = newname return TRUE if("PRG_savelog") @@ -146,6 +148,18 @@ channel.password = new_password return TRUE + if("PRG_mute_user") + if(!authed) + return + var/datum/computer_file/program/chatclient/muted = locate(params["ref"]) in channel.active_clients + channel.offline_clients + channel.mute_user(src, muted) + return TRUE + if("PRG_ping_user") + if(!authed) + return + var/datum/computer_file/program/chatclient/pinged = locate(params["ref"]) in channel.active_clients + channel.offline_clients + channel.ping_user(src, pinged) + return TRUE /datum/computer_file/program/chatclient/process_tick() . = ..() @@ -163,10 +177,19 @@ else ui_header = "ntnrc_idle.gif" +/datum/computer_file/program/chatclient/run_program(mob/living/user) + . = ..() + if(!.) + return + for(var/datum/ntnet_conversation/channel as anything in SSnetworks.station_network.chat_channels) + if(src in channel.offline_clients) + channel.offline_clients.Remove(src) + channel.active_clients.Add(src) + /datum/computer_file/program/chatclient/kill_program(forced = FALSE) - for(var/C in SSnetworks.station_network.chat_channels) - var/datum/ntnet_conversation/channel = C - channel.remove_client(src) + for(var/datum/ntnet_conversation/channel as anything in SSnetworks.station_network.chat_channels) + channel.go_offline(src) + active_channel = null ..() /datum/computer_file/program/chatclient/ui_static_data(mob/user) @@ -193,6 +216,7 @@ data["all_channels"] = all_channels data["active_channel"] = active_channel + data["selfref"] = REF(src) //used to verify who is you, as usernames can be copied. data["username"] = username data["adminmode"] = netadmin_mode var/datum/ntnet_conversation/channel = SSnetworks.station_network.get_chat_channel_by_id(active_channel) @@ -204,21 +228,25 @@ if(netadmin_mode) authed = TRUE var/list/clients = list() - for(var/C in channel.clients) - if(C == src) + for(var/datum/computer_file/program/chatclient/channel_client as anything in channel.active_clients + channel.offline_clients) + if(channel_client == src) authed = TRUE - var/datum/computer_file/program/chatclient/cl = C clients.Add(list(list( - "name" = cl.username + "name" = channel_client.username, + "status" = channel_client.program_state, + "muted" = (channel_client in channel.muted_clients), + "operator" = channel.operator == channel_client, + "ref" = REF(channel_client) ))) data["authed"] = authed //no fishing for ui data allowed if(authed) + data["strong"] = channel.strong data["clients"] = clients var/list/messages = list() - for(var/M in channel.messages) + for(var/message in channel.messages) messages.Add(list(list( - "msg" = M + "msg" = message ))) data["messages"] = messages data["is_operator"] = (channel.operator == src) || netadmin_mode diff --git a/icons/mob/clothing/hands.dmi b/icons/mob/clothing/hands.dmi index e577ce1fc77ca15d18d182020413481a0a4e2f0e..ba080c9a8c9afb857bb25c51d34464acbc5aa663 100644 GIT binary patch literal 16615 zcmcJ02Ut@}yDn}EzXjcHL=*(vND&ZGX;PyiLZn1`2NeMU0qG@>Y%3xH(hXJVgc9k} z5)~2Yok&Zhh7dx45JD1?+!go!%enWSbD#e_=dK6VnlqTsFf-n0$P@uo0HFLD$^^T?0HH26_7V^6`ab#f??P zPhL30H=w~eFyq@RYwSD z>>oC`jLywa@cMmb;5k;wC3E^ll$f3kruAP~5X}3(hl;JB{I)5hm7!nXxwo;A11 z7gmMHXNvU~OP&+@cGSf8OJ`?O%S14Apx^~=G&@!Ng`n5hyTXHYW@bO`DYxTPx{rr5{)2pW#FPe@oiB&N9(P6p^g3SS!Z;5z!1?U@?9g{?o@1|Y$$s5-A)TQcLhew3P zS%f^ecIS7k{cdI-Vx5rEdWbtA#*ct{iBG9ZWLp;|FV_m+Mr--(F`2FX7SqCdrfIbP zwN=sX*l4F#=?^aYoTwH#&%Cv<gCG90ilXBjER+qo`*+#F0UM6wQ+KD|JE_S0`A*#Q|X$msAip@;a*(o|Jd3r=XT=k zZ}((nD@$KI;|HmN)O#@l~Rw6?byw8iG;N+|3e*g3#zE?>;1Y#T{%EUpXLK! zziJtlMV^92ItFKR*Xf+C{DiwKb|fyBf{-FyvXBNU@$VlOx|T=Fa@D_Tb60BmbukgNWkU9tHVe2B zbv=c>=Z#KBJpN`pruB{eRU&*aavL$dIE7b1Y@bmQDOM$LiaL2&@!r*{_-^B?_hd+7 z^DsF3yX)5zt~pU#b~O<+FN0Pal(P@-&h?eQV{!$<+5Lc|vK=Ln#iqF?Ffv+~51$;C zp?*y8>Nx`cHF$&-4SJEm53_VN&g?;IrHpAK`XH(nc^ux`0olSje3s=w`@^RO^7La> ze5WoO2z11W7VF0zFJ1V!tD)we8(KnnFVS*^zO!*nKi|y2JAbgGPf1BTe?!n;+2ZwM zoL>=!dnudJVSM#K1jZrcdC;(Gb5O{=fk9@?nI}!e45x`|<)9n$vYB%B7J|0VEe10( zYPT}ey*?$@tC6SbjQCH%9*JFkc!h*T+34#(D}Ge1h)+N~KDG&?haOq#t%TJzG-%o5 zakxr?RJK#fh7qau8{M_&^xj51=h35AFs_>>9))uaIorzCFQlNwCPk`s zJTboxbHMxa0}t7i;osrqh>1}00hP9xEvM$k(-femoIv(l=0F=FmMGS*sb7FDq2;?N zsg7sl#&CT1YV`jUxk>-0NO_Z9yaZ+vw*92UF9ENdO~L;B?0+99|IZQyZ8x{l|8|)qU%GhQ6N4ZvMX1UaZ*59k|lvEDBHZ zUZG)})JrgE{5I3RKvRa7mDNMk&%?pQDT7{87ILMAL*n3O^PQIW-ZJ3jq@ZtiOsbvh zk|K2Gg$*YV?yzb^y!<-HOKL9Ey&9+5;gWC8z~C7KMU|PnU-Y|UM_cHx)zE7lDXoOu zh5<`Rxh0fzF*t;#iR>KPxuQVl6)ERSlsogp2Ru^tmjz4TRL=m?T(eDnDAdscRh>_BgF(qtDn)zW8LM5G&vS5XivT%^l zhaROh4S21yK=wn0-F^O_bs6-1BOrU{@~&@TR*<0j$>o?-j(gFi}`?%Gc3M~p-=B9h+SS@ zGScUdUtB_G!WSI2(CKk9J@t+YkT*V_`0h_me1@(Pg2jOm7p-%0JD|1Z0y?|Gke|kx z#Ujtg(wQl6OFdb2bw+Ck>2Z+d(DOaY z4Wl);NI&q}tCNSEH=YcQMqN*;B~w9TInz+VMSf{BicT}#Ymxwu{QLmz_27XD0KZCD zMnoylJI0%#3g5!f{xxoD94V|7B@Wc7ivKXa;g(}eV5wTX{$<+l$t#ih%7*le2fh8* z;SIlJd2qrH_U=%RH!YJ3WgMu22n}!hx9sT*IPRKq;8<-rg8%

xw>KN8FD!5bfp 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�yrU}eyX@%WC39l+_5j87gHvvoa_}ltKmG9N-gZn7a`w)AzWjI=i`zLiVyx(uR`3^B z=hSo;88Tg_-}|z3;!i5^qkBZa2nB|MEJ*X%>5G&wr(2I#c)>e9CnJ)I;Vy&+t*w2P z)H8T;r%&I#zc{|Dy+Jc`mkz=-maFU!9E8a!GtDA38NSf)(#|5@RzFC7rE0!J8Nb^WOaX+vH$QTTc(FodpFCO+|m!j>50ki3DApW$z-rDB8OU@QJfcM)0jDXRx zvE>Cthf|~HY(LyOqP_OVVKH6pmgpe&_i?)7<6rt+5A*#oyZ(V!O=E5G&`8NTND3?~ zvUO8lPVV9vf~hQAMX6)X(va}R;i|x1zRNn&nu)b_b%ok4!178taM9Rjy2%RI&=c>K z)O*XxNwL|*!os4<*_p64ghkkBK}W?d6`3qPk{Ep>!8yHLLI<|Hsvg-X`T9l;VHJ9|;?KQQ z*V#{i{kDMYfd?21Z!Z&e3q!`*%B^T@L^JY8{n!^I(iq5!_x^g95YgEHhsc7)ja_Mw z(Ed)T($doLAj@>3EFbWKo^OrAoe&j>wm2lh_;KVOkhQZW5TfhB*HxLD zpF|%)t}r#?MVg!_1-YtaBUW+1sbS~(U-%q9Ib?!e85&Q#YC!4-f*XpwLp;0t22LjC zJ}A0xVghW-()afIWs=hC9sB%Jp0t;rU!dhM4p(%)cK&GuDvxe#2?m!I?<6Ie>r)VK ztYM!KdD2bcK7(tHF&j^kN*Y?Rnb_mfS+Y(*LpPBsn^mCkHMvT{E|FEMO{DWqk?ZZq z%1Tp(=B6g*QT=bwXbDYn@vV)dSlY9YaNY*09qm6ZFf%0+GO*ksvh4|`VGdt9(y zalTS{==6YR1>0)-RTtzQ8THvdyu0!hh~ofUK5nrRgvD=73h#5w9hsP%9NBudi#_*@ ze@OI4H#wpaHwh*$Fn=R#vj*o9kka(%6oUWG#DjXZlfn9#VJHNN2 zH#``esPne6u_=DU;nZ&MGg&~IAO~OQN=25J7%G4gEjzvtvz&JVXvHWT zc`o~PxVIM-qL}Q_Fo)38{A#r;y_7TKmK3PmMw|^ literal 16139 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 D$TJz- diff --git a/icons/obj/clothing/gloves.dmi b/icons/obj/clothing/gloves.dmi index 7f3a028b9337ea8e291bf674e4e25f2ea9618a3f..98e7ff9d204eb67d5a8abe0eb7dfb71dd1547ab7 100644 GIT binary patch delta 7160 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 delta 6907 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 Tpg?yS2zRI|YAKY-TfY4-;N5Kw diff --git a/tgstation.dme b/tgstation.dme index 32df6b0d183..53204781f6c 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -548,6 +548,7 @@ #include "code\datums\components\squeak.dm" #include "code\datums\components\stationloving.dm" #include "code\datums\components\stationstuck.dm" +#include "code\datums\components\strong_pull.dm" #include "code\datums\components\summoning.dm" #include "code\datums\components\surgery_initiator.dm" #include "code\datums\components\swabbing.dm" @@ -1961,6 +1962,7 @@ #include "code\modules\clothing\gloves\boxing.dm" #include "code\modules\clothing\gloves\color.dm" #include "code\modules\clothing\gloves\miscellaneous.dm" +#include "code\modules\clothing\gloves\special.dm" #include "code\modules\clothing\gloves\tacklers.dm" #include "code\modules\clothing\head\_head.dm" #include "code\modules\clothing\head\beanie.dm" diff --git a/tgui/packages/tgui/interfaces/NtosNetChat.js b/tgui/packages/tgui/interfaces/NtosNetChat.js index 6e70c8cd15e..56def6773f3 100644 --- a/tgui/packages/tgui/interfaces/NtosNetChat.js +++ b/tgui/packages/tgui/interfaces/NtosNetChat.js @@ -1,38 +1,114 @@ import { useBackend } from '../backend'; -import { Box, Button, Icon, Input, Section, Table } from '../components'; +import { Box, Button, Dimmer, Icon, Input, Section, Stack, Table, Tooltip } from '../components'; import { NtosWindow } from '../layouts'; +import { StackingConsole } from './StackingConsole'; + +// byond defines for the program state +const CLIENT_ONLINE = 2; +const CLIENT_AWAY = 1; +const CLIENT_OFFLINE = 0; + +const STATUS2TEXT = { + 0: "Offline", + 1: "Away", + 2: "Online", +}; + +const NoChannelDimmer = (props, context) => { + const { act, data } = useBackend(context); + const { owner } = data; + return ( + + + + + + + + + + + + + + + + + Click a channel to start chatting! + + + (If you're new, you may wannaa set your name in the bottom left!) + + + + ); +}; export const NtosNetChat = (props, context) => { const { act, data } = useBackend(context); const { + title, can_admin, adminmode, authed, username, active_channel, is_operator, + strong, + selfref, all_channels = [], clients = [], messages = [], } = data; const in_channel = (active_channel !== null); const authorized = (authed || adminmode); + // this list has cliented ordered from their status. online > away > offline + const displayed_clients = clients.sort((clientA, clientB) => { + if (clientA.operator) { + return -1; + } + if (clientB.operator) { + return 1; + } + return clientB.status - clientA.status; + }); + const client_color = (client) => { + if (client.operator) { + return "green"; + } + switch (client.status) { + case CLIENT_ONLINE: + return "white"; + case CLIENT_AWAY: + return "yellow"; + case CLIENT_OFFLINE: + default: + return "label"; + } + }; + // client from this computer! + const this_client = clients.find(client => client.ref === selfref); return ( -
- - - - + + +
+ + { id: channel.id, })} /> ))} - - act('PRG_changename', { - new_name: value, - })} /> - {!!can_admin && ( -
+
+ + + + +
{in_channel && ( authorized ? ( messages.map(message => ( @@ -98,69 +182,128 @@ export const NtosNetChat = (props, context) => { ) + ) || ( + )} - +
+
+ {!!in_channel && ( act('PRG_speak', { message: value, })} /> -
- - - {clients.map(client => ( - - {client.name} - - ))} - - {(in_channel && authorized) && ( - <> - act('PRG_savelog', { - log_name: value, - })} /> - act('PRG_leavechannel')} /> - - )} - {!!is_operator && authed && ( - <> - act('PRG_deletechannel')} /> - act('PRG_renamechannel', { - new_name: value, - })} /> - act('PRG_setpassword', { - new_password: value, - })} /> - - )} - -
-
-
+ )} + + + {!!in_channel && ( + <> + + + + +
+ + {displayed_clients.map(client => ( + + + {client.name} + + {client !== this_client && ( + <> + +
+
+
+ + Settings for {title}: + + + {!!(in_channel && authorized) && ( + <> + act('PRG_savelog', { + log_name: value, + })} /> + act('PRG_leavechannel')} /> + + )} + {!!(is_operator && authed) && ( + <> + act('PRG_deletechannel')} /> + act('PRG_renamechannel', { + new_name: value, + })} /> + act('PRG_setpassword', { + new_password: value, + })} /> + + )} + +
+
+
+ + )} +
);