Skip to content

Instantly share code, notes, and snippets.

@SteveKoontz
Created December 30, 2014 04:56
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save SteveKoontz/618d5db09496ea550f91 to your computer and use it in GitHub Desktop.
Save SteveKoontz/618d5db09496ea550f91 to your computer and use it in GitHub Desktop.
Savage Worlds Initiative Helper
var iniobj = {
to: [],
po: [],
iniOn: false
};
var inicheck = function() {
iniobj.po = iniobj.to;
iniobj.to = JSON.parse(Campaign().get('turnorder'));
};
var reorder = function() {
if(iniobj.iniOn === true && (_.isArray(iniobj.to) && _.isArray(iniobj.po) && !_.isEqual(iniobj.to[0],iniobj.po[0]) ) || (_.isArray(iniobj.to) && ! _.isArray(iniobj.po))){
var currentorder = iniobj.to;
currentorder = _.sortBy(currentorder, function(entry) {
entry.pr = entry.pr + "";
//var suit = window.escape(entry.pr.substring(entry.pr.length-1, entry.pr.length));
var suit = escape(entry.pr.substring(entry.pr.length-1, entry.pr.length));
var card = entry.pr.substring(0, entry.pr.length-1);
var cardval = 0;
if(entry.pr == "RJo") {
cardval = 15;
}
else if(entry.pr == "BJo") {
cardval = 0;
}
else if(suit === "%u2666" || suit === "%u2665" || suit === "%u2660" || suit === "%u2663") {
switch(card) {
case "A":
cardval = 14;
break;
case "K":
cardval = 13;
break;
case "Q":
cardval = 12;
break;
case "Ja":
cardval = 11;
break;
default:
cardval = parseInt(card, 10);
break;
}
switch(suit) {
case "%u2666": //diamond
cardval = cardval + 0.2;
break;
case "%u2665": //heart
cardval = cardval + 0.3;
break;
case "%u2660": //spade
cardval = cardval + 0.4;
break;
case "%u2663": //club
cardval = cardval + 0.1;
break;
}
}
else {
cardval = parseInt(entry.pr, 10);
}
if(!_.isFinite(cardval)) cardval = 0;
return cardval;
});
currentorder.reverse();
Campaign().set("turnorder", JSON.stringify(currentorder));
};
};
on('chat:message', function(msg) {
// Check for "!ini" command
if(msg.type == 'api' && msg.content.indexOf('ini') !== -1) {
//Open Tracker if not open
if(Campaign().get('initiativepage') === false) {
Campaign().set('initiativepage', true);
};
//Setup iniobj
inicheck();
//Toggle On/Off
iniobj.iniOn = iniobj.iniOn === false ? iniobj.iniOn = true : iniobj.iniOn = false;
if(iniobj.iniOn === true) {log('Ini Script ON')} else {log('Ini Script OFF')}
};
});
//Reorder Tracker
on('change:campaign:turnorder', function() {
inicheck();
reorder();
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment