Alright, so hopefully this makes sense.
mob/verb/Find_Mob_By_Tag_In_List()
var/tmp/list/search_list = list()
search_list += src
var/check = locate(src.tag) in search_list
if(check)
world << "Found"
else
world << "Not Found"
Based upon the documentation, the expected behavior for that code snippet would be "find a mob with this tag in this list", and not "find a mob with this tag in the world, and then check to see if that particular instance of the mob is in this list". Right now the latter behavior is what is happening.
I understand that "locate(tag)" returns the first found instance of an atom with that tag in the world, but I would expect "locate(tag) in list" to be searching the list for the atom and not the entire world.
In this demo if you click the Find_Mob_By_Tag_In_List() verb it will return "Found". If you first create a few duplicate mobs (with duplicate tags) using Create_Duplicate_Mob(), then Find_Mob_By_Tag_In_List() will likely return "Not Found".
Demo: http://files.byondhome.com/SilkGames/bugs/TagBug_src.zip
So working off the assumption that no two identical tags exist, the locate() in list syntax for tags should not be necessary.