2020-11-11 04:31:17 +01:00
|
|
|
export class RdDRollTables {
|
2020-11-12 18:42:41 +01:00
|
|
|
|
2020-11-11 04:31:17 +01:00
|
|
|
/* -------------------------------------------- */
|
2020-11-12 18:42:41 +01:00
|
|
|
static async genericGetTableResult(tableName, toChat) {
|
|
|
|
const pack = game.packs.get("foundryvtt-reve-de-dragon.tables-diverses");
|
|
|
|
const index = await pack.getIndex();
|
|
|
|
const entry = index.find(e => e.name === tableName);
|
|
|
|
const table = await pack.getEntity(entry._id);
|
2021-02-04 01:21:29 +01:00
|
|
|
const draw = await table.draw({ displayChat: toChat, rollMode: "gmroll"});
|
2020-12-17 02:20:03 +01:00
|
|
|
console.log("RdDRollTables", tableName, toChat, ":", draw);
|
|
|
|
return draw;
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
2020-11-12 18:42:41 +01:00
|
|
|
|
2020-12-17 02:20:03 +01:00
|
|
|
/* -------------------------------------------- */
|
|
|
|
static async drawItemFromRollTable(tableName, toChat) {
|
|
|
|
const draw = await RdDRollTables.genericGetTableResult(tableName, toChat);
|
|
|
|
const drawnItemRef = draw.results.length > 0 ? draw.results[0] : undefined;
|
2020-12-17 12:29:54 +01:00
|
|
|
if (drawnItemRef.collection) {
|
|
|
|
const pack = game.packs.get(drawnItemRef.collection);
|
|
|
|
return await pack.getEntity(drawnItemRef.resultId);
|
|
|
|
}
|
|
|
|
ui.notifications.warn("le tirage ne correspond pas à une entrée d'un Compendium")
|
|
|
|
return drawnItemRef.text;
|
2020-12-17 02:20:03 +01:00
|
|
|
}
|
2020-12-17 12:29:54 +01:00
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
|
|
|
static async drawTextFromRollTable(tableName, toChat) {
|
|
|
|
const draw = await RdDRollTables.genericGetTableResult(tableName, toChat);
|
|
|
|
const drawnItemRef = draw.results.length > 0 ? draw.results[0] : undefined;
|
|
|
|
if (drawnItemRef.collection) {
|
|
|
|
ui.notifications.warn("le tirage correspond à une entrée d'un Compendium, on attendait un texte")
|
|
|
|
return await pack.getEntity(drawnItemRef.resultId);
|
|
|
|
}
|
|
|
|
return drawnItemRef.text;
|
|
|
|
}
|
|
|
|
|
2021-02-11 02:48:27 +01:00
|
|
|
/* -------------------------------------------- */
|
|
|
|
static async getCompetence(toChat = false) {
|
|
|
|
return await RdDRollTables.drawItemFromRollTable("Détermination aléatoire de compétence", toChat);
|
|
|
|
}
|
|
|
|
|
2020-11-11 04:31:17 +01:00
|
|
|
/* -------------------------------------------- */
|
2021-02-05 01:10:54 +01:00
|
|
|
static async getSouffle(toChat = false) {
|
2020-12-17 02:20:03 +01:00
|
|
|
return await RdDRollTables.drawItemFromRollTable("Souffles de Dragon", toChat);
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
2021-02-05 01:10:54 +01:00
|
|
|
static async getQueue(toChat = false) {
|
2021-02-06 23:58:15 +01:00
|
|
|
let queue = await RdDRollTables.drawItemFromRollTable("Queues de dragon", toChat);
|
2020-12-17 23:06:08 +01:00
|
|
|
if (queue.name.toLowerCase().includes('lancinant') ) {
|
2021-02-06 23:58:15 +01:00
|
|
|
queue = await RdDRollTables.drawItemFromRollTable("Désirs lancinants", toChat);
|
2020-12-17 23:06:08 +01:00
|
|
|
}
|
|
|
|
if (queue.name.toLowerCase().includes('fixe') ) {
|
|
|
|
queue = await RdDRollTables.drawItemFromRollTable("Idées fixes", toChat);
|
|
|
|
}
|
|
|
|
return queue;
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
2021-02-26 01:15:08 +01:00
|
|
|
static async getTeteHR(toChat = false) {
|
2020-12-17 02:20:03 +01:00
|
|
|
return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour haut-rêvants", toChat);
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
2020-11-12 18:42:41 +01:00
|
|
|
|
2020-11-11 04:31:17 +01:00
|
|
|
/* -------------------------------------------- */
|
2021-02-26 01:15:08 +01:00
|
|
|
static async getTete(toChat = false) {
|
2020-12-17 02:20:03 +01:00
|
|
|
return await RdDRollTables.drawItemFromRollTable("Têtes de Dragon pour tous personnages", toChat);
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
2021-02-05 01:10:54 +01:00
|
|
|
static async getOmbre(toChat = false) {
|
2020-12-17 02:20:03 +01:00
|
|
|
return await RdDRollTables.drawItemFromRollTable("Ombre de Thanatos", toChat);
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
|
|
|
|
|
|
|
/* -------------------------------------------- */
|
2020-11-12 18:42:41 +01:00
|
|
|
static async getTarot(toChat = true) {
|
2020-12-17 02:20:03 +01:00
|
|
|
return await RdDRollTables.drawItemFromRollTable("Tarot Draconique", toChat);
|
2020-11-11 04:31:17 +01:00
|
|
|
}
|
2020-12-17 12:29:54 +01:00
|
|
|
|
2020-12-17 23:07:04 +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
|
|
|
}
|