diff --git a/changelog.md b/changelog.md index 41c544ea..f79ce302 100644 --- a/changelog.md +++ b/changelog.md @@ -1,5 +1,15 @@ # v11.0 +## v11.0.10 - Les Songes de Khrachtchoum le Problémeux +- on peut de nouveau se déplacer dans les TMRs d'un clic sur la case à atteindre +- Lire un livre depuis l'inventaire permet de nouveau de faire un jet de la tâche + créée au lieu de créer toujours une nouvelle tâche +- La sélection des TMR pour la création de signes draconiques ne cause plus d'erreurs +- la récupération d'endurance en cas d'insomnie est limitée à la moitié +- le résultat du sommeil lors d'un rêve de dragon à la première heure s'affiche normalement +- lorsque le gardien gère la durée des nuits, en cas de rêve de dragon, + les heures dormies sont déduites des heures restant à dormir + ## v11.0.9 - Les Souvenirs de Khrachtchoum le Problémeux - mode de saisie de l'archétype en vue détaillée - création une nouvelle incarnation depuis l'archétype diff --git a/module/actor.js b/module/actor.js index c6848e1b..3ce87a7e 100644 --- a/module/actor.js +++ b/module/actor.js @@ -621,21 +621,22 @@ export class RdDActor extends RdDBaseActor { whisper: ChatUtility.getWhisperRecipientsAndGMs(this.name), content: this.name + ': ' }; - await this.recupereEndurance(message); - if (this.system.sommeil?.insomnie || heures == 0) { + const insomnie = this.system.sommeil?.insomnie || heures == 0; + await this.recupereEndurance({ message: message, demi: insomnie }); + if (insomnie) { message.content += 'Vous ne trouvez pas le sommeil'; } else { let jetsReve = []; let dormi = await this.dormirDesHeures(jetsReve, message, heures, options); - message.content += `Vous dormez ${dormi.heures <= 1 ? 'une heure' : (dormi.heures + ' heures')}. `; if (jetsReve.length > 0) { - message.content += `Vous récupérez ${jetsReve.filter(it => it >= 0).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')}. `; } if (!options.grisReve) { @@ -649,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++) { @@ -702,8 +711,13 @@ export class RdDActor extends RdDBaseActor { } /* -------------------------------------------- */ - async recupereEndurance(message) { - const manquant = this._computeEnduranceMax() - this.system.sante.endurance.value; + async recupereEndurance({ message, demi }) { + let max = this._computeEnduranceMax(); + if (demi) { + max = Math.floor(max / 2); + } + const manquant = max - this.system.sante.endurance.value; + if (manquant > 0) { await this.santeIncDec("endurance", manquant); message.content += `Vous récuperez ${manquant} points d'endurance. `; @@ -1706,6 +1720,7 @@ export class RdDActor extends RdDBaseActor { await this.rollTache(tache.id); } } + async actionHerbe(item, onActionItem = async () => { }) { if (item.isHerbeAPotion()) { return DialogFabriquerPotion.create(this, item, onActionItem); diff --git a/module/actor/base-actor.js b/module/actor/base-actor.js index 29e82b7e..8acd2ffc 100644 --- a/module/actor/base-actor.js +++ b/module/actor/base-actor.js @@ -119,7 +119,7 @@ export class RdDBaseActor extends Actor { } listItems(type = undefined) { return (type ? this.itemTypes[type] : this.items); } - filterItems(filter, type = undefined) { return type ? this.itemTypes[type]?.filter(filter) ?? [] : []; } + filterItems(filter, type = undefined) { return (type ? this.itemTypes[type] : this.items)?.filter(filter) ?? []; } findItemLike(idOrName, type) { return this.getItem(idOrName, type) ?? Misc.findFirstLike(idOrName, this.listItems(type), { description: Misc.typeName('Item', type) }); diff --git a/module/dialog-create-signedraconique.js b/module/dialog-create-signedraconique.js index d59e60df..0620864d 100644 --- a/module/dialog-create-signedraconique.js +++ b/module/dialog-create-signedraconique.js @@ -111,7 +111,7 @@ export class DialogCreateSigneDraconique extends Dialog { onSelectTmr(event) { const tmrName = this.html.find(event.currentTarget)?.data("tmr-name"); - const onTmr = this.tmrs.find(it => it.name == tmrName); + const onTmr = this.dialogData.tmrs.find(it => it.name == tmrName); if (onTmr){ onTmr.selected = event.currentTarget.checked; } diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index 6d43df08..f9a47ba0 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -906,7 +906,7 @@ export class RdDTMRDialog extends Dialog { if (this.viewOnly) { return; } - let clickOddq = RdDTMRDialog._computeEventOddq(event.data.originalEvent); + let clickOddq = RdDTMRDialog._computeEventOddq(event.nativeEvent); await this._onClickTMRPos(clickOddq); // Vérifier l'état des compteurs reve/fatigue/vie } diff --git a/system.json b/system.json index 439ad5bf..e17b8473 100644 --- a/system.json +++ b/system.json @@ -1,8 +1,8 @@ { "id": "foundryvtt-reve-de-dragon", "title": "Rêve de Dragon", - "version": "11.0.9", - "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.0.9.zip", + "version": "11.0.10", + "download": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/archive/foundryvtt-reve-de-dragon-11.0.10.zip", "manifest": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/v11/system.json", "changelog": "https://www.uberwald.me/gitea/public/foundryvtt-reve-de-dragon/raw/branch/v11/changelog.md", "compatibility": {