forked from public/foundryvtt-reve-de-dragon
RdDResolutionTable rolls
This commit is contained in:
@ -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);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user