Corrections sur les ajustements

- le malus de sur-encombrement est correctement calculé (dans la
  zone d'état)
- par défaut, le sur-encombrement est appliqué
- le sur-encombrement est affiché sur les actions physiques
- l'encombrement s'applique à agilité/dérobée, avec natation/acrobatie
  (par défaut)
- le moral est géré dans le noeud 'use' du rollData
- le moral est associé aux actions physiques
This commit is contained in:
Vincent Vandemeulebrouck
2022-11-23 22:34:39 +01:00
parent 7698147e97
commit 9992b64cae
9 changed files with 36 additions and 34 deletions

View File

@ -1292,7 +1292,7 @@ export class RdDActor extends Actor {
}
isSurenc() {
return this.isPersonnage() ? (this.system.compteurs.surenc.value < 0) : false
return this.isPersonnage() ? (this.computeMalusSurEncombrement() < 0) : false
}
/* -------------------------------------------- */
@ -1303,6 +1303,7 @@ export class RdDActor extends Actor {
}
return Math.min(0, this.getEncombrementMax() - Math.ceil(Number(this.getEncTotal())));
}
getMessageSurEncombrement() {
return this.computeMalusSurEncombrement() < 0 ? "Sur-Encombrement!" : "";
}
@ -1337,17 +1338,15 @@ export class RdDActor extends Actor {
async computeEncombrementTotalEtMalusArmure() {
if (!this.pack) {
await this.computeMalusArmure();
return this.computeEncombrement();
this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0);
if (!this.isVehicule()) {
this.system.compteurs.surenc.value = this.computeMalusSurEncombrement();
}
return this.encTotal;
}
return 0;
}
/* -------------------------------------------- */
computeEncombrement() {
this.encTotal = this.items.map(it => it.getEncTotal()).reduce(Misc.sum(), 0);
return this.encTotal;
}
/* -------------------------------------------- */
async computeMalusArmure() {
if (this.isPersonnage()) {
@ -1419,9 +1418,6 @@ export class RdDActor extends Actor {
state += Math.min(0, (compteurs.ethylisme?.value ?? 0));
compteurs.etat.value = state;
if (compteurs?.surenc) {
compteurs.surenc.value = this.computeMalusSurEncombrement();
}
}
/* -------------------------------------------- */
@ -2273,7 +2269,7 @@ export class RdDActor extends Actor {
/* -------------------------------------------- */
async _appliquerAppelMoral(rollData) {
if (!this.isPersonnage()) return;
if (!rollData.useMoral) return;
if (!rollData.use.moral) return;
if (rollData.rolled.isEchec ||
(rollData.ajustements.diviseurSignificative && (rollData.rolled.roll * rollData.ajustements.diviseurSignificative > rollData.score))) {
rollData.perteMoralEchec = rollData.moral <= -3 ? 'dissolution' : 'perte';