DisFanJen said: Brian said: DisFanJen said: Now the way I expected the &{tracker} to work when linked to a macro on a specific person's sheet is that it would just look at the linked token on the current sheet and use that but this doesn't seem to be the case which means that a player would have to select their own token before hitting the Initiative macro which seems to be a little counter intuitive. So is it possible so do this functionality is some way short of hitting the API? If not then my players will just have to get used to selecting their token before running the macro but it'd be nice if I moved them to the right page, said 'everyone roll init' and all they had to do was hit the macro. No; achieving this without selecting the token would require the API. The tracker is based on tokens, and it's possible to link multiple tokens to the same character sheet in the journal, so going by character isn't necessarily productive. Well, I wouldn't consider it unproductive from a player point of view given they usually only play one character and so one token and without being able to see the code I can't see it being a major bit of code work. (please, before people rant that I have no idea what would be needed, I am a developer specialising in web apps so I can make at least an educated guess). However that's pretty much the answer I expected and it's not a great hardship. I'm just working with at least two new players and anythig to make the exprerience easier is good. :) No, it wouldn't be particularly difficult to write. However, there are games where players have control of multiple "characters" in Roll20 (which aren't necessarily always actual characters in the game), there are games where multiple tokens link to the same character, there are games where players are given control of a token directly without linking to a character, and there are games where players forget or don't desire to set themselves to speaking as a character they have control of. Getting the player's token would be something to the effect of: var name = msg.who; var characters = findObjs({ _type: 'character', name: name }); if(characters.length == 0) // Player isn't speaking as a character { characters = filterObjs(function(obj) { if(obj.get('type') != 'character') return false; return obj.get('controlledby') == 'all' || obj.get('controlledby').indexOf(msg.playerid) >= 0; }); } if(characters.length == 0) return; // Player controls NO characters var tokens = filterObjs(function(obj) { if(obj.get('type') != 'graphic' || obj.get('subtype') != 'token') return false; var representsCharacter = false; _.each(characters, function(c) { representsCharacter = representsCharacter || (obj.get('represents') == c.id); }); return representsCharacter || obj.get('controlledby') == 'all' || obj.get('controlledby').indexOf(msg.playerid) >= 0; }); // If the player posted a message while speaking as a character, `tokens' is an array of token objects which // each represent a character with the same name. If the player posted a message while speaking as a player, // `tokens' is an array of token objects which each represent a character that the player can control. // The `tokens' array will also include all tokens the player has control of but which don't represent any character. I'm not sure I'd automatically add all of the tokens in the `tokens' array from the above snippet into the turn tracker like &{tracker} does, as you may get false-positives (for example, I've seen people make tokens of equipment lying around the dungeon), but using the above and only updating the initiative value for existing tokens in the tracker should be sufficient for most purposes.