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 {