// Github: https://github.com/dedurrett/ // By: David E. Durrett Jr. // Contact: https://app.roll20.net/users/76/davemania // API Commands: // !token-fate - Execute while you have a group of tokens selected for best results var TokenFate = TokenFate || (function() { 'use strict'; var version = '1.0.0', lastUpdate = 1557259184, selectedToken = "", checkInstall = function() { log('TokenFate v'+version+' ['+(new Date(lastUpdate*1000))+']'); }, // Line Feed character is sometimes replaced at end of line 19: outputSelectedToken = function (tokenName) { sendChat("", "/desc "); sendChat("", "/direct
Fate has chosen: " + tokenName + "
"); }, randomSelection = function (tokens) { if( tokens.length ) { var i = randomInteger(tokens.length)-1; selectedToken = tokens[i].get("name"); if (selectedToken == null) { randomSelection(_.without(tokens,tokens[i])); return; } if (selectedToken == "") { if (tokens[i].get("represents") != "" && tokens[i].get("represents") != null){ selectedToken = getObj("character", tokens[i].get("represents")).get("name"); } } if (selectedToken == "") { randomSelection(_.without(tokens,tokens[i])); return; } outputSelectedToken(selectedToken); } else { outputSelectedToken("No Token"); } }, handleMessages = function(msg) { if('api' !== msg.type ) { return; } var args = msg.content.split(/\s+/), objs; switch(args.shift()) { case '!token-fate': objs = _.chain(msg.selected) .map(function(o){ return getObj(o._type,o._id); }) .reject(_.isUndefined) .value(); randomSelection(objs); break; } }, registerEventHandlers = function(){ on('chat:message',handleMessages); }; return { CheckInstall: checkInstall, RegisterEventHandlers: registerEventHandlers }; }()); on('ready',function(){ 'use strict'; TokenFate.CheckInstall(); TokenFate.RegisterEventHandlers(); });