// 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();
});