GM said: !forselected token-mod ...snip... {&select HUDBlocker*} what on earth is “…snip…” ? Is it where inject some code? That "...snip..." is a reference to the rest of the TokenMod line that you would be using... but which I just dropped from typing in since I don't have it. Example Imagine wanting to move tokens up (screen north) by a number of map units equal to their speed (an attribute on the character). You might start with a TokenMod command of: !token-mod --set top|-@{selected|speed}u That works great for a single token. In fact, TokenMod works with all selected tokens, so it works well with a bunch of tokens that have the same speed (since the speed attribute will be resolved before TokenMod sees the command line, all of the tokens will move the same number of map units). However, the command line starts to give improper results if the tokens you have selected have different speeds. You need to get individual, token-specific speeds and then process each individually. That's what forselected does for you. However, if you just put forselected on the beginning of your TokenMod call, you aren't gaining anything, since the speed attribute is already resolved: ***The below line does NOT produce individual results*** !forselected token-mod --set top|@{selected|speed}u By the time forselected would dispatch individual messages, the speed attribute from the first selected token would have been resolved, and every message will get that same value. To get individual results, we delay the resolution of the speed attribute until we're in the individual messages. We do that with Fetch constructions (instead of Roll20 syntax) for the speed attribute, and deferral characters we declare as a part of the forselected handle: !forselected(^) token-mod --set top|@^(selected.speed)u Now, the final step might be to select the tokens automatically so you don't have to select them manually on the game-board. We'd do that by including the {&select...} tag from SelectManager: !forselected(^) token-mod --set top|@^(selected.speed)u {&select HUDBlocker*} Again, since I didn't know what your TokenMod command line would look like (as it related to your HUD), I just inserted the "...snip...". Also, just as a side note, Fetch exposes a metascript construction to get the left and top properties of a token: @(selected.top) @(selected.left) ...if that helps. Coding If you are just getting into coding, welcome! I've peeked at your repo and it looks like you're doing well! Just some general feedback: a lot of your code references specific token IDs; that will make your code less portable or flexible. You couldn't take it to another game, for instance. I would suggest a way to designate tokens on the fly -- either in the command line, or by requiring a token to have a particular kind of name (like HUDBlocker01, HUDBlocker02, etc.), or keeping a store of token ids in your state object so that once identified the game can keep track of those tokens going forward. These options are discussed in the linked thread (below), but ask any questions you might come up with. =D here are some links providing a good primer for getting started coding scripts on Roll20. There's a lot of information to process, but like I said, you have a good start already! there are a couple of scripts that will be your friend along the way as you work on your mods (both are available in the 1-click). ScriptInfo - can help disambiguate line numbers in error messages, letting you more quickly identify where the problem might lie. See the thread for both usage and for setting up your scripts to work with it (it amounts to adding about 3 lines of code to your script). Inspector - lets you crawl over game objects and get a look at properties and the information stored there. Regarding your script example, above, and your question about "get"... you will need to use get() for just about every object property other than id. Also, your HUD_BLOCKER object is not defined in the snippet you provided; if it isn't defined at a higher scope this code has access to, that will throw an error. Your code (as it was posted) used ChatSetAttr. Subsequently you mentioned realizing that TokenMod was the better script to use for manipulating tokens. (To be clear, the metascript options, above, would work from chat -- you wouldn't have to construct a mod to send those commands.) While TokenMod can do what you want to do, I say if you are going to the effort to write a mod to learn about coding and scripting, then go all the way and learn what it takes to position a token. You will want to review the notes about get() and set() in the opening paragraphs of this page . Also, I would suggest familiarizing yourself with .forEach() , .map() , .filter() , and .reduce() as they are powerful tools that can shorten the length of your code. For instance, in your code snipped from your first post, the for-loop could be driven right off of the array of returned objects with a .forEach(), and you wouldn't have to go through the steps of reacquiring the iterated element: let toks = findObjs({type:'graphic', represents: HUD_BLOCKER.id}); log(`Returned ${toks.length} tokens representing that ID.` toks.forEach((t,i) => { log(`Token ${i} has an ID of ${t.id} and is named ${t.get('name')}`); });