Ajustement echecs pour 100

100 est un échec si les chances sont supérieures
un échec total si elles sont inférieures
jamais un échec particulier
This commit is contained in:
Vincent Vandemeulebrouck 2021-01-02 19:25:03 +01:00
parent d6c65ee3a5
commit 2d4778f403

View File

@ -4,7 +4,6 @@ import { Misc } from "./misc.js";
import { RdDBonus } from "./rdd-bonus.js"; import { RdDBonus } from "./rdd-bonus.js";
import { RdDCombat } from "./rdd-combat.js"; import { RdDCombat } from "./rdd-combat.js";
import { RdDDice } from "./rdd-dice.js"; import { RdDDice } from "./rdd-dice.js";
import { RdDRollTables } from "./rdd-rolltables.js";
/** /**
* difficultés au delà de -10 * difficultés au delà de -10
@ -48,8 +47,8 @@ const specialResults = [
const reussites = [ const reussites = [
{ code: "etotal", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: true, ptTache: -4, ptQualite: -6, quality: "Echec total", condition: (target, roll) => roll >= target.etotal && roll <= 100 }, { code: "etotal", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: true, ptTache: -4, ptQualite: -6, quality: "Echec total", condition: (target, roll) => roll >= target.etotal && roll <= 100 },
{ code: "epart", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: false, ptTache: -2, ptQualite: -4, quality: "Echec particulier", condition: (target, roll) => (roll >= target.epart && roll < target.etotal) }, { code: "epart", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: false, ptTache: -2, ptQualite: -4, quality: "Echec particulier", condition: (target, roll) => (roll >= target.epart && roll < target.etotal) },
{ code: "echec", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: false, isETotal: false, ptTache: 0, ptQualite: -2, quality: "Echec normal", condition: (target, roll) => (roll > target.score && roll < target.etotal) }, { code: "echec", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: false, isETotal: false, ptTache: 0, ptQualite: -2, quality: "Echec normal", condition: (target, roll) => (roll > target.norm && roll < target.etotal) },
{ code: "norm", isPart: false, isSign: false, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 1, ptQualite: 0, quality: "Réussite normale", condition: (target, roll) => (roll > target.sign && roll <= target.score) }, { code: "norm", isPart: false, isSign: false, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 1, ptQualite: 0, quality: "Réussite normale", condition: (target, roll) => (roll > target.sign && roll <= target.norm) },
{ code: "sign", isPart: false, isSign: true, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 2, ptQualite: 1, quality: "Réussite significative", condition: (target, roll) => (roll > target.part && roll <= target.sign) }, { code: "sign", isPart: false, isSign: true, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 2, ptQualite: 1, quality: "Réussite significative", condition: (target, roll) => (roll > target.part && roll <= target.sign) },
{ code: "part", isPart: true, isSign: true, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 3, ptQualite: 2, quality: "Réussite Particulière!", condition: (target, roll) => (roll > 0 && roll <= target.part) }, { code: "part", isPart: true, isSign: true, isSuccess: true, isEchec: false, isEPart: false, isETotal: false, ptTache: 3, ptQualite: 2, quality: "Réussite Particulière!", condition: (target, roll) => (roll > 0 && roll <= target.part) },
{ code: "error", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: true, ptTache: 0, ptQualite: 0, quality: "Jet de dés invalide", condition: (target, roll) => (roll <= 0 || roll > 100) } { code: "error", isPart: false, isSign: false, isSuccess: false, isEchec: true, isEPart: true, isETotal: true, ptTache: 0, ptQualite: 0, quality: "Jet de dés invalide", condition: (target, roll) => (roll <= 0 || roll > 100) }
@ -288,31 +287,34 @@ export class RdDResolutionTable {
return { return {
niveau: niveau, niveau: niveau,
score: percentage, score: percentage,
norm: Math.min(99, percentage),
sign: this._reussiteSignificative(percentage), sign: this._reussiteSignificative(percentage),
part: this._reussitePart(percentage), part: this._reussitePart(percentage),
epart: this._echecParticulier(percentage), epart: this._echecParticulier(percentage),
etotal: this._echecTotal(percentage) etotal: this._echecTotal(percentage)
} };
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static _reussiteSignificative(score) { static _reussiteSignificative(percentage) {
return Math.floor(score / 2); return Math.floor(percentage / 2);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static _reussitePart(score) { static _reussitePart(percentage) {
return Math.ceil(score / 5); return Math.ceil(percentage / 5);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static _echecParticulier(score) { static _echecParticulier(percentage) {
return Math.ceil(score / 5) + 80; const epart = Math.ceil(percentage / 5) + 80;
return epart >= 100 ? 101 : epart;
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static _echecTotal(score) { static _echecTotal(percentage) {
return Math.ceil(score / 10) + 91; const etotal = Math.ceil(percentage / 10) + 91;
return percentage >= 100 ? 101 : Math.min(etotal, 100);
} }
/* -------------------------------------------- */ /* -------------------------------------------- */