3)The last problem showed up when I took a stab at the APPOINTED_BY token. The token uses the list of positions that is defined in the entity, so I would assume that a "lookup" type would probably function best in this case. The problem then comes that since the various positions are defined inside of a normal entry, I couldn't see a way to point the lookup to find the defined positions inside of the entity.
I'm reworking the typeData for lookup types to handle this (don't worry, existing data will be backwards compatible).
The new format will start with a "command", either "object" or "token" so far.
"object" works like the current format, where it returns a list of objects that match a type and subtype. "object:ITEM:ITEM_SHOES" to return all "shoe" items in the raws.
"token" is a bit more complex, but it will support to the more advanced feature you will need for things like APPOINTED_BY.
The format is "<objectId>:<TokenName>:<argumentIndex>". So "token:MOUNTAIN:POSITION:0" will return a list of all the POSITION tokens within the MOUNTAIN object (0 for the first argument of that token). There is one more step needed to actually do the APPOINTED_BY token though, "replacements". Anything between a set of "%" in the type data will be replaced with the value of a token in the current object being edited. Anything between "~self~" will represent that the source is from the same object.
Using all this the typeData for APPOINTED_BY would be "token:~self~:POSITION:0" (if I managed to follow my own logic). This will start working in a future version, it's not finalized yet, so don't try to enter tokenData using this format yet.
UPDATEIT WORKS!!!! My crazy scheme actually works! MWAhahahhahahahahhahahaha.
Now I'm off to go stuff myself full of ham.