#54 Gestion complète du malus armure

This commit is contained in:
2020-12-02 14:00:54 +01:00
parent d614206859
commit 18c7eb767d
7 changed files with 37 additions and 11 deletions

View File

@ -91,7 +91,7 @@ export class RdDActor extends Actor {
_prepareCharacterData(actorData) {
// Initialize empty items
RdDUtility.computeCarac(actorData.data);
this.computeEncombrementTotal();
this.computeEncombrementTotalEtMalusArmure();
this.computeEtatGeneral();
}
@ -751,9 +751,15 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
computeEncombrementTotal( ) {
async computeEncombrementTotalEtMalusArmure( ) {
let totalEnc = 0;
let malusArmureData = duplicate(this.data.data.attributs.malusarmure);
let newMalusArmure = 0;
for (const item of this.data.items) {
if ( item.type == 'armure' && item.data.equipe ) { // Armure équipée, intégration du malus armure total
newMalusArmure += item.data.malus;
}
// Calcul encombrement
if ( item.data && item.data.encombrement != undefined ) {
if ( !Number(item.data.encombrement) ) item.data.encombrement = 0; // Auto-fix
if (!item.data.quantite) item.data.quantite = 1; // Auto-fix
@ -764,8 +770,14 @@ export class RdDActor extends Actor {
item.data.encTotal = 0; // Force default enc
}
}
// Mise à jour valeur totale et états
this.encombrementTotal = totalEnc;
this.detectSurEncombrement();
// Mise à jour éventuelle du malus armure
if (newMalusArmure != malusArmureData.value) {
malusArmureData.value = newMalusArmure;
await this.update( {"data.attributs.malusarmure": malusArmureData } );
}
}
/* -------------------------------------------- */
@ -1137,6 +1149,7 @@ export class RdDActor extends Actor {
coutreve: Array(20).fill().map((item, index) => 1 + index),
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
difficultesLibres: CONFIG.RDD.difficultesLibres,
malusArmureValue: 0,
surencMalusFlag: false, // A ne pas utiliser pour les sorts
surencMalusValue: 0,
surencMalusApply: false,
@ -1164,10 +1177,11 @@ export class RdDActor extends Actor {
selectedCarac: carac,
ajustementsConditions: CONFIG.RDD.ajustementsConditions,
difficultesLibres: CONFIG.RDD.difficultesLibres,
etat: this.data.data.compteurs.etat.value,
etat: this.data.data.compteurs.etat.value,
finalLevel: 0,
diffConditions: 0,
diffLibre: 0,
malusArmureValue: (this.data.data.attributs) ? this.data.data.attributs.malusarmure.value : 0,
surencMalusFlag: (this.data.data.compteurs.surenc.value < 0),
surencMalusValue: this.data.data.compteurs.surenc.value,
surencMalusApply: false,
@ -1249,6 +1263,7 @@ export class RdDActor extends Actor {
attackerRoll: attackerRoll,
finalLevel: 0,
coupsNonMortels: false,
malusArmureValue: (this.data.data.attributs) ? this.data.data.attributs.malusarmure.value : 0,
surencMalusFlag: (this.data.data.compteurs.surenc.value < 0),
surencMalusValue: this.data.data.compteurs.surenc.value,
surencMalusApply: false,
@ -1315,7 +1330,7 @@ export class RdDActor extends Actor {
if ( item && item.data.data ) {
let update = {_id: item._id, "data.equipe": !item.data.data.equipe };
await this.updateEmbeddedEntity("OwnedItem", update);
this.computeEncombrementTotal(); // Mise à jour encombrement
this.computeEncombrementTotalEtMalusArmure(); // Mise à jour encombrement
}
}