From fbe70e42ea2d7a77d396729e67a9e6ed3841e971 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Tue, 17 Nov 2020 11:35:05 +0100 Subject: [PATCH] Correction async pas utiles --- module/actor.js | 64 ++++++++++++++++++---------------- module/rdd-dice.js | 11 +++--- module/rdd-main.js | 18 +++++++--- module/rdd-resolution-table.js | 13 ++++--- module/rdd-tmr-dialog.js | 3 +- module/tmr-utility.js | 16 +++++---- 6 files changed, 69 insertions(+), 56 deletions(-) diff --git a/module/actor.js b/module/actor.js index 38c3b200..33c61970 100644 --- a/module/actor.js +++ b/module/actor.js @@ -122,7 +122,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async performRoll(rollData) { - let rolled = await RdDResolutionTable.roll(rollData.carac, rollData.finalLevel, true); + let rolled = RdDResolutionTable.roll(rollData.carac, rollData.finalLevel); //rolled.isPart = true; // Pour tester le particulières rollData.rolled = rolled; // garder le résultat console.log("performRoll", rollData, rolled) @@ -363,24 +363,23 @@ export class RdDActor extends Actor { ChatMessage.create( message ); } - async combattreReveDeDragon(force){ + combattreReveDeDragon(force){ let draconic = this.getBestDraconic(); let niveau = Math.max(0, draconic.data.niveau); let etat = this.data.data.compteurs.etat.value; let difficulte = niveau - etat - force; let reveActuel = this.getReveActuel(); - let roll = await RdDResolutionTable.roll(reveActuel, difficulte); - let message = "" - const resultatRdD = await this.appliquerReveDeDragon(roll, force); - return resultatRdD; + let rolled = RdDResolutionTable.roll(reveActuel, difficulte); + consome.log("combattreReveDeDragon", rolled ); + return this.appliquerReveDeDragon(rolled, force); } - async appliquerReveDeDragon(roll, force) { + appliquerReveDeDragon(roll, force) { let message = ""; if (roll.isSuccess) { message += "
Vous gagnez " + force + " points de Rêve"; this.updatePointDeSeuil(); - await this.updatePointsDeReve(force); + this.updatePointsDeReve(force); } if (roll.isPart) { // TODO: Dialog pour choix entre HR opu général? @@ -716,9 +715,9 @@ export class RdDActor extends Actor { if ( data.value < 0 ) data.value = 0; if (name == "endurance" && this.data.type != 'entite' ) { - if ( sante.fatigue && inc < 0 ) // Each endurance lost -> fatigue lost + if ( sante.fatigue && inc < 0 ) { // Each endurance lost -> fatigue lost sante.fatigue.value = sante.fatigue.value - inc - + } // If endurance is 0 -> -1 vie if ( data.value == 0 && sante.vie.value > 0) { sante.vie.value = sante.vie.value - 1; @@ -829,9 +828,7 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async stressTest() { - let target = RdDResolutionTable.computeChances(this.data.data.carac.reve.value, 0); - let stressRoll = this._stressRoll(target); - + let stressRoll = this._stressRoll(); let compteurs = duplicate(this.data.data.compteurs); let convertion = Math.floor(compteurs.stress.value * stressRoll.factor); @@ -839,31 +836,36 @@ export class RdDActor extends Actor { compteurs.stress.value = Math.max(compteurs.stress.value - convertion - 1, 0); ChatMessage.create({ - title: "Jet de Stress", content: "Vous avez transformé " + convertion + " points de Stress en Expérience avec une réussite " + stressRoll.comment, + title: "Jet de Stress", content: "Vous avez transformé " + convertion + " points de Stress en Expérience" + stressRoll.comment, whisper: ChatMessage.getWhisperRecipients(game.user.name) }); await this.update({ "data.compteurs": compteurs }); } /* -------------------------------------------- */ - async _stressRoll(target) { - let result = await RdDResolutionTable.rollChances(target) - switch (result.quality) { - case "sign": return { factor: 0.75, comment: "Significative (75%) - " + result.roll } - case "norm": return { factor: 0.5, comment: "Normale (50%) - " + result.roll } - case "echec": return { factor: 0.2, comment: "Echec (20%) - " + result.roll } - case "epart": return { factor: 0.1, comment: "Echec particulier(10%) - " + result.roll } - case "etotal": return { factor: 0, comment: "Echec Total (0%) - " + result.roll } - } - let second = await RdDResolutionTable.rollChances(target) - switch (second.quality) { - case "part": case "sign": - return { factor: 1.5, comment: "Double Particulière (150%) - " + result.roll + " puis " + second.roll } - default: - return { factor: 1, comment: "Particulière (100%) - " + result.roll + " puis " + second.roll } - } +_stressRoll() { + let result = RdDResolutionTable.roll(this.data.data.carac.reve.value, 0); + console.log("_stressRoll", result); + switch (result.code) { + case "sign": return { factor: 0.75, comment: " (75%): " + result.quality + " - " + result.roll + " sur " + result.score + "%" } + case "norm": return { factor: 0.5, comment: " (50%): " + result.quality + " - " + result.roll + " sur " + result.score + "%" } + case "echec": return { factor: 0.2, comment: " (20%): " + result.quality + " - " + result.roll + " sur " + result.score + "%" } + case "epart": return { factor: 0.1, comment: " (10%): " + result.quality + " - " + result.roll + " sur " + result.score + "%" } + case "etotal": return { factor: 0, comment: " (0%): " + result.quality + " - " + result.roll + " sur " + result.score + "%" } + case "part": + { + let second = RdDResolutionTable.roll(this.data.data.carac.reve.value, 0); + console.log("_stressRoll", second); + switch (second.code) { + case "part": case "sign": + return { factor: 1.5, comment: " (150%): Double Particulière - " + result.roll + " puis " + second.roll + " sur " + result.score + "%" } + default: + return { factor: 1, comment: " (150%): " + result.quality + " - " + result.roll + " puis " + second.roll + " sur " + result.score + "%" } + } + } } - +} + /* -------------------------------------------- */ async rollUnSort(coord) { let draconicList = this.getDraconicList(); diff --git a/module/rdd-dice.js b/module/rdd-dice.js index 873fab56..e2524185 100644 --- a/module/rdd-dice.js +++ b/module/rdd-dice.js @@ -1,13 +1,16 @@ export class RdDDice { - static async deDraconique() { + static deDraconique(rollMode="selfroll") { let roll = new Roll("1d8x8").evaluate(); - await this.show(roll); + this.show(roll, rollMode); return roll.total - Math.ceil(roll.total / 8); } - static async show(roll, rollMode = "roll") { - await this.showDiceSoNice(roll, rollMode); + + static show(roll, rollMode = "roll") { + if (roll.showDice || game.settings.get("foundryvtt-reve-de-dragon", "dice-so-nice") == true) { + this.showDiceSoNice(roll, rollMode); + } return roll; } diff --git a/module/rdd-main.js b/module/rdd-main.js index 6e9e6cf5..e58281ce 100644 --- a/module/rdd-main.js +++ b/module/rdd-main.js @@ -103,11 +103,19 @@ Hooks.once("init", async function() { rollDataHandler: {} } // Create specific settings - game.settings.register("foundryvtt-reve-de-dragon", "configuration", { - name: "configuration", - scope: "world", - config: false, - type: Object + // game.settings.register("foundryvtt-reve-de-dragon", "configuration", { + // name: "configuration", + // scope: "world", + // config: false, + // type: Object + // }); + game.settings.register("foundryvtt-reve-de-dragon", "dice-so-nice", { + name: "Montrer les dés pour toutes les jets", + hint: "Utilise Dice So Nice pour tous les jets de dés possibles. Décocher pour limiter à la table de résolution", + scope: "client", + config: true, + default: false, + type: Boolean }); //game.settings.get("","") to retrieve it and game.settings.set("","", ) diff --git a/module/rdd-resolution-table.js b/module/rdd-resolution-table.js index 14d68645..3ea5d350 100644 --- a/module/rdd-resolution-table.js +++ b/module/rdd-resolution-table.js @@ -85,21 +85,20 @@ export class RdDResolutionTable { } /* -------------------------------------------- */ - static async roll(carac, finalLevel, showDice=false) { + static roll(carac, finalLevel) { let chances = this.computeChances(carac, finalLevel); - chances.showDice = showDice; - let rolled = await this.rollChances(chances); + chances.showDice = true; + let rolled = this.rollChances(chances); rolled.carac = carac; rolled.finalLevel = finalLevel; return rolled; } /* -------------------------------------------- */ - static async rollChances(chances) { + static rollChances(chances) { let myRoll = new Roll("d100").roll(); - if (chances.showDice) { - await RdDDice.showDiceSoNice(myRoll); - } + myRoll.showDice = chances.showDice; + RdDDice.show(myRoll); chances.roll = myRoll.total; mergeObject(chances, this._computeReussite(chances, chances.roll)); return chances; diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index 36df713a..46b77267 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -137,9 +137,8 @@ export class RdDTMRDialog extends Dialog { } this.currentRencontre = undefined; let rencontre = this.rencontresExistantes.find(prev => prev.coord == coordTMR); - let deRencontre = new Roll("d7").roll(); - console.log("manageRencontre", deRencontre, rencontre); if (rencontre == undefined) { + let deRencontre = new Roll("d7").roll(); if (deRencontre.total == 7) { rencontre = await TMRUtility.rencontreTMRRoll(coordTMR, cellDescr); } diff --git a/module/tmr-utility.js b/module/tmr-utility.js index c1099357..8f297aaf 100644 --- a/module/tmr-utility.js +++ b/module/tmr-utility.js @@ -271,7 +271,7 @@ export class TMRUtility { let rencontre = this.rencontreTMRTypeCase(cellDescr.type); if (rencontre){ rencontre = duplicate(rencontre); - rencontre.force = await this.evaluerForceRencontre(rencontre); + rencontre.force = this.evaluerForceRencontre(rencontre); rencontre.coord = coordTMR; } return rencontre; @@ -280,13 +280,15 @@ export class TMRUtility { static rencontreTMRTypeCase(typeTMR, roll=undefined) { if (!roll) { - roll = new Roll("d100").roll().total; + roll = RdDDice.show(new Roll("d100").evaluate()).total; + console.log("rencontreTMRTypeCase", roll); } typeTMR = typeTMR.toLowerCase().normalize("NFD").replace(/[\u0300-\u036f]/g, ""); for( let rencontre of rencontresTable) { let scoreDef = rencontre.data[typeTMR]; let min = scoreDef.substr(0,2); let max = scoreDef.substr(3,2); + if (min=="00") min = 101; if (max=="00") max = 100; if (roll >= min && roll <= max) { return rencontre; @@ -300,7 +302,7 @@ export class TMRUtility { * @param {*} caseName * @param {*} roll */ - static async getRencontre( caseName, roll ) { + static getRencontre( caseName, roll ) { if (!roll) { roll = new Roll("1d100").roll().total; } @@ -310,8 +312,8 @@ export class TMRUtility { } let rencontre = this.rencontreTMRTypeCase(caseName, roll); - if (rencontre){ - let force = await this.evaluerForceRencontre(rencontre); + if (rencontre) { + let force = this.evaluerForceRencontre(rencontre); ChatMessage.create({ content: "Rencontre en " + caseName + "(jet : " + roll + "%)
Vous rencontrez un " + rencontre.name + " d'une force de " + force + " Points de Rêve" }); } return false; @@ -323,9 +325,9 @@ export class TMRUtility { // TODO random get same type } - static async evaluerForceRencontre(rencontre) { + static evaluerForceRencontre(rencontre) { if (this.isReveDeDragon(rencontre)) { - let ddr = await RdDDice.deDraconique(); + let ddr = RdDDice.deDraconique(); return ddr + 7; } else {