1
0
Fork 0
mirror of https://github.com/Nioux/AideDeJeu.git synced 2026-02-04 07:33:24 +00:00

Refonte filtre de sorts

This commit is contained in:
Yan Maniez 2019-03-10 01:28:10 +01:00
parent 64eeee346d
commit 027c7b5677
695 changed files with 4316 additions and 2767 deletions

View file

@ -11,6 +11,8 @@ namespace AideDeJeuLib
public class FilteredItems : Items public class FilteredItems : Items
{ {
public string Family { get; set; }
[IgnoreDataMember] [IgnoreDataMember]
[YamlMember] [YamlMember]
public List<Item> SubItems public List<Item> SubItems

View file

@ -202,11 +202,11 @@ namespace AideDeJeuLib
{ "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) },
{ "Spells", typeof(Spells) }, { "Spells", typeof(Spells) },
{ "SpellsHD", typeof(SpellsHD) }, //{ "SpellsHD", typeof(SpellsHD) },
{ "SpellsVO", typeof(SpellsVO) }, //{ "SpellsVO", typeof(SpellsVO) },
{ "Equipment", typeof(Equipment) }, { "Equipment", typeof(Equipment) },
{ "Equipments", typeof(Equipments) }, { "Equipments", typeof(Equipments) },
{ "LinkItem", typeof(LinkItem) }, { "LinkItem", typeof(LinkItem) },

View file

@ -12,6 +12,7 @@ namespace AideDeJeuLib
{ {
public class Spell : Item public class Spell : Item
{ {
public string Family { get; set; }
public string Level { get; set; } public string Level { get; set; }
public string Type { get; set; } public string Type { get; set; }
public string Concentration { get; set; } public string Concentration { get; set; }

View file

@ -10,7 +10,7 @@ using System.Xml.Serialization;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
public class SpellHD : Spell //public class SpellHD : Spell
{ //{
} //}
} }

View file

@ -10,7 +10,7 @@ using System.Xml.Serialization;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
public class SpellVO : Spell //public class SpellVO : Spell
{ //{
} //}
} }

View file

@ -1,12 +1,37 @@
using System; using AideDeJeu.ViewModels;
using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Runtime.Serialization; using System.Runtime.Serialization;
using System.Text; using System.Text;
using YamlDotNet.Serialization; using YamlDotNet.Serialization;
using System.Linq;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
public class Spells : FilteredItems public class Spells : FilteredItems
{ {
public string Classes { get; set; }
public string Levels { get; set; }
public string Schools { get; set; }
public string Rituals { 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()
{
return new SpellFilterViewModel(Family,
Split(Classes),
Split(Levels),
Split(Schools),
Split(Rituals),
Split(Sources)
);
}
}
} }
}

View file

@ -1,15 +1,78 @@
using AideDeJeu.ViewModels; using AideDeJeu.ViewModels;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Text; using System.Linq;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
public class SpellsHD : Spells /* 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() public override FilterViewModel GetNewFilterViewModel()
{ {
return new HDSpellFilterViewModel(); 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

@ -5,11 +5,11 @@ using System.Text;
namespace AideDeJeuLib namespace AideDeJeuLib
{ {
public class SpellsVO : Spells //public class SpellsVO : Spells
{ //{
public override FilterViewModel GetNewFilterViewModel() // //public override FilterViewModel GetNewFilterViewModel()
{ // //{
return new VOSpellFilterViewModel(); // // return new SpellFilterViewModel();
} // //}
} //}
} }

View file

@ -5,7 +5,6 @@ using System.Linq;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
using System.Windows.Input; using System.Windows.Input;
using static AideDeJeu.ViewModels.StoreViewModel;
namespace AideDeJeu.ViewModels namespace AideDeJeu.ViewModels
{ {
@ -178,7 +177,7 @@ namespace AideDeJeu.ViewModels
#region Spells #region Spells
public abstract class SpellFilterViewModel : FilterViewModel public class SpellFilterViewModel : FilterViewModel
{ {
private IEnumerable<Filter> _Filters = null; private IEnumerable<Filter> _Filters = null;
public override IEnumerable<Filter> Filters public override IEnumerable<Filter> Filters
@ -191,7 +190,7 @@ namespace AideDeJeu.ViewModels
{ {
new Filter() { Key = FilterKeys.Class, Name = "Classe", KeyValues = Classes, _Index = 0 }, new Filter() { Key = FilterKeys.Class, Name = "Classe", KeyValues = Classes, _Index = 0 },
new Filter() { Key = FilterKeys.MinLevel, Name = "Niveau Minimum", KeyValues = Niveaux, _Index = 0 }, new Filter() { Key = FilterKeys.MinLevel, Name = "Niveau Minimum", KeyValues = Niveaux, _Index = 0 },
new Filter() { Key = FilterKeys.MaxLevel, Name = "Niveau Maximum", KeyValues = Niveaux, _Index = 9 }, new Filter() { Key = FilterKeys.MaxLevel, Name = "Niveau Maximum", KeyValues = Niveaux, _Index = 0 },
new Filter() { Key = FilterKeys.School, Name = "École", KeyValues = Ecoles, _Index = 0 }, new Filter() { Key = FilterKeys.School, Name = "École", KeyValues = Ecoles, _Index = 0 },
new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 }, new Filter() { Key = FilterKeys.Ritual, Name = "Rituel", KeyValues = Rituels, _Index = 0 },
new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 }, new Filter() { Key = FilterKeys.Source, Name = "Source", KeyValues = Sources, _Index = 0 },
@ -202,6 +201,68 @@ namespace AideDeJeu.ViewModels
} }
} }
public string Family { get; set; }
public SpellFilterViewModel(
string family,
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.Family = family;
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);
if (level.StartsWith("Level ")) return level.Substring(6);
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.Spells.Where(spell =>
spell.Family == this.Family &&
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 async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default) //public override async Task<IEnumerable<Item>> FilterItems(IEnumerable<Item> items, CancellationToken token = default)
//{ //{
// return await Task.Run(() => // return await Task.Run(() =>
@ -234,18 +295,19 @@ namespace AideDeJeu.ViewModels
//} //}
public abstract List<KeyValuePair<string, string>> Classes { get; } public List<KeyValuePair<string, string>> Classes { get; }
public abstract List<KeyValuePair<string, string>> Niveaux { get; } public List<KeyValuePair<string, string>> Niveaux { get; }
public abstract List<KeyValuePair<string, string>> Ecoles { get; } public List<KeyValuePair<string, string>> Ecoles { get; }
public abstract List<KeyValuePair<string, string>> Rituels { get; } public List<KeyValuePair<string, string>> Rituels { get; }
public abstract List<KeyValuePair<string, string>> Sources { get; } public List<KeyValuePair<string, string>> Sources { get; }
} }
/*
public class VFSpellFilterViewModel : SpellFilterViewModel public class VFSpellFilterViewModel : SpellFilterViewModel
{ {
public override Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken cancellationToken = default) public override Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken cancellationToken = default)
@ -400,12 +462,33 @@ namespace AideDeJeu.ViewModels
public class HDSpellFilterViewModel : SpellFilterViewModel 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) public override async Task<IEnumerable<Item>> GetFilteredItemsAsync(CancellationToken token = default)
{ {
var levelComparer = new LevelComparer(); var levelComparer = new LevelComparer();
var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? ""; var classe = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Class).SelectedKey ?? "";
var niveauMin = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey ?? "0"; var niveauMin = LevelConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MinLevel).SelectedKey) ?? "0";
var niveauMax = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey ?? "9"; var niveauMax = LevelConverter(Filters.SingleOrDefault(filter => filter.Key == FilterKeys.MaxLevel).SelectedKey) ?? "9";
var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? ""; var ecole = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.School).SelectedKey ?? "";
var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? ""; var ritual = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Ritual).SelectedKey ?? "";
var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? ""; var source = Filters.SingleOrDefault(filter => filter.Key == FilterKeys.Source).SelectedKey ?? "";
@ -490,7 +573,7 @@ namespace AideDeJeu.ViewModels
new KeyValuePair<string, string>("(SRD", "SRD"), new KeyValuePair<string, string>("(SRD", "SRD"),
new KeyValuePair<string, string>("(MDR", "MDR (H&D)"), new KeyValuePair<string, string>("(MDR", "MDR (H&D)"),
}; };
} }*/
#endregion Spells #endregion Spells
#region Monsters #region Monsters

View file

@ -460,9 +460,9 @@ namespace AideDeJeu.ViewModels
public DbSet<MagicItem> MagicItems { get; set; } public DbSet<MagicItem> MagicItems { get; set; }
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<SpellHD> SpellsHD { 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; }
@ -486,8 +486,9 @@ namespace AideDeJeu.ViewModels
base.OnModelCreating(modelBuilder); base.OnModelCreating(modelBuilder);
modelBuilder.Entity<MonstersHD>(); modelBuilder.Entity<MonstersHD>();
modelBuilder.Entity<MonstersVO>(); modelBuilder.Entity<MonstersVO>();
modelBuilder.Entity<SpellsHD>(); //modelBuilder.Entity<SpellsHD>().HasBaseType<Spells>();
modelBuilder.Entity<SpellsVO>(); //modelBuilder.Entity<SpellsVO>().HasBaseType<Spells>();
modelBuilder.Entity<Spells>();
modelBuilder.Entity<Equipments>(); modelBuilder.Entity<Equipments>();
modelBuilder.Entity<MagicItems>(); modelBuilder.Entity<MagicItems>();
} }

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Abjuration Type: Abjuration
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Invocation Type: Invocation
CastingTime: 10 minutes CastingTime: 10 minutes

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Nécromancie Type: Nécromancie
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Illusion Type: Illusion
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Invocation Type: Invocation
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Transmutation Type: Transmutation
CastingTime: 1 action bonus CastingTime: 1 action bonus

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Évocation Type: Évocation
CastingTime: 1 action bonus CastingTime: 1 action bonus

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 9 Level: 9
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: tour de magie Level: tour de magie
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Illusion Type: Illusion
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: tour de magie Level: tour de magie
Type: Divination Type: Divination
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Divination Type: Divination
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: tour de magie Level: tour de magie
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Illusion Type: Illusion
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 8 Level: 8
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 8 Level: 8
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Divination Type: Divination
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Illusion Type: Illusion
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Abjuration Type: Abjuration
CastingTime: 1 réaction à effectuer lorsque vous êtes touché par une attaque ou un sort de _[projectile magique](hd_spells_projectile_magique.md)_ CastingTime: 1 réaction à effectuer lorsque vous êtes touché par une attaque ou un sort de _[projectile magique](hd_spells_projectile_magique.md)_

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Abjuration Type: Abjuration
CastingTime: 1 action bonus CastingTime: 1 action bonus

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: tour de magie Level: tour de magie
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 7 Level: 7
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 7 Level: 7
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Invocation Type: Invocation
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Abjuration Type: Abjuration
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 8 Level: 8
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 9 Level: 9
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 7 Level: 7
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Divination Type: Divination
CastingTime: 10 minutes CastingTime: 10 minutes

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 8 Level: 8
Type: Nécromancie Type: Nécromancie
CastingTime: 1 heure CastingTime: 1 heure

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Enchantement Type: Enchantement
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Invocation Type: Invocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Divination Type: Divination
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Divination Type: Divination
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Divination Type: Divination
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Enchantement Type: Enchantement
CastingTime: 1 minute CastingTime: 1 minute

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Divination Type: Divination
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Évocation Type: Évocation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Enchantement Type: Enchantement
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: tour de magie Level: tour de magie
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Divination Type: Divination
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Nécromancie Type: Nécromancie
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Évocation Type: Évocation
CastingTime: 10 minutes CastingTime: 10 minutes

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 3 Level: 3
Type: Abjuration Type: Abjuration
CastingTime: 1 réaction à utiliser quand vous voyez une créature située dans un rayon de 18 mètres autour de vous lancer un sort CastingTime: 1 réaction à utiliser quand vous voyez une créature située dans un rayon de 18 mètres autour de vous lancer un sort

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 4 Level: 4
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 8 Level: 8
Type: Transmutation Type: Transmutation
CastingTime: 10 minutes CastingTime: 10 minutes

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 6 Level: 6
Type: Invocation Type: Invocation
Ritual: rituel Ritual: rituel

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 5 Level: 5
Type: Abjuration Type: Abjuration
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 2 Level: 2
Type: Transmutation Type: Transmutation
CastingTime: 1 action CastingTime: 1 action

View file

@ -1,5 +1,6 @@
--- ---
!SpellHD !Spell
Family: SpellHD
Level: 1 Level: 1
Type: Illusion Type: Illusion
CastingTime: 1 action CastingTime: 1 action

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