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 @@
{{#if data.attributs.hautrevant.value}}
-
+
{{/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 @@
+ {{#if (eq mode "visu")}}
+ {{else}}
|