forked from public/foundryvtt-reve-de-dragon
Fix messages
- undefined dans certains cas (lancer de sort) - promise pour la maîtrise de case humides - ajout de message au joueur pour les jets de rencontre - messages au joueur + GM pour les résultats de rencontres - message au joueur + GM lors de la montée et dans les cas où les TMRs sont quittées
This commit is contained in:
@ -21,7 +21,7 @@ const tmrConstants = {
|
||||
export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
constructor(html, actor, tmrData, viewOnly) {
|
||||
constructor(html, actor, tmrData, mode) {
|
||||
const dialogConf = {
|
||||
title: "Terres Médianes de Rêve",
|
||||
content: html,
|
||||
@ -41,19 +41,23 @@ export class RdDTMRDialog extends Dialog {
|
||||
this.tmrdata = duplicate(tmrData);
|
||||
this.actor = actor;
|
||||
this.actor.tmrApp = this; // reference this app in the actor structure
|
||||
this.viewOnly = viewOnly
|
||||
this.viewOnly = mode == "visu"
|
||||
this.nbFatigue = this.viewOnly ? 0 : 1; // 1 premier point de fatigue du à la montée
|
||||
this.rencontresExistantes = duplicate(this.actor.data.data.reve.rencontre.list);
|
||||
this.sortReserves = duplicate(this.actor.data.data.reve.reserve.list);
|
||||
this.allTokens = [];
|
||||
this.rencontreState = 'aucune';
|
||||
this.pixiApp = new PIXI.Application({ width: 720, height: 860 });
|
||||
if (!this.viewOnly){
|
||||
this._tellToGM(this.actor.name + " monte dans les terres médianes (" + mode + ")");
|
||||
}
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
close() {
|
||||
this.actor.santeIncDec("fatigue", this.nbFatigue).then(super.close()); // moving 1 cell costs 1 fatigue
|
||||
this.actor.tmrApp = undefined; // Cleanup reference
|
||||
this._tellToGM(this.actor.name + " a quitté les terres médianes")
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -169,15 +173,15 @@ export class RdDTMRDialog extends Dialog {
|
||||
/* -------------------------------------------- */
|
||||
checkQuitterTMR() {
|
||||
if ( this.actor.data.data.reve.reve.value == 0) {
|
||||
ChateMessage.create( { content: "Vos Points de Rêve sont à 0 : vous quittez les Terres médianes !"} );
|
||||
this._tellToGM("Vos Points de Rêve sont à 0 : vous quittez les Terres médianes !");
|
||||
this.close();
|
||||
}
|
||||
if ( this.nbFatigue == this.actor.data.data.sante.fatigue.max ) {
|
||||
ChateMessage.create({ content: "Vous vous écroulez de fatigue : vous quittez les Terres médianes !"});
|
||||
this._tellToGM("Vous vous écroulez de fatigue : vous quittez les Terres médianes !");
|
||||
this.close();
|
||||
}
|
||||
if ( this.actor.data.data.sante.vie.value == 0 ) {
|
||||
ChateMessage.create({ content: "Vous n'avez plus de Points de Vie : vous quittez les Terres médianes !"});
|
||||
this._tellToGM("Vous n'avez plus de Points de Vie : vous quittez les Terres médianes !");
|
||||
this.close();
|
||||
}
|
||||
}
|
||||
@ -202,14 +206,15 @@ export class RdDTMRDialog extends Dialog {
|
||||
if (rolled.isEchec) {
|
||||
rencontreData = await TMRUtility.processRencontreEchec(this.actor, this.currentRencontre, rolled, this);
|
||||
message += rencontreData.message;
|
||||
this._tellToUser("Vous avez <strong>échoué</strong> à maîtriser un " + this.currentRencontre.name + " de force " + this.currentRencontre.force
|
||||
+ message);
|
||||
if (this.currentRencontre.data.quitterTMR) // Selon les rencontres, quitter TMR ou pas
|
||||
this._tellToGM("Vous avez <strong>échoué</strong> à maîtriser un " + this.currentRencontre.name + " de force " + this.currentRencontre.force + message);
|
||||
|
||||
if (this.currentRencontre.data.quitterTMR) { // Selon les rencontres, quitter TMR ou pas
|
||||
this.close();
|
||||
}
|
||||
} else {
|
||||
rencontreData = await TMRUtility.processRencontreReussite(this.actor, this.currentRencontre, rolled);
|
||||
message += rencontreData.message;
|
||||
this._tellToUser("Vous avez <strong>réussi</strong> à maîtriser un " + this.currentRencontre.name + " de force " + this.currentRencontre.force + message);
|
||||
this._tellToGM("Vous avez <strong>réussi</strong> à maîtriser un " + this.currentRencontre.name + " de force " + this.currentRencontre.force + message);
|
||||
}
|
||||
|
||||
await this.rencontrePostProcess( rencontreData );
|
||||
@ -224,7 +229,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
|
||||
/* -------------------------------------------- */
|
||||
_tellToUser(message) {
|
||||
ChatMessage.create({ content: message, user: game.user._id });
|
||||
ChatMessage.create({ content: message, user: game.user._id, whisper: [game.user._id] });
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
@ -238,15 +243,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
return;
|
||||
}
|
||||
this.currentRencontre = undefined;
|
||||
let rencontre = this.rencontresExistantes.find(prev => prev.coord == coordTMR);
|
||||
if (rencontre == undefined) {
|
||||
let myRoll = new Roll("d7").roll();
|
||||
if (myRoll.total == 7) {
|
||||
rencontre = await TMRUtility.rencontreTMRRoll(coordTMR, cellDescr);
|
||||
}
|
||||
}
|
||||
if ( TMRUtility.isForceRencontre() )
|
||||
rencontre = await TMRUtility.rencontreTMRRoll(coordTMR, cellDescr);
|
||||
let rencontre = await this._jetDeRencontre(coordTMR, cellDescr);
|
||||
|
||||
if (rencontre) { // Manages it
|
||||
if (rencontre.rencontre) rencontre = rencontre.rencontre; // Manage stored rencontres
|
||||
@ -267,6 +264,24 @@ export class RdDTMRDialog extends Dialog {
|
||||
}
|
||||
}
|
||||
|
||||
async _jetDeRencontre(coordTMR, cellDescr) {
|
||||
|
||||
let rencontre = this.rencontresExistantes.find(prev => prev.coord == coordTMR);
|
||||
if (rencontre == undefined) {
|
||||
let myRoll = new Roll("d7").roll();
|
||||
if (myRoll.total == 7) {
|
||||
rencontre = await TMRUtility.rencontreTMRRoll(coordTMR, cellDescr);
|
||||
}
|
||||
else {
|
||||
this._tellToUser(myRoll.total + ": Pas de rencontre en " + cellDescr.label + " (" + coordTMR + ")");
|
||||
}
|
||||
}
|
||||
if (TMRUtility.isForceRencontre()) {
|
||||
return await TMRUtility.rencontreTMRRoll(coordTMR, cellDescr);
|
||||
}
|
||||
return rencontre;
|
||||
}
|
||||
|
||||
/* -------------------------------------------- */
|
||||
performRoll(html) {
|
||||
if (this.viewOnly) {
|
||||
@ -313,7 +328,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
// TODO: ajouter l'état général?
|
||||
const etatGeneral = this.actor.data.data.compteurs.etat.value
|
||||
let difficulte = draconic.data.niveau - 7;
|
||||
let rolled = RdDResolutionTable.roll(carac, difficulte);
|
||||
let rolled = await RdDResolutionTable.roll(carac, difficulte);
|
||||
|
||||
console.log("manageCaseHumide >>", rolled);
|
||||
|
||||
@ -363,7 +378,7 @@ export class RdDTMRDialog extends Dialog {
|
||||
const declenchementSort = "Vous avez déclenché le sort <strong>" + sortReserve.sort.name
|
||||
+ "</strong> en réserve en " + sortReserve.coord + " (" + TMRUtility.getTMRDescription(sortReserve.coord).label
|
||||
+ ") avec " + sortReserve.sort.ptreve_reel + " points de Rêve";
|
||||
this._tellToUser(declenchementSort);
|
||||
this._tellToGM(declenchementSort);
|
||||
this.close();
|
||||
}
|
||||
}
|
||||
@ -436,11 +451,16 @@ export class RdDTMRDialog extends Dialog {
|
||||
if ( deplacementType == 'normal') { // Pas de rencontres après un saut de type passeur/changeur/...
|
||||
await myself.manageRencontre(coordTMR, cellDescr);
|
||||
}
|
||||
myself.manageCaseHumide(cellDescr);
|
||||
await myself.manageCaseHumide(cellDescr);
|
||||
await myself.declencheSortEnReserve(coordTMR);
|
||||
|
||||
} else if (deplacementType == 'messager') { // Dans ce cas, ouverture du lancement de sort sur la case visée
|
||||
myself.actor.rollUnSort( coordTMR );
|
||||
/*
|
||||
TODO: si la case a un sort en réserve, lancer ce sort.
|
||||
Si la case est le demi-rêve, ne pas lancer de sort.
|
||||
Si un lancement de sort est en cours, trouver un moyen de réafficher cette fenêtre si on essaie de lancer un sort (ou bloquer le lancer de sort)
|
||||
*/
|
||||
await myself.actor.rollUnSort( coordTMR );
|
||||
myself.nettoyerRencontre();
|
||||
|
||||
} else {
|
||||
|
Reference in New Issue
Block a user