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 }) {
|
||||
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
|
||||
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;
|
||||
}
|
||||
RdDUtility.remplaceDeMinParDifficulte(roll, diff, options);
|
||||
|
||||
return await RdDUtility.prepareEncaissement(rollData, roll, armure);
|
||||
}
|
||||
|
||||
let roll = await RdDDice.roll(formula, options);
|
||||
|
||||
static remplaceDeMinParDifficulte(roll, diff, options) {
|
||||
if (!ReglesOptionnelles.isUsing('degat-minimum-malus-libre-simple')) {
|
||||
return
|
||||
}
|
||||
// 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;
|
||||
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;
|
||||
}
|
||||
}
|
||||
|
||||
return await RdDUtility.prepareEncaissement(rollData, roll, armure);
|
||||
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) {
|
||||
const jetTotal = roll.total + rollData.dmg.total - armure;
|
||||
let encaissement = RdDUtility._selectEncaissement(jetTotal, rollData.dmg.mortalite);
|
||||
let over20 = Math.max(jetTotal - 20, 0);
|
||||
// La difficulté d'ataque s'ajoute aux dégâts
|
||||
const bonusDegatsDiffLibre = ReglesOptionnelles.isUsing('degat-ajout-malus-libre') ? Math.abs(rollData.diffLibre ?? 0) : 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.loc = rollData.dmg.loc ?? await RdDUtility.getLocalisation(this.type);
|
||||
encaissement.dmg.loc.label = encaissement.dmg.loc.label ?? 'Corps;';
|
||||
encaissement.dmg.bonusDegatsDiffLibre = bonusDegatsDiffLibre
|
||||
encaissement.roll = roll;
|
||||
encaissement.armure = armure;
|
||||
encaissement.penetration = rollData.arme?.system.penetration ?? 0;
|
||||
|
@ -15,33 +15,36 @@
|
||||
<label class="encaissement-total">{{encaissement.total}}</label>
|
||||
<div class="tooltiptext ttt-ajustements">
|
||||
<div>Armure: {{encaissement.armure}}</div>
|
||||
{{#if rollData.dmg.penetration}}
|
||||
<div>Pénétration: -{{rollData.dmg.penetration}}</div>
|
||||
{{#if encaissement.dmg.penetration}}
|
||||
<div>Pénétration: -{{encaissement.dmg.penetration}}</div>
|
||||
{{/if}}
|
||||
<hr>
|
||||
{{#if encaissement.dmg.total}}
|
||||
<div>+dom encaissement: {{plusMoins rollData.dmg.total}}</div>
|
||||
<div>+dom encaissement: {{plusMoins encaissement.dmg.total}}</div>
|
||||
{{/if}}
|
||||
{{#if rollData.dmg.dmgArme}}
|
||||
<div>+dom arme: {{plusMoins rollData.dmg.dmgArme}}</div>
|
||||
{{#if encaissement.dmg.dmgArme}}
|
||||
<div>+dom arme: {{plusMoins encaissement.dmg.dmgArme}}</div>
|
||||
{{/if}}
|
||||
{{#if rollData.dmg.dmgActor}}
|
||||
<div>+dom attaquant: {{plusMoins rollData.dmg.dmgActor}}</div>
|
||||
{{#if encaissement.dmg.dmgActor}}
|
||||
<div>+dom attaquant: {{plusMoins encaissement.dmg.dmgActor}}</div>
|
||||
{{/if}}
|
||||
{{#if rollData.dmg.dmgParticuliere}}
|
||||
<div>+dom particulière: {{plusMoins rollData.dmg.dmgParticuliere}}</div>
|
||||
{{#if encaissement.dmg.dmgParticuliere}}
|
||||
<div>+dom particulière: {{plusMoins encaissement.dmg.dmgParticuliere}}</div>
|
||||
{{/if}}
|
||||
{{#if rollData.dmg.dmgTactique}}
|
||||
<div>+dom tactique: {{plusMoins rollData.dmg.dmgTactique}}</div>
|
||||
{{#if encaissement.dmg.dmgTactique}}
|
||||
<div>+dom tactique: {{plusMoins encaissement.dmg.dmgTactique}}</div>
|
||||
{{/if}}
|
||||
{{#if rollData.dmg.dmgSurprise}}
|
||||
<div>+dom surprise: {{plusMoins rollData.dmg.dmgSurprise}}</div>
|
||||
{{#if encaissement.dmg.dmgSurprise}}
|
||||
<div>+dom surprise: {{plusMoins encaissement.dmg.dmgSurprise}}</div>
|
||||
{{/if}}
|
||||
{{#if encaissement.dmg.bonusDegatsDiffLibre}}
|
||||
<div>+dom attaque: {{plusMoins encaissement.dmg.bonusDegatsDiffLibre}}</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</span>
|
||||
</li>
|
||||
<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>
|
||||
</li>
|
||||
</ul>
|
||||
|
Loading…
Reference in New Issue
Block a user