v10.6.11 #621
@ -371,12 +371,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
};
|
};
|
||||||
for (let i = 0; i < nGrisReve; i++) {
|
for (let i = 0; i < nGrisReve; i++) {
|
||||||
await this.dormir(6, { grisReve: true });
|
await this.dormir(6, { grisReve: true });
|
||||||
const blessures = duplicate(this.system.blessures);
|
await this._recuperationSante(message);
|
||||||
await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []);
|
|
||||||
await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste);
|
|
||||||
await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste);
|
|
||||||
await this.update({ "system.blessures": blessures });
|
|
||||||
await this._recupererVie(message);
|
|
||||||
|
|
||||||
const moralActuel = Misc.toInt(this.system.compteurs.moral.value);
|
const moralActuel = Misc.toInt(this.system.compteurs.moral.value);
|
||||||
if (moralActuel != 0) {
|
if (moralActuel != 0) {
|
||||||
@ -390,6 +385,43 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
this.sheet.render(true);
|
this.sheet.render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async _recuperationSante(message) {
|
||||||
|
const maladiesPoisons = this._maladiePoisons(message);
|
||||||
|
this._messageRecuperationMaladiePoisons(maladiesPoisons, message);
|
||||||
|
const isMaladeEmpoisonne = maladiesPoisons.length > 0;
|
||||||
|
const blessures = duplicate(this.system.blessures);
|
||||||
|
await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), [], isMaladeEmpoisonne);
|
||||||
|
await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste, isMaladeEmpoisonne);
|
||||||
|
await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste, isMaladeEmpoisonne);
|
||||||
|
await this.update({ "system.blessures": blessures });
|
||||||
|
await this._recupererVie(message, isMaladeEmpoisonne);
|
||||||
|
}
|
||||||
|
|
||||||
|
_maladiePoisons(message) {
|
||||||
|
const actifs = this.items.filter(item => item.type == 'maladie' || (item.type == 'poison' && item.system.active));
|
||||||
|
return actifs;
|
||||||
|
}
|
||||||
|
|
||||||
|
_messageRecuperationMaladiePoisons(actifs, message) {
|
||||||
|
if (actifs.length > 0) {
|
||||||
|
const identifies = actifs.filter(it => it.system.identifie);
|
||||||
|
const nonIdentifies = actifs.filter(it => !it.system.identifie);
|
||||||
|
message.content += 'Vous souffrez';
|
||||||
|
switch (nonIdentifies.length) {
|
||||||
|
case 0: break;
|
||||||
|
case 1: message.content += ` d'un mal inconnu`; break;
|
||||||
|
default: message.content += ` de ${nonIdentifies.length} maux inconnus`; break;
|
||||||
|
}
|
||||||
|
if (identifies.length > 0) {
|
||||||
|
if (nonIdentifies > 0) {
|
||||||
|
message.content += ' et';
|
||||||
|
} else {
|
||||||
|
message.content += ' de ' + identifies.map(it => it.name).reduce(Misc.joining(', '));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async dormirChateauDormant() {
|
async dormirChateauDormant() {
|
||||||
let message = {
|
let message = {
|
||||||
@ -398,11 +430,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const blessures = duplicate(this.system.blessures)
|
const blessures = duplicate(this.system.blessures)
|
||||||
await this._recupererBlessures(message, "legere", blessures.legeres.liste.filter(b => b.active), []);
|
await this._recuperationSante(message)
|
||||||
await this._recupererBlessures(message, "grave", blessures.graves.liste.filter(b => b.active), blessures.legeres.liste);
|
|
||||||
await this._recupererBlessures(message, "critique", blessures.critiques.liste.filter(b => b.active), blessures.graves.liste);
|
|
||||||
await this.update({ "system.blessures": blessures });
|
|
||||||
await this._recupererVie(message);
|
|
||||||
await this._jetDeMoralChateauDormant(message);
|
await this._jetDeMoralChateauDormant(message);
|
||||||
await this._recupereChance();
|
await this._recupereChance();
|
||||||
await this.transformerStress();
|
await this.transformerStress();
|
||||||
@ -433,7 +461,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _recupererBlessures(message, type, liste, moindres) {
|
async _recupererBlessures(message, type, liste, moindres, isMaladeEmpoisonne) {
|
||||||
if (!this.bonusRecuperationPotion) this.bonusRecuperationPotion = 0;
|
if (!this.bonusRecuperationPotion) this.bonusRecuperationPotion = 0;
|
||||||
let count = 0;
|
let count = 0;
|
||||||
const definitions = RdDUtility.getDefinitionsBlessures();
|
const definitions = RdDUtility.getDefinitionsBlessures();
|
||||||
@ -442,7 +470,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
if (blessure.jours >= definition.facteur) {
|
if (blessure.jours >= definition.facteur) {
|
||||||
let rolled = await this._jetRecuperationConstitution(Misc.toInt(blessure.soins_complets) + this.bonusRecuperationPotion, message);
|
let rolled = await this._jetRecuperationConstitution(Misc.toInt(blessure.soins_complets) + this.bonusRecuperationPotion, message);
|
||||||
blessure.soins_complets = 0;
|
blessure.soins_complets = 0;
|
||||||
if (rolled.isSuccess && this._retrograderBlessure(type, blessure, moindres)) {
|
if (!isMaladeEmpoisonne && rolled.isSuccess && this._retrograderBlessure(type, blessure, moindres)) {
|
||||||
message.content += ` -- une blessure ${type} cicatrise`;
|
message.content += ` -- une blessure ${type} cicatrise`;
|
||||||
count++;
|
count++;
|
||||||
}
|
}
|
||||||
@ -481,7 +509,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _recupererVie(message) {
|
async _recupererVie(message, isMaladeEmpoisonne) {
|
||||||
const tData = this.system
|
const tData = this.system
|
||||||
let blessures = [].concat(tData.blessures.legeres.liste).concat(tData.blessures.graves.liste).concat(tData.blessures.critiques.liste);
|
let blessures = [].concat(tData.blessures.legeres.liste).concat(tData.blessures.graves.liste).concat(tData.blessures.critiques.liste);
|
||||||
let nbBlessures = blessures.filter(b => b.active);
|
let nbBlessures = blessures.filter(b => b.active);
|
||||||
@ -492,7 +520,7 @@ export class RdDActor extends RdDBaseActor {
|
|||||||
bonusSoins = Math.max(bonusSoins, Misc.toInt(b.soins_complets));
|
bonusSoins = Math.max(bonusSoins, Misc.toInt(b.soins_complets));
|
||||||
}
|
}
|
||||||
let rolled = await this._jetRecuperationConstitution(bonusSoins, message)
|
let rolled = await this._jetRecuperationConstitution(bonusSoins, message)
|
||||||
if (rolled.isSuccess) {
|
if (!isMaladeEmpoisonne && rolled.isSuccess) {
|
||||||
const gain = Math.min(rolled.isPart ? 2 : 1, vieManquante);
|
const gain = Math.min(rolled.isPart ? 2 : 1, vieManquante);
|
||||||
message.content += " -- récupération de vie: " + gain;
|
message.content += " -- récupération de vie: " + gain;
|
||||||
await this.santeIncDec("vie", gain);
|
await this.santeIncDec("vie", gain);
|
||||||
|
Loading…
Reference in New Issue
Block a user