Ритуалы!

This commit is contained in:
2025-05-06 19:25:11 +04:00
parent 5693fa8ce8
commit 6abda701a4
28 changed files with 1543 additions and 244 deletions
@@ -31,7 +31,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_fonts", new[] { "none", "heal", "harm", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "deity_sanctification", new[] { "holy", "unholy", "any" });
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", "subclass_group", "subclass", "condition", "deity", "feat", "heritage", "spell", "language" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "entity_type", new[] { "unknown", "trait", "action", "ancestry", "archetype", "background", "backpack", "campaign_feature", "class", "subclass_group", "subclass", "condition", "deity", "feat", "heritage", "spell", "ritual", "language" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "feat_action_type", new[] { "passive", "action", "reaction", "free" });
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, "locale_type", new[] { "english", "legacy_english", "russian", "legacy", "hobby", "other" });
@@ -41,7 +41,7 @@ namespace Pf2eModel.Migrations
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_category", new[] { "persistent", "splash" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_damage_kinds", new[] { "damage", "healing", "any" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "spell_tradition", new[] { "none", "divine", "occult", "arcane", "primal", "elemental", "all" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_stage", new[] { "untrained", "trained", "expert", "master", "legendary" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "training_rank", new[] { "untrained", "trained", "expert", "master", "legendary", "mythic" });
NpgsqlModelBuilderExtensions.HasPostgresEnum(modelBuilder, "trait_type", new[] { "regular", "class", "tradition" });
NpgsqlModelBuilderExtensions.UseIdentityByDefaultColumns(modelBuilder);
@@ -705,9 +705,9 @@ namespace Pf2eModel.Migrations
.HasColumnName("background_id")
.HasColumnOrder(2);
b.Property<TrainingStage>("Level")
.HasColumnType("training_stage")
.HasColumnName("level")
b.Property<TrainingRank>("Rank")
.HasColumnType("training_rank")
.HasColumnName("rank")
.HasColumnOrder(4);
b.Property<int>("TrainingId")
@@ -851,9 +851,9 @@ namespace Pf2eModel.Migrations
.HasColumnName("class_id")
.HasColumnOrder(2);
b.Property<TrainingStage>("Stage")
.HasColumnType("training_stage")
.HasColumnName("stage")
b.Property<TrainingRank>("Rank")
.HasColumnType("training_rank")
.HasColumnName("rank")
.HasColumnOrder(4);
b.Property<int?>("TrainingId")
@@ -902,9 +902,9 @@ namespace Pf2eModel.Migrations
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<TrainingStage>("Stage")
.HasColumnType("training_stage")
.HasColumnName("stage")
b.Property<TrainingRank>("Rank")
.HasColumnType("training_rank")
.HasColumnName("rank")
.HasColumnOrder(4);
b.Property<int>("SubclassId")
@@ -1235,6 +1235,163 @@ namespace Pf2eModel.Migrations
b.ToTable("languages", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Ritual", b =>
{
b.Property<int>("Id")
.HasColumnType("integer")
.HasColumnName("id")
.HasColumnOrder(1);
b.Property<int>("CastTime")
.HasColumnType("integer")
.HasColumnName("cast_time")
.HasColumnOrder(3)
.HasComment("Продолжительность ритуала в секундах");
b.Property<string>("Cost")
.HasColumnType("jsonb")
.HasColumnName("cost")
.HasColumnOrder(14);
b.Property<int>("Duration")
.HasColumnType("integer")
.HasColumnName("duration")
.HasColumnOrder(4)
.HasComment("Время действия эффекта ритуала в секундах");
b.PrimitiveCollection<int[]>("Elements")
.IsRequired()
.HasColumnType("integer[]")
.HasColumnName("elements")
.HasColumnOrder(5);
b.Property<int>("Level")
.HasColumnType("integer")
.HasColumnName("level")
.HasColumnOrder(2);
b.Property<TrainingRank>("PrimaryCheckRank")
.HasColumnType("training_rank")
.HasColumnName("primary_check_rank")
.HasColumnOrder(7);
b.Property<string>("PrimaryCheckSuffix")
.HasColumnType("jsonb")
.HasColumnName("primary_check_suffix")
.HasColumnOrder(8);
b.Property<int>("Range")
.HasColumnType("integer")
.HasColumnName("range")
.HasColumnOrder(6);
b.Property<string>("RangeString")
.HasColumnType("jsonb")
.HasColumnName("range_string")
.HasColumnOrder(12);
b.Property<string>("Requirement")
.HasColumnType("jsonb")
.HasColumnName("requirement")
.HasColumnOrder(15);
b.Property<int>("SecondaryCasters")
.HasColumnType("integer")
.HasColumnName("secondary_casters")
.HasColumnOrder(9);
b.Property<int>("SecondaryCastersMax")
.HasColumnType("integer")
.HasColumnName("secondary_casters_max")
.HasColumnOrder(10);
b.Property<string>("SecondaryCastersSuffix")
.HasColumnType("jsonb")
.HasColumnName("secondary_casters_suffix")
.HasColumnOrder(11);
b.Property<string>("Target")
.HasColumnType("jsonb")
.HasColumnName("target")
.HasColumnOrder(13);
b.HasKey("Id")
.HasName("pk_rituals");
b.ToTable("rituals", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.RitualRelation.RitualArea", b =>
{
b.Property<int>("RitualId")
.HasColumnType("integer")
.HasColumnName("ritual_id")
.HasColumnOrder(1);
b.Property<string>("Details")
.HasMaxLength(255)
.HasColumnType("jsonb")
.HasColumnName("details")
.HasColumnOrder(2);
b.Property<SpellAreaType>("Type")
.HasColumnType("spell_area_type")
.HasColumnName("type")
.HasColumnOrder(3);
b.HasKey("RitualId")
.HasName("pk_ritual_areas");
b.ToTable("ritual_areas", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.RitualRelation.RitualCheck", b =>
{
b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("integer")
.HasColumnName("id")
.HasColumnOrder(1);
NpgsqlPropertyBuilderExtensions.UseIdentityByDefaultColumn(b.Property<int>("Id"));
b.Property<bool>("IsSecondary")
.HasColumnType("boolean")
.HasColumnName("is_secondary")
.HasColumnOrder(6);
b.Property<TrainingRank>("Rank")
.HasColumnType("training_rank")
.HasColumnName("rank")
.HasColumnOrder(5);
b.Property<int>("RitualId")
.HasColumnType("integer")
.HasColumnName("ritual_id")
.HasColumnOrder(2);
b.Property<int?>("TrainingId")
.HasColumnType("integer")
.HasColumnName("training_id")
.HasColumnOrder(3);
b.Property<string>("TrainingString")
.HasColumnType("jsonb")
.HasColumnName("training_string")
.HasColumnOrder(4);
b.HasKey("Id")
.HasName("pk_ritual_checks");
b.HasIndex("RitualId")
.HasDatabaseName("ix_ritual_checks_ritual_id");
b.HasIndex("TrainingId")
.HasDatabaseName("ix_ritual_checks_training_id");
b.ToTable("ritual_checks", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.Property<int>("Id")
@@ -1245,18 +1402,29 @@ namespace Pf2eModel.Migrations
b.Property<ActionEnum>("Actions")
.HasColumnType("action_enum")
.HasColumnName("actions")
.HasColumnOrder(3);
.HasColumnOrder(4);
b.Property<string>("Cost")
.HasColumnType("jsonb")
.HasColumnName("cost")
.HasColumnOrder(11);
b.Property<int?>("Duration")
.HasMaxLength(255)
.HasColumnType("integer")
.HasColumnName("duration")
.HasColumnOrder(4);
.HasColumnOrder(5);
b.PrimitiveCollection<int[]>("Elements")
.IsRequired()
.HasColumnType("integer[]")
.HasColumnName("elements")
.HasColumnOrder(8);
b.Property<bool>("IsFocus")
.HasColumnType("boolean")
.HasColumnName("is_focus")
.HasColumnOrder(5);
.HasColumnOrder(3);
b.Property<int>("Level")
.HasColumnType("integer")
@@ -1268,21 +1436,26 @@ namespace Pf2eModel.Migrations
.HasColumnName("range")
.HasColumnOrder(6);
b.Property<string>("Requirement")
.HasColumnType("jsonb")
.HasColumnName("requirement")
.HasColumnOrder(12);
b.Property<string>("Target")
.HasColumnType("jsonb")
.HasColumnName("target")
.HasColumnOrder(8);
.HasColumnOrder(10);
b.PrimitiveCollection<SpellTradition[]>("Traditions")
.IsRequired()
.HasColumnType("spell_tradition[]")
.HasColumnName("traditions")
.HasColumnOrder(6);
.HasColumnOrder(7);
b.Property<string>("Trigger")
.HasColumnType("jsonb")
.HasColumnName("trigger")
.HasColumnOrder(7);
.HasColumnOrder(9);
b.HasKey("Id")
.HasName("pk_spells");
@@ -1432,38 +1605,6 @@ namespace Pf2eModel.Migrations
b.ToTable("spell_defenses", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellRitual", b =>
{
b.Property<int>("SpellId")
.HasColumnType("integer")
.HasColumnName("spell_id")
.HasColumnOrder(1);
b.Property<string>("PrimaryCheck")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("primary_check")
.HasColumnOrder(2);
b.Property<int>("SecondaryCasters")
.HasColumnType("integer")
.HasColumnName("secondary_casters")
.HasColumnOrder(3);
b.Property<string>("SecondaryChecks")
.IsRequired()
.HasMaxLength(255)
.HasColumnType("character varying(255)")
.HasColumnName("secondary_checks")
.HasColumnOrder(4);
b.HasKey("SpellId")
.HasName("pk_spell_rituals");
b.ToTable("spell_rituals", (string)null);
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Subclass", b =>
{
b.Property<int>("Id")
@@ -2061,6 +2202,50 @@ namespace Pf2eModel.Migrations
b.Navigation("Entity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Ritual", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
.WithOne()
.HasForeignKey("Pf2eModel.Model.Structure.Ritual", "Id")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_rituals_entities_id");
b.Navigation("Entity");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.RitualRelation.RitualArea", b =>
{
b.HasOne("Pf2eModel.Model.Structure.Ritual", "Ritual")
.WithOne("Area")
.HasForeignKey("Pf2eModel.Model.Structure.RitualRelation.RitualArea", "RitualId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_ritual_areas_rituals_ritual_id");
b.Navigation("Ritual");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.RitualRelation.RitualCheck", b =>
{
b.HasOne("Pf2eModel.Model.Structure.Ritual", "Ritual")
.WithMany("Checks")
.HasForeignKey("RitualId")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired()
.HasConstraintName("fk_ritual_checks_rituals_ritual_id");
b.HasOne("Pf2eModel.Model.Common.Training", "Training")
.WithMany()
.HasForeignKey("TrainingId")
.OnDelete(DeleteBehavior.SetNull)
.HasConstraintName("fk_ritual_checks_trainings_training_id");
b.Navigation("Ritual");
b.Navigation("Training");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.HasOne("Pf2eModel.Model.Base.Entity", "Entity")
@@ -2109,17 +2294,6 @@ namespace Pf2eModel.Migrations
b.Navigation("Spell");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.SpellRelation.SpellRitual", b =>
{
b.HasOne("Pf2eModel.Model.Structure.Spell", "Spell")
.WithOne("SpellRitual")
.HasForeignKey("Pf2eModel.Model.Structure.SpellRelation.SpellRitual", "SpellId")
.OnDelete(DeleteBehavior.Cascade)
.HasConstraintName("fk_spell_rituals_spells_spell_id");
b.Navigation("Spell");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Subclass", b =>
{
b.HasOne("Pf2eModel.Model.Structure.SubclassGroup", "Group")
@@ -2242,13 +2416,18 @@ namespace Pf2eModel.Migrations
b.Navigation("FeatPrerequisites");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Ritual", b =>
{
b.Navigation("Area");
b.Navigation("Checks");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Spell", b =>
{
b.Navigation("SpellAreas");
b.Navigation("SpellDefenses");
b.Navigation("SpellRitual");
});
modelBuilder.Entity("Pf2eModel.Model.Structure.Subclass", b =>