diff --git a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs b/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs index 7f5cb57b..1ca72d2c 100644 --- a/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs +++ b/AideDeJeu/AideDeJeu/Tools/MarkdownExtensions.cs @@ -262,21 +262,14 @@ namespace AideDeJeu.Tools } else if(block is Markdig.Extensions.Tables.Table) { - var table = block as Markdig.Extensions.Tables.Table; - foreach(var blockrow in table) - { - var row = blockrow as Markdig.Extensions.Tables.TableRow; - foreach(var blockcell in row) - { - var cell = blockcell as Markdig.Extensions.Tables.TableCell; - foreach(var blockpar in cell) - { - var par = blockpar as Markdig.Syntax.ParagraphBlock; - Debug.WriteLine(par.ToParagraphString()); - } - - } - } + var tableBlock = block as Markdig.Extensions.Tables.Table; + var table = tableBlock.ToTable(); + monster.Strength = table["FOR"].FirstOrDefault(); + monster.Dexterity = table["DEX"].FirstOrDefault(); + monster.Constitution = table["CON"].FirstOrDefault(); + monster.Intelligence = table["INT"].FirstOrDefault(); + monster.Wisdom = table["SAG"].FirstOrDefault(); + monster.Charisma = table["CHA"].FirstOrDefault(); } } @@ -342,6 +335,37 @@ namespace AideDeJeu.Tools return str; } + public static Dictionary> ToTable(this Markdig.Extensions.Tables.Table tableBlock) + { + var table = new Dictionary>(); + var indexes = new Dictionary(); + foreach (var blockrow in tableBlock) + { + var row = blockrow as Markdig.Extensions.Tables.TableRow; + int indexCol = 0; + foreach (var blockcell in row) + { + var cell = blockcell as Markdig.Extensions.Tables.TableCell; + foreach (var blockpar in cell) + { + var par = blockpar as Markdig.Syntax.ParagraphBlock; + var name = par.ToParagraphString().Trim(); + if (row.IsHeader) + { + indexes[indexCol] = name; + table[name] = new List(); + } + else + { + table[indexes[indexCol]].Add(name); + } + } + indexCol++; + } + } + return table; + } + public static string ToMarkdownString(this IEnumerable spells) { var md = string.Empty; diff --git a/Data/monsters_hd.md b/Data/monsters_hd.md index 9ff35ba8..899900e2 100644 --- a/Data/monsters_hd.md +++ b/Data/monsters_hd.md @@ -80,7 +80,9 @@ Touché : 11 (2d8+3) dégâts contondants (constriction). Si la cible est une créature de taille M ou plus petite, elle est empoignée (évasion DD 14). L'abothid a deux tentacules dont chacun peut empoigner une cible. -**_Dard de langue._** Attaque d'arme au corps à corps (basée sur la Dextérité) : +7 pour toucher, allonge 1,50 m, une cible. Touché : 6 (1d6+2) dégâts perçants. +**_Dard de langue._** Attaque d'arme au corps à corps (basée sur la Dextérité) : +7 pour toucher, allonge 1,50 m, une cible. + +Touché : 6 (1d6+2) dégâts perçants. Si la cible est une créature humanoïde, elle doit réussir un jet de sauvegarde de Constitution (DD 14) sous peine d'être infectée par une maladie : l'injection d'un minuscule œuf d'abothid.