Amélioration des fermetures de TMR
- un seul message lors de la fermeture au MJ et joueur - le déclenchement de sort en réserve
This commit is contained in:
parent
776d4ce9ec
commit
25db7e0712
@ -1048,20 +1048,10 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async deleteRencontreTMRAtPosition() {
|
|
||||||
const rencontreIds = this.itemTypes[ITEM_TYPES.rencontre].filter(this.filterRencontreTMRDemiReve()).map(it => it.id)
|
|
||||||
if (rencontreIds.length > 0) {
|
|
||||||
await this.deleteEmbeddedDocuments('Item', rencontreIds)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
getRencontreTMREnAttente() {
|
getRencontreTMREnAttente() {
|
||||||
return this.itemTypes[ITEM_TYPES.rencontre].find(this.filterRencontreTMRDemiReve())
|
|
||||||
}
|
|
||||||
|
|
||||||
filterRencontreTMRDemiReve() {
|
|
||||||
const position = this.getDemiReve()
|
const position = this.getDemiReve()
|
||||||
return it => it.system.coord == position
|
return this.itemTypes[ITEM_TYPES.rencontre].find(it => it.system.coord == position)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
|
@ -39,6 +39,11 @@ export class RdDBaseActorSang extends RdDBaseActorReve {
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
isCumulFatigueCauseSommeil(cumulFatigue){
|
||||||
|
return ReglesOptionnelles.isUsing("appliquer-fatigue")
|
||||||
|
? (this.getFatigueRestante() <= cumulFatigue)
|
||||||
|
: (this.getEnduranceActuelle() <= cumulFatigue)
|
||||||
|
}
|
||||||
getFatigueRestante() {return this.getFatigueMax() - this.getFatigueActuelle() }
|
getFatigueRestante() {return this.getFatigueMax() - this.getFatigueActuelle() }
|
||||||
getFatigueMin() { return this.system.sante.endurance.max - this.system.sante.endurance.value }
|
getFatigueMin() { return this.system.sante.endurance.max - this.system.sante.endurance.value }
|
||||||
|
|
||||||
|
@ -15,7 +15,6 @@ import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
|
|||||||
import { RdDDice } from "./rdd-dice.js";
|
import { RdDDice } from "./rdd-dice.js";
|
||||||
import { STATUSES } from "./settings/status-effects.js";
|
import { STATUSES } from "./settings/status-effects.js";
|
||||||
import { RdDRencontre } from "./item/rencontre.js";
|
import { RdDRencontre } from "./item/rencontre.js";
|
||||||
import { RdDTimestamp } from "./time/rdd-timestamp.js";
|
|
||||||
import { ITEM_TYPES } from "./constants.js";
|
import { ITEM_TYPES } from "./constants.js";
|
||||||
import { Misc } from "./misc.js";
|
import { Misc } from "./misc.js";
|
||||||
|
|
||||||
@ -83,7 +82,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
this.subdialog = undefined
|
this.subdialog = undefined
|
||||||
this.displaySize = undefined
|
this.displaySize = undefined
|
||||||
if (!this.viewOnly && !game.user.isGM) {
|
if (!this.viewOnly && !game.user.isGM) {
|
||||||
this._tellToGM(this.actor.name + " monte dans les terres médianes (" + tmrData.mode + ")");
|
this.$tellToGM(this.actor.name + " monte dans les terres médianes (" + tmrData.mode + ")");
|
||||||
}
|
}
|
||||||
this.callbacksOnAnimate = [];
|
this.callbacksOnAnimate = [];
|
||||||
const displaySize = TMR_DISPLAY_SIZE.clamp(game.settings.get(SYSTEM_RDD, TMR_DISPLAY_SIZE.code) ?? TMR_DISPLAY_SIZE.def);
|
const displaySize = TMR_DISPLAY_SIZE.clamp(game.settings.get(SYSTEM_RDD, TMR_DISPLAY_SIZE.code) ?? TMR_DISPLAY_SIZE.def);
|
||||||
@ -139,7 +138,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
this.cumulFatigue += this.fatigueParCase;
|
this.cumulFatigue += this.fatigueParCase;
|
||||||
|
|
||||||
// Le reste...
|
// Le reste...
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
}
|
}
|
||||||
|
|
||||||
lancerUnSort() {
|
lancerUnSort() {
|
||||||
@ -190,7 +189,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
forceTMRContinueAction() {
|
forceTMRContinueAction() {
|
||||||
ui.notifications.warn('Vous devez finir votre action avant de continuer dans les TMR');
|
ui.notifications.warn('Vous devez finir votre action avant de continuer dans les TMR');
|
||||||
this.bringSubDialogToTop();
|
this.bringSubDialogToTop();
|
||||||
return;
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
setTMRPendingAction(dialog) {
|
setTMRPendingAction(dialog) {
|
||||||
@ -297,7 +296,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
const coordOrig = this._getCoordActor();
|
const coordOrig = this._getCoordActor();
|
||||||
const coordTarget = TMRUtility.deplacement(coordOrig, move);
|
const coordTarget = TMRUtility.deplacement(coordOrig, move);
|
||||||
await this._deplacerDemiReve(coordTarget, 'normal');
|
await this._deplacerDemiReve(coordTarget, 'normal');
|
||||||
this.checkQuitterTMR();
|
await this.$checkQuitterTMR();
|
||||||
}
|
}
|
||||||
|
|
||||||
calculCoutMonteeTMR() {
|
calculCoutMonteeTMR() {
|
||||||
@ -305,7 +304,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async updateValuesDisplay() {
|
async $updateValuesDisplay() {
|
||||||
if (this.viewOnly || !this.rendered) {
|
if (this.viewOnly || !this.rendered) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@ -336,22 +335,30 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async close() {
|
async close() {
|
||||||
|
await this.$forceClose(this.actor.name + " a quitté les terres médianes")
|
||||||
|
}
|
||||||
|
|
||||||
|
async $forceClose(message) {
|
||||||
if (this.subdialog) {
|
if (this.subdialog) {
|
||||||
return this.forceTMRContinueAction()
|
this.forceTMRContinueAction()
|
||||||
|
return false
|
||||||
}
|
}
|
||||||
this.descenteTMR = true;
|
this.descenteTMR = true;
|
||||||
if (this.actor.tmrApp) {
|
if (this.actor.tmrApp) {
|
||||||
this.actor.tmrApp = undefined; // Cleanup reference
|
this.actor.tmrApp = undefined; // Cleanup reference
|
||||||
if (!this.viewOnly) {
|
if (!this.viewOnly) {
|
||||||
await this.actor.setEffect(STATUSES.StatusDemiReve, false)
|
await this.actor.setEffect(STATUSES.StatusDemiReve, false);
|
||||||
this._tellToGM(this.actor.name + " a quitté les terres médianes");
|
this.$tellToUserAndGM(message)
|
||||||
}
|
}
|
||||||
await this.actor.santeIncDec((ReglesOptionnelles.isUsing("appliquer-fatigue") ? "fatigue" : "endurance"),
|
const appliquerFatigue = ReglesOptionnelles.isUsing("appliquer-fatigue");
|
||||||
this.cumulFatigue)
|
await this.actor.santeIncDec(
|
||||||
|
appliquerFatigue ? "fatigue" : "endurance",
|
||||||
|
(appliquerFatigue ? 1 : -1) * this.cumulFatigue);
|
||||||
}
|
}
|
||||||
await super.close();
|
this.pixiTMR.close();
|
||||||
this.pixiTMR.close()
|
|
||||||
this.pixiTMR = undefined
|
this.pixiTMR = undefined
|
||||||
|
await super.close();
|
||||||
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -363,48 +370,53 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
switch (action) {
|
switch (action) {
|
||||||
case 'derober':
|
case 'derober':
|
||||||
await this.derober();
|
await this.$derober()
|
||||||
this.restoreTMRAfterAction();
|
this.restoreTMRAfterAction()
|
||||||
return;
|
return
|
||||||
case 'refouler':
|
case 'refouler':
|
||||||
await this.refouler();
|
await this.$refouler()
|
||||||
break;
|
break
|
||||||
case 'maitriser':
|
case 'maitriser':
|
||||||
await this.maitriserRencontre();
|
await this.$maitriserRencontre()
|
||||||
break;
|
break
|
||||||
case 'ignorer':
|
case 'ignorer':
|
||||||
await this.ignorerRencontre();
|
await this.$ignorerRencontre()
|
||||||
break;
|
break
|
||||||
}
|
}
|
||||||
await this.postRencontre(tmr);
|
await this.postRencontre(tmr);
|
||||||
this.restoreTMRAfterAction();
|
this.restoreTMRAfterAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
async derober() {
|
async $derober() {
|
||||||
|
if (this.currentRencontre) {
|
||||||
console.log("-> derober", this.currentRencontre);
|
console.log("-> derober", this.currentRencontre);
|
||||||
await this.actor.addTMRRencontre(this.currentRencontre);
|
await this.actor.addTMRRencontre(this.currentRencontre);
|
||||||
this._tellToGM(this.actor.name + " s'est dérobé et quitte les TMR.");
|
this.$forceClose(`${this.actor.name} s'est dérobé face à la rencontre ${this.currentRencontre.name}, et quitte les TMR.`)
|
||||||
this.close();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async refouler() {
|
async $refouler() {
|
||||||
|
if (this.currentRencontre) {
|
||||||
console.log("-> refouler", this.currentRencontre);
|
console.log("-> refouler", this.currentRencontre);
|
||||||
await this.actor.ajouterRefoulement(this.currentRencontre.system.refoulement, `${this.currentRencontre.system.genre == 'f' ? 'une' : 'un'} ${this.currentRencontre.name}`);
|
await this.actor.ajouterRefoulement(this.currentRencontre.system.refoulement, `${this.currentRencontre.system.genre == 'f' ? 'une' : 'un'} ${this.currentRencontre.name}`);
|
||||||
await this.actor.deleteRencontreTMRAtPosition()
|
await this.$deleteRencontreTMRAtPosition()
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
this.nettoyerRencontre();
|
this.$nettoyerRencontre();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async ignorerRencontre() {
|
async $ignorerRencontre() {
|
||||||
|
if (this.currentRencontre) {
|
||||||
console.log("-> ignorer", this.currentRencontre);
|
console.log("-> ignorer", this.currentRencontre);
|
||||||
this._tellToGM(this.actor.name + " a ignoré: " + this.currentRencontre.name);
|
this.$tellToGM(this.actor.name + " a ignoré: " + this.currentRencontre.name);
|
||||||
await this.actor.deleteRencontreTMRAtPosition()
|
await this.$deleteRencontreTMRAtPosition()
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
this.nettoyerRencontre();
|
this.$nettoyerRencontre();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -421,41 +433,29 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
checkQuitterTMR() {
|
async $checkQuitterTMR() {
|
||||||
if (this.actor.isDead()) {
|
const reason = this.actor.isDead()
|
||||||
this._tellToGM("Vous êtes mort : vous quittez les Terres médianes !");
|
? "est mort"
|
||||||
this.close();
|
: this.actor.isCumulFatigueCauseSommeil(this.cumulFatigue)
|
||||||
return true;
|
? "s'écroule de fatigue"
|
||||||
|
: (this.actor.getReveActuel() == 0)
|
||||||
|
? "tombe à 0 Points de Rêve"
|
||||||
|
: undefined
|
||||||
|
if (reason) {
|
||||||
|
if (!this.actor.isDead()) {
|
||||||
|
await this.$refouler()
|
||||||
}
|
}
|
||||||
|
this.$forceClose(`${this.actor.name} ${reason} et quitte les Terres médianes !`)
|
||||||
if (ReglesOptionnelles.isUsing("appliquer-fatigue")
|
return true
|
||||||
? (this.actor.getFatigueRestante() <= this.cumulFatigue)
|
|
||||||
: (this.actor.getEnduranceActuelle() <= this.cumulFatigue)
|
|
||||||
) {
|
|
||||||
this._tellToGM("Vous vous écroulez de fatigue : vous quittez les Terres médianes !");
|
|
||||||
this.quitterLesTMRInconscient();
|
|
||||||
return true;
|
|
||||||
}
|
}
|
||||||
|
return false
|
||||||
if (this.actor.getReveActuel() == 0) {
|
|
||||||
this._tellToGM("Vos Points de Rêve sont à 0 : vous quittez les Terres médianes !");
|
|
||||||
this.quitterLesTMRInconscient();
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async quitterLesTMRInconscient() {
|
async $maitriserRencontre() {
|
||||||
await this.refouler();
|
|
||||||
this.close();
|
|
||||||
}
|
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
|
||||||
async maitriserRencontre() {
|
|
||||||
console.log("-> maitriser", this.currentRencontre);
|
console.log("-> maitriser", this.currentRencontre);
|
||||||
|
|
||||||
await this.actor.deleteRencontreTMRAtPosition()
|
await this.$deleteRencontreTMRAtPosition();
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
|
|
||||||
let rencontreData = {
|
let rencontreData = {
|
||||||
@ -470,11 +470,21 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
tmr: TMRUtility.getTMR(this._getCoordActor())
|
tmr: TMRUtility.getTMR(this._getCoordActor())
|
||||||
}
|
}
|
||||||
|
|
||||||
await this._tentativeMaitrise(rencontreData);
|
await this.$tentativeMaitrise(rencontreData);
|
||||||
|
}
|
||||||
|
|
||||||
|
async $deleteRencontreTMRAtPosition() {
|
||||||
|
const position = this.actor.getDemiReve()
|
||||||
|
const rencontreIds = this.actor.itemTypes[ITEM_TYPES.rencontre]
|
||||||
|
.filter(it => it.system.coord == position)
|
||||||
|
.map(it => it.id)
|
||||||
|
if (rencontreIds.length > 0) {
|
||||||
|
await this.actor.deleteEmbeddedDocuments('Item', rencontreIds)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async _tentativeMaitrise(rencData) {
|
async $tentativeMaitrise(rencData) {
|
||||||
this.rencontreState = 'normal';
|
this.rencontreState = 'normal';
|
||||||
|
|
||||||
rencData.reve = this.actor.getReveActuel();
|
rencData.reve = this.actor.getReveActuel();
|
||||||
@ -483,7 +493,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
RollDataAjustements.calcul(rencData, this.actor);
|
RollDataAjustements.calcul(rencData, this.actor);
|
||||||
|
|
||||||
rencData.rolled = rencData.presentCite
|
rencData.rolled = rencData.presentCite
|
||||||
? this._rollPresentCite(rencData)
|
? this.$rollPresentCite(rencData)
|
||||||
: await RdDResolutionTable.roll(rencData.reve, RollDataAjustements.sum(rencData.ajustements));
|
: await RdDResolutionTable.roll(rencData.reve, RollDataAjustements.sum(rencData.ajustements));
|
||||||
|
|
||||||
const result = rencData.rolled.isSuccess
|
const result = rencData.rolled.isSuccess
|
||||||
@ -493,38 +503,41 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
await RdDRencontre.appliquer(result.effets, this, rencData);
|
await RdDRencontre.appliquer(result.effets, this, rencData);
|
||||||
|
|
||||||
rencData.poesie = { extrait: result.poesie, reference: result.reference };
|
rencData.poesie = { extrait: result.poesie, reference: result.reference };
|
||||||
rencData.message = this.formatMessageRencontre(rencData, result.message);
|
rencData.message = this.$formatMessageRencontre(rencData, result.message);
|
||||||
|
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
whisper: ChatUtility.getOwners(this.actor),
|
whisper: ChatUtility.getOwners(this.actor),
|
||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-rencontre-tmr.hbs`, rencData)
|
||||||
});
|
});
|
||||||
|
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
if (this.checkQuitterTMR()) {
|
if (await this.$checkQuitterTMR()) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (this.rencontreState == 'persistant') {
|
if (this.rencontreState == 'persistant') {
|
||||||
this._nouvelleTentativeMaitrise(rencData);
|
this.$nouvelleTentativeMaitrise(rencData);
|
||||||
}
|
}
|
||||||
else if (!this.isRencontreDeplacement()) {
|
else if (!this.isRencontreDeplacement()) {
|
||||||
this.nettoyerRencontre();
|
this.$nettoyerRencontre();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
_nouvelleTentativeMaitrise(rencData) {
|
$nouvelleTentativeMaitrise(rencData) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
// TODO: remplacer par une boucle while(this.currentRencontre) ?
|
/**
|
||||||
|
* TODO: remplacer par une boucle while(this.currentRencontre) ?
|
||||||
|
* ajouter un moyen d'attendre la saisie de l'utilisateur (jet obligatoire)?
|
||||||
|
*/
|
||||||
rencData.nbRounds++;
|
rencData.nbRounds++;
|
||||||
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
||||||
this.cumulFatigue += this.fatigueParCase;
|
this.cumulFatigue += this.fatigueParCase;
|
||||||
}
|
}
|
||||||
this._tentativeMaitrise(rencData);
|
this.$tentativeMaitrise(rencData);
|
||||||
this._deleteTmrMessages(rencData.actor, rencData.nbRounds);
|
this.$deleteTmrMessages(rencData.actor, rencData.nbRounds);
|
||||||
}, 2000);
|
}, 2000);
|
||||||
}
|
}
|
||||||
|
|
||||||
formatMessageRencontre(rencData, template) {
|
$formatMessageRencontre(rencData, template) {
|
||||||
let messageDuree = ''
|
let messageDuree = ''
|
||||||
if (rencData.nbRounds > 1) {
|
if (rencData.nbRounds > 1) {
|
||||||
if (rencData.rolled.isSuccess) {
|
if (rencData.rolled.isSuccess) {
|
||||||
@ -543,7 +556,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_rollPresentCite(rencData) {
|
$rollPresentCite(rencData) {
|
||||||
let rolled = RdDResolutionTable.computeChances(rencData.reve, 0);
|
let rolled = RdDResolutionTable.computeChances(rencData.reve, 0);
|
||||||
foundry.utils.mergeObject(rolled, { caracValue: rencData.reve, finalLevel: 0, roll: rolled.score });
|
foundry.utils.mergeObject(rolled, { caracValue: rencData.reve, finalLevel: 0, roll: rolled.score });
|
||||||
RdDResolutionTable.succesRequis(rolled);
|
RdDResolutionTable.succesRequis(rolled);
|
||||||
@ -551,7 +564,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_deleteTmrMessages(actor, nbRounds = -1) {
|
$deleteTmrMessages(actor, nbRounds = -1) {
|
||||||
setTimeout(() => {
|
setTimeout(() => {
|
||||||
if (nbRounds < 0) {
|
if (nbRounds < 0) {
|
||||||
ChatUtility.removeChatMessageContaining(`<h4 data-categorie="tmr" data-actor-id="${actor._id}"`);
|
ChatUtility.removeChatMessageContaining(`<h4 data-categorie="tmr" data-actor-id="${actor._id}"`);
|
||||||
@ -570,7 +583,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_tellToGM(message) {
|
$tellToGM(message) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: message,
|
content: message,
|
||||||
@ -579,7 +592,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
_tellToUserAndGM(message) {
|
$tellToUserAndGM(message) {
|
||||||
ChatMessage.create({
|
ChatMessage.create({
|
||||||
user: game.user.id,
|
user: game.user.id,
|
||||||
content: message,
|
content: message,
|
||||||
@ -601,7 +614,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
if (this.currentRencontre) {
|
if (this.currentRencontre) {
|
||||||
if (this.rencontresExistantes.find(it => it.id == this.currentRencontre.id)) {
|
if (this.rencontresExistantes.find(it => it.id == this.currentRencontre.id)) {
|
||||||
// rencontre en attente suite à dérobade
|
// rencontre en attente suite à dérobade
|
||||||
await this.maitriserRencontre();
|
await this.$maitriserRencontre();
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
const dialog = new RdDTMRRencontreDialog(this.actor, this.currentRencontre, tmr);
|
const dialog = new RdDTMRRencontreDialog(this.actor, this.currentRencontre, tmr);
|
||||||
@ -648,7 +661,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
tmr: tmr,
|
tmr: tmr,
|
||||||
presentCite: presentCite
|
presentCite: presentCite
|
||||||
};
|
};
|
||||||
await this._tentativeMaitrise(rencontreData);
|
await this.$tentativeMaitrise(rencontreData);
|
||||||
this.postRencontre(tmr);
|
this.postRencontre(tmr);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -727,7 +740,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
content: await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-resultat-maitrise-tmr.hbs`, rollData)
|
||||||
});
|
});
|
||||||
if (rollData.rolled.isEchec) {
|
if (rollData.rolled.isEchec) {
|
||||||
await this.close();
|
await this.$forceClose(`n'a pas maîtrisé la case ${rollData.tmr.label} et quitte les terres médianes`)
|
||||||
}
|
}
|
||||||
await this.souffleSiEchecTotal(rollData);
|
await this.souffleSiEchecTotal(rollData);
|
||||||
}
|
}
|
||||||
@ -782,7 +795,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
onConqueteReussie: r => EffetsDraconiques.fermetureCites.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
onConqueteReussie: r => EffetsDraconiques.fermetureCites.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||||
onConqueteEchec: r => {
|
onConqueteEchec: r => {
|
||||||
this.souffleSiEchecTotal(rollData);
|
this.souffleSiEchecTotal(rollData);
|
||||||
this.close()
|
this.$forceClose(`${this.actor.name} n'a pas maîtrisé la ${tmr.label}, et quitte les TMR.`)
|
||||||
},
|
},
|
||||||
canClose: false
|
canClose: false
|
||||||
});
|
});
|
||||||
@ -797,7 +810,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
onConqueteReussie: r => EffetsDraconiques.periple.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
onConqueteReussie: r => EffetsDraconiques.periple.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||||
onConqueteEchec: r => {
|
onConqueteEchec: r => {
|
||||||
this.souffleSiEchecTotal(rollData);
|
this.souffleSiEchecTotal(rollData);
|
||||||
this.close()
|
this.$forceClose(`${this.actor.name} n'a pas purifié la ${tmr.label}, et quitte les TMR.`)
|
||||||
},
|
},
|
||||||
canClose: false
|
canClose: false
|
||||||
});
|
});
|
||||||
@ -811,7 +824,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
difficulte: -7,
|
difficulte: -7,
|
||||||
action: 'Conquérir',
|
action: 'Conquérir',
|
||||||
onConqueteReussie: r => EffetsDraconiques.conquete.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
onConqueteReussie: r => EffetsDraconiques.conquete.onVisiteSupprimer(r.actor, tmr, (casetmr) => this.removeToken(tmr, casetmr)),
|
||||||
onConqueteEchec: r => this.close(),
|
onConqueteEchec: r => this.$forceClose(`${this.actor.name} n'a pas conquis la case ${tmr.label}, et quitte les TMR.`),
|
||||||
canClose: false
|
canClose: false
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
@ -922,19 +935,15 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async processSortReserve(sortReserve) {
|
async processSortReserve(sortReserve) {
|
||||||
await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]);
|
await this.actor.deleteEmbeddedDocuments('Item', [sortReserve.id]);
|
||||||
console.log("declencheSortEnReserve", sortReserve);
|
console.log("declencheSortEnReserve", sortReserve)
|
||||||
const heureCible = RdDTimestamp.definition(sortReserve.system.heurecible).label;
|
const sort = sortReserve.system.sortid ? this.actor.items.get(sortReserve.system.sortid) : undefined
|
||||||
this._tellToUserAndGM(`Vous avez déclenché
|
const message = await renderTemplate(`systems/foundryvtt-reve-de-dragon/templates/chat-lancement-sortreserve.hbs`,
|
||||||
${sortReserve.system.echectotal ? "<strong>l'échec total!</strong>" : "le sort"}
|
{ sortReserve, sort })
|
||||||
en réserve <strong>${sortReserve.name}</strong>
|
await this.$forceClose(message)
|
||||||
avec ${sortReserve.system.ptreve} points de Rêve
|
|
||||||
en ${sortReserve.system.coord} (${TMRUtility.getTMRLabel(sortReserve.system.coord)}).
|
|
||||||
L'heure ciblée est ${heureCible}`);
|
|
||||||
this.close();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
nettoyerRencontre() {
|
$nettoyerRencontre() {
|
||||||
// Suppression des dessins des zones possibles
|
// Suppression des dessins des zones possibles
|
||||||
this.currentRencontre?.graphics?.forEach(graphic => this.pixiTMR.removeGraphic(graphic))
|
this.currentRencontre?.graphics?.forEach(graphic => this.pixiTMR.removeGraphic(graphic))
|
||||||
// Nettoyage de la structureet de l'état
|
// Nettoyage de la structureet de l'état
|
||||||
@ -1021,7 +1030,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
console.log("STATUS :", this.rencontreState, this.currentRencontre);
|
console.log("STATUS :", this.rencontreState, this.currentRencontre);
|
||||||
}
|
}
|
||||||
|
|
||||||
this.checkQuitterTMR();
|
await this.$checkQuitterTMR();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -1054,13 +1063,13 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
*/
|
*/
|
||||||
this.notifierResonanceSigneDraconique(targetCoord);
|
this.notifierResonanceSigneDraconique(targetCoord);
|
||||||
await this.actor.rollUnSort(targetCoord);
|
await this.actor.rollUnSort(targetCoord);
|
||||||
this.nettoyerRencontre();
|
this.$nettoyerRencontre();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
externalRefresh() {
|
externalRefresh() {
|
||||||
this.createPixiSprites();
|
this.createPixiSprites();
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
console.log("TMR REFRESHED !!!");
|
console.log("TMR REFRESHED !!!");
|
||||||
}
|
}
|
||||||
@ -1071,7 +1080,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
return this.forceTMRContinueAction()
|
return this.forceTMRContinueAction()
|
||||||
}
|
}
|
||||||
if (this.currentRencontre != 'normal') {
|
if (this.currentRencontre != 'normal') {
|
||||||
this.nettoyerRencontre();
|
this.$nettoyerRencontre();
|
||||||
}
|
}
|
||||||
let tmr = TMRUtility.getTMR(targetCoord);
|
let tmr = TMRUtility.getTMR(targetCoord);
|
||||||
// Gestion cases spéciales type Trou noir, etc
|
// Gestion cases spéciales type Trou noir, etc
|
||||||
@ -1083,7 +1092,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
if (ReglesOptionnelles.isUsing("appliquer-fatigue")) {
|
||||||
this.cumulFatigue += this.fatigueParCase;
|
this.cumulFatigue += this.fatigueParCase;
|
||||||
}
|
}
|
||||||
this.updateValuesDisplay();
|
this.$updateValuesDisplay();
|
||||||
this.actor.notifyRefreshTMR();
|
this.actor.notifyRefreshTMR();
|
||||||
|
|
||||||
if (deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/...
|
if (deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/...
|
||||||
|
@ -318,6 +318,7 @@ export class RdDUtility {
|
|||||||
// gestion des dates et heures
|
// gestion des dates et heures
|
||||||
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
|
Handlebars.registerHelper('timestamp-imgSigneHeure', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigneHeure(heure)) });
|
||||||
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
|
Handlebars.registerHelper('timestamp-imgSigne', (heure) => { return new Handlebars.SafeString(RdDTimestamp.imgSigne(heure)) });
|
||||||
|
Handlebars.registerHelper('timestamp-definition', (heure) => RdDTimestamp.definition(heure))
|
||||||
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
|
Handlebars.registerHelper('timestamp-extract', timestamp => new RdDTimestamp(timestamp).toCalendrier());
|
||||||
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
Handlebars.registerHelper('timestamp-formulesDuree', () => RdDTimestamp.formulesDuree());
|
||||||
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
|
Handlebars.registerHelper('timestamp-formulesPeriode', () => RdDTimestamp.formulesPeriode());
|
||||||
|
15
templates/chat-lancement-sortreserve.hbs
Normal file
15
templates/chat-lancement-sortreserve.hbs
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
<img class="chat-icon" src="{{sortReserve.img}}" data-tooltip="{{sortReserve.name}}"/>
|
||||||
|
<p> Vous avez déclenché
|
||||||
|
{{#if sortReserve.system.echectotal}}<strong>l'échec total</strong>{{else}}le sort{{/if}}
|
||||||
|
en réserve
|
||||||
|
<strong>{{sortReserve.name}}</strong>
|
||||||
|
avec {{sortReserve.system.ptreve}} points de Rêve
|
||||||
|
en {{sortReserve.system.coord}} ({{caseTmr-label sortReserve.system.coord}}).
|
||||||
|
L'heure ciblée est {{sortReserve.system.heurecible}}
|
||||||
|
{{timestamp-imgSigneHeure sortReserve.system.heurecible}}
|
||||||
|
</p>
|
||||||
|
{{#if sort}}
|
||||||
|
<div class="poesie-extrait poesie-overflow">
|
||||||
|
{{{sort.system.description}}}
|
||||||
|
</div>
|
||||||
|
{{/if}}
|
Loading…
x
Reference in New Issue
Block a user