Глобальный рефакторинг пространств имён
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Действие.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Action)]
|
||||
public class Action : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Количество действий.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Количество действий")]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Unknown;
|
||||
|
||||
/// <summary>
|
||||
/// Категория действия.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Категория действия")]
|
||||
public ActionCategory Category { get; set; } = ActionCategory.Unknown;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.AncestryRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Родословная.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Ancestry)]
|
||||
public class Ancestry : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Размеры родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Размеры родословной")]
|
||||
public SizeEnum[] Size { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Количество очков здоровья.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Количество очков здоровья")]
|
||||
public int Hp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Скорость передвижения.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Скорость передвижения")]
|
||||
public int Speed { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип зрения.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Тип зрения")]
|
||||
public VisionEnum VisionEnum { get; set; } = VisionEnum.Normal;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция повышениий аттрибутов.
|
||||
/// </summary>
|
||||
public ICollection<AncestryBoost> AncestryBoosts { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция сущностей родословной.
|
||||
/// </summary>
|
||||
public ICollection<AncestryItem> AncestryItems { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция языков родословной.
|
||||
/// </summary>
|
||||
public ICollection<AncestryLanguage> AncestryLanguages { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция наследий.
|
||||
/// </summary>
|
||||
public ICollection<Heritage> Heritages { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,47 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.AncestryRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент набора повышений атрибутов для родословной.
|
||||
/// </summary>
|
||||
public class AncestryBoost
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор элемента.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор родословной, к которой относится этот элемент.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор родословной")]
|
||||
public int AncestryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Указывает, является ли этот элемент повышением атрибута. Если <c>false</c> - это снижение атрибута.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Флаг повышения/снижения")]
|
||||
public bool Boost { get; set; } = true;
|
||||
|
||||
/// <summary>
|
||||
/// Значение атрибута, которое повышается или понижается в этом элементе набора повышений атрибутов.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Значение атрибута")]
|
||||
public Enum.AttributeValues Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Родословная, к которой относится этот элемент набора повышений атрибутов.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Ancestry Ancestry { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,43 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.AncestryRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь между родословной и сущностью.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(AncestryId), nameof(ItemId))]
|
||||
public class AncestryItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор родословной")]
|
||||
public int AncestryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор сущности, связанной с родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор связанной сущности")]
|
||||
public int ItemId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень сущности в родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Уровень сущности в родословной")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Родословная, к которой относится сущность.
|
||||
/// </summary>
|
||||
public Ancestry Ancestry { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Сущность, связанная с родословной.
|
||||
/// </summary>
|
||||
public Entity Item { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.AncestryRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь между родословной и языком.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(AncestryId), nameof(LanguageId))]
|
||||
public class AncestryLanguage
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор родословной, к которой относится язык.
|
||||
/// </summary>
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор родословной")]
|
||||
public int AncestryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор языка, связанного с родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор связанного языка")]
|
||||
public int LanguageId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Является ли язык дополнительным для родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Флаг дополнительного")]
|
||||
public bool IsAdditional { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Родословная, к которой относится язык.
|
||||
/// </summary>
|
||||
public Ancestry Ancestry { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Язык, связанный с родословной.
|
||||
/// </summary>
|
||||
public Language Language { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Архетип.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Archetype)]
|
||||
public class Archetype : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Уровень")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор способности, которая является посвящением в архетип.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("ID посвящения")]
|
||||
public int? DedicationFeatId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация об архетипе.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Посвящение в архетип.
|
||||
/// </summary>
|
||||
public Feat DedicationFeat { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Способности архетипа.
|
||||
/// </summary>
|
||||
public ICollection<Feat> Feats { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,22 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ArchetypeRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь между архетипом и его чертами.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(ArchetypeId), nameof(FeatId))]
|
||||
public class ArchetypeFeats
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор архетипа, к которому относится черта.
|
||||
/// </summary>
|
||||
[Comment("Идентификатор архетипа")]
|
||||
public int ArchetypeId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор черты, связанной с архетипом.
|
||||
/// </summary>
|
||||
[Comment("Идентификатор черты")]
|
||||
public int FeatId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.BackgroundRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Предыстория.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Background)]
|
||||
public class Background : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибуты предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundBoost> BackgroundBoosts { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Способности предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundItem> BackgroundItems { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Навыки предыстории.
|
||||
/// </summary>
|
||||
public ICollection<BackgroundTraining> BackgroundSkills { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.BackgroundRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент набора атрибутов для предыстории.
|
||||
/// </summary>
|
||||
public class BackgroundBoost
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор элемента набора атрибутов для предыстории.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор предыстории, к которой относится этот элемент набора атрибутов.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор предыстории")]
|
||||
public int BackgroundId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Атрибут, к которому относится этот элемент набора атрибутов для предыстории.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Атрибут")]
|
||||
public AttributeValues Attribute { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Предыстория, к которой относится этот элемент набора атрибутов.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Background Background { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,44 @@
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Base;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.BackgroundRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент предыстории, который может быть способностью, навыком или другим элементом, связанным с предысторией.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(BackgroundId), nameof(EntityId))]
|
||||
public class BackgroundItem
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор элемента предыстории.
|
||||
/// </summary>
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int BackgroundId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор сущности, связанной с предысторией.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор сущности")]
|
||||
public int EntityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень элемента предыстории, если применимо. Может быть null, если уровень не указан или не применим.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
public int? Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Предыстория, к которой относится сущность.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Background Background { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Сущность, связанная с предысторией.
|
||||
/// </summary>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Common;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.BackgroundRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент набора связей между предысторией и тренируемым навыком.
|
||||
/// </summary>
|
||||
public class BackgroundTraining
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор элемента набора связей между предысторией и тренируемым навыком.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор предыстории, к которой относится тренировка.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор предыстории")]
|
||||
public int BackgroundId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор тренируемого навыка.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Идентификатор тренируемого навыка")]
|
||||
public int TrainingId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ранг тренировки, который получает персонаж при выборе данной предыстории.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Ранг тренировки")]
|
||||
public TrainingRank Rank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Предыстория, к которой относится тренировка.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Background Background { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тренируемый навык, который получает персонаж при выборе данной предыстории.
|
||||
/// </summary>
|
||||
public Training Training { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,73 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Класс.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Class)]
|
||||
public class Class : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Количество очков здоровья.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Количество очков здоровья")]
|
||||
public int Hp { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Указание на тип заклинательства.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Тип заклинательства")]
|
||||
public SpellcastingType Spellcasting { get; set; } = SpellcastingType.None;
|
||||
|
||||
/// <summary>
|
||||
/// Традиция заклинаний класса.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Традиция заклинаний")]
|
||||
public SpellTradition? Tradition { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Количество дополнительных навыков.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Дополнительные навыки")]
|
||||
public int AdditionalTrainedSkills { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Аттрибуты класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassKeyAttribute> ClassKeyAbilities { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Прогрессия класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassProgression> ClassProgressions { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Навыки класса.
|
||||
/// </summary>
|
||||
public virtual ICollection<ClassTraining> ClassTrainings { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Группы подклассов.
|
||||
/// </summary>
|
||||
public virtual ICollection<SubclassGroup> SubclassGroups { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Набор ключевых атрибутов класса.
|
||||
/// </summary>
|
||||
public class ClassKeyAttribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор ключевого атрибута класса.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор класса, к которому относится ключевой атрибут.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор класса")]
|
||||
public int ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ключевой атрибут класса.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Атрибут")]
|
||||
public AttributeValues Value { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Класс, к которому относится ключевой атрибут.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Class Class { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,62 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент прогрессии класса.
|
||||
/// </summary>
|
||||
public class ClassProgression
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор прогрессии класса.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор класса, к которому относится элемент прогрессии.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор класса")]
|
||||
public int ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень класса, на котором элемент прогрессии доступен.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Уровень класса")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип элемента прогрессии класса.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Тип элемента прогрессии класса")]
|
||||
public ClassProgressionType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор сущности, связанной с элементом прогрессии класса (например, навык, атрибут и т.д.).
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Идентификатор сущности")]
|
||||
public int? EntityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Класс, к которому относится элемент прогрессии.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Class Class { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Сущность, связанная с элементом прогрессии класса (например, навык, атрибут и т.д.).
|
||||
/// </summary>
|
||||
public Entity? Entity { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,55 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Newtonsoft.Json;
|
||||
using Pf2e.Database.Model.Common;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Набор элементов, связывающий класс и тренируемый навык.
|
||||
/// </summary>
|
||||
public class ClassTraining
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор набора элементов, связывающий класс и тренируемый навык.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор класса, к которому относится тренировка.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор класса")]
|
||||
public int ClassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор тренируемого навыка, к которому относится тренировка.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Идентификатор тренируемого навыка")]
|
||||
public int? TrainingId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ранг тренировки, определяющий уровень владения навыком.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Ранг тренировки")]
|
||||
public TrainingRank Rank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Класс, к которому относится тренировка.
|
||||
/// </summary>
|
||||
[JsonIgnore]
|
||||
public Class Class { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тренируемый навык, к которому относится тренировка.
|
||||
/// </summary>
|
||||
public Training? Training { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,20 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент, связывающий сущность с подклассом.
|
||||
/// </summary>
|
||||
[PrimaryKey(nameof(SubclassId), nameof(EntityId))]
|
||||
public class SubclassProvidedEntities
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор подкласса, к которому относится сущность.
|
||||
/// </summary>
|
||||
public int SubclassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор сущности, предоставляемой подклассом.
|
||||
/// </summary>
|
||||
public int EntityId { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Common;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь между подклассами и тренировками.
|
||||
/// </summary>
|
||||
public class SubclassTrainings
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор связи между подклассом и тренировкой.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор связи")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор подкласса, к которому относится тренировка.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор подкласса")]
|
||||
public int SubclassId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор тренировки, связанной с подклассом.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Идентификатор тренировки")]
|
||||
public int TrainingId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ранг тренировки для данного подкласса.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Ранг тренировки")]
|
||||
public TrainingRank Rank { get; set; } = TrainingRank.Trained;
|
||||
|
||||
/// <summary>
|
||||
/// Подкласс, к которому относится тренировка.
|
||||
/// </summary>
|
||||
public Subclass Subclass { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тренировка, связанная с подклассом.
|
||||
/// </summary>
|
||||
public Training Training { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,38 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Состояние.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Condition)]
|
||||
public class Condition : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Группа состояния.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Группа состояния")]
|
||||
public ConditionGroup? Group { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Common;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Божество.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Deity)]
|
||||
public class Deity : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип божества.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Тип божества")]
|
||||
public DeityType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Категория божества.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Категория божества")]
|
||||
public string Category { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип божественный силы.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Тип божественной силы")]
|
||||
public DeityFonts Fonts { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип освящения.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Тип освящения")]
|
||||
public DeitySanctification Sanctification { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Обязательное освящение.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Обязательное освящение")]
|
||||
public bool SanctificationMust { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Заветы божества.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Заветы божества")]
|
||||
public LocaleString Edicts { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Анафемы божества.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Анафемы божества")]
|
||||
public LocaleString Anathema { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Религиозный символ божества.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Религиозный символ божества")]
|
||||
public LocaleString ReligiousSymbol { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Священное животное божества.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
[Comment("Священное животное божества")]
|
||||
public LocaleString SacredAnimal { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Область покровительства божества.
|
||||
/// </summary>
|
||||
[Column(Order = 11)]
|
||||
[Comment("Область покровительства божества")]
|
||||
public LocaleString AreaOfConcern { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Атрибуты божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityAttribute> DeityAttributes { get; set; } = new List<DeityAttribute>();
|
||||
|
||||
/// <summary>
|
||||
/// Домены божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityDomain> DeityDomains { get; set; } = new List<DeityDomain>();
|
||||
|
||||
/// <summary>
|
||||
/// Заклинания божества.
|
||||
/// </summary>
|
||||
public ICollection<DeitySpell> DeitySpells { get; set; } = new List<DeitySpell>();
|
||||
|
||||
/// <summary>
|
||||
/// Оружия божества.
|
||||
/// </summary>
|
||||
public ICollection<DeityWeapon> DeityWeapons { get; set; } = new List<DeityWeapon>();
|
||||
|
||||
/// <summary>
|
||||
/// Категория божества (связь).
|
||||
/// </summary>
|
||||
public DeityCategory? CategoryEntity { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор категории божества.
|
||||
/// </summary>
|
||||
[Column(Order = 12)]
|
||||
[Comment("Идентификатор категории божества")]
|
||||
public int? CategoryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Навыки божества.
|
||||
/// </summary>
|
||||
public ICollection<Training> Skills { get; set; } = new List<Training>();
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Категория божества.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.DeityCategory)]
|
||||
public class DeityCategory : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Описание категории.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Описание категории")]
|
||||
public LocaleString Description { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент отношения божества и атрибута.
|
||||
/// </summary>
|
||||
public class DeityAttribute
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор божества.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор божества")]
|
||||
public int DeityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Атрибут божества.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Атрибут божества")]
|
||||
public AttributeValues Attribute { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Божество, к которому относится атрибут.
|
||||
/// </summary>
|
||||
public Deity Deity { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,59 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Structure;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Элемент отношения божества и домена.
|
||||
/// </summary>
|
||||
public class DeityDomain
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор отношения божества и домена.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор божества, к которому относится домен.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор божества")]
|
||||
public int DeityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор домена.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Идентификатор домена")]
|
||||
public int DomainId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, является ли домен основным для божества.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Флаг основного домена")]
|
||||
public bool IsPrimary { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Значение домена божества, например, "Свет", "Тьма" и т.д.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
public string Value { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Божество, к которому относится домен.
|
||||
/// </summary>
|
||||
public virtual Deity Deity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Домен, связанный с божеством.
|
||||
/// </summary>
|
||||
public virtual Domain Domain { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,51 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь божества и заклинания.
|
||||
/// </summary>
|
||||
public class DeitySpell
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор связи божества и заклинания.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор божества, к которому относится заклинание.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор божества")]
|
||||
public int DeityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Уровень заклинания")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор заклинания, связанного с божеством.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Идентификатор заклинания")]
|
||||
public int SpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Божество, к которому относится заклинание.
|
||||
/// </summary>
|
||||
public virtual Deity Deity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание, связанное с божеством.
|
||||
/// </summary>
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Связь божества с оружием.
|
||||
/// </summary>
|
||||
public class DeityWeapon
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор связи божества с оружием.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор божества, к которому относится оружие.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор божества")]
|
||||
public int DeityId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Название оружия, связанного с божеством. Будет изменено на идентификатор оружия в будущем, когда будет реализована система оружия.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(Pf2eDbContext.NameLength)]
|
||||
[Comment("Название оружия")]
|
||||
public string Weapon { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Божество, к которому относится оружие.
|
||||
/// </summary>
|
||||
public virtual Deity Deity { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,78 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.DeityRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Домен.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Domain)]
|
||||
public class Domain : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор заклинания домена.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Заклинание домена")]
|
||||
public int DomainSpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор продвинутого заклинания домена.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Продвинутое заклинание домена")]
|
||||
public int AdvancedDomainSpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор апокрифического заклинания домена.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Апокрифическое заклинание домена")]
|
||||
public int? ApocryphalSpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор продвинутого апокрифического заклинания домена.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Продвинутое апокрифическое заклинание домена")]
|
||||
public int? AdvancedApocryphalSpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание домена.
|
||||
/// </summary>
|
||||
public virtual Spell DomainSpell { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Продвинутое заклинание домена.
|
||||
/// </summary>
|
||||
public virtual Spell AdvancedDomainSpell { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Апокрифическое заклинание домена.
|
||||
/// </summary>
|
||||
public virtual Spell? ApocryphalSpell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продвинутое апокрифическое заклинание домена.
|
||||
/// </summary>
|
||||
public virtual Spell? AdvancedApocryphalSpell { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Связи с божествами, которые используют этот домен.
|
||||
/// </summary>
|
||||
public virtual ICollection<DeityDomain> DeityDomains { get; set; } = new List<DeityDomain>();
|
||||
}
|
||||
@@ -0,0 +1,63 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.FeatRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Способность.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Feat)]
|
||||
public class Feat : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Категория способности.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Категория способности")]
|
||||
public FeatCategory Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень способности.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Уровень способности")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Количество действий, необходимых для применения фита.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Количество действий")]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Other;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public string? Extra { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Архетипы, которые могут использовать эту способность.
|
||||
/// </summary>
|
||||
public ICollection<Archetype> Archetypes { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Требования к получению способности.
|
||||
/// </summary>
|
||||
public ICollection<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.FeatRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Предварительное требование для черты.
|
||||
/// </summary>
|
||||
public class FeatPrerequisite
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор предварительного требования для чериы.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор черты, к которой относится предварительное требование.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор черты")]
|
||||
public int FeatId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Предварительное требование для черты.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Предварительное требование")]
|
||||
public string Value { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Черта, к которой относится предварительное требование.
|
||||
/// </summary>
|
||||
public virtual Feat Feat { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Наследие.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Heritage)]
|
||||
public class Heritage : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор родословной.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор родословной")]
|
||||
public int? AncestryId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Родословная.
|
||||
/// </summary>
|
||||
public Ancestry? Ancestry { get; set; }
|
||||
}
|
||||
@@ -0,0 +1,24 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Язык.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Language)]
|
||||
public class Language : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,134 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.RitualRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Ритуал.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Ritual)]
|
||||
public class Ritual : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Уровень ритуала")]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Продолжительность ритуала в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Продолжительность ритуала в секундах")]
|
||||
public int CastTime { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Время действия эффекта ритуала в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Время действия эффекта ритуала в секундах")]
|
||||
public int Duration { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Элементы ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Элементы ритуала")]
|
||||
public ElementEnum[] Elements { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Дальнность ритуала в футах.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Дальнность ритуала")]
|
||||
public int Range { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ранг основной проверки.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Ранг основной проверки")]
|
||||
public TrainingRank PrimaryCheckRank { get; set; } = TrainingRank.Trained;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация об основной проверки.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Дополнительная информация об основной проверки")]
|
||||
public LocaleString? PrimaryCheckSuffix { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Количество дополнительных заклинателей, необходимых для ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Количество дополнительных заклинателей")]
|
||||
public int SecondaryCasters { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Максимальное количество дополнительных заклинателей, необходимых для ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
[Comment("Максимальное количество дополнительных заклинателей")]
|
||||
public int SecondaryCastersMax { get; set; } = 0;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация о дополнительных заклинателях.
|
||||
/// </summary>
|
||||
[Column(Order = 11)]
|
||||
[Comment("Дополнительная информация о дополнительных заклинателях")]
|
||||
public LocaleString? SecondaryCastersSuffix { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая дальность ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 12)]
|
||||
[Comment("Дальность ритуала")]
|
||||
public LocaleString? RangeString { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая цель ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 13)]
|
||||
[Comment("Цель ритуала")]
|
||||
public LocaleString? Target { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая стоимость ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 14)]
|
||||
[Comment("Стоимость ритуала")]
|
||||
public LocaleString? Cost { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Строка, описывающая требования к ритуалу.
|
||||
/// </summary>
|
||||
[Column(Order = 15)]
|
||||
[Comment("Требования к ритуалу")]
|
||||
public LocaleString? Requirement { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция областей ритуала.
|
||||
/// </summary>
|
||||
public RitualArea? Area { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция проверок ритуала.
|
||||
/// </summary>
|
||||
public ICollection<RitualCheck> Checks { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.RitualRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Область действия ритуала.
|
||||
/// </summary>
|
||||
public class RitualArea
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор ритуала, к которому относится область действия.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор ритуала")]
|
||||
public int RitualId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Описание области действия ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Описание области действия ритуала")]
|
||||
public LocaleString? Details { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип области действия ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Тип области действия ритуала")]
|
||||
public SpellAreaType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ритуал, к которому относится область действия.
|
||||
/// </summary>
|
||||
public virtual Ritual Ritual { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,68 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Common;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.RitualRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Проверка для ритуала.
|
||||
/// </summary>
|
||||
public class RitualCheck
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор проверки ритуала.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор ритуала, к которому относится проверка.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор ритуала")]
|
||||
public int RitualId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор тренировки, связанной с проверкой ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Идентификатор тренировки")]
|
||||
public int? TrainingId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Дополнение к проверке.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Дополнение к проверке")]
|
||||
public LocaleString? TrainingString { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Ранг тренировки, связанной с проверкой ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Ранг тренировки")]
|
||||
public TrainingRank Rank { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, является ли проверка основной для ритуала.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Флаг основной проверки")]
|
||||
public bool IsPrimary { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Ритуал, к которому относится проверка.
|
||||
/// </summary>
|
||||
public Ritual Ritual { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тренировка, связанная с проверкой ритуала.
|
||||
/// </summary>
|
||||
public Training? Training { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,53 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Правило.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Rule)]
|
||||
public class Rule : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Порядок отображения.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Порядок отображения")]
|
||||
public int Order { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор родительского правила.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Родительского правило")]
|
||||
public int? ParentId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Родительское правило.
|
||||
/// </summary>
|
||||
public Rule? Parent { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дочерние правила.
|
||||
/// </summary>
|
||||
public ICollection<Rule> Children { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Хлебные крошки для отображения в интерфейсе.
|
||||
/// </summary>
|
||||
public string[] Breadcrumbs { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.SpellRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Spell)]
|
||||
public class Spell : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Уровень заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
public int Level { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Является ли заклинание фокусом.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Фокус?")]
|
||||
public bool IsFocus { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Количество действий, необходимых для применения заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Количество действий")]
|
||||
public ActionEnum Actions { get; set; } = ActionEnum.Other;
|
||||
|
||||
/// <summary>
|
||||
/// Время длительности заклинания в секундах.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Время длительности заклинания")]
|
||||
public int? Duration { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Дальность заклинания в футах.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[Comment("Дальность заклинания")]
|
||||
public int Range { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Традиции заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Традиции заклинания")]
|
||||
public SpellTradition[] Traditions { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Элементы заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[Comment("Элементы заклинания")]
|
||||
public ElementEnum[] Elements { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Триггер заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[Comment("Триггер заклинания")]
|
||||
public LocaleString? Trigger { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Цель заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 10)]
|
||||
[Comment("Цель заклинания")]
|
||||
public LocaleString? Target { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Стоимость заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 11)]
|
||||
[Comment("Стоимость заклинания")]
|
||||
public LocaleString? Cost { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Требования к заклинанию.
|
||||
/// </summary>
|
||||
[Column(Order = 12)]
|
||||
[Comment("Требования к заклинанию")]
|
||||
public LocaleString? Requirement { get; set; } = null;
|
||||
|
||||
/*
|
||||
[Column(Order = 4)]
|
||||
public bool Counteraction { get; set; }
|
||||
|
||||
[Column(Order = 5)]
|
||||
public bool Sustained { get; set; }
|
||||
|
||||
[Column(Order = 7)]
|
||||
[MaxLength(255)]
|
||||
public string Range { get; set; } = null!;
|
||||
|
||||
[Column(Order = 8)]
|
||||
[MaxLength(255)]
|
||||
public string Requirements { get; set; } = null!;
|
||||
|
||||
[Column(Order = 9)]
|
||||
[MaxLength(255)]
|
||||
public string Target { get; set; } = null!;
|
||||
|
||||
[Column(Order = 10)]
|
||||
[MaxLength(255)]
|
||||
public string Time { get; set; } = null!;
|
||||
|
||||
[Column(Order = 11)]
|
||||
public bool CanHeightening { get; set; }
|
||||
*/
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция области заклинания.
|
||||
/// </summary>
|
||||
public ICollection<SpellArea> SpellAreas { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция защиты от заклинания.
|
||||
/// </summary>
|
||||
public ICollection<SpellDefense> SpellDefenses { get; set; } = new List<SpellDefense>();
|
||||
}
|
||||
@@ -0,0 +1,49 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.SpellRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Область заклинания.
|
||||
/// </summary>
|
||||
public class SpellArea
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор области заклинания.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор заклинания, к которому относится область.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор заклинания")]
|
||||
public int SpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Описание области заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Описание области заклинания")]
|
||||
public LocaleString? Details { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип области заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Тип области заклинания")]
|
||||
public SpellAreaType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание, к которому относится область.
|
||||
/// </summary>
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,86 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.SpellRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Урон заклинания.
|
||||
/// </summary>
|
||||
public class SpellDamage
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор урона заклинания.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор урона заклинания")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор заклинания, к которому относится урон.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор заклинания")]
|
||||
public int SpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Уровень заклинания, к которому относится урон.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Уровень заклинания")]
|
||||
public string Key { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Применяется ли модификатор к урону заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Применяется модификатор?")]
|
||||
public bool? ApplyMod { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Категория урона заклинания, если применимо.
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[Comment("Категория урона заклинания")]
|
||||
public SpellDamageCategory? Category { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Формула урона заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 6)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Формула урона заклинания")]
|
||||
public string Formula { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип урона заклинания.
|
||||
/// </summary>
|
||||
[Column(Order = 7)]
|
||||
[Comment("Тип урона заклинания")]
|
||||
public SpellDamageKinds Kinds { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Материалы, необходимые для заклинания, если применимо.
|
||||
/// </summary>
|
||||
[Column(Order = 8)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Материалы для заклинания")]
|
||||
public string? Materials { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Тип урона заклинания, если применимо (например, "fire", "cold" и т.д.).
|
||||
/// </summary>
|
||||
[Column(Order = 9)]
|
||||
[MaxLength(255)]
|
||||
[Comment("Тип урона заклинания")]
|
||||
public string Type { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание, к которому относится урон.
|
||||
/// </summary>
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,52 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure.SpellRelation;
|
||||
|
||||
/// <summary>
|
||||
/// Защита от заклинания.
|
||||
/// </summary>
|
||||
public class SpellDefense
|
||||
{
|
||||
/// <summary>
|
||||
/// Идентификатор защиты от заклинания.
|
||||
/// </summary>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор заклинания, к которому относится защита.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор заклинания")]
|
||||
public int SpellId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, является ли защита от заклинания пассивной (например, для заклинаний, которые не требуют активного действия для защиты).
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
public bool IsPassive { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Флаг, указывающий, является ли защита базовой.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
[Comment("Базовый спасборосок?")]
|
||||
public bool? IsBasic { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Статистика, используемая для защиты от заклинания (например, "Fortitude", "Reflex", "Will").
|
||||
/// </summary>
|
||||
[Column(Order = 5)]
|
||||
[MaxLength(255)]
|
||||
public string Statistic { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Заклинание, к которому относится защита.
|
||||
/// </summary>
|
||||
public virtual Spell Spell { get; set; } = null!;
|
||||
}
|
||||
@@ -0,0 +1,61 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Common.I18n;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
using Pf2e.Database.Model.Structure.ClassRelation;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Подкласс.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Subclass)]
|
||||
public class Subclass : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идетификатор группы подклассов.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Группа подклассов")]
|
||||
public int GroupId { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Группа подклассов.
|
||||
/// </summary>
|
||||
public SubclassGroup Group { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация.
|
||||
/// </summary>
|
||||
[Column(Order = 3)]
|
||||
[Comment("Дополнительная информация")]
|
||||
public LocaleString Additional { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Дополнительная информация в формате JSON.
|
||||
/// </summary>
|
||||
[Column(Order = 4)]
|
||||
public string Extra { get; set; } = "{}";
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция сущностей, связанных с подклассом.
|
||||
/// </summary>
|
||||
public ICollection<Entity> Entities { get; set; } = [];
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция тренировок, связанных с подклассом.
|
||||
/// </summary>
|
||||
public ICollection<SubclassTrainings> Trainings { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Группа подклассов.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.SubclassGroup)]
|
||||
public class SubclassGroup : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Идентификатор класса.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Идентификатор класса")]
|
||||
public int? ClassId { get; set; } = null;
|
||||
|
||||
/// <summary>
|
||||
/// Класс, к которому относится группа подклассов.
|
||||
/// </summary>
|
||||
public Class? Class { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Коллекция подклассов, относящихся к этой группе.
|
||||
/// </summary>
|
||||
public ICollection<Subclass> Subclasses { get; set; } = [];
|
||||
}
|
||||
@@ -0,0 +1,36 @@
|
||||
using System.ComponentModel.DataAnnotations;
|
||||
using System.ComponentModel.DataAnnotations.Schema;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Pf2e.Database.Model.Base;
|
||||
using Pf2e.Database.Model.Enum;
|
||||
|
||||
namespace Pf2e.Database.Model.Structure;
|
||||
|
||||
/// <summary>
|
||||
/// Признак.
|
||||
/// </summary>
|
||||
[EntityOfType(EntityType.Trait)]
|
||||
public class Trait : IEntity
|
||||
{
|
||||
/// <inheritdoc/>
|
||||
[Key]
|
||||
[DatabaseGenerated(DatabaseGeneratedOption.None)]
|
||||
[Column(Order = 1)]
|
||||
[Comment("Идентификатор")]
|
||||
public int Id { get; set; }
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Entity Entity { get; set; } = null!;
|
||||
|
||||
/// <summary>
|
||||
/// Тип признака.
|
||||
/// </summary>
|
||||
[Column(Order = 2)]
|
||||
[Comment("Тип признака")]
|
||||
public TraitType Type { get; set; }
|
||||
|
||||
/// <summary>
|
||||
/// Сущности, которые имеют данный признак.
|
||||
/// </summary>
|
||||
public ICollection<Entity> Entities { get; set; } = [];
|
||||
}
|
||||
Reference in New Issue
Block a user