Aaron....thanks, I might be able to do it that way if I can automate it (I currently use a script to do the token setup): var gm = "Jens F. (GM)"; var x = ""; var turnorder = []; var tokenSheets = {}; function AddToTurnOrder(id, mv, name) { turnorder.push( { id: id, pr: mv + "", custom: name}); turnorder.sort(function(a,b) { return b.pr - a.pr}); log("turnorder:" + JSON.stringify(turnorder)); Campaign().set("turnorder", JSON.stringify(turnorder)); } on("chat:message", function(msg) { log(msg.type + ":" + msg.who + ":" + msg.content); if (msg.type == 'whisper' && msg.who == gm && msg.content == "!CombatBegins") { Campaign().set("initiativepage", false ); var tokens = findObjs({ _pageid: Campaign().get("playerpageid"), _type: "graphic" }); var templates = {}; turnorder = []; tokens.forEach(function(token) { var name = token.get('name'); var subtype = token.get('_subtype'); var tokenid = token.get('_id'); var pageid = token.get('_pageid'); var characterid = token.get('represents'); var page = getObj("page", pageid); if (characterid) { var character = getObj("character", characterid); tokenSheets[tokenid] = character; var mv = getAttrByName(character.id, "Speed"); character.get('gmnotes', function(gmnotes) { log(name + "-" + mv); if (gmnotes.indexOf('template') == 0) { sendChat(gm, "/w gm template token=" + name ); if (typeof(templates[name]) == 'undefined') { templates[name] = 0; } var serial = templates[name]; serial++; templates[name] = serial; var mookName = name + ' ' + serial; AddToTurnOrder("-1", mv, mookName); token.set('name', mookName); token.set('represents',null); } else { AddToTurnOrder(tokenid, mv); } }); } } ); Campaign().set("initiativepage", true ); return; } // unrelated code to do other stuff };