Продолжение
This commit is contained in:
+35
@@ -0,0 +1,35 @@
|
|||||||
|
using Pf2eModel.Model.Enum;
|
||||||
|
using Pf2eModel.Model.Structure;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||||
|
|
||||||
|
[AonprdProcessor("archetype")]
|
||||||
|
internal class ArchetypeProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||||
|
{
|
||||||
|
public override EntityType Type => EntityType.Archetype;
|
||||||
|
|
||||||
|
public override Archetype Object { get; } = new();
|
||||||
|
|
||||||
|
protected override void Add() => Context.Archetypes.Add(Object);
|
||||||
|
|
||||||
|
public override void Process()
|
||||||
|
{
|
||||||
|
base.Process();
|
||||||
|
|
||||||
|
Object.Level = Input.GetOptional<int>("level");
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
protected override string GetDescription()
|
||||||
|
=> base.GetDescription() + AddedDescription([
|
||||||
|
"prerequisite_markdown",
|
||||||
|
"requirement_markdown",
|
||||||
|
"summary_markdown"
|
||||||
|
]);
|
||||||
|
}
|
||||||
+17
-1
@@ -1,4 +1,6 @@
|
|||||||
using Microsoft.Extensions.Options;
|
using LinqToDB;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eModel.Model;
|
using Pf2eModel.Model;
|
||||||
using Pf2eModel.Model.Common;
|
using Pf2eModel.Model.Common;
|
||||||
@@ -76,6 +78,8 @@ internal class ClassProcessor(AonprdProcessorInput input) : AbstractProcessor(in
|
|||||||
Object.Tradition = SpellTradition.All;
|
Object.Tradition = SpellTradition.All;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ProcessDependecies();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected ICollection<ClassTraining> GetSkillTrainings()
|
protected ICollection<ClassTraining> GetSkillTrainings()
|
||||||
@@ -192,4 +196,16 @@ internal class ClassProcessor(AonprdProcessorInput input) : AbstractProcessor(in
|
|||||||
return classTraining;
|
return classTraining;
|
||||||
}).ToList();
|
}).ToList();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void ProcessDependecies()
|
||||||
|
{
|
||||||
|
Trait? classTrait = Context.Traits.FirstOrDefault(t => t.Entity.Name == Entity.Name);
|
||||||
|
|
||||||
|
if (classTrait is null)
|
||||||
|
{
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
classTrait.Type = TraitType.Class;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+21
-10
@@ -1,15 +1,10 @@
|
|||||||
using Newtonsoft.Json.Linq;
|
using Newtonsoft.Json.Linq;
|
||||||
using Pf2eModel.Model.Enum;
|
using Pf2eModel.Model.Enum;
|
||||||
using Pf2eModel.Model.Structure;
|
using Pf2eModel.Model.Structure;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
namespace Pf2eDataScrapper.Importers.Implementations.Aonprd.DataBuilder.Processors;
|
||||||
|
|
||||||
[AonprdProcessor("feat", ["trait", "source", "skill"])]
|
[AonprdProcessor("feat", ["trait", "source", "archetype"])]
|
||||||
internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(input)
|
||||||
{
|
{
|
||||||
public override EntityType Type => EntityType.Feat;
|
public override EntityType Type => EntityType.Feat;
|
||||||
@@ -24,6 +19,9 @@ internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(inp
|
|||||||
|
|
||||||
Object.Level = Input.GetRequired<int>("level");
|
Object.Level = Input.GetRequired<int>("level");
|
||||||
|
|
||||||
|
Object.Category = (Entity.Traits.Any(t => t.Type == TraitType.Class))
|
||||||
|
? ActionCategory.ClassFeat
|
||||||
|
: ActionCategory.Unknown;
|
||||||
|
|
||||||
AonprdProcessorInput.ActionStruct action = Input.ResolveActionString(Input.GetOptional<string>("actions") ?? "");
|
AonprdProcessorInput.ActionStruct action = Input.ResolveActionString(Input.GetOptional<string>("actions") ?? "");
|
||||||
Object.Actions = action.Actions;
|
Object.Actions = action.Actions;
|
||||||
@@ -32,10 +30,6 @@ internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(inp
|
|||||||
Object.IsPassive = action.IsPassive;
|
Object.IsPassive = action.IsPassive;
|
||||||
Object.IsReaction = action.IsReaction;
|
Object.IsReaction = action.IsReaction;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Object.Extra = GenerateExtra(
|
Object.Extra = GenerateExtra(
|
||||||
"archetype",
|
"archetype",
|
||||||
"element",
|
"element",
|
||||||
@@ -46,7 +40,24 @@ internal class FeatProcessor(AonprdProcessorInput input) : AbstractProcessor(inp
|
|||||||
"frequency"
|
"frequency"
|
||||||
);
|
);
|
||||||
|
|
||||||
|
string[] archetypeStrings = Input.GetOptional<JArray>("archetype")?.Select(t => t.ToString()).ToArray() ?? [];
|
||||||
|
|
||||||
|
var archetypes = Context.Archetypes.Where(a => archetypeStrings.Contains(a.Entity.Name)).ToArray();
|
||||||
|
|
||||||
|
if (archetypes.Length != 0)
|
||||||
|
{
|
||||||
|
Object.Category = ActionCategory.Archetype;
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach (var archetype in archetypes)
|
||||||
|
{
|
||||||
|
Object.Archetypes.Add(archetype);
|
||||||
|
|
||||||
|
if (Entity.Name.Contains("Dedication"))
|
||||||
|
{
|
||||||
|
archetype.DedicationFeat = Object;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
protected override string GetDescription()
|
protected override string GetDescription()
|
||||||
|
|||||||
+47
-34
@@ -13,7 +13,7 @@ using Pf2eModel.Model.Enum;
|
|||||||
namespace Pf2eModel.Migrations
|
namespace Pf2eModel.Migrations
|
||||||
{
|
{
|
||||||
[DbContext(typeof(Pf2eDbContext))]
|
[DbContext(typeof(Pf2eDbContext))]
|
||||||
[Migration("20250420145024_1")]
|
[Migration("20250421123520_1")]
|
||||||
partial class _1
|
partial class _1
|
||||||
{
|
{
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
@@ -24,7 +24,7 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasAnnotation("ProductVersion", "9.0.4")
|
.HasAnnotation("ProductVersion", "9.0.4")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||||
@@ -36,14 +36,14 @@ namespace Pf2eModel.Migrations
|
|||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestryfeature", "classfeature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign_feature" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "uncategorized", "ancestry-feature", "class-feature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign-feature" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
modelBuilder.Entity("DeityTraining", b =>
|
modelBuilder.Entity("DeityTraining", b =>
|
||||||
@@ -622,7 +622,7 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnName("id")
|
.HasColumnName("id")
|
||||||
.HasColumnOrder(1);
|
.HasColumnOrder(1);
|
||||||
|
|
||||||
b.Property<int>("DedicationFeatId")
|
b.Property<int?>("DedicationFeatId")
|
||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("dedication_feat_id")
|
.HasColumnName("dedication_feat_id")
|
||||||
.HasColumnOrder(3);
|
.HasColumnOrder(3);
|
||||||
@@ -638,13 +638,32 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnOrder(2);
|
.HasColumnOrder(2);
|
||||||
|
|
||||||
b.HasKey("Id")
|
b.HasKey("Id")
|
||||||
.HasName("pk_archetype");
|
.HasName("pk_archetypes");
|
||||||
|
|
||||||
b.HasIndex("DedicationFeatId")
|
b.HasIndex("DedicationFeatId")
|
||||||
.IsUnique()
|
.IsUnique()
|
||||||
.HasDatabaseName("ix_archetype_dedication_feat_id");
|
.HasDatabaseName("ix_archetypes_dedication_feat_id");
|
||||||
|
|
||||||
b.ToTable("archetype", (string)null);
|
b.ToTable("archetypes", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Pf2eModel.Model.Structure.ArchetypeRelation.ArchetypeFeats", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("ArchetypeId")
|
||||||
|
.HasColumnType("integer")
|
||||||
|
.HasColumnName("archetype_id");
|
||||||
|
|
||||||
|
b.Property<int>("FeatId")
|
||||||
|
.HasColumnType("integer")
|
||||||
|
.HasColumnName("feat_id");
|
||||||
|
|
||||||
|
b.HasKey("ArchetypeId", "FeatId")
|
||||||
|
.HasName("pk_archetype_feats");
|
||||||
|
|
||||||
|
b.HasIndex("FeatId")
|
||||||
|
.HasDatabaseName("ix_archetype_feats_feat_id");
|
||||||
|
|
||||||
|
b.ToTable("archetype_feats", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
@@ -1091,11 +1110,6 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnName("actions")
|
.HasColumnName("actions")
|
||||||
.HasColumnOrder(5);
|
.HasColumnOrder(5);
|
||||||
|
|
||||||
b.Property<int>("ArchetypeId")
|
|
||||||
.HasColumnType("integer")
|
|
||||||
.HasColumnName("archetype_id")
|
|
||||||
.HasColumnOrder(10);
|
|
||||||
|
|
||||||
b.Property<ActionCategory>("Category")
|
b.Property<ActionCategory>("Category")
|
||||||
.HasColumnType("action_category")
|
.HasColumnType("action_category")
|
||||||
.HasColumnName("category")
|
.HasColumnName("category")
|
||||||
@@ -1104,7 +1118,7 @@ namespace Pf2eModel.Migrations
|
|||||||
b.Property<string>("Extra")
|
b.Property<string>("Extra")
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("extra")
|
.HasColumnName("extra")
|
||||||
.HasColumnOrder(11);
|
.HasColumnOrder(10);
|
||||||
|
|
||||||
b.Property<bool>("IsFreeAction")
|
b.Property<bool>("IsFreeAction")
|
||||||
.HasColumnType("boolean")
|
.HasColumnType("boolean")
|
||||||
@@ -1134,9 +1148,6 @@ namespace Pf2eModel.Migrations
|
|||||||
b.HasKey("Id")
|
b.HasKey("Id")
|
||||||
.HasName("pk_feats");
|
.HasName("pk_feats");
|
||||||
|
|
||||||
b.HasIndex("ArchetypeId")
|
|
||||||
.HasDatabaseName("ix_feats_archetype_id");
|
|
||||||
|
|
||||||
b.ToTable("feats", (string)null);
|
b.ToTable("feats", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1675,21 +1686,37 @@ namespace Pf2eModel.Migrations
|
|||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "DedicationFeatId")
|
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "DedicationFeatId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.HasConstraintName("fk_archetypes_feats_dedication_feat_id");
|
||||||
.HasConstraintName("fk_archetype_feats_dedication_feat_id");
|
|
||||||
|
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "Id")
|
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "Id")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("fk_archetype_entities_id");
|
.HasConstraintName("fk_archetypes_entities_id");
|
||||||
|
|
||||||
b.Navigation("DedicationFeat");
|
b.Navigation("DedicationFeat");
|
||||||
|
|
||||||
b.Navigation("Entity");
|
b.Navigation("Entity");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Pf2eModel.Model.Structure.ArchetypeRelation.ArchetypeFeats", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Pf2eModel.Model.Structure.Archetype", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ArchetypeId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired()
|
||||||
|
.HasConstraintName("fk_archetype_feats_archetypes_archetype_id");
|
||||||
|
|
||||||
|
b.HasOne("Pf2eModel.Model.Structure.Feat", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("FeatId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired()
|
||||||
|
.HasConstraintName("fk_archetype_feats_feats_feat_id");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
@@ -1903,13 +1930,6 @@ namespace Pf2eModel.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Pf2eModel.Model.Structure.Archetype", "Archetype")
|
|
||||||
.WithMany("Feats")
|
|
||||||
.HasForeignKey("ArchetypeId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired()
|
|
||||||
.HasConstraintName("fk_feats_archetype_archetype_id");
|
|
||||||
|
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Feat", "Id")
|
.HasForeignKey("Pf2eModel.Model.Structure.Feat", "Id")
|
||||||
@@ -1917,8 +1937,6 @@ namespace Pf2eModel.Migrations
|
|||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("fk_feats_entities_id");
|
.HasConstraintName("fk_feats_entities_id");
|
||||||
|
|
||||||
b.Navigation("Archetype");
|
|
||||||
|
|
||||||
b.Navigation("Entity");
|
b.Navigation("Entity");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2071,11 +2089,6 @@ namespace Pf2eModel.Migrations
|
|||||||
b.Navigation("Heritages");
|
b.Navigation("Heritages");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Archetype", b =>
|
|
||||||
{
|
|
||||||
b.Navigation("Feats");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("BackgroundBoosts");
|
b.Navigation("BackgroundBoosts");
|
||||||
+94
-88
@@ -14,7 +14,7 @@ namespace Pf2eModel.Migrations
|
|||||||
protected override void Up(MigrationBuilder migrationBuilder)
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
migrationBuilder.AlterDatabase()
|
migrationBuilder.AlterDatabase()
|
||||||
.Annotation("Npgsql:Enum:action_category", "unknown,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature")
|
.Annotation("Npgsql:Enum:action_category", "unknown,archetype,class-feature,class-feat,offensive,defensive,interaction,familiar,army_tactic,army_war_action,kingdom_activity,kingdom_feat,kingdom_feature")
|
||||||
.Annotation("Npgsql:Enum:alias_type", "legacy,english,legacy_english,hobby,other")
|
.Annotation("Npgsql:Enum:alias_type", "legacy,english,legacy_english,hobby,other")
|
||||||
.Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,dark-vision")
|
.Annotation("Npgsql:Enum:ancestry_vision", "normal,low-light-vision,dark-vision")
|
||||||
.Annotation("Npgsql:Enum:attribute_values", "free,str,dex,con,int,wis,cha")
|
.Annotation("Npgsql:Enum:attribute_values", "free,str,dex,con,int,wis,cha")
|
||||||
@@ -26,14 +26,14 @@ namespace Pf2eModel.Migrations
|
|||||||
.Annotation("Npgsql:Enum:entity_rarity", "common,uncommon,rare,unique")
|
.Annotation("Npgsql:Enum:entity_rarity", "common,uncommon,rare,unique")
|
||||||
.Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,feat,heritage,spell,language")
|
.Annotation("Npgsql:Enum:entity_type", "unknown,trait,action,ancestry,archetype,background,backpack,campaign_feature,class,condition,deity,feat,heritage,spell,language")
|
||||||
.Annotation("Npgsql:Enum:feat_action_type", "passive,action,reaction,free")
|
.Annotation("Npgsql:Enum:feat_action_type", "passive,action,reaction,free")
|
||||||
.Annotation("Npgsql:Enum:feat_category", "ancestryfeature,classfeature,calling,class,skill,general,ancestry,bonus,deityboon,curse,pfsboon,campaign_feature")
|
.Annotation("Npgsql:Enum:feat_category", "uncategorized,ancestry-feature,class-feature,calling,class,skill,general,ancestry,bonus,deityboon,curse,pfsboon,campaign-feature")
|
||||||
.Annotation("Npgsql:Enum:size", "tiny,small,medium,large")
|
.Annotation("Npgsql:Enum:size", "tiny,small,medium,large")
|
||||||
.Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens,adventures,comics,blog-posts,society")
|
.Annotation("Npgsql:Enum:source_category", "rulebook,adventure-path,lost-omens,adventures,comics,blog-posts,society")
|
||||||
.Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder")
|
.Annotation("Npgsql:Enum:spell_area_type", "burst,emanation,cone,line,square,cube,cylinder")
|
||||||
.Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash")
|
.Annotation("Npgsql:Enum:spell_damage_category", "persistent,splash")
|
||||||
.Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any")
|
.Annotation("Npgsql:Enum:spell_damage_kinds", "damage,healing,any")
|
||||||
.Annotation("Npgsql:Enum:training_stage", "untrained,trained,expert,master,legendary")
|
.Annotation("Npgsql:Enum:training_stage", "untrained,trained,expert,master,legendary")
|
||||||
.Annotation("Npgsql:Enum:trait_type", "regular,tradition");
|
.Annotation("Npgsql:Enum:trait_type", "regular,class,tradition");
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "entities",
|
name: "entities",
|
||||||
@@ -269,6 +269,31 @@ namespace Pf2eModel.Migrations
|
|||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "feats",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
id = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
category = table.Column<ActionCategory>(type: "action_category", nullable: false),
|
||||||
|
level = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
actions = table.Column<int>(type: "integer", nullable: true),
|
||||||
|
max_actions = table.Column<int>(type: "integer", nullable: true),
|
||||||
|
is_reaction = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
is_free_action = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
is_passive = table.Column<bool>(type: "boolean", nullable: false),
|
||||||
|
extra = table.Column<string>(type: "text", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("pk_feats", x => x.id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "fk_feats_entities_id",
|
||||||
|
column: x => x.id,
|
||||||
|
principalTable: "entities",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "languages",
|
name: "languages",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@@ -729,6 +754,52 @@ namespace Pf2eModel.Migrations
|
|||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "archetypes",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
id = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
level = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
dedication_feat_id = table.Column<int>(type: "integer", nullable: true),
|
||||||
|
extra = table.Column<string>(type: "text", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("pk_archetypes", x => x.id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "fk_archetypes_entities_id",
|
||||||
|
column: x => x.id,
|
||||||
|
principalTable: "entities",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "fk_archetypes_feats_dedication_feat_id",
|
||||||
|
column: x => x.dedication_feat_id,
|
||||||
|
principalTable: "feats",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "feat_prerequisites",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
id = table.Column<int>(type: "integer", nullable: false)
|
||||||
|
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
||||||
|
feat_id = table.Column<int>(type: "integer", nullable: false),
|
||||||
|
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("pk_feat_prerequisites", x => x.id);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "fk_feat_prerequisites_feats_feat_id",
|
||||||
|
column: x => x.feat_id,
|
||||||
|
principalTable: "feats",
|
||||||
|
principalColumn: "id",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "ancestry_languages",
|
name: "ancestry_languages",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
@@ -894,71 +965,23 @@ namespace Pf2eModel.Migrations
|
|||||||
});
|
});
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
migrationBuilder.CreateTable(
|
||||||
name: "archetype",
|
name: "archetype_feats",
|
||||||
columns: table => new
|
columns: table => new
|
||||||
{
|
{
|
||||||
id = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
level = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
dedication_feat_id = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
extra = table.Column<string>(type: "text", nullable: true)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("pk_archetype", x => x.id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "fk_archetype_entities_id",
|
|
||||||
column: x => x.id,
|
|
||||||
principalTable: "entities",
|
|
||||||
principalColumn: "id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "feats",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
id = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
category = table.Column<ActionCategory>(type: "action_category", nullable: false),
|
|
||||||
level = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
actions = table.Column<int>(type: "integer", nullable: true),
|
|
||||||
max_actions = table.Column<int>(type: "integer", nullable: true),
|
|
||||||
is_reaction = table.Column<bool>(type: "boolean", nullable: false),
|
|
||||||
is_free_action = table.Column<bool>(type: "boolean", nullable: false),
|
|
||||||
is_passive = table.Column<bool>(type: "boolean", nullable: false),
|
|
||||||
archetype_id = table.Column<int>(type: "integer", nullable: false),
|
archetype_id = table.Column<int>(type: "integer", nullable: false),
|
||||||
extra = table.Column<string>(type: "text", nullable: true)
|
feat_id = table.Column<int>(type: "integer", nullable: false)
|
||||||
},
|
},
|
||||||
constraints: table =>
|
constraints: table =>
|
||||||
{
|
{
|
||||||
table.PrimaryKey("pk_feats", x => x.id);
|
table.PrimaryKey("pk_archetype_feats", x => new { x.archetype_id, x.feat_id });
|
||||||
table.ForeignKey(
|
table.ForeignKey(
|
||||||
name: "fk_feats_archetype_archetype_id",
|
name: "fk_archetype_feats_archetypes_archetype_id",
|
||||||
column: x => x.archetype_id,
|
column: x => x.archetype_id,
|
||||||
principalTable: "archetype",
|
principalTable: "archetypes",
|
||||||
principalColumn: "id",
|
principalColumn: "id",
|
||||||
onDelete: ReferentialAction.Cascade);
|
onDelete: ReferentialAction.Cascade);
|
||||||
table.ForeignKey(
|
table.ForeignKey(
|
||||||
name: "fk_feats_entities_id",
|
name: "fk_archetype_feats_feats_feat_id",
|
||||||
column: x => x.id,
|
|
||||||
principalTable: "entities",
|
|
||||||
principalColumn: "id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
});
|
|
||||||
|
|
||||||
migrationBuilder.CreateTable(
|
|
||||||
name: "feat_prerequisites",
|
|
||||||
columns: table => new
|
|
||||||
{
|
|
||||||
id = table.Column<int>(type: "integer", nullable: false)
|
|
||||||
.Annotation("Npgsql:ValueGenerationStrategy", NpgsqlValueGenerationStrategy.IdentityByDefaultColumn),
|
|
||||||
feat_id = table.Column<int>(type: "integer", nullable: false),
|
|
||||||
value = table.Column<string>(type: "character varying(255)", maxLength: 255, nullable: false)
|
|
||||||
},
|
|
||||||
constraints: table =>
|
|
||||||
{
|
|
||||||
table.PrimaryKey("pk_feat_prerequisites", x => x.id);
|
|
||||||
table.ForeignKey(
|
|
||||||
name: "fk_feat_prerequisites_feats_feat_id",
|
|
||||||
column: x => x.feat_id,
|
column: x => x.feat_id,
|
||||||
principalTable: "feats",
|
principalTable: "feats",
|
||||||
principalColumn: "id",
|
principalColumn: "id",
|
||||||
@@ -981,8 +1004,13 @@ namespace Pf2eModel.Migrations
|
|||||||
column: "language_id");
|
column: "language_id");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "ix_archetype_dedication_feat_id",
|
name: "ix_archetype_feats_feat_id",
|
||||||
table: "archetype",
|
table: "archetype_feats",
|
||||||
|
column: "feat_id");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "ix_archetypes_dedication_feat_id",
|
||||||
|
table: "archetypes",
|
||||||
column: "dedication_feat_id",
|
column: "dedication_feat_id",
|
||||||
unique: true);
|
unique: true);
|
||||||
|
|
||||||
@@ -1081,11 +1109,6 @@ namespace Pf2eModel.Migrations
|
|||||||
table: "feat_prerequisites",
|
table: "feat_prerequisites",
|
||||||
column: "feat_id");
|
column: "feat_id");
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
|
||||||
name: "ix_feats_archetype_id",
|
|
||||||
table: "feats",
|
|
||||||
column: "archetype_id");
|
|
||||||
|
|
||||||
migrationBuilder.CreateIndex(
|
migrationBuilder.CreateIndex(
|
||||||
name: "ix_heritages_ancestry_id",
|
name: "ix_heritages_ancestry_id",
|
||||||
table: "heritages",
|
table: "heritages",
|
||||||
@@ -1110,31 +1133,11 @@ namespace Pf2eModel.Migrations
|
|||||||
name: "ix_spell_defenses_spell_id",
|
name: "ix_spell_defenses_spell_id",
|
||||||
table: "spell_defenses",
|
table: "spell_defenses",
|
||||||
column: "spell_id");
|
column: "spell_id");
|
||||||
|
|
||||||
migrationBuilder.AddForeignKey(
|
|
||||||
name: "fk_archetype_feats_dedication_feat_id",
|
|
||||||
table: "archetype",
|
|
||||||
column: "dedication_feat_id",
|
|
||||||
principalTable: "feats",
|
|
||||||
principalColumn: "id",
|
|
||||||
onDelete: ReferentialAction.Cascade);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <inheritdoc />
|
/// <inheritdoc />
|
||||||
protected override void Down(MigrationBuilder migrationBuilder)
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
{
|
{
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "fk_archetype_entities_id",
|
|
||||||
table: "archetype");
|
|
||||||
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "fk_feats_entities_id",
|
|
||||||
table: "feats");
|
|
||||||
|
|
||||||
migrationBuilder.DropForeignKey(
|
|
||||||
name: "fk_archetype_feats_dedication_feat_id",
|
|
||||||
table: "archetype");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "actions");
|
name: "actions");
|
||||||
|
|
||||||
@@ -1147,6 +1150,9 @@ namespace Pf2eModel.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "ancestry_languages");
|
name: "ancestry_languages");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "archetype_feats");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "background_boosts");
|
name: "background_boosts");
|
||||||
|
|
||||||
@@ -1225,6 +1231,9 @@ namespace Pf2eModel.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "languages");
|
name: "languages");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "archetypes");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "backgrounds");
|
name: "backgrounds");
|
||||||
|
|
||||||
@@ -1255,14 +1264,11 @@ namespace Pf2eModel.Migrations
|
|||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "spells");
|
name: "spells");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
|
||||||
name: "entities");
|
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "feats");
|
name: "feats");
|
||||||
|
|
||||||
migrationBuilder.DropTable(
|
migrationBuilder.DropTable(
|
||||||
name: "archetype");
|
name: "entities");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -21,7 +21,7 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasAnnotation("ProductVersion", "9.0.4")
|
.HasAnnotation("ProductVersion", "9.0.4")
|
||||||
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
.HasAnnotation("Relational:MaxIdentifierLength", 63);
|
||||||
|
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "action_category", new[] { "unknown", "archetype", "class-feature", "class-feat", "offensive", "defensive", "interaction", "familiar", "army_tactic", "army_war_action", "kingdom_activity", "kingdom_feat", "kingdom_feature" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "alias_type", new[] { "legacy", "english", "legacy_english", "hobby", "other" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "ancestry_vision", new[] { "normal", "low-light-vision", "dark-vision" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "attribute_values", new[] { "free", "str", "dex", "con", "int", "wis", "cha" });
|
||||||
@@ -33,14 +33,14 @@ namespace Pf2eModel.Migrations
|
|||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_rarity", new[] { "common", "uncommon", "rare", "unique" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "condition", "deity", "feat", "heritage", "spell", "language" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "ancestryfeature", "classfeature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign_feature" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_category", new[] { "uncategorized", "ancestry-feature", "class-feature", "calling", "class", "skill", "general", "ancestry", "bonus", "deityboon", "curse", "pfsboon", "campaign-feature" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "size", new[] { "tiny", "small", "medium", "large" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "source_category", new[] { "rulebook", "adventure-path", "lost-omens", "adventures", "comics", "blog-posts", "society" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_area_type", new[] { "burst", "emanation", "cone", "line", "square", "cube", "cylinder" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
|
||||||
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "tradition" });
|
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
|
||||||
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
|
||||||
|
|
||||||
modelBuilder.Entity("DeityTraining", b =>
|
modelBuilder.Entity("DeityTraining", b =>
|
||||||
@@ -619,7 +619,7 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnName("id")
|
.HasColumnName("id")
|
||||||
.HasColumnOrder(1);
|
.HasColumnOrder(1);
|
||||||
|
|
||||||
b.Property<int>("DedicationFeatId")
|
b.Property<int?>("DedicationFeatId")
|
||||||
.HasColumnType("integer")
|
.HasColumnType("integer")
|
||||||
.HasColumnName("dedication_feat_id")
|
.HasColumnName("dedication_feat_id")
|
||||||
.HasColumnOrder(3);
|
.HasColumnOrder(3);
|
||||||
@@ -635,13 +635,32 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnOrder(2);
|
.HasColumnOrder(2);
|
||||||
|
|
||||||
b.HasKey("Id")
|
b.HasKey("Id")
|
||||||
.HasName("pk_archetype");
|
.HasName("pk_archetypes");
|
||||||
|
|
||||||
b.HasIndex("DedicationFeatId")
|
b.HasIndex("DedicationFeatId")
|
||||||
.IsUnique()
|
.IsUnique()
|
||||||
.HasDatabaseName("ix_archetype_dedication_feat_id");
|
.HasDatabaseName("ix_archetypes_dedication_feat_id");
|
||||||
|
|
||||||
b.ToTable("archetype", (string)null);
|
b.ToTable("archetypes", (string)null);
|
||||||
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Pf2eModel.Model.Structure.ArchetypeRelation.ArchetypeFeats", b =>
|
||||||
|
{
|
||||||
|
b.Property<int>("ArchetypeId")
|
||||||
|
.HasColumnType("integer")
|
||||||
|
.HasColumnName("archetype_id");
|
||||||
|
|
||||||
|
b.Property<int>("FeatId")
|
||||||
|
.HasColumnType("integer")
|
||||||
|
.HasColumnName("feat_id");
|
||||||
|
|
||||||
|
b.HasKey("ArchetypeId", "FeatId")
|
||||||
|
.HasName("pk_archetype_feats");
|
||||||
|
|
||||||
|
b.HasIndex("FeatId")
|
||||||
|
.HasDatabaseName("ix_archetype_feats_feat_id");
|
||||||
|
|
||||||
|
b.ToTable("archetype_feats", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
@@ -1088,11 +1107,6 @@ namespace Pf2eModel.Migrations
|
|||||||
.HasColumnName("actions")
|
.HasColumnName("actions")
|
||||||
.HasColumnOrder(5);
|
.HasColumnOrder(5);
|
||||||
|
|
||||||
b.Property<int>("ArchetypeId")
|
|
||||||
.HasColumnType("integer")
|
|
||||||
.HasColumnName("archetype_id")
|
|
||||||
.HasColumnOrder(10);
|
|
||||||
|
|
||||||
b.Property<ActionCategory>("Category")
|
b.Property<ActionCategory>("Category")
|
||||||
.HasColumnType("action_category")
|
.HasColumnType("action_category")
|
||||||
.HasColumnName("category")
|
.HasColumnName("category")
|
||||||
@@ -1101,7 +1115,7 @@ namespace Pf2eModel.Migrations
|
|||||||
b.Property<string>("Extra")
|
b.Property<string>("Extra")
|
||||||
.HasColumnType("text")
|
.HasColumnType("text")
|
||||||
.HasColumnName("extra")
|
.HasColumnName("extra")
|
||||||
.HasColumnOrder(11);
|
.HasColumnOrder(10);
|
||||||
|
|
||||||
b.Property<bool>("IsFreeAction")
|
b.Property<bool>("IsFreeAction")
|
||||||
.HasColumnType("boolean")
|
.HasColumnType("boolean")
|
||||||
@@ -1131,9 +1145,6 @@ namespace Pf2eModel.Migrations
|
|||||||
b.HasKey("Id")
|
b.HasKey("Id")
|
||||||
.HasName("pk_feats");
|
.HasName("pk_feats");
|
||||||
|
|
||||||
b.HasIndex("ArchetypeId")
|
|
||||||
.HasDatabaseName("ix_feats_archetype_id");
|
|
||||||
|
|
||||||
b.ToTable("feats", (string)null);
|
b.ToTable("feats", (string)null);
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -1672,21 +1683,37 @@ namespace Pf2eModel.Migrations
|
|||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "DedicationFeatId")
|
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "DedicationFeatId")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.HasConstraintName("fk_archetypes_feats_dedication_feat_id");
|
||||||
.HasConstraintName("fk_archetype_feats_dedication_feat_id");
|
|
||||||
|
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "Id")
|
.HasForeignKey("Pf2eModel.Model.Structure.Archetype", "Id")
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("fk_archetype_entities_id");
|
.HasConstraintName("fk_archetypes_entities_id");
|
||||||
|
|
||||||
b.Navigation("DedicationFeat");
|
b.Navigation("DedicationFeat");
|
||||||
|
|
||||||
b.Navigation("Entity");
|
b.Navigation("Entity");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
modelBuilder.Entity("Pf2eModel.Model.Structure.ArchetypeRelation.ArchetypeFeats", b =>
|
||||||
|
{
|
||||||
|
b.HasOne("Pf2eModel.Model.Structure.Archetype", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("ArchetypeId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired()
|
||||||
|
.HasConstraintName("fk_archetype_feats_archetypes_archetype_id");
|
||||||
|
|
||||||
|
b.HasOne("Pf2eModel.Model.Structure.Feat", null)
|
||||||
|
.WithMany()
|
||||||
|
.HasForeignKey("FeatId")
|
||||||
|
.OnDelete(DeleteBehavior.Cascade)
|
||||||
|
.IsRequired()
|
||||||
|
.HasConstraintName("fk_archetype_feats_feats_feat_id");
|
||||||
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
@@ -1900,13 +1927,6 @@ namespace Pf2eModel.Migrations
|
|||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Feat", b =>
|
||||||
{
|
{
|
||||||
b.HasOne("Pf2eModel.Model.Structure.Archetype", "Archetype")
|
|
||||||
.WithMany("Feats")
|
|
||||||
.HasForeignKey("ArchetypeId")
|
|
||||||
.OnDelete(DeleteBehavior.Cascade)
|
|
||||||
.IsRequired()
|
|
||||||
.HasConstraintName("fk_feats_archetype_archetype_id");
|
|
||||||
|
|
||||||
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
|
||||||
.WithOne()
|
.WithOne()
|
||||||
.HasForeignKey("Pf2eModel.Model.Structure.Feat", "Id")
|
.HasForeignKey("Pf2eModel.Model.Structure.Feat", "Id")
|
||||||
@@ -1914,8 +1934,6 @@ namespace Pf2eModel.Migrations
|
|||||||
.IsRequired()
|
.IsRequired()
|
||||||
.HasConstraintName("fk_feats_entities_id");
|
.HasConstraintName("fk_feats_entities_id");
|
||||||
|
|
||||||
b.Navigation("Archetype");
|
|
||||||
|
|
||||||
b.Navigation("Entity");
|
b.Navigation("Entity");
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -2068,11 +2086,6 @@ namespace Pf2eModel.Migrations
|
|||||||
b.Navigation("Heritages");
|
b.Navigation("Heritages");
|
||||||
});
|
});
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Archetype", b =>
|
|
||||||
{
|
|
||||||
b.Navigation("Feats");
|
|
||||||
});
|
|
||||||
|
|
||||||
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
modelBuilder.Entity("Pf2eModel.Model.Structure.Background", b =>
|
||||||
{
|
{
|
||||||
b.Navigation("BackgroundBoosts");
|
b.Navigation("BackgroundBoosts");
|
||||||
|
|||||||
@@ -6,6 +6,19 @@ public enum ActionCategory
|
|||||||
{
|
{
|
||||||
Unknown,
|
Unknown,
|
||||||
|
|
||||||
|
[PgName("archetype")]
|
||||||
|
Archetype,
|
||||||
|
|
||||||
|
[PgName("class-feature")]
|
||||||
|
ClassFeature,
|
||||||
|
|
||||||
|
[PgName("class-feat")]
|
||||||
|
ClassFeat,
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
[PgName("offensive")]
|
[PgName("offensive")]
|
||||||
Offensive,
|
Offensive,
|
||||||
|
|
||||||
|
|||||||
@@ -4,11 +4,14 @@ namespace Pf2eModel.Model.Enum;
|
|||||||
|
|
||||||
public enum FeatCategory
|
public enum FeatCategory
|
||||||
{
|
{
|
||||||
[PgName("ancestryfeature")]
|
[PgName("uncategorized")]
|
||||||
Ancestryfeature,
|
Uncategorized,
|
||||||
|
|
||||||
[PgName("classfeature")]
|
[PgName("ancestry-feature")]
|
||||||
Classfeature,
|
AncestryFeature,
|
||||||
|
|
||||||
|
[PgName("class-feature")]
|
||||||
|
ClassFeature,
|
||||||
|
|
||||||
[PgName("calling")]
|
[PgName("calling")]
|
||||||
Calling,
|
Calling,
|
||||||
@@ -37,6 +40,6 @@ public enum FeatCategory
|
|||||||
[PgName("pfsboon")]
|
[PgName("pfsboon")]
|
||||||
Pfsboon,
|
Pfsboon,
|
||||||
|
|
||||||
[PgName("campaign_feature")]
|
[PgName("campaign-feature")]
|
||||||
CampaignFeature,
|
CampaignFeature,
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,9 @@ public enum TraitType
|
|||||||
[PgName("regular")]
|
[PgName("regular")]
|
||||||
Regular,
|
Regular,
|
||||||
|
|
||||||
|
[PgName("class")]
|
||||||
|
Class,
|
||||||
|
|
||||||
[PgName("tradition")]
|
[PgName("tradition")]
|
||||||
Tradition
|
Tradition
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using Pf2eModel.Model.Base;
|
using Pf2eModel.Model.Base;
|
||||||
|
using Pf2eModel.Model.Enum;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
@@ -9,6 +10,7 @@ using System.Threading.Tasks;
|
|||||||
|
|
||||||
namespace Pf2eModel.Model.Structure;
|
namespace Pf2eModel.Model.Structure;
|
||||||
|
|
||||||
|
[EntityOfType(EntityType.Archetype)]
|
||||||
public class Archetype : IEntity
|
public class Archetype : IEntity
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
@@ -21,7 +23,7 @@ public class Archetype : IEntity
|
|||||||
public int Level { get; set; }
|
public int Level { get; set; }
|
||||||
|
|
||||||
[Column(Order = 3)]
|
[Column(Order = 3)]
|
||||||
public int DedicationFeatId { get; set; }
|
public int? DedicationFeatId { get; set; } = null;
|
||||||
|
|
||||||
[Column(Order = 4)]
|
[Column(Order = 4)]
|
||||||
public string? Extra { get; set; }
|
public string? Extra { get; set; }
|
||||||
|
|||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
using System.Linq;
|
||||||
|
using System.Text;
|
||||||
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
|
namespace Pf2eModel.Model.Structure.ArchetypeRelation;
|
||||||
|
|
||||||
|
[PrimaryKey(nameof(ArchetypeId), nameof(FeatId))]
|
||||||
|
internal class ArchetypeFeats
|
||||||
|
{
|
||||||
|
public int ArchetypeId { get; set; }
|
||||||
|
|
||||||
|
public int FeatId { get; set; }
|
||||||
|
}
|
||||||
@@ -37,13 +37,11 @@ public partial class Feat : IEntity
|
|||||||
[Column(Order = 9)]
|
[Column(Order = 9)]
|
||||||
public bool IsPassive { get; set; } = false;
|
public bool IsPassive { get; set; } = false;
|
||||||
|
|
||||||
[Column(Order = 10)]
|
|
||||||
public int ArchetypeId { get; set; }
|
|
||||||
|
|
||||||
[Column(Order = 11)]
|
[Column(Order = 10)]
|
||||||
public string? Extra { get; set; }
|
public string? Extra { get; set; }
|
||||||
|
|
||||||
public Archetype Archetype { get; set; } = null!;
|
public virtual ICollection<Archetype> Archetypes { get; set; } = [];
|
||||||
|
|
||||||
public virtual ICollection<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
|
public virtual ICollection<FeatPrerequisite> FeatPrerequisites { get; set; } = [];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,8 @@ public partial class Pf2eDbContext : DbContext
|
|||||||
|
|
||||||
public virtual DbSet<Ancestry> Ancestries { get; set; }
|
public virtual DbSet<Ancestry> Ancestries { get; set; }
|
||||||
|
|
||||||
|
public virtual DbSet<Archetype> Archetypes { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<AncestryBoost> AncestryBoosts { get; set; }
|
public virtual DbSet<AncestryBoost> AncestryBoosts { get; set; }
|
||||||
|
|
||||||
public virtual DbSet<AncestryItem> AncestryItems { get; set; }
|
public virtual DbSet<AncestryItem> AncestryItems { get; set; }
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ using Pf2eModel.Model.Common;
|
|||||||
using Pf2eModel.Model.Enum;
|
using Pf2eModel.Model.Enum;
|
||||||
using Pf2eModel.Model.Structure;
|
using Pf2eModel.Model.Structure;
|
||||||
using Pf2eModel.Model.Structure.AncestryRelation;
|
using Pf2eModel.Model.Structure.AncestryRelation;
|
||||||
|
using Pf2eModel.Model.Structure.ArchetypeRelation;
|
||||||
using Pf2eModel.Model.Structure.BackgroundRelation;
|
using Pf2eModel.Model.Structure.BackgroundRelation;
|
||||||
using Pf2eModel.Model.Structure.ClassRelation;
|
using Pf2eModel.Model.Structure.ClassRelation;
|
||||||
using Pf2eModel.Model.Structure.DeityRelation;
|
using Pf2eModel.Model.Structure.DeityRelation;
|
||||||
@@ -179,9 +180,11 @@ public partial class Pf2eDbContext
|
|||||||
.HasForeignKey<Archetype>(a => a.DedicationFeatId)
|
.HasForeignKey<Archetype>(a => a.DedicationFeatId)
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
.OnDelete(DeleteBehavior.Cascade);
|
||||||
|
|
||||||
entity.HasMany(a => a.Feats).WithOne(f => f.Archetype)
|
entity.HasMany(a => a.Feats).WithMany(f => f.Archetypes)
|
||||||
.HasForeignKey(f => f.ArchetypeId)
|
.UsingEntity<ArchetypeFeats>(
|
||||||
.OnDelete(DeleteBehavior.Cascade);
|
l => l.HasOne<Feat>().WithMany().HasForeignKey(af => af.FeatId),
|
||||||
|
r => r.HasOne<Archetype>().WithMany().HasForeignKey(af => af.ArchetypeId)
|
||||||
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Background
|
// Background
|
||||||
|
|||||||
@@ -39,12 +39,12 @@ internal class EntityConverter : JsonConverter
|
|||||||
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
public override void WriteJson(JsonWriter writer, object? value, JsonSerializer serializer)
|
||||||
{
|
{
|
||||||
Dictionary<string, object?> dictionary = DictionarySerialization(value!);
|
Dictionary<string, object?> dictionary = DictionarySerialization(value!);
|
||||||
|
/*
|
||||||
if (value.GetType() != typeof(Entity))
|
if (value.GetType() != typeof(Entity))
|
||||||
{
|
{
|
||||||
dictionary.Remove("Entity");
|
dictionary.Remove("Entity");
|
||||||
}
|
}
|
||||||
|
*/
|
||||||
switch (value)
|
switch (value)
|
||||||
{
|
{
|
||||||
case Entity entity:
|
case Entity entity:
|
||||||
@@ -61,6 +61,7 @@ internal class EntityConverter : JsonConverter
|
|||||||
foreach (KeyValuePair<string, object> keyValuePair in dictionary)
|
foreach (KeyValuePair<string, object> keyValuePair in dictionary)
|
||||||
{
|
{
|
||||||
writer.WritePropertyName(keyValuePair.Key, true);
|
writer.WritePropertyName(keyValuePair.Key, true);
|
||||||
|
|
||||||
serializer.Serialize(writer, keyValuePair.Value);
|
serializer.Serialize(writer, keyValuePair.Value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -175,7 +175,8 @@ public partial class MainViewForm : Form
|
|||||||
Converters = [
|
Converters = [
|
||||||
new EntityConverter(),
|
new EntityConverter(),
|
||||||
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() },
|
new StringEnumConverter { NamingStrategy = new CamelCaseNamingStrategy() },
|
||||||
]
|
],
|
||||||
|
ReferenceLoopHandling = ReferenceLoopHandling.Ignore,
|
||||||
};
|
};
|
||||||
|
|
||||||
string result = JsonConvert.SerializeObject(entity, settings);
|
string result = JsonConvert.SerializeObject(entity, settings);
|
||||||
@@ -195,6 +196,14 @@ public partial class MainViewForm : Form
|
|||||||
.Include(a => a.AncestryBoosts)
|
.Include(a => a.AncestryBoosts)
|
||||||
.FirstOrDefault(e => e.Id == entity.Id);
|
.FirstOrDefault(e => e.Id == entity.Id);
|
||||||
|
|
||||||
|
case EntityType.Archetype:
|
||||||
|
return Context.Archetypes
|
||||||
|
.Include(a => a.DedicationFeat)
|
||||||
|
.ThenInclude(f => f.Entity)
|
||||||
|
.Include(a => a.Feats)
|
||||||
|
.ThenInclude(f => f.Entity)
|
||||||
|
.FirstOrDefault(a => a.Id == entity.Id);
|
||||||
|
|
||||||
case EntityType.Background:
|
case EntityType.Background:
|
||||||
return Context.Backgrounds
|
return Context.Backgrounds
|
||||||
.Include(b => b.BackgroundBoosts)
|
.Include(b => b.BackgroundBoosts)
|
||||||
@@ -211,6 +220,12 @@ public partial class MainViewForm : Form
|
|||||||
.Include(c => c.ClassProgressions)
|
.Include(c => c.ClassProgressions)
|
||||||
.FirstOrDefault(c => c.Id == entity.Id);
|
.FirstOrDefault(c => c.Id == entity.Id);
|
||||||
|
|
||||||
|
case EntityType.Feat:
|
||||||
|
return Context.Feats
|
||||||
|
.Include(f => f.Archetypes)
|
||||||
|
.ThenInclude(a => a.Entity)
|
||||||
|
.FirstOrDefault(f => f.Id == entity.Id);
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Type type = EntityOfTypeAttribute.Resolve(entity);
|
Type type = EntityOfTypeAttribute.Resolve(entity);
|
||||||
return (IEntity?) Context.Find(type, entity.Id);
|
return (IEntity?) Context.Find(type, entity.Id);
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# Pf2e Data Screapper
|
# Pf2e Data Scrapper
|
||||||
|
|
||||||
Программа обработки данных для игры Pathfinder 2e для создания БД для дальнейшего использования на сайте локализации Pf2e.
|
Программа обработки данных для игры Pathfinder 2e для создания БД для дальнейшего использования на сайте локализации Pf2e.
|
||||||
|
|
||||||
@@ -70,75 +70,85 @@ schema.AddValue(data); // Добавление данных
|
|||||||
### Общее
|
### Общее
|
||||||
- [x] action.yaml
|
- [x] action.yaml
|
||||||
- [x] ancestry.yaml
|
- [x] ancestry.yaml
|
||||||
- [ ] apparition.yaml
|
- [x] archetype.yaml
|
||||||
- [ ] arcane-school.yaml
|
- [x] background.yaml
|
||||||
- [ ] arcane-thesis.yaml
|
|
||||||
- [ ] archetype.yaml
|
|
||||||
- [ ] article.yaml
|
|
||||||
- [ ] background.yaml
|
|
||||||
- [ ] bloodline.yaml
|
|
||||||
- [ ] category-page.yaml
|
|
||||||
- [ ] cause.yaml
|
|
||||||
- [ ] class-feature.yaml
|
|
||||||
- [ ] class-kit.yaml
|
- [ ] class-kit.yaml
|
||||||
- [ ] class-sample.yaml
|
- [ ] class-sample.yaml
|
||||||
- [ ] class.yaml
|
- [x] class.yaml
|
||||||
- [ ] condition.yaml
|
- [ ] condition.yaml
|
||||||
- [ ] conscious-mind.yaml
|
|
||||||
- [ ] creature-ability.yaml
|
- [ ] creature-ability.yaml
|
||||||
- [ ] curse.yaml
|
- [ ] curse.yaml
|
||||||
- [ ] deity-category.yaml
|
|
||||||
- [ ] deity.yaml
|
|
||||||
- [ ] deviant-ability-classification.yaml
|
- [ ] deviant-ability-classification.yaml
|
||||||
- [ ] disease.yaml
|
- [ ] disease.yaml
|
||||||
- [ ] doctrine.yaml
|
|
||||||
- [ ] domain.yaml
|
|
||||||
- [ ] druidic-order.yaml
|
|
||||||
- [ ] eidolon.yaml
|
|
||||||
- [ ] element.yaml
|
|
||||||
- [ ] epithet.yaml
|
|
||||||
- [x] feat.yaml
|
|
||||||
- [ ] hazard.yaml
|
|
||||||
- [ ] hellknight-order.yaml
|
|
||||||
- [ ] heritage.yaml
|
- [ ] heritage.yaml
|
||||||
- [ ] hunters-edge.yaml
|
|
||||||
- [ ] hybrid-study.yaml
|
|
||||||
- [ ] ikon.yaml
|
|
||||||
- [ ] implement.yaml
|
|
||||||
- [ ] innovation.yaml
|
|
||||||
- [ ] instinct.yaml
|
|
||||||
- [ ] kingdom-event.yaml
|
- [ ] kingdom-event.yaml
|
||||||
- [ ] kingdom-structure.yaml
|
- [ ] kingdom-structure.yaml
|
||||||
- [x] language.yaml
|
- [x] language.yaml
|
||||||
- [ ] lesson.yaml
|
|
||||||
- [ ] methodology.yaml
|
|
||||||
- [ ] muse.yaml
|
|
||||||
- [ ] mystery.yaml
|
|
||||||
- [ ] mythic-calling.yaml
|
- [ ] mythic-calling.yaml
|
||||||
- [ ] patron.yaml
|
|
||||||
- [ ] plane.yaml
|
- [ ] plane.yaml
|
||||||
- [ ] practice.yaml
|
|
||||||
- [ ] racket.yaml
|
|
||||||
- [ ] relic.yaml
|
- [ ] relic.yaml
|
||||||
- [ ] research-field.yaml
|
|
||||||
- [ ] ritual.yaml
|
- [ ] ritual.yaml
|
||||||
- [ ] rules.yaml
|
|
||||||
- [ ] sidebar.yaml
|
- [ ] sidebar.yaml
|
||||||
- [ ] skill-general-action.yaml
|
- [ ] skill-general-action.yaml
|
||||||
- [x] skill.yaml
|
- [x] skill.yaml
|
||||||
- [x] source.yaml
|
- [x] source.yaml
|
||||||
- [ ] spell.yaml
|
- [ ] spell.yaml
|
||||||
- [ ] style.yaml
|
|
||||||
- [ ] subconscious-mind.yaml
|
|
||||||
- [ ] tenet.yaml
|
|
||||||
- [ ] tradition.yaml
|
- [ ] tradition.yaml
|
||||||
- [x] trait.yaml
|
- [x] trait.yaml
|
||||||
- [ ] warfare-army.yaml
|
- [ ] warfare-army.yaml
|
||||||
- [ ] warfare-tactic.yaml
|
- [ ] warfare-tactic.yaml
|
||||||
- [ ] way.yaml
|
|
||||||
- [ ] weapon-sub.yaml
|
- [ ] weapon-sub.yaml
|
||||||
- [ ] weather-hazard.yaml
|
- [ ] weather-hazard.yaml
|
||||||
|
|
||||||
|
**Тексты**
|
||||||
|
- [ ] article.yaml
|
||||||
|
- [ ] category-page.yaml
|
||||||
|
- [ ] rules.yaml
|
||||||
|
|
||||||
|
**Боги**
|
||||||
|
- [ ] deity.yaml
|
||||||
|
- [ ] deity-category.yaml
|
||||||
|
- [ ] domain.yaml
|
||||||
|
|
||||||
|
**Фиты**
|
||||||
|
- [x] feat.yaml
|
||||||
|
- [ ] class-feature.yaml
|
||||||
|
|
||||||
|
**Подклассы**
|
||||||
|
- [ ] research-field.yaml (Alchemist)
|
||||||
|
- [ ] apparition.yaml (Animist)
|
||||||
|
- [ ] practice.yaml (Animist)
|
||||||
|
- [ ] instinct.yaml (Barbarian)
|
||||||
|
- [ ] muse.yaml (Bard)
|
||||||
|
- [ ] cause.yaml (Champion)
|
||||||
|
- [ ] tenet.yaml (Champion)
|
||||||
|
- [ ] doctrine.yaml (Cleric)
|
||||||
|
- [ ] druidic-order.yaml (Druid)
|
||||||
|
- [ ] methodology.yaml (Investigator)
|
||||||
|
- [ ] element.yaml (Kineticist)
|
||||||
|
- [ ] hybrid-study.yaml (Magus)
|
||||||
|
- [ ] mystery.yaml (Oracle)
|
||||||
|
- [ ] conscious-mind.yaml (Psychic)
|
||||||
|
- [ ] subconscious-mind.yaml (Psychic)
|
||||||
|
- [ ] hunters-edge.yaml (Ranger)
|
||||||
|
- [ ] racket.yaml (Rogue)
|
||||||
|
- [ ] bloodline.yaml (Sorcerer)
|
||||||
|
- [ ] style.yaml (Swashbuckler)
|
||||||
|
- [ ] implement.yaml (Thaumaturge)
|
||||||
|
- [ ] lesson.yaml (Witch)
|
||||||
|
- [ ] patron.yaml (Witch)
|
||||||
|
- [ ] arcane-school.yaml (Wizard)
|
||||||
|
- [ ] arcane-thesis.yaml (Wizard)
|
||||||
|
- [ ] way.yaml (Gunslinger)
|
||||||
|
- [ ] innovation.yaml (Innovator)
|
||||||
|
- [ ] ikon.yaml (Exemplar)
|
||||||
|
- [ ] epithet.yaml (Exemplar)
|
||||||
|
|
||||||
|
- [ ] hellknight-order.yaml
|
||||||
|
- [ ] eidolon.yaml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
### Бестиарий
|
### Бестиарий
|
||||||
|
|
||||||
Готово **0** из 10
|
Готово **0** из 10
|
||||||
@@ -169,6 +179,7 @@ schema.AddValue(data); // Добавление данных
|
|||||||
- [ ] siege-weapon.yaml
|
- [ ] siege-weapon.yaml
|
||||||
- [ ] vehicle.yaml
|
- [ ] vehicle.yaml
|
||||||
- [ ] weapon.yaml
|
- [ ] weapon.yaml
|
||||||
|
- [ ] hazard.yaml
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user