Oh! Sorry, was typing that from (faulty!) memory. Should be pr, not _pr: const sortHeroSystem = (a,b) => {
const aInt = (parseInt(a.pr)||0);
const aFloat = (parseFloat(a.pr)||0);
const bInt = (parseInt(b.pr)||0);
const bFloat = (parseFloat(b.pr)||0);
if( 12 === aInt && 12 !== bInt){
return -1;
}
if( 12 !== aInt && 12 === bInt){
return 1;
}
return (aFloat - bFloat);
};
Likewise, the above script should be: on("chat:message", function(msg) {
if (msg.type === "api" && msg.content.indexOf("!tor") !== -1) {
const sortTurnOrderDesc = () => {
// get turn order as array of objects
let turns = JSON.parse(Campaign().get('turnorder')||'[]');
// sort descending by priority entry
turns.sort( (a, b) => (parseInt(b.pr)||0) - (parseInt(a.pr)||0) );
// set the turnorder back on campaign as a JSON string
Campaign().set('turnorder', JSON.stringify(turns));
};
// call sort function
sortTurnOrderDesc();
};
});
And finally, integrating that sort function into the API command !sorths : on('ready', () => {
const sortHeroSystem = (a,b) => {
const aInt = (parseInt(a.pr)||0);
const aFloat = (parseFloat(a.pr)||0);
const bInt = (parseInt(b.pr)||0);
const bFloat = (parseFloat(b.pr)||0);
if( 12 === aInt && 12 !== bInt){
return -1;
}
if( 12 !== aInt && 12 === bInt){
return 1;
}
return (aFloat - bFloat);
};
const sortTurnOrderDesc = () => {
let turns = JSON.parse(Campaign().get('turnorder')||'[]');
turns.sort( sortHeroSystem );
Campaign().set('turnorder', JSON.stringify(turns));
};
on("chat:message", function(msg) {
if (msg.type === "api" && /^!sorths\b/i.test(msg.content) && playerIsGM(msg.playerid) ) {
sortTurnOrderDesc();
};
});
});