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:
parent
78336a3f45
commit
4b1381e535
@ -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;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user