1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2025-10-29 22:45:44 +00:00

Refonte filtres monstres

This commit is contained in:
Yan Maniez 2019-03-11 22:13:55 +01:00
parent 479f8b5dc2
commit 170252a158
684 changed files with 4088 additions and 3210 deletions

View file

@ -13,6 +13,14 @@ namespace AideDeJeuLib
{ {
public string Family { get; set; } public string Family { get; set; }
public List<KeyValuePair<string, string>> Split(string collapsed)
{
if (collapsed == null) return new List<KeyValuePair<string, string>>();
var split = collapsed.Split(new string[] { "|" }, StringSplitOptions.None).Select(s => new KeyValuePair<string, string>(s, s)).ToList();
split.Insert(0, new KeyValuePair<string, string>("", "-"));
return split;
}
[IgnoreDataMember] [IgnoreDataMember]
[YamlMember] [YamlMember]
public List<Item> SubItems public List<Item> SubItems

View file

@ -196,11 +196,11 @@ namespace AideDeJeuLib
{ {
{ "Generic", typeof(Generic) }, { "Generic", typeof(Generic) },
{ "Monster", typeof(Monster) }, { "Monster", typeof(Monster) },
{ "MonsterHD", typeof(MonsterHD) }, //{ "MonsterHD", typeof(MonsterHD) },
{ "MonsterVO", typeof(MonsterVO) }, //{ "MonsterVO", typeof(MonsterVO) },
{ "Monsters", typeof(Monsters) }, { "Monsters", typeof(Monsters) },
{ "MonstersHD", typeof(MonstersHD) }, //{ "MonstersHD", typeof(MonstersHD) },
{ "MonstersVO", typeof(MonstersVO) }, //{ "MonstersVO", typeof(MonstersVO) },
{ "Spell", typeof(Spell) }, { "Spell", typeof(Spell) },
//{ "SpellHD", typeof(SpellHD) }, //{ "SpellHD", typeof(SpellHD) },
//{ "SpellVO", typeof(SpellVO) }, //{ "SpellVO", typeof(SpellVO) },

View file

@ -12,6 +12,7 @@ namespace AideDeJeuLib
{ {
public class Monster : Item public class Monster : Item
{ {
public string Family { get; set; }
public string Type { get; set; } public string Type { get; set; }
public string Size { get; set; } public string Size { get; set; }
public string Alignment { get; set; } public string Alignment { get; set; }

View file

@ -1,16 +0,0 @@
using AideDeJeu;
using AideDeJeu.Tools;
using Markdig.Syntax;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Xml;
namespace AideDeJeuLib
{
public class MonsterHD : Monster
{
}
}

View file

@ -1,16 +0,0 @@
using AideDeJeu;
using AideDeJeu.Tools;
using Markdig.Syntax;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Xml;
namespace AideDeJeuLib
{
public class MonsterVO : Monster
{
}
}

View file

@ -1,4 +1,5 @@
using System; using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Text;
@ -6,5 +7,19 @@ namespace AideDeJeuLib
{ {
public class Monsters : FilteredItems public class Monsters : FilteredItems
{ {
public string Types { get; set; }
public string Challenges { get; set; }
public string Sizes { get; set; }
public string Sources { get; set; }
public override FilterViewModel GetNewFilterViewModel()
{
return new MonsterFilterViewModel(Family,
Split(Types),
Split(Challenges),
Split(Sizes),
Split(Sources)
);
}
} }
} }

View file

@ -1,15 +0,0 @@
using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace AideDeJeuLib
{
public class MonstersHD : Monsters
{
public override FilterViewModel GetNewFilterViewModel()
{
return new HDMonsterFilterViewModel();
}
}
}

View file

@ -1,15 +0,0 @@
using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace AideDeJeuLib
{
public class MonstersVO : Monsters
{
public override FilterViewModel GetNewFilterViewModel()
{
return new VOMonsterFilterViewModel();
}
}
}

View file

@ -1,16 +0,0 @@
using AideDeJeu.Tools;
using Markdig.Syntax;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
namespace AideDeJeuLib
{
//public class SpellHD : Spell
//{
//}
}

View file

@ -1,16 +0,0 @@
using AideDeJeu.Tools;
using Markdig.Syntax;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text.RegularExpressions;
using System.Xml;
using System.Xml.Serialization;
namespace AideDeJeuLib
{
//public class SpellVO : Spell
//{
//}
}

View file

@ -16,13 +16,6 @@ namespace AideDeJeuLib
public string Rituals { get; set; } public string Rituals { get; set; }
public string Sources { get; set; } public string Sources { get; set; }
public List<KeyValuePair<string, string>> Split(string collapsed)
{
if (collapsed == null) return new List<KeyValuePair<string, string>>();
var split = collapsed.Split(new string[] { ", " }, StringSplitOptions.None).Select(s => new KeyValuePair<string, string>(s, s)).ToList();
split.Insert(0, new KeyValuePair<string, string>("", "-"));
return split;
}
public override FilterViewModel GetNewFilterViewModel() public override FilterViewModel GetNewFilterViewModel()
{ {
return new SpellFilterViewModel(Family, return new SpellFilterViewModel(Family,
@ -34,4 +27,4 @@ namespace AideDeJeuLib
); );
} }
} }
} }

View file

@ -1,78 +0,0 @@
using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic;
using System.Linq;
namespace AideDeJeuLib
{
/* public class SpellsHD : Spells
{
public List<KeyValuePair<string, string>> Split(string collapsed)
{
return collapsed.Split(new string[] { ", " }, StringSplitOptions.None).Select(s => new KeyValuePair<string, string>(s,s)).ToList();
}
public override FilterViewModel GetNewFilterViewModel()
{
return new HDSpellFilterViewModel(ParentName,
Split(Classes),
Split(Levels),
Split(Schools),
Split(Rituals),
Split(Sources)
//new List<KeyValuePair<string, string>>(){
// new KeyValuePair<string, string>("", "Toutes" ),
// new KeyValuePair<string, string>("Barde", "Barde" ),
// new KeyValuePair<string, string>("Clerc", "Clerc" ),
// new KeyValuePair<string, string>("Druide", "Druide" ),
// new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ),
// new KeyValuePair<string, string>("Magicien", "Magicien" ),
// new KeyValuePair<string, string>("Ombrelame", "Ombrelame" ),
// new KeyValuePair<string, string>("Paladin", "Paladin" ),
// new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ),
// new KeyValuePair<string, string>("Sorcier", "Sorcier" ),
//},
//new List<KeyValuePair<string, string>>()
//{
// new KeyValuePair<string, string>("0", "Sorts mineurs"),
// new KeyValuePair<string, string>("1", "Niveau 1"),
// new KeyValuePair<string, string>("2", "Niveau 2"),
// new KeyValuePair<string, string>("3", "Niveau 3"),
// new KeyValuePair<string, string>("4", "Niveau 4"),
// new KeyValuePair<string, string>("5", "Niveau 5"),
// new KeyValuePair<string, string>("6", "Niveau 6"),
// new KeyValuePair<string, string>("7", "Niveau 7"),
// new KeyValuePair<string, string>("8", "Niveau 8"),
// new KeyValuePair<string, string>("9", "Niveau 9"),
//},
//new List<KeyValuePair<string, string>>()
//{
// new KeyValuePair<string, string>("", "Toutes"),
// new KeyValuePair<string, string>("abjuration", "Abjuration"),
// new KeyValuePair<string, string>("divination", "Divination"),
// new KeyValuePair<string, string>("enchantement", "Enchantement"),
// new KeyValuePair<string, string>("évocation", "Évocation"),
// new KeyValuePair<string, string>("illusion", "Illusion"),
// new KeyValuePair<string, string>("invocation", "Invocation"),
// new KeyValuePair<string, string>("cromancie", "Nécromancie"),
// new KeyValuePair<string, string>("transmutation", "Transmutation"),
//},
//new List<KeyValuePair<string, string>>()
//{
// new KeyValuePair<string, string>("", "Tous"),
// new KeyValuePair<string, string>("rituel", "Rituel"),
//},
//new List<KeyValuePair<string, string>>()
//{
// new KeyValuePair<string, string>("", "Toutes"),
// new KeyValuePair<string, string>("(SRD", "SRD"),
// new KeyValuePair<string, string>("(MDR", "MDR (H&D)"),
//}
);
}
}*/
}

View file

@ -1,15 +0,0 @@
using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic;
using System.Text;
namespace AideDeJeuLib
{
//public class SpellsVO : Spells
//{
// //public override FilterViewModel GetNewFilterViewModel()
// //{
// // return new SpellFilterViewModel();
// //}
//}
}

View file

@ -202,6 +202,7 @@ namespace AideDeJeu.ViewModels
} }
public string Family { get; set; } public string Family { get; set; }
public SpellFilterViewModel( public SpellFilterViewModel(
string family, string family,
List<KeyValuePair<string, string>> classes, List<KeyValuePair<string, string>> classes,
@ -262,39 +263,7 @@ namespace AideDeJeu.ViewModels
StoreViewModel.SemaphoreLibrary.Release(); StoreViewModel.SemaphoreLibrary.Release();
} }
} }
//public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
//{
// return await Task.Run(() =>
// {
// var levelComparer = new LevelComparer();
// var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
// var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
// var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
// var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
// var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
// var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
// //token.ThrowIfCancellationRequested();
// return items.Where(item =>
// {
// var spell = item as Spell;
// return
// levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
// levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
// spell.Type.ToLower().Contains(ecole.ToLower()) &&
// (spell.Source != null && spell.Source.Contains(source)) &&
// (spell.Classes != null && spell.Classes.Contains(classe)) &&
// (string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
// (
// (Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
// (Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
// );
// }).OrderBy(spell => spell.Name)
// .AsEnumerable();
// }, token);
//}
public List<KeyValuePair<string, string>> Classes { get; } public List<KeyValuePair<string, string>> Classes { get; }
public List<KeyValuePair<string, string>> Niveaux { get; } public List<KeyValuePair<string, string>> Niveaux { get; }
@ -306,278 +275,11 @@ namespace AideDeJeu.ViewModels
public List<KeyValuePair<string, string>> Sources { get; } public List<KeyValuePair<string, string>> Sources { get; }
} }
/*
public class VFSpellFilterViewModel : SpellFilterViewModel
{
public override Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken cancellationToken = default)
{
throw new System.NotImplementedException();
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes" ),
new KeyValuePair<string, string>("Barde", "Barde" ),
new KeyValuePair<string, string>("Clerc", "Clerc" ),
new KeyValuePair<string, string>("Druide", "Druide" ),
new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ),
new KeyValuePair<string, string>("Magicien", "Magicien" ),
new KeyValuePair<string, string>("Paladin", "Paladin" ),
new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ),
new KeyValuePair<string, string>("Sorcier", "Sorcier" ),
};
public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("0", "Sorts mineurs"),
new KeyValuePair<string, string>("1", "Niveau 1"),
new KeyValuePair<string, string>("2", "Niveau 2"),
new KeyValuePair<string, string>("3", "Niveau 3"),
new KeyValuePair<string, string>("4", "Niveau 4"),
new KeyValuePair<string, string>("5", "Niveau 5"),
new KeyValuePair<string, string>("6", "Niveau 6"),
new KeyValuePair<string, string>("7", "Niveau 7"),
new KeyValuePair<string, string>("8", "Niveau 8"),
new KeyValuePair<string, string>("9", "Niveau 9"),
};
public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes"),
new KeyValuePair<string, string>("abjuration", "Abjuration"),
new KeyValuePair<string, string>("divination", "Divination"),
new KeyValuePair<string, string>("enchantement", "Enchantement"),
new KeyValuePair<string, string>("évocation", "Évocation"),
new KeyValuePair<string, string>("illusion", "Illusion"),
new KeyValuePair<string, string>("invocation", "Invocation"),
new KeyValuePair<string, string>("cromancie", "Nécromancie"),
new KeyValuePair<string, string>("transmutation", "Transmutation"),
};
public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Tous"),
new KeyValuePair<string, string>("rituel", "Rituel"),
};
public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes"),
new KeyValuePair<string, string>("(SRD", "SRD"),
};
}
public class VOSpellFilterViewModel : SpellFilterViewModel
{
public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{
var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0";
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
try
{
await StoreViewModel.SemaphoreLibrary.WaitAsync();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.SpellsVO.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}
catch
{
return new List<Item>();
}
finally
{
StoreViewModel.SemaphoreLibrary.Release();
}
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "All" ),
new KeyValuePair<string, string>("Bard", "Bard" ),
new KeyValuePair<string, string>("Cleric", "Cleric" ),
new KeyValuePair<string, string>("Druid", "Druid" ),
new KeyValuePair<string, string>("Sorcerer", "Sorcerer" ),
new KeyValuePair<string, string>("Paladin", "Paladin" ),
new KeyValuePair<string, string>("Ranger", "Ranger" ),
new KeyValuePair<string, string>("Warlock", "Warlock" ),
new KeyValuePair<string, string>("Wizard", "Wizard" ),
};
public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("0", "Sorts mineurs"),
new KeyValuePair<string, string>("1", "Level 1"),
new KeyValuePair<string, string>("2", "Level 2"),
new KeyValuePair<string, string>("3", "Level 3"),
new KeyValuePair<string, string>("4", "Level 4"),
new KeyValuePair<string, string>("5", "Level 5"),
new KeyValuePair<string, string>("6", "Level 6"),
new KeyValuePair<string, string>("7", "Level 7"),
new KeyValuePair<string, string>("8", "Level 8"),
new KeyValuePair<string, string>("9", "Level 9"),
};
public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "All"),
new KeyValuePair<string, string>("abjuration", "Abjuration"),
new KeyValuePair<string, string>("conjuration", "Conjuration"),
new KeyValuePair<string, string>("divination", "Divination"),
new KeyValuePair<string, string>("enchantment", "Enchantment"),
new KeyValuePair<string, string>("evocation", "Evocation"),
new KeyValuePair<string, string>("illusion", "Illusion"),
new KeyValuePair<string, string>("necromancy", "Necromancy"),
new KeyValuePair<string, string>("transmutation", "Transmutation"),
};
public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "All"),
new KeyValuePair<string, string>("(ritual)", "Ritual"),
};
public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "All"),
new KeyValuePair<string, string>("(SRD", "SRD"),
};
}
public class HDSpellFilterViewModel : SpellFilterViewModel
{
public HDSpellFilterViewModel(
string parent,
List<KeyValuePair<string, string>> classes,
List<KeyValuePair<string, string>> levels,
List<KeyValuePair<string, string>> schools,
List<KeyValuePair<string, string>> rituals,
List<KeyValuePair<string, string>> sources)
{
this.Classes = classes;
this.Niveaux = levels;
this.Ecoles = schools;
this.Rituels = rituals;
this.Sources = sources;
}
public string LevelConverter(string level)
{
if (level == "-") return null;
if (level.StartsWith("Niveau ")) return level.Substring(7);
return "0";
}
public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{
var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = LevelConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey) ?? "0";
var niveauMax = LevelConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey) ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
try
{
await StoreViewModel.SemaphoreLibrary.WaitAsync();
using (var context = await StoreViewModel.GetLibraryContextAsync())
{
return context.SpellsHD.Where(spell =>
levelComparer.Compare(spell.Level, niveauMin) >= 0 &&
levelComparer.Compare(spell.Level, niveauMax) <= 0 &&
spell.Type.ToLower().Contains(ecole.ToLower()) &&
(spell.Source != null && spell.Source.Contains(source)) &&
(spell.Classes != null && spell.Classes.Contains(classe)) &&
(string.IsNullOrEmpty(ritual) || (spell.Ritual != null && spell.Ritual.Contains(ritual))) &&
(
(Helpers.RemoveDiacritics(spell.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(spell.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)).OrderBy(spell => spell.Name).ToList();
}
}
catch
{
return new List<Item>();
}
finally
{
StoreViewModel.SemaphoreLibrary.Release();
}
}
public override List<KeyValuePair<string, string>> Classes { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes" ),
new KeyValuePair<string, string>("Barde", "Barde" ),
new KeyValuePair<string, string>("Clerc", "Clerc" ),
new KeyValuePair<string, string>("Druide", "Druide" ),
new KeyValuePair<string, string>("Ensorceleur", "Ensorceleur" ),
new KeyValuePair<string, string>("Magicien", "Magicien" ),
new KeyValuePair<string, string>("Ombrelame", "Ombrelame" ),
new KeyValuePair<string, string>("Paladin", "Paladin" ),
new KeyValuePair<string, string>("Rôdeur", "Rôdeur" ),
new KeyValuePair<string, string>("Sorcier", "Sorcier" ),
};
public override List<KeyValuePair<string, string>> Niveaux { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("0", "Sorts mineurs"),
new KeyValuePair<string, string>("1", "Niveau 1"),
new KeyValuePair<string, string>("2", "Niveau 2"),
new KeyValuePair<string, string>("3", "Niveau 3"),
new KeyValuePair<string, string>("4", "Niveau 4"),
new KeyValuePair<string, string>("5", "Niveau 5"),
new KeyValuePair<string, string>("6", "Niveau 6"),
new KeyValuePair<string, string>("7", "Niveau 7"),
new KeyValuePair<string, string>("8", "Niveau 8"),
new KeyValuePair<string, string>("9", "Niveau 9"),
};
public override List<KeyValuePair<string, string>> Ecoles { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes"),
new KeyValuePair<string, string>("abjuration", "Abjuration"),
new KeyValuePair<string, string>("divination", "Divination"),
new KeyValuePair<string, string>("enchantement", "Enchantement"),
new KeyValuePair<string, string>("évocation", "Évocation"),
new KeyValuePair<string, string>("illusion", "Illusion"),
new KeyValuePair<string, string>("invocation", "Invocation"),
new KeyValuePair<string, string>("cromancie", "Nécromancie"),
new KeyValuePair<string, string>("transmutation", "Transmutation"),
};
public override List<KeyValuePair<string, string>> Rituels { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Tous"),
new KeyValuePair<string, string>("rituel", "Rituel"),
};
public override List<KeyValuePair<string, string>> Sources { get; } = new List<KeyValuePair<string, string>>()
{
new KeyValuePair<string, string>("", "Toutes"),
new KeyValuePair<string, string>("(SRD", "SRD"),
new KeyValuePair<string, string>("(MDR", "MDR (H&D)"),
};
}*/
#endregion Spells #endregion Spells
#region Monsters #region Monsters
public abstract class MonsterFilterViewModel : FilterViewModel public class MonsterFilterViewModel : FilterViewModel
{ {
private IEnumerable<Filter> _Filters = null; private IEnumerable<Filter> _Filters = null;
public override IEnumerable<Filter> Filters public override IEnumerable<Filter> Filters
@ -591,7 +293,7 @@ namespace AideDeJeu.ViewModels
//new Filter() { Key = FilterKeys.Category, Name = "Catégories", KeyValues = Categories, _Index = 0 }, //new Filter() { Key = FilterKeys.Category, Name = "Catégories", KeyValues = Categories, _Index = 0 },
new Filter() { Key = FilterKeys.Type, Name = "Type", KeyValues = Types, _Index = 0 }, new Filter() { Key = FilterKeys.Type, Name = "Type", KeyValues = Types, _Index = 0 },
new Filter() { Key = FilterKeys.MinPower, Name = "FP Minimum", KeyValues = Powers, _Index = 0 }, new Filter() { Key = FilterKeys.MinPower, Name = "FP Minimum", KeyValues = Powers, _Index = 0 },
new Filter() { Key = FilterKeys.MaxPower, Name = "FP Maximum", KeyValues = Powers, _Index = 28 }, new Filter() { Key = FilterKeys.MaxPower, Name = "FP Maximum", KeyValues = Powers, _Index = 0 },
new Filter() { Key = FilterKeys.Size, Name = "Taille", KeyValues = Sizes, _Index = 0 }, new Filter() { Key = FilterKeys.Size, Name = "Taille", KeyValues = Sizes, _Index = 0 },
//new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, _Index = 0 }, //new Filter() { Key = FilterKeys.Legendary, Name = "Légendaire", KeyValues = Legendaries, _Index = 0 },
new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
@ -602,64 +304,82 @@ namespace AideDeJeu.ViewModels
} }
} }
//public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) public string Family { get; set; }
//{
// return await Task.Run(() =>
// {
// var powerComparer = new PowerComparer();
// //var category = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Category).SelectedKey ?? ""; public MonsterFilterViewModel(
// var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? ""; string family,
// //token.ThrowIfCancellationRequested(); List<KeyValuePair<string, string>> types,
List<KeyValuePair<string, string>> challenges,
List<KeyValuePair<string, string>> sizes,
List<KeyValuePair<string, string>> sources)
{
this.Family = family;
this.Types = types;
this.Powers = challenges;
this.Sizes = sizes;
this.Sources = sources;
}
// var minPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey ?? "0 (0 PX)"; public List<KeyValuePair<string, string>> Categories { get; }
// //token.ThrowIfCancellationRequested();
// var maxPower = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey ?? "30 (155000 PX)"; public List<KeyValuePair<string, string>> Types { get; }
// //token.ThrowIfCancellationRequested();
// var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? ""; public List<KeyValuePair<string, string>> Powers { get; }
// //token.ThrowIfCancellationRequested();
// //var legendary = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Legendary).SelectedKey ?? "";
// var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; public List<KeyValuePair<string, string>> Sizes { get; }
// token.ThrowIfCancellationRequested();
// return items.Where(item => public List<KeyValuePair<string, string>> Legendaries { get; }
// {
// var monster = item as Monster;
// return
// monster != null &&
// monster.Type.Contains(type) &&
// (string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
// (string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
// powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
// powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
// (
// (Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
// (Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
// );
// })
// .OrderBy(monster => monster.Name)
// .AsEnumerable();
// }, token);
//} public List<KeyValuePair<string, string>> Sources { get; }
public abstract List<KeyValuePair<string, string>> Categories { get; } public string ChallengeConverter(string challenge)
{
if (challenge == "") return null;
return challenge;
}
public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{
var powerComparer = new PowerComparer();
public abstract List<KeyValuePair<string, string>> Types { get; } var type = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Type).SelectedKey ?? "";
var minPower = ChallengeConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinPower).SelectedKey) ?? "0 (0 PX)";
var maxPower = ChallengeConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxPower).SelectedKey) ?? "30 (155000 PX)";
var size = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Size).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
token.ThrowIfCancellationRequested();
public abstract List<KeyValuePair<string, string>> Powers { get; } try
{
public abstract List<KeyValuePair<string, string>> Sizes { get; } await StoreViewModel.SemaphoreLibrary.WaitAsync();
using (var context = await StoreViewModel.GetLibraryContextAsync())
public abstract List<KeyValuePair<string, string>> Legendaries { get; } {
return context.Monsters.Where(monster =>
public abstract List<KeyValuePair<string, string>> Sources { get; } monster != null &&
monster.Family == this.Family &&
monster.Type.Contains(type) &&
(string.IsNullOrEmpty(size) || monster.Size.Equals(size)) &&
(string.IsNullOrEmpty(source) || (monster.Source != null && monster.Source.Contains(source))) &&
powerComparer.Compare(monster.Challenge, minPower) >= 0 &&
powerComparer.Compare(monster.Challenge, maxPower) <= 0 &&
(
(Helpers.RemoveDiacritics(monster.Name).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower())) ||
(Helpers.RemoveDiacritics(monster.AltNameText ?? string.Empty).ToLower().Contains(Helpers.RemoveDiacritics(SearchText ?? string.Empty).ToLower()))
)
).OrderBy(monster => monster.Name).ToList();
}
}
catch
{
return new List<Item>();
}
finally
{
StoreViewModel.SemaphoreLibrary.Release();
}
}
} }
/*
public class VFMonsterFilterViewModel : MonsterFilterViewModel public class VFMonsterFilterViewModel : MonsterFilterViewModel
{ {
@ -1004,7 +724,7 @@ namespace AideDeJeu.ViewModels
new KeyValuePair<string, string>("(SRD", "SRD"), new KeyValuePair<string, string>("(SRD", "SRD"),
new KeyValuePair<string, string>("(CEO", "CEO (H&D)"), new KeyValuePair<string, string>("(CEO", "CEO (H&D)"),
}; };
} }*/
#endregion Monsters #endregion Monsters
#region Equipments #region Equipments

View file

@ -462,9 +462,9 @@ namespace AideDeJeu.ViewModels
public DbSet<Spell> Spells { get; set; } public DbSet<Spell> Spells { get; set; }
public DbSet<Monster> Monsters { get; set; } public DbSet<Monster> Monsters { get; set; }
//public DbSet<Spell> Spells { get; set; } //public DbSet<Spell> Spells { get; set; }
public DbSet<MonsterHD> MonstersHD { get; set; } //public DbSet<MonsterHD> MonstersHD { get; set; }
//public DbSet<SpellVO> SpellsVO { get; set; } //public DbSet<SpellVO> SpellsVO { get; set; }
public DbSet<MonsterVO> MonstersVO { get; set; } //public DbSet<MonsterVO> MonstersVO { get; set; }
public DbSet<RaceItem> Races { get; set; } public DbSet<RaceItem> Races { get; set; }
public DbSet<ClassItem> Classes { get; set; } public DbSet<ClassItem> Classes { get; set; }
public DbSet<SubRaceItem> SubRaces { get; set; } public DbSet<SubRaceItem> SubRaces { get; set; }
@ -485,8 +485,8 @@ namespace AideDeJeu.ViewModels
protected override void OnModelCreating(ModelBuilder modelBuilder) protected override void OnModelCreating(ModelBuilder modelBuilder)
{ {
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MonstersHD>(); modelBuilder.Entity<Monsters>();
modelBuilder.Entity<MonstersVO>(); //modelBuilder.Entity<MonstersVO>();
//modelBuilder.Entity<SpellsHD>().HasBaseType<Spells>(); //modelBuilder.Entity<SpellsHD>().HasBaseType<Spells>();
//modelBuilder.Entity<SpellsVO>().HasBaseType<Spells>(); //modelBuilder.Entity<SpellsVO>().HasBaseType<Spells>();
modelBuilder.Entity<Spells>(); modelBuilder.Entity<Spells>();

View file

@ -363,8 +363,8 @@ namespace AideDeJeuCmd
var itemsSRD = await context.Items.Where(item => (item.Source != null && item.Source.Contains("SRD"))).ToListAsync(); var itemsSRD = await context.Items.Where(item => (item.Source != null && item.Source.Contains("SRD"))).ToListAsync();
var monsters = await context.Monsters.ToListAsync(); var monsters = await context.Monsters.ToListAsync();
var monstersHD = await context.MonstersHD.ToListAsync(); //var monstersHD = await context.MonstersHD.ToListAsync();
var monstersVO = await context.MonstersVO.ToListAsync(); //var monstersVO = await context.MonstersVO.ToListAsync();
var spells = await context.Spells.ToListAsync(); var spells = await context.Spells.ToListAsync();
var classes = await context.Classes.ToListAsync(); var classes = await context.Classes.ToListAsync();
var races = await context.Races.ToListAsync(); var races = await context.Races.ToListAsync();

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: G Size: G
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: M Size: M
Alignment: loyal mauvais Alignment: loyal mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement Alignment: n'importe quel alignement

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: P Size: P
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: neutre bon Alignment: neutre bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Mort-vivant Type: Mort-vivant
Size: M Size: M
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: M Size: M
Alignment: loyal mauvais Alignment: loyal mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: Loyal Neutre Alignment: Loyal Neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Plante Type: Plante
Size: TG Size: TG
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Plante Type: Plante
Size: P Size: P
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement Alignment: n'importe quel alignement

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature artificielle Type: Créature artificielle
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement autre que Bon Alignment: n'importe quel alignement autre que Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Élémentaire Type: Élémentaire
Size: M Size: M
Alignment: Loyal Neutre Alignment: Loyal Neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: M Size: M
Alignment: neutre Alignment: neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: P Size: P
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (démon) Type: Fiélon (démon)
Size: TG Size: TG
Alignment: Chaotique Mauvais Alignment: Chaotique Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement autre que Loyal Alignment: n'importe quel alignement autre que Loyal

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: TG Size: TG
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement Chaotique Alignment: n'importe quel alignement Chaotique

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Mort-vivant Type: Mort-vivant
Size: M Size: M
Alignment: Chaotique Mauvais Alignment: Chaotique Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement autre que Loyal Alignment: n'importe quel alignement autre que Loyal

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: Neutre Bon Alignment: Neutre Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: P Size: P
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (gobelinoïde) Type: Humanoïde (gobelinoïde)
Size: P Size: P
Alignment: neutre mauvais Alignment: neutre mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (demi-orc) Type: Humanoïde (demi-orc)
Size: M Size: M
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: Loyal Bon Alignment: Loyal Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Humanoïde (n'importe quelle race) Type: Humanoïde (n'importe quelle race)
Size: M Size: M
Alignment: n'importe quel alignement Alignment: n'importe quel alignement

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: M Size: M
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fée Type: Fée
Size: M Size: M
Alignment: Loyal Bon Alignment: Loyal Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: G Size: G
Alignment: Chaotique Mauvais Alignment: Chaotique Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: neutre Alignment: neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: G Size: G
Alignment: Chaotique Mauvais Alignment: Chaotique Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse Type: Créature monstrueuse
Size: P Size: P
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Céleste Type: Céleste
Size: M Size: M
Alignment: Loyal Bon Alignment: Loyal Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TP Size: TP
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Plante Type: Plante
Size: M Size: M
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Bête Type: Bête
Size: TG Size: TG
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Vase Type: Vase
Size: G Size: G
Alignment: non-alignée Alignment: non-alignée

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon Type: Fiélon
Size: G Size: G
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Céleste Type: Céleste
Size: M Size: M
Alignment: Loyal Bon Alignment: Loyal Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: G Size: G
Alignment: Neutre Mauvais Alignment: Neutre Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: M Size: M
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: M Size: M
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: G Size: G
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: M Size: M
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: G Size: G
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: G Size: G
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable, métamorphe) Type: Fiélon (diable, métamorphe)
Size: TP Size: TP
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Fiélon (diable) Type: Fiélon (diable)
Size: G Size: G
Alignment: Loyal Mauvais Alignment: Loyal Mauvais

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Aberration Type: Aberration
Size: G Size: G
Alignment: Chaotique Neutre Alignment: Chaotique Neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Élémentaire Type: Élémentaire
Size: G Size: G
Alignment: Chaotique Bon Alignment: Chaotique Bon

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Créature monstrueuse (métamorphe) Type: Créature monstrueuse (métamorphe)
Size: M Size: M
Alignment: neutre Alignment: neutre

View file

@ -1,5 +1,6 @@
--- ---
!MonsterHD !Monster
Family: MonsterHD
Type: Dragon Type: Dragon
Size: TG Size: TG
Alignment: Chaotique Mauvais Alignment: Chaotique Mauvais

Some files were not shown because too many files have changed in this diff Show more