/** * Enricher qui permet de transformer un texte en un lien de lancer de dés * Pour une syntaxe de type @jet[x]{y}(z) avec x la caractéristique, y le titre et z l'avantage * x de type rob, dex, int, per, vol pour les caractéristiques * et de type oeil, verbe, san, bourse, magie pour les ressources * y est le titre du jet et permet de décrire l'action * z est l'avantage du jet, avec pour valeurs possibles : --, -, +, ++ */ export function setupTextEnrichers() { CONFIG.TextEditor.enrichers = CONFIG.TextEditor.enrichers.concat([ { // eslint-disable-next-line no-useless-escape pattern: /\@jet\[(.+?)\]{(.*?)}\((.*?)\)/gm, enricher: async (match, options) => { const a = document.createElement("a") a.classList.add("ask-roll-journal") const target = match[1] const title = match[2] const avantage = match[3] let type = "resource" if (["rob", "dex", "int", "per", "vol"].includes(target)) { type = "save" } let rollAvantage = "normal" if (avantage) { switch (avantage) { case "++": rollAvantage = "++" break case "+": rollAvantage = "+" break case "-": rollAvantage = "-" break case "--": rollAvantage = "--" break default: break } } a.dataset.rollType = type a.dataset.rollTarget = target a.dataset.rollTitle = title a.dataset.rollAvantage = rollAvantage a.innerHTML = ` ${getLibelle(target)}${rollAvantage !== "normal" ? rollAvantage : ""} ` return a }, }, ]) } const mapLibelles = { rob: "ROB", dex: "DEX", int: "INT", per: "PER", vol: "VOL", oeil: "OEIL", verbe: "VERBE", san: "SANTE MENTALE", bourse: "BOURSE", magie: "MAGIE", } /** * Retourne le libellé associé à la valeur qui sera affiché dans le journal * @param {string} value */ function getLibelle(value) { if (mapLibelles[value]) { return mapLibelles[value] } return null }