Merge VK branch

This commit is contained in:
2020-12-01 08:28:41 +01:00
5 changed files with 70 additions and 24 deletions

View File

@ -391,10 +391,14 @@ export class RdDActor extends Actor {
}
mergeObject(retrograde, { "active": true, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": blessure.localisation });
}
mergeObject(blessure, { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" });
this._supprimerBlessure(blessure);
return true;
}
_supprimerBlessure(blessure) {
mergeObject(blessure, { "active": false, "premiers_soins": 0, "soins_complets": 0, "jours": 0, "localisation": "" });
}
async _recupererVie(message) {
let blessures = [].concat(this.data.data.blessures.legeres.liste).concat(this.data.data.blessures.graves.liste).concat(this.data.data.blessures.critiques.liste);
let nbBlessures = blessures.filter(b => b.active);
@ -430,6 +434,28 @@ export class RdDActor extends Actor {
return rolled;
}
async remiseANeuf() {
let message = {
whisper: ChatUtility.getWhisperRecipientsAndGMs( this.name ),
content : "Remise à neuf de " + this.name
};
const blessures = duplicate(this.data.data.blessures);
for (let listeBlessures of [blessures.legeres.liste, blessures.graves.liste, blessures.critiques.liste]) {
for (let blessure of listeBlessures) {
this._supprimerBlessure(blessure);
}
}
await this.update( {"data.blessures": blessures } );
await this.santeIncDec("vie", this.data.data.sante.vie.max - this.data.data.sante.vie.value);
await this.santeIncDec("endurance", this.data.data.sante.endurance.max - this.data.data.sante.endurance.value);
let fatigue = duplicate(this.data.data.sante.fatigue)
fatigue.value = 0;
await this.update( {"data.sante.fatigue": fatigue } );
ChatMessage.create( message );
}
/* -------------------------------------------- */
async dormir(heures=1) {
let message = {
@ -890,12 +916,15 @@ export class RdDActor extends Actor {
}
/* -------------------------------------------- */
async santeIncDec(name, inc, isCritique = false ) {
async santeIncDec(name, inc, isCritique = false) {
const sante = duplicate(this.data.data.sante);
let data = sante[name];
let minValue = 0;
if (this.type == 'personnage')
minValue = name == "vie" ? Number(-this.data.data.attributs.sconst.value) : 0;
if (this.type == 'personnage') {
// TODO: les animaux/humanoïdes on théoriquement aussi un sconst, mais la SPA n'est pas passé par là
minValue = name == "vie" ? -Number(this.data.data.attributs.sconst.value) : 0;
}
let newValue = Math.max(minValue, Math.min(data.value + inc, data.max));
//console.log("New value ", inc, minValue, newValue);
@ -1298,9 +1327,8 @@ export class RdDActor extends Actor {
let degatsReel = attackerRoll.degats - armure;
let result = RdDUtility.computeBlessuresSante(degatsReel, attackerRoll.mortalite);
if ( this.data.type != 'entite') // Pas de PV chez les entités
await this.santeIncDec("vie", result.vie, (result.critiques > 0) );
await this.santeIncDec("endurance", result.endurance, (result.critiques > 0) );
await this.santeIncDec("vie", result.vie);
await this.santeIncDec("endurance", result.endurance, (result.critiques > 0));
result.locName = (attackerRoll.loc) ? attackerRoll.loc.label : "Corps";
this.manageBlessures(result); // Will upate the result table