First off, I had the same thought about tokens vs puzzle boards and knowing UO, they probably are the same item type, but there are some easy fixes for that, no worries! as for your puzzle identification sub, you can model it something like this:
sub PuzzleID
if (pixel=whatever) {
return 1
}
if (pixel=whatever) {
return 2
}
if (pixel=whatever) {
return 3
}
if (pixel=whatever) {
return 4
}
if (pixel=whatever) {
return 5
}
if (pixel=whatever) {
return 6
}
if (pixel=whatever) {
return 7
}
if (pixel=whatever) {
return 8
}
if (pixel=whatever) {
return 9
}
if (pixel=whatever) {
return 10
}
if (pixel=whatever) {
return 11
}
if (pixel=whatever) {
return 12
}
if (pixel=whatever) {
return 13
}
if (pixel=whatever) {
return 14
}
if (pixel=whatever) {
return 15
}
return 16 ;You can only get here if it fails everything else!
Basically just 15 "if" statements and you "return" as soon as it identifies itself. Just a note, if we're using the numbering system that I used in my puzzle board picture, it wouldn't be 1, 2, 3, 4, etc it would be whatever order i put them in (6,8,11,1210,7,15,3....etc)