Compare commits

...

3 Commits

Author SHA1 Message Date
40be65a94e Merge pull request 'v11 - sommeil' (#752) from VincentVk/foundryvtt-reve-de-dragon:v11 into v11
Reviewed-on: #752
2025-03-04 22:11:00 +01:00
633638a9ab Fix récupération sommeil
Les différentsq updates pouvaient ne pas être visibles lors du sommeil

En forçant un render 20ms après la fin des actions qui impliquent un
sommeil, les mises à jour sont correctes
2025-03-04 22:04:52 +01:00
88a3464eed Add command to run debug server 2025-03-04 21:32:21 +01:00
2 changed files with 31 additions and 33 deletions

View File

@ -243,7 +243,7 @@ export class RdDActor extends RdDBaseActorSang {
}
await this.resetInfoSommeil()
ChatMessage.create(message);
this.sheet.render(true);
setTimeout(() => this.sheet.render(), 20)
}
async _recuperationSante(message) {
@ -299,7 +299,7 @@ export class RdDActor extends RdDBaseActorSang {
ChatMessage.create(message);
}
await this.resetInfoSommeil();
this.sheet.render(true);
setTimeout(() => this.sheet.render(), 20)
}
}
@ -442,10 +442,9 @@ export class RdDActor extends RdDBaseActorSang {
message.content += 'Vous ne trouvez pas le sommeil';
}
else {
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 ? '0 (réveil)' : it).reduce(Misc.joining("+"))} Points de rêve. `;
let dormi = await this.$dormirDesHeures(message, heures, options);
if (dormi.jetsReve.length > 0) {
message.content += `Vous récupérez ${dormi.jetsReve.map(it => it < 0 ? '0 (réveil)' : it).reduce(Misc.joining("+"))} Points de rêve. `;
}
if (dormi.etat == 'eveil') {
await this.reveilReveDeDragon(message, dormi.heures);
@ -461,7 +460,7 @@ export class RdDActor extends RdDBaseActorSang {
await this.dormirChateauDormant();
}
else {
this.sheet.render(true);
setTimeout(() => this.sheet.render(), 20)
}
}
@ -472,18 +471,18 @@ export class RdDActor extends RdDBaseActorSang {
}
}
async dormirDesHeures(jetsReve, message, heures, options) {
const dormi = { heures: 0, etat: 'dort' };
async $dormirDesHeures(message, heures, options) {
const dormi = { heures: 0, etat: 'dort', jetsReve: [] };
for (; dormi.heures < heures && dormi.etat == 'dort'; dormi.heures++) {
await this._recupererEthylisme(message);
await this.$recupererEthylisme(message);
if (options.grisReve) {
await this.recupererFatigue(message);
await this.$recupererFatigue(message);
}
else if (!this.system.sommeil?.insomnie) {
await this.recupererFatigue(message);
dormi.etat = await this.jetRecuperationReve(jetsReve, message);
await this.$recupererFatigue(message);
await this.$jetRecuperationReve(dormi, message);
if (dormi.etat == 'dort' && EffetsDraconiques.isDonDoubleReve(this)) {
dormi.etat = await this.jetRecuperationReve(jetsReve, message);
dormi.etat = await this.$jetRecuperationReve(dormi, message);
}
}
}
@ -491,35 +490,36 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
async jetRecuperationReve(jetsReve, message) {
async $jetRecuperationReve(dormi, message) {
if (this.getReveActuel() < this.system.reve.seuil.value) {
let reve = await RdDDice.rollTotal("1dr");
const reve = await RdDDice.rollTotal("1dr")
if (reve >= 7) {
// Rêve de Dragon !
message.content += `Vous faites un <strong>Rêve de Dragon</strong> de ${reve} Points de rêve qui vous réveille! `;
await this.combattreReveDeDragon(reve);
jetsReve.push(-1);
return 'eveil';
dormi.jetsReve.push(-1);
dormi.etat = 'eveil'
return
}
else {
if (!ReglesOptionnelles.isUsing("recuperation-reve")) {
ChatMessage.create({
whisper: ChatUtility.getOwners(this),
content: `Pas de récupération de rêve (${reve} points ignorés)`
});
jetsReve.push(0);
})
dormi.jetsReve.push(0)
}
else {
await this.reveActuelIncDec(reve);
jetsReve.push(reve);
await this.reveActuelIncDec(reve)
dormi.jetsReve.push(reve)
}
}
}
return 'dort';
dormi.etat = 'dort'
}
/* -------------------------------------------- */
async _recupererEthylisme(message) {
async $recupererEthylisme(message) {
if (!ReglesOptionnelles.isUsing("recuperation-ethylisme")) { return; }
let value = Math.min(Number.parseInt(this.system.compteurs.ethylisme.value) + 1, 1);
if (value <= 0) {
@ -549,18 +549,15 @@ export class RdDActor extends RdDBaseActorSang {
}
/* -------------------------------------------- */
async recupererFatigue(message) {
async $recupererFatigue(message) {
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
let fatigue = this.system.sante.fatigue.value;
const fatigueMin = this.getFatigueMin();
let fatigue = this.system.sante.fatigue.value
const fatigueMin = this.getFatigueMin()
if (fatigue <= fatigueMin) {
return;
return
}
fatigue = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue));
setTimeout( // On attend un peu pour que le message de récupération de r
async () => {
await this.update({ 'system.sante.fatigue.value': fatigue });
}, 200);
fatigue = Math.max(fatigueMin, this._calculRecuperationSegment(fatigue))
await this.update({ 'system.sante.fatigue.value': fatigue });
if (fatigue == 0) {
message.content += "Vous êtes complêtement reposé. ";
}

View File

@ -1,6 +1,7 @@
{
"scripts": {
"build": "npx vite build",
"run": "npx vite serve",
"packCompendiumsToDist": "node ./tools/packCompendiumsToDist.mjs",
"packCompendiumsToPublic": "node ./tools/packCompendiumsToPublic.mjs",
"unpackCompendiumsFromPublic": "node ./tools/unpackCompendiumsFromPublic.mjs"