Here you go Julexar Seems I deleted the game that had my modified list but this is the original code havent tested this in 2+ years, but seeing you've used Kristy work and enjoyed her stuff, you might like this. I dont think she officially published this when I was in communication with her at the time. Perhaps more can be done with this wonderful script. // Loot generator for D&D 5e
// Created by Kirsty (<a href="https://app.roll20.net/users/1165285/kirsty" rel="nofollow">https://app.roll20.net/users/1165285/kirsty</a>)
// API Commands:
// !genLoot - Pulls up the menu and allows the GM to generate random loot
// Red Colour: #7E2D40
var LootGenerator = LootGenerator || (function() {
'use strict';
var version = '1.0.2',
handleInput = function(msg) {
var args = msg.content.split(",");
if (msg.type !== "api") {
return;
}
if(playerIsGM(msg.playerid)){
switch(args[0]) {
case '!genLoot':
lootMenu();
break;
case '!showLoot':
showLoot(msg);
break;
}
}
},
lootMenu = function() {
var colour = '#7E2D40';
var divstyle = 'style="width: 189px; border: 1px solid black; background-color: #ffffff; padding: 5px;"';
var astyle1 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 100px;';
var astyle2 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 150px;';
var arrowstyle = 'style="border: none; border-top: 3px solid transparent; border-bottom: 3px solid transparent; border-left: 195px solid ' + colour + '; margin-bottom: 2px; margin-top: 2px;"';
var headstyle = 'style="color: ' + colour + '; font-size: 18px; text-align: left; font-variant: small-caps; font-family: Times, serif;"';
var substyle = 'style="font-size: 11px; line-height: 13px; margin-top: -2px; font-style: italic;"';
sendChat('Loot Generator', '/w gm <div ' + divstyle + '>' + //--
'<div ' + headstyle + '>Loot Generator</div>' + //--
'<div ' + substyle + '>Menu (v.' + version + ')</div>' + //--
'<div ' + arrowstyle + '></div>' + //--
'<div style="text-align:center;"><a ' + astyle2 + '" href="!showLoot,?{Challenge Rating|0-4,individual0|5-10,individual5|11-16,individual11|17+,individual17},?{Number of Enemies|1}">Individual Loot</a></div>' + //--
'</div>'
);
},
showLoot = function(msg) {
var args = msg.content.split(",");
var totalLoot;
switch(args[1]) {
case 'individual0':
totalLoot = individual0(msg);
break;
case 'individual5':
totalLoot = individual5(msg);
break;
case 'individual11':
totalLoot = individual11(msg);
break;
case 'individual17':
totalLoot = individual17(msg);
break;
}
var colour = '#7E2D40';
var divstyle = 'style="width: 189px; border: 1px solid black; background-color: #ffffff; padding: 5px;"'
var astyle1 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 100px;';
var astyle2 = 'style="text-align:center; border: 1px solid black; margin: 1px; padding: 2px; background-color: ' + colour + '; border-radius: 4px; box-shadow: 1px 1px 1px #707070; width: 150px;';
var tablestyle ='style="text-align:center; font-size: 12px; width: 100%"';
var arrowstyle = 'style="border: none; border-top: 3px solid transparent; border-bottom: 3px solid transparent; border-left: 195px solid ' + colour + '; margin-bottom: 2px; margin-top: 2px;"';
var headstyle = 'style="color: ' + colour + '; font-size: 18px; text-align: left; font-variant: small-caps; font-family: Times, serif;"';
var substyle = 'style="font-size: 11px; line-height: 13px; margin-top: -2px; font-style: italic;"';
var trstyle = 'style="border-top: 1px solid #cccccc;"';
var tdstyle1 = 'style="text-align: left; width: 60px;"';
var tdstyle2 = 'style="text-align: left; padding-right: 10px;"';
var coins = totalLoot.split(";");
var loot = '';
var i = 0;
var n = coins.length - 1;
for (i = 0; i < n; i ++) {
var number = Number([i])+1
loot += '<tr ' + trstyle + '><td ' + tdstyle1 + '>Enemy ' + number + '</td><td ' + tdstyle2 + '>' + coins[i] + getItem() + '</td></tr>';
}
loot += '<tr ' + trstyle + '><td ' + tdstyle1 + '>Total Coins</td><td ' + tdstyle2 + '>' + coins[n] + '</td></tr>';
sendChat('Loot', '<div ' + divstyle + '>' + //--
'<div ' + headstyle + '>Loot</div>' + //--
'<div ' + arrowstyle + '></div>' + //--
'<table ' + tablestyle + '>' + //--
'<tr><th>Enemy</th><th>Loot</th></tr>' + //--
loot + //--
'</table>'+ //--
'</div>'
);
},
getItem = function() {
var itemList = 'lint,a potion of Minor healing,blue quartz (10 gp), stale bread, fresh bread, moldy cheese, a unknown potion, a bag of caltrop, abacus, a bag of ball bearing, bell, glass bottle, book, bedroll, blanket, candle, chalk, crowbar, fishing tackle, hammer, a random kit, a random holy symbol, holy water, hourglass, hunting trap, manacle, chains, rope 10ft, rope 15ft, rope 20ft, rope 25ft, rope 30ft, rope 50ft, jug, pitcher, flask, waterskin, lock, perfume, parchment, ink & quill, miners pick, piton, Ration [[1d7]], soap, spyglass, tinderbox, wheatstone, dice set, card set, a random musical instrument, a trinket [[1d100]]' .split(",");
var item = '';
var check = randomInteger(5);
if (check<2){
var num = randomInteger(3);
var i = 0;
for (i = 0; i < num; i ++) {
item += ', ';
var roll = Number(randomInteger(itemList.length))-1;
item += itemList[roll];
}
}
return item;
},
individual0 = function(msg) {
var args = msg.content.split(",");
var noEnemies = args[2];
var loot = '';
var totpp = 0;
var totgp = 0;
var totep = 0;
var totsp = 0;
var totcp = 0;
var i = 0;
for (i = 0; i < noEnemies; i ++) {
var roll = randomInteger(100);
if (i>0){loot += ';'}
if (roll<31){
var cp = randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6);
totcp += cp;
loot += cp + ' cp';
}else if (30<roll && roll<61){
var sp = randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6);
totsp += sp;
loot += sp + ' sp';
}else if (60<roll && roll<71){
var ep = randomInteger(6)+randomInteger(6)+randomInteger(6);
totep += ep;
loot += ep + ' ep';
}else if (70<roll && roll<96){
var gp = randomInteger(6)+randomInteger(6)+randomInteger(6);
totgp += gp;
loot += gp + ' gp';
}else if (95<roll && roll<101){
var pp = randomInteger(6);
totpp += pp;
loot += pp + ' pp';
}
}
loot += ';' + totpp + " pp, " + totgp + " gp, " + totep + " ep, " + totsp + " sp, " + totcp + " cp";
return loot;
},
individual5 = function(msg) {
var args = msg.content.split(",");
var noEnemies = args[2];
var loot = '';
var totpp = 0;
var totgp = 0;
var totep = 0;
var totsp = 0;
var totcp = 0;
var i = 0;
for (i = 0; i < noEnemies; i ++) {
var roll = randomInteger(100);
if (i>0){loot += ';'}
if (roll<31){
var ep = randomInteger(6)*10;
totep += ep;
loot += ep + ' ep, ';
var cp = (randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6))*100;
totcp += cp;
loot += cp + ' cp';
}else if (30<roll && roll<61){
var gp = (randomInteger(6)+randomInteger(6))*10;
totgp += gp;
loot += gp + ' gp, ';
var sp = (randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6))*10;
totsp += sp;
loot += sp + ' sp';
}else if (60<roll && roll<71){
var gp = (randomInteger(6)+randomInteger(6))*10;
totgp += gp;
loot += gp + ' gp, ';
var ep = (randomInteger(6)+randomInteger(6)+randomInteger(6))*10;
totep += ep;
loot += ep + ' ep';
}else if (70<roll && roll<96){
var gp = (randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6))*10;
totgp += gp;
loot += gp + ' gp';
}else if (95<roll && roll<101){
var pp = randomInteger(6)+randomInteger(6)+randomInteger(6);
totpp += pp;
loot += pp + ' pp, ';
var gp = (randomInteger(6)+randomInteger(6))*10;
totgp += gp;
loot += gp + ' gp';
}
}
loot += ';' + totpp + " pp, " + totgp + " gp, " + totep + " ep, " + totsp + " sp, " + totcp + " cp";
return loot;
},
individual11 = function(msg) {
var args = msg.content.split(",");
var noEnemies = args[2];
var loot = '';
var totpp = 0;
var totgp = 0;
var totep = 0;
var totsp = 0;
var totcp = 0;
var i = 0;
for (i = 0; i < noEnemies; i ++) {
var roll = randomInteger(100);
if (i>0){loot += ';'}
if (roll<21){
var gp = randomInteger(6)*100;
totgp += gp;
loot += gp + ' gp, ';
var sp = (randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6))*100;
totsp += sp;
loot += sp + ' sp';
}else if (20<roll && roll<36){
var gp = randomInteger(6)*100;
totgp += gp;
loot += gp + ' gp, ';
var ep = randomInteger(6)*100;
totep += ep;
loot += ep + ' ep';
}else if (35<roll && roll<76){
var pp = randomInteger(6)*10;
totpp += pp;
loot += pp + ' pp, ';
var gp = (randomInteger(6)+randomInteger(6))*100;
totgp += gp;
loot += gp + ' gp';
}else if (75<roll && roll<101){
var pp = (randomInteger(6)+randomInteger(6))*10;
totpp += pp;
loot += pp + ' pp, ';
var gp = (randomInteger(6)+randomInteger(6))*100;
totgp += gp;
loot += gp + ' gp';
}
}
loot += ';' + totpp + " pp, " + totgp + " gp, " + totep + " ep, " + totsp + " sp, " + totcp + " cp";
return loot;
},
individual17 = function(msg) {
var args = msg.content.split(",");
var noEnemies = args[2];
var loot = '';
var totpp = 0;
var totgp = 0;
var totep = 0;
var totsp = 0;
var totcp = 0;
var i = 0;
for (i = 0; i < noEnemies; i ++) {
var roll = randomInteger(100);
if (i>0){loot += ';'}
if (roll<16){
var gp = (randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6)+randomInteger(6))*100;
totgp += gp;
loot += gp + ' gp, ';
var ep = (randomInteger(6)+randomInteger(6))*1000;
totep += ep;
loot += ep + ' ep';
}else if (15<roll && roll<56){
var pp = randomInteger(6)*100;
totpp += pp;
loot += pp + ' pp, ';
var gp = randomInteger(6)*1000;
totgp += gp;
loot += gp + ' gp';
}else if (55<roll && roll<101){
var pp = (randomInteger(6)+randomInteger(6))*100;
totpp += pp;
loot += pp + ' pp, ';
var gp = randomInteger(6)*1000;
totgp += gp;
loot += gp + ' gp';
}
}
loot += ';' + totpp + " pp, " + totgp + " gp, " + totep + " ep, " + totsp + " sp, " + totcp + " cp";
return loot;
},
registerEventHandlers = function() {
on('chat:message', handleInput);
};
return {
RegisterEventHandlers: registerEventHandlers
};
}());
on("ready",function(){
'use strict';
LootGenerator.RegisterEventHandlers();
});