87 lines
4.1 KiB
JavaScript
87 lines
4.1 KiB
JavaScript
/* -------------------------------------------- */
|
|
import { BoLUtility } from "./bol-utility.js";
|
|
|
|
/* -------------------------------------------- */
|
|
export class BoLAdventureGenerator {
|
|
|
|
/* -------------------------------------------- */
|
|
static async init() {
|
|
this.adventureData = await fetchJsonWithTimeout("systems/bol/module/system/adventure_data.json")
|
|
}
|
|
|
|
/* -------------------------------------------- */
|
|
static async createAdventure() {
|
|
let roll1 = new Roll("1d" + this.adventureData.titre1.length).evaluate({ async: false })
|
|
let roll2 = new Roll("1d" + this.adventureData.titre2.length).evaluate({ async: false })
|
|
|
|
let p1 = this.adventureData.titre1[roll1.result - 1]
|
|
let p2 = this.adventureData.titre2[roll2.result - 1]
|
|
|
|
let story = {}
|
|
story.title = "Krongar et " + p1.prefix + " " + p1.name + " " + p2.prefix + " " + p2.name
|
|
|
|
let rollM = new Roll("1d" + this.adventureData.mission.length).evaluate({ async: false })
|
|
story.mission = "La mission de Krongar est de " + this.adventureData.mission[rollM.result - 1].name
|
|
|
|
if (!p1.isCarriere && !p2.isCarriere) {
|
|
let rollC = new Roll("1d" + this.adventureData.carriere.length).evaluate({ async: false })
|
|
story.carriere = "Une carrière : " + this.adventureData.carriere[rollC.result - 1]
|
|
}
|
|
|
|
if (!p1.isLieu && !p2.isLieu) {
|
|
let rollL1 = new Roll("1d" + this.adventureData.lieux1.length).evaluate({ async: false })
|
|
let rollL2 = new Roll("1d" + this.adventureData.lieux2.length).evaluate({ async: false })
|
|
story.lieu = "Un lieu : " + this.adventureData.lieux1[rollL1.result - 1] + " " + this.adventureData.lieux2[rollL2.result - 1]
|
|
}
|
|
|
|
if (!p1.isObjet && !p2.isObjet) {
|
|
let rollO1 = new Roll("1d" + this.adventureData.objets1.length).evaluate({ async: false })
|
|
let rollO2 = new Roll("1d" + this.adventureData.objets2.length).evaluate({ async: false })
|
|
story.objet = "Un objet : " + this.adventureData.objets1[rollO1.result - 1] + " " + this.adventureData.objets2[rollO2.result - 1]
|
|
}
|
|
|
|
let rollMOT = new Roll("1d" + this.adventureData.motivation.length).evaluate({ async: false })
|
|
story.motivation = "Krongar entreprend cette mission parce que " + this.adventureData.motivation[rollMOT.result - 1]
|
|
|
|
if (!p1.isEnnemi && !p2.isEnnemi) {
|
|
let rollE = new Roll("1d" + this.adventureData.rival.length).evaluate({ async: false })
|
|
story.rival = "Un rival : " + this.adventureData.rival[rollE.result - 1]
|
|
}
|
|
|
|
let rollDieu = new Roll("1d6").evaluate({ async: false })
|
|
if (rollDieu.result == 6) {
|
|
rollDieu = new Roll("1d" + this.adventureData.dieu.length).evaluate({ async: false })
|
|
story.dieu = "Un Dieu est impliqué : " + this.adventureData.dieu[rollDieu.result - 1]
|
|
}
|
|
|
|
let rollComp = new Roll("1d6").evaluate({ async: false })
|
|
if (rollComp.result >= 5) {
|
|
rollComp = new Roll("1d" + this.adventureData.complique1.length).evaluate({ async: false })
|
|
story.complication = "Une complication : " + this.adventureData.complique1[rollComp.result - 1]
|
|
}
|
|
|
|
let rollObs = new Roll("1d6").evaluate({ async: false })
|
|
if (rollObs.result >= 5) {
|
|
rollObs = new Roll("1d" + this.adventureData.obstacle.length).evaluate({ async: false })
|
|
story.obstacle = "Un obstacle : " + this.adventureData.obstacle[rollObs.result - 1]
|
|
}
|
|
|
|
let rollRet = new Roll("1d6").evaluate({ async: false })
|
|
if (rollRet.result == 6) {
|
|
rollRet = new Roll("1d" + this.adventureData.retournement.length).evaluate({ async: false })
|
|
story.retournement = "Un retournement : " + this.adventureData.retournement[rollRet.result - 1]
|
|
}
|
|
|
|
let rollRec = new Roll("1d" + this.adventureData.recompense.length).evaluate({ async: false })
|
|
story.recompense = "Pour sa peine, Krongar reçoit " + this.adventureData.recompense[rollRec.result - 1]
|
|
|
|
ChatMessage.create({
|
|
alias: this.name,
|
|
whisper: BoLUtility.getUsers(user => user.isGM),
|
|
content: await renderTemplate('systems/bol/templates/chat/chat-adventure-result.hbs',
|
|
{ name: "Aventure !", img: "icons/commodities/gems/gem-cluster-red.webp", story : story})
|
|
})
|
|
|
|
}
|
|
}
|