Problem description:
I need a proc that return a random locate from a square / line around an NPC in the most optimized way possible, something like:
pick(range(5)-range(4)) // In this case the two lists are calculated with all the atoms inside and then subtracted by the second list
I need an proc that return the same thing (locate(x,y,z)) but using only numbers and accounts instead of items from a list, I confess I don't know how to explain.
EDIT: Looking again, I realize you only want the outermost edge. I'm not really sure what the best way to do that might be offhand.
I'll leave it up to you to figure out how to get a line.