From 3e8e76b464b86d35420a13314353c0ce2336c083 Mon Sep 17 00:00:00 2001 From: Batrachophreno Date: Sun, 22 Jun 2025 14:09:07 -0400 Subject: [PATCH] Improve usefulness of Custodial Supplies Locator app (#20814) Currently, the Custodial Supplies Locator app provided X and Y coords of every single mop, bucket, janicart, and cleanbot on the entire server. This PR makes it so that these objects will only be registered to the global list of custodial supplies if they are present on the Horizon on init, and it will also provide Z coords so you can tell if they're on a different deck. The app also has a weird built-in GPS function that tracks the reader's movements instead of the device's. Instead of fixing this to follow the device, I just removed GPS feedback text- a Janitor can grab one of the GPS units that comes in their lockers, and this also allows them to be tracked by other units. --- code/game/objects/items/weapons/mop.dm | 6 +- code/game/objects/structures/janicart.dm | 6 +- code/game/objects/structures/mop_bucket.dm | 7 ++- code/modules/mob/living/bot/cleanbot.dm | 6 +- .../file_system/programs/civilian/janitor.dm | 1 + .../Batrachophreno-JanitorSuppliesApp.yml | 60 +++++++++++++++++++ tgui/packages/tgui/interfaces/Janitor.tsx | 6 +- 7 files changed, 80 insertions(+), 12 deletions(-) create mode 100644 html/changelogs/Batrachophreno-JanitorSuppliesApp.yml diff --git a/code/game/objects/items/weapons/mop.dm b/code/game/objects/items/weapons/mop.dm index 1651c59a0e2..f1916cd1799 100644 --- a/code/game/objects/items/weapons/mop.dm +++ b/code/game/objects/items/weapons/mop.dm @@ -25,10 +25,12 @@ /obj/item/mop/Initialize() . = ..() create_reagents(30) - GLOB.janitorial_supplies |= src + if(is_station_turf(get_turf(src))) + GLOB.janitorial_supplies |= src /obj/item/mop/Destroy() - GLOB.janitorial_supplies -= src + if(src in GLOB.janitorial_supplies) + GLOB.janitorial_supplies -= src return ..() /obj/item/mop/afterattack(atom/A, mob/user, proximity) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janicart.dm index 1b16bc8b8ba..80b0812515a 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janicart.dm @@ -74,10 +74,12 @@ /obj/structure/janitorialcart/New() ..() - GLOB.janitorial_supplies |= src + if(is_station_turf(get_turf(src))) + GLOB.janitorial_supplies |= src /obj/structure/janitorialcart/Destroy() - GLOB.janitorial_supplies -= src + if(src in GLOB.janitorial_supplies) + GLOB.janitorial_supplies -= src QDEL_NULL(mybag) QDEL_NULL(mymop) QDEL_NULL(myspray) diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm index 079b2ee4521..597dfeb347e 100644 --- a/code/game/objects/structures/mop_bucket.dm +++ b/code/game/objects/structures/mop_bucket.dm @@ -12,10 +12,13 @@ /obj/structure/mopbucket/Initialize() . = ..() create_reagents(bucketsize) - GLOB.janitorial_supplies |= src + + if(is_station_turf(get_turf(src))) + GLOB.janitorial_supplies |= src /obj/structure/mopbucket/Destroy() - GLOB.janitorial_supplies -= src + if(src in GLOB.janitorial_supplies) + GLOB.janitorial_supplies -= src return ..() /obj/structure/mopbucket/get_examine_text(mob/user, distance, is_adjacent, infix, suffix) diff --git a/code/modules/mob/living/bot/cleanbot.dm b/code/modules/mob/living/bot/cleanbot.dm index cfbb7ee27da..4dbeefcfd00 100644 --- a/code/modules/mob/living/bot/cleanbot.dm +++ b/code/modules/mob/living/bot/cleanbot.dm @@ -72,7 +72,8 @@ GLOBAL_LIST_INIT_TYPED(cleanbot_types, /obj/effect/decal/cleanable, typesof(/obj listener = new /obj/cleanbot_listener(src) listener.cleanbot = src - GLOB.janitorial_supplies |= src + if(is_station_turf(get_turf(src))) + GLOB.janitorial_supplies |= src SSradio.add_object(listener, beacon_freq, filter = RADIO_NAVBEACONS) @@ -86,7 +87,8 @@ GLOBAL_LIST_INIT_TYPED(cleanbot_types, /obj/effect/decal/cleanable, typesof(/obj QDEL_NULL(listener) SSradio.remove_object(listener, beacon_freq) - GLOB.janitorial_supplies -= src + if(src in GLOB.janitorial_supplies) + GLOB.janitorial_supplies -= src return ..() /mob/living/bot/cleanbot/proc/handle_target() diff --git a/code/modules/modular_computers/file_system/programs/civilian/janitor.dm b/code/modules/modular_computers/file_system/programs/civilian/janitor.dm index 9252090e21e..eb6c521040b 100644 --- a/code/modules/modular_computers/file_system/programs/civilian/janitor.dm +++ b/code/modules/modular_computers/file_system/programs/civilian/janitor.dm @@ -68,6 +68,7 @@ "key" = length(supplies), "x" = AT.x, "y" = AT.y, + "z" = AT.z, "dir" = dir, "status" = status, "supply_type" = supply_type diff --git a/html/changelogs/Batrachophreno-JanitorSuppliesApp.yml b/html/changelogs/Batrachophreno-JanitorSuppliesApp.yml new file mode 100644 index 00000000000..b6e138f152f --- /dev/null +++ b/html/changelogs/Batrachophreno-JanitorSuppliesApp.yml @@ -0,0 +1,60 @@ +################################ +# Example Changelog File +# +# Note: This file, and files beginning with ".", and files that don't end in ".yml" will not be read. If you change this file, you will look really dumb. +# +# Your changelog will be merged with a master changelog. (New stuff added only, and only on the date entry for the day it was merged.) +# When it is, any changes listed below will disappear. +# +# Valid Prefixes: +# bugfix +# - (fixes bugs) +# wip +# - (work in progress) +# qol +# - (quality of life) +# soundadd +# - (adds a sound) +# sounddel +# - (removes a sound) +# rscadd +# - (adds a feature) +# rscdel +# - (removes a feature) +# imageadd +# - (adds an image or sprite) +# imagedel +# - (removes an image or sprite) +# spellcheck +# - (fixes spelling or grammar) +# experiment +# - (experimental change) +# balance +# - (balance changes) +# code_imp +# - (misc internal code change) +# refactor +# - (refactors code) +# config +# - (makes a change to the config files) +# admin +# - (makes changes to administrator tools) +# server +# - (miscellaneous changes to server) +################################# + +# Your name. +author: Batrachophreno + +# Optional: Remove this file after generating master changelog. Useful for PR changelogs that won't get used again. +delete-after: True + +# Any changes you've made. See valid prefix list above. +# INDENT WITH TWO SPACES. NOT TABS. SPACES. +# SCREW THIS UP AND IT WON'T WORK. +# Also, this gets changed to [] after reading. Just remove the brackets when you add new shit. +# Please surround your changes in double quotes ("). It works without them, but if you use certain characters it screws up compiling. The quotes will not show up in the changelog. +changes: + - qol: "Custodial Supplies Locator app will now only track cleaning supplies on the Horizon (ignoring all offship supplies)." + - rscadd: "Custodial Supplies Locator app now shows objects' z-level in addition to x-y coords." + - rscdel: "Custodial Supplies Locator app no longer displays user's x-y coords, requiring use of actual GPS unit instead." diff --git a/tgui/packages/tgui/interfaces/Janitor.tsx b/tgui/packages/tgui/interfaces/Janitor.tsx index e6b2838a6df..2a4771000ce 100644 --- a/tgui/packages/tgui/interfaces/Janitor.tsx +++ b/tgui/packages/tgui/interfaces/Janitor.tsx @@ -14,6 +14,7 @@ type Supply = { key: number; x: number; y: number; + z: number; dir: string; status: string; supply_type: string; @@ -51,16 +52,13 @@ export const Janitor = (props, context) => { {supply.name} (#{supply.key}) - ({supply.x}, {supply.y}) + ({supply.x}, {supply.y}, {supply.z}) {supply.dir} {supply.status} ) )} - - User Location: ({data.user_x}, {data.user_y}) -