Corrections des tirages tmr/rencontres

- on n'affiche plus le compendium d'origine des rencontres dans le tchat
- utilisation de ChatMessageData#rolls (compat future v14)
- le résultat d'un d100 n'a pas à afficher de signe '%'
- utilistaion des types de TMR plutôt que les noms en minuscules
This commit is contained in:
Vincent Vandemeulebrouck 2024-11-28 00:43:39 +01:00
parent c6d64e09d5
commit 6af5a85dc1
5 changed files with 28 additions and 30 deletions

View File

@ -360,14 +360,15 @@ export class RdDCommands {
async getTMRAleatoire(msg, params) { async getTMRAleatoire(msg, params) {
if (params.length < 2) { if (params.length < 2) {
let type = params[0]; let type = params[0]
const tmr = await TMRUtility.getTMRAleatoire(type ? (it => it.type == type) : (it => true)); const solvedTerrain = TMRUtility.findTMRLike(type)?.type
return RdDCommands._chatAnswer(msg, `Case aléatoire: ${tmr.coord} - ${tmr.label}`); if (solvedTerrain){
const tmr = await TMRUtility.getTMRAleatoire(type ? (it => it.type == solvedTerrain) : (it => true))
return RdDCommands._chatAnswer(msg, `Case aléatoire: ${tmr.coord} - ${tmr.label}`)
}
} }
else {
return false; return false;
} }
}
async findTMR(msg, params) { async findTMR(msg, params) {
if (params && params.length > 0) { if (params && params.length > 0) {
@ -384,11 +385,11 @@ export class RdDCommands {
async tableRencontres(msg, params) { async tableRencontres(msg, params) {
if (params && params.length > 0) { if (params && params.length > 0) {
const search = Misc.join(params, ' '); const search = Misc.join(params, ' ');
const solvedTerrain = TMRUtility.findTMRLike(search); const solvedTerrain = TMRUtility.findTMRLike(search)
if (solvedTerrain == undefined) { if (solvedTerrain == undefined) {
return RdDCommands._chatAnswer(msg, 'Aucune TMR correspondant à ' + search); return RdDCommands._chatAnswer(msg, 'Aucune TMR correspondant à ' + search);
} }
return await game.system.rdd.rencontresTMR.chatTable(solvedTerrain); return await game.system.rdd.rencontresTMR.chatTable(solvedTMRType.name)
} }
return false; return false;
} }

View File

@ -284,23 +284,20 @@ export class CompendiumTableHelpers {
} }
/* -------------------------------------------- */ /* -------------------------------------------- */
static async tableRowToChatMessage(row, type = 'Item') { static async tableRowToChatMessage(row, type, options = {showSource: true}) {
if (!row) { if (!row) {
return; return;
} }
const percentages = (row.total == 100) ? '%' : ''
const flavorContent = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll.hbs', { const flavorContent = await renderTemplate('systems/foundryvtt-reve-de-dragon/templates/chat-compendium-table-roll.hbs', {
roll: row.roll, roll: row.roll,
document: row.document, document: row.document,
percentages,
typeName: Misc.typeName(type, row.document?.type ?? 'objet'), typeName: Misc.typeName(type, row.document?.type ?? 'objet'),
isGM: game.user.isGM, isGM: game.user.isGM,
options
}); });
const messageData = { const messageData = {
// flavor: flavorContent,
user: game.user.id, user: game.user.id,
type: CONST.CHAT_MESSAGE_TYPES.ROLL, rolls: [row.roll],
roll: row.roll,
sound: CONFIG.sounds.dice, sound: CONFIG.sounds.dice,
content: flavorContent content: flavorContent
}; };

View File

@ -26,22 +26,19 @@ export class TMRRencontres {
* @param {*} forcedRoll * @param {*} forcedRoll
*/ */
async rollRencontre(terrain, forcedRoll) { async rollRencontre(terrain, forcedRoll) {
terrain = TMRUtility.findTMRLike(terrain); const tmrType = TMRUtility.findTMRLike(terrain)?.type
if (terrain == undefined) { if (tmrType == undefined) {
return undefined; return undefined;
} }
if (forcedRoll && (forcedRoll <= 0 || forcedRoll > 100)) { if (forcedRoll && (forcedRoll <= 0 || forcedRoll > 100)) {
forcedRoll = undefined; forcedRoll = undefined;
} }
const codeTerrain = Grammar.toLowerCaseNoAccent(terrain) const filtreMauvaise = tmrType == 'mauvaise' ? it => it.system.mauvaiseRencontre : it => !it.system.mauvaiseRencontre;
const filtreMauvaise = codeTerrain == 'mauvaise' ? it => it.system.mauvaiseRencontre : it => !it.system.mauvaiseRencontre; const frequence = it => it.system.frequence[tmrType];
const frequence = it => it.system.frequence[codeTerrain];
const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll); const row = await this.table.getRandom(frequence, filtreMauvaise, forcedRoll);
if (row) { if (row) {
console.log("DORM", row); await CompendiumTableHelpers.tableRowToChatMessage(row, 'Item', {showSource: false});
//row.document.system.computedForce = new Roll(row.document.system.formula).roll({async: false}).total;
await CompendiumTableHelpers.tableRowToChatMessage(row);
} }
return row?.document; return row?.document;

View File

@ -284,18 +284,18 @@ export class TMRUtility {
static findTMRLike(type, options = { inclusMauvaise: true }) { static findTMRLike(type, options = { inclusMauvaise: true }) {
const choix = [...Object.values(TMRType)] const choix = [...Object.values(TMRType)]
if (options.inclusMauvaise) { if (options.inclusMauvaise) {
choix.push({ name: 'Mauvaise' }); choix.push({ name: 'Mauvaise', type: 'mauvaise'});
} }
const selection = Misc.findAllLike(type, choix).map(it => it.name); const selection = Misc.findAllLike(type, choix)
if (selection.length == 0) { if (selection.length == 0) {
ui.notifications.warn(`Un type de TMR doit être indiqué, '${type}' n'est pas trouvé dans ${choix}`); ui.notifications.warn(`Un type de TMR doit être indiqué, '${type}' n'est pas trouvé dans ${choix}`);
return undefined; return undefined
} }
if (selection.length > 1) { if (selection.length > 1) {
ui.notifications.warn(`Plusieurs types de TMR pourraient correspondre à '${type}': ${selection}`); ui.notifications.warn(`Plusieurs types de TMR pourraient correspondre à '${type}': ${selection.map(it => it.name)}`);
return undefined; return undefined;
} }
return selection[0]; return selection[0]
} }
static typeTmrName(type) { static typeTmrName(type) {
@ -320,7 +320,7 @@ export class TMRUtility {
/* -------------------------------------------- */ /* -------------------------------------------- */
static deplacement(coordOrig, moveName) { static deplacement(coordOrig, moveName) {
const tmrMove = TMR_MOVE[moveName]; const tmrMove = TMR_MOVE[moveName];
if (! tmrMove) { if (!tmrMove) {
ui.notifications.error(`Le déplacement dans les TMR '${moveName}' est inconnu`) ui.notifications.error(`Le déplacement dans les TMR '${moveName}' est inconnu`)
return coordOrig return coordOrig
} }

View File

@ -1,6 +1,9 @@
<h4>Tirage aléatoire: {{document.name}}</h4> <h4>Tirage aléatoire: {{document.name}}</h4>
<div>Tirage de {{typeName}} aléatoire depuis {{document.pack}}</div> <div>
<div>Jet {{roll.formula}} : {{roll.total}}{{percentages}}</div> Tirage de {{typeName}} aléatoire
{{#if options.showSource}} depuis {{document.pack}}{{/if}}
</div>
<div>Jet {{roll.formula}} : {{roll.total}}</div>
<hr> <hr>
<div> <div>
<img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" /> <img class="chat-icon" src="{{document.img}}" data-tooltip="{{document.name}}" />