diff --git a/_maps/map_files/Birdshot/birdshot.dmm b/_maps/map_files/Birdshot/birdshot.dmm index 49deea1fe47..4a12d54ba3c 100644 --- a/_maps/map_files/Birdshot/birdshot.dmm +++ b/_maps/map_files/Birdshot/birdshot.dmm @@ -1466,8 +1466,8 @@ dir = 1 }, /obj/effect/turf_decal/tile/neutral/fourcorners, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/smooth, /area/station/command/bridge) "aEl" = ( @@ -11922,7 +11922,6 @@ /obj/structure/disposalpipe/trunk{ dir = 4 }, -/obj/machinery/disposal/bin, /obj/structure/railing{ dir = 10 }, @@ -11931,6 +11930,7 @@ dir = 10 }, /obj/effect/decal/cleanable/dirt, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/plating, /area/station/engineering/break_room) "ewi" = ( @@ -24768,9 +24768,9 @@ /area/station/construction/mining/aux_base) "iUN" = ( /obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/machinery/airalarm/directional/north, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/cargo/storage) "iVq" = ( @@ -57444,8 +57444,8 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white/side{ dir = 4 }, @@ -63482,10 +63482,7 @@ dir = 8 }, /obj/effect/turf_decal/stripes/box, -/obj/machinery/disposal/bin{ - desc = "A pneumatic waste disposal unit. This one leads to the morgue."; - name = "corpse disposal" - }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/medical/medbay/central) "vLT" = ( @@ -65241,8 +65238,8 @@ /obj/structure/disposalpipe/trunk{ dir = 8 }, -/obj/machinery/disposal/bin, /obj/structure/sign/poster/official/random/directional/north, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/security/office) "woT" = ( diff --git a/_maps/map_files/Deltastation/DeltaStation2.dmm b/_maps/map_files/Deltastation/DeltaStation2.dmm index 30e548835e8..b39ef4e4bb8 100644 --- a/_maps/map_files/Deltastation/DeltaStation2.dmm +++ b/_maps/map_files/Deltastation/DeltaStation2.dmm @@ -7668,7 +7668,6 @@ /area/station/maintenance/port) "bRw" = ( /obj/structure/sign/warning/deathsposal/directional/east, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 8 }, @@ -7680,6 +7679,7 @@ /obj/effect/turf_decal/tile/purple/half/contrasted{ dir = 8 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/science/xenobiology) "bRy" = ( @@ -17953,7 +17953,7 @@ }, /obj/effect/decal/cleanable/dirt, /obj/effect/turf_decal/bot, -/obj/machinery/disposal/bin, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/engineering/storage) "eua" = ( @@ -22028,7 +22028,6 @@ dir = 1 }, /obj/machinery/status_display/evac/directional/south, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/structure/sign/directions/arrival{ dir = 1; @@ -22038,6 +22037,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/hallway/secondary/entry) "fux" = ( @@ -27315,7 +27315,6 @@ /turf/open/floor/plating, /area/station/maintenance/department/engine/atmos) "gIa" = ( -/obj/machinery/disposal/bin, /obj/machinery/light/small/directional/north, /obj/structure/disposalpipe/trunk{ dir = 8 @@ -27324,6 +27323,7 @@ /obj/effect/turf_decal/tile/neutral{ dir = 4 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/security/brig) "gIc" = ( @@ -38976,7 +38976,6 @@ /turf/open/floor/iron/dark, /area/station/engineering/transit_tube) "jFa" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/machinery/status_display/evac/directional/west, /obj/effect/turf_decal/siding/purple{ @@ -38986,6 +38985,7 @@ dir = 4 }, /obj/machinery/light/directional/west, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/science/lab) "jFb" = ( @@ -51497,16 +51497,13 @@ /turf/open/floor/iron, /area/station/medical/virology) "mNL" = ( -/obj/machinery/disposal/bin{ - desc = "A pneumatic waste disposal unit. This one leads to the morgue."; - name = "corpse disposal" - }, /obj/effect/turf_decal/bot, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/effect/turf_decal/tile/blue/fourcorners, /obj/machinery/light/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/medical/medbay) "mNX" = ( @@ -60185,7 +60182,6 @@ }, /area/station/commons/fitness/recreation) "pen" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -60194,6 +60190,7 @@ /obj/effect/turf_decal/tile/neutral/anticorner/contrasted{ dir = 1 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/science/xenobiology) "peo" = ( @@ -70546,7 +70543,6 @@ /turf/open/floor/iron, /area/station/engineering/atmos/storage) "rFV" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/structure/disposalpipe/trunk, /obj/machinery/camera/directional/north{ @@ -70556,6 +70552,7 @@ /obj/machinery/airalarm/directional/north, /obj/effect/turf_decal/tile/neutral/fourcorners, /obj/machinery/light/directional/north, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/security/office) "rFZ" = ( diff --git a/_maps/map_files/IceBoxStation/IceBoxStation.dmm b/_maps/map_files/IceBoxStation/IceBoxStation.dmm index 6637caabd3e..101aad47815 100644 --- a/_maps/map_files/IceBoxStation/IceBoxStation.dmm +++ b/_maps/map_files/IceBoxStation/IceBoxStation.dmm @@ -11419,8 +11419,8 @@ /turf/open/floor/iron, /area/station/commons/storage/mining) "drG" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/cargo/office) "drH" = ( @@ -19051,8 +19051,8 @@ /area/station/science/explab) "fOR" = ( /obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, /obj/machinery/airalarm/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white/side{ dir = 9 }, @@ -60422,9 +60422,9 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/disposal/bin, /obj/machinery/computer/security/telescreen/entertainment/directional/south, /obj/machinery/light/small/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/engineering/storage) "sto" = ( @@ -61433,7 +61433,7 @@ dir = 5 }, /obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/medical/medbay/aft) "sHh" = ( @@ -74208,8 +74208,8 @@ /turf/open/floor/plating, /area/station/maintenance/port/aft) "wMV" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark/textured_half{ dir = 1 }, diff --git a/_maps/map_files/MetaStation/MetaStation.dmm b/_maps/map_files/MetaStation/MetaStation.dmm index 7ac2807b480..9da68fb33d0 100644 --- a/_maps/map_files/MetaStation/MetaStation.dmm +++ b/_maps/map_files/MetaStation/MetaStation.dmm @@ -1389,10 +1389,10 @@ /turf/open/floor/plating, /area/station/engineering/supermatter/room) "aBJ" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/delivery, /obj/effect/turf_decal/siding, /obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/science/lab) "aBL" = ( @@ -3254,13 +3254,13 @@ network = list("ss13","medbay") }, /obj/item/radio/intercom/directional/west, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 4 }, /obj/effect/turf_decal/tile/blue/anticorner/contrasted{ dir = 1 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "bgV" = ( @@ -6857,7 +6857,6 @@ /turf/open/space, /area/space/nearstation) "cxq" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, @@ -6869,6 +6868,7 @@ name = "Labor Camp Shuttle Lockdown"; req_access = list("brig") }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/security/brig) "cxt" = ( @@ -9560,7 +9560,6 @@ /turf/open/floor/iron, /area/station/science/research) "dBv" = ( -/obj/machinery/disposal/bin, /obj/machinery/airalarm/directional/east, /obj/structure/disposalpipe/trunk{ dir = 1 @@ -9569,6 +9568,7 @@ dir = 8 }, /obj/machinery/light/small/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/cargo/storage) "dBV" = ( @@ -43748,11 +43748,11 @@ /turf/open/floor/iron, /area/station/engineering/atmos/storage/gas) "pIz" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/bot, /obj/structure/disposalpipe/trunk{ dir = 8 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/wood, /area/station/commons/lounge) "pID" = ( @@ -59399,11 +59399,11 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom) "vfO" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/effect/turf_decal/tile/yellow/half/contrasted, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/engineering/break_room) "vfU" = ( diff --git a/_maps/map_files/NorthStar/north_star.dmm b/_maps/map_files/NorthStar/north_star.dmm index 56964860df6..f852fd7d326 100644 --- a/_maps/map_files/NorthStar/north_star.dmm +++ b/_maps/map_files/NorthStar/north_star.dmm @@ -7372,8 +7372,8 @@ /obj/effect/turf_decal/trimline/green/filled/line{ dir = 5 }, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/hallway/floor3/aft) "bPq" = ( @@ -8715,10 +8715,10 @@ /turf/open/floor/iron/white, /area/station/medical/storage) "cgv" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark/side{ dir = 10 }, @@ -16917,11 +16917,11 @@ /area/station/maintenance/floor4/starboard/aft) "enl" = ( /obj/effect/turf_decal/delivery, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 8 }, /obj/machinery/airalarm/directional/east, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/hallway/secondary/service) "enp" = ( @@ -34334,7 +34334,6 @@ /turf/open/floor/iron/grimy, /area/station/security/detectives_office) "iUP" = ( -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 1 }, @@ -34342,6 +34341,7 @@ dir = 1 }, /obj/machinery/newscaster/directional/south, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark/side{ dir = 10 }, @@ -50729,10 +50729,10 @@ /area/station/holodeck/rec_center) "mZS" = ( /obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 9 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/medical/medbay/central) "mZT" = ( @@ -73773,8 +73773,8 @@ /area/station/commons/toilet) "sZb" = ( /obj/structure/disposalpipe/trunk, -/obj/machinery/disposal/bin, /obj/machinery/firealarm/directional/north, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/corner{ dir = 8 }, @@ -79637,10 +79637,10 @@ /obj/machinery/atmospherics/pipe/smart/manifold4w/scrubbers/hidden/layer2, /obj/machinery/atmospherics/pipe/smart/manifold4w/supply/hidden/layer4, /obj/structure/cable, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark/side{ dir = 4 }, @@ -87383,9 +87383,9 @@ /obj/effect/turf_decal/trimline/purple/filled/corner{ dir = 4 }, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk, /obj/machinery/light/cold/no_nightlight/directional/west, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/science/lobby) "wvw" = ( diff --git a/_maps/map_files/tramstation/tramstation.dmm b/_maps/map_files/tramstation/tramstation.dmm index 12ce31d8f33..cce3871f02e 100644 --- a/_maps/map_files/tramstation/tramstation.dmm +++ b/_maps/map_files/tramstation/tramstation.dmm @@ -3636,11 +3636,11 @@ /obj/effect/turf_decal/trimline/neutral/filled/line{ dir = 1 }, -/obj/machinery/disposal/bin, /obj/machinery/status_display/evac/directional/north, /obj/structure/disposalpipe/trunk{ dir = 2 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/commons/dorms) "awi" = ( @@ -8051,7 +8051,6 @@ /turf/open/floor/iron/dark, /area/station/security/courtroom/holding) "bLr" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/red/filled/line{ dir = 5 }, @@ -8062,6 +8061,7 @@ dir = 8 }, /obj/structure/window/reinforced/spawner/directional/south, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/security/office) "bLA" = ( @@ -19128,10 +19128,10 @@ dir = 9 }, /obj/machinery/newscaster/directional/north, -/obj/machinery/disposal/bin, /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/science/lab) "fKg" = ( @@ -21222,11 +21222,11 @@ /obj/effect/turf_decal/trimline/yellow/filled/line{ dir = 9 }, -/obj/machinery/disposal/bin, /obj/machinery/newscaster/directional/north, /obj/structure/disposalpipe/trunk{ dir = 4 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/engineering/main) "gxV" = ( @@ -46998,7 +46998,7 @@ /obj/structure/disposalpipe/trunk{ dir = 1 }, -/obj/machinery/disposal/bin, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/dark, /area/station/command/bridge) "pGS" = ( @@ -54284,13 +54284,13 @@ /turf/open/floor/iron/white, /area/station/science/xenobiology) "skb" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/brown/filled/line{ dir = 10 }, /obj/structure/disposalpipe/trunk{ dir = 1 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron, /area/station/cargo/storage) "ski" = ( @@ -70449,13 +70449,13 @@ /turf/open/floor/iron/white, /area/station/medical/medbay/central) "xSz" = ( -/obj/machinery/disposal/bin, /obj/effect/turf_decal/trimline/blue/filled/line{ dir = 4 }, /obj/structure/disposalpipe/trunk{ dir = 2 }, +/obj/machinery/disposal/bin/tagger, /turf/open/floor/iron/white, /area/station/medical/treatment_center) "xSD" = ( diff --git a/code/modules/recycling/disposal/bin.dm b/code/modules/recycling/disposal/bin.dm index ec7b5c6b2f0..a1a241a136a 100644 --- a/code/modules/recycling/disposal/bin.dm +++ b/code/modules/recycling/disposal/bin.dm @@ -131,7 +131,7 @@ return place_item_in_disposal(I, user) update_appearance() - return 1 //no afterattack + return TRUE //no afterattack else return ..() @@ -327,19 +327,73 @@ desc = "A pneumatic waste disposal unit." icon_state = "disposal" interaction_flags_atom = parent_type::interaction_flags_atom | INTERACT_ATOM_IGNORE_MOBILITY + /// Reference to the mounted destination tagger for disposal bins with one mounted. + var/obj/item/dest_tagger/mounted_tagger // attack by item places it in to disposal -/obj/machinery/disposal/bin/attackby(obj/item/I, mob/user, params) - if(istype(I, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. - var/obj/item/storage/bag/trash/bag = I +/obj/machinery/disposal/bin/attackby(obj/item/weapon, mob/user, params) + if(istype(weapon, /obj/item/storage/bag/trash)) //Not doing component overrides because this is a specific type. + var/obj/item/storage/bag/trash/bag = weapon to_chat(user, span_warning("You empty the bag.")) bag.atom_storage.remove_all(src) update_appearance() else return ..() - // handle machine interaction +/obj/machinery/disposal/bin/attackby_secondary(obj/item/weapon, mob/user, params) + if(istype(weapon, /obj/item/dest_tagger)) + var/obj/item/dest_tagger/new_tagger = weapon + if(mounted_tagger) + balloon_alert(user, "already has a tagger!") + return + if(HAS_TRAIT(new_tagger, TRAIT_NODROP) || !user.transferItemToLoc(new_tagger, src)) + balloon_alert(user, "stuck to your hand!") + return + new_tagger.moveToNullspace() + user.visible_message(span_notice("[user] snaps \the [new_tagger] onto [src]!")) + balloon_alert(user, "tagger returned") + playsound(src, 'sound/machines/click.ogg', 50, TRUE) + mounted_tagger = new_tagger + update_appearance() + return + else + return ..() + +/obj/machinery/disposal/bin/attack_hand_secondary(mob/user, list/modifiers) + . = ..() + if(!mounted_tagger) + balloon_alert(user, "no destination tagger!") + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + if(!user.put_in_hands(mounted_tagger)) + balloon_alert(user, "destination tagger falls!") + mounted_tagger = null + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + user.visible_message(span_notice("[user] unhooks the [mounted_tagger] from [src].")) + balloon_alert(user, "tagger pulled") + playsound(src, 'sound/machines/click.ogg', 60, TRUE) + mounted_tagger = null + update_appearance(UPDATE_OVERLAYS) + return SECONDARY_ATTACK_CANCEL_ATTACK_CHAIN + +/obj/machinery/disposal/bin/examine(mob/user) + . = ..() + if(isnull(mounted_tagger)) + . += span_notice("The destination tagger mount is empty.") + else + . += span_notice("\The [mounted_tagger] is hanging on the side. Right Click to remove.") + +/obj/machinery/disposal/bin/Destroy() + if(!isnull(mounted_tagger)) + QDEL_NULL(mounted_tagger) + return ..() + +/obj/machinery/disposal/bin/on_deconstruction(disassembled) + . = ..() + if(!isnull(mounted_tagger)) + mounted_tagger.forceMove(drop_location()) + mounted_tagger = null + /obj/machinery/disposal/bin/ui_state(mob/user) return GLOB.notcontained_state @@ -419,6 +473,9 @@ if(flush) . += "dispover-handle" + if(mounted_tagger) + . += "tagger_mount" + //only handle is shown if no power if(machine_stat & NOPOWER || panel_open) return @@ -493,6 +550,10 @@ if(user.stat == DEAD || !(user.sight & (SEEOBJS|SEEMOBS))) user.overlay_fullscreen("remote_view", /atom/movable/screen/fullscreen/impaired, 2) +/obj/machinery/disposal/bin/tagger/Initialize(mapload, obj/structure/disposalconstruct/make_from) + mounted_tagger = new /obj/item/dest_tagger(null) + return ..() + //Delivery Chute /obj/machinery/disposal/delivery_chute diff --git a/icons/obj/pipes_n_cables/disposal.dmi b/icons/obj/pipes_n_cables/disposal.dmi index 8487f3dd58c..41207b7a7cd 100644 Binary files a/icons/obj/pipes_n_cables/disposal.dmi and b/icons/obj/pipes_n_cables/disposal.dmi differ diff --git a/modular_nova/modules/aesthetics/disposals/icons/disposals.dmi b/modular_nova/modules/aesthetics/disposals/icons/disposals.dmi index 984cf9a4bb1..4538c6da531 100644 Binary files a/modular_nova/modules/aesthetics/disposals/icons/disposals.dmi and b/modular_nova/modules/aesthetics/disposals/icons/disposals.dmi differ