diff --git a/changelog.md b/changelog.md index 6c9c2de4..3eeb282d 100644 --- a/changelog.md +++ b/changelog.md @@ -3,9 +3,14 @@ - on peut ajouter des liens "jet de dés" dans les journaux texte - on peut ajouter des liens "jet de dés" dans les descriptions, notes, ... - les liens "jet de dés" peuvent être utilisés pour un acteur, ou les items de l'acteurs -- les liens "jet de dés" d'un item non lié à un acteur agit sur les tokens sélectionnés +- les liens "jet avec caractéristiques" s'appliquent: + - à tous les tokens sélectionnés + - sinon, à l'acteur propriétaire d'un Item + - sinon, au personnage du joueur + - gestion des blocs secrets dans les descriptions -- on peut ajouter des liens "jet de dés" pour appeler une formule de foundry +- on peut ajouter des liens "jet de dés" pour appeler une formule dés de foundry + ## 12.0.33 - la vieillesse d'Astrobazzarh - retour de l'expérience pour les joueurs diff --git a/module/apps/rdd-text-roll.js b/module/apps/rdd-text-roll.js index bc99b087..bca89208 100644 --- a/module/apps/rdd-text-roll.js +++ b/module/apps/rdd-text-roll.js @@ -3,6 +3,7 @@ import { RdDCarac } from "../rdd-carac.js"; import { SystemCompendiums } from "../settings/system-compendiums.js"; import { RdDItemCompetence } from "../item-competence.js"; import { ACTOR_TYPES } from "../item.js"; +import { RdDUtility } from "../rdd-utility.js"; const REGEXP_ROLL_CARAC_COMP = "(?[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)(\\/(?[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+))?(/(?[\\+\\-]?\\d+))?" const XREGEXP_ROLL_CARAC_COMP = XRegExp("@roll\\[" + REGEXP_ROLL_CARAC_COMP + "\\]", 'giu') @@ -29,11 +30,22 @@ class TextRollCaracCompetence { const diff = event.currentTarget.attributes['data-diff']?.value const path = RdDCarac.caracDetails(caracCode)?.path - const actors = actor ? [actor] : canvas.tokens.controlled.map(it => it.actor).filter(it => it) + const actors = TextRollCaracCompetence.getSelectedActors(actor) actors.filter(it => foundry.utils.getProperty(it, path) != undefined) .forEach(it => it.doRollCaracCompetence(caracCode, competence, diff)) } } + static getSelectedActors(actor) { + const selected = canvas.tokens.controlled.map(it => it.actor).filter(it => it) + if (selected.length > 0){ + return selected + } + actor = actor ?? RdDUtility.getSelectedActor() + if (actor) { + return [actor] + } + return [] + } constructor(text, competences) { this.text = text diff --git a/module/rdd-carac.js b/module/rdd-carac.js index 76ad5b88..f5ad6b31 100644 --- a/module/rdd-carac.js +++ b/module/rdd-carac.js @@ -77,7 +77,7 @@ export class RdDCarac { static caracDetails(name) { let entry = Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.code, description: 'caractéristique', onMessage: m => { } }) - if (entry && entry.length > 0) { + if (entry) { return entry } return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' })