Skip to content

Instantly share code, notes, and snippets.

@Anduh
Forked from nolivo/menuMaker.js
Created October 23, 2021 11:04
Show Gist options
  • Save Anduh/917d67cc94ea73716de23cf86ab49c59 to your computer and use it in GitHub Desktop.
Save Anduh/917d67cc94ea73716de23cf86ab49c59 to your computer and use it in GitHub Desktop.
on("chat:message",function(msg){
if(msg.type=="api" && msg.content=="!menuMaker"){
var meals = getTableItems("Meals",3);
var drinks = getTableItems("Drinks",3);
if (meals === null || drinks ===null){
return;
}
createMenuHandout(meals,drinks);
}
})
function createMenuHandout(mealList,drinkList){
var menu = createObj("handout",{
name:"Menu",
inplayerjournals:"all"
});
var food = makeHTMLTable("Food",mealList);
var drinks = makeHTMLTable("Drinks",drinkList)
menu.set("notes",food + drinks);
}
function makeHTMLTable(heading,list){
var tableContents = "";
_.each(list,function(listItem){
let item = listItem.split('-');
tableContents+=`<tr><td>${item[0]}</td><td>${item[1]}</td></tr>`;
});
var table = `<h3>${heading}</h3><table>${tableContents}</table>`;
return table;
}
function getTableItems(tableName,numItems){
var table = findObjs({
type:"rollabletable",
name:tableName
})[0];
if (table===undefined){
sendChat("API",`/w gm Unable to locate a rollable table called ${tableName}`);
return null;
}
var tableList = findObjs({
type:"tableitem",
rollabletableid:table.get("id")
})
var tableItems = [];
var usedItems = [];
if (numItems>tableList.length){
sendChat("API",`/w gm ${tableName} has fewer than ${numItems} items.`);
return null;
}
for (i=0;i<numItems;i++){
var itemIndex = randomInteger(tableList.length)-1;
while(usedItems.includes(itemIndex)){
itemIndex = randomInteger(tableList.length)-1;
}
tableItems.push(tableList[itemIndex].get("name"));
usedItems.push(itemIndex);
}
return tableItems;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment