From c8526a22703ecbc0627e0deffce77eced24494d7 Mon Sep 17 00:00:00 2001 From: Vincent Vandemeulebrouck Date: Thu, 17 Nov 2022 01:22:45 +0100 Subject: [PATCH] =?UTF-8?q?Am=C3=A9lioration=20/tmrr?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - support des mauvaises rencontres avec /tmrr Mauvaise - recherche "intelligente": /tmrr ci pour lancer une rencontre en cité --- module/tmr-rencontres.js | 16 +++++----------- module/tmr-utility.js | 17 +++++++++++++++++ 2 files changed, 22 insertions(+), 11 deletions(-) diff --git a/module/tmr-rencontres.js b/module/tmr-rencontres.js index 14f94dc2..5c2f069f 100644 --- a/module/tmr-rencontres.js +++ b/module/tmr-rencontres.js @@ -15,21 +15,15 @@ export class TMRRencontres { * @param {*} forcedRoll */ static async rollRencontre(terrain, forcedRoll) { - // TODO: recherche parmi les types de terrains + mauvaise, rejet si plusieurs choix - const codeTerrain = Grammar.toLowerCaseNoAccent(terrain); - if (!terrain) { - 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; + terrain = TMRUtility.findTMRLike(terrain); + if (terrain == undefined) { + return undefined; } if (forcedRoll && (forcedRoll <= 0 || forcedRoll > 100)) { forcedRoll = undefined; } - + const codeTerrain = Grammar.toLowerCaseNoAccent(terrain) const table = await TMRRencontres.$buildTableRencontre(codeTerrain); const [selected, roll] = await TMRRencontres.$selectRencontre(codeTerrain, table, forcedRoll); const rencontre = await TMRRencontres.createRencontre(selected.rencontre); @@ -40,7 +34,7 @@ export class TMRRencontres { /* -------------------------------------------- */ static async $buildTableRencontre(codeTerrain) { let max = 0; - const items = await SystemCompendiums.getItems('rencontres'); + const items = await SystemCompendiums.getItems('rencontres', 'rencontre'); const filtreMauvaise = codeTerrain == 'mauvaise' ? it => it.system.mauvaiseRencontre : it => !it.system.mauvaiseRencontre; const rencontres = items.filter(it => it.type == 'rencontre') .filter(filtreMauvaise) diff --git a/module/tmr-utility.js b/module/tmr-utility.js index 22a66ac5..92b59377 100644 --- a/module/tmr-utility.js +++ b/module/tmr-utility.js @@ -286,6 +286,23 @@ export class TMRUtility { const tmr = TMRMapping[coord]; return Grammar.articleDetermine(tmr.type) + ' ' + tmr.label; } + + static findTMRLike(type, options = {inclusMauvaise:true}) { + const choix = [...Object.values(TMRType)] + if (options.inclusMauvaise){ + choix.push({name: 'Mauvaise'}); + } + const selection = Misc.findAllLike(type, choix).map(it => it.name); + if (selection.length == 0) { + ui.notifications.warn(`Un type de TMR doit être indiqué, '${type}' n'est pas trouvé dans ${choix}`); + return undefined; + } + if (selection.length > 1) { + ui.notifications.warn(`Plusieurs types de TMR pourraient correspondre à '${type}': ${selection}`); + return undefined; + } + return selection[0]; + } static typeTmrName(type) { return Misc.upperFirst(TMRType[Grammar.toLowerCaseNoAccent(type)].name);