Decompte des heure en cas de réveil

Si le gardien gère la durée des nuits, en cas de rêve de dragon,
les heures restant à dormir sont mises à jour.
This commit is contained in:
Vincent Vandemeulebrouck 2023-06-24 01:41:12 +02:00
parent 78336a3f45
commit 4b1381e535
1 changed files with 13 additions and 5 deletions

View File

@ -622,7 +622,7 @@ export class RdDActor extends RdDBaseActor {
content: this.name + ': '
};
const insomnie = this.system.sommeil?.insomnie || heures == 0;
await this.recupereEndurance({message:message, demi:insomnie});
await this.recupereEndurance({ message: message, demi: insomnie });
if (insomnie) {
message.content += 'Vous ne trouvez pas le sommeil';
}
@ -630,10 +630,10 @@ export class RdDActor extends RdDBaseActor {
let jetsReve = [];
let dormi = await this.dormirDesHeures(jetsReve, message, heures, options);
if (jetsReve.length > 0) {
message.content += `Vous récupérez ${jetsReve.map(it => it <0 ? '(dragon)' : it).reduce(Misc.joining("+"))} Points de rêve. `;
message.content += `Vous récupérez ${jetsReve.map(it => it < 0 ? '(dragon)' : it).reduce(Misc.joining("+"))} Points de rêve. `;
}
if (dormi.etat == 'eveil') {
message.content += 'Vous êtes réveillé par un Rêve de Dragon.'
await this.reveilReveDeDragon(message, dormi.heures);
}
options.chateauDormant = options.chateauDormant && dormi.heures >= heures;
message.content += `Vous avez dormi ${dormi.heures <= 1 ? 'une heure' : (dormi.heures + ' heures')}. `;
@ -650,6 +650,14 @@ export class RdDActor extends RdDBaseActor {
}
}
async reveilReveDeDragon(message, heures) {
message.content += 'Vous êtes réveillé par un Rêve de Dragon.';
const restant = Math.max(this.system.sommeil?.heures - heures, 0)
if (restant > 0) {
await this.update({ 'system.sommeil': { heures: restant } });
}
}
async dormirDesHeures(jetsReve, message, heures, options) {
const dormi = { heures: 0, etat: 'dort' };
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) {
@ -703,10 +711,10 @@ export class RdDActor extends RdDBaseActor {
}
/* -------------------------------------------- */
async recupereEndurance({message, demi}) {
async recupereEndurance({ message, demi }) {
let max = this._computeEnduranceMax();
if (demi) {
max = Math.floor(max/2);
max = Math.floor(max / 2);
}
const manquant = max - this.system.sante.endurance.value;