From 4273f5f48fd8470ef014a2c97397c22b5737887b Mon Sep 17 00:00:00 2001 From: uberwald Date: Mon, 5 Jun 2023 20:18:05 +0200 Subject: [PATCH] Fix: validation encaissement MJ --- module/actor.js | 16 +++++++++++----- module/actor/base-actor.js | 1 + module/dialog-validation-encaissement.js | 9 +++++---- module/rdd-carac.js | 9 --------- module/rdd-roll.js | 2 +- module/rolldata-ajustements.js | 9 ++++++++- 6 files changed, 26 insertions(+), 20 deletions(-) diff --git a/module/actor.js b/module/actor.js index 64adae39..29f089fb 100644 --- a/module/actor.js +++ b/module/actor.js @@ -3204,25 +3204,31 @@ export class RdDActor extends RdDBaseActor { if (attacker && !await attacker.accorder(this, 'avant-encaissement')) { return; } + const attackerId = attacker?.id; if (ReglesOptionelles.isUsing('validation-encaissement-gr') && !game.user.isGM) { RdDBaseActor.remoteActorCall({ actorId: this.id, - method: 'validerEncaissement', - args: [rollData, show] + method: 'appliquerEncaissement', + args: [rollData, show, attackerId] }); return; } + await this.appliquerEncaissement(rollData, show, attackerId); + } + + async appliquerEncaissement(rollData, show, attackerId) { const armure = await this.computeArmure(rollData); if (ReglesOptionelles.isUsing('validation-encaissement-gr')) { - DialogValidationEncaissement.validerEncaissement(this, rollData, armure, show, (encaissement, show) => this._appliquerEncaissement(encaissement, show, attacker)); + DialogValidationEncaissement.validerEncaissement(this, rollData, armure, show, attackerId, (encaissement, show, attackerId) => this._appliquerEncaissement(encaissement, show, attackerId)); } else { let encaissement = await RdDUtility.jetEncaissement(rollData, armure, { showDice: SHOW_DICE }); - await this._appliquerEncaissement(encaissement, show, attacker) + await this._appliquerEncaissement(encaissement, show, attackerId); } } - async _appliquerEncaissement(encaissement, show, attacker) { + async _appliquerEncaissement(encaissement, show, attackedId) { + const attacker = attackedId ? game.actors.get(attackedId) : undefined let santeOrig = duplicate(this.system.sante); const blessure = await this.ajouterBlessure(encaissement, attacker); // Will update the result table diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 92746eea..59b15b25 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -3,6 +3,7 @@ import { SYSTEM_SOCKET_ID } from "../constants.js"; import { Monnaie } from "../item-monnaie.js"; import { Misc } from "../misc.js"; import { RdDAudio } from "../rdd-audio.js"; +import { RdDConfirm } from "../rdd-confirm.js"; import { RdDUtility } from "../rdd-utility.js"; import { SystemCompendiums } from "../settings/system-compendiums.js"; import { APP_ASTROLOGIE_REFRESH } from "../sommeil/app-astrologie.js"; diff --git a/module/dialog-validation-encaissement.js b/module/dialog-validation-encaissement.js index 4172bcfe..a8808466 100644 --- a/module/dialog-validation-encaissement.js +++ b/module/dialog-validation-encaissement.js @@ -7,7 +7,7 @@ import { RdDUtility } from "./rdd-utility.js"; */ export class DialogValidationEncaissement extends Dialog { - static async validerEncaissement(actor, rollData, armure, show, onEncaisser) { + static async validerEncaissement(actor, rollData, armure, show, attackerId, onEncaisser) { let encaissement = await RdDUtility.jetEncaissement(rollData, armure, { showDice: HIDE_DICE }); const html = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/dialog-validation-encaissement.html', { actor: actor, @@ -15,12 +15,12 @@ export class DialogValidationEncaissement extends Dialog { encaissement: encaissement, show: show }); - const dialog = new DialogValidationEncaissement(html, actor, rollData, armure, encaissement, show, onEncaisser); + const dialog = new DialogValidationEncaissement(html, actor, rollData, armure, encaissement, show, attackerId, onEncaisser); dialog.render(true); } /* -------------------------------------------- */ - constructor(html, actor, rollData, armure, encaissement, show, onEncaisser) { + constructor(html, actor, rollData, armure, encaissement, show, attackerId, onEncaisser) { // Common conf let buttons = { "valider": { label: "Valider", callback: html => this.onValider() }, @@ -48,6 +48,7 @@ export class DialogValidationEncaissement extends Dialog { this.armure = armure; this.encaissement = encaissement; this.show = show; + this.attackerId = attackerId; this.onEncaisser = onEncaisser; this.forceDiceResult = {total: encaissement.roll.result }; } @@ -66,6 +67,6 @@ export class DialogValidationEncaissement extends Dialog { async onValider() { this.encaissement = await RdDUtility.jetEncaissement(this.rollData, this.armure, { showDice: SHOW_DICE, forceDiceResult: this.forceDiceResult}); - this.onEncaisser(this.encaissement, this.show) + this.onEncaisser(this.encaissement, this.show, this.attackerId) } } diff --git a/module/rdd-carac.js b/module/rdd-carac.js index f5a905dc..10a23e5b 100644 --- a/module/rdd-carac.js +++ b/module/rdd-carac.js @@ -58,15 +58,6 @@ export class RdDCarac { selectedCarac?.label.match(/(Apparence|Force|Agilité|Dextérité|Vue|Ouïe|Odorat-Goût|Empathie|Dérobée|Mêlée|Tir|Lancer)/); } - static isIgnoreEtatGeneral(rollData) { - const selectedCarac = rollData.selectedCarac; - return !selectedCarac || - rollData.ethylisme || - RdDCarac.isChance(selectedCarac) || - (RdDCarac.isReve(selectedCarac) && !rollData.competence); - } - - static computeTotal(carac, beaute = undefined) { const total = Object.values(carac ?? {}).filter(c => !c.derivee) .map(it => parseInt(it.value)) diff --git a/module/rdd-roll.js b/module/rdd-roll.js index 4266e995..e558902c 100644 --- a/module/rdd-roll.js +++ b/module/rdd-roll.js @@ -314,8 +314,8 @@ export class RdDRoll extends Dialog { HtmlUtility.showControlWhen(this.html.find(".use-encTotal"), rollData.ajustements.encTotal.visible && RdDCarac.isAgiliteOuDerobee(rollData.selectedCarac)); HtmlUtility.showControlWhen(this.html.find(".use-surenc"), rollData.ajustements.surenc.visible && RdDCarac.isActionPhysique(rollData.selectedCarac)); HtmlUtility.showControlWhen(this.html.find(".utilisation-moral"), rollData.use.appelAuMoral); - HtmlUtility.showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moralTotal.used); HtmlUtility.showControlWhen(this.html.find(".divAppelAuMoral"), rollData.use.appelAuMoral); + HtmlUtility.showControlWhen(this.html.find(".diffMoral"), rollData.ajustements.moralTotal.used); // Mise à jour valeurs this.html.find(".dialog-roll-title").text(this._getTitle(rollData)); diff --git a/module/rolldata-ajustements.js b/module/rolldata-ajustements.js index b42884f4..71879f2a 100644 --- a/module/rolldata-ajustements.js +++ b/module/rolldata-ajustements.js @@ -51,7 +51,7 @@ export const referenceAjustements = { getValue: (rollData, actor) => RdDBonus.find(rollData.surpriseDefenseur).attaque, }, etat: { - isUsed: (rollData, actor) => !RdDCarac.isIgnoreEtatGeneral(rollData), + isUsed: (rollData, actor) => !RollDataAjustements.isIgnoreEtatGeneral(rollData), getLabel: (rollData, actor) => 'Etat général', getValue: (rollData, actor) => actor.getEtatGeneral({ ethylisme: rollData.forceAlcool != undefined }) }, @@ -177,4 +177,11 @@ export class RollDataAjustements { return sum; } + static isIgnoreEtatGeneral(rollData) { + const selectedCarac = rollData.selectedCarac; + return !selectedCarac || + rollData.ethylisme || + RdDCarac.isChance(selectedCarac) || + (RdDCarac.isReve(selectedCarac) && !rollData.competence); + } }