Aaron, I tried to update my default marker script to include this as a solution, this isn't working (bolded is attempting to do what yours attempts): // Configure which attribute should be linked to which marker var CONFIG = [ {attribute: "Melee", marker: "red"}, {attribute: "Reaction", marker: "green"}, {attribute: "Shield", marker: "blue"}, {attribute: "Range", marker: "brown"}, {attribute: "Readied", marker: "yellow"}, {attribute: "Dropped", marker: "pink"}, {attribute: "Focus", marker: "purple"}, {attribute: "Critical", marker: "flying-flag"}, {attribute: "Fumble", marker: "black-flag"}, {attribute: "Torch", marker: "three-leaves"}, {attribute: "MageArmor", marker: "overdrive"}, {attribute: "TerrainPenalty", marker: "snail"}, {attribute: "ToolorReach", marker: "spanner"}, {attribute: "AlcoholDrinks", marker: "drink-me"}, {attribute: "DrunkenState", marker: "edge-crack"}, {attribute: "AsleepExhaust", marker: "sleepy"}, {attribute: "PassStealth", marker: "ninja-mask"}, {attribute: "PassOdor", marker: "half-haze"}, {attribute: "PassPerception", marker: "bleeding-eye"} ]; // Translate an attribute string to a marker value including some error checking // Returns null if the attribute can't be shown in a marker function attributeToMarker(attributeValue) { var markerValue = 0; attributeValue = attributeValue.trim(); if (attributeValue === "") return false; markerValue = parseInt(attributeValue); if (markerValue === 0) return false; else if (markerValue === 1) return true; else if (!markerValue || markerValue < 0) return null; else return markerValue; } // This is needed to so that tokens that are dragged on the table top from the journal // get markers on('ready', function() { on('add:token', function(obj){ var charId = obj.get("represents"); if (charId) { var ACByCharID = findObjs(({ _type: "attribute", name: 'AC', _characterid: charId }, {caseInsensitive: true})); if (ACByCharID) { obj.set('bar3_value', ACByCharID); } CONFIG.forEach(function(opts) { var attribute = findObjs({ _type: "attribute", name: opts.attribute, _characterid: charId })[0]; if (attribute) { var attributeValue = attribute.get("current"); var markerValue = attributeToMarker(attributeValue); if (markerValue === null) { log("Attribute value not valid!"); return; } obj.set("status_" + opts.marker, false); var wings = ''; while(markerValue > 0) { // get current digit, starting from ones var digit = markerValue / 10; digit -= Math.floor(digit); digit = Math.round(digit * 10); // shift markerValue markerValue = Math.floor(markerValue / 10); wings += opts.marker +'@'+digit+','; } if(wings.length > 0) wings = wings.substring(0, wings.length - 1); // trim trailing comma var markers = obj.get('statusmarkers'); if(markers != '') markers += ','; markers += wings; obj.set('statusmarkers', markers); } }); } }); }); any idea?