RdDResolutionTable rolls

This commit is contained in:
2020-11-12 16:35:51 +01:00
parent 1fc3bf22f5
commit 5fa703241a
5 changed files with 277 additions and 263 deletions

View File

@ -5,6 +5,7 @@
import { RdDUtility } from "./rdd-utility.js";
import { TMRUtility } from "./tmr-utility.js";
import { RdDRollTables } from "./rdd-rolltables.js";
import { RdDResolutionTable } from "./rdd-resolution-table.js";
/** Helper functions */
export class RdDTMRDialog extends Dialog {
@ -130,13 +131,14 @@ export class RdDTMRDialog extends Dialog {
this.actor.deleteTMRRencontreAtPosition( ); // Remove the stored rencontre if necessary
this.updatePreviousRencontres();
let draconic = this.actor.getBestDraconic();
let carac = this.actor.getCurrentReve();
let level = draconic.data.niveau - this.currentRencontre.force;
const draconic = this.actor.getBestDraconic();
const carac = this.actor.getCurrentReve();
const difficulte = draconic.data.niveau - this.currentRencontre.force;
console.log("Maitriser", carac, draconic.data.niveau, this.currentRencontre.force);
let scoreDef = CONFIG.RDD.resolutionTable[carac][level+10];
let result = new Roll("d100").roll().total;
if ( result > scoreDef.score ) {
const roll = RdDResolutionTable.roll(carac, difficulte);
if ( roll.roll > scoreDef.score ) {
TMRUtility.processRencontreEchec( this.actor, this.currentRencontre);
ChatMessage.create( { title: "TMR", content: "Vous avez <strong>échoué</strong> à votre maîtrise d'un " . this.currentRencontre.name + " de force " +
this.currentRencontre.force +
@ -232,46 +234,49 @@ export class RdDTMRDialog extends Dialog {
this.close();
}
/* -------------------------------------------- */
async manageCaseHumide( cellDescr ) {
if ( cellDescr.type == "lac" || cellDescr.type == "fleuve" || cellDescr.type == "marais" ) {
/* -------------------------------------------- */
async manageCaseHumide(cellDescr) {
if (cellDescr.type == "lac" || cellDescr.type == "fleuve" || cellDescr.type == "marais") {
let draconic = this.actor.getBestDraconic();
let carac = this.actor.getCurrentReve();
let level = draconic.data.niveau - 7;
let scoreDef = CONFIG.RDD.resolutionTable[carac][level+10];
let result = new Roll("d100").roll().total;
let rolled = RdDResolutionTable.roll(carac, level);//RdDResolutionTable.computeChances(carac, level);
console.log(">>>>", rolled);
this.toclose = rolled.isSuccess;
let content = "";
let mycallback;
console.log(">>>>", scoreDef);
if ( result > scoreDef.score ) {
content = "Vous êtes entré sur une case humide, et vous avez <strong>raté</strong> votre maîtrise ! Vous <strong>quittez les Terres Médianes</strong> ! ("+ draconic.name +") :" + carac + " / " + level + " -> " + result + " / " + scoreDef.score;
if ( result >= scoreDef.etotal ) {
let souffle = RdDRollTables.getSouffle(true);
content += "<br>Vous avez fait un Echec Total. Vous subissez un Souffle de Dragon : " + souffle.name ;
this.actor.createOwnedItem( souffle );
}
this.toclose = true;
} else {
content = "Vous êtes entré sur une case humide, et vous avez <strong>réussi</strong> votre maîtrise ! ("+ draconic.name +") :" + carac + " / " + level + " -> " + result + " / " + scoreDef.score;
if ( result <= scoreDef.part ) {
content += "<br>Vous avez fait une Réussite Particulière";
if ( level < 0 ) {
let xpcarac = Math.floor( Math.abs(level) / 2);
let xpcomp = (Math.abs(level) % 2 == 1) ? xpcarac+1 : xpcarac;
content += "<br>Points d'expérience gagné ! " + xpcarac + " - " + xpcomp;
if (!rolled.isSuccess) {
content += "Vous êtes entré sur une case humide, et vous avez <strong>raté</strong> votre maîtrise ! Vous <strong>quittez les Terres Médianes</strong> !"
}
else {
content += "Vous êtes entré sur une case humide, et vous avez <strong>réussi</strong> votre maîtrise !"
}
content += " " + draconic.name + ": " + carac + " / " + level + " -> " + rolled.roll + " / " + rolled.score;
if (rolled.isETotal) {
let souffle = RdDRollTables.getSouffle(true);
content += "<br>Vous avez fait un Echec Total. Vous subissez un Souffle de Dragon : " + souffle.name;
this.actor.createOwnedItem(souffle);
}
if (rolled.isPart) {
content += "<br>Vous avez fait une Réussite Particulière";
content += RdDResolutionTable.buildXpMessage(rolled, level)
}
let humideDiag = new Dialog({
title: "Case humide",
content: content,
buttons: {
choice: {
icon: '<i class="fas fa-check"></i>',
label: "Fermer",
callback: () => this.manageCaseHumideResult()
}
}
}
let humideDiag = new Dialog( {title: "Case humide",
content: content,
buttons: {
choice: { icon: '<i class="fas fa-check"></i>',
label: "Fermer",
callback: () => this.manageCaseHumideResult()
}
}
}
);
);
humideDiag.render(true);
}
}