Table de rencontre sur une TMR

Au lieu de passer le type de TMR, passer la TMR {type,
coordonnées}

Ce qui permettra de créer une rencontre avec les coordonnées
si disponible
This commit is contained in:
Vincent Vandemeulebrouck 2022-11-07 19:57:39 +01:00
parent dc07b60acf
commit 2106e6ebef
2 changed files with 15 additions and 7 deletions

View File

@ -552,7 +552,7 @@ export class RdDTMRDialog extends Dialog {
let rencontre = TMRUtility.utiliseForceRencontre() ?? let rencontre = TMRUtility.utiliseForceRencontre() ??
(isMauvaise (isMauvaise
? await TMRRencontres.getMauvaiseRencontre() ? await TMRRencontres.getMauvaiseRencontre()
: await TMRRencontres.getRencontreAleatoire(tmr.type)); : await TMRRencontres.getRencontreAleatoire(tmr));
rencontre.coord = tmr.coord; rencontre.coord = tmr.coord;
rencontre.date = game.system.rdd.calendrier.getDateFromIndex(); rencontre.date = game.system.rdd.calendrier.getDateFromIndex();
rencontre.heure = game.system.rdd.calendrier.getCurrentHeure(); rencontre.heure = game.system.rdd.calendrier.getCurrentHeure();

View File

@ -331,13 +331,21 @@ export class TMRRencontres {
*/ */
static async rollRencontre(terrain, roll = undefined) { static async rollRencontre(terrain, roll = undefined) {
if (!terrain) { if (!terrain) {
ChatMessage.create({ content: "Un type de case doit être indiqué (par exemple sanctuaire, desert ou cité)" }); ChatMessage.create({
user: game.user.id,
whisper: [game.user.id],
content: "Un type de case doit être indiqué (par exemple sanctuaire, desert ou cité)"
});
return false; return false;
} }
TMRRencontres.selectRencontre(terrain);
const codeTerrain = Grammar.toLowerCaseNoAccent(terrain);
if (!roll || roll <= 0 || roll > 100) { if (!roll || roll <= 0 || roll > 100) {
roll = await RdDDice.rollTotal("1d100"); roll = await RdDDice.rollTotal("1d100");
} }
let rencontre = await TMRRencontres.getRencontreAleatoire(terrain, roll);
let rencontre = await TMRRencontres.getRencontreAleatoire({type: codeTerrain, coord:''}, roll);
ChatMessage.create({ ChatMessage.create({
user: game.user.id, user: game.user.id,
whisper: [game.user.id], whisper: [game.user.id],
@ -365,12 +373,12 @@ export class TMRRencontres {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async getRencontreAleatoire(terrain, roll = undefined) { static async getRencontreAleatoire(tmr, roll = undefined) {
if (!roll || roll <= 0 || roll > 100) { if (!roll || roll <= 0 || roll > 100) {
roll = await RdDDice.rollTotal("1d100"); roll = await RdDDice.rollTotal("1d100");
} }
terrain = Grammar.toLowerCaseNoAccent(terrain); const codeTerrain = Grammar.toLowerCaseNoAccent(tmr.type);
const code = tableRencontres[terrain].find(it => it.range[0] <= roll && roll <= it.range[1]).code; const code = tableRencontres[codeTerrain].find(it => it.range[0] <= roll && roll <= it.range[1]).code;
const rencontre = duplicate(rencontresStandard.find(it => it.code == code)); const rencontre = duplicate(rencontresStandard.find(it => it.code == code));
rencontre.roll = roll; rencontre.roll = roll;
await TMRRencontres.evaluerForceRencontre(rencontre); await TMRRencontres.evaluerForceRencontre(rencontre);
@ -390,7 +398,7 @@ export class TMRRencontres {
/* -------------------------------------------- */ /* -------------------------------------------- */
static async evaluerForceRencontre(rencontre) { static async evaluerForceRencontre(rencontre) {
const rollForce = new Roll(rencontre.force); const rollForce = new Roll(rencontre.force);
await rollForce.evaluate(); await rollForce.evaluate({ async: true });
rencontre.force = rollForce.total; rencontre.force = rollForce.total;
return rencontre.force; return rencontre.force;
} }