"
Something like having filter.key as a string or something like that could work.
example:
filters += filter("outline", color = "#00cc00", size = 2, tag= "healing_glow")
so that we could
for(var/filter/F in filters)
if(filter.key = "healing_glow") //If this variable was untyped, that could be cool because hexadecimals evaluate faster :)
animate(F, size = 5, time = 30, looping = 1) //Make the outline pulse slowly
Perhaps being able to locate() via the key could work too?
This would make working with large amounts of filters a lot easier, as currently you need to code a system to add or remove specific filters or keep track of the explicit order of the filters that have been added if you want to do things like animate them.
Since filters are not true objects, locate() won't work with this; it wouldn't be a "true" tag. In fact to clarify the distinction I might go with "name" as the attribute instead of "tag".
But I do think this would be feasible in the following forms:
1) Reading filter.name
2) Grabbing a filter reference via filter[name]
3) Subtracting a name from a filter list to remove it
The #2 option also means there's a potentially different way to handle instantiated filter references that I should look into, that would be superior to the current method used for unnamed filters.