diff --git a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm index 25dcbac4f60..b7d09bb54eb 100644 --- a/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm +++ b/_maps/RandomRuins/SpaceRuins/TheDerelict.dmm @@ -2788,7 +2788,7 @@ /turf/open/floor/engine/airless, /area/ruin/space/ks13/science/ordnance) "yb" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /obj/effect/decal/cleanable/dirt, /obj/effect/mapping_helpers/broken_floor, diff --git a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm index 091c494c899..d613c0d6438 100644 --- a/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm +++ b/_maps/RandomRuins/SpaceRuins/bigderelict1.dmm @@ -654,7 +654,7 @@ /turf/open/floor/iron, /area/ruin/space/has_grav/derelictoutpost/cargobay) "cI" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/structure/cable, /turf/open/floor/iron, /area/ruin/space/has_grav/derelictoutpost/cargobay) diff --git a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm index 1595f7a067d..d3556556eef 100644 --- a/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm +++ b/_maps/RandomRuins/SpaceRuins/hilbertresearchfacility.dmm @@ -2212,7 +2212,7 @@ /turf/open/floor/mineral/plastitanium, /area/ruin/space/has_grav/powered/hilbertresearchfacility) "Wg" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/hilbertresearchfacility) "Wm" = ( diff --git a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm index 3a87ee689c5..f6d3c45fcd2 100644 --- a/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm +++ b/_maps/RandomRuins/SpaceRuins/mrow_thats_right.dmm @@ -29,7 +29,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "ai" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /obj/item/reagent_containers/cup/bucket, /obj/effect/decal/cleanable/cobweb/cobweb2, @@ -41,7 +41,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "ak" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /turf/open/floor/plating, /area/ruin/space/has_grav/powered/cat_man) "al" = ( diff --git a/_maps/RandomRuins/SpaceRuins/oldstation.dmm b/_maps/RandomRuins/SpaceRuins/oldstation.dmm index 45144496b25..c8dc6d43b4b 100644 --- a/_maps/RandomRuins/SpaceRuins/oldstation.dmm +++ b/_maps/RandomRuins/SpaceRuins/oldstation.dmm @@ -8837,7 +8837,7 @@ "Yg" = ( /obj/effect/decal/cleanable/dirt, /obj/effect/decal/cleanable/dirt, -/obj/structure/janitorialcart{ +/obj/structure/mop_bucket/janitorialcart{ dir = 4 }, /obj/item/reagent_containers/cup/bucket, diff --git a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm index 55ab088dd3e..786a955abea 100644 --- a/_maps/RandomRuins/SpaceRuins/spacehotel.dmm +++ b/_maps/RandomRuins/SpaceRuins/spacehotel.dmm @@ -298,7 +298,7 @@ /turf/open/floor/plating, /area/ruin/space/has_grav/hotel/power) "cS" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /obj/item/lightreplacer, /turf/open/floor/catwalk_floor, diff --git a/_maps/RandomZLevels/SnowCabin.dmm b/_maps/RandomZLevels/SnowCabin.dmm index dab6c8ea02f..1b9c003e8c3 100644 --- a/_maps/RandomZLevels/SnowCabin.dmm +++ b/_maps/RandomZLevels/SnowCabin.dmm @@ -277,7 +277,7 @@ desc = "A sink used for washing one's hands and face. It looks rusty and home-made"; name = "sink" }, -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /obj/item/reagent_containers/cup/bucket, /obj/item/clothing/suit/caution, diff --git a/_maps/RandomZLevels/snowdin.dmm b/_maps/RandomZLevels/snowdin.dmm index 39d2fd80fbd..41091845b61 100644 --- a/_maps/RandomZLevels/snowdin.dmm +++ b/_maps/RandomZLevels/snowdin.dmm @@ -4039,7 +4039,7 @@ pixel_x = 5; pixel_y = 5 }, -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /turf/open/floor/iron/dark, /area/awaymission/snowdin/post/custodials) diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 976ef7cc855..35e86ccbe07 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -72683,7 +72683,7 @@ /turf/open/floor/plating, /area/station/engineering/supermatter/room) "rLO" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /obj/item/reagent_containers/cup/bucket, /obj/item/radio/intercom/directional/east, diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index d5a2a09e148..4a9ff580cbd 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -5831,7 +5831,7 @@ /turf/open/floor/iron/dark, /area/station/service/chapel) "bMs" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "bMz" = ( @@ -40551,7 +40551,7 @@ /area/station/engineering/atmos) "mxA" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/janitorialcart{ +/obj/structure/mop_bucket/janitorialcart{ dir = 4 }, /obj/item/mop, @@ -45910,7 +45910,7 @@ /turf/open/floor/iron/showroomfloor, /area/station/security/warden) "oaB" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /turf/open/floor/iron, /area/station/service/janitor) "oaG" = ( diff --git a/_maps/map_files/KiloStation/KiloStation.dmm b/_maps/map_files/KiloStation/KiloStation.dmm index 992675343c5..93682779e6b 100644 --- a/_maps/map_files/KiloStation/KiloStation.dmm +++ b/_maps/map_files/KiloStation/KiloStation.dmm @@ -23858,7 +23858,7 @@ /turf/open/floor/iron/dark, /area/station/engineering/supermatter/room) "gPZ" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/effect/turf_decal/delivery, /obj/machinery/light/small/directional/east, /obj/effect/turf_decal/tile/neutral{ @@ -47082,7 +47082,7 @@ /turf/open/floor/engine, /area/station/engineering/supermatter/room) "nts" = ( -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/tile/neutral{ dir = 8 diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index b318b364ddd..e26a8676ae3 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -10361,7 +10361,7 @@ /turf/open/floor/plating, /area/station/maintenance/starboard/fore) "dPa" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /obj/effect/landmark/blobstart, /obj/effect/mapping_helpers/broken_floor, @@ -16698,7 +16698,7 @@ /area/space/nearstation) "ghN" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/machinery/light/small/directional/south, /turf/open/floor/iron, /area/station/service/janitor) @@ -39283,7 +39283,7 @@ /turf/open/floor/plating/airless, /area/space/nearstation) "nWj" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/machinery/light/small/directional/west, /obj/item/mop, /turf/open/floor/plating, @@ -63358,7 +63358,7 @@ /turf/open/floor/iron/white, /area/station/science/research) "wkH" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /obj/structure/sign/poster/random/directional/north, /turf/open/floor/plating, diff --git a/_maps/map_files/generic/CentCom.dmm b/_maps/map_files/generic/CentCom.dmm index f13e057101f..d50687d7e31 100644 --- a/_maps/map_files/generic/CentCom.dmm +++ b/_maps/map_files/generic/CentCom.dmm @@ -2627,7 +2627,7 @@ /turf/open/floor/wood, /area/centcom/central_command_areas/admin) "hU" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /turf/open/floor/catwalk_floor/iron_smooth, /area/centcom/syndicate_mothership/control) diff --git a/_maps/map_files/tramstation/modular_pieces/maintenance_lowercargosci_attachment_a_3.dmm b/_maps/map_files/tramstation/modular_pieces/maintenance_lowercargosci_attachment_a_3.dmm index 774d783974e..e15134471bf 100644 --- a/_maps/map_files/tramstation/modular_pieces/maintenance_lowercargosci_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/modular_pieces/maintenance_lowercargosci_attachment_a_3.dmm @@ -82,7 +82,7 @@ /area/station/maintenance/starboard/central) "V" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/mopbucket{ +/obj/structure/mop_bucket{ pixel_y = 15; pixel_x = 5 }, diff --git a/_maps/map_files/tramstation/modular_pieces/maintenance_lowerdorm_attachment_a_3.dmm b/_maps/map_files/tramstation/modular_pieces/maintenance_lowerdorm_attachment_a_3.dmm index 84ea46a78d7..e45b1dbe589 100644 --- a/_maps/map_files/tramstation/modular_pieces/maintenance_lowerdorm_attachment_a_3.dmm +++ b/_maps/map_files/tramstation/modular_pieces/maintenance_lowerdorm_attachment_a_3.dmm @@ -63,7 +63,7 @@ "W" = ( /obj/effect/decal/cleanable/dirt, /obj/machinery/light/small/directional/north, -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /turf/open/floor/iron/smooth, /area/station/maintenance/department/crew_quarters/dorms) diff --git a/_maps/map_files/tramstation/modular_pieces/maintenance_uppermedsci_attachment_b_3.dmm b/_maps/map_files/tramstation/modular_pieces/maintenance_uppermedsci_attachment_b_3.dmm index 8ae48fd55e1..10c5d96b265 100644 --- a/_maps/map_files/tramstation/modular_pieces/maintenance_uppermedsci_attachment_b_3.dmm +++ b/_maps/map_files/tramstation/modular_pieces/maintenance_uppermedsci_attachment_b_3.dmm @@ -6,7 +6,7 @@ /area/station/maintenance/department/science) "b" = ( /obj/effect/decal/cleanable/dirt, -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /turf/open/floor/iron/smooth, /area/station/maintenance/department/science) diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 36f3a532a26..c1593b2b9c3 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -53185,7 +53185,7 @@ /area/station/security/brig) "sTZ" = ( /obj/effect/turf_decal/bot, -/obj/structure/janitorialcart, +/obj/structure/mop_bucket/janitorialcart, /obj/item/mop, /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 10 diff --git a/_maps/shuttles/emergency_casino.dmm b/_maps/shuttles/emergency_casino.dmm index 9c8b7d2929d..514da314e01 100644 --- a/_maps/shuttles/emergency_casino.dmm +++ b/_maps/shuttles/emergency_casino.dmm @@ -1219,7 +1219,7 @@ /turf/open/floor/wood, /area/shuttle/escape) "MS" = ( -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /mob/living/simple_animal/bot/cleanbot, /turf/open/floor/mineral/titanium/yellow, diff --git a/_maps/shuttles/whiteship_pubby.dmm b/_maps/shuttles/whiteship_pubby.dmm index 204b8f534c6..e81ba2d01ae 100644 --- a/_maps/shuttles/whiteship_pubby.dmm +++ b/_maps/shuttles/whiteship_pubby.dmm @@ -1188,7 +1188,7 @@ dir = 5 }, /obj/effect/decal/cleanable/dirt, -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/soap/nanotrasen, /obj/item/mop, /turf/open/floor/iron/dark, diff --git a/_maps/templates/battlecruiser_starfury.dmm b/_maps/templates/battlecruiser_starfury.dmm index b6a025b1da9..46cf3b62bde 100644 --- a/_maps/templates/battlecruiser_starfury.dmm +++ b/_maps/templates/battlecruiser_starfury.dmm @@ -2345,7 +2345,7 @@ /area/shuttle/sbc_starfury) "hI" = ( /obj/effect/decal/cleanable/dirt/dust, -/obj/structure/mopbucket, +/obj/structure/mop_bucket, /obj/item/mop, /turf/open/floor/iron/dark/side, /area/shuttle/sbc_starfury) diff --git a/code/game/objects/effects/spawners/random/trash.dm b/code/game/objects/effects/spawners/random/trash.dm index a4f22af39c0..c9ca7ca2862 100644 --- a/code/game/objects/effects/spawners/random/trash.dm +++ b/code/game/objects/effects/spawners/random/trash.dm @@ -142,7 +142,7 @@ /obj/item/reagent_containers/cup/rag = 2, /obj/item/reagent_containers/cup/bucket = 2, /obj/effect/decal/cleanable/blood/old = 2, - /obj/structure/mopbucket = 2, + /obj/structure/mop_bucket = 2, /mob/living/simple_animal/axolotl = 1, ) @@ -187,7 +187,7 @@ spawn_loot_count = 2 spawn_loot_double = FALSE loot = list( - /obj/structure/mopbucket = 10, + /obj/structure/mop_bucket = 10, /obj/item/mop = 5, /obj/item/clothing/suit/caution = 3, /obj/item/reagent_containers/cup/bucket = 1, diff --git a/code/game/objects/items/mop.dm b/code/game/objects/items/mop.dm index a53ada4cdd3..544a6dfa334 100644 --- a/code/game/objects/items/mop.dm +++ b/code/game/objects/items/mop.dm @@ -20,6 +20,10 @@ var/mopspeed = 1.5 SECONDS force_string = "robust... against germs" var/insertable = TRUE + var/static/list/clean_blacklist = typecacheof(list( + /obj/item/reagent_containers/cup/bucket, + /obj/structure/mop_bucket, + )) /obj/item/mop/Initialize(mapload) . = ..() @@ -33,7 +37,7 @@ ///Checks whether or not we should clean. /obj/item/mop/proc/should_clean(datum/cleaning_source, atom/atom_to_clean, mob/living/cleaner) - if(istype(atom_to_clean, /obj/item/reagent_containers/cup/bucket) || istype(atom_to_clean, /obj/structure/janitorialcart)) + if(clean_blacklist[atom_to_clean.type]) return DO_NOT_CLEAN if(reagents.total_volume < 0.1) to_chat(cleaner, span_warning("Your mop is dry!")) diff --git a/code/game/objects/structures/janicart.dm b/code/game/objects/structures/janitor.dm similarity index 68% rename from code/game/objects/structures/janicart.dm rename to code/game/objects/structures/janitor.dm index 3850b9f2fa5..6a385e5f70e 100644 --- a/code/game/objects/structures/janicart.dm +++ b/code/game/objects/structures/janitor.dm @@ -1,13 +1,68 @@ #define CART_HAS_MINIMUM_REAGENT_VOLUME !(reagents.total_volume < 1) -/obj/structure/janitorialcart - name = "janitorial cart" - desc = "This is the alpha and omega of sanitation." +/obj/structure/mop_bucket + name = "mop bucket" + desc = "Fill it with water, but don't forget a mop!" icon = 'icons/obj/janitor.dmi' - icon_state = "cart" - anchored = FALSE + icon_state = "mopbucket" density = TRUE var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite + /// The icon used for the water overlay + var/water_icon = "mopbucket_water" + +/obj/structure/mop_bucket/Initialize(mapload) + . = ..() + create_reagents(100, OPENCONTAINER) + register_context() + +/obj/structure/mop_bucket/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + + if(istype(held_item, /obj/item/mop)) + context[SCREENTIP_CONTEXT_RMB] = "Wet [held_item]" + return CONTEXTUAL_SCREENTIP_SET + + if(istype(held_item, /obj/item/reagent_containers)) + context[SCREENTIP_CONTEXT_LMB] = "Fill mop bucket" + return CONTEXTUAL_SCREENTIP_SET + + return . + +/obj/structure/mop_bucket/attackby(obj/item/weapon, mob/user, params) + if(istype(weapon, /obj/item/reagent_containers)) + update_appearance(UPDATE_OVERLAYS) + return FALSE // skip attack animation when refilling cart + + return ..() + +/obj/structure/mop_bucket/attackby_secondary(obj/item/weapon, mob/user, params) + if(istype(weapon, /obj/item/mop)) + if(weapon.reagents.total_volume >= weapon.reagents.maximum_volume) + balloon_alert(user, "mop is already soaked!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(!CART_HAS_MINIMUM_REAGENT_VOLUME) + balloon_alert(user, "mop bucket is empty!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + reagents.trans_to(weapon, weapon.reagents.maximum_volume, transfered_by = user) + balloon_alert(user, "wet mop") + playsound(src, 'sound/effects/slosh.ogg', 25, vary = TRUE) + + if(istype(weapon, /obj/item/reagent_containers) || istype(weapon, /obj/item/mop)) + update_appearance(UPDATE_OVERLAYS) + return SECONDARY_ATTACK_CONTINUE_CHAIN // skip attack animations when refilling cart + + return SECONDARY_ATTACK_CONTINUE_CHAIN + +/obj/structure/mop_bucket/update_overlays() + . = ..() + if(reagents.total_volume > 0) + . += water_icon + +/obj/structure/mop_bucket/janitorialcart + name = "janitorial cart" + desc = "This is the alpha and omega of sanitation." + icon_state = "cart" + water_icon = "cart_water" var/obj/item/storage/bag/trash/mybag var/obj/item/mop/mymop var/obj/item/pushbroom/mybroom @@ -16,14 +71,11 @@ var/list/obj/item/clothing/suit/caution/held_signs = list() var/max_signs = 4 -/obj/structure/janitorialcart/Initialize(mapload) +/obj/structure/mop_bucket/janitorialcart/Initialize(mapload) . = ..() - create_reagents(100, OPENCONTAINER) GLOB.janitor_devices += src - register_context() //Context sensitive tooltips. See add_context() - -/obj/structure/janitorialcart/Destroy() +/obj/structure/mop_bucket/janitorialcart/Destroy() GLOB.janitor_devices -= src QDEL_NULL(myreplacer) QDEL_NULL(myspray) @@ -33,7 +85,7 @@ QDEL_LIST(held_signs) return ..() -/obj/structure/janitorialcart/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) +/obj/structure/mop_bucket/janitorialcart/Entered(atom/movable/arrived, atom/old_loc, list/atom/old_locs) if(istype(arrived, /obj/item/storage/bag/trash)) mybag = arrived else if(istype(arrived, /obj/item/mop)) @@ -46,10 +98,10 @@ myreplacer = arrived else if(istype(arrived, /obj/item/clothing/suit/caution)) held_signs += arrived - update_appearance(UPDATE_ICON) + update_appearance(UPDATE_OVERLAYS) return ..() -/obj/structure/janitorialcart/Exited(atom/movable/gone, direction) +/obj/structure/mop_bucket/janitorialcart/Exited(atom/movable/gone, direction) if(gone == mybag) mybag = null else if(gone == mymop) @@ -63,10 +115,10 @@ else if(gone in held_signs) held_signs -= gone if(!QDELING(src)) - update_appearance(UPDATE_ICON) + update_appearance(UPDATE_OVERLAYS) return ..() -/obj/structure/janitorialcart/examine(mob/user) +/obj/structure/mop_bucket/janitorialcart/examine(mob/user) . = ..() if(contents.len) . += span_bold(span_info("\nIt is carrying:")) @@ -89,63 +141,47 @@ . += span_notice("Right-click with a mop to wet it.") . += span_info("Crowbar it to dump its mop bucket onto [get_turf(src)].") -/obj/structure/janitorialcart/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) - if(!held_item) - if(!contents.len) - return NONE +/obj/structure/mop_bucket/janitorialcart/add_context(atom/source, list/context, obj/item/held_item, mob/living/user) + . = ..() + + if(isnull(held_item) && contents.len) if(mymop) context[SCREENTIP_CONTEXT_RMB] = "Remove [mymop]" + . = CONTEXTUAL_SCREENTIP_SET if(contents.len == 1) context[SCREENTIP_CONTEXT_LMB] = "Remove [contents[1]]" - return CONTEXTUAL_SCREENTIP_SET + . = CONTEXTUAL_SCREENTIP_SET context[SCREENTIP_CONTEXT_LMB] = "Search cart" - return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/mop)) - . = NONE - if(!mymop) - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - . = CONTEXTUAL_SCREENTIP_SET - if(CART_HAS_MINIMUM_REAGENT_VOLUME && held_item.reagents.total_volume < held_item.reagents.maximum_volume) - context[SCREENTIP_CONTEXT_RMB] = "Wet [held_item]" - . = CONTEXTUAL_SCREENTIP_SET - return - if(istype(held_item, /obj/item/pushbroom)) - if(mybroom) - return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/storage/bag/trash)) - if(mybag) - return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/reagent_containers/spray/cleaner)) - if(myspray) - return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/clothing/suit/caution)) - if(held_signs.len >= max_signs) - return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - return CONTEXTUAL_SCREENTIP_SET - if(istype(held_item, /obj/item/lightreplacer)) - if(myreplacer) - return NONE - context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" - return CONTEXTUAL_SCREENTIP_SET - if((held_item.is_refillable() && held_item.reagents.total_volume) && reagents.total_volume < reagents.maximum_volume) - context[SCREENTIP_CONTEXT_RMB] = "Fill [src]'s mop bucket" - return CONTEXTUAL_SCREENTIP_SET - if(held_item.tool_behaviour == TOOL_CROWBAR && CART_HAS_MINIMUM_REAGENT_VOLUME) - context[SCREENTIP_CONTEXT_LMB] = "Dump [src]'s mop bucket on [get_turf(src)]" - return CONTEXTUAL_SCREENTIP_SET - if(mybag?.atom_storage?.max_specific_storage >= held_item.w_class) - context[SCREENTIP_CONTEXT_RMB] = "Insert [held_item] into [mybag]" - return CONTEXTUAL_SCREENTIP_SET - return NONE + . = CONTEXTUAL_SCREENTIP_SET -/obj/structure/janitorialcart/attackby(obj/item/attacking_item, mob/user, params) + if(istype(held_item, /obj/item/mop) && !mymop) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/pushbroom) && !mybroom) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/storage/bag/trash) && !mybag) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/reagent_containers/spray/cleaner) && !myspray) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/clothing/suit/caution) && held_signs.len < max_signs) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item, /obj/item/lightreplacer) && !myreplacer) + context[SCREENTIP_CONTEXT_LMB] = "Insert [held_item]" + . = CONTEXTUAL_SCREENTIP_SET + if(istype(held_item) && held_item.tool_behaviour == TOOL_CROWBAR && CART_HAS_MINIMUM_REAGENT_VOLUME) + context[SCREENTIP_CONTEXT_LMB] = "Dump [src]'s mop bucket on [get_turf(src)]" + . = CONTEXTUAL_SCREENTIP_SET + if(!isnull(held_item) && mybag?.atom_storage?.max_specific_storage >= held_item.w_class) + context[SCREENTIP_CONTEXT_RMB] = "Insert [held_item] into [mybag]" + . = CONTEXTUAL_SCREENTIP_SET + + return . || NONE + +/obj/structure/mop_bucket/janitorialcart/attackby(obj/item/attacking_item, mob/user, params) if(istype(attacking_item, /obj/item/mop)) if(mymop) balloon_alert(user, "already has \a [mymop]!") @@ -188,12 +224,9 @@ balloon_alert(user, "placed [attacking_item]") return - if(attacking_item.is_drainable()) - return FALSE //so we can fill the cart via our afterattack without bludgeoning it - return ..() -/obj/structure/janitorialcart/crowbar_act(mob/living/user, obj/item/tool) +/obj/structure/mop_bucket/janitorialcart/crowbar_act(mob/living/user, obj/item/tool) if(!CART_HAS_MINIMUM_REAGENT_VOLUME) balloon_alert(user, "mop bucket is empty!") return TOOL_ACT_TOOLTYPE_SUCCESS @@ -204,24 +237,16 @@ to_chat(user, span_notice("You dumped the contents of [src]'s mop bucket onto the floor.")) reagents.expose(loc) reagents.clear_reagents() - update_appearance(UPDATE_ICON) + update_appearance(UPDATE_OVERLAYS) return TOOL_ACT_TOOLTYPE_SUCCESS -/obj/structure/janitorialcart/attackby_secondary(obj/item/weapon, mob/user, params) - if(istype(weapon, /obj/item/mop)) - var/obj/item/mop/your_mop = weapon - if(your_mop.reagents.total_volume >= your_mop.reagents.maximum_volume) - balloon_alert(user, "[your_mop] is already soaked!") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - if(!CART_HAS_MINIMUM_REAGENT_VOLUME) - balloon_alert(user, "mop bucket is empty!") - return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - reagents.trans_to(your_mop, your_mop.reagents.maximum_volume, transfered_by = user) - balloon_alert(user, "wet [your_mop]") - playsound(src, 'sound/effects/slosh.ogg', 25, TRUE) +/obj/structure/mop_bucket/janitorialcart/attackby_secondary(obj/item/weapon, mob/user, params) + . = ..() + if(. == SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN) return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN - if(weapon.is_refillable()) + if(istype(weapon, /obj/item/reagent_containers)) + update_appearance(UPDATE_OVERLAYS) return SECONDARY_ATTACK_CONTINUE_CHAIN //so we can empty the cart via our afterattack without trying to put the item in the bag if(mybag?.attackby(weapon, user)) @@ -229,7 +254,7 @@ return SECONDARY_ATTACK_CONTINUE_CHAIN -/obj/structure/janitorialcart/attack_hand(mob/user, list/modifiers) +/obj/structure/mop_bucket/janitorialcart/attack_hand(mob/user, list/modifiers) . = ..() if(.) return @@ -297,7 +322,7 @@ else return -/obj/structure/janitorialcart/attack_hand_secondary(mob/user, list/modifiers) +/obj/structure/mop_bucket/janitorialcart/attack_hand_secondary(mob/user, list/modifiers) if(!mymop) return SECONDARY_ATTACK_CONTINUE_CHAIN balloon_alert(user, "removed [mymop]") @@ -310,20 +335,13 @@ * Arguments: * * user The mob interacting with a menu */ -/obj/structure/janitorialcart/proc/check_menu(mob/living/user) - if(!istype(user)) - return FALSE - if(user.incapacitated()) - return FALSE - return TRUE +/obj/structure/mop_bucket/janitorialcart/proc/check_menu(mob/living/user) + return istype(user) && !user.incapacitated() -/obj/structure/janitorialcart/update_overlays() +/obj/structure/mop_bucket/janitorialcart/update_overlays() . = ..() if(mybag) - if(istype(mybag, /obj/item/storage/bag/trash/bluespace)) - . += "cart_bluespace_garbage" - else - . += "cart_garbage" + . += istype(mybag, /obj/item/storage/bag/trash/bluespace) ? "cart_bluespace_garbage" : "cart_garbage" if(mymop) . += "cart_mop" if(mybroom) @@ -334,8 +352,5 @@ . += "cart_replacer" if(held_signs.len) . += "cart_sign[min(held_signs.len, 4)]" - if(reagents.total_volume > 0) - . += "cart_water" - #undef CART_HAS_MINIMUM_REAGENT_VOLUME diff --git a/code/game/objects/structures/mop_bucket.dm b/code/game/objects/structures/mop_bucket.dm deleted file mode 100644 index 1e1bfb54265..00000000000 --- a/code/game/objects/structures/mop_bucket.dm +++ /dev/null @@ -1,31 +0,0 @@ -/obj/structure/mopbucket - name = "mop bucket" - desc = "Fill it with water, but don't forget a mop!" - icon = 'icons/obj/janitor.dmi' - icon_state = "mopbucket" - density = TRUE - var/amount_per_transfer_from_this = 5 //shit I dunno, adding this so syringes stop runtime erroring. --NeoFite - - -/obj/structure/mopbucket/Initialize(mapload) - . = ..() - create_reagents(100, OPENCONTAINER) - -/obj/structure/mopbucket/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/mop)) - if(reagents.total_volume < 1) - to_chat(user, span_warning("[src] is out of water!")) - else - reagents.trans_to(I, 5, transfered_by = user) - to_chat(user, span_notice("You wet [I] in [src].")) - playsound(loc, 'sound/effects/slosh.ogg', 25, TRUE) - update_appearance() - return TRUE //Stop the click handling chain so the mop after attack doesn't proc and you don't wet the turf the bucket is on - else - . = ..() - update_appearance() - -/obj/structure/mopbucket/update_overlays() - . = ..() - if(reagents.total_volume > 0) - . += "mopbucket_water" diff --git a/code/modules/cargo/packs/service.dm b/code/modules/cargo/packs/service.dm index 44cb86c89f2..d511bc15bd1 100644 --- a/code/modules/cargo/packs/service.dm +++ b/code/modules/cargo/packs/service.dm @@ -47,7 +47,7 @@ desc = "The keystone to any successful janitor. As long as you have feet, this pair \ of galoshes will keep them firmly planted on the ground. Also contains a janitorial cart." cost = CARGO_CRATE_VALUE * 4 - contains = list(/obj/structure/janitorialcart, + contains = list(/obj/structure/mop_bucket/janitorialcart, /obj/item/clothing/shoes/galoshes, ) crate_name = "janitorial cart crate" diff --git a/code/modules/modular_computers/file_system/programs/radar.dm b/code/modules/modular_computers/file_system/programs/radar.dm index 966f66f514b..6ad369e8433 100644 --- a/code/modules/modular_computers/file_system/programs/radar.dm +++ b/code/modules/modular_computers/file_system/programs/radar.dm @@ -277,8 +277,8 @@ var/obj/item/mop/wet_mop = custodial_tools tool_name = "[wet_mop.reagents.total_volume ? "Wet" : "Dry"] [wet_mop.name]" - if(istype(custodial_tools, /obj/structure/janitorialcart)) - var/obj/structure/janitorialcart/janicart = custodial_tools + if(istype(custodial_tools, /obj/structure/mop_bucket/janitorialcart)) + var/obj/structure/mop_bucket/janitorialcart/janicart = custodial_tools tool_name = "[janicart.name] - Water level: [janicart.reagents.total_volume] / [janicart.reagents.maximum_volume]" if(istype(custodial_tools, /mob/living/simple_animal/bot/cleanbot)) diff --git a/code/modules/reagents/reagent_containers/dropper.dm b/code/modules/reagents/reagent_containers/dropper.dm index 486da26b9a4..4be30fc719f 100644 --- a/code/modules/reagents/reagent_containers/dropper.dm +++ b/code/modules/reagents/reagent_containers/dropper.dm @@ -67,6 +67,7 @@ trans = src.reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user) to_chat(user, span_notice("You transfer [trans] unit\s of the solution.")) update_appearance() + target.update_appearance() else @@ -83,6 +84,7 @@ to_chat(user, span_notice("You fill [src] with [trans] unit\s of the solution.")) update_appearance() + target.update_appearance() /obj/item/reagent_containers/dropper/update_overlays() . = ..() diff --git a/code/modules/reagents/reagent_containers/spray.dm b/code/modules/reagents/reagent_containers/spray.dm index 53d308937d0..b8286116e0a 100644 --- a/code/modules/reagents/reagent_containers/spray.dm +++ b/code/modules/reagents/reagent_containers/spray.dm @@ -27,7 +27,7 @@ /obj/item/reagent_containers/spray/afterattack(atom/target, mob/user, proximity_flag, click_parameters) . = ..() - if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/janitorialcart) || istype(target, /obj/machinery/hydroponics)) + if(istype(target, /obj/structure/sink) || istype(target, /obj/structure/mop_bucket/janitorialcart) || istype(target, /obj/machinery/hydroponics)) return if((target.is_drainable() && !target.is_refillable()) && (get_dist(src, target) <= 1) && can_fill_from_container) diff --git a/code/modules/reagents/reagent_containers/syringes.dm b/code/modules/reagents/reagent_containers/syringes.dm index 6b37d95a66f..a6ef7c810e2 100644 --- a/code/modules/reagents/reagent_containers/syringes.dm +++ b/code/modules/reagents/reagent_containers/syringes.dm @@ -83,6 +83,7 @@ log_combat(user, living_target, "injected", src, addition="which had [contained]") reagents.trans_to(target, amount_per_transfer_from_this, transfered_by = user, methods = INJECT) to_chat(user, span_notice("You inject [amount_per_transfer_from_this] units of the solution. The syringe now contains [reagents.total_volume] units.")) + target.update_appearance() /obj/item/reagent_containers/syringe/afterattack_secondary(atom/target, mob/user, proximity_flag, click_parameters) if (!try_syringe(target, user, proximity_flag)) @@ -118,6 +119,7 @@ var/trans = target.reagents.trans_to(src, amount_per_transfer_from_this, transfered_by = user) // transfer from, transfer to - who cares? to_chat(user, span_notice("You fill [src] with [trans] units of the solution. It now contains [reagents.total_volume] units.")) + target.update_appearance() return SECONDARY_ATTACK_CONTINUE_CHAIN diff --git a/tgstation.dme b/tgstation.dme index 489cd66868d..e9c3b39ab8a 100644 --- a/tgstation.dme +++ b/tgstation.dme @@ -1923,7 +1923,7 @@ #include "code\game\objects\structures\headpike.dm" #include "code\game\objects\structures\hivebot.dm" #include "code\game\objects\structures\holosign.dm" -#include "code\game\objects\structures\janicart.dm" +#include "code\game\objects\structures\janitor.dm" #include "code\game\objects\structures\kitchen_spike.dm" #include "code\game\objects\structures\ladders.dm" #include "code\game\objects\structures\lattice.dm" @@ -1933,7 +1933,6 @@ #include "code\game\objects\structures\memorial.dm" #include "code\game\objects\structures\mineral_doors.dm" #include "code\game\objects\structures\mirror.dm" -#include "code\game\objects\structures\mop_bucket.dm" #include "code\game\objects\structures\morgue.dm" #include "code\game\objects\structures\mystery_box.dm" #include "code\game\objects\structures\noticeboard.dm"