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

View File

@ -622,7 +622,7 @@ export class RdDActor extends RdDBaseActor {
content: this.name + ': ' content: this.name + ': '
}; };
const insomnie = this.system.sommeil?.insomnie || heures == 0; const insomnie = this.system.sommeil?.insomnie || heures == 0;
await this.recupereEndurance({message:message, demi:insomnie}); await this.recupereEndurance({ message: message, demi: insomnie });
if (insomnie) { if (insomnie) {
message.content += 'Vous ne trouvez pas le sommeil'; message.content += 'Vous ne trouvez pas le sommeil';
} }
@ -630,10 +630,10 @@ export class RdDActor extends RdDBaseActor {
let jetsReve = []; let jetsReve = [];
let dormi = await this.dormirDesHeures(jetsReve, message, heures, options); let dormi = await this.dormirDesHeures(jetsReve, message, heures, options);
if (jetsReve.length > 0) { 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') { 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; options.chateauDormant = options.chateauDormant && dormi.heures >= heures;
message.content += `Vous avez dormi ${dormi.heures <= 1 ? 'une heure' : (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) { async dormirDesHeures(jetsReve, message, heures, options) {
const dormi = { heures: 0, etat: 'dort' }; const dormi = { heures: 0, etat: 'dort' };
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) { 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(); let max = this._computeEnduranceMax();
if (demi) { if (demi) {
max = Math.floor(max/2); max = Math.floor(max / 2);
} }
const manquant = max - this.system.sante.endurance.value; const manquant = max - this.system.sante.endurance.value;