Ajout de l'origine d'une blessure

En combat, indication de l'origine des blessures
This commit is contained in:
2023-03-30 00:19:12 +02:00
parent 9cf14f8b75
commit c57f140c54
8 changed files with 65 additions and 44 deletions

View File

@ -3209,10 +3209,6 @@ export class RdDActor extends RdDBaseActor {
if (attacker && !await attacker.accorder(this, 'avant-encaissement')) {
return;
}
this.validerEncaissement(rollData, show);
}
async validerEncaissement(rollData, show) {
if (ReglesOptionelles.isUsing('validation-encaissement-gr') && !game.user.isGM) {
RdDBaseActor.remoteActorCall({
actorId: this.id,
@ -3223,18 +3219,18 @@ export class RdDActor extends RdDBaseActor {
}
const armure = await this.computeArmure(rollData);
if (ReglesOptionelles.isUsing('validation-encaissement-gr')) {
DialogValidationEncaissement.validerEncaissement(this, rollData, armure, show, (encaissement, show) => this._appliquerEncaissement(encaissement, show));
DialogValidationEncaissement.validerEncaissement(this, rollData, armure, show, (encaissement, show) => this._appliquerEncaissement(encaissement, show, attacker));
}
else {
let encaissement = await RdDUtility.jetEncaissement(rollData, armure, { showDice: SHOW_DICE });
await this._appliquerEncaissement(encaissement, show)
await this._appliquerEncaissement(encaissement, show, attacker)
}
}
async _appliquerEncaissement(encaissement, show) {
async _appliquerEncaissement(encaissement, show, attacker) {
let santeOrig = duplicate(this.system.sante);
const blessure = await this.ajouterBlessure(encaissement); // Will upate the result table
const blessure = await this.ajouterBlessure(encaissement, attacker); // Will update the result table
const perteVie = this.isEntite()
? { newValue: 0 }
: await this.santeIncDec("vie", -encaissement.vie);
@ -3268,7 +3264,7 @@ export class RdDActor extends RdDBaseActor {
}
/* -------------------------------------------- */
async ajouterBlessure(encaissement) {
async ajouterBlessure(encaissement, attacker = undefined) {
if (this.isEntite()) return; // Une entité n'a pas de blessures
if (encaissement.gravite < 0) return;
if (encaissement.gravite > 0) {
@ -3281,7 +3277,7 @@ export class RdDActor extends RdDBaseActor {
}
}
const endActuelle = Number(this.system.sante.endurance.value);
const blessure = await RdDItemBlessure.createBlessure(this, encaissement.gravite, encaissement.dmg.loc.label);
const blessure = await RdDItemBlessure.createBlessure(this, encaissement.gravite, encaissement.dmg.loc.label, attacker);
if (blessure.isCritique()) {
encaissement.endurance = endActuelle;
}
@ -3534,7 +3530,7 @@ export class RdDActor extends RdDBaseActor {
for (let blessure of blessures) {
if (pointsGuerison >= blessure.system.gravite) {
pointsGuerison -= blessure.system.gravite;
guerisonData.list.push(`1 Blessure ${blessure.system.labelGravite} (${blessure.system.gravite} points)`);
guerisonData.list.push(`1 Blessure ${blessure.system.label} (${blessure.system.gravite} points)`);
ids.push(blessure.id)
}
}