Thanks, guys! Aaron, that sounds interesting, though also sounds complicated in my case since the @{target|...} is an optional argument among others. Seems like I would have to test for @{target|...}, then if true strip everything else out of msg.content to properly build the API button? This is in reference to the Spawn default token script we discussed a couple days ago. I currently only require one argument: the name of the "character" to spawn. I also currently require a selected token to be the default origin for the spawned token (and some other stuff), but want to allow for optional user input to drop it on/near a target token. Something like: !Spawn {{
--spawnTok|GenericSpellAoE //required, name of character sheet whose default token will spawn
--spawnOriginID|@{Target|Target Token|token_id} //optional, reference point for spawn origin. default is selected token
--offset|0,1 //optional, offset (in squares) from the reference origin
--sheet|Bilbo Baggins //optional, char sheet to look for ability. default is selected token's sheet
--ability|SpellTemplate //optional, ability to call after spawn
}} The --sheet and --ability args are there if user wants to automatically call an ability after the spawn occurs (e.g. keithcurtis' SpellFX chat menu ability, existing attack/damage templates, etc.). Note that "--sheet" also defaults to the character sheet of the selected token if omitted. There is another optional argument not shown above (--side|#) to set the currentSide of the token automatically as an alternative to a chat menu ability. Everything pretty much works so far except for this target business. I dunno, maybe it would be easiest to use Gigs' suggestion with @{selected|character_id}, and just make that a 2nd required argument if @target is used. Then, just have @target override @selected for the spawn origin if both are included in the args list, but keep @selected around for the other defaults. While requiring more user diligence to set up (and more error handling), at least it wouldn't require any more clicks to execute. Sigh, seems like this may need to have a --help soon. Or maybe I'm just making things too complicated. [Checks bastardized spaghetti code:] No, I'm *definitely* am making things too complicated ;)