Disposal bins can now hold a destination tagger, and adds a few throughout maps. (#81991)

## About The Pull Request

![image](https://github.com/tgstation/tgstation/assets/41715314/5af9517f-ef5f-4284-aa87-bbf17170570e)
_Pictured, a disposal bin with a mounted destination tagger._

Disposal bins now have a dedicated mount where they can hold a
destination tagger, allowing for crewmates to more easily send items
through disposals to other departments. This can be especially useful
when on larger maps, or when cooperating on larger maps with remote
resources like on viro/xenobio.

All disposal bins can hold a destination tagger, but select ones on maps
have one pre-loaded.
Disposal bins can be removed with an empty hand and right click, and
re-attached with right click as well.

## Why It's Good For The Game

This helps assist with crew cooperation on maps where remote or
otherwise inaccessible departments have to really work to cooperate and
send resources, this chips away at the barrier of entry by giving most
departments a way to send resources back and forth as necessary through
the disposals network. It ALSO allows for additional opportunities for
players to send dangerous items like bombs or grenades through disposals
using destination taggers indirectly 👍

## Changelog

🆑
add: Disposal bins can now hold destination taggers using right click,
and can be removed the same way. Some disposal bins should have some
pre-loaded as well.
/🆑

---------

Co-authored-by: san7890 <the@san7890.com>
Co-authored-by: Jordan Dominion <Cyberboss@users.noreply.github.com>
This commit is contained in:
ArcaneMusic
2024-03-18 01:23:31 +00:00
committed by GitHub
co-authored by san7890 Jordan Dominion
parent 34b9af5358
commit c3d3d92eea
8 changed files with 106 additions and 51 deletions
+6 -9
View File
@@ -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" = (
@@ -24766,9 +24766,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" = (
@@ -57432,8 +57432,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
},
@@ -63470,10 +63470,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" = (
@@ -65229,8 +65226,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" = (
+8 -11
View File
@@ -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" = (
@@ -17952,7 +17952,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" = (
@@ -22027,7 +22027,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;
@@ -22037,6 +22036,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/machinery/disposal/bin/tagger,
/turf/open/floor/iron,
/area/station/hallway/secondary/entry)
"fux" = (
@@ -27314,7 +27314,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
@@ -27323,6 +27322,7 @@
/obj/effect/turf_decal/tile/neutral{
dir = 4
},
/obj/machinery/disposal/bin/tagger,
/turf/open/floor/iron,
/area/station/security/brig)
"gIc" = (
@@ -38975,7 +38975,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{
@@ -38985,6 +38984,7 @@
dir = 4
},
/obj/machinery/light/directional/west,
/obj/machinery/disposal/bin/tagger,
/turf/open/floor/iron,
/area/station/science/lab)
"jFb" = (
@@ -51496,16 +51496,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" = (
@@ -60184,7 +60181,6 @@
},
/area/station/commons/fitness/recreation)
"pen" = (
/obj/machinery/disposal/bin,
/obj/effect/turf_decal/bot,
/obj/structure/disposalpipe/trunk{
dir = 1
@@ -60193,6 +60189,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" = (
@@ -70545,7 +70542,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{
@@ -70555,6 +70551,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" = (
@@ -11420,8 +11420,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" = (
@@ -19049,8 +19049,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
},
@@ -60408,9 +60408,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" = (
@@ -61419,7 +61419,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" = (
@@ -74205,8 +74205,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
},
+6 -6
View File
@@ -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" = (
@@ -43745,11 +43745,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" = (
@@ -59390,11 +59390,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" = (
+8 -8
View File
@@ -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
},
@@ -16918,11 +16918,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" = (
@@ -34335,7 +34335,6 @@
/turf/open/floor/iron/grimy,
/area/station/security/detectives_office)
"iUP" = (
/obj/machinery/disposal/bin,
/obj/structure/disposalpipe/trunk{
dir = 1
},
@@ -34343,6 +34342,7 @@
dir = 1
},
/obj/machinery/newscaster/directional/south,
/obj/machinery/disposal/bin/tagger,
/turf/open/floor/iron/dark/side{
dir = 10
},
@@ -50730,10 +50730,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" = (
@@ -73774,8 +73774,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
},
@@ -79640,10 +79640,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
},
@@ -87390,9 +87390,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" = (
+7 -7
View File
@@ -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" = (
@@ -47013,7 +47013,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" = (
@@ -54298,13 +54298,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" = (
@@ -70456,13 +70456,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" = (
+66 -5
View File
@@ -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
Binary file not shown.

Before

Width:  |  Height:  |  Size: 126 KiB

After

Width:  |  Height:  |  Size: 120 KiB