mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-04 14:01:22 +00:00
Package delivery sorter fix, autodocs (#72865) ## About The Pull Request On some maps, there is a special disposal sorting pipe, which checks if the `tomail` var of a disposal holder. However, this has been only be set on the parent disposal object. The delivery chute and the disposal bin overrode this behaviour without a parent call. I have elected to remove the two identical overrides, and move their contents to the parent, while also swapping out the `1` to the correct sorting define of the same value. I have also updated the disposal holder object merging proc. I have also autodocced proc and var definiton in the files I have touched. ## Why It's Good For The Game Now once again, the wrapper sorter objects will detect wrapped packages, and on maps that support them, will be redirected to the mail outlet chute (along with any other item in the same holder object as usual), instead of the trash outlet chute.  ## Changelog 🆑 fix: Bundles of disposal packages that contain a wrapped parcel will be now successfully redirected by the wrapping sorters /🆑 Co-authored-by: Profakos <profakos@gmail.com>
92 lines
3.2 KiB
Plaintext
92 lines
3.2 KiB
Plaintext
// A three-way junction that sorts objects based on check_sorting(H) proc
|
|
// This is a base type, use subtypes on the map.
|
|
/obj/structure/disposalpipe/sorting
|
|
name = "sorting disposal pipe"
|
|
desc = "An underfloor disposal pipe with a sorting mechanism."
|
|
icon_state = "pipe-j1s"
|
|
initialize_dirs = DISP_DIR_RIGHT | DISP_DIR_FLIP
|
|
|
|
/obj/structure/disposalpipe/sorting/nextdir(obj/structure/disposalholder/H)
|
|
var/sortdir = dpdir & ~(dir | turn(dir, 180))
|
|
if(H.dir != sortdir) // probably came from the negdir
|
|
if(check_sorting(H)) // if destination matches filtered type...
|
|
return sortdir // exit through sortdirection
|
|
|
|
// go with the flow to positive direction
|
|
return dir
|
|
|
|
/// Sorting check, to be overridden in subtypes
|
|
/obj/structure/disposalpipe/sorting/proc/check_sorting(obj/structure/disposalholder/H)
|
|
return FALSE
|
|
|
|
// Mail sorting junction, uses package tags to sort objects.
|
|
/obj/structure/disposalpipe/sorting/mail
|
|
flip_type = /obj/structure/disposalpipe/sorting/mail/flip
|
|
var/sortType = 0
|
|
// sortType is to be set in map editor.
|
|
// Supports both singular numbers and strings of numbers similar to access level strings.
|
|
// Look at the list called TAGGERLOCATIONS in /_globalvars/lists/flavor_misc.dm
|
|
var/list/sortTypes = list()
|
|
|
|
/obj/structure/disposalpipe/sorting/mail/flip
|
|
flip_type = /obj/structure/disposalpipe/sorting/mail
|
|
icon_state = "pipe-j2s"
|
|
initialize_dirs = DISP_DIR_LEFT | DISP_DIR_FLIP
|
|
|
|
/obj/structure/disposalpipe/sorting/mail/Initialize(mapload)
|
|
. = ..()
|
|
// Generate a list of soring tags.
|
|
if(sortType)
|
|
if(isnum(sortType))
|
|
sortTypes |= sortType
|
|
else if(istext(sortType))
|
|
var/list/sorts = splittext(sortType,";")
|
|
for(var/x in sorts)
|
|
var/n = text2num(x)
|
|
if(n)
|
|
sortTypes |= n
|
|
|
|
/obj/structure/disposalpipe/sorting/mail/examine(mob/user)
|
|
. = ..()
|
|
if(sortTypes.len)
|
|
. += "It is tagged with the following tags:"
|
|
for(var/t in sortTypes)
|
|
. += "\t[GLOB.TAGGERLOCATIONS[t]]."
|
|
else
|
|
. += "It has no sorting tags set."
|
|
|
|
/obj/structure/disposalpipe/sorting/mail/attackby(obj/item/I, mob/user, params)
|
|
if(istype(I, /obj/item/dest_tagger))
|
|
var/obj/item/dest_tagger/O = I
|
|
|
|
if(O.currTag)// Tagger has a tag set
|
|
if(O.currTag in sortTypes)
|
|
sortTypes -= O.currTag
|
|
to_chat(user, span_notice("Removed \"[GLOB.TAGGERLOCATIONS[O.currTag]]\" filter."))
|
|
else
|
|
sortTypes |= O.currTag
|
|
to_chat(user, span_notice("Added \"[GLOB.TAGGERLOCATIONS[O.currTag]]\" filter."))
|
|
playsound(src, 'sound/machines/twobeep_high.ogg', 100, TRUE)
|
|
else
|
|
return ..()
|
|
|
|
/obj/structure/disposalpipe/sorting/mail/check_sorting(obj/structure/disposalholder/H)
|
|
return (H.destinationTag in sortTypes)
|
|
|
|
|
|
|
|
|
|
// Wrap sorting junction, sorts objects destined for the mail office mail table (tomail = TRUE)
|
|
/obj/structure/disposalpipe/sorting/wrap
|
|
desc = "An underfloor disposal pipe which sorts wrapped and unwrapped objects."
|
|
flip_type = /obj/structure/disposalpipe/sorting/wrap/flip
|
|
initialize_dirs = DISP_DIR_RIGHT | DISP_DIR_FLIP
|
|
|
|
/obj/structure/disposalpipe/sorting/wrap/check_sorting(obj/structure/disposalholder/H)
|
|
return H.tomail
|
|
|
|
/obj/structure/disposalpipe/sorting/wrap/flip
|
|
icon_state = "pipe-j2s"
|
|
flip_type = /obj/structure/disposalpipe/sorting/wrap
|
|
initialize_dirs = DISP_DIR_LEFT | DISP_DIR_FLIP
|