I was wondering if I could quickly hack ChatSetAttr in order to set character abilities, not attributes. Turns out I could! Rough documentation (it generally works similarly to the way ChatSetAttr does): The main commands are !setability for creating/setting and !delability for deleting abilities. The targeting options --sel, --all, --allgm, --allplayers, --charid, --name are the same as in ChatSetAttr. Other supported command line options shared with ChatSetAttr are --nocreate, --evaluate, --silent, --mute. The --replace option is available, but works differently from the way it functions in ChatSetAttr. (see explanation later) You can insert character attributes by wrapping it in double percentages, e.g. %%character_id%% will insert the character's id into the specified point in the ability. The only new option is --token, which will set the selected abilities to be token abilities. You can specify a pair of ability name and ability text by --abilityname#abilitytext . Omitting '#' will create an empty ability if none exists, and will otherwise leave the ability text unchanged (this is useful for just making actions token actions via --token). Just for !delability: --deleteall will delete all abilities for the specified characters. Code is here . Disclaimer: This is not well-tested at all, so there are probably lots of bugs! Replacers for --replace: This has been changed from the way it works in ChatSetAttr to make it both more useful and less confusing. A table of replaced characters follows: Input Replacement \[ [[ \] ]] ~ - \q ? \at @ \p % \amp & \h # Example: The command !setability --all --token --Initiative#\p{%%character_id%%|initiative} will give all characters a token action ability called Initiative, with text %{CHARID|initiative}, where CHARID is the character's id.