Процессор божеств

This commit is contained in:
2025-09-14 15:01:38 +04:00
parent 66f3adc5f9
commit 4aa107c3d9
28 changed files with 475 additions and 169 deletions
@@ -0,0 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types').[DeityProcessor](DeityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor')
## DeityProcessor\.AddTraits\(\) Method
Генерация списка признаков сущности\.
```csharp
protected override void AddTraits();
```
@@ -1,10 +1,10 @@
#### [Pf2eDataScrapper](index.md 'index') #### [Pf2eDataScrapper](index.md 'index')
### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types').[DeityProcessor](DeityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor') ### [Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types](Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types').[DeityProcessor](DeityProcessor.md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor')
## DeityProcessor\.ProcessSanctification\(\) Method ## DeityProcessor\.ProcessTexts\(\) Method
Обработка освящения\. Обработка текстов описания божества\.
```csharp ```csharp
private void ProcessSanctification(); private void ProcessTexts();
``` ```
@@ -17,13 +17,14 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.
| Methods | | | Methods | |
| :--- | :--- | | :--- | :--- |
| [Add\(\)](DeityProcessor.Add().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.Add\(\)') | Добавление основной сущности в контекст базы данных\. | | [Add\(\)](DeityProcessor.Add().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.Add\(\)') | Добавление основной сущности в контекст базы данных\. |
| [AddTraits\(\)](DeityProcessor.AddTraits().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.AddTraits\(\)') | Генерация списка признаков сущности\. |
| [MarkdownLinkRegex\(\)](DeityProcessor.MarkdownLinkRegex().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.MarkdownLinkRegex\(\)') | | | [MarkdownLinkRegex\(\)](DeityProcessor.MarkdownLinkRegex().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.MarkdownLinkRegex\(\)') | |
| [Process\(\)](DeityProcessor.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.Process\(\)') | Основной метод обработки данных\. | | [Process\(\)](DeityProcessor.Process().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.Process\(\)') | Основной метод обработки данных\. |
| [ProcessAttributes\(\)](DeityProcessor.ProcessAttributes().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessAttributes\(\)') | Обработка атрибутов божества\. | | [ProcessAttributes\(\)](DeityProcessor.ProcessAttributes().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessAttributes\(\)') | Обработка атрибутов божества\. |
| [ProcessDomainMarkdown\(string, bool\)](DeityProcessor.ProcessDomainMarkdown(string,bool).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessDomainMarkdown\(string, bool\)') | Обработка markdown\-строки с доменами\. | | [ProcessDomainMarkdown\(string, bool\)](DeityProcessor.ProcessDomainMarkdown(string,bool).md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessDomainMarkdown\(string, bool\)') | Обработка markdown\-строки с доменами\. |
| [ProcessDomains\(\)](DeityProcessor.ProcessDomains().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessDomains\(\)') | Обработка доменов божества\. | | [ProcessDomains\(\)](DeityProcessor.ProcessDomains().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessDomains\(\)') | Обработка доменов божества\. |
| [ProcessFonts\(\)](DeityProcessor.ProcessFonts().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessFonts\(\)') | Обработка божественной силы\. | | [ProcessFonts\(\)](DeityProcessor.ProcessFonts().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessFonts\(\)') | Обработка божественной силы\. |
| [ProcessSanctification\(\)](DeityProcessor.ProcessSanctification().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessSanctification\(\)') | Обработка освящения\. |
| [ProcessSkills\(\)](DeityProcessor.ProcessSkills().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessSkills\(\)') | Обработка навыков божества\. | | [ProcessSkills\(\)](DeityProcessor.ProcessSkills().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessSkills\(\)') | Обработка навыков божества\. |
| [ProcessSpells\(\)](DeityProcessor.ProcessSpells().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessSpells\(\)') | Обработка заклинаний божества\. | | [ProcessSpells\(\)](DeityProcessor.ProcessSpells().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessSpells\(\)') | Обработка заклинаний божества\. |
| [ProcessTexts\(\)](DeityProcessor.ProcessTexts().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessTexts\(\)') | Обработка текстов описания божества\. |
| [ProcessWeapons\(\)](DeityProcessor.ProcessWeapons().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessWeapons\(\)') | Обработка оружия божества\. | | [ProcessWeapons\(\)](DeityProcessor.ProcessWeapons().md 'Pf2eDataScrapper\.Importers\.Implementations\.Aonprd\.Processors\.Types\.DeityProcessor\.ProcessWeapons\(\)') | Обработка оружия божества\. |
+13
View File
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.Anathema Property
Анафемы божества\.
```csharp
public Pf2eModel.Model.Common.I18n.LocaleString Anathema { get; set; }
```
#### Property Value
[LocaleString](LocaleString.md 'Pf2eModel\.Model\.Common\.I18n\.LocaleString')
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.AreaOfConcern Property
Область покровительства божества\.
```csharp
public Pf2eModel.Model.Common.I18n.LocaleString AreaOfConcern { get; set; }
```
#### Property Value
[LocaleString](LocaleString.md 'Pf2eModel\.Model\.Common\.I18n\.LocaleString')
+3 -3
View File
@@ -3,11 +3,11 @@
## Deity\.Category Property ## Deity\.Category Property
Тип божества\. Категория божества\.
```csharp ```csharp
public Pf2eModel.Model.Enum.DeityCategory Category { get; set; } public string Category { get; set; }
``` ```
#### Property Value #### Property Value
[DeityCategory](DeityCategory.md 'Pf2eModel\.Model\.Enum\.DeityCategory') [System\.String](https://docs.microsoft.com/en-us/dotnet/api/System.String 'System\.String')
@@ -3,7 +3,7 @@
## Deity\.DeityAttributes Property ## Deity\.DeityAttributes Property
Аттрибуты божества\. Атрибуты божества\.
```csharp ```csharp
public System.Collections.Generic.ICollection<Pf2eModel.Model.Structure.DeityRelation.DeityAttribute> DeityAttributes { get; set; } public System.Collections.Generic.ICollection<Pf2eModel.Model.Structure.DeityRelation.DeityAttribute> DeityAttributes { get; set; }
+13
View File
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.Edicts Property
Заветы божества\.
```csharp
public Pf2eModel.Model.Common.I18n.LocaleString Edicts { get; set; }
```
#### Property Value
[LocaleString](LocaleString.md 'Pf2eModel\.Model\.Common\.I18n\.LocaleString')
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.ReligiousSymbol Property
Религиозный символ божества\.
```csharp
public Pf2eModel.Model.Common.I18n.LocaleString ReligiousSymbol { get; set; }
```
#### Property Value
[LocaleString](LocaleString.md 'Pf2eModel\.Model\.Common\.I18n\.LocaleString')
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.SacredAnimal Property
Священное животное божества\.
```csharp
public Pf2eModel.Model.Common.I18n.LocaleString SacredAnimal { get; set; }
```
#### Property Value
[LocaleString](LocaleString.md 'Pf2eModel\.Model\.Common\.I18n\.LocaleString')
+13
View File
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure](Pf2eModel.Model.Structure.md 'Pf2eModel\.Model\.Structure').[Deity](Deity.md 'Pf2eModel\.Model\.Structure\.Deity')
## Deity\.Type Property
Тип божества\.
```csharp
public Pf2eModel.Model.Enum.DeityType Type { get; set; }
```
#### Property Value
[DeityType](DeityType.md 'Pf2eModel\.Model\.Enum\.DeityType')
+8 -2
View File
@@ -15,14 +15,20 @@ Implements [IEntity](IEntity.md 'Pf2eModel\.Model\.IEntity')
| Properties | | | Properties | |
| :--- | :--- | | :--- | :--- |
| [Category](Deity.Category.md 'Pf2eModel\.Model\.Structure\.Deity\.Category') | Тип божества\. | | [Anathema](Deity.Anathema.md 'Pf2eModel\.Model\.Structure\.Deity\.Anathema') | Анафемы божества\. |
| [DeityAttributes](Deity.DeityAttributes.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityAttributes') | Аттрибуты божества\. | | [AreaOfConcern](Deity.AreaOfConcern.md 'Pf2eModel\.Model\.Structure\.Deity\.AreaOfConcern') | Область покровительства божества\. |
| [Category](Deity.Category.md 'Pf2eModel\.Model\.Structure\.Deity\.Category') | Категория божества\. |
| [DeityAttributes](Deity.DeityAttributes.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityAttributes') | Атрибуты божества\. |
| [DeityDomains](Deity.DeityDomains.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityDomains') | Домены божества\. | | [DeityDomains](Deity.DeityDomains.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityDomains') | Домены божества\. |
| [DeitySpells](Deity.DeitySpells.md 'Pf2eModel\.Model\.Structure\.Deity\.DeitySpells') | Заклинания божества\. | | [DeitySpells](Deity.DeitySpells.md 'Pf2eModel\.Model\.Structure\.Deity\.DeitySpells') | Заклинания божества\. |
| [DeityWeapons](Deity.DeityWeapons.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityWeapons') | Оружия божества\. | | [DeityWeapons](Deity.DeityWeapons.md 'Pf2eModel\.Model\.Structure\.Deity\.DeityWeapons') | Оружия божества\. |
| [Edicts](Deity.Edicts.md 'Pf2eModel\.Model\.Structure\.Deity\.Edicts') | Заветы божества\. |
| [Entity](Deity.Entity.md 'Pf2eModel\.Model\.Structure\.Deity\.Entity') | Корневая сущность\. | | [Entity](Deity.Entity.md 'Pf2eModel\.Model\.Structure\.Deity\.Entity') | Корневая сущность\. |
| [Fonts](Deity.Fonts.md 'Pf2eModel\.Model\.Structure\.Deity\.Fonts') | Тип божественный силы\. | | [Fonts](Deity.Fonts.md 'Pf2eModel\.Model\.Structure\.Deity\.Fonts') | Тип божественный силы\. |
| [Id](Deity.Id.md 'Pf2eModel\.Model\.Structure\.Deity\.Id') | Идентификатор сущности\. | | [Id](Deity.Id.md 'Pf2eModel\.Model\.Structure\.Deity\.Id') | Идентификатор сущности\. |
| [ReligiousSymbol](Deity.ReligiousSymbol.md 'Pf2eModel\.Model\.Structure\.Deity\.ReligiousSymbol') | Религиозный символ божества\. |
| [SacredAnimal](Deity.SacredAnimal.md 'Pf2eModel\.Model\.Structure\.Deity\.SacredAnimal') | Священное животное божества\. |
| [Sanctification](Deity.Sanctification.md 'Pf2eModel\.Model\.Structure\.Deity\.Sanctification') | Тип освящения\. | | [Sanctification](Deity.Sanctification.md 'Pf2eModel\.Model\.Structure\.Deity\.Sanctification') | Тип освящения\. |
| [SanctificationMust](Deity.SanctificationMust.md 'Pf2eModel\.Model\.Structure\.Deity\.SanctificationMust') | Обязательное освящение\. | | [SanctificationMust](Deity.SanctificationMust.md 'Pf2eModel\.Model\.Structure\.Deity\.SanctificationMust') | Обязательное освящение\. |
| [Skills](Deity.Skills.md 'Pf2eModel\.Model\.Structure\.Deity\.Skills') | Навыки божества\. | | [Skills](Deity.Skills.md 'Pf2eModel\.Model\.Structure\.Deity\.Skills') | Навыки божества\. |
| [Type](Deity.Type.md 'Pf2eModel\.Model\.Structure\.Deity\.Type') | Тип божества\. |
@@ -0,0 +1,13 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Structure\.DeityRelation](Pf2eModel.Model.Structure.DeityRelation.md 'Pf2eModel\.Model\.Structure\.DeityRelation').[DeityAttribute](DeityAttribute.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute')
## DeityAttribute\.Id Property
Идентификатор\.
```csharp
public int Id { get; set; }
```
#### Property Value
[System\.Int32](https://docs.microsoft.com/en-us/dotnet/api/System.Int32 'System\.Int32')
@@ -16,3 +16,4 @@ Inheritance [System\.Object](https://docs.microsoft.com/en-us/dotnet/api/System.
| [Attribute](DeityAttribute.Attribute.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.Attribute') | Атрибут божества\. | | [Attribute](DeityAttribute.Attribute.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.Attribute') | Атрибут божества\. |
| [Deity](DeityAttribute.Deity.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.Deity') | Божество, к которому относится атрибут\. | | [Deity](DeityAttribute.Deity.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.Deity') | Божество, к которому относится атрибут\. |
| [DeityId](DeityAttribute.DeityId.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.DeityId') | Идентификатор божества\. | | [DeityId](DeityAttribute.DeityId.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.DeityId') | Идентификатор божества\. |
| [Id](DeityAttribute.Id.md 'Pf2eModel\.Model\.Structure\.DeityRelation\.DeityAttribute\.Id') | Идентификатор\. |
-35
View File
@@ -1,35 +0,0 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Enum](Pf2eModel.Model.Enum.md 'Pf2eModel\.Model\.Enum')
## DeityCategory Enum
Тип божества\.
```csharp
public enum DeityCategory
```
### Fields
<a name='Pf2eModel.Model.Enum.DeityCategory.Deity'></a>
`Deity` 0
Божество\.
<a name='Pf2eModel.Model.Enum.DeityCategory.Pantheon'></a>
`Pantheon` 1
Пантеон\.
<a name='Pf2eModel.Model.Enum.DeityCategory.Covenant'></a>
`Covenant` 2
Ковенант\.
<a name='Pf2eModel.Model.Enum.DeityCategory.Philosophy'></a>
`Philosophy` 3
Философия\.
+35
View File
@@ -0,0 +1,35 @@
#### [Pf2eModel](index.md 'index')
### [Pf2eModel\.Model\.Enum](Pf2eModel.Model.Enum.md 'Pf2eModel\.Model\.Enum')
## DeityType Enum
Тип божества\.
```csharp
public enum DeityType
```
### Fields
<a name='Pf2eModel.Model.Enum.DeityType.Deity'></a>
`Deity` 0
Божество\.
<a name='Pf2eModel.Model.Enum.DeityType.Pantheon'></a>
`Pantheon` 1
Пантеон\.
<a name='Pf2eModel.Model.Enum.DeityType.Covenant'></a>
`Covenant` 2
Ковенант\.
<a name='Pf2eModel.Model.Enum.DeityType.Philosophy'></a>
`Philosophy` 3
Философия\.
@@ -11,9 +11,9 @@
| [AttributeValues](AttributeValues.md 'Pf2eModel\.Model\.Enum\.AttributeValues') | Перечисление значений атрибутов\. | | [AttributeValues](AttributeValues.md 'Pf2eModel\.Model\.Enum\.AttributeValues') | Перечисление значений атрибутов\. |
| [ClassProgressionType](ClassProgressionType.md 'Pf2eModel\.Model\.Enum\.ClassProgressionType') | Тип элемента прогрессии класса\. | | [ClassProgressionType](ClassProgressionType.md 'Pf2eModel\.Model\.Enum\.ClassProgressionType') | Тип элемента прогрессии класса\. |
| [ConditionGroup](ConditionGroup.md 'Pf2eModel\.Model\.Enum\.ConditionGroup') | Тип состояния | | [ConditionGroup](ConditionGroup.md 'Pf2eModel\.Model\.Enum\.ConditionGroup') | Тип состояния |
| [DeityCategory](DeityCategory.md 'Pf2eModel\.Model\.Enum\.DeityCategory') | Тип божества\. |
| [DeityFonts](DeityFonts.md 'Pf2eModel\.Model\.Enum\.DeityFonts') | Тип божественной силы\. | | [DeityFonts](DeityFonts.md 'Pf2eModel\.Model\.Enum\.DeityFonts') | Тип божественной силы\. |
| [DeitySanctification](DeitySanctification.md 'Pf2eModel\.Model\.Enum\.DeitySanctification') | Тип освящения божества\. | | [DeitySanctification](DeitySanctification.md 'Pf2eModel\.Model\.Enum\.DeitySanctification') | Тип освящения божества\. |
| [DeityType](DeityType.md 'Pf2eModel\.Model\.Enum\.DeityType') | Тип божества\. |
| [ElementEnum](ElementEnum.md 'Pf2eModel\.Model\.Enum\.ElementEnum') | Перечисление элементов\. | | [ElementEnum](ElementEnum.md 'Pf2eModel\.Model\.Enum\.ElementEnum') | Перечисление элементов\. |
| [EntityRarity](EntityRarity.md 'Pf2eModel\.Model\.Enum\.EntityRarity') | Перечисление редкости сущности\. | | [EntityRarity](EntityRarity.md 'Pf2eModel\.Model\.Enum\.EntityRarity') | Перечисление редкости сущности\. |
| [EntityType](EntityType.md 'Pf2eModel\.Model\.Enum\.EntityType') | Тип сущности\. | | [EntityType](EntityType.md 'Pf2eModel\.Model\.Enum\.EntityType') | Тип сущности\. |
@@ -7,6 +7,7 @@ using Pf2eDataScrapper.Processors;
using Pf2eDataScrapper.Processors.Attributes; using Pf2eDataScrapper.Processors.Attributes;
using Pf2eModel; using Pf2eModel;
using Pf2eModel.Model.Common; using Pf2eModel.Model.Common;
using Pf2eModel.Model.Common.I18n;
using Pf2eModel.Model.Enum; using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure; using Pf2eModel.Model.Structure;
using Pf2eModel.Model.Structure.DeityRelation; using Pf2eModel.Model.Structure.DeityRelation;
@@ -44,14 +45,10 @@ internal partial class DeityProcessor(
base.Process(); base.Process();
// Установка категории божества // Установка категории божества
Object.Category = Input.EnumRequired<DeityCategory>("deity_category"); Object.Category = Input.GetRequired<string>("deity_category");
// Обработка божественной силы
ProcessFonts(); ProcessFonts();
// Обработка освящения
ProcessSanctification();
// Обработка атрибутов // Обработка атрибутов
ProcessAttributes(); ProcessAttributes();
@@ -66,6 +63,17 @@ internal partial class DeityProcessor(
// Обработка навыков // Обработка навыков
ProcessSkills(); ProcessSkills();
// Обработка текстов описания
ProcessTexts();
// Обработка освящения - в Foundry!
}
/// <inheritdoc/>
protected override void AddTraits()
{
// У божеств нет признаков. Не знаю, зачем они на Архивах.
} }
/// <summary> /// <summary>
@@ -96,68 +104,6 @@ internal partial class DeityProcessor(
} }
} }
/// <summary>
/// Обработка освящения.
/// </summary>
private void ProcessSanctification()
{
// Получаем выравнивание божества
string? deityAlignment = Input.GetOptional<string>("alignment");
// По умолчанию любое освящение
Object.Sanctification = DeitySanctification.Any;
Object.SanctificationMust = false;
// Определяем освящение на основе выравнивания божества
if (!string.IsNullOrEmpty(deityAlignment))
{
switch (deityAlignment)
{
case "LG":
case "NG":
case "CG":
Object.Sanctification = DeitySanctification.Holy;
break;
case "LE":
case "NE":
case "CE":
Object.Sanctification = DeitySanctification.Unholy;
break;
case "N":
case "LN":
case "CN":
case "Any":
Object.Sanctification = DeitySanctification.Any;
break;
}
}
// Проверяем, требует ли божество определенного выравнивания от последователей
JArray? followerAlignments = Input.GetOptional<JArray>("follower_alignment");
if (followerAlignments != null && followerAlignments.Count > 0)
{
// Если выравнивание последователей ограничено, то освящение обязательно
Object.SanctificationMust = true;
// Если освящение Any, но выравнивания последователей ограничены только добрыми или злыми,
// уточняем тип освящения
if (Object.Sanctification == DeitySanctification.Any)
{
bool allGood = followerAlignments.All(a => a.ToString() is "LG" or "NG" or "CG");
bool allEvil = followerAlignments.All(a => a.ToString() is "LE" or "NE" or "CE");
if (allGood)
{
Object.Sanctification = DeitySanctification.Holy;
}
else if (allEvil)
{
Object.Sanctification = DeitySanctification.Unholy;
}
}
}
}
/// <summary> /// <summary>
/// Обработка атрибутов божества. /// Обработка атрибутов божества.
/// </summary> /// </summary>
@@ -226,7 +172,6 @@ internal partial class DeityProcessor(
string spellsMarkdown = Input.GetRequired<string>("spell_markdown"); string spellsMarkdown = Input.GetRequired<string>("spell_markdown");
MatchCollection matches = MarkdownLinkRegex().Matches(spellsMarkdown); MatchCollection matches = MarkdownLinkRegex().Matches(spellsMarkdown);
int level = 1;
foreach (Match match in matches) foreach (Match match in matches)
{ {
string spellName = match.Groups[1].Value; string spellName = match.Groups[1].Value;
@@ -243,11 +188,10 @@ internal partial class DeityProcessor(
{ {
Deity = Object, Deity = Object,
Spell = spell, Spell = spell,
Level = level, Level = spell.Level,
} }
); );
} }
level++;
} }
} }
@@ -290,6 +234,24 @@ internal partial class DeityProcessor(
} }
} }
/// <summary>
/// Обработка текстов описания божества.
/// </summary>
private void ProcessTexts()
{
Object.Edicts[LocaleType.English] = Input.GetRequired<string>("edict");
Object.Anathema[LocaleType.English] = Input.GetRequired<string>("anathema");
Object.ReligiousSymbol[LocaleType.English] = Input.GetOptional<string>(
"religious_symbol",
""
);
Object.SacredAnimal[LocaleType.English] = Input.GetOptional<string>("sacred_animal", "");
Object.AreaOfConcern[LocaleType.English] = Input.GetOptional<string>(
"area_of_concern_raw",
""
);
}
/// <summary> /// <summary>
/// Регулярное выражение для извлечения названия из markdown-ссылки. /// Регулярное выражение для извлечения названия из markdown-ссылки.
/// </summary> /// </summary>
@@ -0,0 +1,88 @@
using System;
using System.Collections.Generic;
using Microsoft.Extensions.DependencyInjection;
using Pf2eDataScrapper.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Helpers;
using Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Subclasses;
using Pf2eDataScrapper.Processors.Attributes;
using Pf2eDataScrapper.Processors.Definitions;
using Pf2eDataScrapper.Processors.Factory;
using Pf2eModel;
using Pf2eModel.Model.Base;
using Pf2eModel.Model.Enum;
using Pf2eModel.Model.Structure;
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types;
[ProcessorFactory(
"aonprd:trait-alignments",
ProcessorType = typeof(TraitAlignmentsProcessor),
Description = "Трейты мировоззрений",
Group = ProcessorGroupEnum.AonprdPreparation,
Parallel = false
)]
internal class TraitAlignmentsProcessorFactory(IServiceProvider serviceProvider)
: AbstractProcessorFactory
{
public IServiceProvider ServiceProvider { get; } = serviceProvider;
public List<string> Alignments { get; } = ["LG", "NG", "CG", "LN", "N", "CN", "LE", "NE", "CE"];
public override int Count()
{
return Alignments.Count;
}
public override IEnumerable<Tuple<string, IProcessor>> GetEnumerator()
{
foreach (string alignment in Alignments)
{
TraitAlignmentsProcessor processor =
ActivatorUtilities.CreateInstance<TraitAlignmentsProcessor>(
ServiceProvider,
alignment
);
yield return new($"{alignment}", processor);
}
}
}
internal class TraitAlignmentsProcessor(
string alignment,
DatabaseHelper helper,
AonprdBuilderGlobals globals
) : IProcessor
{
public string Alignment { get; } = alignment;
public DatabaseHelper Helper { get; } = helper;
public AonprdBuilderGlobals Globals { get; } = globals;
public Pf2eDbContext Context { get; } = new();
public Entity Entity { get; set; } = null!;
public Trait Trait { get; set; } = null!;
public void Process()
{
Entity = new()
{
Name = new() { ["en"] = Alignment },
Type = EntityType.Trait,
Img = "",
Description = "",
Rarity = EntityRarity.Common,
IsTranslated = false,
IsChecked = false,
Slug = Helper.GenerateSlug(Alignment),
};
Trait = new() { Entity = Entity, Type = TraitType.Alignment };
}
public void Save()
{
Context.Entities.Add(Entity);
Context.Traits.Add(Trait);
Globals.TraitIds[Alignment] = Entity.Id;
}
}
@@ -16,7 +16,9 @@ namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.Processors.Types;
Description = "Признаки", Description = "Признаки",
Group = ProcessorGroupEnum.AonprdEntities Group = ProcessorGroupEnum.AonprdEntities
)] )]
[ProcessorDependencies(["aonprd:external", "aonprd:source"])] [ProcessorDependencies(
["aonprd:external", "aonprd:source", "aonprd:source", "aonprd:trait-alignments"]
)]
internal class TraitProcessor( internal class TraitProcessor(
ProcessorInput input, ProcessorInput input,
StringHelper stringHelper, StringHelper stringHelper,
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
namespace Pf2eModel.Migrations namespace Pf2eModel.Migrations
{ {
[DbContext(typeof(Pf2eDbContext))] [DbContext(typeof(Pf2eDbContext))]
[Migration("20250913084534_1")] [Migration("20250914093120_1")]
partial class _1 partial class _1
{ {
/// <inheritdoc /> /// <inheritdoc />
@@ -29,9 +29,9 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "covenant", "deity", "pantheon", "philosophy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_type", new[] { "covenant", "deity", "pantheon", "philosophy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
@@ -44,7 +44,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "class", "regular", "tradition" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "alignment", "class", "regular", "tradition" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" });
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -1128,30 +1128,72 @@ namespace Pf2eModel.Migrations
.HasColumnOrder(1) .HasColumnOrder(1)
.HasComment("Идентификатор"); .HasComment("Идентификатор");
b.Property<DeityCategory>("Category") b.Property<string>("Anathema")
.HasColumnType("deity_category") .IsRequired()
.HasColumnType("jsonb")
.HasColumnName("anathema")
.HasColumnOrder(8)
.HasComment("Анафемы божества");
b.Property<string>("AreaOfConcern")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("area_of_concern")
.HasColumnOrder(11)
.HasComment("Область покровительства божества");
b.Property<string>("Category")
.IsRequired()
.HasColumnType("text")
.HasColumnName("category") .HasColumnName("category")
.HasColumnOrder(2) .HasColumnOrder(3)
.HasComment("Тип божества"); .HasComment("Категория божества");
b.Property<string>("Edicts")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("edicts")
.HasColumnOrder(7)
.HasComment("Заветы божества");
b.Property<DeityFonts>("Fonts") b.Property<DeityFonts>("Fonts")
.HasColumnType("deity_fonts") .HasColumnType("deity_fonts")
.HasColumnName("fonts") .HasColumnName("fonts")
.HasColumnOrder(3) .HasColumnOrder(4)
.HasComment("Тип божественной силы"); .HasComment("Тип божественной силы");
b.Property<string>("ReligiousSymbol")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("religious_symbol")
.HasColumnOrder(9)
.HasComment("Религиозный символ божества");
b.Property<string>("SacredAnimal")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("sacred_animal")
.HasColumnOrder(10)
.HasComment("Священное животное божества");
b.Property<DeitySanctification>("Sanctification") b.Property<DeitySanctification>("Sanctification")
.HasColumnType("deity_sanctification") .HasColumnType("deity_sanctification")
.HasColumnName("sanctification") .HasColumnName("sanctification")
.HasColumnOrder(4) .HasColumnOrder(5)
.HasComment("Тип освящения"); .HasComment("Тип освящения");
b.Property<bool>("SanctificationMust") b.Property<bool>("SanctificationMust")
.HasColumnType("boolean") .HasColumnType("boolean")
.HasColumnName("sanctification_must") .HasColumnName("sanctification_must")
.HasColumnOrder(5) .HasColumnOrder(6)
.HasComment("Обязательное освящение"); .HasComment("Обязательное освящение");
b.Property<DeityType>("Type")
.HasColumnType("deity_type")
.HasColumnName("type")
.HasColumnOrder(2)
.HasComment("Тип божества");
b.HasKey("Id") b.HasKey("Id")
.HasName("pk_deities"); .HasName("pk_deities");
@@ -1160,21 +1202,33 @@ namespace Pf2eModel.Migrations
modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeityAttribute", b => modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeityAttribute", b =>
{ {
b.Property<int>("DeityId") b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer") .HasColumnType("integer")
.HasColumnName("deity_id") .HasColumnName("id")
.HasColumnOrder(1) .HasColumnOrder(1)
.HasComment("Идентификатор божества"); .HasComment("Идентификатор");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<AttributeValues>("Attribute") b.Property<AttributeValues>("Attribute")
.HasColumnType("attribute_values") .HasColumnType("attribute_values")
.HasColumnName("attribute") .HasColumnName("attribute")
.HasColumnOrder(2) .HasColumnOrder(3)
.HasComment("Атрибут божества"); .HasComment("Атрибут божества");
b.HasKey("DeityId", "Attribute") b.Property<int>("DeityId")
.HasColumnType("integer")
.HasColumnName("deity_id")
.HasColumnOrder(2)
.HasComment("Идентификатор божества");
b.HasKey("Id")
.HasName("pk_deity_attributes"); .HasName("pk_deity_attributes");
b.HasIndex("DeityId")
.HasDatabaseName("ix_deity_attributes_deity_id");
b.ToTable("deity_attributes", (string)null); b.ToTable("deity_attributes", (string)null);
}); });
@@ -19,9 +19,9 @@ namespace Pf2eModel.Migrations
.Annotation("Npgsql:Enum:attribute_values", "cha,con,dex,free,int,str,wis") .Annotation("Npgsql:Enum:attribute_values", "cha,con,dex,free,int,str,wis")
.Annotation("Npgsql:Enum:class_progression_type", "ancestry_feat,attribute_increase,class_feat,entity,general_feat,skill_feat,skill_increase") .Annotation("Npgsql:Enum:class_progression_type", "ancestry_feat,attribute_increase,class_feat,entity,general_feat,skill_feat,skill_increase")
.Annotation("Npgsql:Enum:condition_group", "abilities,attitudes,death,detection,senses,unknown") .Annotation("Npgsql:Enum:condition_group", "abilities,attitudes,death,detection,senses,unknown")
.Annotation("Npgsql:Enum:deity_category", "covenant,deity,pantheon,philosophy")
.Annotation("Npgsql:Enum:deity_fonts", "any,harm,heal,none") .Annotation("Npgsql:Enum:deity_fonts", "any,harm,heal,none")
.Annotation("Npgsql:Enum:deity_sanctification", "any,holy,unholy") .Annotation("Npgsql:Enum:deity_sanctification", "any,holy,unholy")
.Annotation("Npgsql:Enum:deity_type", "covenant,deity,pantheon,philosophy")
.Annotation("Npgsql:Enum:element_enum", "air,earth,fire,metal,universal,water,wood") .Annotation("Npgsql:Enum:element_enum", "air,earth,fire,metal,universal,water,wood")
.Annotation("Npgsql:Enum:entity_rarity", "common,rare,uncommon,unique") .Annotation("Npgsql:Enum:entity_rarity", "common,rare,uncommon,unique")
.Annotation("Npgsql:Enum:entity_type", "action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,domain,feat,heritage,language,ritual,rule,spell,subclass,subclass_group,trait,unknown") .Annotation("Npgsql:Enum:entity_type", "action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,domain,feat,heritage,language,ritual,rule,spell,subclass,subclass_group,trait,unknown")
@@ -34,7 +34,7 @@ namespace Pf2eModel.Migrations
.Annotation("Npgsql:Enum:spell_damage_kinds", "any,damage,healing") .Annotation("Npgsql:Enum:spell_damage_kinds", "any,damage,healing")
.Annotation("Npgsql:Enum:spell_tradition", "all,arcane,divine,elemental,none,occult,primal") .Annotation("Npgsql:Enum:spell_tradition", "all,arcane,divine,elemental,none,occult,primal")
.Annotation("Npgsql:Enum:training_rank", "expert,legendary,master,mythic,trained,untrained") .Annotation("Npgsql:Enum:training_rank", "expert,legendary,master,mythic,trained,untrained")
.Annotation("Npgsql:Enum:trait_type", "class,regular,tradition") .Annotation("Npgsql:Enum:trait_type", "alignment,class,regular,tradition")
.Annotation("Npgsql:Enum:vision_enum", "dark-vision,low-light-vision,normal"); .Annotation("Npgsql:Enum:vision_enum", "dark-vision,low-light-vision,normal");
migrationBuilder.CreateTable( migrationBuilder.CreateTable(
@@ -234,10 +234,16 @@ namespace Pf2eModel.Migrations
columns: table => new columns: table => new
{ {
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"), id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор"),
category = table.Column<DeityCategory>(type: "deity_category", nullable: false, comment: "Тип божества"), type = table.Column<DeityType>(type: "deity_type", nullable: false, comment: "Тип божества"),
category = table.Column<string>(type: "text", nullable: false, comment: "Категория божества"),
fonts = table.Column<DeityFonts>(type: "deity_fonts", nullable: false, comment: "Тип божественной силы"), fonts = table.Column<DeityFonts>(type: "deity_fonts", nullable: false, comment: "Тип божественной силы"),
sanctification = table.Column<DeitySanctification>(type: "deity_sanctification", nullable: false, comment: "Тип освящения"), sanctification = table.Column<DeitySanctification>(type: "deity_sanctification", nullable: false, comment: "Тип освящения"),
sanctification_must = table.Column<bool>(type: "boolean", nullable: false, comment: "Обязательное освящение") sanctification_must = table.Column<bool>(type: "boolean", nullable: false, comment: "Обязательное освящение"),
edicts = table.Column<string>(type: "jsonb", nullable: false, comment: "Заветы божества"),
anathema = table.Column<string>(type: "jsonb", nullable: false, comment: "Анафемы божества"),
religious_symbol = table.Column<string>(type: "jsonb", nullable: false, comment: "Религиозный символ божества"),
sacred_animal = table.Column<string>(type: "jsonb", nullable: false, comment: "Священное животное божества"),
area_of_concern = table.Column<string>(type: "jsonb", nullable: false, comment: "Область покровительства божества")
}, },
constraints: table => constraints: table =>
{ {
@@ -778,12 +784,14 @@ namespace Pf2eModel.Migrations
name: "deity_attributes", name: "deity_attributes",
columns: table => new columns: table => new
{ {
id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор")
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
deity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор божества"), deity_id = table.Column<int>(type: "integer", nullable: false, comment: "Идентификатор божества"),
attribute = table.Column<AttributeValues>(type: "attribute_values", nullable: false, comment: "Атрибут божества") attribute = table.Column<AttributeValues>(type: "attribute_values", nullable: false, comment: "Атрибут божества")
}, },
constraints: table => constraints: table =>
{ {
table.PrimaryKey("pk_deity_attributes", x => new { x.deity_id, x.attribute }); table.PrimaryKey("pk_deity_attributes", x => x.id);
table.ForeignKey( table.ForeignKey(
name: "fk_deity_attributes_deities_deity_id", name: "fk_deity_attributes_deities_deity_id",
column: x => x.deity_id, column: x => x.deity_id,
@@ -1320,6 +1328,11 @@ namespace Pf2eModel.Migrations
table: "class_trainings", table: "class_trainings",
column: "training_id"); column: "training_id");
migrationBuilder.CreateIndex(
name: "ix_deity_attributes_deity_id",
table: "deity_attributes",
column: "deity_id");
migrationBuilder.CreateIndex( migrationBuilder.CreateIndex(
name: "ix_deity_domains_deity_id", name: "ix_deity_domains_deity_id",
table: "deity_domains", table: "deity_domains",
@@ -26,9 +26,9 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "cha", "con", "dex", "free", "int", "str", "wis" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "class_progression_type", new[] { "ancestry_feat", "attribute_increase", "class_feat", "entity", "general_feat", "skill_feat", "skill_increase" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "condition_group", new[] { "abilities", "attitudes", "death", "detection", "senses", "unknown" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_category", new[] { "covenant", "deity", "pantheon", "philosophy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "any", "harm", "heal", "none" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "any", "holy", "unholy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_type", new[] { "covenant", "deity", "pantheon", "philosophy" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "element_enum", new[] { "air", "earth", "fire", "metal", "universal", "water", "wood" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "rare", "uncommon", "unique" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "domain", "feat", "heritage", "language", "ritual", "rule", "spell", "subclass", "subclass_group", "trait", "unknown" });
@@ -41,7 +41,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "any", "damage", "healing" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "all", "arcane", "divine", "elemental", "none", "occult", "primal" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "expert", "legendary", "master", "mythic", "trained", "untrained" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "class", "regular", "tradition" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "alignment", "class", "regular", "tradition" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" }); NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "vision_enum", new[] { "dark-vision", "low-light-vision", "normal" });
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder); NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -1125,30 +1125,72 @@ namespace Pf2eModel.Migrations
.HasColumnOrder(1) .HasColumnOrder(1)
.HasComment("Идентификатор"); .HasComment("Идентификатор");
b.Property<DeityCategory>("Category") b.Property<string>("Anathema")
.HasColumnType("deity_category") .IsRequired()
.HasColumnType("jsonb")
.HasColumnName("anathema")
.HasColumnOrder(8)
.HasComment("Анафемы божества");
b.Property<string>("AreaOfConcern")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("area_of_concern")
.HasColumnOrder(11)
.HasComment("Область покровительства божества");
b.Property<string>("Category")
.IsRequired()
.HasColumnType("text")
.HasColumnName("category") .HasColumnName("category")
.HasColumnOrder(2) .HasColumnOrder(3)
.HasComment("Тип божества"); .HasComment("Категория божества");
b.Property<string>("Edicts")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("edicts")
.HasColumnOrder(7)
.HasComment("Заветы божества");
b.Property<DeityFonts>("Fonts") b.Property<DeityFonts>("Fonts")
.HasColumnType("deity_fonts") .HasColumnType("deity_fonts")
.HasColumnName("fonts") .HasColumnName("fonts")
.HasColumnOrder(3) .HasColumnOrder(4)
.HasComment("Тип божественной силы"); .HasComment("Тип божественной силы");
b.Property<string>("ReligiousSymbol")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("religious_symbol")
.HasColumnOrder(9)
.HasComment("Религиозный символ божества");
b.Property<string>("SacredAnimal")
.IsRequired()
.HasColumnType("jsonb")
.HasColumnName("sacred_animal")
.HasColumnOrder(10)
.HasComment("Священное животное божества");
b.Property<DeitySanctification>("Sanctification") b.Property<DeitySanctification>("Sanctification")
.HasColumnType("deity_sanctification") .HasColumnType("deity_sanctification")
.HasColumnName("sanctification") .HasColumnName("sanctification")
.HasColumnOrder(4) .HasColumnOrder(5)
.HasComment("Тип освящения"); .HasComment("Тип освящения");
b.Property<bool>("SanctificationMust") b.Property<bool>("SanctificationMust")
.HasColumnType("boolean") .HasColumnType("boolean")
.HasColumnName("sanctification_must") .HasColumnName("sanctification_must")
.HasColumnOrder(5) .HasColumnOrder(6)
.HasComment("Обязательное освящение"); .HasComment("Обязательное освящение");
b.Property<DeityType>("Type")
.HasColumnType("deity_type")
.HasColumnName("type")
.HasColumnOrder(2)
.HasComment("Тип божества");
b.HasKey("Id") b.HasKey("Id")
.HasName("pk_deities"); .HasName("pk_deities");
@@ -1157,21 +1199,33 @@ namespace Pf2eModel.Migrations
modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeityAttribute", b => modelBuilder.Entity("Pf2eModel.Model.Structure.DeityRelation.DeityAttribute", b =>
{ {
b.Property<int>("DeityId") b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer") .HasColumnType("integer")
.HasColumnName("deity_id") .HasColumnName("id")
.HasColumnOrder(1) .HasColumnOrder(1)
.HasComment("Идентификатор божества"); .HasComment("Идентификатор");
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<AttributeValues>("Attribute") b.Property<AttributeValues>("Attribute")
.HasColumnType("attribute_values") .HasColumnType("attribute_values")
.HasColumnName("attribute") .HasColumnName("attribute")
.HasColumnOrder(2) .HasColumnOrder(3)
.HasComment("Атрибут божества"); .HasComment("Атрибут божества");
b.HasKey("DeityId", "Attribute") b.Property<int>("DeityId")
.HasColumnType("integer")
.HasColumnName("deity_id")
.HasColumnOrder(2)
.HasComment("Идентификатор божества");
b.HasKey("Id")
.HasName("pk_deity_attributes"); .HasName("pk_deity_attributes");
b.HasIndex("DeityId")
.HasDatabaseName("ix_deity_attributes_deity_id");
b.ToTable("deity_attributes", (string)null); b.ToTable("deity_attributes", (string)null);
}); });
@@ -5,7 +5,7 @@ namespace Pf2eModel.Model.Enum;
/// <summary> /// <summary>
/// Тип божества. /// Тип божества.
/// </summary> /// </summary>
public enum DeityCategory public enum DeityType
{ {
/// <summary> /// <summary>
/// Божество. /// Божество.
+26 -12
View File
@@ -30,56 +30,70 @@ public class Deity : IEntity
/// </summary> /// </summary>
[Column(Order = 2)] [Column(Order = 2)]
[Comment("Тип божества")] [Comment("Тип божества")]
public DeityCategory Category { get; set; } public DeityType Type { get; set; }
/// <summary>
/// Категория божества.
/// </summary>
[Column(Order = 3)]
[Comment("Категория божества")]
public string Category { get; set; } = null!;
/// <summary> /// <summary>
/// Тип божественный силы. /// Тип божественный силы.
/// </summary> /// </summary>
[Column(Order = 3)] [Column(Order = 4)]
[Comment("Тип божественной силы")] [Comment("Тип божественной силы")]
public DeityFonts Fonts { get; set; } public DeityFonts Fonts { get; set; }
/// <summary> /// <summary>
/// Тип освящения. /// Тип освящения.
/// </summary> /// </summary>
[Column(Order = 4)] [Column(Order = 5)]
[Comment("Тип освящения")] [Comment("Тип освящения")]
public DeitySanctification Sanctification { get; set; } public DeitySanctification Sanctification { get; set; }
/// <summary> /// <summary>
/// Обязательное освящение. /// Обязательное освящение.
/// </summary> /// </summary>
[Column(Order = 5)] [Column(Order = 6)]
[Comment("Обязательное освящение")] [Comment("Обязательное освящение")]
public bool SanctificationMust { get; set; } public bool SanctificationMust { get; set; }
/// <summary> /// <summary>
/// Заветы божества. /// Заветы божества.
/// </summary> /// </summary>
[Column(Order = 6)] [Column(Order = 7)]
[Comment("Заветы божества")] [Comment("Заветы божества")]
public LocaleString Edicts { get; set; } = null!; public LocaleString Edicts { get; set; } = [];
/// <summary> /// <summary>
/// Анафемы божества. /// Анафемы божества.
/// </summary> /// </summary>
[Column(Order = 7)] [Column(Order = 8)]
[Comment("Анафемы божества")] [Comment("Анафемы божества")]
public LocaleString Anathema { get; set; } = null!; public LocaleString Anathema { get; set; } = [];
/// <summary> /// <summary>
/// Религиозный символ божества. /// Религиозный символ божества.
/// </summary> /// </summary>
[Column(Order = 8)] [Column(Order = 9)]
[Comment("Религиозный символ божества")] [Comment("Религиозный символ божества")]
public LocaleString ReligiousSymbol { get; set; } = null!; public LocaleString ReligiousSymbol { get; set; } = [];
/// <summary> /// <summary>
/// Священное животное божества. /// Священное животное божества.
/// </summary> /// </summary>
[Column(Order = 9)] [Column(Order = 10)]
[Comment("Священное животное божества")] [Comment("Священное животное божества")]
public LocaleString SacredAnimal { get; set; } = null!; public LocaleString SacredAnimal { get; set; } = [];
/// <summary>
/// Область покровительства божества.
/// </summary>
[Column(Order = 11)]
[Comment("Область покровительства божества")]
public LocaleString AreaOfConcern { get; set; } = [];
/// <summary> /// <summary>
/// Атрибуты божества. /// Атрибуты божества.
@@ -1,4 +1,5 @@
using System.ComponentModel.DataAnnotations.Schema; using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Pf2eModel.Model.Enum; using Pf2eModel.Model.Enum;
@@ -7,20 +8,28 @@ namespace Pf2eModel.Model.Structure.DeityRelation;
/// <summary> /// <summary>
/// Элемент отношения божества и атрибута. /// Элемент отношения божества и атрибута.
/// </summary> /// </summary>
[PrimaryKey(nameof(DeityId), nameof(Attribute))]
public class DeityAttribute public class DeityAttribute
{ {
/// <summary>
/// Идентификатор.
/// </summary>
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Column(Order = 1)]
[Comment("Идентификатор")]
public int Id { get; set; }
/// <summary> /// <summary>
/// Идентификатор божества. /// Идентификатор божества.
/// </summary> /// </summary>
[Column(Order = 1)] [Column(Order = 2)]
[Comment("Идентификатор божества")] [Comment("Идентификатор божества")]
public int DeityId { get; set; } public int DeityId { get; set; }
/// <summary> /// <summary>
/// Атрибут божества. /// Атрибут божества.
/// </summary> /// </summary>
[Column(Order = 2)] [Column(Order = 3)]
[Comment("Атрибут божества")] [Comment("Атрибут божества")]
public AttributeValues Attribute { get; set; } public AttributeValues Attribute { get; set; }
+1 -1
View File
@@ -163,7 +163,7 @@ public partial class Pf2eDbContext : DbContext
.MapEnum<AttributeValues>() .MapEnum<AttributeValues>()
.MapEnum<ClassProgressionType>() .MapEnum<ClassProgressionType>()
.MapEnum<ConditionGroup>() .MapEnum<ConditionGroup>()
.MapEnum<DeityCategory>() .MapEnum<DeityType>()
.MapEnum<DeityFonts>() .MapEnum<DeityFonts>()
.MapEnum<DeitySanctification>() .MapEnum<DeitySanctification>()
.MapEnum<ElementEnum>() .MapEnum<ElementEnum>()
+1
View File
@@ -438,6 +438,7 @@ public partial class Pf2eDbContext
BindLocaleString(entity, d => d.Edicts); BindLocaleString(entity, d => d.Edicts);
BindLocaleString(entity, d => d.ReligiousSymbol); BindLocaleString(entity, d => d.ReligiousSymbol);
BindLocaleString(entity, d => d.SacredAnimal); BindLocaleString(entity, d => d.SacredAnimal);
BindLocaleString(entity, d => d.AreaOfConcern);
entity entity
.HasMany(e => e.DeityAttributes) .HasMany(e => e.DeityAttributes)