foundryvtt-reve-de-dragon/module/rdd-rolltables.js

87 lines
3.3 KiB
JavaScript
Raw Normal View History

export class RdDRollTables {
2020-11-12 18:42:41 +01:00
/* -------------------------------------------- */
2020-11-12 18:42:41 +01:00
static async genericGetTableResult(tableName, toChat) {
2022-01-30 21:49:35 +01:00
let table = game.tables.find(table => table.name.toLowerCase() == tableName.toLowerCase())
if ( !table) {
const pack = game.packs.get("foundryvtt-reve-de-dragon.tables-diverses");
const index = await pack.getIndex();
const entry = index.find(e => e.name === tableName);
table = await pack.getDocument(entry._id);
}
const draw = await table.draw({ displayChat: toChat, rollMode: "gmroll"});
console.log("RdDRollTables", tableName, toChat, ":", draw);
2021-05-11 21:21:33 +02:00
return draw.results.length > 0 ? draw.results[0] : undefined;
}
2020-11-12 18:42:41 +01:00
/* -------------------------------------------- */
2021-05-11 21:21:33 +02:00
static async drawItemFromRollTable(tableName, toChat = false) {
const drawResult = await RdDRollTables.genericGetTableResult(tableName, toChat);
const pack = game.packs.get(drawResult.data.collection);
return await pack.getDocument(drawResult.data.resultId);
}
2020-12-17 12:29:54 +01:00
/* -------------------------------------------- */
static async drawTextFromRollTable(tableName, toChat) {
2021-05-11 21:21:33 +02:00
const drawResult = await RdDRollTables.genericGetTableResult(tableName, toChat);
return drawResult.data.text;
2020-12-17 12:29:54 +01:00
}
/* -------------------------------------------- */
static async getCompetence(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Détermination aléatoire de compétence", toChat);
}
/* -------------------------------------------- */
static async getSouffle(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Souffles de Dragon", toChat);
}
/* -------------------------------------------- */
static async getQueue(toChat = false) {
2021-02-06 23:58:15 +01:00
let queue = await RdDRollTables.drawItemFromRollTable("Queues de dragon", toChat);
if (queue.name.toLowerCase().includes('lancinant') ) {
return await RdDRollTables.getDesirLancinant(toChat);
}
if (queue.name.toLowerCase().includes('fixe') ) {
return await RdDRollTables.getIdeeFixe(toChat);
}
return queue;
}
static async getDesirLancinant(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Désirs lancinants", toChat);
}
static async getIdeeFixe(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Idées fixes", toChat);
}
/* -------------------------------------------- */
static async getTeteHR(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour haut-rêvants", toChat);
}
2020-11-12 18:42:41 +01:00
/* -------------------------------------------- */
static async getTete(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour tous personnages", toChat);
}
/* -------------------------------------------- */
static async getOmbre(toChat = false) {
return await RdDRollTables.drawItemFromRollTable("Ombre de Thanatos", toChat);
}
/* -------------------------------------------- */
2020-11-12 18:42:41 +01:00
static async getTarot(toChat = true) {
return await RdDRollTables.drawItemFromRollTable("Tarot Draconique", toChat);
}
2020-12-17 12:29:54 +01:00
/* -------------------------------------------- */
2020-12-17 12:29:54 +01:00
static async getMaladresse(options = {toChat: false, arme: false}) {
return await RdDRollTables.drawTextFromRollTable(
options.arme ? "Maladresse armé" : "Maladresses non armé",
options.toChat);
}
2020-11-12 18:42:41 +01:00
}