refactors some disposals filtering code and remaps some disposals pipes

New things!
/obj/structure/disposalpipe/tagger
 - retags a holder when it passes through
/obj/structure/disposalpipe/tagger/partial - retags a holder when it passes through two times; good for loop detection
/obj/structure/disposalpipe/sortjunction/wildcard - filters out all holders that are tagged
/obj/structure/disposalpipe/sortjunction/untagged - filters out untagged holders

Tagging doesn't use an icky list index system any more, tags are put into a global list and directly checked against.

Changed the map around a bit, disposals is now a proper loop but anything that's not tagged, is tagged with "Disposals" or anything that passes the tagger twice will be filtered out.

Not a feature, just a fix for drones being sad about weird disposals. <3
This commit is contained in:
Boop
2014-06-01 23:30:20 +01:00
parent 6eab07743a
commit 168c39dd54
10 changed files with 291 additions and 242 deletions

View File

@@ -23,7 +23,7 @@
var/obj/item/weapon/matter_decompiler/decompiler = null
//Used for self-mailing.
var/mail_destination = 0
var/mail_destination = ""
/mob/living/silicon/robot/drone/New()

View File

@@ -4,14 +4,14 @@
set desc = "Tag yourself for delivery through the disposals system."
set category = "Drone"
var/tag = input("Select the desired destination.", "Set Mail Tag", null) as null|anything in TAGGERLOCATIONS
var/new_tag = input("Select the desired destination.", "Set Mail Tag", null) as null|anything in tagger_locations
if(!tag || TAGGERLOCATIONS[tag])
mail_destination = 0
if(!new_tag)
mail_destination = ""
return
src << "\blue You configure your internal beacon, tagging yourself for delivery to '[tag]'."
mail_destination = TAGGERLOCATIONS.Find(tag)
src << "\blue You configure your internal beacon, tagging yourself for delivery to '[new_tag]'."
mail_destination = new_tag
//Auto flush if we use this verb inside a disposal chute.
var/obj/machinery/disposal/D = src.loc

View File

@@ -60,9 +60,9 @@
if (href_list["setarea"])
//Probably should consider using another list, but this one will do.
var/t_area = input("Select the area to ping.", "Set Target Area", null) as null|anything in TAGGERLOCATIONS
var/t_area = input("Select the area to ping.", "Set Target Area", null) as null|anything in tagger_locations
if(!t_area || TAGGERLOCATIONS[t_area])
if(!t_area)
return
drone_call_area = t_area