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:
2020-11-29 18:06:19 +01:00
parent ec4166d2da
commit c9a214adca
4 changed files with 106 additions and 89 deletions

View File

@ -321,29 +321,28 @@ export class TMRUtility {
/* -------------------------------------------- */
static async rencontreTMRRoll( coordTMR, cellDescr )
{
let rencontre = await this.rencontreTMRTypeCase(cellDescr.type);
//let rencontre = rencontresTable[4];
if (rencontre){
rencontre = duplicate(rencontre);
rencontre.force = this.evaluerForceRencontre(rencontre);
rencontre.coord = coordTMR;
rencontre.nbCases = 0; // Utilisé pour les Tourbillons
}
if ( this.forceRencontre ) {
// Forced
rencontre = rencontresTable[this.forceRencontre.id];
let rencontre = duplicate(rencontresTable[this.forceRencontre.id]);
rencontre.force = this.forceRencontre.force;
rencontre.coord = coordTMR;
rencontre.nbCases = 0; // Utilisé pour les Tourbillons
return rencontre;
}
let rencontre = await this.rencontreTMRTypeCase(cellDescr.type);
//let rencontre = rencontresTable[4];
if (rencontre) {
rencontre = duplicate(rencontre);
rencontre.force = await this.evaluerForceRencontre(rencontre);
rencontre.coord = coordTMR;
rencontre.nbCases = 0; // Utilisé pour les Tourbillons
}
return rencontre;
}
/* -------------------------------------------- */
static async rencontreTMRTypeCase(typeTMR, roll=undefined) {
if (!roll)
{
if (!roll) {
//roll = await RdDDice.show(new Roll("d100").evaluate()).total;
roll = new Roll("d100").roll().total;
console.log("rencontreTMRTypeCase", roll);
@ -368,19 +367,23 @@ export class TMRUtility {
* @param {*} caseName
* @param {*} roll
*/
static getRencontre( caseName, roll ) {
if (!roll) {
roll = new Roll("1d100").roll().total;
}
static async getRencontre( caseName, roll ) {
if ( !caseName) {
ChatMessage.create({ content: "Un nom de case doit être indiqué (ie /tmrr desert ou /tmrr cite)" });
return false;
}
let rencontre = this.rencontreTMRTypeCase(caseName, roll);
if (roll == undefined) {
roll = new Roll("d100").evaluate().total;
}
roll = Math.max(1, Math.min(roll, 100));
let rencontre = await this.rencontreTMRTypeCase(caseName, roll);
if (rencontre) {
let force = this.evaluerForceRencontre(rencontre);
ChatMessage.create({ content: "Rencontre en " + caseName + "(jet : " + roll + "%)<br>Vous rencontrez un " + rencontre.name + " d'une force de " + force + " Points de Rêve" });
let force = await this.evaluerForceRencontre(rencontre);
ChatMessage.create({
user: game.user._id,
whisper: [game.user._id],
content: "Rencontre en " + caseName + "(jet : " + roll + "%)<br>Vous rencontrez un " + rencontre.name + " d'une force de " + force + " Points de Rêve"});
}
return false;
}
@ -398,9 +401,9 @@ export class TMRUtility {
}
/* -------------------------------------------- */
static evaluerForceRencontre(rencontre) {
static async evaluerForceRencontre(rencontre) {
if (this.isReveDeDragon(rencontre)) {
let ddr = RdDDice.deDraconique();
let ddr = await RdDDice.deDraconique();
return ddr + 7;
}
else {
@ -416,96 +419,96 @@ export class TMRUtility {
/* -------------------------------------------- */
static async processRencontreReussite( actor, rencontre, rolled ) {
let msg = "<br>";
let message = "<br>";
let state = "aucune";
console.log("processRencontreReussite", actor, rencontre);
if (rencontre.name == "Messagers des Rêves") {
msg += "Le Messager des Rêves vous permet de lancer votre sort à XX cases !";
state = "messager";
message += "Le Messager des Rêves vous permet de lancer votre sort à " + rencontre.force + " cases !";
state = 'messager';
} else if (rencontre.name == "Passeur des Rêves") {
msg += "Le Passeur des Rêves vous permet de vous téléporter à " + rencontre.force + " cases !";
state = "passeur";
message += "Le Passeur des Rêves vous permet de vous téléporter à " + rencontre.force + " cases !";
state = 'passeur';
} else if (rencontre.name == "Fleur des Rêves") {
await actor.reveActuelIncDec( rencontre.force );
msg += "La Fleur des rêves s'évanouit en vous fournissant " + rencontre.force + " Points de Rêve";
message += "La Fleur des rêves s'évanouit en vous fournissant " + rencontre.force + " Points de Rêve";
} else if (rencontre.name == "Mangeur de Rêve") {
msg += "Ce Mangeur des Rêves disparait !"
message += "Ce Mangeur des Rêves disparait !"
} else if (rencontre.name == "Changeur de Rêve") {
msg += "Ce Changeur des Rêves vous propose de vous déplacer sur une autre case de même type."
state = "changeur";
message += "Ce Changeur des Rêves vous propose de vous déplacer sur une autre case de même type."
state = 'changeur';
} else if (rencontre.name == "Briseur de Rêve") {
msg += "Ce Briseur des Rêves disparait !"
message += "Ce Briseur des Rêves disparait !"
} else if (rencontre.name == "Reflet d'ancien Rêve") {
msg += "Ce Reflet d'ancien Rêve disparait !"
message += "Ce Reflet d'ancien Rêve disparait !"
} else if (rencontre.name == "Tourbillon blanc") {
msg += "Ce Tourbillon Blanc disparait !"
message += "Ce Tourbillon Blanc disparait !"
} else if (rencontre.name == "Tourbillon noir") {
msg += "Ce Tourbillon Noir disparait !"
message += "Ce Tourbillon Noir disparait !"
} else if (rencontre.name == "Rêve de Dragon") {
// TODO: xp particulière
msg += "Vous maîtrisez le Rêve de Dragon !"
msg += actor.appliquerReveDeDragon(rolled, rencontre.force);
message += "Vous maîtrisez le Rêve de Dragon !"
message += actor.appliquerReveDeDragon(rolled, rencontre.force);
}
return { msg: msg, state: state };
return { message: message, state: state };
}
/* -------------------------------------------- */
static async processRencontreEchec( actor, rencontre, rolled, tmrDialog ) {
let msg = "<br>";
let message = "<br>";
let state = "aucune";
if (rencontre.name == "Messagers des Rêves") {
msg += "Le Messager des Rêves s'éloigne de vous !";
message += "Le Messager des Rêves s'éloigne de vous !";
} else if (rencontre.name == "Passeur des Rêves") {
msg += "Le Passeur des Rêves s'éloigne de vous !";
message += "Le Passeur des Rêves s'éloigne de vous !";
} else if (rencontre.name == "Fleur des Rêves") {
msg += "La Fleur des rêves s'éloigne de vous et se perd dans les Terres Médianes";
message += "La Fleur des rêves s'éloigne de vous et se perd dans les Terres Médianes";
} else if (rencontre.name == "Mangeur de Rêve") {
await actor.reveActuelIncDec( -rencontre.force );
msg += "Ce Mangeur des Rêves croque votre Rêve ! Vous perdez " + rencontre.force + " points de rêve actuels, votre nouveau total est de " + actor.data.data.reve.reve.value;
message += "Ce Mangeur des Rêves croque votre Rêve ! Vous perdez " + rencontre.force + " points de rêve actuels, votre nouveau total est de " + actor.data.data.reve.reve.value;
} else if (rencontre.name == "Changeur de Rêve") {
msg += "Ce Changeur des Rêves vous déplace sur un autre case du même type.<br>"
message += "Ce Changeur des Rêves vous déplace sur un autre case du même type.<br>"
let locList = this.getLocationTypeList( actor.data.data.reve.tmrpos.coord );
let index = new Roll("1d"+locList.length + " - 1").roll().total;
let newCoord = locList[index];
tmrDialog.forceDemiRevePosition(newCoord);
let cellDescr = TMRUtility.getTMRDescription(newCoord);
msg += "Vous avez été téléporté en " + newCoord + " - " + cellDescr.label;
message += "Vous avez été téléporté en " + newCoord + " - " + cellDescr.label;
} else if (rencontre.name == "Briseur de Rêve") {
msg += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
message += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
} else if (rencontre.name == "Reflet d'ancien Rêve") {
msg += "Votre Rêve est figé, vous restez sur cette case tant que ce Reflet n'est pas vaincu!";
message += "Votre Rêve est figé, vous restez sur cette case tant que ce Reflet n'est pas vaincu!";
state = "reflet";
} else if (rencontre.name == "Tourbillon blanc") {
msg += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
message += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
state = "tourbillonblanc";
} else if (rencontre.name == "Tourbillon noir") {
msg += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
message += "Votre Rêve est Brisé, vous quittez les Terres Médianes";
state = "tourbillonnoir";
} else if (rencontre.name == "Rêve de Dragon") {
msg += "Le Rêve de Dragon tourne au cauchemar !"
msg += actor.appliquerReveDeDragon(rolled, rencontre.force);
message += "Le Rêve de Dragon tourne au cauchemar !"
message += actor.appliquerReveDeDragon(rolled, rencontre.force);
}
return { msg: msg, state: state };
return { message: message, state: state };
}
/* -------------------------------------------- */