Liens jets de dés #737

Merged
uberwald merged 9 commits from VincentVk/foundryvtt-reve-de-dragon:v11 into v11 2025-01-12 16:15:34 +01:00
3 changed files with 21 additions and 4 deletions
Showing only changes of commit 551438f514 - Show all commits

View File

@ -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 journaux texte
- on peut ajouter des liens "jet de dés" dans les descriptions, notes, ... - 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" 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 - 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 ## 12.0.33 - la vieillesse d'Astrobazzarh
- retour de l'expérience pour les joueurs - retour de l'expérience pour les joueurs

View File

@ -3,6 +3,7 @@ import { RdDCarac } from "../rdd-carac.js";
import { SystemCompendiums } from "../settings/system-compendiums.js"; import { SystemCompendiums } from "../settings/system-compendiums.js";
import { RdDItemCompetence } from "../item-competence.js"; import { RdDItemCompetence } from "../item-competence.js";
import { ACTOR_TYPES } from "../item.js"; import { ACTOR_TYPES } from "../item.js";
import { RdDUtility } from "../rdd-utility.js";
const REGEXP_ROLL_CARAC_COMP = "(?<carac>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)(\\/(?<competence>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+))?(/(?<diff>[\\+\\-]?\\d+))?" const REGEXP_ROLL_CARAC_COMP = "(?<carac>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)(\\/(?<competence>[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+))?(/(?<diff>[\\+\\-]?\\d+))?"
const XREGEXP_ROLL_CARAC_COMP = XRegExp("@roll\\[" + REGEXP_ROLL_CARAC_COMP + "\\]", 'giu') 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 diff = event.currentTarget.attributes['data-diff']?.value
const path = RdDCarac.caracDetails(caracCode)?.path 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) actors.filter(it => foundry.utils.getProperty(it, path) != undefined)
.forEach(it => it.doRollCaracCompetence(caracCode, competence, diff)) .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) { constructor(text, competences) {
this.text = text this.text = text

View File

@ -77,7 +77,7 @@ export class RdDCarac {
static caracDetails(name) { static caracDetails(name) {
let entry = Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.code, description: 'caractéristique', onMessage: m => { } }) 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 entry
} }
return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' }) return Misc.findFirstLike(name, LIST_CARAC_ROLL, { mapper: it => it.label, description: 'caractéristique' })