From 0e3e6eb6eb93c7ba5512119e55d39ababd65027e Mon Sep 17 00:00:00 2001 From: sladecraven <sylvain@lahiette.com> Date: Wed, 26 May 2021 16:28:57 +0200 Subject: [PATCH] Fix TMR --- module/actor-sheet.js | 1 + module/actor.js | 38 +++++++++++++++++++++++--------------- module/rdd-tmr-dialog.js | 5 ++--- templates/actor-sheet.html | 2 +- templates/dialog-tmr.html | 3 +++ 5 files changed, 30 insertions(+), 19 deletions(-) diff --git a/module/actor-sheet.js b/module/actor-sheet.js index 0eb85585..2d35c04c 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -99,6 +99,7 @@ export class RdDActorSheet extends ActorSheet { formData.difficultesLibres = CONFIG.RDD.difficultesLibres; formData.hautreve = { + isDemiReve: this.actor.listeEffets( it => it.label == "Demi-rêve").length > 0, sortsReserve: formData.data.reve.reserve.list, rencontres: duplicate(formData.data.reve.rencontre.list), casesTmr: formData.itemsByType.casetmr, diff --git a/module/actor.js b/module/actor.js index 583ce685..51d719df 100644 --- a/module/actor.js +++ b/module/actor.js @@ -2921,9 +2921,10 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async displayTMR(mode = "normal") { - if ( this.currentTMR != undefined && !this.currentTMR.isClosed) { - ui.notifications.warn("Vous êtes déja dans les Terres Médianes !"); - return; + let demiReve = this.listeEffets( it => it.label == "Demi-rêve"); + if ( mode != 'visu' && demiReve.length > 0 ) { + ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement"); + mode = "visu"; // bascule le mode en visu automatiquement } let isRapide = mode == "rapide"; @@ -3864,9 +3865,8 @@ export class RdDActor extends Actor { const demiReve = StatusEffects.demiReve(); if (status) { await this.addStatusEffect(demiReve) - } - else { - this.deleteStatusEffect(demiReve) + } else { + await this.deleteStatusEffect(demiReve) } } @@ -3884,26 +3884,31 @@ export class RdDActor extends Actor { await this.addStatusEffectById(statusId); } else { - this.deleteStatusEffectById(statusId); + await this.deleteStatusEffectById(statusId); } } /* -------------------------------------------- */ - deleteStatusEffectById(id) { + async deleteStatusEffectById(id) { + const ids = Array.from(this.effects?.values()) .filter(it => it.data.flags.core?.statusId == id) .map(it => it.id); + //console.log("Delete effect IDS1: ", this.effects, ids); if (ids.length > 0) { - this.deleteEmbeddedDocuments('ActiveEffect', ids); + await this.deleteEmbeddedDocuments('ActiveEffect', ids); } } /* -------------------------------------------- */ - deleteStatusEffect(effect) { + async deleteStatusEffect(effect) { const ids = Array.from(this.effects?.values()) .filter(it => StatusEffects.statusId(it.data) == StatusEffects.statusId(effect)) .map(it => it.id); - this.deleteEmbeddedDocuments('ActiveEffect', ids); + //console.log("Delete effect 1: ", this.effects, ids); + if (ids.length > 0) { + await this.deleteEmbeddedDocuments('ActiveEffect', ids); + } } /* -------------------------------------------- */ @@ -3915,10 +3920,13 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async addStatusEffect(statusEffect) { const effet = Misc.data(statusEffect); - this.deleteStatusEffectById(effet.id); - effet.flags = effet.flags ?? { core: {} }; - effet.flags.core.statusId = effet.id; - await this.createEmbeddedDocuments('ActiveEffect', [effet]); + await this.deleteStatusEffectById(effet.id); + //effet.flags = effet.flags ?? { core: {} }; + //effet.flags.core.statusId = effet.id; + let effectArray = await this.createEmbeddedDocuments('ActiveEffect', [effet]); + if (effectArray[0]) { + await effectArray[0].setFlag( 'core', 'statusId', effet.id); + } } /* -------------------------------------------- */ diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index d5646460..34d20e6e 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -273,11 +273,10 @@ export class RdDTMRDialog extends Dialog { close() { this.actor.santeIncDec("fatigue", this.cumulFatigue).then(super.close()); // moving 1 cell costs 1 fatigue this.actor.tmrApp = undefined; // Cleanup reference - this.actor.setStatusDemiReve(false); - if (!this.viewOnly) { + if ( !this.viewOnly ) { + this.actor.setStatusDemiReve(false); this._tellToGM(this.actor.name + " a quitté les terres médianes"); } - ths.isClosed = true; } /* -------------------------------------------- */ diff --git a/templates/actor-sheet.html b/templates/actor-sheet.html index a1cb96fe..6db86c66 100644 --- a/templates/actor-sheet.html +++ b/templates/actor-sheet.html @@ -60,7 +60,7 @@ <span class="dormir-une-heure"><a title="Dormir une heure"><img class="button-img" src="icons/svg/sleep.svg" alt="Dormir une heure"/></a></span> <span class="dormir-chateau-dormant"><a title="Chateau Dormant"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/icons/heures/hd12.svg" alt="Chateau Dormant"/></a></span> {{#if data.attributs.hautrevant.value}} - <span class="monte-tmr"><a title="Montée dans les Terres Médianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres Médianes !"/></a></span> + <span class="monte-tmr"><a title="Montée dans les Terres Médianes !" {{#if hautreve.isDemiReve}}disabled{{/if}}><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-normal.svg" alt="Montée dans les Terres Médianes !"/></a></span> <span class="monte-tmr-rapide"><a title="Montée accélérée dans les Terres Médianes !"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-rapide.svg" alt="Montée accélérée dans les Terres Médianes !"/></a></span> <span class="visu-tmr"><a title="Regarder les Terres Médianes"><img class="button-img" src="systems/foundryvtt-reve-de-dragon/styles/img/ui/icon-tmr-view.svg" alt="Regarder les Terres Médianes"/></a></span> {{/if}} diff --git a/templates/dialog-tmr.html b/templates/dialog-tmr.html index e4033389..34fa509a 100644 --- a/templates/dialog-tmr.html +++ b/templates/dialog-tmr.html @@ -4,6 +4,8 @@ <table id="tmrsheet"> <tr id="tmrrow1"> <td> + {{#if (eq mode "visu")}} + {{else}} <div class="flex-group-center"> <img class="small-button-direction" id='dir-top-left' src='systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-top-left.svg'> <img class="small-button-direction" id='dir-top' src='systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-top.svg'> @@ -14,6 +16,7 @@ <img class="small-button-direction" id='dir-bottom' src='systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottom.svg'> <img class="small-button-direction" id='dir-bottom-right' src='systems/foundryvtt-reve-de-dragon/styles/img/ui/dir-bottom-right.svg'> </div> + {{/if}} <div class="flex-group-center lire-signe-draconique"> <a>Lire un signe draconique</a> </div>