diff --git a/module/actor-sheet.js b/module/actor-sheet.js index ad72328e..f78ff592 100644 --- a/module/actor-sheet.js +++ b/module/actor-sheet.js @@ -315,7 +315,7 @@ export class RdDActorSheet extends ActorSheet { // Boutons spéciaux MJs html.find('.forcer-tmr-aleatoire').click(async event => { - this.actor.cacheTMRetMessage(); + this.actor.reinsertionAleatoire("Action MJ"); }); html.find('.afficher-tmr').click(async event => { this.actor.afficheTMRetMessage(); diff --git a/module/actor.js b/module/actor.js index 73deeb4b..c2b41701 100644 --- a/module/actor.js +++ b/module/actor.js @@ -1472,10 +1472,8 @@ export class RdDActor extends Actor { isTMRCache() { return this.data.data.reve.tmrpos.cache; } - /* -------------------------------------------- */ - async cacheTMRetMessage() { - await this.reinsertionAleatoire("Action MJ"); - await this.cacheTMR(); + + notifyRefreshTMR() { game.socket.emit(SYSTEM_SOCKET_ID, { msg: "msg_tmr_move", data: { actorId: this.data._id, @@ -1487,27 +1485,27 @@ export class RdDActor extends Actor { /* -------------------------------------------- */ async afficheTMRetMessage() { await this.montreTMR(); - game.socket.emit(SYSTEM_SOCKET_ID, { - msg: "msg_tmr_move", data: { - actorId: this.data._id, - tmrPos: this.data.data.reve.tmrpos - } - }); + this.notifyRefreshTMR(); } /* -------------------------------------------- */ - async reinsertionAleatoire(raison) { + async reinsertionAleatoire(raison, accessible = tmr => true) { + const innaccessible = this.buildTMRInnaccessible(); + let tmr = await TMRUtility.getTMRAleatoire(tmr => accessible(tmr) && !innaccessible.includes(tmr.coord)); ChatMessage.create({ content: `${raison} : ré-insertion aléatoire.`, whisper: ChatUtility.getWhisperRecipientsAndGMs(game.user.name) }); - const innaccessible = this.buildTMRInnaccessible(); - let tmr = await TMRUtility.getTMRAleatoire(tmr => !innaccessible.includes(tmr.coord)); - this.updateCoordTMR(tmr.coord); - this.cacheTMR(); + await this.forcerPositionTMRInconnue(tmr); return tmr; } + async forcerPositionTMRInconnue(tmr) { + await this.cacheTMR(); + await this.updateCoordTMR(tmr.coord); + this.notifyRefreshTMR(); + } + /* -------------------------------------------- */ buildTMRInnaccessible() { const tmrInnaccessibles = this.filterItemsData(it => Draconique.isCaseTMR(it) && @@ -3153,9 +3151,9 @@ export class RdDActor extends Actor { } /* -------------------------------------------- */ - refreshTMRView(tmrData) { + refreshTMRView() { if (this.currentTMR) { - this.currentTMR.externalRefresh(tmrData) + this.currentTMR.externalRefresh(); } } diff --git a/module/rdd-tmr-dialog.js b/module/rdd-tmr-dialog.js index 5185b0e2..a6d88a53 100644 --- a/module/rdd-tmr-dialog.js +++ b/module/rdd-tmr-dialog.js @@ -95,12 +95,15 @@ export class RdDTMRDialog extends Dialog { createPixiSprites() { EffetsDraconiques.carteTmr.createSprite(this.pixiTMR); this.updateTokens(); - this.demiReve = this._tokenDemiReve(); - this._updateDemiReve(); + this.forceDemiRevePositionView(); } - + /* -------------------------------------------- */ _createTokens() { + if (!this.isDemiReveCache()){ + this.demiReve = this._tokenDemiReve(); + this._trackToken(this.demiReve); + } let tokens = this._getTokensCasesTmr() .concat(this._getTokensRencontres()) .concat(this._getTokensSortsReserve()); @@ -154,9 +157,9 @@ export class RdDTMRDialog extends Dialog { return EffetsDraconiques.demiReve.token(this.pixiTMR, actorData, () => actorData.data.reve.tmrpos.coord); } - _updateDemiReve() { + forceDemiRevePositionView() { this.notifierResonanceSigneDraconique(this._getActorCoord()); - this._setTokenPosition(this.demiReve); + this._trackToken(this.demiReve); } _getActorCoord() { @@ -336,6 +339,10 @@ export class RdDTMRDialog extends Dialog { /* -------------------------------------------- */ async choisirCasePortee(coord, portee) { + if (this.actor.isTMRCache()) + { + return; + } // Récupère la liste des cases à portées let locList = TMRUtility.getTMRPortee(coord, portee); this.colorierZoneRencontre(locList); @@ -874,49 +881,62 @@ export class RdDTMRDialog extends Dialog { /* -------------------------------------------- */ async _onClickTMRPos(clickOddq) { - if (this.isDemiReveCache()) { - ui.notifications.error(`Vous ne connaissez plus votre position dans les TMR. - Vous devez utiliser les boutons de direction pour vous déplacer. - Une fois que vous aurez retrouvé votre demi-rêve, demandez au gardien de vérifier et rendre les TMR visibles. - `); - return; - } - let currentOddq = TMRUtility.coordTMRToOddq(this._getActorCoord()); - - console.log("deplacerDemiReve >>>>", currentOddq, clickOddq); - let targetCoord = TMRUtility.oddqToCoordTMR(clickOddq); let currentCoord = TMRUtility.oddqToCoordTMR(currentOddq); - // Validation de la case de destination (gestion du cas des rencontres qui peuvent téléporter) let deplacementType = this._calculDeplacement(targetCoord, currentCoord, currentOddq, clickOddq); - // Si le deplacement est valide - if (deplacementType == 'normal' || deplacementType == 'saut') { - await this._deplacerDemiReve(targetCoord, deplacementType); - } else if (deplacementType == 'messager') { // Dans ce cas, ouverture du lancement de sort sur la case visée - await this._messagerDemiReve(targetCoord); - } else { - ui.notifications.error("Vous ne pouvez pas vous déplacer que sur des cases adjacentes à votre position ou valides dans le cas d'une rencontre"); - console.log("STATUS :", this.rencontreState, this.currentRencontre); + if (this.isDemiReveCache()) { + if (this.isTerreAttache(targetCoord) + || (this.isCaseHumide(currentCoord) && this.isCaseHumide(targetCoord)) + || deplacementType == 'changeur') + { + // déplacement possible + await this.actor.montreTMR(); + } + else + { + ui.notifications.error(`Vous ne connaissez plus votre position dans les TMR. + Vous devez utiliser les boutons de direction pour vous déplacer. + Une fois que vous aurez retrouvé votre demi-rêve, demandez au gardien de vérifier et rendre les TMR visibles. + `); + return; + } } + + switch (deplacementType){ + case 'normal': + await this._deplacerDemiReve(targetCoord, deplacementType); + break; + case 'messager': + await this._messagerDemiReve(targetCoord); + break; + case 'changeur': + case 'passeur': + await this._deplacerDemiReve(targetCoord, deplacementType); + break; + default: + ui.notifications.error("Vous ne pouvez pas vous déplacer que sur des cases adjacentes à votre position ou valides dans le cas d'une rencontre"); + console.log("STATUS :", this.rencontreState, this.currentRencontre); + } + this.checkQuitterTMR(); } /* -------------------------------------------- */ _calculDeplacement(targetCoord, currentCoord, fromOddq, toOddq) { + const isInArea = this.rencontreState == 'aucune' ? (this.isTerreAttache(targetCoord) || this.isConnaissanceFleuve(currentCoord, targetCoord) || TMRUtility.distanceOddq(fromOddq, toOddq) <= 1) : this.currentRencontre?.locList.find(coord => coord == targetCoord) ?? false if (isInArea) { switch (this.rencontreState) { case 'aucune': return 'normal'; - case 'messager': return 'messager'; - case 'passeur': case 'changeur': return 'saut'; + case 'passeur': case 'changeur': case 'messager': return this.rencontreState; } } - return 'erreur' + return 'erreur'; } /* -------------------------------------------- */ @@ -932,9 +952,8 @@ export class RdDTMRDialog extends Dialog { } /* -------------------------------------------- */ - externalRefresh(tmrData) { + externalRefresh() { this.createPixiSprites(); - this.forceDemiRevePositionView(); this.updateValuesDisplay(); this.updateTokens(); console.log("TMR REFRESHED !!!"); @@ -946,23 +965,17 @@ export class RdDTMRDialog extends Dialog { this.nettoyerRencontre(); } let tmr = TMRUtility.getTMR(targetCoord); - //console.log("deplacerDemiReve", tmr, this); // Gestion cases spéciales type Trou noir, etc tmr = await this.manageTmrInnaccessible(tmr); await this.actor.updateCoordTMR(tmr.coord); - this._updateDemiReve(); + this.forceDemiRevePositionView(); if (ReglesOptionelles.isUsing("appliquer-fatigue")) { this.cumulFatigue += this.fatigueParCase; } this.updateValuesDisplay(); - game.socket.emit(SYSTEM_SOCKET_ID, { - msg: "msg_tmr_move", data: { - actorId: this.actor.data._id, - tmrPos: Misc.data(this.actor).data.reve.tmrpos - } - }); + this.actor.notifyRefreshTMR(); if (deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/... await this.manageRencontre(tmr, () => this.postRencontre(tmr)); @@ -995,14 +1008,9 @@ export class RdDTMRDialog extends Dialog { } /* -------------------------------------------- */ - async forceDemiRevePositionView() { - this._updateDemiReve(); - } - - /* -------------------------------------------- */ - async forceDemiRevePosition(coord) { + async positionnerDemiReve(coord) { await this.actor.updateCoordTMR(coord); - this._updateDemiReve(); + this.forceDemiRevePositionView(); let tmr = TMRUtility.getTMR(coord); await this.postRencontre(tmr); return tmr; @@ -1024,15 +1032,7 @@ export class RdDTMRDialog extends Dialog { _getCaseRectangleCoord(coord) { return this.pixiTMR.getCaseRectangle(TMRUtility.coordTMRToOddq(coord)); } - - /* -------------------------------------------- */ - _setTokenPosition(token) { - if (this.isDemiReveCache() && this.demiReve === token ) { - return; - } - this.pixiTMR.setPosition(token.sprite, TMRUtility.coordTMRToOddq(token.coordTMR())); - } - + /* -------------------------------------------- */ _removeTokens(filter) { const tokensToRemove = this.allTokens.filter(filter); @@ -1040,10 +1040,13 @@ export class RdDTMRDialog extends Dialog { this.pixiApp.stage.removeChild(token.sprite); } } - + /* -------------------------------------------- */ _trackToken(token) { + if (this.demiReve === token && this.isDemiReveCache()) { + return; + } + this.pixiTMR.setPosition(token.sprite, TMRUtility.coordTMRToOddq(token.coordTMR())); this.allTokens.push(token); - this._setTokenPosition(token); } } diff --git a/module/rdd-utility.js b/module/rdd-utility.js index 50865039..7e5cd962 100644 --- a/module/rdd-utility.js +++ b/module/rdd-utility.js @@ -668,7 +668,7 @@ export class RdDUtility { case "msg_tmr_move": let actor = game.actors.get(sockmsg.data.actorId); if (actor.isOwner || game.user.isGM) { - actor.refreshTMRView(sockmsg.data.tmrPos); + actor.refreshTMRView(); } break; } @@ -683,7 +683,7 @@ export class RdDUtility { let coord = event.currentTarget.attributes['data-tmr-coord'].value; let actorId = event.currentTarget.attributes['data-actor-id'].value; let actor = game.actors.get(actorId); - actor.tmrApp.forceDemiRevePosition(coord); + actor.tmrApp.positionnerDemiReve(coord); }); // Gestion spécifique des sorts en réserve multiples (ie têtes) html.on("click", '#sort-reserve', event => { diff --git a/module/tmr-rencontres.js b/module/tmr-rencontres.js index af2621ed..7f362978 100644 --- a/module/tmr-rencontres.js +++ b/module/tmr-rencontres.js @@ -8,9 +8,14 @@ import { TMRType } from "./tmr-utility.js"; const typeRencontres = { messager: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} vous propose d'emmener le message de votre un sort à ${rencData.rencontre.force} cases ${rencData.tmr.label}.`, - msgEchec: (rencData) => `Le ${rencData.rencontre.name} est pressé et continue son chemin d'une traite sans vous accorder un regard.`, - postSucces: (tmrDialog, rencData) => { + msgSucces: async (rencData) => { + if (rencData.actor.isTMRCache()){ + return `Le ${rencData.rencontre.name} vous propose d'emmener le message de votre un sort, mais vous ne savez pas où vous êtes.`; + } + return `Le ${rencData.rencontre.name} vous propose d'emmener le message de votre un sort à ${rencData.rencontre.force} cases ${rencData.tmr.label}.`; + }, + msgEchec: async (rencData)=> `Le ${rencData.rencontre.name} est pressé et continue son chemin d'une traite sans vous accorder un regard.`, + postSucces: async (tmrDialog, rencData) => { tmrDialog.setStateRencontre(rencData.rencontre.type); tmrDialog.choisirCasePortee(rencData.tmr.coord, rencData.rencontre.force); }, @@ -28,9 +33,14 @@ const typeRencontres = { }, passeur: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} vous propose de vous transporter à ${rencData.rencontre.force} cases des ${rencData.tmr.label}.`, - msgEchec: (rencData) => `Le prix que demande le ${rencData.rencontre.name} est trop élevé, vous êtes réduit à poursuivre votre chemin par vos propres moyens.`, - postSucces: (tmrDialog, rencData) => { + msgSucces: async (rencData) => { + if (rencData.actor.isTMRCache()){ + return `Le ${rencData.rencontre.name} vous propose de vous transporter, mais vous ne savez pas où vous êtes.`; + } + return `Le ${rencData.rencontre.name} vous propose de vous transporter à ${rencData.rencontre.force} cases des ${rencData.tmr.label}.`; + }, + msgEchec: async (rencData)=> `Le prix que demande le ${rencData.rencontre.name} est trop élevé, vous êtes réduit à poursuivre votre chemin par vos propres moyens.`, + postSucces: async (tmrDialog, rencData) => { tmrDialog.setStateRencontre(rencData.rencontre.type); tmrDialog.choisirCasePortee(rencData.tmr.coord, rencData.rencontre.force); }, @@ -49,9 +59,9 @@ const typeRencontres = { }, fleur: { - msgSucces: (rencData) => `Vous cueillez la ${rencData.rencontre.name}, son parfum vous apporte ${rencData.rencontre.force} points de Rêve.`, - msgEchec: (rencData) => `La ${rencData.rencontre.name} se fâne et disparaît entre vos doigts.`, - postSucces: (tmrDialog, rencData) => tmrDialog.actor.reveActuelIncDec(rencData.rencontre.force), + msgSucces: async (rencData) => `Vous cueillez la ${rencData.rencontre.name}, son parfum vous apporte ${rencData.rencontre.force} points de Rêve.`, + msgEchec: async (rencData)=> `La ${rencData.rencontre.name} se fâne et disparaît entre vos doigts.`, + postSucces: async (tmrDialog, rencData) => tmrDialog.actor.reveActuelIncDec(rencData.rencontre.force), poesieSucces: { reference: "L'Ennemi, Charles Baudelaire", extrait: `Et qui sait si les fleurs nouvelles que je rêve @@ -66,9 +76,9 @@ const typeRencontres = { }, mangeur: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} claque de sa machoire dans le vide avant de fuir.`, - msgEchec: (rencData) => `Le ${rencData.rencontre.name} croque votre Rêve ! Il emporte ${rencData.rencontre.force} de vos points de rêve actuels`, - postEchec: (tmrDialog, rencData) => tmrDialog.actor.reveActuelIncDec(-rencData.rencontre.force), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} claque de sa machoire dans le vide avant de fuir.`, + msgEchec: async (rencData)=> `Le ${rencData.rencontre.name} croque votre Rêve ! Il emporte ${rencData.rencontre.force} de vos points de rêve actuels`, + postEchec: async (tmrDialog, rencData) => tmrDialog.actor.reveActuelIncDec(-rencData.rencontre.force), poesieSucces: { reference: "Conseil, Victor Hugo", extrait: `Rois ! la bure est souvent jalouse du velours. @@ -85,16 +95,17 @@ const typeRencontres = { }, changeur: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} vaincu accepte de vous déplacer sur une autre ${TMRType[rencData.tmr.type].name} de votre choix en échange de sa liberté.`, - msgEchec: (rencData) => { - rencData.newTMR = TMRUtility.getTMRAleatoire(it => it.type = rencData.tmr.type); - return `Le ${rencData.rencontre.name} vous embobine avec des promesses, et vous transporte en ${rencData.newTMR.label} sans attendre votre avis.`; - }, - postSucces: (tmrDialog, rencData) => { + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} vaincu accepte de vous déplacer sur une autre ${TMRType[rencData.tmr.type].name} de votre choix en échange de sa liberté.`, + msgEchec: async (rencData) => `Le ${rencData.rencontre.name} vous embobine avec des promesses, et vous transporte sur une autre ${TMRType[rencData.tmr.type].name} sans attendre votre avis.`, + postSucces: async (tmrDialog, rencData) => { tmrDialog.setStateRencontre(rencData.rencontre.type); tmrDialog.choisirCaseType(rencData.tmr.type); }, - postEchec: (tmrDialog, rencData) => tmrDialog.forceDemiRevePosition(rencData.newTMR.coord), + postEchec: async (tmrDialog, rencData) => { + const newTMR = await TMRUtility.getTMRAleatoire(it => it.type == rencData.tmr.type && it.coord != rencData.tmr.coord); + await tmrDialog.actor.forcerPositionTMRInconnue(newTMR); + tmrDialog.positionnerDemiReve(newTMR.coord); + }, poesieSucces: { reference: "Caligula - IIIème chant, Gérard de Nerval", extrait: `Allez, que le caprice emporte @@ -111,9 +122,9 @@ const typeRencontres = { }, briseur: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} tente vainement de vous déconcentrer, avant de fuir sans demander son reste.`, - msgEchec: (rencData) => `Le ${rencData.rencontre.name} vous déconcentre au point de briser votre demi-rêve.`, - postEchec: (tmrDialog, rencData) => tmrDialog.close(), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} tente vainement de vous déconcentrer, avant de fuir sans demander son reste.`, + msgEchec: async (rencData)=> `Le ${rencData.rencontre.name} vous déconcentre au point de briser votre demi-rêve.`, + postEchec: async (tmrDialog, rencData) => tmrDialog.close(), poesieSucces: { reference: "Rêve de Dragon, Denis Gerfaud", extrait: `La légende affirme que ce sont les Gnomes qui furent @@ -134,8 +145,8 @@ const typeRencontres = { }, reflet: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} s'estompe dans l'oubli.`, - msgEchec: (rencData) => `Vous êtes submergé par un ${rencData.rencontre.name}, les souvenirs vous retiennent tant qu'il ne sera pas vaincu!`, + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} s'estompe dans l'oubli.`, + msgEchec: async (rencData)=> `Vous êtes submergé par un ${rencData.rencontre.name}, les souvenirs vous retiennent tant qu'il ne sera pas vaincu!`, poesieSucces: { reference: "Une charogne, Charles Baudelaire", extrait: `Les formes s'effaçaient et n'étaient plus qu'un rêve, @@ -152,9 +163,9 @@ const typeRencontres = { }, passeurfou: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} tente vainement de découvrir où vous avez caché vos réserves. Vous le chassez, et en déroute il part harceler un autre voyageur du rêve.`, - msgEchec: (rencData) => TMRRencontres.msgEchecPasseurFou(rencData), - postEchec: (tmrDialog, rencData) => TMRRencontres.postEchecPasseurFou(tmrDialog, rencData), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} tente vainement de découvrir où vous avez caché vos réserves. Vous le chassez, et en déroute il part harceler un autre voyageur du rêve.`, + msgEchec: async (rencData)=> TMRRencontres.msgEchecPasseurFou(rencData), + postEchec: async (tmrDialog, rencData) => TMRRencontres.postEchecPasseurFou(tmrDialog, rencData), poesieSucces: { reference: "Un Fou et un Sage, Jean de La Fontaine", extrait: `Certain Fou poursuivait à coups de pierre un Sage. @@ -174,9 +185,9 @@ const typeRencontres = { }, tbblanc: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} souleve une poussière blanche, vous tenez bon, et il tourbillonne en s'éloignant.`, - msgEchec: (rencData) => `Le souffle du ${rencData.rencontre.name} vous déstabilise et vous emmène dans un nuage de poussière.`, - postEchec: (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillon(tmrDialog, rencData, 1), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} souleve une poussière blanche, vous tenez bon, et il tourbillonne en s'éloignant.`, + msgEchec: async (rencData)=> `Le souffle du ${rencData.rencontre.name} vous déstabilise et vous emmène dans un nuage de poussière.`, + postEchec: async (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillon(tmrDialog, rencData, 1), poesieSucces: { reference: "Rêve de Dragon, Denis Gerfaud", extrait: `Le Premier Âge fut appelé l'Âge des Dragons. Ce fut le commencement @@ -191,9 +202,9 @@ const typeRencontres = { }, tbnoir: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} orageux vous enveloppe de fureur et d'éclairs, vous tenez bon face à la tempête qui s'éloigne sans vous éloigner de votre chemin.`, - msgEchec: (rencData) => `Le ${rencData.rencontre.name} furieux vous secoue tel un fichu de paille malmené par les vents, et vous emporte dans la tourmente.`, - postEchec: (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillon(tmrDialog, rencData, 2), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} orageux vous enveloppe de fureur et d'éclairs, vous tenez bon face à la tempête qui s'éloigne sans vous éloigner de votre chemin.`, + msgEchec: async (rencData)=> `Le ${rencData.rencontre.name} furieux vous secoue tel un fichu de paille malmené par les vents, et vous emporte dans la tourmente.`, + postEchec: async (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillon(tmrDialog, rencData, 2), poesieSucces: { reference: "Rêve de Dragon, Denis Gerfaud", extrait: `Car le Second Âge fut bel et bien celui des Magiciens. Durant cette période, les @@ -207,9 +218,9 @@ const typeRencontres = { }, tbrouge: { - msgSucces: (rencData) => `Le ${rencData.rencontre.name} s'abat avec violence mais vous êtes plus rapide et parvenez à lui échapper.`, - msgEchec: (rencData) => `Le ${rencData.rencontre.name} vous frappe de milliers de morsure et vous malmène à travers les terres médianes.`, - postEchec: (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillonRouge(tmrDialog, rencData), + msgSucces: async (rencData) => `Le ${rencData.rencontre.name} s'abat avec violence mais vous êtes plus rapide et parvenez à lui échapper.`, + msgEchec: async (rencData)=> `Le ${rencData.rencontre.name} vous frappe de milliers de morsure et vous malmène à travers les terres médianes.`, + postEchec: async (tmrDialog, rencData) => TMRRencontres.onPostEchecTourbillonRouge(tmrDialog, rencData), poesieSucces: { reference: "Qu'est-ce de votre vie ? une bouteille molle, Jean-Baptiste Chassignet", extrait: `Qu'est-ce de votre vie ? un tourbillon rouant @@ -228,10 +239,10 @@ const typeRencontres = { }, rdd: { - msgSucces: (rencData) => `A tout seigneur, tout honneur, vous faites face à un ${rencData.rencontre.name}. Vous le maîtrisez et récupérez ses rêves. Vous gagnez ses ${rencData.rencontre.force} points de rêve`, - msgEchec: (rencData) => `A tout seigneur, tout honneur, vous faites face à un ${rencData.rencontre.name}. La rencontre tourne au cauchemar, dans la lutte épique, vous subissez ${rencData.rolled.isETotal ? 'deux queues' : 'une queue'} de dragon!`, - postSucces: (tmrDialog, rencData) => TMRRencontres.onPostSuccessReveDeDragon(tmrDialog, rencData), - postEchec: (tmrDialog, rencData) => TMRRencontres.onPostEchecReveDeDragon(tmrDialog, rencData), + msgSucces: async (rencData) => `A tout seigneur, tout honneur, vous faites face à un ${rencData.rencontre.name}. Vous le maîtrisez et récupérez ses rêves. Vous gagnez ses ${rencData.rencontre.force} points de rêve`, + msgEchec: async (rencData)=> `A tout seigneur, tout honneur, vous faites face à un ${rencData.rencontre.name}. La rencontre tourne au cauchemar, dans la lutte épique, vous subissez ${rencData.rolled.isETotal ? 'deux queues' : 'une queue'} de dragon!`, + postSucces: async (tmrDialog, rencData) => TMRRencontres.onPostSuccessReveDeDragon(tmrDialog, rencData), + postEchec: async (tmrDialog, rencData) => TMRRencontres.onPostEchecReveDeDragon(tmrDialog, rencData), poesieSucces: { reference: "Rêve de Dragon, Denis Gerfaud", extrait: `Le monde est Rêve de Dragons, mais nous ne savons @@ -404,7 +415,7 @@ export class TMRRencontres { static async gererRencontre(tmrDialog, rencData) { let gestion = TMRRencontres.getGestionRencontre(rencData.rencontre.type); if (rencData.rolled.isSuccess) { - rencData.message = gestion.msgSucces(rencData); + rencData.message = await gestion.msgSucces(rencData); if (rencData.nbRounds > 1) { rencData.message += ` Au total, vous avez passé ${rencData.nbRounds} rounds à vous battre!`; } @@ -412,7 +423,7 @@ export class TMRRencontres { return gestion.postSucces; } - rencData.message = gestion.msgEchec(rencData); + rencData.message = await gestion.msgEchec(rencData); if (rencData.nbRounds > 1) { rencData.message += ` Vous avez passé ${rencData.nbRounds} rounds à lutter!`; } @@ -444,7 +455,7 @@ export class TMRRencontres { if (tmrData.sortReserve) { await tmrDialog.processSortReserve(tmrData.sortReserve); } - await tmrDialog.forceDemiRevePosition(tmrData.newTMR.coord); + await tmrDialog.positionnerDemiReve(tmrData.newTMR.coord); if (tmrData.sortReserve) { tmrDialog.close(); } @@ -469,7 +480,7 @@ export class TMRRencontres { for (let i = 0; i < cases; i++) { coord = await TMRUtility.deplaceTMRAleatoire(actor, coord).coord; } - await tmrDialog.forceDemiRevePosition(coord) + await tmrDialog.positionnerDemiReve(coord) } /* -------------------------------------------- */ diff --git a/module/tmr/draconique.js b/module/tmr/draconique.js index 9ca5848e..caeeecd9 100644 --- a/module/tmr/draconique.js +++ b/module/tmr/draconique.js @@ -94,9 +94,8 @@ export class Draconique { token[type ?? this.code()] = linkData; pixiTMR.addTooltip(token.sprite, this.tooltip(linkData)); return token; - - return sprite; } + /** * factory d'élément graphique PIXI correpsondant à l'objet draconique * @param {*} pixiTMR instance de PixiTMR qui gère les tooltips, les méthodes de création de sprite standard, les clicks.