This is a quick and dirty script written for Saevar. It will create the specified attribute on character sheets represented by all tokens you have selected, if the attribute does not already exist. It will then add a red dot to any tokens that do not represent a character sheet. The --current and --max values below are optional and do not need to be included in the macro/api command at all. Usage: !createattributes --Attribute Name --current --max !ca --Attribute Name --current --max Examples: !ca --?{Attribute Name|} !ca --?{Attribute Name|} --?{Current Value|} --?{Max Value|} // CREATE ATTRIBUTES ON CHARACTER SHEETS FOR SELECTED TOKENS // BY: HoneyBadger // VERSION: 1.0 // API COMMAND HANDLER on("chat:message", function(msg) {     if (msg.type !== "api") return;     var command = msg.content.split(" ")[0];     var attribute = msg.content.split(" --")[1];     var current = msg.content.split(" --")[2] || "";     var max = msg.content.split(" --")[3] || "";     if (command === "!createattributes" || command === "!ca") {         if (msg.selected !== undefined) {             if (attribute === "" || attribute === undefined) {                 sendChat("ERROR", "/w GM You must specify the name of the attribute you want to create.");             } else {                 _.each(msg.selected, function(a) {                     var token = getObj("graphic", a._id);                     if (token.get("represents") != "") {                         var character = getObj("character", token.get("represents"));                         if (getAttrByName(character.id, attribute) === undefined) {                             createObj("attribute", {                                 name: attribute,                                 current: current,                                 max: max,                                 characterid: character.id                             });                         } else {                             sendChat("ERROR", "/w GM That attribute already exists.");                         }                     } else {                         token.set("status_red", true);                     }                 });             }         } else {             sendChat("ERROR", "/w GM You do not have any tokens selected.");         }     } });