Message de confirmation rencontre TMR
Quand un haut-rêvant monte dans les TMR avec une rencontre en attente, un message est affiché pour demander confirmation
This commit is contained in:
parent
80719d8c15
commit
dfe4b47452
@ -1,4 +1,7 @@
|
|||||||
# 11.2
|
# 11.2
|
||||||
|
## 11.2.21 - Le questionnement d'Akarlikarlikar
|
||||||
|
- Une confirmation spécifique est demandée pour monter dans les terres médianes en cas de rencontre en attente
|
||||||
|
|
||||||
## 11.2.20 - Le soulagement d'Akarlikarlikar
|
## 11.2.20 - Le soulagement d'Akarlikarlikar
|
||||||
|
|
||||||
- L'option 'ajout de la difficulté d'attaque à l'encaissement est affichée comme un modificateur d'encaissement
|
- L'option 'ajout de la difficulté d'attaque à l'encaissement est affichée comme un modificateur d'encaissement
|
||||||
|
@ -991,25 +991,33 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
buildTMRInnaccessible() {
|
buildTMRInnaccessible() {
|
||||||
const tmrInnaccessibles = this.filterItems(it => Draconique.isCaseTMR(it) &&
|
return this.items[TYPES.casetmr]
|
||||||
EffetsDraconiques.isInnaccessible(it));
|
.filter(it => EffetsDraconiques.isInnaccessible(it))
|
||||||
return tmrInnaccessibles.map(it => it.system.coord);
|
.map(it => it.system.coord)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
getTMRRencontres() {
|
getRencontresTMR() {
|
||||||
return this.itemTypes['rencontre'];
|
return this.itemTypes[TYPES.rencontre];
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async deleteTMRRencontreAtPosition() {
|
async deleteRencontreTMRAtPosition() {
|
||||||
const demiReve = this.getDemiReve()
|
const rencontreIds = this.itemTypes[TYPES.rencontre].filter(this.filterRencontreTMRDemiReve()).map(it => it.id)
|
||||||
let rencontreIds = this.items.filter(it => it.type == 'rencontre' && it.system.coord == demiReve).map(it => it.id);
|
|
||||||
if (rencontreIds.length > 0) {
|
if (rencontreIds.length > 0) {
|
||||||
await this.deleteEmbeddedDocuments('Item', rencontreIds);
|
await this.deleteEmbeddedDocuments('Item', rencontreIds)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
getRencontreTMREnAttente() {
|
||||||
|
return this.itemTypes[TYPES.rencontre].find(this.filterRencontreTMRDemiReve())
|
||||||
|
}
|
||||||
|
|
||||||
|
filterRencontreTMRDemiReve() {
|
||||||
|
const position = this.getDemiReve()
|
||||||
|
return it => it.system.coord == position
|
||||||
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async addTMRRencontre(currentRencontre) {
|
async addTMRRencontre(currentRencontre) {
|
||||||
const toCreate = currentRencontre.toObject();
|
const toCreate = currentRencontre.toObject();
|
||||||
@ -2423,22 +2431,29 @@ export class RdDActor extends RdDBaseActorSang {
|
|||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
async displayTMR(mode = "normal") {
|
async displayTMR(mode = "normal") {
|
||||||
if (this.tmrApp) {
|
if (this.tmrApp) {
|
||||||
ui.notifications.warn("Vous êtes déja dans les TMR....");
|
ui.notifications.warn("Vous êtes déja dans les TMR....")
|
||||||
this.tmrApp.forceTMRDisplay();
|
this.tmrApp.forceTMRDisplay()
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
|
if (mode != 'visu' && this.getEffect(STATUSES.StatusDemiReve)) {
|
||||||
ui.notifications.warn("Le joueur ou le MJ est déja dans les Terres Médianes avec ce personnage ! Visualisation uniquement");
|
ui.notifications.warn("Les personnage est déjà dans les Terres Médianes, elles s'affichent en visualisation")
|
||||||
mode = "visu"; // bascule le mode en visu automatiquement
|
mode = "visu"; // bascule le mode en visu automatiquement
|
||||||
}
|
}
|
||||||
RdDConfirm.confirmer({
|
if (mode == 'visu') {
|
||||||
bypass: mode == 'visu',
|
await this._doDisplayTMR(mode)
|
||||||
settingConfirmer: "confirmation-tmr",
|
}
|
||||||
content: `<p>Voulez vous monter dans les TMR en mode ${mode}?</p>`,
|
else {
|
||||||
title: 'Confirmer la montée dans les TMR',
|
const rencontre = this.getRencontreTMREnAttente();
|
||||||
buttonLabel: 'Monter dans les TMR',
|
const settingConfirmer = rencontre ? "confirmation-tmr-rencontre" : "confirmation-tmr";
|
||||||
onAction: async () => await this._doDisplayTMR(mode)
|
const messageRencontre = rencontre ? `<p>Vous devrez combattre ${rencontre.system.genre == 'f' ? 'la' : 'le'} ${rencontre.name} de ${rencontre.system.force} points de Rêve</p>` : '';
|
||||||
});
|
RdDConfirm.confirmer({
|
||||||
|
settingConfirmer: settingConfirmer,
|
||||||
|
content: `<p>Voulez vous monter dans les TMR en mode ${mode}?</p>` + messageRencontre,
|
||||||
|
title: 'Confirmer la montée dans les TMR',
|
||||||
|
buttonLabel: 'Monter dans les TMR',
|
||||||
|
onAction: async () => await this._doDisplayTMR(mode)
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
async _doDisplayTMR(mode) {
|
async _doDisplayTMR(mode) {
|
||||||
|
@ -8,7 +8,6 @@ import { RdDAudio } from "../rdd-audio.js";
|
|||||||
import { RdDConfirm } from "../rdd-confirm.js";
|
import { RdDConfirm } from "../rdd-confirm.js";
|
||||||
import { RdDUtility } from "../rdd-utility.js";
|
import { RdDUtility } from "../rdd-utility.js";
|
||||||
import { SystemCompendiums } from "../settings/system-compendiums.js";
|
import { SystemCompendiums } from "../settings/system-compendiums.js";
|
||||||
import { APP_ASTROLOGIE_REFRESH } from "../sommeil/app-astrologie.js";
|
|
||||||
|
|
||||||
export class RdDBaseActor extends Actor {
|
export class RdDBaseActor extends Actor {
|
||||||
|
|
||||||
@ -16,7 +15,7 @@ export class RdDBaseActor extends Actor {
|
|||||||
return Object.entries(carac)
|
return Object.entries(carac)
|
||||||
.filter(it => Grammar.equalsInsensitive(it[1].label, name))
|
.filter(it => Grammar.equalsInsensitive(it[1].label, name))
|
||||||
.map(it => it[0])
|
.map(it => it[0])
|
||||||
.find(it => it);
|
.find(it => it)
|
||||||
}
|
}
|
||||||
static $findCaracByName(carac, name) {
|
static $findCaracByName(carac, name) {
|
||||||
const caracList = Object.entries(carac);
|
const caracList = Object.entries(carac);
|
||||||
|
@ -4,29 +4,23 @@ import { ReglesOptionnelles } from "./settings/regles-optionnelles.js";
|
|||||||
export class RdDConfirm {
|
export class RdDConfirm {
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
static confirmer(options, autresActions) {
|
static confirmer(options, autresActions) {
|
||||||
options.bypass = options.bypass || !(options.settingConfirmer == undefined || ReglesOptionnelles.isUsing(options.settingConfirmer));
|
let buttons = {
|
||||||
if (options.bypass) {
|
"action": RdDConfirm._createButtonAction(options),
|
||||||
options.onAction();
|
"cancel": RdDConfirm._createButtonCancel()
|
||||||
|
};
|
||||||
|
if (options.settingConfirmer) {
|
||||||
|
buttons = foundry.utils.mergeObject(RdDConfirm._createButtonActionSave(options), buttons);
|
||||||
}
|
}
|
||||||
else {
|
if (autresActions) {
|
||||||
let buttons = {
|
buttons = foundry.utils.mergeObject(autresActions, buttons);
|
||||||
"action": RdDConfirm._createButtonAction(options),
|
|
||||||
"cancel": RdDConfirm._createButtonCancel()
|
|
||||||
};
|
|
||||||
if (options.settingConfirmer) {
|
|
||||||
buttons = foundry.utils.mergeObject(RdDConfirm._createButtonActionSave(options), buttons);
|
|
||||||
}
|
|
||||||
if (autresActions) {
|
|
||||||
buttons = foundry.utils.mergeObject(autresActions, buttons);
|
|
||||||
}
|
|
||||||
const dialogDetails = {
|
|
||||||
title: options.title,
|
|
||||||
content: options.content,
|
|
||||||
default: "cancel",
|
|
||||||
buttons: buttons
|
|
||||||
};
|
|
||||||
new Dialog(dialogDetails, { width: 150 * Object.keys(buttons).length }).render(true);
|
|
||||||
}
|
}
|
||||||
|
const dialogDetails = {
|
||||||
|
title: options.title,
|
||||||
|
content: options.content,
|
||||||
|
default: "cancel",
|
||||||
|
buttons: buttons
|
||||||
|
};
|
||||||
|
new Dialog(dialogDetails, { width: 150 * Object.keys(buttons).length }).render(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
static _createButtonCancel() {
|
static _createButtonCancel() {
|
||||||
|
@ -212,7 +212,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
loadRencontres() {
|
loadRencontres() {
|
||||||
this.rencontresExistantes = this.actor.getTMRRencontres();
|
this.rencontresExistantes = this.actor.getRencontresTMR();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* -------------------------------------------- */
|
/* -------------------------------------------- */
|
||||||
@ -382,7 +382,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
async refouler() {
|
async refouler() {
|
||||||
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.deleteTMRRencontreAtPosition(); // Remove the stored rencontre if necessary
|
await this.actor.deleteRencontreTMRAtPosition()
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
this.updateValuesDisplay();
|
this.updateValuesDisplay();
|
||||||
this.nettoyerRencontre();
|
this.nettoyerRencontre();
|
||||||
@ -392,7 +392,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
async ignorerRencontre() {
|
async ignorerRencontre() {
|
||||||
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.deleteTMRRencontreAtPosition(); // Remove the stored rencontre if necessary
|
await this.actor.deleteRencontreTMRAtPosition()
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
this.updateValuesDisplay();
|
this.updateValuesDisplay();
|
||||||
this.nettoyerRencontre();
|
this.nettoyerRencontre();
|
||||||
@ -446,7 +446,7 @@ export class RdDTMRDialog extends Dialog {
|
|||||||
async maitriserRencontre() {
|
async maitriserRencontre() {
|
||||||
console.log("-> maitriser", this.currentRencontre);
|
console.log("-> maitriser", this.currentRencontre);
|
||||||
|
|
||||||
await this.actor.deleteTMRRencontreAtPosition();
|
await this.actor.deleteRencontreTMRAtPosition()
|
||||||
this.updateTokens();
|
this.updateTokens();
|
||||||
|
|
||||||
let rencontreData = {
|
let rencontreData = {
|
||||||
|
@ -26,6 +26,7 @@ const listeReglesOptionnelles = [
|
|||||||
|
|
||||||
{ group: 'Confirmations', name: 'confirmer-combat-sans-cible', descr: "Confirmer avant une attaque sans cible", scope: "client"},
|
{ group: 'Confirmations', name: 'confirmer-combat-sans-cible', descr: "Confirmer avant une attaque sans cible", scope: "client"},
|
||||||
{ group: 'Confirmations', name: 'confirmation-tmr', descr: "Confirmer pour monter dans les TMR", scope: "client"},
|
{ group: 'Confirmations', name: 'confirmation-tmr', descr: "Confirmer pour monter dans les TMR", scope: "client"},
|
||||||
|
{ group: 'Confirmations', name: 'confirmation-tmr-rencontre', descr: "Confirmer pour monter dans les TMR avec rencontre en attente", scope: "client"},
|
||||||
{ group: 'Confirmations', name: 'confirmation-refouler', descr: "Confirmer avant de refouler", scope: "client"},
|
{ group: 'Confirmations', name: 'confirmation-refouler', descr: "Confirmer avant de refouler", scope: "client"},
|
||||||
{ group: 'Confirmations', name: 'confirmation-vider', descr: "Confirmer pour vider l'équipement", scope: "client"},
|
{ group: 'Confirmations', name: 'confirmation-vider', descr: "Confirmer pour vider l'équipement", scope: "client"},
|
||||||
{ group: 'Confirmations', name: 'confirmation-supprimer-lien-acteur', descr: "Confirmer pour détacher un animal/suivant/véhicule", scope: "client"},
|
{ group: 'Confirmations', name: 'confirmation-supprimer-lien-acteur', descr: "Confirmer pour détacher un animal/suivant/véhicule", scope: "client"},
|
||||||
|
@ -16,7 +16,7 @@ export class Rencontre extends Draconique {
|
|||||||
return pixiTMR.sprite(this.code(), {
|
return pixiTMR.sprite(this.code(), {
|
||||||
zIndex: tmrTokenZIndex.rencontre,
|
zIndex: tmrTokenZIndex.rencontre,
|
||||||
decallage: pixiTMR.sizes.decallage(0, 0),
|
decallage: pixiTMR.sizes.decallage(0, 0),
|
||||||
taille: () => pixiTMR.sizes.twoThird,
|
taille: () => pixiTMR.sizes.full,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user