135 lines
4.7 KiB
C#
135 lines
4.7 KiB
C#
using System.ComponentModel.DataAnnotations;
|
|
using System.ComponentModel.DataAnnotations.Schema;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Pf2eModel.Model.Base;
|
|
using Pf2eModel.Model.Common.I18n;
|
|
using Pf2eModel.Model.Enum;
|
|
using Pf2eModel.Model.Structure.RitualRelation;
|
|
|
|
namespace Pf2eModel.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; } = [];
|
|
}
|