Adaptation des encaissement alternatifs
Les encaissement alternatifs fonctionnent avec la validation d'encaissement par le MJ. - l'ajout de la difficulté d'attaque au dégâts est indiqué dans les bonus de dégâts - pour les minimums sur les dés d'encaissement, si le MJ remplace le jet, les minimums sont alors ignorés.
This commit is contained in:
parent
fedf8f3b29
commit
611b57c149
@ -549,49 +549,54 @@ export class RdDUtility {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async jetEncaissement(rollData, armure, options = { showDice: HIDE_DICE }) {
|
static async jetEncaissement(rollData, armure, options = { showDice: HIDE_DICE }) {
|
||||||
let formula = "2d10";
|
const diff = Math.abs(rollData.diffLibre);
|
||||||
|
let formula = RdDUtility.formuleEncaissement(diff, options)
|
||||||
|
const roll = await RdDDice.roll(formula, options);
|
||||||
|
|
||||||
// Chaque dé fait au minmum la difficulté libre
|
RdDUtility.remplaceDeMinParDifficulte(roll, diff, options);
|
||||||
if (ReglesOptionnelles.isUsing('degat-minimum-malus-libre')) {
|
|
||||||
if (rollData.diffLibre < 0) {
|
|
||||||
let valeurMin = Math.abs(rollData.diffLibre);
|
|
||||||
formula += "min" + valeurMin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Chaque dé fait au minmum la difficulté libre
|
|
||||||
if (ReglesOptionnelles.isUsing('degat-ajout-malus-libre')) {
|
|
||||||
if (rollData.diffLibre < 0) {
|
|
||||||
let valeurMin = Math.abs(rollData.diffLibre);
|
|
||||||
formula += "+" + valeurMin;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
let roll = await RdDDice.roll(formula, options);
|
|
||||||
|
|
||||||
// 1 dé fait au minmum la difficulté libre
|
|
||||||
if (ReglesOptionnelles.isUsing('degat-minimum-malus-libre-simple')) {
|
|
||||||
if (rollData.diffLibre < 0) {
|
|
||||||
let valeurMin = Math.abs(rollData.diffLibre);
|
|
||||||
if (roll.terms[0].results[0].result < valeurMin) {
|
|
||||||
roll.terms[0].results[0].result = valeurMin;
|
|
||||||
} else if (roll.terms[0].results[1].result < valeurMin) {
|
|
||||||
roll.terms[0].results[1].result = valeurMin;
|
|
||||||
}
|
|
||||||
roll._total = roll.terms[0].results[0].result + roll.terms[0].results[1].result;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return await RdDUtility.prepareEncaissement(rollData, roll, armure);
|
return await RdDUtility.prepareEncaissement(rollData, roll, armure);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static remplaceDeMinParDifficulte(roll, diff, options) {
|
||||||
|
if (!ReglesOptionnelles.isUsing('degat-minimum-malus-libre-simple')) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
// 1 dé fait au minmum la difficulté libre
|
||||||
|
const total = options.forceDiceResult?.total;
|
||||||
|
if (total) {
|
||||||
|
const reste = Math.max(total - diff, 1)
|
||||||
|
roll.terms[0].number = reste + diff
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
if (roll.terms[0].results[0].result < diff) {
|
||||||
|
roll.terms[0].results[0].result = diff;
|
||||||
|
} else if (roll.terms[0].results[1].result < diff) {
|
||||||
|
roll.terms[0].results[1].result = diff;
|
||||||
|
}
|
||||||
|
roll._total = roll.terms[0].results[0].result + roll.terms[0].results[1].result;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static formuleEncaissement(diff, options) {
|
||||||
|
// Chaque dé fait au minimum la difficulté libre
|
||||||
|
if (ReglesOptionnelles.isUsing('degat-minimum-malus-libre')) {
|
||||||
|
return `2d10min${diff}`
|
||||||
|
}
|
||||||
|
return '2d10'
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static async prepareEncaissement(rollData, roll, armure) {
|
static async prepareEncaissement(rollData, roll, armure) {
|
||||||
const jetTotal = roll.total + rollData.dmg.total - armure;
|
// La difficulté d'ataque s'ajoute aux dégâts
|
||||||
let encaissement = RdDUtility._selectEncaissement(jetTotal, rollData.dmg.mortalite);
|
const bonusDegatsDiffLibre = ReglesOptionnelles.isUsing('degat-ajout-malus-libre') ? Math.abs(rollData.diffLibre ?? 0) : 0
|
||||||
let over20 = Math.max(jetTotal - 20, 0);
|
const jetTotal = roll.total + rollData.dmg.total - armure + bonusDegatsDiffLibre
|
||||||
|
const encaissement = RdDUtility._selectEncaissement(jetTotal, rollData.dmg.mortalite);
|
||||||
|
const over20 = Math.max(jetTotal - 20, 0);
|
||||||
encaissement.dmg = rollData.dmg;
|
encaissement.dmg = rollData.dmg;
|
||||||
encaissement.dmg.loc = rollData.dmg.loc ?? await RdDUtility.getLocalisation(this.type);
|
encaissement.dmg.loc = rollData.dmg.loc ?? await RdDUtility.getLocalisation(this.type);
|
||||||
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;';
|
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;';
|
||||||
|
encaissement.dmg.bonusDegatsDiffLibre = bonusDegatsDiffLibre
|
||||||
encaissement.roll = roll;
|
encaissement.roll = roll;
|
||||||
encaissement.armure = armure;
|
encaissement.armure = armure;
|
||||||
encaissement.penetration = rollData.arme?.system.penetration ?? 0;
|
encaissement.penetration = rollData.arme?.system.penetration ?? 0;
|
||||||
|
@ -15,33 +15,36 @@
|
|||||||
<label class="encaissement-total">{{encaissement.total}}</label>
|
<label class="encaissement-total">{{encaissement.total}}</label>
|
||||||
<div class="tooltiptext ttt-ajustements">
|
<div class="tooltiptext ttt-ajustements">
|
||||||
<div>Armure: {{encaissement.armure}}</div>
|
<div>Armure: {{encaissement.armure}}</div>
|
||||||
{{#if rollData.dmg.penetration}}
|
{{#if encaissement.dmg.penetration}}
|
||||||
<div>Pénétration: -{{rollData.dmg.penetration}}</div>
|
<div>Pénétration: -{{encaissement.dmg.penetration}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
<hr>
|
<hr>
|
||||||
{{#if encaissement.dmg.total}}
|
{{#if encaissement.dmg.total}}
|
||||||
<div>+dom encaissement: {{plusMoins rollData.dmg.total}}</div>
|
<div>+dom encaissement: {{plusMoins encaissement.dmg.total}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollData.dmg.dmgArme}}
|
{{#if encaissement.dmg.dmgArme}}
|
||||||
<div>+dom arme: {{plusMoins rollData.dmg.dmgArme}}</div>
|
<div>+dom arme: {{plusMoins encaissement.dmg.dmgArme}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollData.dmg.dmgActor}}
|
{{#if encaissement.dmg.dmgActor}}
|
||||||
<div>+dom attaquant: {{plusMoins rollData.dmg.dmgActor}}</div>
|
<div>+dom attaquant: {{plusMoins encaissement.dmg.dmgActor}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollData.dmg.dmgParticuliere}}
|
{{#if encaissement.dmg.dmgParticuliere}}
|
||||||
<div>+dom particulière: {{plusMoins rollData.dmg.dmgParticuliere}}</div>
|
<div>+dom particulière: {{plusMoins encaissement.dmg.dmgParticuliere}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollData.dmg.dmgTactique}}
|
{{#if encaissement.dmg.dmgTactique}}
|
||||||
<div>+dom tactique: {{plusMoins rollData.dmg.dmgTactique}}</div>
|
<div>+dom tactique: {{plusMoins encaissement.dmg.dmgTactique}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
{{#if rollData.dmg.dmgSurprise}}
|
{{#if encaissement.dmg.dmgSurprise}}
|
||||||
<div>+dom surprise: {{plusMoins rollData.dmg.dmgSurprise}}</div>
|
<div>+dom surprise: {{plusMoins encaissement.dmg.dmgSurprise}}</div>
|
||||||
|
{{/if}}
|
||||||
|
{{#if encaissement.dmg.bonusDegatsDiffLibre}}
|
||||||
|
<div>+dom attaque: {{plusMoins encaissement.dmg.bonusDegatsDiffLibre}}</div>
|
||||||
{{/if}}
|
{{/if}}
|
||||||
</div>
|
</div>
|
||||||
</span>
|
</span>
|
||||||
</li>
|
</li>
|
||||||
<li class="flexrow flex-group-left">
|
<li class="flexrow flex-group-left">
|
||||||
<label>Blessure ({{rollData.dmg.mortalite}})</label>
|
<label>Blessure ({{encaissement.dmg.mortalite}})</label>
|
||||||
<label class="encaissement-blessure">{{encaissement.blessures}}</label>
|
<label class="encaissement-blessure">{{encaissement.blessures}}</label>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
|
Loading…
Reference in New Issue
Block a user