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; /// /// Заклинание. /// [EntityOfType(EntityType.Spell)] public class Spell : IEntity { /// [Key] [DatabaseGenerated(DatabaseGeneratedOption.None)] [Column(Order = 1)] [Comment("Идентификатор")] public int Id { get; set; } /// public Entity Entity { get; set; } = null!; /// /// Уровень заклинания. /// [Column(Order = 2)] public int Level { get; set; } /// /// Является ли заклинание фокусом. /// [Column(Order = 3)] [Comment("Фокус?")] public bool IsFocus { get; set; } /// /// Количество действий, необходимых для применения заклинания. /// [Column(Order = 4)] [Comment("Количество действий")] public ActionEnum Actions { get; set; } = ActionEnum.Other; /// /// Время длительности заклинания в секундах. /// [Column(Order = 5)] [MaxLength(255)] [Comment("Время длительности заклинания")] public int? Duration { get; set; } = null; /// /// Дальность заклинания в футах. /// [Column(Order = 6)] [Comment("Дальность заклинания")] public int Range { get; set; } /// /// Традиции заклинания. /// [Column(Order = 7)] [Comment("Традиции заклинания")] public SpellTradition[] Traditions { get; set; } = []; /// /// Элементы заклинания. /// [Column(Order = 8)] [Comment("Элементы заклинания")] public ElementEnum[] Elements { get; set; } = []; /// /// Триггер заклинания. /// [Column(Order = 9)] [Comment("Триггер заклинания")] public LocaleString? Trigger { get; set; } = null; /// /// Цель заклинания. /// [Column(Order = 10)] [Comment("Цель заклинания")] public LocaleString? Target { get; set; } = null; /// /// Стоимость заклинания. /// [Column(Order = 11)] [Comment("Стоимость заклинания")] public LocaleString? Cost { get; set; } = null; /// /// Требования к заклинанию. /// [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; } */ /// /// Коллекция области заклинания. /// public ICollection SpellAreas { get; set; } = []; /// /// Коллекция защиты от заклинания. /// public ICollection SpellDefenses { get; set; } = new List(); }