diff --git a/module/apps/rdd-import-stats.js b/module/apps/rdd-import-stats.js index db3180c1..262ee156 100644 --- a/module/apps/rdd-import-stats.js +++ b/module/apps/rdd-import-stats.js @@ -22,8 +22,8 @@ const compParser = { entite: XREGEXP_COMP_CREATURE } -const XREGEXP_SORT_VOIE = "[OHNT\\/]+" -const XREGEXP_SORT_NAME = "(?[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-']+)" +const XREGEXP_SORT_VOIE = "(?[OHNT](\\/[OHNT])*)" +const XREGEXP_SORT_NAME = "(?[^\\(]+)" const XREGEXP_SORT_CASE = "\\((?[A-Za-zÀ-ÖØ-öø-ÿ\\s\\-]+)\\)"; const XREGEXP_SORT = "(" + XREGEXP_SORT_VOIE @@ -216,7 +216,7 @@ export class RdDStatBlockParser { if (type == "personnage") { - await RdDStatBlockParser.parseHautReve(statString, items); + await RdDStatBlockParser.parseHautReve(statString, actorData, items); RdDStatBlockParser.parsePersonnage(statString, actorData); } @@ -228,7 +228,7 @@ export class RdDStatBlockParser { console.log(actorData); } - static async parseHautReve(statString, items) { + static async parseHautReve(statString, actorData, items) { let hautRevant = false; // Attemp to detect spell let sorts = await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-oniros"); @@ -236,9 +236,10 @@ export class RdDStatBlockParser { sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-narcos")); sorts = sorts.concat(await SystemCompendiums.getWorldOrCompendiumItems("sort", "sorts-thanatos")); - XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'giu'), + XRegExp.forEach(statString, XRegExp(XREGEXP_SORT, 'gu' /* keep case sensitive to match the spell draconic skill */), function (matchSort, i) { - let sort = sorts.find(s => Grammar.equalsInsensitive(s.name, matchSort.name)); + const sortName = Grammar.toLowerCaseNoAccent(matchSort.name).trim().replace("’", "'"); + let sort = sorts.find(s => Grammar.toLowerCaseNoAccent(s.name) == sortName) if (sort) { hautRevant = true; sort = sort.toObject(); @@ -247,6 +248,10 @@ export class RdDStatBlockParser { } items.push(sort); } + else{ + ui.notifications.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`) + console.warn(`Impossible de trouver le sort ${matchSort.name} / ${sortName}`) + } }); if (hautRevant) {